NeoPZ
Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | List of all members
TPZHybridizeHDiv Struct Reference

#include <TPZHybridizeHDiv.h>

Public Member Functions

 TPZHybridizeHDiv ()=default
 
 TPZHybridizeHDiv (TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 
void ComputeNState (TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 
void ComputePeriferalMaterialIds (TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 compute material ids for the periferal material objects More...
 
void SetPeriferalMaterialIds (int HDivWrapMatid, int LagrangeInterface, int InterfaceMatid)
 set the periferal material ids More...
 
bool IsPeriferalMaterialId (int matid)
 return true if a material id is a peripheral material More...
 
void HybridizeInternalSides (TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 split the connects between flux elements and create a dim-1 pressure element More...
 
void CreateInterfaceElements (TPZCompMesh *cmesh_Hybrid, TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 Create interface elements with material id InterfaceMatid. More...
 
void CreateInterfaceElements (TPZMultiphysicsCompMesh *cmesh_Hybrid)
 
TPZCompMeshCreateMultiphysicsMesh (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 given atomic meshes More...
 
TPZCompMeshCreateMultiphysicsMesh (TPZMultiphysicsCompMesh *cmesh_HDiv, double Lagrange_term_multiplier=1.)
 create a multiphysics hybridized mesh based on and input mesh More...
 
void ReCreateMultiphysicsMesh (TPZMultiphysicsCompMesh *cmesh_HDiv, double Lagrange_term_multiplier=1.)
 create a multiphysics hybridized mesh based on and input mesh More...
 
void InsertPeriferalMaterialObjects (TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 insert the material objects for HDivWrap and LagrangeInterface in the atomic meshes More...
 
void InsertPeriferalMaterialObjects (TPZCompMesh *cmesh_Hybrid, double Lagrange_term_multiplier=1.)
 insert the material objects for HDivWrap, LagrangeInterface and InterfaceMatid in the multiphysics mesh More...
 
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 More...
 
TPZMultiphysicsCompMeshHybridize (TPZMultiphysicsCompMesh *multiphysics, bool group_elements=true, double Lagrange_term_multiplier=1.)
 make a hybrid mesh from a H(div) multiphysics mesh More...
 
void HybridizeGivenMesh (TPZMultiphysicsCompMesh &multiphysics, bool group_elements=true, double Lagrange_term_multiplier=1.)
 make a hybrid mesh from a H(div) multiphysics mesh More...
 

Static Public Member Functions

static void AssociateElements (TPZCompMesh *cmesh, TPZVec< int64_t > &elementgroup)
 Associate elements with a volumetric element. More...
 
static void GroupandCondenseElements (TPZCompMesh *cmesh_Hybrid)
 group and condense the elements More...
 
static void VerifySolutionConsistency (TPZCompMesh *fluxmesh, std::ostream &out)
 verify the consistency of the solution of the flux mesh More...
 
static TPZCompElSide RightElement (TPZInterpolatedElement *intel, int side)
 find an element which shares the connect and has the same dimension More...
 

Public Attributes

int fHDivWrapMatid
 
int fLagrangeInterface
 
int fInterfaceMatid
 
int fNState
 

Private Member Functions

std::tuple< int64_t, int > SplitConnects (const TPZCompElSide &left, const TPZCompElSide &right, TPZVec< TPZCompMesh *> &meshvec_Hybrid)
 split the connect between two neighbouring elements More...
 

Detailed Description

Definition at line 23 of file TPZHybridizeHDiv.h.

Constructor & Destructor Documentation

◆ TPZHybridizeHDiv() [1/2]

TPZHybridizeHDiv::TPZHybridizeHDiv ( )
default

◆ TPZHybridizeHDiv() [2/2]

TPZHybridizeHDiv::TPZHybridizeHDiv ( TPZVec< TPZCompMesh *> &  meshvec_Hybrid)

Definition at line 33 of file TPZHybridizeHDiv.cpp.

Member Function Documentation

◆ AssociateElements()

void TPZHybridizeHDiv::AssociateElements ( TPZCompMesh cmesh,
TPZVec< int64_t > &  elementgroup 
)
static

◆ ComputeNState()

void TPZHybridizeHDiv::ComputeNState ( TPZVec< TPZCompMesh *> &  meshvec_Hybrid)

Definition at line 38 of file TPZHybridizeHDiv.cpp.

References TPZVec< T >::begin(), and TPZVec< T >::size().

◆ ComputePeriferalMaterialIds()

void TPZHybridizeHDiv::ComputePeriferalMaterialIds ( TPZVec< TPZCompMesh *> &  meshvec_Hybrid)

compute material ids for the periferal material objects

Definition at line 44 of file TPZHybridizeHDiv.cpp.

References TPZGeoMesh::Element(), TPZGeoEl::MaterialId(), TPZGeoMesh::NElements(), and TPZGeoMesh::Reference().

◆ CreateInterfaceElements() [1/2]

void TPZHybridizeHDiv::CreateInterfaceElements ( TPZCompMesh cmesh_Hybrid,
TPZVec< TPZCompMesh *> &  meshvec_Hybrid 
)

◆ CreateInterfaceElements() [2/2]

void TPZHybridizeHDiv::CreateInterfaceElements ( TPZMultiphysicsCompMesh cmesh_Hybrid)

Create interface elements with material id InterfaceMatid using the first and second meshes

Definition at line 365 of file TPZHybridizeHDiv.cpp.

References TPZMultiphysicsCompMesh::MeshVector().

◆ CreateMultiphysicsMesh() [1/2]

TPZCompMesh * TPZHybridizeHDiv::CreateMultiphysicsMesh ( TPZCompMesh cmesh_HDiv,
TPZVec< TPZCompMesh *> &  meshvec_Hybrid,
double  Lagrange_term_multiplier = 1. 
)

◆ CreateMultiphysicsMesh() [2/2]

TPZCompMesh * TPZHybridizeHDiv::CreateMultiphysicsMesh ( TPZMultiphysicsCompMesh cmesh_HDiv,
double  Lagrange_term_multiplier = 1. 
)

◆ GroupandCondenseElements()

void TPZHybridizeHDiv::GroupandCondenseElements ( TPZCompMesh cmesh_Hybrid)
static

group and condense the elements

compute a groupnumber associated with each element

Definition at line 474 of file TPZHybridizeHDiv.cpp.

References TPZElementGroup::AddElement(), TPZCompMesh::ComputeNodElCon(), cond, TPZCompMesh::Element(), TPZCompMesh::NElements(), and TPZCondensedCompEl::SetKeepMatrix().

Referenced by IsPeriferalMaterialId().

◆ Hybridize() [1/2]

std::tuple< TPZCompMesh *, TPZVec< TPZCompMesh * > > TPZHybridizeHDiv::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

insert the material objects for HDivWrap and LagrangeInterface

Definition at line 574 of file TPZHybridizeHDiv.cpp.

References TPZVec< T >::size().

Referenced by IsPeriferalMaterialId().

◆ Hybridize() [2/2]

TPZMultiphysicsCompMesh * TPZHybridizeHDiv::Hybridize ( TPZMultiphysicsCompMesh multiphysics,
bool  group_elements = true,
double  Lagrange_term_multiplier = 1. 
)

make a hybrid mesh from a H(div) multiphysics mesh

Definition at line 593 of file TPZHybridizeHDiv.cpp.

References DebugStop, and TPZMultiphysicsCompMesh::MeshVector().

◆ HybridizeGivenMesh()

void TPZHybridizeHDiv::HybridizeGivenMesh ( TPZMultiphysicsCompMesh multiphysics,
bool  group_elements = true,
double  Lagrange_term_multiplier = 1. 
)

make a hybrid mesh from a H(div) multiphysics mesh

Definition at line 612 of file TPZHybridizeHDiv.cpp.

References TPZMultiphysicsCompMesh::MeshVector().

Referenced by IsPeriferalMaterialId().

◆ HybridizeInternalSides()

void TPZHybridizeHDiv::HybridizeInternalSides ( TPZVec< TPZCompMesh *> &  meshvec_Hybrid)

◆ InsertPeriferalMaterialObjects() [1/2]

void TPZHybridizeHDiv::InsertPeriferalMaterialObjects ( TPZVec< TPZCompMesh *> &  meshvec_Hybrid)

insert the material objects for HDivWrap and LagrangeInterface in the atomic meshes

Definition at line 512 of file TPZHybridizeHDiv.cpp.

References DebugStop, TPZCompMesh::Dimension(), TPZCompMesh::FindMaterial(), and TPZCompMesh::InsertMaterialObject().

Referenced by IsPeriferalMaterialId().

◆ InsertPeriferalMaterialObjects() [2/2]

void TPZHybridizeHDiv::InsertPeriferalMaterialObjects ( TPZCompMesh cmesh_Hybrid,
double  Lagrange_term_multiplier = 1. 
)

insert the material objects for HDivWrap, LagrangeInterface and InterfaceMatid in the multiphysics mesh

Definition at line 543 of file TPZHybridizeHDiv.cpp.

References DebugStop, TPZCompMesh::Dimension(), TPZCompMesh::FindMaterial(), TPZCompMesh::InsertMaterialObject(), and TPZLagrangeMultiplier::SetMultiplier().

◆ IsPeriferalMaterialId()

bool TPZHybridizeHDiv::IsPeriferalMaterialId ( int  matid)
inline

◆ ReCreateMultiphysicsMesh()

void TPZHybridizeHDiv::ReCreateMultiphysicsMesh ( TPZMultiphysicsCompMesh cmesh_HDiv,
double  Lagrange_term_multiplier = 1. 
)

create a multiphysics hybridized mesh based on and input mesh

Definition at line 403 of file TPZHybridizeHDiv.cpp.

References TPZMultiphysicsCompMesh::BuildMultiphysicsSpace(), TPZMultiphysicsCompMesh::GetActiveApproximationSpaces(), and TPZMultiphysicsCompMesh::MeshVector().

Referenced by IsPeriferalMaterialId().

◆ RightElement()

TPZCompElSide TPZHybridizeHDiv::RightElement ( TPZInterpolatedElement intel,
int  side 
)
static

find an element which shares the connect and has the same dimension

if the side is restrained we will hybridize between the element and the larger element

we assume that a larger element should not be a boundary element

Definition at line 190 of file TPZHybridizeHDiv.cpp.

References DebugStop, TPZGeoEl::Dimension(), TPZCompElSide::Element(), TPZGeoElSide::EqualLevelCompElementList(), TPZConnect::HasDependency(), TPZGeoElSide::LowerLevelCompElementList2(), TPZCompEl::Reference(), TPZInterpolatedElement::SideConnect(), and TPZVec< T >::size().

Referenced by IsPeriferalMaterialId().

◆ SetPeriferalMaterialIds()

void TPZHybridizeHDiv::SetPeriferalMaterialIds ( int  HDivWrapMatid,
int  LagrangeInterface,
int  InterfaceMatid 
)
inline

set the periferal material ids

Definition at line 44 of file TPZHybridizeHDiv.h.

◆ SplitConnects()

std::tuple< int64_t, int > TPZHybridizeHDiv::SplitConnects ( const TPZCompElSide left,
const TPZCompElSide right,
TPZVec< TPZCompMesh *> &  meshvec_Hybrid 
)
private

◆ VerifySolutionConsistency()

void TPZHybridizeHDiv::VerifySolutionConsistency ( TPZCompMesh fluxmesh,
std::ostream &  out 
)
static

Member Data Documentation

◆ fHDivWrapMatid

int TPZHybridizeHDiv::fHDivWrapMatid

Definition at line 26 of file TPZHybridizeHDiv.h.

◆ fInterfaceMatid

int TPZHybridizeHDiv::fInterfaceMatid

Definition at line 30 of file TPZHybridizeHDiv.h.

Referenced by IsPeriferalMaterialId().

◆ fLagrangeInterface

int TPZHybridizeHDiv::fLagrangeInterface

Definition at line 28 of file TPZHybridizeHDiv.h.

◆ fNState

int TPZHybridizeHDiv::fNState

Definition at line 32 of file TPZHybridizeHDiv.h.


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