NeoPZ
Public Member Functions | Private Member Functions | Private Attributes | List of all members
TPZBuildSBFem Class Reference

#include <TPZBuildSBFem.h>

Collaboration diagram for TPZBuildSBFem:
[legend]

Public Member Functions

 TPZBuildSBFem (TPZAutoPointer< TPZGeoMesh > gmesh, int skeletonmatid, std::map< int, int > &matidtranslation)
 simple constructor More...
 
void SetMatIdTranslation (const std::map< int, int > &matidtranslation)
 set the matid translation More...
 
void StandardConfiguration ()
 standard configuration means each element is a partition and a center node is created More...
 
void StandardConfiguration (TPZVec< int64_t > &elementindices)
 standard configuration means each element is a partition and a center node is created for the indicated elements More...
 
void Configure (TPZVec< int64_t > &scalingcenters)
 build element groups according to the id of the scaling centers More...
 
void AddPartition (TPZVec< int64_t > &elids, int64_t centernodeindex)
 add a partition manually More...
 
void SetPartitions (TPZVec< int64_t > &gelpartitionids, TPZVec< int64_t > &partition_nodeindices)
 define the partition index of each element and the ids of the scaling centers More...
 
void BuildComputationMesh (TPZCompMesh &cmesh)
 add the sbfem elements to the computational mesh, the material should exist in cmesh More...
 
void BuildComputationMesh (TPZCompMesh &cmesh, const std::set< int > &volmatids, const std::set< int > &boundmatids)
 add the sbfem elements to the computational mesh, the material should exist in cmesh More...
 
void BuildComputationalMeshFromSkeleton (TPZCompMesh &cmesh)
 build the computational elements of the skeleton and build the volume elements directly from the skeleton elements More...
 
void DivideSkeleton (int nref)
 Divide the skeleton elements. More...
 
void DivideSkeleton (int nref, const std::set< int > &volmatids)
 Divide the skeleton elements - elements of dimension dim-1 which are not in volmatids. More...
 

Private Member Functions

void AddSkeletonElements ()
 create the geometric skeleton elements More...
 
void CreateElementCenterNodes (TPZVec< int64_t > &elindices)
 create a geometric node at the center of each partition More...
 
void CreateVolumetricElements (TPZCompMesh &cmesh)
 create geometric volumetric elements More...
 
void CreateVolumetricElementsFromSkeleton (TPZCompMesh &cmesh)
 create geometric volumetric elements More...
 
void CreateVolumetricElements (TPZCompMesh &cmesh, const std::set< int > &matids)
 create geometric volumetric elements for all elements with the matid More...
 
void CreateElementGroups (TPZCompMesh &cmesh)
 put the sbfem volumetric elements in element groups More...
 

Private Attributes

TPZAutoPointer< TPZGeoMeshfGMesh
 geometric mesh More...
 
std::map< int, int > fMatIdTranslation
 The volumetric elements with Mat Id will spawn SBFemVolume elements with MatId. More...
 
int fSkeletonMatId
 Material Id associated with the skeleton elements. More...
 
TPZManVector< int64_t > fElementPartition
 partition to which each element belongs More...
 
TPZManVector< int64_t > fPartitionCenterNode
 center node id for each partition More...
 

Detailed Description

Definition at line 19 of file TPZBuildSBFem.h.

Constructor & Destructor Documentation

◆ TPZBuildSBFem()

TPZBuildSBFem::TPZBuildSBFem ( TPZAutoPointer< TPZGeoMesh gmesh,
int  skeletonmatid,
std::map< int, int > &  matidtranslation 
)
inline

simple constructor

Definition at line 39 of file TPZBuildSBFem.h.

References TPZVec< T >::Fill(), TPZGeoMesh::NElements(), and TPZVec< T >::resize().

Member Function Documentation

◆ AddPartition()

void TPZBuildSBFem::AddPartition ( TPZVec< int64_t > &  elids,
int64_t  centernodeindex 
)

◆ AddSkeletonElements()

void TPZBuildSBFem::AddSkeletonElements ( )
private

◆ BuildComputationalMeshFromSkeleton()

void TPZBuildSBFem::BuildComputationalMeshFromSkeleton ( TPZCompMesh cmesh)

build the computational elements of the skeleton and build the volume elements directly from the skeleton elements

add the sbfem elements to the computational mesh, the material should exist in cmesh

Definition at line 139 of file TPZBuildSBFem.cpp.

References TPZCompMesh::ApproxSpace(), TPZCompMesh::AutoBuild(), CreateElementGroups(), CreateVolumetricElementsFromSkeleton(), TPZCompMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoMesh::Element(), TPZGeoEl::MaterialId(), TPZGeoMesh::NElements(), TPZCompMesh::Reference(), and TPZCreateApproximationSpace::SetAllCreateFunctionsContinuous().

Referenced by PYBIND11_MODULE(), and SetPartitions().

◆ BuildComputationMesh() [1/2]

void TPZBuildSBFem::BuildComputationMesh ( TPZCompMesh cmesh)

◆ BuildComputationMesh() [2/2]

void TPZBuildSBFem::BuildComputationMesh ( TPZCompMesh cmesh,
const std::set< int > &  volmatids,
const std::set< int > &  boundmatids 
)

add the sbfem elements to the computational mesh, the material should exist in cmesh

Definition at line 164 of file TPZBuildSBFem.cpp.

References TPZCompMesh::ApproxSpace(), TPZCompMesh::AutoBuild(), CreateElementGroups(), CreateVolumetricElements(), and TPZCreateApproximationSpace::SetAllCreateFunctionsContinuous().

◆ Configure()

void TPZBuildSBFem::Configure ( TPZVec< int64_t > &  scalingcenters)

◆ CreateElementCenterNodes()

void TPZBuildSBFem::CreateElementCenterNodes ( TPZVec< int64_t > &  elindices)
private

◆ CreateElementGroups()

void TPZBuildSBFem::CreateElementGroups ( TPZCompMesh cmesh)
private

◆ CreateVolumetricElements() [1/2]

void TPZBuildSBFem::CreateVolumetricElements ( TPZCompMesh cmesh)
private

◆ CreateVolumetricElements() [2/2]

void TPZBuildSBFem::CreateVolumetricElements ( TPZCompMesh cmesh,
const std::set< int > &  matids 
)
private

◆ CreateVolumetricElementsFromSkeleton()

void TPZBuildSBFem::CreateVolumetricElementsFromSkeleton ( TPZCompMesh cmesh)
private

◆ DivideSkeleton() [1/2]

void TPZBuildSBFem::DivideSkeleton ( int  nref)

◆ DivideSkeleton() [2/2]

void TPZBuildSBFem::DivideSkeleton ( int  nref,
const std::set< int > &  volmatids 
)

Divide the skeleton elements - elements of dimension dim-1 which are not in volmatids.

Divide de skeleton elements.

skip the elements which do not have material translation

Definition at line 768 of file TPZBuildSBFem.cpp.

References TPZGeoMesh::Dimension(), TPZGeoEl::Dimension(), TPZGeoEl::Divide(), TPZGeoMesh::ElementVec(), fElementPartition, fGMesh, fMatIdTranslation, TPZGeoEl::HasSubElement(), TPZGeoEl::MaterialId(), TPZChunkVector< T, EXP >::NElements(), nsub, TPZManVector< T, NumExtAlloc >::Resize(), and TPZVec< T >::size().

◆ SetMatIdTranslation()

void TPZBuildSBFem::SetMatIdTranslation ( const std::map< int, int > &  matidtranslation)
inline

set the matid translation

Definition at line 46 of file TPZBuildSBFem.h.

References AddPartition(), Configure(), and StandardConfiguration().

◆ SetPartitions()

void TPZBuildSBFem::SetPartitions ( TPZVec< int64_t > &  gelpartitionids,
TPZVec< int64_t > &  partition_nodeindices 
)
inline

◆ StandardConfiguration() [1/2]

void TPZBuildSBFem::StandardConfiguration ( )

standard configuration means each element is a partition and a center node is created

Definition at line 23 of file TPZBuildSBFem.cpp.

References fGMesh, TPZGeoMesh::NElements(), and TPZVec< T >::size().

Referenced by SetMatIdTranslation().

◆ StandardConfiguration() [2/2]

void TPZBuildSBFem::StandardConfiguration ( TPZVec< int64_t > &  elementindices)

standard configuration means each element is a partition and a center node is created for the indicated elements

Definition at line 34 of file TPZBuildSBFem.cpp.

References AddSkeletonElements(), and CreateElementCenterNodes().

Member Data Documentation

◆ fElementPartition

TPZManVector<int64_t> TPZBuildSBFem::fElementPartition
private

◆ fGMesh

TPZAutoPointer<TPZGeoMesh> TPZBuildSBFem::fGMesh
private

◆ fMatIdTranslation

std::map<int,int> TPZBuildSBFem::fMatIdTranslation
private

The volumetric elements with Mat Id will spawn SBFemVolume elements with MatId.

Definition at line 25 of file TPZBuildSBFem.h.

Referenced by CreateVolumetricElements(), CreateVolumetricElementsFromSkeleton(), and DivideSkeleton().

◆ fPartitionCenterNode

TPZManVector<int64_t> TPZBuildSBFem::fPartitionCenterNode
private

◆ fSkeletonMatId

int TPZBuildSBFem::fSkeletonMatId
private

Material Id associated with the skeleton elements.

Definition at line 28 of file TPZBuildSBFem.h.

Referenced by AddSkeletonElements().


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