PPL Logo

FEM_Interpolate Class Reference

Interface for solution transfer operations. More...

#include <fem_interpolate.h>

Collaboration diagram for FEM_Interpolate:

Collaboration graph
[legend]

Public Types

typedef void(* FEM_InterpolateNodeFn )(NodalArgs, FEM_Mesh *)
typedef void(* FEM_InterpolateElementFn )(ElementArgs)
typedef void(* FEM_InterpolateNodeFn )(NodalArgs, FEM_Mesh *)
 The node interpolate function type.
typedef void(* FEM_InterpolateElementFn )(ElementArgs)
 The element interpolate function type.

Public Member Functions

 FEM_Interpolate ()
 Basic Constructor.
 FEM_Interpolate (FEM_Mesh *m)
 FEM_Interpolate (FEM_Mesh *m, femMeshModify *fm)
void FEM_InterpolateSetMesh (FEM_Mesh *m)
void FEM_SetInterpolateNodeEdgeFnPtr (FEM_InterpolateNodeFn fnPtr)
void FEM_SetInterpolateNodeFaceFnPtr (FEM_InterpolateNodeFn fnPtr)
void FEM_SetInterpolateNodeElementFnPtr (FEM_InterpolateNodeFn fnPtr)
void FEM_SetInterpolateElementCopyFnPtr (FEM_InterpolateElementFn fnPtr)
void FEM_SetInterpolateElementNodeFnPtr (FEM_InterpolateElementFn fnPtr)
void FEM_SetInterpolateCopyAttributesFnPtr (FEM_InterpolateNodeFn fnPtr)
void FEM_ResetInterpolateNodeEdgeFnPtr ()
void FEM_ResetInterpolateNodeFaceFnPtr ()
void FEM_ResetInterpolateNodeElementFnPtr ()
void FEM_ResetInterpolateElementCopyFnPtr ()
void FEM_ResetInterpolateElementNodeFnPtr ()
void FEM_ReetInterpolateCopyAttributesFnPtr ()
virtual void FEM_InterpolateNodeOnEdge (NodalArgs args)
 A node is added on an edge; interpolate from neighboring nodes.
virtual void FEM_InterpolateNodeOnFace (NodalArgs args)
 A node is added on an face; interpolate from nodes of face.
virtual void FEM_InterpolateNodeInElement (NodalArgs args)
 A node is added inside a volume; interpolate from nodes of element.
virtual void FEM_InterpolateElementCopy (ElementArgs args)
 An element added is completely encapsulated by element to be removed.
virtual void FEM_InterpolateElementFromNodes (ElementArgs args)
 An element is added and derives data from its nodes.
virtual void FEM_InterpolateElementToNodes (int e)
 Store data of an element temporarily on all nodes.
virtual void FEM_InterpolateCopyAttributes (int oldnode, int newnode)
 This is to be used to copy the attributes of oldnode to newnode oldnode or newnode can be ghost or local currently it will only copy coordinates & boundary.
 FEM_Interpolate ()
 Basic Constructor.
 FEM_Interpolate (FEM_Mesh *m)
 Initialize only the mesh object of this chunk (constructor).
 FEM_Interpolate (FEM_Mesh *m, femMeshModify *fm)
 Initialize both the mesh and femMeshModify object of this chunk (constructor).
 FEM_Interpolate (femMeshModify *fm)
 Initialize only the femMeshModify object of this chunk (constructor).
void pup (PUP::er &p)
 Pup operation for this object.
void FEM_InterpolateSetMesh (FEM_Mesh *m)
 Initialize the mesh object for this chunk.
void FEM_SetInterpolateNodeEdgeFnPtr (FEM_InterpolateNodeFn fnPtr)
 Methods to set and reset interpolate functions on the fly; these will be used to override defaults by Fortan code, and can also be set and reset or using temporary special-purpose interpolation functions.
void FEM_SetInterpolateNodeFaceFnPtr (FEM_InterpolateNodeFn fnPtr)
 Set interpolate function for a node on a face.
void FEM_SetInterpolateNodeElementFnPtr (FEM_InterpolateNodeFn fnPtr)
 Set interpolate function for a node from an element.
void FEM_SetInterpolateCopyAttributesFnPtr (FEM_InterpolateNodeFn fnPtr)
 Set interpolate function for a node by copying from another node.
void FEM_SetInterpolateElementCopyFnPtr (FEM_InterpolateElementFn fnPtr)
 Set interpolate function for an element by copying from another element.
void FEM_SetInterpolateElementNodeFnPtr (FEM_InterpolateElementFn fnPtr)
 Set interpolate function for an element from a node.
void FEM_ResetInterpolateNodeEdgeFnPtr ()
 Reset function pointer.
void FEM_ResetInterpolateNodeFaceFnPtr ()
 Reset function pointer.
void FEM_ResetInterpolateNodeElementFnPtr ()
 Reset function pointer.
void FEM_ResetInterpolateElementCopyFnPtr ()
 Reset function pointer.
void FEM_ResetInterpolateElementNodeFnPtr ()
 Reset function pointer.
void FEM_ReetInterpolateCopyAttributesFnPtr ()
 Reset function pointer.
virtual void FEM_InterpolateNodeOnEdge (NodalArgs args)
 A node is added on an edge; interpolate from neighboring nodes.
virtual void FEM_InterpolateNodeOnFace (NodalArgs args)
 A node is added on an face; interpolate from nodes of face.
virtual void FEM_InterpolateNodeInElement (NodalArgs args)
 A node is added inside a volume; interpolate from nodes of element.
virtual void FEM_InterpolateElementCopy (ElementArgs args)
 An element added is completely encapsulated by element to be removed.
virtual void FEM_InterpolateElementFromNodes (ElementArgs args)
 An element is added and derives data from its nodes.
virtual void FEM_InterpolateElementToNodes (int e)
 Store data of an element temporarily on all nodes.
virtual void FEM_InterpolateCopyAttributes (int oldnode, int newnode)
 Copy the data from one node to another.

Data Fields

FEM_InterpolateNodeFn nodeEdgeFnPtr
 Node interpolate functions along edge, face, element or node copy.
FEM_InterpolateNodeFn nodeFaceFnPtr
FEM_InterpolateNodeFn nodeElementFnPtr
FEM_InterpolateNodeFn nodeCopyFnPtr
FEM_InterpolateElementFn elemCopyFnPtr
 Element interpolate functions for element copy and elemToNode copy.
FEM_InterpolateElementFn elemNodeFnPtr

Private Attributes

FEM_MeshtheMesh
femMeshModifytheMod
FEM_MeshtheMesh
 cross-pointer to the Mesh object for this chunk
femMeshModifytheMod
 cross-pointer to the femMeshModify object for this chunk

Data Structures

struct  ElementArgs
 The input formation for an element interpolate(copy) operation. More...
struct  NodalArgs
 The input information for a nodal interpolate operation. More...

Detailed Description

Interface for solution transfer operations.

This is an interface for specifying solution transfer operations for small mesh modification operations. It provides overridable defaults for node and element interpolations. These functions are passed to FEM_add_element and FEM_add_node operations, along with a simple argument struct - TLW

Definition at line 22 of file fem_interpolate.h.


Member Typedef Documentation

The node interpolate function type.

The element interpolate function type.


Constructor & Destructor Documentation

FEM_Interpolate::FEM_Interpolate (  )  [inline]

Basic Constructor.

Definition at line 49 of file fem_interpolate.h.

References elemCopyFnPtr, elemNodeFnPtr, nodeCopyFnPtr, nodeEdgeFnPtr, nodeElementFnPtr, and nodeFaceFnPtr.

FEM_Interpolate::FEM_Interpolate ( FEM_Mesh m  )  [inline]

FEM_Interpolate::FEM_Interpolate ( FEM_Mesh m,
femMeshModify fm 
) [inline]

FEM_Interpolate::FEM_Interpolate (  )  [inline]

Basic Constructor.

Definition at line 53 of file ParFUM_Interpolate.h.

References elemCopyFnPtr, elemNodeFnPtr, nodeCopyFnPtr, nodeEdgeFnPtr, nodeElementFnPtr, nodeFaceFnPtr, theMesh, and theMod.

FEM_Interpolate::FEM_Interpolate ( FEM_Mesh m  )  [inline]

Initialize only the mesh object of this chunk (constructor).

Definition at line 60 of file ParFUM_Interpolate.h.

References elemCopyFnPtr, elemNodeFnPtr, nodeCopyFnPtr, nodeEdgeFnPtr, nodeElementFnPtr, nodeFaceFnPtr, theMesh, and theMod.

FEM_Interpolate::FEM_Interpolate ( FEM_Mesh m,
femMeshModify fm 
) [inline]

Initialize both the mesh and femMeshModify object of this chunk (constructor).

Definition at line 67 of file ParFUM_Interpolate.h.

References elemCopyFnPtr, elemNodeFnPtr, nodeCopyFnPtr, nodeEdgeFnPtr, nodeElementFnPtr, nodeFaceFnPtr, theMesh, and theMod.

FEM_Interpolate::FEM_Interpolate ( femMeshModify fm  )  [inline]

Initialize only the femMeshModify object of this chunk (constructor).

Definition at line 74 of file ParFUM_Interpolate.h.

References elemCopyFnPtr, elemNodeFnPtr, nodeCopyFnPtr, nodeEdgeFnPtr, nodeElementFnPtr, nodeFaceFnPtr, theMesh, and theMod.


Member Function Documentation

void FEM_Interpolate::FEM_InterpolateSetMesh ( FEM_Mesh m  )  [inline]

Definition at line 67 of file fem_interpolate.h.

References theMesh.

Referenced by femMeshModify::setPointersAfterMigrate().

Here is the caller graph for this function:

void FEM_Interpolate::FEM_SetInterpolateNodeEdgeFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Definition at line 72 of file fem_interpolate.h.

References nodeEdgeFnPtr.

void FEM_Interpolate::FEM_SetInterpolateNodeFaceFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Definition at line 75 of file fem_interpolate.h.

References nodeFaceFnPtr.

void FEM_Interpolate::FEM_SetInterpolateNodeElementFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Definition at line 78 of file fem_interpolate.h.

References nodeElementFnPtr.

void FEM_Interpolate::FEM_SetInterpolateElementCopyFnPtr ( FEM_InterpolateElementFn  fnPtr  )  [inline]

Definition at line 81 of file fem_interpolate.h.

References elemCopyFnPtr.

void FEM_Interpolate::FEM_SetInterpolateElementNodeFnPtr ( FEM_InterpolateElementFn  fnPtr  )  [inline]

Definition at line 84 of file fem_interpolate.h.

References elemNodeFnPtr.

void FEM_Interpolate::FEM_SetInterpolateCopyAttributesFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Definition at line 87 of file fem_interpolate.h.

References nodeCopyFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateNodeEdgeFnPtr (  )  [inline]

Definition at line 90 of file fem_interpolate.h.

References nodeEdgeFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateNodeFaceFnPtr (  )  [inline]

Definition at line 91 of file fem_interpolate.h.

References nodeFaceFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateNodeElementFnPtr (  )  [inline]

Definition at line 92 of file fem_interpolate.h.

References nodeElementFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateElementCopyFnPtr (  )  [inline]

Definition at line 93 of file fem_interpolate.h.

References elemCopyFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateElementNodeFnPtr (  )  [inline]

Definition at line 94 of file fem_interpolate.h.

References elemNodeFnPtr.

void FEM_Interpolate::FEM_ReetInterpolateCopyAttributesFnPtr (  )  [inline]

Definition at line 95 of file fem_interpolate.h.

References nodeCopyFnPtr.

void FEM_Interpolate::FEM_InterpolateNodeOnEdge ( NodalArgs  args  )  [virtual]

A node is added on an edge; interpolate from neighboring nodes.

A node is added on an edge; interpolate from neighboring nodes; this uses n, nodes[2], dim and frac.

A node is added on an edge; interpolate from neighboring nodes; this uses n, nodes[2], dim and frac. Frac is between 0.0 and 1.0 and weights nodes[0]; i.e. if frac=1.0, n gets a copy of nodes[0]'s data, and nodes[0]'s coords

Frac is between 0.0 and 1.0 and weights nodes[0]; i.e. if frac=1.0, n gets a copy of nodes[0]'s data, and nodes[0]'s coords

Definition at line 13 of file fem_interpolate.C.

References PUP::a, abs(), FEM_Interpolate::NodalArgs::addNode, IDXL_Share::chk, FEM_Adapt_Algs::coord_attr, FEM_Attribute::copyEntity(), PUP::d, FEM_MUtil::exists_in_IDXL(), FEM_Mesh_dataP(), femMeshModify::fmAdaptAlgs, femMeshModify::fmAdaptL, femMeshModify::fmUtil, FEM_Interpolate::NodalArgs::frac, free(), FEM_Attribute::getAttr(), FEM_MUtil::getChunkNos(), femMeshModify::getIdx(), femMeshModify::idx, FEM_Adapt::isEdgeBoundary(), FEM_Adapt::isFixedNode(), FEM_MUtil::isShared(), meshMod, FEM_Interpolate::NodalArgs::n, FEM_Mesh::node, nodeEdgeFnPtr, FEM_Interpolate::NodalArgs::nodes, CkVec< T >::size(), theMesh, and theMod.

Referenced by FEM_AdaptL::edge_contraction_help(), FEM_add_node(), and FEM_MUtil::splitEntityRemote().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Interpolate::FEM_InterpolateNodeOnFace ( NodalArgs  args  )  [virtual]

A node is added on an face; interpolate from nodes of face.

A node is added on an face; interpolate from nodes of face; this uses n, nodes[3] or nodes[4] depending on element type, dim and coord.

A node is added on an face; interpolate from nodes of face; this uses n, nodes[3] or nodes[4] depending on element type, dim and coord

Definition at line 145 of file fem_interpolate.C.

References PUP::a, PUP::d, FEM_Attribute::getAttr(), FEM_Interpolate::NodalArgs::n, FEM_Interpolate::NodalArgs::nNbrs, FEM_Mesh::node, nodeFaceFnPtr, FEM_Interpolate::NodalArgs::nodes, CkVec< T >::size(), and theMesh.

Here is the call graph for this function:

void FEM_Interpolate::FEM_InterpolateNodeInElement ( NodalArgs  args  )  [virtual]

A node is added inside a volume; interpolate from nodes of element.

A node is added inside a volume; interpolate from nodes of element; this uses n, nodes[4] or more, and coord.

A node is added inside a volume; interpolate from nodes of element; this uses n, nodes[4] or more, and coord

Definition at line 174 of file fem_interpolate.C.

References PUP::a, PUP::d, FEM_Attribute::getAttr(), FEM_Interpolate::NodalArgs::n, FEM_Interpolate::NodalArgs::nNbrs, FEM_Mesh::node, nodeElementFnPtr, FEM_Interpolate::NodalArgs::nodes, CkVec< T >::size(), and theMesh.

Here is the call graph for this function:

void FEM_Interpolate::FEM_InterpolateElementCopy ( ElementArgs  args  )  [virtual]

An element added is completely encapsulated by element to be removed.

An element added is completely encapsulated by element to be removed; for example, edge bisect two elements replace the old element, and we simply copy the data of the old element to both new elements.

An element added is completely encapsulated by element to be removed; For example, edge bisect two elements replace the old element, and we simply copy the data of the old element to both new elements

Definition at line 204 of file fem_interpolate.C.

References FEM_Attribute::copyEntity(), count, elemDataMsg::data, elemDataMsg::datasize, FEM_Interpolate::ElementArgs::e, FEM_Mesh::elem, elemCopyFnPtr, FEM_Interpolate::ElementArgs::elType, FEM_MUtil::exists_in_IDXL(), femMeshModify::fmUtil, FEM_Attribute::getAttr(), femMeshModify::idx, meshMod, FEM_Interpolate::ElementArgs::oldElement, FEM_Attribute::pupSingle(), CkVec< T >::size(), theMesh, and theMod.

Referenced by FEM_MUtil::copyElemData().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Interpolate::FEM_InterpolateElementFromNodes ( ElementArgs  args  )  [virtual]

An element is added and derives data from its nodes.

An element is added and derives data from its nodes; assumes relevant data was copied to the appropriate nodes prior to this operation; see the utility function below.

An element is added and derives data from its nodes; assumes relevant data was copied to the appropriate nodes prior to this operation; see the utility function below

Definition at line 257 of file fem_interpolate.C.

References elemNodeFnPtr.

void FEM_Interpolate::FEM_InterpolateElementToNodes ( int  e  )  [virtual]

Store data of an element temporarily on all nodes.

Store data of an element temporarily on all nodes; this data is used later to derive an element's data.

Store data of an element temporarily on all nodes; this data is used later to derive an element's data

Definition at line 269 of file fem_interpolate.C.

void FEM_Interpolate::FEM_InterpolateCopyAttributes ( int  oldnode,
int  newnode 
) [virtual]

This is to be used to copy the attributes of oldnode to newnode oldnode or newnode can be ghost or local currently it will only copy coordinates & boundary.

Definition at line 280 of file fem_interpolate.C.

References PUP::a, IDXL_Share::chk, FEM_Adapt_Algs::coord_attr, PUP::d, FEM_MUtil::exists_in_IDXL(), FEM_Mesh_dataP(), FEM_MUtil::FEM_Print_coords(), femMeshModify::fmAdaptAlgs, femMeshModify::fmUtil, free(), FEM_Attribute::getAttr(), FEM_Entity::getAttrVec(), FEM_MUtil::getChunkNos(), intMsg::i, double2Msg::i, femMeshModify::idx, index, double2Msg::j, meshMod, FEM_Mesh::node, CkVec< T >::size(), theMesh, and theMod.

Referenced by FEM_MUtil::Replace_node_local().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Interpolate::pup ( PUP::er p  )  [inline]

Pup operation for this object.

Definition at line 81 of file ParFUM_Interpolate.h.

Referenced by femMeshModify::pup().

Here is the caller graph for this function:

void FEM_Interpolate::FEM_InterpolateSetMesh ( FEM_Mesh m  )  [inline]

Initialize the mesh object for this chunk.

Definition at line 86 of file ParFUM_Interpolate.h.

References theMesh.

void FEM_Interpolate::FEM_SetInterpolateNodeEdgeFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Methods to set and reset interpolate functions on the fly; these will be used to override defaults by Fortan code, and can also be set and reset or using temporary special-purpose interpolation functions.

Set interpolate function for a node on an edge

Definition at line 92 of file ParFUM_Interpolate.h.

References nodeEdgeFnPtr.

void FEM_Interpolate::FEM_SetInterpolateNodeFaceFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Set interpolate function for a node on a face.

Definition at line 96 of file ParFUM_Interpolate.h.

References nodeFaceFnPtr.

void FEM_Interpolate::FEM_SetInterpolateNodeElementFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Set interpolate function for a node from an element.

Definition at line 100 of file ParFUM_Interpolate.h.

References nodeElementFnPtr.

void FEM_Interpolate::FEM_SetInterpolateCopyAttributesFnPtr ( FEM_InterpolateNodeFn  fnPtr  )  [inline]

Set interpolate function for a node by copying from another node.

Definition at line 104 of file ParFUM_Interpolate.h.

References nodeCopyFnPtr.

void FEM_Interpolate::FEM_SetInterpolateElementCopyFnPtr ( FEM_InterpolateElementFn  fnPtr  )  [inline]

Set interpolate function for an element by copying from another element.

Definition at line 108 of file ParFUM_Interpolate.h.

References elemCopyFnPtr.

void FEM_Interpolate::FEM_SetInterpolateElementNodeFnPtr ( FEM_InterpolateElementFn  fnPtr  )  [inline]

Set interpolate function for an element from a node.

Definition at line 112 of file ParFUM_Interpolate.h.

References elemNodeFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateNodeEdgeFnPtr (  )  [inline]

Reset function pointer.

Definition at line 116 of file ParFUM_Interpolate.h.

References nodeEdgeFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateNodeFaceFnPtr (  )  [inline]

Reset function pointer.

Definition at line 118 of file ParFUM_Interpolate.h.

References nodeFaceFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateNodeElementFnPtr (  )  [inline]

Reset function pointer.

Definition at line 120 of file ParFUM_Interpolate.h.

References nodeElementFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateElementCopyFnPtr (  )  [inline]

Reset function pointer.

Definition at line 122 of file ParFUM_Interpolate.h.

References elemCopyFnPtr.

void FEM_Interpolate::FEM_ResetInterpolateElementNodeFnPtr (  )  [inline]

Reset function pointer.

Definition at line 124 of file ParFUM_Interpolate.h.

References elemNodeFnPtr.

void FEM_Interpolate::FEM_ReetInterpolateCopyAttributesFnPtr (  )  [inline]

Reset function pointer.

Definition at line 126 of file ParFUM_Interpolate.h.

References nodeCopyFnPtr.

virtual void FEM_Interpolate::FEM_InterpolateNodeOnEdge ( NodalArgs  args  )  [virtual]

A node is added on an edge; interpolate from neighboring nodes.

virtual void FEM_Interpolate::FEM_InterpolateNodeOnFace ( NodalArgs  args  )  [virtual]

A node is added on an face; interpolate from nodes of face.

virtual void FEM_Interpolate::FEM_InterpolateNodeInElement ( NodalArgs  args  )  [virtual]

A node is added inside a volume; interpolate from nodes of element.

virtual void FEM_Interpolate::FEM_InterpolateElementCopy ( ElementArgs  args  )  [virtual]

An element added is completely encapsulated by element to be removed.

virtual void FEM_Interpolate::FEM_InterpolateElementFromNodes ( ElementArgs  args  )  [virtual]

An element is added and derives data from its nodes.

virtual void FEM_Interpolate::FEM_InterpolateElementToNodes ( int  e  )  [virtual]

Store data of an element temporarily on all nodes.

virtual void FEM_Interpolate::FEM_InterpolateCopyAttributes ( int  oldnode,
int  newnode 
) [virtual]

Copy the data from one node to another.


Field Documentation

Node interpolate functions along edge, face, element or node copy.

Definition at line 45 of file fem_interpolate.h.

Referenced by FEM_Interpolate(), FEM_InterpolateNodeOnEdge(), FEM_ResetInterpolateNodeEdgeFnPtr(), and FEM_SetInterpolateNodeEdgeFnPtr().

Element interpolate functions for element copy and elemToNode copy.

Definition at line 46 of file fem_interpolate.h.

Referenced by FEM_Interpolate(), FEM_InterpolateElementCopy(), FEM_ResetInterpolateElementCopyFnPtr(), and FEM_SetInterpolateElementCopyFnPtr().

cross-pointer to the Mesh object for this chunk

Definition at line 20 of file ParFUM_Interpolate.h.

cross-pointer to the femMeshModify object for this chunk

Definition at line 22 of file ParFUM_Interpolate.h.


The documentation for this class was generated from the following files:

Generated on Mon Sep 21 08:24:15 2020 for Charm++ by  doxygen 1.5.5