8 #ifndef TPZHybridizeHDiv_hpp 9 #define TPZHybridizeHDiv_hpp 46 fHDivWrapMatid = HDivWrapMatid;
47 fLagrangeInterface = LagrangeInterface;
48 fInterfaceMatid = InterfaceMatid;
55 return matid == fHDivWrapMatid || matid == fLagrangeInterface || matid ==
fInterfaceMatid;
Implements computational element and a side. Computational Element.
std::tuple< TPZCompMesh *, TPZVec< TPZCompMesh * > > Hybridize(TPZCompMesh *cmesh_Multiphysics, TPZVec< TPZCompMesh *> &meshvec_HDiv, bool group_elements=true, double Lagrange_term_multiplier=1.)
clones the atomic meshes in meshvec_HDiv and creates a multiphysics hybrid mesh
void CreateInterfaceElements(TPZCompMesh *cmesh_Hybrid, TPZVec< TPZCompMesh *> &meshvec_Hybrid)
Create interface elements with material id InterfaceMatid.
void ComputeNState(TPZVec< TPZCompMesh *> &meshvec_Hybrid)
TPZHybridizeHDiv()=default
TPZCompMesh * CreateMultiphysicsMesh(TPZCompMesh *cmesh_HDiv, TPZVec< TPZCompMesh *> &meshvec_Hybrid, double Lagrange_term_multiplier=1.)
create a multiphysics mesh for the hybrid formulation using the materials of another mesh and the giv...
This class implements a simple vector storage scheme for a templated class T. Utility.
This abstract class defines the behaviour which each derived class needs to implement.
bool IsPeriferalMaterialId(int matid)
return true if a material id is a peripheral material
void ComputePeriferalMaterialIds(TPZVec< TPZCompMesh *> &meshvec_Hybrid)
compute material ids for the periferal material objects
void HybridizeGivenMesh(TPZMultiphysicsCompMesh &multiphysics, bool group_elements=true, double Lagrange_term_multiplier=1.)
make a hybrid mesh from a H(div) multiphysics mesh
static void GroupandCondenseElements(TPZCompMesh *cmesh_Hybrid)
group and condense the elements
void SetPeriferalMaterialIds(int HDivWrapMatid, int LagrangeInterface, int InterfaceMatid)
set the periferal material ids
void HybridizeInternalSides(TPZVec< TPZCompMesh *> &meshvec_Hybrid)
split the connects between flux elements and create a dim-1 pressure element
void InsertPeriferalMaterialObjects(TPZVec< TPZCompMesh *> &meshvec_Hybrid)
insert the material objects for HDivWrap and LagrangeInterface in the atomic meshes ...
static void AssociateElements(TPZCompMesh *cmesh, TPZVec< int64_t > &elementgroup)
Associate elements with a volumetric element.
std::tuple< int64_t, int > SplitConnects(const TPZCompElSide &left, const TPZCompElSide &right, TPZVec< TPZCompMesh *> &meshvec_Hybrid)
split the connect between two neighbouring elements
static void VerifySolutionConsistency(TPZCompMesh *fluxmesh, std::ostream &out)
verify the consistency of the solution of the flux mesh
Implements computational mesh. Computational Mesh.
void ReCreateMultiphysicsMesh(TPZMultiphysicsCompMesh *cmesh_HDiv, double Lagrange_term_multiplier=1.)
create a multiphysics hybridized mesh based on and input mesh
Implements computational element based on an interpolation space. Computational Element.
static TPZCompElSide RightElement(TPZInterpolatedElement *intel, int side)
find an element which shares the connect and has the same dimension