Finite Element Domain Decomposition Library
FEDDLib
|
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 |
![]() | |
typedef Elements | Elements_Type |
typedef FiniteElement | FiniteElement_Type |
typedef Teuchos::RCP< FiniteElement_Type > | FiniteElementPtr_Type |
typedef Teuchos::RCP< Elements_Type > | ElementsPtr_Type |
typedef Teuchos::RCP< Mesh > | Mesh_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_Type > | MapPtr_Type |
typedef Teuchos::RCP< const Map_Type > | MapConstPtr_Type |
typedef Teuchos::RCP< const Map_Type > | MapConstPtrConst_Type |
typedef MultiVector< default_sc, default_lo, default_go, default_no > | MultiVector_Type |
typedef Teuchos::RCP< MultiVector_Type > | MultiVectorPtr_Type |
typedef AABBTree< default_sc, default_lo, default_go, default_no > | AABBTree_Type |
typedef Teuchos::RCP< AABBTree_Type > | AABBTreePtr_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) |
![]() | |
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 |
![]() | |
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_ |
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.
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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?
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
FEType | Finite element discretization |
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
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.
N | Number of subdomains |
M | H/h with H subdomain diameter (length/H) and h characteristic mesh size (length/(M*N)) |
numProcsCoarseSolve | if we want to reserve certain processors for coarse solve |
underlyingLib | underlying linear algebra library |
void FEDD::MeshStructured< SC, LO, GO, NO >::buildSurfaceLinesSquareMiniTPM | ( | std::string | feType | ) |
Building suface lines for TPM square mini. Empty.
feType |
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.
flagsOption | corresponds to flag option from 'setStructureMeshFlags'. Only valid option is 3 for now. |
FEType |
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.
flagsOption | depending on underlying geometry (Rectangle/Cuboid - BFS - TPM) |
FEType | Discretization |