NeoPZ
|
class for creating TPZMHMM with Mixed Meshes More...
#include <TPZMHMixedMeshControl.h>
Public Member Functions | |
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 | 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 flux mesh. More... | |
virtual void | InsertPeriferalRotationMaterialObjects () |
Insert the necessary Rotation material objects to create the flux mesh. More... | |
virtual void | BuildComputationalMesh (bool usersubstructure) |
Create all data structures for the computational 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... | |
virtual void | PrintFriendly (std::ostream &out) |
print in a user friendly manner 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 void | SetHybridize (bool flag=true) |
Set the hybridization to true. 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... | |
virtual void | CheckMeshConsistency () |
verify the consistency of the datastructure More... | |
Protected Member Functions | |
void | CreateHDivMHMMesh () |
Create the mesh of the flux approximation space. More... | |
virtual void | CreatePressureMHMMesh () |
Create the pressure mesh which is dual to the flux mesh. More... | |
virtual void | CreateRotationMesh () |
Create the rotation mesh to elasticity problem. More... | |
virtual void | CreateInternalFluxElements () |
virtual void | CreateSkeleton () |
will create the elements on the skeleton 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) |
Create the interfaces between the pressure elements of dimension dim. 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... | |
virtual void | HybridizeSkeleton (int skeletonmatid, int pressurematid) |
void | OptimizeInterfaceElements () |
switch the elements pointed to by the interface by lower dimensional elements More... | |
virtual void | GroupandCondenseElements () |
group and condense the 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 | IsSkeletonMatid (int matid) |
Return true if the material id is related to a skeleton. 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... | |
Protected Attributes | |
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... | |
Additional Inherited Members | |
Public Types inherited from TPZMHMeshControl | |
enum | MProblemType { ENone, EScalar, EElasticity2D, EElasticity3D } |
Specify the type of differential equation. 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... | |
class for creating TPZMHMM with Mixed Meshes
Definition at line 17 of file TPZMHMixedMeshControl.h.
|
inline |
Definition at line 31 of file TPZMHMixedMeshControl.h.
References dimension.
TPZMHMixedMeshControl::TPZMHMixedMeshControl | ( | int | dimension | ) |
Definition at line 57 of file TPZMHMixedMeshControl.cpp.
References TPZGeoMesh::Dimension(), TPZMHMeshControl::fCMesh, fFluxMesh, TPZMHMeshControl::fGMesh, and TPZCompMesh::SetDimModel().
TPZMHMixedMeshControl::TPZMHMixedMeshControl | ( | TPZAutoPointer< TPZGeoMesh > | gmesh, |
TPZVec< int64_t > & | coarseindices | ||
) |
Definition at line 49 of file TPZMHMixedMeshControl.cpp.
References TPZGeoMesh::Dimension(), TPZMHMeshControl::fCMesh, fFluxMesh, and TPZCompMesh::SetDimModel().
TPZMHMixedMeshControl::TPZMHMixedMeshControl | ( | TPZAutoPointer< TPZGeoMesh > | gmesh | ) |
Definition at line 65 of file TPZMHMixedMeshControl.cpp.
References TPZGeoMesh::Dimension(), TPZMHMeshControl::fCMesh, fFluxMesh, and TPZCompMesh::SetDimModel().
|
inline |
Definition at line 44 of file TPZMHMixedMeshControl.h.
References fFluxMesh.
|
virtual |
Definition at line 73 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::CleanUp(), TPZCompMesh::ConnectVec(), DeletePressureElements(), TPZMHMeshControl::fCMesh, fFluxMesh, TPZMHMeshControl::fPressureFineMesh, TPZConnect::HasDependency(), TPZCompMesh::NConnects(), and TPZConnect::RemoveDepend().
Referenced by operator=().
|
virtual |
Create all data structures for the computational mesh.
Reimplemented from TPZMHMeshControl.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 140 of file TPZMHMixedMeshControl.cpp.
References TPZMHMeshControl::CheckMeshConsistency(), TPZCompMesh::ComputeNodElCon(), CreateHDivMHMMesh(), CreateHDivPressureMHMMesh(), CreatePressureMHMMesh(), CreateRotationMesh(), DebugStop, TPZCompMesh::Dimension(), TPZGeoMesh::Dimension(), TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, fFluxMesh, TPZMHMeshControl::fGlobalSystemSize, TPZMHMeshControl::fGlobalSystemWithLocalCondensationSize, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fNState, TPZMHMeshControl::fNumeq, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fpOrderSkeleton, fRotationMesh, HideTheElements(), InsertPeriferalMaterialObjects(), InsertPeriferalPressureMaterialObjects(), InsertPeriferalRotationMaterialObjects(), TPZCompMesh::NElements(), TPZCompMesh::NEquations(), TPZVTKGeoMesh::PrintCMeshVTK(), PrintFriendly(), TPZMatrix< TVar >::Rows(), and TPZCompMesh::Solution().
Referenced by operator=().
|
protected |
build the multi physics mesh (not at the finest geometric mesh level
Definition at line 1336 of file TPZMHMixedMeshControl.cpp.
References TPZMultiphysicsCompMesh::BuildMultiphysicsSpace(), DebugStop, TPZGeoMesh::Element(), TPZCompMesh::Element(), TPZVec< T >::end(), TPZGeoEl::Father(), TPZMHMeshControl::fCMesh, fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fNState, TPZMHMeshControl::fPressureFineMesh, fRotationMesh, TPZGeoEl::Index(), LOGPZ_DEBUG, TPZGeoEl::MaterialId(), TPZCompMesh::MaterialVec(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), TPZStack< T, NumExtAlloc >::Push(), TPZCompEl::Reference(), and TPZCompMesh::SetAllCreateFunctionsMultiphysicElem().
Referenced by CreateHDivPressureMHMMesh(), and PrintFriendly().
|
protected |
Create the mesh of the flux approximation space.
Definition at line 205 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::ComputeNodElCon(), CreateInternalFluxElements(), CreateSkeleton(), TPZCompMesh::Dimension(), TPZGeoEl::Dimension(), TPZCompMesh::ElementVec(), TPZCompMesh::ExpandSolution(), fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fHdivmaismais, TPZMHMeshControl::fpOrderInternal, InsertPeriferalHdivMaterialObjects(), TPZChunkVector< T, EXP >::NElements(), TPZGeoEl::NSides(), Print(), TPZCompMesh::Print(), TPZVTKGeoMesh::PrintGMeshVTK(), TPZCompEl::Reference(), TPZCompMesh::SetName(), TPZInterpolatedElement::SetPreferredOrder(), and TPZInterpolatedElement::SetSideOrder().
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh(), TPZMHMixedHybridMeshControl::BuildComputationalMesh(), BuildComputationalMesh(), and PrintFriendly().
|
protected |
Create the multiphysics mesh.
Definition at line 534 of file TPZMHMixedMeshControl.cpp.
References BuildMultiPhysicsMesh(), TPZCompMesh::CleanUpUnconnectedNodes(), TPZCompMesh::ComputeNodElCon(), CreateMultiPhysicsInterfaceElements(), DebugStop, TPZGeoMesh::Dimension(), TPZMHMeshControl::fCMesh, fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fNState, TPZMHMeshControl::fPressureFineMesh, fRotationMesh, TPZMHMeshControl::fSecondSkeletonMatId, TPZMHMeshControl::fSkeletonMatId, TPZMHMeshControl::JoinSubdomains(), TPZGeoMesh::Print(), TPZVec< T >::Print(), TPZCompMesh::Print(), TPZVTKGeoMesh::PrintCMeshVTK(), TPZGeoMesh::ResetReference(), TPZManVector< T, NumExtAlloc >::Resize(), TPZCompMesh::SetAllCreateFunctionsMultiphysicElem(), TPZCompMesh::SetDimModel(), and TPZBuildMultiphysicsMesh::TransferFromMeshes().
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh(), TPZMHMixedHybridMeshControl::BuildComputationalMesh(), BuildComputationalMesh(), and PrintFriendly().
|
protectedvirtual |
associate the connects with the subdomain for the flux mesh
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 944 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::ApproxSpace(), TPZCompMesh::CreateCompEl(), TPZGeoMesh::Dimension(), TPZGeoMesh::Element(), TPZCompMesh::Element(), TPZCompMesh::ExpandSolution(), TPZMHMeshControl::fConnectToSubDomainIdentifier, fFluxMesh, TPZMHMeshControl::fGeoToMHMDomain, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fMHMtoSubCMesh, TPZMHMeshControl::fpOrderInternal, TPZGeoEl::HasSubElement(), TPZCompMesh::LoadReferences(), TPZGeoMesh::NElements(), TPZGeoMesh::ResetReference(), TPZCreateApproximationSpace::SetAllCreateFunctionsHDiv(), TPZCompMesh::SetDefaultOrder(), TPZCompMesh::SetDimModel(), and TPZMHMeshControl::SetSubdomain().
Referenced by CreateHDivMHMMesh(), and PrintFriendly().
|
protectedvirtual |
Create the interfaces between the pressure elements of dimension dim.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 1175 of file TPZMHMixedMeshControl.cpp.
References TPZMHMeshControl::fPressureSkeletonMatId, TPZMHMeshControl::fSecondSkeletonMatId, and TPZMHMeshControl::fSkeletonMatId.
Referenced by CreateHDivPressureMHMMesh(), TPZMHMixedHybridMeshControl::CreateMultiPhysicsInterfaceElements(), and PrintFriendly().
|
protectedvirtual |
Create the multiphysics interface elements between elements of specified material id.
Create the interfaces between the pressure elements of dimension dim This method will create interface elements between the pressure element and
Definition at line 1185 of file TPZMHMixedMeshControl.cpp.
References TPZGeoElBC::CreatedElement(), DebugStop, TPZGeoEl::Dimension(), TPZCompMesh::Element(), TPZCompElSide::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fLagrangeMatIdLeft, TPZMHMeshControl::fLagrangeMatIdRight, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fSecondSkeletonMatId, TPZMHMeshControl::fSkeletonWrapMatId, TPZCompEl::Index(), TPZCompEl::LoadElementReference(), LOGPZ_DEBUG, TPZGeoEl::MaterialId(), TPZGeoElSide::Neighbour(), TPZCompMesh::NElements(), TPZGeoEl::NSides(), TPZStack< T, NumExtAlloc >::Push(), TPZCompEl::Reference(), TPZCompMesh::Reference(), TPZGeoEl::Reference(), TPZCompElSide::Reference(), TPZGeoMesh::ResetReference(), and TPZVec< T >::size().
|
protectedvirtual |
Create the pressure mesh which is dual to the flux mesh.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 293 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::ApproxSpace(), TPZCompMesh::AutoBuild(), TPZCompMesh::ConnectVec(), TPZCreateApproximationSpace::CreateDisconnectedElements(), DebugStop, TPZCompMesh::Dimension(), TPZMaterial::Dimension(), TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZCompMesh::Element(), TPZCompMesh::ExpandSolution(), TPZMHMeshControl::fGeoToMHMDomain, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fHdivmaismais, TPZCompMesh::FindMaterial(), TPZMHMeshControl::fMaterialIds, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fPressureFineMesh, TPZGeoEl::Index(), TPZGeoEl::MaterialId(), TPZCompMesh::NConnects(), TPZGeoMesh::NElements(), TPZCompMesh::NElements(), porder, TPZCompMesh::Print(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZCompMesh::SetAllCreateFunctionsDiscontinuous(), TPZCompMesh::SetDefaultOrder(), TPZCompMesh::SetDimModel(), TPZCompMesh::SetName(), and TPZMHMeshControl::SetSubdomain().
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh(), BuildComputationalMesh(), TPZMHMixedHybridMeshControl::CreatePressureMHMMesh(), and PrintFriendly().
|
protectedvirtual |
Create the rotation mesh to elasticity problem.
Definition at line 390 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::ApproxSpace(), TPZCompMesh::AutoBuild(), TPZCompMesh::ConnectVec(), DebugStop, TPZCompMesh::Dimension(), TPZMaterial::Dimension(), TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZCompMesh::Element(), TPZCompMesh::ElementVec(), TPZCompMesh::ExpandSolution(), TPZMHMeshControl::fGeoToMHMDomain, TPZMHMeshControl::fGMesh, TPZCompMesh::FindMaterial(), TPZMHMeshControl::fMaterialIds, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fPressureFineMesh, fRotationMesh, TPZGeoEl::Index(), TPZGeoEl::MaterialId(), TPZCompMesh::NConnects(), TPZCompMesh::NElements(), porder, TPZCompMesh::Print(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZCreateApproximationSpace::SetAllCreateFunctionsDiscontinuous(), TPZCompMesh::SetDefaultOrder(), TPZCompMesh::SetDimModel(), TPZCompElDisc::SetFalseUseQsiEta(), TPZCompMesh::SetName(), TPZMHMeshControl::SetSubdomain(), and TPZCompElDisc::SetTotalOrderShape().
Referenced by BuildComputationalMesh(), and PrintFriendly().
|
protectedvirtual |
will create the elements on the skeleton
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 988 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::ApproxSpace(), TPZMHMeshControl::ConnectedElements(), TPZCompMesh::ConnectVec(), TPZCompMesh::CreateCompEl(), DebugStop, TPZCompMesh::Dimension(), TPZGeoMesh::ElementVec(), TPZCompMesh::ElementVec(), TPZCompMesh::ExpandSolution(), fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fInterfaces, TPZMHMeshControl::fpOrderSkeleton, TPZConnect::HasDependency(), TPZCompMesh::LoadReferences(), LOGPZ_DEBUG, TPZCompMesh::NConnects(), TPZGeoEl::NSides(), TPZVTKGeoMesh::PrintCMeshVTK(), TPZCompEl::Reference(), TPZGeoMesh::ResetReference(), TPZGeoEl::ResetReference(), TPZInterpolatedElement::RestrainSide(), TPZCreateApproximationSpace::SetAllCreateFunctionsHDiv(), TPZCompMesh::SetDefaultOrder(), TPZCompMesh::SetDimModel(), TPZInterpolationSpace::SetSideOrient(), and TPZMHMeshControl::SetSubdomain().
Referenced by CreateHDivMHMMesh(), TPZMHMixedHybridMeshControl::CreateSkeleton(), and PrintFriendly().
|
protected |
delete the pressure elements leaving the geometric mesh without pointing to the computational mesh
Definition at line 1323 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::Element(), TPZMHMeshControl::fGMesh, TPZMHMeshControl::fPressureFineMesh, TPZCompMesh::NElements(), and TPZGeoMesh::ResetReference().
Referenced by PrintFriendly(), and ~TPZMHMixedMeshControl().
|
inline |
Definition at line 72 of file TPZMHMixedMeshControl.h.
References fFluxMesh.
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh().
|
inline |
Definition at line 99 of file TPZMHMixedMeshControl.h.
References fFluxMesh, TPZMHMeshControl::fPressureFineMesh, and Print().
|
inline |
Put the pointers to the meshes in a vector.
Definition at line 92 of file TPZMHMixedMeshControl.h.
References TPZMHMeshControl::fPressureFineMesh, and TPZVec< T >::Resize().
|
protectedvirtual |
group and condense the elements
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 1283 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::CleanUpUnconnectedNodes(), TPZSubCompMesh::ComputeNodElCon(), TPZCompMeshTools::CreatedCondensedElements(), DebugStop, TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fMHMtoSubCMesh, TPZCompMeshTools::GroupElements(), LOGPZ_DEBUG, substruct_tst14.test::numthreads, TPZSubCompMesh::Print(), and TPZSubCompMesh::SetAnalysisSkyline().
Referenced by TPZMHMixedMeshChannelControl::HideTheElements(), HideTheElements(), and PrintFriendly().
|
protected |
put the elements in TPZSubCompMesh, group the elements and condense locally
Definition at line 619 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::CleanUpUnconnectedNodes(), TPZCompMesh::ComputeNodElCon(), TPZGeoMesh::Dimension(), TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fHybridize, TPZMHMeshControl::fMHMtoSubCMesh, GroupandCondenseElements(), TPZGeoEl::Index(), TPZCompMesh::LoadReferences(), TPZCompMesh::NElements(), TPZCompMeshTools::PutinSubmeshes(), TPZCompEl::Reference(), TPZCompMesh::Reference(), TPZGeoMesh::ResetReference(), and TPZMHMeshControl::WhichSubdomain().
Referenced by TPZMHMixedHybridMeshControl::BuildComputationalMesh(), BuildComputationalMesh(), and PrintFriendly().
|
inlinevirtual |
Set the hybridization to true.
Definition at line 86 of file TPZMHMixedMeshControl.h.
References DebugStop.
|
protectedvirtual |
hybridize the flux elements with the given material id - each flux element creates a pressure element
Reimplemented from TPZMHMeshControl.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 787 of file TPZMHMixedMeshControl.cpp.
References TPZCompEl::Connect(), TPZMHMeshControl::ConnectedElements(), TPZCompMesh::CreateCompEl(), TPZGeoElBC::CreatedElement(), DebugStop, TPZGeoMesh::Element(), TPZCompMesh::Element(), TPZCompElSide::Element(), TPZCompMesh::ExpandSolution(), TPZConnect::TPZDepend::fDepConnectIndex, fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fInterfaces, TPZConnect::FirstDepend(), TPZMHMeshControl::fpOrderSkeleton, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fSecondSkeletonMatId, TPZCompMesh::LoadReferences(), TPZGeoEl::MaterialId(), TPZInterpolatedElement::NConnects(), TPZInterpolatedElement::NSideConnects(), TPZGeoEl::NSides(), TPZStack< T, NumExtAlloc >::Push(), TPZGeoEl::Reference(), TPZGeoMesh::ResetReference(), TPZGeoEl::ResetReference(), TPZCompMesh::SetAllCreateFunctionsContinuous(), TPZCompMesh::SetAllCreateFunctionsHDiv(), SetAllMatid(), TPZCompMesh::SetDefaultOrder(), TPZConnect::SetLagrangeMultiplier(), TPZInterpolationSpace::SetSideOrient(), TPZMHMeshControl::SetSubdomain(), TPZCompElSide::Side(), TPZInterpolatedElement::SideConnect(), and TPZVec< T >::size().
Referenced by TPZMHMixedHybridMeshControl::BuildComputationalMesh(), TPZMHMixedHybridMeshControl::HybridizeSkeleton(), and PrintFriendly().
|
virtual |
Insert the necessary H(div) material objects to create the flux mesh.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 251 of file TPZMHMixedMeshControl.cpp.
References TPZCompMesh::ApproxSpace(), bc, TPZMaterial::CreateBC(), DebugStop, TPZGeoMesh::Dimension(), fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fMaterialBCIds, TPZMHMeshControl::fMaterialIds, TPZMHMeshControl::fNState, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fSecondSkeletonMatId, TPZMHMeshControl::fSkeletonMatId, TPZCompMesh::InsertMaterialObject(), TPZCompMesh::LoadReferences(), TPZGeoMesh::ResetReference(), TPZCreateApproximationSpace::SetAllCreateFunctionsHDiv(), TPZCompMesh::SetDefaultOrder(), TPZVecL2::SetDimension(), TPZNullMaterial::SetDimension(), TPZCompMesh::SetDimModel(), TPZVecL2::SetNStateVariables(), and TPZNullMaterial::SetNStateVariables().
Referenced by CreateHDivMHMMesh(), TPZMHMixedHybridMeshControl::InsertPeriferalHdivMaterialObjects(), and operator=().
|
virtual |
Insert Boundary condition objects that do not perform any actual computation.
Reimplemented from TPZMHMeshControl.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 107 of file TPZMHMixedMeshControl.cpp.
References DebugStop, TPZMaterial::Dimension(), TPZMHMeshControl::fCMesh, TPZCompMesh::FindMaterial(), TPZMHMeshControl::fMaterialIds, TPZMHMeshControl::fSkeletonMatId, TPZCompMesh::InsertMaterialObject(), TPZCompMesh::MaterialVec(), TPZMaterial::NStateVariables(), TPZNullMaterial::SetDimension(), and TPZNullMaterial::SetNStateVariables().
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh(), BuildComputationalMesh(), TPZMHMixedHybridMeshControl::InsertPeriferalMaterialObjects(), and operator=().
|
virtual |
Insert the necessary Pressure material objects to create the flux mesh.
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 466 of file TPZMHMixedMeshControl.cpp.
References DebugStop, TPZGeoMesh::Dimension(), TPZMHMeshControl::fGMesh, TPZCompMesh::FindMaterial(), TPZMHMeshControl::fMaterialIds, TPZMHMeshControl::fNState, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fPressureSkeletonMatId, TPZCompMesh::InsertMaterialObject(), TPZCompMesh::MaterialVec(), TPZNullMaterial::SetDimension(), and TPZNullMaterial::SetNStateVariables().
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh(), BuildComputationalMesh(), TPZMHMixedHybridMeshControl::InsertPeriferalPressureMaterialObjects(), and operator=().
|
virtual |
Insert the necessary Rotation material objects to create the flux mesh.
Definition at line 504 of file TPZMHMixedMeshControl.cpp.
References DebugStop, TPZGeoMesh::Dimension(), TPZMHMeshControl::fGMesh, TPZMHMeshControl::fMaterialIds, TPZMHMeshControl::fNState, fRotationMesh, TPZCompMesh::InsertMaterialObject(), TPZCompMesh::MaterialVec(), TPZNullMaterial::SetDimension(), and TPZNullMaterial::SetNStateVariables().
Referenced by BuildComputationalMesh(), and operator=().
|
inline |
Definition at line 49 of file TPZMHMixedMeshControl.h.
References BuildComputationalMesh(), fFluxMesh, InsertPeriferalHdivMaterialObjects(), InsertPeriferalMaterialObjects(), InsertPeriferalPressureMaterialObjects(), InsertPeriferalRotationMaterialObjects(), TPZMHMeshControl::operator=(), and ~TPZMHMixedMeshControl().
Referenced by TPZMHMixedHybridMeshControl::operator=(), and TPZMHMixedMeshChannelControl::operator=().
|
protected |
switch the elements pointed to by the interface by lower dimensional elements
Referenced by PrintFriendly().
void TPZMHMixedMeshControl::Print | ( | std::ostream & | out | ) |
print the data structure
geometric mesh used to create the computational mesh
computational mesh to contain the pressure elements
computational mesh to contain the pressure elements
computational MHM mesh being built by this class
computational mesh to represent the constant states
computational mesh to represent the constant states
material id associated with the skeleton elements
material id associated with the lagrange multiplier elements
interpolation order of the internal elements
interpolation order of the skeleton elements
indices of the geometric elements which define the skeleton mesh
indices of the skeleton elements and their left/right elements of the skeleton mesh
flag to determine whether a lagrange multiplier is included to force zero average pressures in the subdomains
when imposing average pressure to be zero, a multiphysics mesh is created
subdonain indices of the connects
Definition at line 668 of file TPZMHMixedMeshControl.cpp.
References TPZMHMeshControl::fCMesh, TPZMHMeshControl::fCMeshConstantPressure, TPZMHMeshControl::fCMeshLagrange, TPZMHMeshControl::fConnectToSubDomainIdentifier, fFluxMesh, TPZMHMeshControl::fGMesh, TPZMHMeshControl::fInterfaces, TPZMHMeshControl::fLagrangeAveragePressure, TPZMHMeshControl::fLagrangeMatIdLeft, TPZMHMeshControl::fLagrangeMatIdRight, TPZMHMeshControl::fMHMtoSubCMesh, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fpOrderSkeleton, TPZMHMeshControl::fPressureFineMesh, TPZMHMeshControl::fSkeletonMatId, TPZGeoMesh::Print(), TPZCompMesh::Print(), and TPZVec< T >::size().
Referenced by CreateHDivMHMMesh(), and GetMeshes().
|
inlinevirtual |
print in a user friendly manner
Reimplemented in TPZMHMixedHybridMeshControl.
Definition at line 112 of file TPZMHMixedMeshControl.h.
References BuildMultiPhysicsMesh(), CreateHDivMHMMesh(), CreateHDivPressureMHMMesh(), CreateInternalFluxElements(), CreateMultiPhysicsInterfaceElements(), CreatePressureMHMMesh(), CreateRotationMesh(), CreateSkeleton(), DeletePressureElements(), GroupandCondenseElements(), HideTheElements(), HybridizeSkeleton(), and OptimizeInterfaceElements().
Referenced by TPZMHMixedMeshChannelControl::BuildComputationalMesh(), and BuildComputationalMesh().
|
inline |
Set the flag for creating Lagrange Dofs for the average pressure.
Definition at line 78 of file TPZMHMixedMeshControl.h.
References DebugStop.
|
protected |
computational mesh to contain the pressure elements
Definition at line 23 of file TPZMHMixedMeshControl.h.
Referenced by TPZMHMixedHybridMeshControl::AdjustBoundaryConditionsOfFractures(), TPZMHMixedHybridMeshControl::ApplyNeighbourBoundaryCondition(), TPZMHMixedMeshChannelControl::BuildComputationalMesh(), TPZMHMixedHybridMeshControl::BuildComputationalMesh(), BuildComputationalMesh(), BuildMultiPhysicsMesh(), TPZMHMixedHybridMeshControl::CreateAxialFluxElement(), CreateHDivMHMMesh(), CreateHDivPressureMHMMesh(), TPZMHMixedHybridMeshControl::CreateHDivWrappers(), TPZMHMixedHybridMeshControl::CreateInternalFluxElements(), CreateInternalFluxElements(), TPZMHMixedHybridMeshControl::CreatePressureInterfaces(), CreateSkeleton(), FluxMesh(), GetMeshes(), HybridizeSkeleton(), TPZMHMixedHybridMeshControl::HybridizeSkeleton(), TPZMHMixedHybridMeshControl::InsertPeriferalHdivMaterialObjects(), InsertPeriferalHdivMaterialObjects(), TPZMHMixedMeshChannelControl::operator=(), operator=(), Print(), TPZMHMixedHybridMeshControl::SplitFluxElementsAroundFractures(), TPZMHMixedMeshChannelControl::TPZMHMixedMeshChannelControl(), TPZMHMixedMeshControl(), and ~TPZMHMixedMeshControl().
|
protected |
computational mesh to contain the rotation elements
Definition at line 26 of file TPZMHMixedMeshControl.h.
Referenced by BuildComputationalMesh(), BuildMultiPhysicsMesh(), CreateHDivPressureMHMMesh(), CreateRotationMesh(), and InsertPeriferalRotationMaterialObjects().