NeoPZ
|
class for creating TPZMHMM with Mixed Meshes More...
#include <TPZMHMixedHybridMeshControl.h>
Public Member Functions | |
TPZMHMixedHybridMeshControl () | |
TPZMHMixedHybridMeshControl (int dimension) | |
TPZMHMixedHybridMeshControl (TPZAutoPointer< TPZGeoMesh > gmesh, TPZVec< int64_t > &coarseindices) | |
TPZMHMixedHybridMeshControl (TPZAutoPointer< TPZGeoMesh > gmesh) | |
TPZMHMixedHybridMeshControl (const TPZMHMixedHybridMeshControl ©) | |
virtual | ~TPZMHMixedHybridMeshControl () |
TPZMHMixedHybridMeshControl & | operator= (const TPZMHMixedHybridMeshControl &cp) |
virtual void | InsertPeriferalMaterialObjects () |
Insert Boundary condition objects that do not perform any actual computation. More... | |
virtual void | InsertPeriferalHdivMaterialObjects () |
Insert the necessary H(div) material objects to create the flux mesh. More... | |
virtual void | InsertPeriferalPressureMaterialObjects () |
Insert the necessary pressure material objects to create the pressure mesh. More... | |
virtual void | BuildComputationalMesh (bool usersubstructure) |
Create all data structures for the computational mesh. More... | |
virtual bool | IsSkeletonMatid (int matid) |
Return true if the material id is related to a skeleton. More... | |
void | InsertFractureFlowMaterial (int matid) |
void | CreateSkeletonAxialFluxes () |
void | CreateInternalAxialFluxes () |
void | CreateAxialFluxElement (TPZInterpolatedElement *PressureElement, int gelfluxmatid) |
Add axial flux to a pressure element. More... | |
void | SplitFluxElementsAroundFractures () |
split the fluxes between the flux elements adjacent to a fracture More... | |
void | AdjustBoundaryConditionsOfFractures () |
Change the material id of the boundary elements associated with fracture flow. More... | |
virtual void | CheckMeshConsistency () |
verify the consistency of the datastructure More... | |
virtual void | PrintFriendly (std::ostream &out) |
print the elements in a readable format More... | |
virtual void | SetHybridize (bool flag) |
Set the hybridization to true. More... | |
Public Member Functions inherited from TPZMHMixedMeshControl | |
TPZMHMixedMeshControl () | |
TPZMHMixedMeshControl (int dimension) | |
TPZMHMixedMeshControl (TPZAutoPointer< TPZGeoMesh > gmesh, TPZVec< int64_t > &coarseindices) | |
TPZMHMixedMeshControl (TPZAutoPointer< TPZGeoMesh > gmesh) | |
TPZMHMixedMeshControl (const TPZMHMixedMeshControl ©) | |
TPZMHMixedMeshControl & | operator= (const TPZMHMixedMeshControl &cp) |
virtual | ~TPZMHMixedMeshControl () |
virtual void | InsertPeriferalRotationMaterialObjects () |
Insert the necessary Rotation material objects to create the flux mesh. More... | |
TPZAutoPointer< TPZCompMesh > | FluxMesh () |
void | SetLagrangeAveragePressure (bool flag) |
Set the flag for creating Lagrange Dofs for the average pressure. More... | |
virtual void | Hybridize (bool flag) |
Set the hybridization to true. More... | |
void | GetMeshVec (TPZVec< TPZCompMesh *> &meshvec) |
Put the pointers to the meshes in a vector. More... | |
TPZVec< TPZAutoPointer< TPZCompMesh > > | GetMeshes () |
void | Print (std::ostream &out) |
print the data structure More... | |
Public Member Functions inherited from TPZMHMeshControl | |
TPZMHMeshControl () | |
TPZMHMeshControl (int dimension) | |
TPZMHMeshControl (TPZAutoPointer< TPZGeoMesh > gmesh, TPZVec< int64_t > &geotomhm) | |
constructor, indicating that the MHM approximation will use the elements indicated by coarseindices as the macro elements More... | |
TPZMHMeshControl (TPZAutoPointer< TPZGeoMesh > gmesh) | |
create the mhm object without defining the MHM partition More... | |
TPZMHMeshControl (const TPZMHMeshControl ©) | |
virtual | ~TPZMHMeshControl () |
TPZMHMeshControl & | operator= (const TPZMHMeshControl &cp) |
TPZAutoPointer< TPZCompMesh > | CMesh () const |
TPZAutoPointer< TPZGeoMesh > | GMesh () const |
TPZAutoPointer< TPZCompMesh > | PressureMesh () |
void | DefinePartitionbyCoarseIndices (TPZVec< int64_t > &coarseindices) |
Define the MHM partition by the coarse element indices. More... | |
void | DefineSkeleton (std::map< int64_t, std::pair< int64_t, int64_t > > &skeleton) |
void | DefinePartition (TPZVec< int64_t > &partitionindex, std::map< int64_t, std::pair< int64_t, int64_t > > &skeleton) |
Define the partitioning information of the MHM mesh. More... | |
void | DefinePartition (TPZVec< int64_t > &partitionindex) |
Define the partitioning information of the MHM mesh. More... | |
void | SetProblemType (MProblemType problem) |
Set the problem type of the simulation. More... | |
void | SetInternalPOrder (int order) |
Set the porder for the internal elements. More... | |
void | SetSkeletonPOrder (int order) |
void | SetHdivmaismaisPOrder (int order) |
void | SetLagrangeAveragePressure (bool flag) |
Set the flag for creating Lagrange Dofs for the average pressure. More... | |
virtual bool | GetHybridize () |
void | DivideSkeletonElements (int ndivide) |
divide the skeleton elements More... | |
void | DivideBoundarySkeletonElements () |
divide the boundary skeleton elements More... | |
void | SwitchLagrangeMultiplierSign (bool sw) |
switch the sign of the lagrange multipliers More... | |
void | Print (std::ostream &out) |
print the data structure More... | |
void | PrintDiagnostics (std::ostream &out) |
Print diagnostics. More... | |
void | GetMeshVec (TPZVec< TPZCompMesh *> &meshvec) |
Put the pointers to the meshes in a vector. More... | |
TPZVec< TPZAutoPointer< TPZCompMesh > > | GetMeshes () |
TPZManVector< int64_t > | GetGeoToMHMDomain () |
std::map< int64_t, int64_t > & | Coarse_to_Submesh () |
return the coarseindex to submesh index data structure More... | |
Public Attributes | |
int | fHDivWrapperMatId |
material id of the wrapper elements at the end of H(div) elements More... | |
int | fPressureDim1MatId |
material id of the pressure Lagrange multipliers of dimension fDim-1 More... | |
int | fPressureDim2MatId |
material id of the pressure Lagrange multipliers of dimension fDim-2 More... | |
std::set< int > | fFractureFlowDim1MatId |
material id of the flow elements of dimension fDim-1 More... | |
int | fHomogeneousNeumannBcMatId |
material id of zero flux boundary condition, used for fracture elements More... | |
std::set< int > | fSkeletonWithFlowMatId |
material id of skeleton elements which have axial flow More... | |
int | fSkeletonWithFlowPressureMatId |
material id of the pressure corresponding to the skeleton with axial flow More... | |
Public Attributes inherited from TPZMHMeshControl | |
int | fSkeletonMatId |
material id associated with the skeleton elements More... | |
int | fSecondSkeletonMatId |
material id associated with the skeleton elements More... | |
int | fPressureSkeletonMatId |
material id associated with the skeleton elements in a hybrid context More... | |
int | fLagrangeMatIdLeft |
material id associated with the lagrange multiplier elements More... | |
int | fLagrangeMatIdRight |
std::set< int > | fMaterialIds |
materials used for modeling the differential equation More... | |
std::set< int > | fMaterialBCIds |
materials for boundary conditions More... | |
int64_t | fGlobalSystemSize |
number of equations when not condensing anything More... | |
int64_t | fGlobalSystemWithLocalCondensationSize |
number of equations considering local condensation More... | |
int64_t | fNumeq |
number of equations of the global system More... | |
Protected Member Functions | |
virtual void | CreateInternalFluxElements () |
virtual void | CreateSkeleton () |
will create the elements on the skeleton More... | |
virtual void | CreateMultiPhysicsInterfaceElements (int dim) |
Create the interfaces between the pressure elements of dimension dim. More... | |
virtual void | CreatePressureMHMMesh () |
Create the pressure mesh which is dual to the flux mesh. More... | |
void | CreatePressureInterfaces () |
virtual void | HybridizeSkeleton (int skeletonmatid, int pressurematid) |
hybridize the flux elements - each flux element becomes 5 elements More... | |
void | CreateLowerDimensionPressureElements () |
bool | NeedsHDivWrapper (TPZGeoElSide gelside) |
verifies if a HDiv wrapper needs to be created for a given element/side More... | |
void | CreateHDivWrappers () |
void | FindConnectedElements (TPZGeoElSide &pressureindex, int domain, TPZVec< TPZCompElSide > &fluxconnected) |
virtual void | GroupandCondenseElements () |
group and condense the elements More... | |
void | GroupElements (TPZCompMesh *cmesh) |
group element H(div) elements with surrounding interface elements More... | |
void | ApplyNeighbourBoundaryCondition (TPZGeoEl *gel) |
Protected Member Functions inherited from TPZMHMixedMeshControl | |
void | CreateHDivMHMMesh () |
Create the mesh of the flux approximation space. More... | |
virtual void | CreateRotationMesh () |
Create the rotation mesh to elasticity problem. More... | |
void | CreateHDivPressureMHMMesh () |
Create the multiphysics mesh. More... | |
void | BuildMultiPhysicsMesh () |
build the multi physics mesh (not at the finest geometric mesh level More... | |
virtual void | CreateMultiPhysicsInterfaceElements (int dim, int pressmatid, std::pair< int, int > skelmatid) |
Create the multiphysics interface elements between elements of specified material id. More... | |
void | HideTheElements () |
put the elements in TPZSubCompMesh, group the elements and condense locally More... | |
void | OptimizeInterfaceElements () |
switch the elements pointed to by the interface by lower dimensional elements More... | |
void | DeletePressureElements () |
delete the pressure elements leaving the geometric mesh without pointing to the computational mesh More... | |
Protected Member Functions inherited from TPZMHMeshControl | |
virtual void | CreateSkeletonElements () |
will create dim-1 geometric elements on the interfaces between the coarse element indices More... | |
TPZCompMesh * | CriaMalhaTemporaria () |
will create a computational mesh using the coarse element indexes and its interface elements More... | |
void | CreateInternalElements () |
will create the internal elements, one coarse element at a time More... | |
void | AddBoundaryElements () |
Add the boundary elements to the computational mesh. More... | |
void | AddBoundaryInterfaceElements () |
Add the boundary interface elements to the computational mesh. More... | |
void | CreateSkeleton () |
will create the elements on the skeleton More... | |
void | CreateInterfaceElements () |
will create the interface elements between the internal elements and the skeleton More... | |
void | CreateInterfaceElements2 () |
bool | IsSibling (int64_t son, int64_t father) |
verify if the element is a sibling of More... | |
void | AddElementBoundaries (int64_t elseed, int64_t compelindex, TPZStack< TPZCompElSide > &result) |
put the element side which face the boundary on the stack More... | |
void | TransferToMultiphysics () |
transform the computational mesh into a multiphysics mesh More... | |
void | SubStructure () |
substructure the mesh More... | |
void | SubStructure2 () |
void | BuildWrapMesh (int dim) |
Create the wrap elements. More... | |
int | HasWrapNeighbour (TPZGeoElSide gelside) |
Verify if the element side contains a wrap neighbour. More... | |
void | CheckDivisionConsistency (TPZGeoElSide gelside) |
int | WrapMaterialId (TPZGeoElSide gelside) |
Return the wrap material id (depends on being boundary, neighbour of skeleton or interior. More... | |
virtual bool | IsBoundaryMatid (int matid) |
return true if the material id is related to a boundary More... | |
void | CreateWrap (TPZGeoElSide gelside) |
CreateWrapMesh of a given material id. More... | |
void | CreateWrap (TPZGeoElSide gelside, int wrapmaterial) |
CreateWrapMesh of a given material id. More... | |
void | DivideWrap (TPZGeoEl *wrapelement) |
Divide the wrap element while it has divided neighbours. More... | |
void | CreateLagrangeMultiplierMesh () |
create the lagrange multiplier mesh, one element for each subdomain More... | |
void | SetSubdomain (TPZCompEl *cel, int64_t subdomain) |
associates the connects of an element with a subdomain More... | |
void | SetSubdomain (TPZCompMesh *cmesh, int64_t connectindex, int64_t subdomain) |
associates the connects index with a subdomain More... | |
int64_t | WhichSubdomain (TPZCompEl *cel) |
returns to which subdomain a given element beint64_ts More... | |
void | JoinSubdomains (TPZVec< TPZCompMesh *> &meshvec, TPZCompMesh *multiphysicsmesh) |
Subdomains are identified by computational mesh, this method will join. More... | |
void | PrintSubdomain (int64_t elindex, std::ostream &out) |
print the diagnostics for a subdomain More... | |
void | PrintBoundaryInfo (std::ostream &out) |
print the indices of the boundary elements and interfaces More... | |
void | ConnectedElements (int64_t skeleton, std::pair< int64_t, int64_t > &leftright, std::map< int64_t, std::list< TPZCompElSide > > &ellist) |
identify connected elements to the skeleton elements More... | |
void | ConnectedInterfaceElements (int64_t skeleton, std::pair< int64_t, int64_t > &leftright, std::map< int64_t, std::list< TPZInterfaceElement *> > &ellist) |
identify interface elements connected to the skeleton elements More... | |
Additional Inherited Members | |
Public Types inherited from TPZMHMeshControl | |
enum | MProblemType { ENone, EScalar, EElasticity2D, EElasticity3D } |
Specify the type of differential equation. More... | |
Protected Attributes inherited from TPZMHMixedMeshControl | |
TPZAutoPointer< TPZCompMesh > | fFluxMesh |
computational mesh to contain the pressure elements More... | |
TPZAutoPointer< TPZCompMesh > | fRotationMesh |
computational mesh to contain the rotation elements More... | |
Protected Attributes inherited from TPZMHMeshControl | |
TPZAutoPointer< TPZGeoMesh > | fGMesh |
geometric mesh used to create the computational mesh More... | |
TPZAutoPointer< TPZCompMesh > | fCMesh |
computational MHM mesh being built by this class More... | |
TPZAutoPointer< TPZCompMesh > | fCMeshLagrange |
computational mesh to represent the distributed flux in each subdomain More... | |
TPZAutoPointer< TPZCompMesh > | fCMeshConstantPressure |
computational mesh to represent the constant states More... | |
TPZAutoPointer< TPZCompMesh > | fPressureFineMesh |
computational mesh to contain the pressure elements More... | |
MProblemType | fProblemType |
Variable defining the type of problem. More... | |
int | fNState |
number of state variables More... | |
int | fpOrderInternal |
interpolation order of the internal elements More... | |
int | fpOrderSkeleton |
interpolation order of the skeleton elements More... | |
int | fHdivmaismais |
int | fSkeletonWrapMatId |
material index of the skeleton wrap More... | |
int | fBoundaryWrapMatId |
material index of the boundary wrap More... | |
int | fInternalWrapMatId |
material index of the internal wrap More... | |
TPZManVector< int64_t > | fGeoToMHMDomain |
vector of coarse domain index associated with each geometric element More... | |
std::map< int64_t, int64_t > | fMHMtoSubCMesh |
indices of the geometric elements which define the skeleton mesh and their corresponding subcmesh indices More... | |
std::map< int64_t, std::pair< int64_t, int64_t > > | fInterfaces |
indices of the skeleton elements and their left/right partition indexes More... | |
std::map< TPZCompMesh *, TPZManVector< int64_t > > | fConnectToSubDomainIdentifier |
geometric index of the connects - subdomain where the connect will be internal More... | |
bool | fLagrangeAveragePressure |
flag to determine whether a lagrange multiplier is included to force zero average pressures in the subdomains More... | |
bool | fHybridize |
flag to indicate whether we create a hybridized mesh More... | |
bool | fSwitchLagrangeSign |
flag to indicate whether the lagrange multipliers should switch signal More... | |
class for creating TPZMHMM with Mixed Meshes
Definition at line 18 of file TPZMHMixedHybridMeshControl.h.
|
inline |
Definition at line 25 of file TPZMHMixedHybridMeshControl.h.
Referenced by TPZMHMixedHybridMeshControl().
|
inline |
Definition at line 30 of file TPZMHMixedHybridMeshControl.h.
References TPZMHMixedHybridMeshControl().
TPZMHMixedHybridMeshControl::TPZMHMixedHybridMeshControl | ( | TPZAutoPointer< TPZGeoMesh > | gmesh, |
TPZVec< int64_t > & | coarseindices | ||
) |
Definition at line 50 of file TPZMHMixedHybridMeshControl.cpp.
TPZMHMixedHybridMeshControl::TPZMHMixedHybridMeshControl | ( | TPZAutoPointer< TPZGeoMesh > | gmesh | ) |
Definition at line 54 of file TPZMHMixedHybridMeshControl.cpp.
|
inline |
Definition at line 42 of file TPZMHMixedHybridMeshControl.h.
References ~TPZMHMixedHybridMeshControl().
|
virtual |
Definition at line 58 of file TPZMHMixedHybridMeshControl.cpp.
Referenced by TPZMHMixedHybridMeshControl().
void TPZMHMixedHybridMeshControl::AdjustBoundaryConditionsOfFractures | ( | ) |
Change the material id of the boundary elements associated with fracture flow.
Definition at line 1561 of file TPZMHMixedHybridMeshControl.cpp.
References ApplyNeighbourBoundaryCondition(), TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZMHMeshControl::fBoundaryWrapMatId, TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGMesh, TPZCompMesh::LoadReferences(), TPZGeoEl::MaterialId(), TPZGeoMesh::NElements(), and TPZGeoMesh::ResetReference().
Referenced by BuildComputationalMesh(), and InsertFractureFlowMaterial().
|
protected |
for a given boundary wrap element determine if it has a neighbouring fracture element determine the appropriate boundary condition change the material id of the geometric element to apply the boundary condition
for a given boundary wrap element determine the appropriate boundary condition determine if it has a neighbouring fracture element change the material id of the geometric element to apply the boundary condition
Definition at line 1444 of file TPZMHMixedHybridMeshControl.cpp.
References bc, co, DebugStop, TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoElSide::Element(), TPZMHMeshControl::fBoundaryWrapMatId, TPZMHMixedMeshControl::fFluxMesh, fFractureFlowDim1MatId, TPZMHMeshControl::fGMesh, fHDivWrapperMatId, fHomogeneousNeumannBcMatId, FindCapElement(), fPressureDim1MatId, TPZMHMeshControl::fSecondSkeletonMatId, TPZMHMeshControl::fSkeletonMatId, fSkeletonWithFlowMatId, fSkeletonWithFlowPressureMatId, TPZGeoNode::GetCoordinates(), TPZMaterial::Id(), TPZGeoElSide::LowestFatherSide(), TPZGeoEl::MaterialId(), TPZGeoElSide::Neighbour(), TPZGeoEl::Node(), TPZGeoEl::NSides(), TPZGeoMesh::Reference(), TPZGeoEl::SetMaterialId(), TPZGeoEl::SubElement(), and TPZBndCond::Type().
Referenced by AdjustBoundaryConditionsOfFractures(), and SetHybridize().
|
virtual |
Create all data structures for the computational mesh.
hybridize the flow objects on the skeleton in all cases
hybridize the normal fluxes
create the multiphysics mesh
Reimplemented from TPZMHMixedMeshControl.
Definition at line 116 of file TPZMHMixedHybridMeshControl.cpp.
References AdjustBoundaryConditionsOfFractures(), CheckMeshConsistency(), TPZCompMesh::ComputeNodElCon(), TPZMHMixedMeshControl::CreateHDivMHMMesh(), TPZMHMixedMeshControl::CreateHDivPressureMHMMesh(), CreateInternalAxialFluxes(), CreatePressureMHMMesh(), CreateSkeletonAxialFluxes(), DebugStop, TPZCompMesh::Dimension(), TPZGeoMesh::Dimension(), TPZCompMesh::ExpandSolution(), TPZMHMeshControl::fCMesh, TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGlobalSystemSize, TPZMHMeshControl::fGlobalSystemWithLocalCondensationSize, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fHybridize, TPZMHMeshControl::fNumeq, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fpOrderSkeleton, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fPressureSkeletonMatId, TPZMHMeshControl::fSkeletonMatId, fSkeletonWithFlowMatId, fSkeletonWithFlowPressureMatId, TPZMHMixedMeshControl::HideTheElements(), TPZMHMixedMeshControl::HybridizeSkeleton(), HybridizeSkeleton(), InsertPeriferalMaterialObjects(), InsertPeriferalPressureMaterialObjects(), TPZCompMesh::NEquations(), TPZCompMesh::Print(), TPZVTKGeoMesh::PrintCMeshVTK(), PrintFriendly(), TPZMatrix< TVar >::Rows(), and TPZCompMesh::Solution().
Referenced by operator=().
|
virtual |
verify the consistency of the datastructure
Reimplemented from TPZMHMeshControl.
Definition at line 1578 of file TPZMHMixedHybridMeshControl.cpp.
References co, TPZCompEl::Connect(), DebugStop, TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZMultiphysicsElement::Element(), TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fGMesh, fHDivWrapperMatId, fPressureDim1MatId, fPressureDim2MatId, TPZGeoNode::GetCoordinates(), TPZGeoEl::MaterialId(), TPZCompEl::NConnects(), TPZGeoEl::NCornerNodes(), TPZConnect::NElConnected(), TPZCompMesh::NElements(), TPZMultiphysicsElement::NMeshes(), TPZGeoEl::Node(), and TPZCompEl::Reference().
Referenced by BuildComputationalMesh(), and InsertFractureFlowMaterial().
void TPZMHMixedHybridMeshControl::CreateAxialFluxElement | ( | TPZInterpolatedElement * | PressureElement, |
int | gelfluxmatid | ||
) |
Add axial flux to a pressure element.
Add axial flux to a pressure element the index of the associated geometric element is given and determines the material id of the element
Definition at line 1204 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompEl::ConnectIndex(), TPZCompMesh::CreateCompEl(), TPZGeoElBC::CreatedElement(), DebugStop, TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZCompMesh::Element(), TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGMesh, fHDivWrapperMatId, fPressureDim1MatId, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fPressureSkeletonMatId, fSkeletonWithFlowPressureMatId, TPZGeoEl::Index(), TPZCompEl::LoadElementReference(), LOGPZ_DEBUG, TPZGeoEl::MaterialId(), TPZInterpolatedElement::NConnects(), TPZGeoEl::NSides(), TPZInterpolatedElement::PreferredSideOrder(), TPZCompEl::Reference(), TPZGeoEl::ResetReference(), TPZCompMesh::SetAllCreateFunctions(), TPZCompMesh::SetAllCreateFunctionsHDiv(), TPZCompMesh::SetDefaultOrder(), TPZCompMesh::SetDimModel(), TPZInterpolationSpace::SetSideOrient(), TPZMHMeshControl::SetSubdomain(), TPZInterpolatedElement::SideConnectIndex(), TPZGeoEl::SideDimension(), and TPZMHMeshControl::WhichSubdomain().
Referenced by CreateInternalAxialFluxes(), CreateSkeletonAxialFluxes(), and InsertFractureFlowMaterial().
|
protected |
Definition at line 445 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompEl::ConnectIndex(), TPZCompMesh::CreateCompEl(), TPZGeoElBC::CreatedElement(), TPZGeoMesh::Dimension(), TPZGeoMesh::Element(), TPZGeoElSide::Element(), TPZCompMesh::Element(), TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGMesh, fHDivWrapperMatId, TPZMHMeshControl::fInternalWrapMatId, TPZCompEl::Index(), TPZGeoEl::Index(), TPZCompEl::LoadElementReference(), LOGPZ_DEBUG, TPZGeoEl::MaterialId(), TPZInterpolatedElement::MidSideConnect(), TPZInterpolatedElement::MidSideConnectLocId(), NeedsHDivWrapper(), TPZGeoElSide::Neighbour(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZConnect::Order(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZGeoEl::ResetReference(), TPZCompMesh::SetDefaultOrder(), TPZInterpolationSpace::SetSideOrient(), TPZGeoElSide::Side(), and TPZGeoEl::SideDimension().
Referenced by CreateInternalFluxElements(), and SetHybridize().
void TPZMHMixedHybridMeshControl::CreateInternalAxialFluxes | ( | ) |
Definition at line 1162 of file TPZMHMixedHybridMeshControl.cpp.
References CreateAxialFluxElement(), DebugStop, TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZCompMesh::Element(), fFractureFlowDim1MatId, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fPressureFineMesh, fSkeletonWithFlowMatId, fSkeletonWithFlowPressureMatId, HasNeighbour(), TPZGeoEl::MaterialId(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZCompEl::Reference(), and TPZGeoMesh::ResetReference().
Referenced by BuildComputationalMesh(), and InsertFractureFlowMaterial().
|
protectedvirtual |
associate the connects with the subdomain
Reimplemented from TPZMHMixedMeshControl.
Definition at line 67 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompMesh::ApproxSpace(), TPZCompMesh::CreateCompEl(), CreateHDivWrappers(), TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZCompMesh::ExpandSolution(), TPZMHMeshControl::fConnectToSubDomainIdentifier, TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGeoToMHMDomain, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fMHMtoSubCMesh, TPZMHMeshControl::fpOrderInternal, TPZGeoEl::HasSubElement(), TPZCompMesh::LoadReferences(), TPZGeoMesh::NElements(), TPZGeoMesh::ResetReference(), TPZCreateApproximationSpace::SetAllCreateFunctionsHDiv(), TPZCompMesh::SetDefaultOrder(), TPZCompMesh::SetDimModel(), TPZMHMeshControl::SetSubdomain(), and SplitFluxElementsAroundFractures().
|
protected |
Create lower dimension pressure elements (dim-2) The (dim-2) geometric elements have already been created.
Create lower dimension pressure interfaces (dim-2) The (dim-2) geometric elements have already been created.
Definition at line 908 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompEl::Connect(), TPZCompMesh::CreateCompEl(), DebugStop, TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZGeoElSide::Element(), TPZCompMesh::Element(), TPZMHMeshControl::fGeoToMHMDomain, TPZMHMeshControl::fGMesh, FindPressureSkeleton(), TPZMHMeshControl::fInterfaces, TPZMHMeshControl::fInternalWrapMatId, fPressureDim1MatId, fPressureDim2MatId, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fPressureSkeletonMatId, fSkeletonWithFlowPressureMatId, TPZMHMeshControl::fSkeletonWrapMatId, TPZGeoEl::Index(), TPZGeoEl::MaterialId(), TPZCompEl::NConnects(), TPZGeoElSide::Neighbour(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZInterpolatedElement::RestrainSide(), TPZConnect::SetLagrangeMultiplier(), TPZMHMeshControl::SetSubdomain(), and TPZMHMeshControl::WhichSubdomain().
Referenced by CreatePressureMHMMesh(), and SetHybridize().
|
protectedvirtual |
Create the interfaces between the pressure elements of dimension dim.
Constructor
Reimplemented from TPZMHMixedMeshControl.
Definition at line 598 of file TPZMHMixedHybridMeshControl.cpp.
References TPZGeoElBC::CreatedElement(), TPZMHMixedMeshControl::CreateMultiPhysicsInterfaceElements(), DebugStop, TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZMultiphysicsElement::Element(), TPZCompMesh::Element(), TPZCompElSide::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fGMesh, FindConnectedElements(), TPZMHMeshControl::fLagrangeMatIdRight, fPressureDim1MatId, fPressureDim2MatId, TPZMHMeshControl::fPressureSkeletonMatId, TPZMHMeshControl::fSecondSkeletonMatId, TPZMHMeshControl::fSkeletonMatId, fSkeletonWithFlowPressureMatId, TPZCompEl::Index(), TPZCompEl::LoadElementReference(), LOGPZ_DEBUG, TPZGeoEl::MaterialId(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZCompEl::Reference(), TPZGeoEl::Reference(), TPZGeoMesh::ResetReference(), TPZVec< T >::size(), and TPZMHMeshControl::WhichSubdomain().
|
protected |
Definition at line 212 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompEl::Connect(), TPZCompMesh::CreateCompEl(), TPZGeoElBC::CreatedElement(), DebugStop, TPZGeoMesh::Dimension(), TPZGeoMesh::Element(), TPZGeoElSide::Element(), TPZCompMesh::Element(), TPZCompMesh::ExpandSolution(), TPZMHMixedMeshControl::fFluxMesh, fFractureFlowDim1MatId, TPZMHMeshControl::fGeoToMHMDomain, TPZMHMeshControl::fGMesh, fPressureDim1MatId, TPZMHMeshControl::fPressureFineMesh, TPZGeoEl::HasSubElement(), TPZGeoEl::Index(), LOGPZ_DEBUG, TPZGeoEl::MaterialId(), TPZInterpolatedElement::MidSideConnect(), TPZCompEl::NConnects(), TPZGeoElSide::Neighbour(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZConnect::Order(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZGeoEl::ResetReference(), TPZCompMesh::SetDefaultOrder(), TPZConnect::SetLagrangeMultiplier(), TPZMHMeshControl::SetSubdomain(), and TPZMHMeshControl::WhichSubdomain().
Referenced by CreatePressureMHMMesh(), and SetHybridize().
|
protectedvirtual |
Create the pressure mesh which is dual to the flux mesh.
Reimplemented from TPZMHMixedMeshControl.
Definition at line 308 of file TPZMHMixedHybridMeshControl.cpp.
References CreateLowerDimensionPressureElements(), CreatePressureInterfaces(), TPZMHMixedMeshControl::CreatePressureMHMMesh(), TPZCompMesh::ExpandSolution(), and TPZMHMeshControl::fPressureFineMesh.
Referenced by BuildComputationalMesh(), and SetHybridize().
|
protectedvirtual |
will create the elements on the skeleton
Reimplemented from TPZMHMixedMeshControl.
Definition at line 321 of file TPZMHMixedHybridMeshControl.cpp.
References TPZMHMixedMeshControl::CreateSkeleton().
void TPZMHMixedHybridMeshControl::CreateSkeletonAxialFluxes | ( | ) |
indices of the skeleton elements and their left/right geometric elements of the skeleton mesh
Definition at line 1100 of file TPZMHMixedHybridMeshControl.cpp.
References CreateAxialFluxElement(), DebugStop, TPZGeoMesh::Element(), TPZCompMesh::Element(), fFractureFlowDim1MatId, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fInterfaces, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fSkeletonMatId, fSkeletonWithFlowMatId, fSkeletonWithFlowPressureMatId, HasNeighbour(), TPZGeoEl::Index(), TPZGeoEl::MaterialId(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), and TPZGeoEl::SetMaterialId().
Referenced by BuildComputationalMesh(), and InsertFractureFlowMaterial().
|
protected |
Definition at line 515 of file TPZMHMixedHybridMeshControl.cpp.
References co, DebugStop, TPZGeoElSide::Dimension(), TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZMultiphysicsElement::Element(), TPZGeoElSide::Element(), TPZCompElSide::Element(), TPZGeoElSide::Father2(), TPZMHMeshControl::fGMesh, fHDivWrapperMatId, TPZMHMeshControl::fInternalWrapMatId, TPZMHMeshControl::fSkeletonWrapMatId, TPZGeoNode::GetCoordinates(), TPZGeoEl::MaterialId(), TPZGeoElSide::Neighbour(), TPZGeoEl::NodePtr(), TPZStack< T, NumExtAlloc >::Push(), TPZGeoElSide::Reference(), TPZVec< T >::size(), and TPZMHMeshControl::WhichSubdomain().
Referenced by CreateMultiPhysicsInterfaceElements(), and SetHybridize().
|
protectedvirtual |
group and condense the elements
Reimplemented from TPZMHMixedMeshControl.
Definition at line 686 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompMesh::CleanUpUnconnectedNodes(), TPZSubCompMesh::ComputeNodElCon(), TPZCompMesh::ComputeNodElCon(), TPZCompMeshTools::CreatedCondensedElements(), DebugStop, TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fMHMtoSubCMesh, GroupElements(), TPZCompMesh::InitializeBlock(), LOGPZ_DEBUG, substruct_tst14.test::numthreads, TPZSubCompMesh::Print(), and TPZSubCompMesh::SetAnalysisSkyline().
Referenced by SetHybridize().
|
protected |
group element H(div) elements with surrounding interface elements
Definition at line 719 of file TPZMHMixedHybridMeshControl.cpp.
References TPZElementGroup::AddElement(), TPZCompEl::BuildConnectList(), TPZCompMesh::ComputeNodElCon(), TPZGeoElSide::ConnectedCompElementList(), TPZCompEl::ConnectIndex(), DebugStop, TPZCompMesh::Dimension(), TPZGeoElSide::Dimension(), TPZGeoEl::Dimension(), TPZMultiphysicsElement::Element(), TPZGeoElSide::Element(), TPZCompMesh::Element(), TPZCompElSide::Element(), TPZCompEl::Index(), TPZMultiphysicsInterfaceElement::LeftElement(), TPZCompMesh::LoadReferences(), LOGPZ_DEBUG, TPZCompEl::NConnects(), TPZGeoEl::NCornerNodes(), TPZGeoElSide::Neighbour(), TPZCompMesh::NElements(), TPZInterpolatedElement::NSideConnects(), TPZGeoEl::NSides(), TPZCompEl::Reference(), TPZCompMesh::Reference(), TPZGeoEl::Reference(), TPZGeoMesh::ResetReference(), TPZMultiphysicsInterfaceElement::RightElement(), TPZInterpolatedElement::SideConnectLocId(), and TPZVec< T >::size().
Referenced by GroupandCondenseElements(), and SetHybridize().
|
protectedvirtual |
hybridize the flux elements - each flux element becomes 5 elements
hybridize the flux elements with the given material id - each flux element creates a pressure element
Reimplemented from TPZMHMixedMeshControl.
Definition at line 203 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompMesh::ExpandSolution(), TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fPressureFineMesh, and TPZMHMixedMeshControl::HybridizeSkeleton().
Referenced by BuildComputationalMesh(), and SetHybridize().
|
inline |
Definition at line 109 of file TPZMHMixedHybridMeshControl.h.
References AdjustBoundaryConditionsOfFractures(), CheckMeshConsistency(), CreateAxialFluxElement(), CreateInternalAxialFluxes(), CreateSkeletonAxialFluxes(), DebugStop, PrintFriendly(), and SplitFluxElementsAroundFractures().
|
virtual |
Insert the necessary H(div) material objects to create the flux mesh.
Reimplemented from TPZMHMixedMeshControl.
Definition at line 1354 of file TPZMHMixedHybridMeshControl.cpp.
References bc, TPZMaterial::CreateBC(), DebugStop, TPZGeoMesh::Dimension(), TPZMHMixedMeshControl::fFluxMesh, fFractureFlowDim1MatId, TPZMHMeshControl::fGMesh, fHDivWrapperMatId, fHomogeneousNeumannBcMatId, TPZCompMesh::FindMaterial(), TPZCompMesh::InsertMaterialObject(), TPZMHMixedMeshControl::InsertPeriferalHdivMaterialObjects(), and TPZCompMesh::MaterialVec().
Referenced by operator=().
|
virtual |
Insert Boundary condition objects that do not perform any actual computation.
Reimplemented from TPZMHMixedMeshControl.
Definition at line 1292 of file TPZMHMixedHybridMeshControl.cpp.
References TPZMaterial::CreateBC(), DebugStop, TPZGeoMesh::Dimension(), TPZMHMeshControl::fCMesh, fFractureFlowDim1MatId, TPZMHMeshControl::fGMesh, fHDivWrapperMatId, fHomogeneousNeumannBcMatId, TPZCompMesh::FindMaterial(), TPZMHMeshControl::fLagrangeMatIdLeft, TPZMHMeshControl::fLagrangeMatIdRight, TPZMHMeshControl::fMaterialIds, fPressureDim1MatId, fPressureDim2MatId, TPZMHMeshControl::fPressureSkeletonMatId, TPZMHMeshControl::fSecondSkeletonMatId, fSkeletonWithFlowPressureMatId, TPZCompMesh::InsertMaterialObject(), and TPZMHMixedMeshControl::InsertPeriferalMaterialObjects().
Referenced by BuildComputationalMesh(), and operator=().
|
virtual |
Insert the necessary pressure material objects to create the pressure mesh.
Reimplemented from TPZMHMixedMeshControl.
Definition at line 1388 of file TPZMHMixedHybridMeshControl.cpp.
References TPZGeoMesh::Dimension(), fFractureFlowDim1MatId, TPZMHMeshControl::fGMesh, fPressureDim1MatId, fPressureDim2MatId, TPZMHMeshControl::fPressureFineMesh, fSkeletonWithFlowMatId, fSkeletonWithFlowPressureMatId, TPZCompMesh::InsertMaterialObject(), TPZMHMixedMeshControl::InsertPeriferalPressureMaterialObjects(), and TPZMatLaplacian::SetDimension().
Referenced by BuildComputationalMesh(), and operator=().
|
inlinevirtual |
Return true if the material id is related to a skeleton.
Reimplemented from TPZMHMeshControl.
Definition at line 82 of file TPZMHMixedHybridMeshControl.h.
References TPZMHMeshControl::fSkeletonMatId, and fSkeletonWithFlowMatId.
|
protected |
verifies if a HDiv wrapper needs to be created for a given element/side
Definition at line 328 of file TPZMHMixedHybridMeshControl.cpp.
References DebugStop, TPZGeoElSide::Element(), TPZGeoElSide::Father2(), fFractureFlowDim1MatId, TPZMHMeshControl::fInternalWrapMatId, TPZGeoElSide::HasSubElement(), TPZGeoEl::MaterialId(), TPZGeoElSide::Neighbour(), TPZGeoEl::NSides(), nsub, TPZGeoEl::NSubElements(), TPZStack< T, NumExtAlloc >::Pop(), TPZStack< T, NumExtAlloc >::Push(), TPZVec< T >::size(), and TPZGeoEl::SubElement().
Referenced by CreateHDivWrappers(), SetHybridize(), and SplitFluxElementsAroundFractures().
|
inline |
Definition at line 48 of file TPZMHMixedHybridMeshControl.h.
References BuildComputationalMesh(), fHDivWrapperMatId, InsertPeriferalHdivMaterialObjects(), InsertPeriferalMaterialObjects(), InsertPeriferalPressureMaterialObjects(), and TPZMHMixedMeshControl::operator=().
|
virtual |
print the elements in a readable format
Reimplemented from TPZMHMixedMeshControl.
Definition at line 1685 of file TPZMHMixedHybridMeshControl.cpp.
References co, TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZMultiphysicsElement::Element(), TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fGMesh, TPZGeoNode::GetCoordinates(), TPZCompEl::Index(), TPZCompEl::NConnects(), TPZGeoEl::NCornerNodes(), TPZConnect::NElConnected(), TPZCompMesh::NElements(), TPZMultiphysicsElement::NMeshes(), TPZGeoEl::Node(), and TPZCompEl::Reference().
Referenced by BuildComputationalMesh(), and InsertFractureFlowMaterial().
|
inlinevirtual |
Set the hybridization to true.
Reimplemented from TPZMHMeshControl.
Definition at line 149 of file TPZMHMixedHybridMeshControl.h.
References ApplyNeighbourBoundaryCondition(), CreateHDivWrappers(), CreateLowerDimensionPressureElements(), CreatePressureInterfaces(), CreatePressureMHMMesh(), TPZMHMeshControl::fHybridize, FindConnectedElements(), GroupandCondenseElements(), GroupElements(), HybridizeSkeleton(), and NeedsHDivWrapper().
void TPZMHMixedHybridMeshControl::SplitFluxElementsAroundFractures | ( | ) |
split the fluxes between the flux elements adjacent to a fracture
Definition at line 367 of file TPZMHMixedHybridMeshControl.cpp.
References TPZCompMesh::AllocateNewConnect(), TPZCompEl::ConnectIndex(), TPZCompMesh::ConnectVec(), DebugStop, TPZConnect::DecrementElConnected(), TPZGeoMesh::Dimension(), TPZGeoMesh::Element(), TPZGeoElSide::Element(), TPZCompMesh::Element(), TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fInternalWrapMatId, substruct_tst15.test::first, TPZGeoEl::Index(), TPZCompEl::LoadElementReference(), TPZGeoEl::MaterialId(), TPZInterpolatedElement::MidSideConnect(), TPZInterpolatedElement::MidSideConnectLocId(), NeedsHDivWrapper(), TPZGeoElSide::Neighbour(), TPZConnect::NElConnected(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), TPZConnect::NShape(), TPZGeoEl::NSides(), TPZConnect::NState(), TPZConnect::Order(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZInterpolatedElement::SetConnectIndex(), TPZInterpolationSpace::SetSideOrient(), TPZMHMeshControl::SetSubdomain(), TPZGeoElSide::Side(), TPZGeoEl::SideDimension(), and TPZMHMeshControl::WhichSubdomain().
Referenced by CreateInternalFluxElements(), and InsertFractureFlowMaterial().
std::set<int> TPZMHMixedHybridMeshControl::fFractureFlowDim1MatId |
material id of the flow elements of dimension fDim-1
Definition at line 79 of file TPZMHMixedHybridMeshControl.h.
Referenced by ApplyNeighbourBoundaryCondition(), CreateInternalAxialFluxes(), CreatePressureInterfaces(), CreateSkeletonAxialFluxes(), InsertPeriferalHdivMaterialObjects(), InsertPeriferalMaterialObjects(), InsertPeriferalPressureMaterialObjects(), and NeedsHDivWrapper().
int TPZMHMixedHybridMeshControl::fHDivWrapperMatId |
material id of the wrapper elements at the end of H(div) elements
Definition at line 70 of file TPZMHMixedHybridMeshControl.h.
Referenced by ApplyNeighbourBoundaryCondition(), CheckMeshConsistency(), CreateAxialFluxElement(), CreateHDivWrappers(), FindConnectedElements(), InsertPeriferalHdivMaterialObjects(), InsertPeriferalMaterialObjects(), and operator=().
int TPZMHMixedHybridMeshControl::fHomogeneousNeumannBcMatId |
material id of zero flux boundary condition, used for fracture elements
Definition at line 88 of file TPZMHMixedHybridMeshControl.h.
Referenced by ApplyNeighbourBoundaryCondition(), InsertPeriferalHdivMaterialObjects(), and InsertPeriferalMaterialObjects().
int TPZMHMixedHybridMeshControl::fPressureDim1MatId |
material id of the pressure Lagrange multipliers of dimension fDim-1
Definition at line 73 of file TPZMHMixedHybridMeshControl.h.
Referenced by ApplyNeighbourBoundaryCondition(), CheckMeshConsistency(), CreateAxialFluxElement(), CreateLowerDimensionPressureElements(), CreateMultiPhysicsInterfaceElements(), CreatePressureInterfaces(), InsertPeriferalMaterialObjects(), and InsertPeriferalPressureMaterialObjects().
int TPZMHMixedHybridMeshControl::fPressureDim2MatId |
material id of the pressure Lagrange multipliers of dimension fDim-2
Definition at line 76 of file TPZMHMixedHybridMeshControl.h.
Referenced by CheckMeshConsistency(), CreateLowerDimensionPressureElements(), CreateMultiPhysicsInterfaceElements(), InsertPeriferalMaterialObjects(), and InsertPeriferalPressureMaterialObjects().
std::set<int> TPZMHMixedHybridMeshControl::fSkeletonWithFlowMatId |
material id of skeleton elements which have axial flow
Definition at line 91 of file TPZMHMixedHybridMeshControl.h.
Referenced by ApplyNeighbourBoundaryCondition(), BuildComputationalMesh(), CreateInternalAxialFluxes(), CreateSkeletonAxialFluxes(), InsertPeriferalPressureMaterialObjects(), and IsSkeletonMatid().
int TPZMHMixedHybridMeshControl::fSkeletonWithFlowPressureMatId |
material id of the pressure corresponding to the skeleton with axial flow
Definition at line 94 of file TPZMHMixedHybridMeshControl.h.
Referenced by ApplyNeighbourBoundaryCondition(), BuildComputationalMesh(), CreateAxialFluxElement(), CreateInternalAxialFluxes(), CreateLowerDimensionPressureElements(), CreateMultiPhysicsInterfaceElements(), CreateSkeletonAxialFluxes(), InsertPeriferalMaterialObjects(), and InsertPeriferalPressureMaterialObjects().