Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
FEDD::MeshStructured< SC, LO, GO, NO > Class Template Reference
Inheritance diagram for FEDD::MeshStructured< SC, LO, GO, NO >:

Public Types

typedef Mesh< SC, LO, GO, NO > Mesh_Type
 
typedef Mesh_Type::CommPtr_Type CommPtr_Type
 
typedef Mesh_Type::CommConstPtrConst_Type CommConstPtrConst_Type
 
typedef Mesh_Type::Map_Type Map_Type
 
typedef Mesh_Type::MapPtr_Type MapPtr_Type
 
typedef Mesh_Type::ElementsPtr_Type ElementsPtr_Type
 
typedef Teuchos::RCP< MeshStructured< SC, LO, GO, NO > > MeshStrPtr_Type
 
- Public Types inherited from FEDD::Mesh< default_sc, default_lo, default_go, default_no >
typedef Elements Elements_Type
 
typedef FiniteElement FiniteElement_Type
 
typedef Teuchos::RCP< FiniteElement_TypeFiniteElementPtr_Type
 
typedef Teuchos::RCP< Elements_TypeElementsPtr_Type
 
typedef Teuchos::RCP< MeshMesh_ptr_Type
 
typedef Teuchos::RCP< Teuchos::Comm< int > > CommPtr_Type
 
typedef Teuchos::RCP< const Teuchos::Comm< int > > CommConstPtr_Type
 
typedef const CommConstPtr_Type CommConstPtrConst_Type
 
typedef Map< default_lo, default_go, default_no > Map_Type
 
typedef Teuchos::RCP< Map_TypeMapPtr_Type
 
typedef Teuchos::RCP< const Map_TypeMapConstPtr_Type
 
typedef Teuchos::RCP< const Map_TypeMapConstPtrConst_Type
 
typedef MultiVector< default_sc, default_lo, default_go, default_no > MultiVector_Type
 
typedef Teuchos::RCP< MultiVector_TypeMultiVectorPtr_Type
 
typedef AABBTree< default_sc, default_lo, default_go, default_no > AABBTree_Type
 
typedef Teuchos::RCP< AABBTree_TypeAABBTreePtr_Type
 

Public Member Functions

 MeshStructured (CommConstPtrConst_Type &comm)
 
void setGeometry2DRectangle (std::vector< double > coordinates, double l, double h)
 
void setGeometry3DBox (std::vector< double > coordinates, double l, double w, double h)
 
void buildMesh2D (std::string FEType, int N, int M, int numProcsCoarseSolve=0, std::string underlyingLib="Tpetra")
 Building a general 2D rectangular mesh with the lenght and height as defined per 'setGeomerty2DRectangle'. Called by Domain class and different discretizations for 2D mesh are called within this functions.
 
void buildMesh2DTPM (std::string FEType, int N, int M, int numProcsCoarseSolve=0, std::string underlyingLib="Tpetra")
 Building 2D TPM rectangular mesh with the lenght and height as defined per 'setGeomerty2DRectangle' - characterized by building addition line segments for boundary conditions.
 
void buildMesh3D (std::string FEType, int N, int M, int numProcsCoarseSolve=0, std::string underlyingLib="Tpetra")
 Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox'. Called by Domain class and different discretizations for 3D mesh are called within this functions.
 
void buildMesh3D5Elements (std::string FEType, int N, int M, int numProcsCoarseSolve, std::string underlyingLib="Tpetra")
 Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox'. Called by Domain class. Only P2 discretization available. Subcubes are build with 5 elements.
 
void buildMesh2DBFS (std::string FEType, int N, int M, int numProcsCoarseSolve=0, std::string underlyingLib="Tpetra")
 Building 2D backward facing step geometry with the lenght and height as defined per 'setGeomerty2DRectangle'. Called by Domain class and different discretizations for 2D mesh are called within this functions.
 
void buildMesh3DBFS (std::string FEType, int N, int M, int numProcsCoarseSolve=0, std::string underlyingLib="Tpetra")
 Building general 3D backward facing step with length, width and height as defines by 'setGeometry3DBox'. Called by Domain class and different discretizations for 3D mesh are called within this functions.
 
void buildP1_Disc_Q2_3DBFS (int N, int M, int numProcsCoarseSolve, std::string underlyingLib)
 Building general 3D backward facing step with length, width and height as defines by 'setGeometry3DBox' with Q2-P1 discontinous discretization.
 
void buildP1_Disc_Q2_3DCube (int N, int M, int numProcsCoarseSolve, std::string underlyingLib)
 Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q2-P1 discontinous discretization.
 
void build3DQ1Cube (int N, int M, int numProcsCoarseSolve, std::string underlyingLib)
 Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q1 discretization.
 
void build3DQ2Cube (int N, int M, int numProcsCoarseSolve, std::string underlyingLib)
 Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q2 discretization.
 
void build3DQ2_20Cube (int N, int M, int numProcsCoarseSolve, std::string underlyingLib)
 Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q2 discretization and 20?
 
void build3DQ2BFS (int N, int M, int numProcsCoarseSolve, std::string underlyingLib)
 Building general 3D backward facing step with length, width and height as defines by 'setGeometry3DBox' with Q2 discretization.
 
void buildMesh2DMiniTPM (std::string FEType, int N, int M, int numProcsCoarseSolve=0, std::string underlyingLib="Tpetra")
 Building 2D mini TPM rectangular mesh with the lenght and height as defined per 'setGeomerty2DRectangle' - characterized by building addition line segments for boundary conditions.
 
void buildSurfaceLinesSquareMiniTPM (std::string feType)
 Building suface lines for TPM square mini. Empty.
 
void setRankRange (int numProcsCoarseSolve)
 
void buildElementsClass (vec2D_int_ptr_Type elements, vec_int_ptr_Type elementFlag=Teuchos::null)
 
void buildSurfaceLinesSquare ()
 Building suface lines aka edges. Empty.
 
GO globalID_Q2_20Cube (int r, int s, int t, int &rr, int off_x, int off_y, int off_z, int M, int N, GO nmbPoints_oneDirFull, GO nmbPoints_oneDirMid)
 
void setStructuredMeshFlags (int flagsOption, std::string FEType="P1")
 Setting corresponding flags to structured mesh depending on underlying problem. Rectangles/Cuboids are treated as 'fluid geometrys' with inflow and outflow surface.
 
void buildElementMap ()
 Building element map.
 
void buildSurfaces (int flagsOption, std::string FEType)
 Building surfaces. This is useful for structural problems. Each surface gets another flag. Corresponds to flag option 3.
 
void flipSurface (vec_int_Type &surfaceElements_vec)
 
- Public Member Functions inherited from FEDD::Mesh< default_sc, default_lo, default_go, default_no >
 Mesh (CommConstPtrConst_Type &comm)
 
void deleteData ()
 
void setParameterList (ParameterListPtr_Type &pL)
 Setting input parameterlist to be parameterlist here.
 
ParameterListConstPtr_Type getParameterList () const
 Getter for paramaeterlist that is set here.
 
vec_int_ptr_Type getElementsFlag () const
 Getter for element flags.
 
MapConstPtr_Type getMapUnique () const
 Getter for unique node map.
 
MapConstPtr_Type getMapRepeated () const
 Getter for repeated node mal.
 
MapConstPtr_Type getElementMap () const
 Getter for element map.
 
MapConstPtr_Type getEdgeMap ()
 Getter for edge map.
 
vec2D_dbl_ptr_Type getPointsRepeated () const
 getter for list of repeated points with x,y,z coordinates in each row
 
vec2D_dbl_ptr_Type getPointsUnique () const
 getter for list of unique points with x,y,z coordinates in each row
 
vec_int_ptr_Type getBCFlagRepeated () const
 Getter for flags corresponting to repeated points.
 
vec_int_ptr_Type getBCFlagUnique () const
 Getter for flags corresponting to unique points.
 
ElementsPtr_Type getElementsC ()
 Returns element list as c-object.
 
ElementsPtr_Type getSurfaceElements ()
 Getter for surface elements. Probably set in mesh partitioner. They are generally the dim-1 surface elements.
 
int getDimension ()
 
default_go getNumElementsGlobal ()
 Global number of elements.
 
default_lo getNumElements ()
 Local number of elements.
 
default_lo getNumPoints (std::string type="Unique")
 Get local (LO) number of points either in unique or repeated version.
 
int getOrderElement ()
 
CommConstPtrConst_Type getComm ()
 Communicator object.
 
int setStructuredMeshFlags (int flags)
 This is done in meshStructured. Maybe we should move it here or delete this.
 
void setElementFlags (std::string type="")
 Something for TPM. Can be deprecated soon.
 
void setReferenceConfiguration ()
 Setting current coordinates as reference configuration. Should only be called once :D.
 
void moveMesh (MultiVectorPtr_Type displacementUnique, MultiVectorPtr_Type displacementRepeated)
 Moving mesh according to displacement based on reference configuration.
 
int getSurfaceElementOrder ()
 Get SurfaceElement order.
 
int getEdgeElementOrder ()
 Get EdgeElement order.
 
void create_AABBTree ()
 
vec_int_ptr_Type findElemsForPoints (vec2D_dbl_ptr_Type query_points)
 
vec_dbl_Type getBaryCoords (vec_dbl_Type point, int element)
 
bool isPointInElem (vec_dbl_Type point, int element)
 
tuple_intint_Type getRankRange () const
 
void deleteSurfaceElements ()
 Deleting surface elements, called after reading input mesh.
 
void correctNormalDirections ()
 Correcting the normal direction of all surface normals set as subelements of volume elements to be outward normals.
 
void correctElementOrientation ()
 Correct the element orientation of all elements to have positive volume / det when doint transformation.
 
vec2D_int_ptr_Type getElements ()
 Returns elements as a vector type contrary to the C-object list.
 

Public Attributes

std::vector< double > coorRec
 
double length
 
double height
 
double width
 
- Public Attributes inherited from FEDD::Mesh< default_sc, default_lo, default_go, default_no >
int dim_
 
long long numElementsGlob_
 
std::string FEType_
 
MapPtr_Type mapUnique_
 
MapPtr_Type mapRepeated_
 
vec2D_dbl_ptr_Type pointsRep_
 
vec2D_dbl_ptr_Type pointsUni_
 
vec_int_ptr_Type bcFlagRep_
 
vec_int_ptr_Type bcFlagUni_
 
ElementsPtr_Type surfaceElements_
 
ElementsPtr_Type elementsC_
 
MapPtr_Type elementMap_
 
MapPtr_Type edgeMap_
 
CommConstPtrConst_Type comm_
 
vec2D_int_ptr_Type elementsVec_
 
vec2D_dbl_ptr_Type pointsRepRef_
 
vec2D_dbl_ptr_Type pointsUniRef_
 
int elementOrder_
 
int surfaceElementOrder_
 
int edgesElementOrder_
 
AABBTreePtr_Type AABBTree_
 
tuple_intint_Type rankRange_
 

Member Function Documentation

◆ build3DQ1Cube()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::build3DQ1Cube ( int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib )

Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q1 discretization.

Parameters
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ build3DQ2_20Cube()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::build3DQ2_20Cube ( int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib )

Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q2 discretization and 20?

Parameters
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ build3DQ2BFS()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::build3DQ2BFS ( int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib )

Building general 3D backward facing step with length, width and height as defines by 'setGeometry3DBox' with Q2 discretization.

Parameters
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ build3DQ2Cube()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::build3DQ2Cube ( int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib )

Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q2 discretization.

Parameters
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh2D()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh2D ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve = 0,
std::string underlyingLib = "Tpetra" )

Building a general 2D rectangular mesh with the lenght and height as defined per 'setGeomerty2DRectangle'. Called by Domain class and different discretizations for 2D mesh are called within this functions.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh2DBFS()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh2DBFS ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve = 0,
std::string underlyingLib = "Tpetra" )

Building 2D backward facing step geometry with the lenght and height as defined per 'setGeomerty2DRectangle'. Called by Domain class and different discretizations for 2D mesh are called within this functions.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh2DMiniTPM()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh2DMiniTPM ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve = 0,
std::string underlyingLib = "Tpetra" )

Building 2D mini TPM rectangular mesh with the lenght and height as defined per 'setGeomerty2DRectangle' - characterized by building addition line segments for boundary conditions.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh2DTPM()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh2DTPM ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve = 0,
std::string underlyingLib = "Tpetra" )

Building 2D TPM rectangular mesh with the lenght and height as defined per 'setGeomerty2DRectangle' - characterized by building addition line segments for boundary conditions.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh3D()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh3D ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve = 0,
std::string underlyingLib = "Tpetra" )

Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox'. Called by Domain class and different discretizations for 3D mesh are called within this functions.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh3D5Elements()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh3D5Elements ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib = "Tpetra" )

Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox'. Called by Domain class. Only P2 discretization available. Subcubes are build with 5 elements.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildMesh3DBFS()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildMesh3DBFS ( std::string FEType,
int N,
int M,
int numProcsCoarseSolve = 0,
std::string underlyingLib = "Tpetra" )

Building general 3D backward facing step with length, width and height as defines by 'setGeometry3DBox'. Called by Domain class and different discretizations for 3D mesh are called within this functions.

Parameters
FETypeFinite element discretization
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildP1_Disc_Q2_3DBFS()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildP1_Disc_Q2_3DBFS ( int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib )

Building general 3D backward facing step with length, width and height as defines by 'setGeometry3DBox' with Q2-P1 discontinous discretization.

Parameters
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildP1_Disc_Q2_3DCube()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildP1_Disc_Q2_3DCube ( int N,
int M,
int numProcsCoarseSolve,
std::string underlyingLib )

Building general 3D cuboid with length, width and height as defines by 'setGeometry3DBox' with Q2-P1 discontinous discretization.

Parameters
NNumber of subdomains
MH/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N))
numProcsCoarseSolveif we want to reserve certain processors for coarse solve
underlyingLibunderlying linear algebra library
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildSurfaceLinesSquareMiniTPM()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildSurfaceLinesSquareMiniTPM ( std::string feType)

Building suface lines for TPM square mini. Empty.

Parameters
feType
Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildSurfaces()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::buildSurfaces ( int flagsOption,
std::string FEType )

Building surfaces. This is useful for structural problems. Each surface gets another flag. Corresponds to flag option 3.

Parameters
flagsOptioncorresponds to flag option from 'setStructureMeshFlags'. Only valid option is 3 for now.
FEType
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setStructuredMeshFlags()

template<class SC, class LO, class GO, class NO>
void FEDD::MeshStructured< SC, LO, GO, NO >::setStructuredMeshFlags ( int flagsOption,
std::string FEType = "P1" )

Setting corresponding flags to structured mesh depending on underlying problem. Rectangles/Cuboids are treated as 'fluid geometrys' with inflow and outflow surface.

Parameters
flagsOptiondepending on underlying geometry (Rectangle/Cuboid - BFS - TPM)
FETypeDiscretization
Here is the call graph for this function:
Here is the caller graph for this function:

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