NeoPZ
|
class for creating TPZMHMM with Mixed Meshes More...
#include <TPZMHMixedMeshChannelControl.h>
Public Member Functions | |
TPZMHMixedMeshChannelControl () | |
TPZMHMixedMeshChannelControl (int dimension) | |
TPZMHMixedMeshChannelControl (TPZAutoPointer< TPZGeoMesh > gmesh, TPZVec< int64_t > &coarseindices) | |
TPZMHMixedMeshChannelControl (TPZAutoPointer< TPZGeoMesh > gmesh) | |
TPZMHMixedMeshChannelControl (const TPZMHMixedMeshChannelControl ©) | |
TPZMHMixedMeshChannelControl & | operator= (const TPZMHMixedMeshChannelControl &cp) |
void | BuildComputationalMesh (bool usersubstructure, bool OpenChannel, std::map< int, std::pair< TPZGeoElSide, TPZGeoElSide >>) |
void | HideTheElements () |
int64_t | WhichSubdomain (TPZCompEl *cel) |
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 | 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... | |
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... | |
Protected Member Functions inherited from TPZMHMixedMeshControl | |
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 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 16 of file TPZMHMixedMeshChannelControl.h.
|
inline |
Definition at line 22 of file TPZMHMixedMeshChannelControl.h.
|
inline |
Definition at line 27 of file TPZMHMixedMeshChannelControl.h.
|
inline |
Definition at line 32 of file TPZMHMixedMeshChannelControl.h.
|
inline |
Definition at line 36 of file TPZMHMixedMeshChannelControl.h.
|
inline |
Definition at line 42 of file TPZMHMixedMeshChannelControl.h.
References TPZMHMixedMeshControl::fFluxMesh.
void TPZMHMixedMeshChannelControl::BuildComputationalMesh | ( | bool | usersubstructure, |
bool | OpenChannel, | ||
std::map< int, std::pair< TPZGeoElSide, TPZGeoElSide >> | oppen_channel | ||
) |
Definition at line 35 of file TPZMHMixedMeshChannelControl.cpp.
References TPZMHMeshControl::CheckMeshConsistency(), TPZCompMesh::CleanUpUnconnectedNodes(), TPZCompMesh::ComputeNodElCon(), TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), TPZMHMixedMeshControl::CreateHDivMHMMesh(), TPZMHMixedMeshControl::CreateHDivPressureMHMMesh(), TPZMHMixedMeshControl::CreatePressureMHMMesh(), DebugStop, TPZCompMesh::Dimension(), TPZGeoMesh::Dimension(), TPZCompMesh::Element(), TPZCompMesh::ExpandSolution(), TPZMHMeshControl::fCMesh, TPZMHMixedMeshControl::fFluxMesh, TPZMHMeshControl::fGlobalSystemSize, TPZMHMeshControl::fGlobalSystemWithLocalCondensationSize, TPZMHMeshControl::fGMesh, TPZMHMixedMeshControl::FluxMesh(), TPZMHMeshControl::fNumeq, TPZMHMeshControl::fpOrderInternal, TPZMHMeshControl::fpOrderSkeleton, HideTheElements(), TPZCompEl::Index(), TPZMHMixedMeshControl::InsertPeriferalMaterialObjects(), TPZMHMixedMeshControl::InsertPeriferalPressureMaterialObjects(), TPZCompMesh::LoadReferences(), TPZCompMesh::NElements(), TPZCompMesh::NEquations(), TPZVTKGeoMesh::PrintCMeshVTK(), TPZMHMixedMeshControl::PrintFriendly(), TPZCompEl::Reference(), TPZCompMesh::Reference(), TPZConnect::RemoveDepend(), TPZMatrix< TVar >::Rows(), TPZCompEl::SetConnectIndex(), and TPZCompMesh::Solution().
Referenced by operator=().
void TPZMHMixedMeshChannelControl::HideTheElements | ( | ) |
Definition at line 128 of file TPZMHMixedMeshChannelControl.cpp.
References TPZCompMesh::CleanUpUnconnectedNodes(), TPZCompMesh::ComputeNodElCon(), TPZGeoMesh::Dimension(), TPZCompMesh::Element(), TPZMHMeshControl::fCMesh, TPZMHMeshControl::fHybridize, TPZMHMeshControl::fMHMtoSubCMesh, TPZMHMixedMeshControl::GroupandCondenseElements(), TPZGeoEl::Index(), TPZCompMesh::LoadReferences(), TPZCompMesh::NElements(), TPZCompMeshTools::PutinSubmeshes(), TPZCompEl::Reference(), TPZCompMesh::Reference(), TPZGeoMesh::ResetReference(), and WhichSubdomain().
Referenced by BuildComputationalMesh(), and operator=().
|
inline |
Definition at line 48 of file TPZMHMixedMeshChannelControl.h.
References BuildComputationalMesh(), TPZMHMixedMeshControl::fFluxMesh, HideTheElements(), TPZMHMixedMeshControl::operator=(), and WhichSubdomain().
int64_t TPZMHMixedMeshChannelControl::WhichSubdomain | ( | TPZCompEl * | cel | ) |
Definition at line 176 of file TPZMHMixedMeshChannelControl.cpp.
References TPZCompEl::ConnectIndex(), TPZMHMeshControl::fConnectToSubDomainIdentifier, TPZCompEl::Mesh(), and TPZCompEl::NConnects().
Referenced by HideTheElements(), and operator=().