Jive reference manual
List of all members | Public Member Functions | Protected Member Functions
jive::geom::ParametricSurface Class Reference

#include <jive/geom/ParametricSurface.h>

Inheritance diagram for jive::geom::ParametricSurface:
Inheritance graph

Public Member Functions

 ParametricSurface ()
 
 ParametricSurface (const String &name, const Matrix &ischeme, const Ref< StdShape > &xshape, const Ref< StdShape > &sshape=NIL)
 
virtual void getGlobalIntegrationPoints (const Matrix &x, const Matrix &c) const
 Computes the integration points in the global coordinate system. More...
 
virtual void getIntegrationWeights (const Vector &w, const Matrix &c) const
 Computes the integration weights in the global coordinate system. More...
 
virtual void getGlobalPoint (const Vector &x, const Vector &u, const Matrix &c) const
 Converts a local coordinate vector to a global coordinate vector. More...
 
virtual bool getLocalPoint (const Vector &u, const Vector &x, double eps, const Matrix &c) const
 Converts a global coordinate vector to a local coordinate vector. More...
 
virtual void evalNormal (const Vector &q, const Vector &u, const Matrix &c) const
 Computes the normal vector in a given point. More...
 
virtual void calcNormals (const Matrix &q, const Vector *w, const Matrix &c, const PointSet &points) const
 
- Public Member Functions inherited from jive::geom::ParametricBoundary
 ParametricBoundary ()
 
 ParametricBoundary (const String &name, const Matrix &ischeme, const Ref< StdShape > &xshape, const Ref< StdShape > &sshape=NIL)
 
virtual void readFrom (ObjectInput &in)
 
virtual void writeTo (ObjectOutput &out) const
 
virtual idx_t localRank () const
 Returns the local rank of this shape. More...
 
virtual idx_t nodeCount () const
 Returns the number of nodes. More...
 
virtual idx_t vertexCount () const
 
virtual idx_t ipointCount () const
 
virtual idx_t shapeFuncCount () const
 Returns the number of shape functions. More...
 
virtual String getGeometry () const
 
Vector getLocalWeights () const
 
virtual Matrix getVertexCoords () const
 
virtual Matrix getIntegrationScheme () const
 
virtual bool containsLocalPoint (const Vector &u) const
 Tests whether a point lies within this shape. More...
 
virtual Matrix getShapeFunctions () const
 Returns the shape functions evaluated in the integration points. More...
 
virtual Matrix getVertexFunctions () const
 
virtual void evalShapeFunctions (const Vector &h, const Vector &u) const
 Computes the shape functions in a given point. More...
 
virtual void getNormals (const Matrix &q, const Vector &w, const Matrix &c) const
 Computes the normal vectors in the integration points. More...
 
virtual void getVertexNormals (const Matrix &q, const Matrix &c) const
 
virtual void * getExtByID (ExtensionID extID) const
 
StdShapegetXShape () const
 
StdShapegetSShape () const
 
- Public Member Functions inherited from jive::geom::BoundaryShape
virtual int globalRank () const
 Returns the global rank of this shape. More...
 
virtual void getNodeNormals (const Matrix &q, const Matrix &c) const =0
 Computes the normal vectors in the nodes of this shape. More...
 
virtual jem::ClassgetClass () const
 Returns the Class instance representing the runtime class of this object. More...
 
- Public Member Functions inherited from jive::geom::Shape
virtual int integrationPointCount () const =0
 Returns the number of integration points. More...
 
virtual Matrix getLocalNodeCoords () const =0
 Returns the coordinates of the nodes in the local coordinate system. More...
 
virtual Matrix getIntegrationPoints () const =0
 Returns the integration points in the local coordinate system. More...
 
- Public Member Functions inherited from jem::Object
virtual String toString () const
 Returns a short textual description of this object. More...
 
virtual long hashValue () const
 Returns a hash value for this object. More...
 
virtual bool equals (const Ref< Object > &obj) const
 Tests whether two objects are equal. More...
 
Ref< Objectclone () const
 Returns a copy of this object. More...
 

Protected Member Functions

virtual ~ParametricSurface ()
 
- Protected Member Functions inherited from jive::geom::ParametricBoundary
virtual ~ParametricBoundary ()
 
void updateFuncs_ (const PointSet_ &points) const
 
void updateGrads_ (const PointSet_ &points) const
 
- Protected Member Functions inherited from jive::geom::BoundaryShape
virtual ~BoundaryShape ()
 
- Protected Member Functions inherited from jem::Collectable
 Collectable ()
 Creates an empty Collectable. More...
 
 ~Collectable ()
 Frees resources. More...
 
- Protected Member Functions inherited from jem::io::Serializable
virtual ~Serializable ()
 
virtual void emitVtableFunc_ ()
 
- Protected Member Functions inherited from jem::Interface
virtual ~Interface ()
 Empty destructor. More...
 

Additional Inherited Members

- Public Types inherited from jive::geom::BoundaryShape
typedef Shape Super
 
- Public Types inherited from jive::geom::Shape
typedef util::Vector Vector
 A vector type. More...
 
typedef util::Matrix Matrix
 A matrix type. More...
 
- Static Public Member Functions inherited from jive::geom::BoundaryShape
static jem::ClassgetType ()
 Returns a pointer to a Class object representing this class. More...
 
- Static Public Member Functions inherited from jive::geom::Shape
static jem::ClassgetType ()
 Returns a pointer to a Class object representing this class. More...
 
- Static Public Member Functions inherited from jem::Object
static ClassgetType ()
 Returns the Class instance representing the Object class. More...
 
- Protected Attributes inherited from jive::geom::ParametricBoundary
Ref< StdShapexshape_
 
Ref< StdShapesshape_
 
Vector center_
 
Matrix ischeme_
 
Vector iweights_
 
idx_t rank_
 
idx_t ipCount_
 
idx_t nodeCount_
 
idx_t funcCount_
 
idx_t vertexCount_
 
PointSet_ ipoints_
 
PointSet_ vertices_
 
Scratch_ scratch_
 
- Static Protected Attributes inherited from jive::geom::ParametricBoundary
static const int MAX_NR_ITER_
 
static const double NR_ALPHA_
 
static const double NR_BETA_
 
static const double NR_DELTA_
 
static const int U_NONE_
 
static const int U_FUNCS_
 
static const int U_GRADS_
 
static const int U_XFUNCS_
 
static const int U_XGRADS_
 
static const int U_SFUNCS_
 
static const int U_SGRADS_
 

Constructor & Destructor Documentation

jive::geom::ParametricSurface::ParametricSurface ( )
jive::geom::ParametricSurface::ParametricSurface ( const String name,
const Matrix ischeme,
const Ref< StdShape > &  xshape,
const Ref< StdShape > &  sshape = NIL 
)
virtual jive::geom::ParametricSurface::~ParametricSurface ( )
protectedvirtual

Member Function Documentation

virtual void jive::geom::ParametricSurface::getGlobalIntegrationPoints ( const Matrix x,
const Matrix c 
) const
virtual

Fills the matrix x with the global coordinates of the integration points encapsulated by this shape: x(i,j) is set to the i-th coordinate of the j-th integration point. The matrix c should contain the global coordinates of the nodes attached to this shape: c(i,j) should be equal to the i-th coordinate of the j-th node.

The default implementation of this function is given by:

int i;
for ( i = 0; i < u.size(1); i++ )
{
this->getGlobalPoint ( x(slice(ALL),i), u(slice(ALL),i), c );
}
Parameters
x- a matrix that will be filled with the global coordinates of the integration points.
c- a matrix containing the global node coordinates.
Precondition
x.size(0) == this->globalRank() &&
x.size(1) == this->integrationPointCount() &&
c.size(0) == this->globalRank() &&
c.size(1) == this->nodeCount()

Reimplemented from jive::geom::ParametricBoundary.

virtual void jive::geom::ParametricSurface::getIntegrationWeights ( const Vector w,
const Matrix c 
) const
virtual

Fills the vector w with the integration weights in the global coordinate system: w[i] is set to the weight of the i-th integration point. The matrix c should contain the global node coordinates: c(i,j) should be equal to the i-th coordinate of the j-th node.

The following code fragment demonstrates how the integration weights can be used to evaluate the integral of a function over the domain of a shape.

// Evaluates the integral of the function
//
// f(x,y,z,...) = x + y + z + ...
//
// over the domain of a given shape.
double evalIntegral ( const Shape& shape, const Matrix& c )
{
const int rank = shape.globalRank ();
const int ipCount = shape.integrationPointCount ();
Matrix x ( rank, ipCount );
Vector w ( ipCount );
double r;
double f;
int i;
shape.getGlobalIntegrationPoints ( x, c );
shape.getIntegrationWeights ( w, c );
r = 0.0;
for ( i = 0; i < ipCount; i++ )
{
f = sum( x(slice(ALL),i) );
r += w[i] * f;
}
return r;
}
Parameters
w- a vector that will be filled with the global integration weights.
c- a matrix containing the global node coordinates.
Precondition
w.size() == this->integrationPointCount() &&
c.size(0) == this->globalRank() &&
c.size(1) == this->nodeCount()

Implements jive::geom::Shape.

virtual void jive::geom::ParametricSurface::getGlobalPoint ( const Vector x,
const Vector u,
const Matrix c 
) const
virtual

Fills the vector x with the global coordinates of a specific point within this shape: x[i] is set to the i-th global coordinate. The vector u should contain the local coordinates of that point: u[i] should be equal to the i-th local coordinate. The matrix c should contain the global node coordinates: c(i,j) should be equal to the i-th global coordinate of the j-th node.

Parameters
x- a vector that will be set to the global coordinates of the specified point.
u- a vector containing the local coordinates of that point.
c- a matrix containing the global node coordinates.
Precondition
x.size() == this->globalRank() &&
u.size() == this->localRank() &&
c.size(0) == this->globalRank() &&
c.size(1) == this->nodeCount() &&
this->containsLocalPoint ( u )

Reimplemented from jive::geom::ParametricBoundary.

virtual bool jive::geom::ParametricSurface::getLocalPoint ( const Vector u,
const Vector x,
double  eps,
const Matrix c 
) const
virtual

This function tries to convert a global coordinate vector to a local coordinate vector. It returns true if the conversion succeeds and the global coordinate vector points to a location `near' this shape. Otherwise it returns false.

If the return value equals true, the vector u will contain the local coordinate vector: u[i] will be set to the i-th local coordinate. The vector x should contain the global coordinate vector to be converted: x[i] should be equal to the i-th global coordinate. The double eps specifies the maximum allowed distance – in the global coordinate system – between this shape and the location pointed to by the vector x. The matrix c should contain the global node coordinates: c(i,j) should be equal to the i-th coordinate of the j-th node.

Note that a shape class does not have to support this function. In fact, the default implementation of this function simply throws a jem::IllegalOperationException.

Parameters
u- a vector that will be filled with the local coordinates of the point specified by the global coordinate vector x.
x- a global coordinate vector.
eps- the maximum allowed distance between the specified point and this shape.
c- a matrix containing the global node coordinates.
Precondition
u.size() == this->localRank() &&
x.size() == this->globalRank() &&
eps > 0.0 &&
c.size(0) == this->globalRank() &&
c.size(1) == this->nodeCount()
Returns
true if the conversion succeeds, and false otherwise.

Reimplemented from jive::geom::ParametricBoundary.

virtual void jive::geom::ParametricSurface::evalNormal ( const Vector q,
const Vector u,
const Matrix c 
) const
virtual

Fills the vector q with the components of the normal vector in a specific point within this boundary shape: q[i] is set to the i-th component of the normal vector. The vector u should contain the local coordinates of that point: u[i] should be equal to the i-th local coordinate. The matrix c should contain the global node coordinates: c(i,j) should be equal to the i-th global coordinate of the j-th node.

Parameters
q- a vector that will be filled with the components of the normal vector in the specified point.
u- a vector containing the local coordinates of that point.
c- a matrix containing the global node coordinates.
Precondition
q.size() == this->globalRank() &&
u.size() == this->localRank() &&
c.size(0) == this->globalRank() &&
c.size(1) == this->nodeCount()

Implements jive::geom::BoundaryShape.

virtual void jive::geom::ParametricSurface::calcNormals ( const Matrix q,
const Vector w,
const Matrix c,
const PointSet points 
) const
virtual