SCOREC core
Parallel unstructured mesh tools
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions
apf.h File Reference

The APF Field interface. More...

Go to the source code of this file.

Classes

class  apf::ReductionOp< T >
 Base class for applying operations to make a Field consistent in parallel. More...
 
class  apf::ReductionOp< T >
 Base class for applying operations to make a Field consistent in parallel. More...
 
class  apf::Integrator
 A virtual base for user-defined integrators. More...
 
struct  apf::Function
 User-defined Analytic Function. More...
 

Namespaces

 apf
 All APF symbols are contained in this namespace.
 

Macros

#define APF_ITERATE(t, w, i)
 Stress-free iteration over STL-like containers. More...
 
#define APF_CONST_ITERATE(t, w, i)
 APF_ITERATE for const containers.
 

Typedefs

typedef VectorElement apf::MeshElement
 Mesh Elements represent the mesh coordinate vector field.
 

Enumerations

enum  apf::ValueType {
  apf::SCALAR, apf::VECTOR, apf::MATRIX, apf::PACKED,
  apf::VALUE_TYPES
}
 The type of value the field stores. More...
 

Functions

void apf::destroyMesh (Mesh *m)
 Destroys an apf::Mesh. More...
 
MeshElement * apf::createMeshElement (Mesh *m, MeshEntity *e)
 Creates a Mesh Element over an entity. More...
 
MeshElement * apf::createMeshElement (Field *c, MeshEntity *e)
 Creates a non-standard Mesh Element over an entity. More...
 
MeshEntity * apf::getMeshEntity (MeshElement *me)
 Retrieve the mesh entity associated with an apf::MeshElement.
 
void apf::destroyMeshElement (MeshElement *e)
 Destroys a Mesh Element. More...
 
Field * apf::createLagrangeField (Mesh *m, const char *name, int valueType, int order)
 Create an apf::Field using a Lagrange distribution. More...
 
Field * apf::createStepField (Mesh *m, const char *name, int valueType)
 Create an apf::Field using a step distribution. More...
 
Field * apf::createIPField (Mesh *m, const char *name, int valueType, int order)
 Create an apf::Field of integration point data. More...
 
Field * apf::createField (Mesh *m, const char *name, int valueType, FieldShape *shape)
 Create a Field from any builtin or user defined FieldShape.
 
Field * apf::createFieldOn (Mesh *m, const char *name, int valueType)
 Create a field using the mesh's coordinate nodal distribution.
 
Field * apf::createPackedField (Mesh *m, const char *name, int components, apf::FieldShape *shape=0)
 Create a field of N components without a tensor type. More...
 
Field * apf::createGeneralField (Mesh *m, const char *name, int valueType, int components, FieldShape *shape)
 Encompasses both packed and typed fields.
 
Field * apf::cloneField (Field *f, Mesh *onto)
 Declare a copy of a field on another apf::Mesh. More...
 
Mesh * apf::getMesh (Field *f)
 Retrieve the Mesh over which a Field is defined.
 
bool apf::hasEntity (Field *f, MeshEntity *e)
 Returns true iff an entity has data associate with a field.
 
const char * apf::getName (Field *f)
 Get the name of a Field. More...
 
int apf::getValueType (Field *f)
 Retrieve the type of value a field distributes.
 
void apf::destroyField (Field *f)
 Destroy an apf::Field. More...
 
void apf::setScalar (Field *f, MeshEntity *e, int node, double value)
 Set a nodal value of a scalar field. More...
 
double apf::getScalar (Field *f, MeshEntity *e, int node)
 Get the node value of a scalar field. More...
 
void apf::setVector (Field *f, MeshEntity *e, int node, Vector3 const &value)
 Set the nodal value of a vector field. More...
 
void apf::getVector (Field *f, MeshEntity *e, int node, Vector3 &value)
 Get the nodal value of a vector field.
 
void apf::setMatrix (Field *f, MeshEntity *e, int node, Matrix3x3 const &value)
 Set the nodal value of a matrix field. More...
 
void apf::getMatrix (Field *f, MeshEntity *e, int node, Matrix3x3 &value)
 Get the nodal value of a matrix field.
 
void apf::setComponents (Field *f, MeshEntity *e, int node, double const *components)
 Set the nodal value from an array of component values.
 
void apf::getComponents (Field *f, MeshEntity *e, int node, double *components)
 Copy the nodal value into an array of component values. More...
 
Element * apf::createElement (Field *f, MeshElement *e)
 Create a Field Element from a Mesh Element. More...
 
Element * apf::createElement (Field *f, MeshEntity *e)
 Create a Field Element without a parent Mesh Element. More...
 
void apf::destroyElement (Element *e)
 Destroy a Field Element.
 
MeshElement * apf::getMeshElement (Element *e)
 Get the Mesh Element of a Field Element. More...
 
MeshEntity * apf::getMeshEntity (Element *e)
 Retrieve the mesh entity of an apf::Element.
 
double apf::getScalar (Element *e, Vector3 const &param)
 Evaluate a scalar field at a point. More...
 
void apf::getGrad (Element *e, Vector3 const &param, Vector3 &grad)
 Get the gradient of a scalar field w.r.t. global coordinates. More...
 
void apf::getVector (Element *e, Vector3 const &param, Vector3 &value)
 Evaluate a vector field at a point. More...
 
double apf::getDiv (Element *e, Vector3 const &param)
 Evaluate the divergence of a vector field at a point. More...
 
void apf::getCurl (Element *e, Vector3 const &param, Vector3 &curl)
 Evaluate the curl of a vector field at a point. More...
 
void apf::getVectorGrad (Element *e, Vector3 const &param, Matrix3x3 &deriv)
 Get the gradient of a vector field w.r.t. global coordinates. More...
 
void apf::getMatrix (Element *e, Vector3 const &param, Matrix3x3 &value)
 Evaluate the value of a matrix field. More...
 
void apf::getMatrixGrad (Element *e, Vector3 const &param, Vector< 27 > &value)
 get the gradient of a matrix field More...
 
void apf::getComponents (Element *e, Vector3 const &param, double *components)
 Evaluate a field into an array of component values.
 
int apf::countIntPoints (MeshElement *e, int order)
 Get the number of integration points for an element. More...
 
void apf::getIntPoint (MeshElement *e, int order, int point, Vector3 &param)
 Get an integration point in an element. More...
 
double apf::getIntWeight (MeshElement *e, int order, int point)
 Get the weight of an integration point in an element. More...
 
void apf::mapLocalToGlobal (MeshElement *e, Vector3 const &local, Vector3 &global)
 Map a local coordinate to a global coordinate.
 
double apf::getDV (MeshElement *e, Vector3 const &param)
 Get the differential volume at a point. More...
 
double apf::measure (MeshElement *e)
 Measures the volume, area, or length of a Mesh Element. More...
 
double apf::measure (Mesh *m, MeshEntity *e)
 Measures the volume, area, or length of a Mesh Entity. More...
 
int apf::getOrder (MeshElement *e)
 Returns the polynomial order of the coordinate field.
 
void apf::getJacobian (MeshElement *e, Vector3 const &local, Matrix3x3 &j)
 Returns the Jacobian at a local point.
 
void apf::getJacobianInv (MeshElement *e, Vector3 const &local, Matrix3x3 &jinv)
 Returns the Jacobian inverse at a local point. More...
 
double apf::computeCosAngle (Mesh *m, MeshEntity *pe, MeshEntity *e1, MeshEntity *e2, const Matrix3x3 &Q)
 Returns the cosine of the angle between 2 entities of the parent entity. More...
 
double apf::computeShortestHeightInTet (Mesh *m, MeshEntity *tet, const Matrix3x3 &Q=Matrix3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.))
 Returns the shortest height in a tet. More...
 
double apf::computeLargestHeightInTet (Mesh *m, MeshEntity *tet, const Matrix3x3 &Q=Matrix3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.))
 Returns the largest height in a tet. More...
 
double apf::computeShortestHeightInTri (Mesh *m, MeshEntity *tri, const Matrix3x3 &Q=Matrix3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.))
 Returns the shortest height in a tri. More...
 
double apf::computeLargestHeightInTri (Mesh *m, MeshEntity *tri, const Matrix3x3 &Q=Matrix3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.))
 Returns the largest height in a tri. More...
 
int apf::countNodes (Element *e)
 Returns the number of element nodes. More...
 
void apf::getScalarNodes (Element *e, NewArray< double > &values)
 Returns the element nodal values for a scalar field.
 
void apf::getVectorNodes (Element *e, NewArray< Vector3 > &values)
 Returns the element nodal values for a vector field.
 
void apf::getMatrixNodes (Element *e, NewArray< Matrix3x3 > &values)
 Returns the element nodal values for a matrix field.
 
void apf::getShapeValues (Element *e, Vector3 const &local, NewArray< double > &values)
 Returns the shape function values at a point.
 
void apf::getShapeGrads (Element *e, Vector3 const &local, NewArray< Vector3 > &grads)
 Returns the shape function gradients at a point. More...
 
FieldShape * apf::getShape (Field *f)
 Retrieve the apf::FieldShape used by a field.
 
int apf::countComponents (Field *f)
 Count the number of scalar components in the field's value type.
 
void apf::writeVtkFiles (const char *prefix, Mesh *m, int cellDim=-1)
 Write a set of parallel VTK Unstructured Mesh files from an apf::Mesh with binary (base64) encoding and zlib compression (if LION_COMPRESS=ON) More...
 
void apf::writeVtkFiles (const char *prefix, Mesh *m, std::vector< std::string > writeFields, int cellDim=-1)
 Write a set of parallel VTK Unstructured Mesh files from an apf::Mesh with binary (base64) encoding and zlib compression (if LION_COMPRESS=ON) More...
 
void apf::writeOneVtkFile (const char *prefix, Mesh *m)
 Output just the .vtu file with ASCII encoding for this part. More...
 
void apf::writeASCIIVtkFiles (const char *prefix, Mesh *m)
 Write a set of parallel VTK Unstructured Mesh files from an apf::Mesh with ASCII encoding. More...
 
void apf::writeASCIIVtkFiles (const char *prefix, Mesh *m, std::vector< std::string > writeFields)
 Write a set of parallel VTK Unstructured Mesh files from an apf::Mesh with ASCII encoding. More...
 
void apf::getGaussPoint (int type, int order, int point, Vector3 &param)
 Return the location of a gaussian integration point. More...
 
int apf::countGaussPoints (int type, int order)
 Return the number of Gaussian integration points.
 
double apf::getJacobianDeterminant (Matrix3x3 const &J, int dimension)
 Return the Jacobian determinant or dimensional equivalent. More...
 
int apf::getDimension (MeshElement *me)
 Return the dimension of a MeshElement's MeshEntity.
 
void apf::synchronize (Field *f, Sharing *shr=0)
 Synchronize field values along partition boundary. More...
 
void apf::accumulate (Field *f, Sharing *shr=0, bool delete_shr=false)
 Add field values along partition boundary. More...
 
void apf::sharedReduction (Field *f, Sharing *shr, bool delete_shr, const ReductionOp< double > &sum=ReductionSum< double >())
 Apply a reudction operator along partition boundaries. More...
 
bool apf::isPrintable (Field *f)
 Checks whether a Field/Numbering/GlobalNumbering is complete and therefore printable to visualization files. This is a collective operation.
 
void apf::fail (const char *why) __attribute__((noreturn))
 Declare failure of code inside APF. More...
 
void apf::freeze (Field *f)
 Convert a Field from Tag to array storage.
 
void apf::unfreeze (Field *f)
 Convert a Field from array to Tag storage.
 
bool apf::isFrozen (Field *f)
 Returns true iff the Field uses array storage.
 
double * apf::getArrayData (Field *f)
 Return the contiguous array storing this field. More...
 
void apf::zeroField (Field *f)
 Initialize all nodal values with all-zero components.
 
Field * apf::recoverGradientByVolume (Field *f)
 Compute a nodal gradient field from a nodal input field. More...
 
void apf::projectField (Field *to, Field *from)
 Project a field from an existing field.
 
void apf::getBF (FieldShape *s, MeshElement *e, Vector3 const &p, NewArray< double > &BF)
 Get the basis functions over a mesh element. More...
 
void apf::getGradBF (FieldShape *s, MeshElement *e, Vector3 const &p, NewArray< Vector3 > &gradBF)
 Get global gradients of basis functions over a mesh element. More...
 

Detailed Description

The APF Field interface.

Definition in file apf.h.

Macro Definition Documentation

#define APF_ITERATE (   t,
  w,
 
)
Value:
for (t::iterator i = (w).begin(); \
(i) != (w).end(); ++(i))

Stress-free iteration over STL-like containers.

Parameters
tThe type of the container
wThe container itself
iThe name to give to the iterator

given an STL container or anything that implements Type::iterator, Type::begin, Type::end, and Type::iterator::operator++(), this macro fills in the boilerplate of a for() loop over this container.

Definition at line 623 of file apf.h.