36 static LoggerPtr logger(Logger::getLogger(
"pz.mhmixedmeshcontrol"));
82 for (int64_t ic = 0; ic<nc; ic++) {
95 for (int64_t ic = 0; ic<nc; ic++) {
116 int typePressure = 0;
120 std::cout <<
"Peripheral material inserted twice " << __PRETTY_FUNCTION__ << std::endl;
173 std::ofstream out(
"Friendly.txt");
179 if (usersubstructure) {
187 for(int64_t el = 0; el<nel; el++)
193 std::stringstream sout;
194 sout <<
"submesh_" << el <<
".vtk";
195 std::ofstream file(sout.str());
208 cmeshHDiv->
SetName(
"FluxMesh");
215 std::ofstream out(
"FluxmeshBeforeSkeleton.txt");
223 for (int64_t el = 0; el < nel; el++) {
227 int side = gel->
NSides() - 1;
241 std::ofstream outmesh(
"MixedMeshControl_HDivMesh.txt");
243 std::ofstream outvtk(
"MixedMesh.vtk");
300 if(nskeletonconnects != 0){
309 cmeshPressure->
SetName(
"PressureMesh");
314 int meshdim = cmeshPressure->
Dimension();
316 std::set<int> matids;
319 if (mat && mat->
Dimension() == meshdim) {
328 std::ofstream out(
"PressureFineMesh.txt");
337 for (int64_t el = 0; el<nel; el++) {
350 for (int64_t ic=nskeletonconnects; ic<nc; ic++) {
351 cmeshPressure->
ConnectVec()[ic].SetLagrangeMultiplier(1);
355 int64_t nel = cmeshPressure->
NElements();
356 for (int64_t el=0; el<nel; el++)
367 if(fMaterialIds.find (gel->
MaterialId()) == fMaterialIds.end())
382 std::ofstream out(
"PressureFineMesh2.txt");
397 cmeshRotation->
SetName(
"RotationMesh");
402 int meshdim = cmeshRotation->
Dimension();
403 std::set<int> matids;
406 if (mat && mat->
Dimension() == meshdim) {
415 std::ofstream out(
"RotationsMesh.txt");
420 int64_t nel = cmeshRotation->
NElements();
421 for(int64_t i=0; i<nel; i++){
434 for (int64_t ic=0; ic<nc; ic++) {
435 cmeshRotation->
ConnectVec()[ic].SetLagrangeMultiplier(1);
439 for (int64_t el=0; el<nel; el++)
448 if(fMaterialIds.find (gel->
MaterialId()) == fMaterialIds.end())
541 std::ofstream out(
"PressureMesh_MultiPhis.txt");
542 cmeshes[1] ->
Print(out);
544 std::ofstream out2(
"FluxMesh_MultiPhis.txt");
545 cmeshes[0] ->
Print(out2);
556 std::cout<<
"Geometric mesh doesn't exist" << std::endl;
572 std::ofstream out2(
"gmesh.txt");
574 std::ofstream out3(
"HDivMesh.txt");
576 std::ofstream out4(
"PressureMesh.txt");
581 meshvector = cmeshes;
599 std::ofstream file(
"cmeshmphys.vtk");
601 std::ofstream out(
"cmeshmphys.txt");
602 MixedFluxPressureCmesh->
Print(out);
610 std::ofstream out(
"multiphysics.txt");
611 MixedFluxPressureCmesh->
Print(out);
621 bool KeepOneLagrangian =
true;
623 KeepOneLagrangian =
false;
625 typedef std::set<int64_t> TCompIndexes;
626 std::map<int64_t, TCompIndexes> ElementGroups;
632 for (int64_t el=0; el<nel; el++) {
638 ElementGroups[domain].insert(el);
640 if (ElementGroups.size() <= 10)
642 std::cout <<
"Number of element groups " << ElementGroups.size() << std::endl;
643 std::map<int64_t,TCompIndexes>::iterator it;
644 for (it=ElementGroups.begin(); it != ElementGroups.end(); it++) {
645 std::cout <<
"Group " << it->first <<
" group size " << it->second.size() << std::endl;
646 std::cout <<
" elements ";
647 std::set<int64_t>::iterator its;
648 for (its = it->second.begin(); its != it->second.end(); its++) {
651 std::cout << std::endl;
655 std::map<int64_t,int64_t> submeshindices;
657 std::cout <<
"After putting in substructures\n";
664 std::cout <<
"Finished substructuring\n";
674 out <<
"******************* GEOMETRIC MESH *****************\n";
682 out <<
"******************* FLUX MESH *****************\n";
690 out <<
"******************* PRESSURE MESH *****************\n";
698 out <<
"******************* COMPUTATIONAL MESH *****************\n";
705 out <<
"******************* LAGRANGE MULTIPLIER MESH *****************\n";
712 out <<
"******************* CONSTANTE PRESSURE MESH *****************\n";
730 out <<
"Geometric element indices of the coarse mesh ";
732 out << it->first <<
" " << it->second <<
" ";
737 out <<
"Skeleton element indices with associated left and right coarse element indices\n";
739 std::map<int64_t, std::pair<int64_t,int64_t> >::iterator it;
741 out <<
"skel index " << it->first <<
" Left Right indices " << it->second.first <<
" " << it->second.second << std::endl;
751 out <<
"Subdomain indices of the connects by mesh\n";
755 out <<
"Computational mesh pointer " << (
void *) cmesh << std::endl;
756 for (int64_t i=0; i<cvec.
size(); i++) {
760 out <<
"(" << i <<
"->" << cvec[i] <<
") ";
770 for (
int isub=0; isub <
nsub; isub++) {
792 std::map<int64_t, std::pair<int64_t, int64_t> >::iterator it;
803 if (it->first == it->second.second) {
809 int side = gel->
NSides()-1;
821 if (it->first == it->second.second) {
827 int side = gel->
NSides()-1;
842 if (it->second.first < it->second.second) {
853 TPZGeoElBC pressuregel(gelside,pressurematid);
857 int64_t indexpressure;
864 for (
int ic=0; ic<nc; ic++) {
871 fluxsecond.
Push(intel);
872 pressure.
Push(presel);
881 if (it->first == it->second.second) {
888 if (!cel || cel != fluxorig[count]) {
891 std::map<int64_t,std::list<TPZCompElSide> > connectedmap;
894 if (connectedmap.size() != 2) {
898 int64_t origdepindex = fluxorig[count]->ConnectIndex(0);
899 int64_t newdepindex = fluxsecond[count]->ConnectIndex(0);
900 std::list<TPZCompElSide> &updatelist = connectedmap[it->second.second];
901 for (std::list<TPZCompElSide>::iterator itlist = updatelist.begin(); itlist != updatelist.end(); itlist++)
924 int64_t numflux = fluxorig.
size();
925 for (
int iflux=0; iflux<numflux; iflux++) {
926 int64_t fluxgelindex = fluxorig[iflux]->Reference()->Index();
927 int fluxmat = fluxorig[iflux]->Reference()->MaterialId();
928 int pressmat = pressure[iflux]->Reference()->MaterialId();
929 int64_t pressuregelindex = pressure[iflux]->Reference()->Index();
930 fluxorig[iflux]->SetReference(pressuregelindex);
931 pressure[iflux]->SetReference(fluxgelindex);
932 SetAllMatid(fluxorig[iflux]->Reference(), fluxmat);
933 SetAllMatid(pressure[iflux]->Reference(), pressmat);
967 for (int64_t el = 0; el<nel; el++) {
1000 std::map<int64_t, std::pair<int64_t,int64_t> >::iterator it =
fInterfaces.begin();
1002 int64_t elindex = it->first;
1013 int Side = gel->
NSides()-1;
1018 if (elindex == it->second.second) {
1026 if (it->second.first < it->second.second) {
1046 std::ofstream out(
"FluxBeforeInterfaces.vtk");
1054 for (int64_t ic = 0; ic<nconnects; ic++) {
1057 std::cout <<
"Connect index " << ic <<
" Has dependency\n";
1065 int64_t elindex = it->first;
1068 std::map<int64_t,std::list<TPZCompElSide> > subels;
1073 if(logger->isDebugEnabled())
1075 std::stringstream sout;
1076 sout <<
"Interface elindex " << elindex <<
" left " << it->second.first <<
" right " << it->second.second << std::endl;
1077 sout <<
"Number of connected subdomains " << subels.size() << std::endl;
1078 for (std::map<int64_t,std::list<TPZCompElSide> >::iterator itlist = subels.begin(); itlist != subels.end(); itlist++)
1080 sout <<
" SUBDOMAIN first " << itlist->first <<
"\n";
1081 std::list<TPZCompElSide> &lst = itlist->second;
1082 for (std::list<TPZCompElSide>::iterator its = lst.begin(); its != lst.end(); its++)
1084 sout <<
" GeoElSide " << its->Reference() << std::endl;
1091 int side = gel->NSides()-1;
1096 for (std::map<int64_t,std::list<TPZCompElSide> >::iterator itlist = subels.begin(); itlist != subels.end(); itlist++) {
1097 std::list<TPZCompElSide> &lst = itlist->second;
1098 for (std::list<TPZCompElSide>::iterator its = lst.begin(); its != lst.end(); its++) {
1193 int64_t nel = MixedFluxPressureCmesh->
NElements();
1194 for (int64_t el=0; el<nel; el++) {
1208 for (int64_t el = 0; el<nel; el++) {
1224 while (neighbour != gelside) {
1231 if (neighbour == gelside) {
1237 neighbour = gelside.Neighbour();
1238 while (neighbour != gelside) {
1239 if (neighbour.Element()->MaterialId() == hdivmatid.first || neighbour.Element()->MaterialId() == hdivmatid.second) {
1240 celstack.
Push(neighbour.Reference());
1242 neighbour = neighbour.Neighbour();
1244 if (celstack.
size() == 1) {
1245 int matid = celstack[0].Element()->Reference()->MaterialId();
1250 if (celstack.
size() != 2) {
1251 std::cout <<
"Error found only material ids ";
1252 for (
int i=0; i<celstack.
size(); i++) {
1253 std::cout << celstack[i].Element()->Reference()->MaterialId() <<
" ";
1255 std::cout << std::endl;
1263 int64_t index1,index2;
1270 if(logger->isDebugEnabled())
1272 std::stringstream sout;
1273 sout <<
"Created an interface skeleton element index " << index1 <<
" between mphys " << celstack[0].Element()->
Index() <<
" and pressure mphyx " << celside.
Element()->
Index()
1275 sout <<
"Created an interface skeleton element index " << index2 <<
" between mphys " << celstack[1].Element()->Index() <<
" and pressure mphyx " << celside.
Element()->
Index();
1295 if(logger->isDebugEnabled())
1297 std::stringstream sout;
1298 subcmesh->
Print(sout);
1303 bool keeplagrange =
true;
1307 int preconditioned = 0;
1309 if(logger->isDebugEnabled())
1311 std::stringstream sout;
1312 subcmesh->
Print(sout);
1327 for (int64_t el=0; el<nel; el++) {
1353 std::set<int> matids;
1355 matids.insert(it.first);
1358 for (int64_t el = 0; el<nel; el++) {
1370 for (int64_t el=0; el<nel; el++) {
1382 for (int64_t el=0; el<nel; el++) {
1384 if (shouldcreate[el])
1389 if(shouldcreate[fat->
Index()] == 1)
1391 shouldcreate[fat->
Index()] = 0;
1398 for (int64_t el=0; el<nel; el++) {
1399 if (shouldcreate[el])
1401 gelindexes.
Push(el);
1405 if(logger->isDebugEnabled())
1407 std::stringstream sout;
1408 sout <<
"Geometric indices for which we will create multiphysics elements" << std::endl;
int64_t NElements() const
Number of computational elements allocated.
bool fLagrangeAveragePressure
flag to determine whether a lagrange multiplier is included to force zero average pressures in the su...
TPZGeoMesh * Reference() const
Returns a pointer to the geometrical mesh associated.
void SetAllCreateFunctionsDiscontinuous()
Create discontinuous approximation spaces.
void Print(std::ostream &out=std::cout)
Prints the structural information of the vector object to the output stream. This method will not p...
virtual void BuildComputationalMesh(bool usersubstructure)
Create all data structures for the computational mesh.
void CreateHDivMHMMesh()
Create the mesh of the flux approximation space.
TPZAutoPointer< TPZCompMesh > fCMeshLagrange
computational mesh to represent the distributed flux in each subdomain
void SetAllCreateFunctionsContinuous()
Implements computational element and a side. Computational Element.
Represents a set of shape functions associated with a computational element/side. Computational Eleme...
void SetName(const std::string &nm)
Set the mesh name.
TPZAutoPointer< TPZCompMesh > fCMesh
computational MHM mesh being built by this class
virtual void RestrainSide(int side, TPZInterpolatedElement *neighbour, int neighbourside)
Compute the shapefunction restraints which need to be applied to the shape functions on the side of t...
int MaterialId() const
Returns the material index of the element.
void BuildMultiPhysicsMesh()
build the multi physics mesh (not at the finest geometric mesh level
clarg::argBool bc("-bc", "binary checkpoints", false)
clarg::argInt nsub("-nsub", "number of substructs", 4)
int64_t NEquations()
This computes the number of equations associated with non-restrained nodes.
clarg::argInt dimension("-d", "Matrices dimension M x M", 1000)
TPZGeoElSide Reference() const
Reference to the geometric element.
int fSecondSkeletonMatId
material id associated with the skeleton elements
int fSkeletonMatId
material id associated with the skeleton elements
int64_t fGlobalSystemSize
number of equations when not condensing anything
virtual void HybridizeSkeleton(int skeletonmatid, int pressurematid)
virtual void InsertPeriferalPressureMaterialObjects()
Insert the necessary Pressure material objects to create the flux mesh.
virtual void Print(std::ostream &out=std::cout) const override
Prints the submesh information on the specified device/file out.
void SetLagrangeMultiplier(unsigned char mult)
Set the connect as a pressure connect or not.
int64_t WhichSubdomain(TPZCompEl *cel)
returns to which subdomain a given element beint64_ts
std::set< int > fMaterialIds
materials used for modeling the differential equation
Contains declaration of TPZInterpolationSpace class which implements the interface for interpolated c...
static void SetAllMatid(TPZGeoEl *gel, int matid)
int64_t NElements() const
Number of elements of the mesh.
bool fHybridize
flag to indicate whether we create a hybridized mesh
virtual int Dimension() const =0
Returns the integrable dimension of the material.
std::set< int > fMaterialBCIds
materials for boundary conditions
virtual int NStateVariables() const =0
Returns the number of state variables associated with the material.
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
int fpOrderInternal
interpolation order of the internal elements
virtual void CreateMultiPhysicsInterfaceElements(int dim)
Create the interfaces between the pressure elements of dimension dim.
int64_t NElements() const
Access method to query the number of elements of the vector.
TPZGeoElSide Neighbour() const
int fSkeletonWrapMatId
material index of the skeleton wrap
virtual int NSides() const =0
Returns the number of connectivities of the element.
std::map< TPZCompMesh *, TPZManVector< int64_t > > fConnectToSubDomainIdentifier
geometric index of the connects - subdomain where the connect will be internal
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object.
void CleanUp()
Delete all the dynamically allocated data structures.
void LoadReferences()
Map this grid in the geometric grid.
virtual void LoadElementReference()
Loads the geometric element reference.
void CreateDisconnectedElements(bool create)
Determine if the mesh will be created with disconnected elements After the mesh is created...
TPZConnect & SideConnect(int icon, int is)
Returns a pointer to the icon th connect object along side is.
virtual void CreatePressureMHMMesh()
Create the pressure mesh which is dual to the flux mesh.
void SetDefaultOrder(int order)
TPZManVector< int64_t > fGeoToMHMDomain
vector of coarse domain index associated with each geometric element
int fPressureSkeletonMatId
material id associated with the skeleton elements in a hybrid context
This abstract class defines the behaviour which each derived class needs to implement.
virtual TPZGeoEl * SubElement(int is) const =0
Returns a pointer to the subelement is.
Contains the TPZBndCond class which implements a boundary condition for TPZMaterial objects...
void SetAllCreateFunctionsHDiv(int meshdim)
Create an approximation space with HDiv elements.
TPZCompEl * CreateCompEl(TPZGeoEl *gel, int64_t &index)
Create a computational element based on the geometric element.
int64_t size() const
Returns the number of elements of the vector.
TPZCompEl * Element(int64_t iel)
int fLagrangeMatIdLeft
material id associated with the lagrange multiplier elements
TPZCreateApproximationSpace & ApproxSpace()
void SetNStateVariables(int nstate)
void Push(const T object)
Pushes a copy of the object on the stack.
This abstract class defines the behaviour which each derived class needs to implement.
virtual void CreateRotationMesh()
Create the rotation mesh to elasticity problem.
virtual void CheckMeshConsistency()
verify the consistency of the datastructure
virtual void Print(std::ostream &out=std::cout) const
Print the information of the grid to an ostream.
Structure to reference dependency.
static void TransferFromMeshes(TPZVec< TPZCompMesh *> &cmeshVec, TPZCompMesh *MFMesh)
Transfer information from a specific set of meshes for the current mesh multiphysics.
TPZAutoPointer< TPZCompMesh > fFluxMesh
computational mesh to contain the pressure elements
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
static void PrintCMeshVTK(TPZCompMesh *cmesh, std::ofstream &file, bool matColor=true)
Generate an output of all geometric elements that have a computational counterpart to VTK...
TPZGeoEl * Element(int64_t iel)
int64_t Index() const
Returns the index of the element within the element vector of the mesh.
void SetAllCreateFunctionsDiscontinuous()
Implements a group of computational elements as a mesh and an element. Computational Mesh...
#define DebugStop()
Returns a message to user put a breakpoint in.
Contains declaration of TPZInterfaceElement class which computes the contribution over an interface b...
virtual void ExpandSolution()
Adapt the solution vector to new block dimensions.
#define LOGPZ_DEBUG(A, B)
Define log for debug info.
virtual ~TPZMHMixedMeshControl()
This class defines the boundary condition for TPZMaterial objects.
void SetAllCreateFunctionsHDiv()
int Dimension() const
Returns the dimension of the simulation.
Contains the declaration of the TPZBuildmultiphysicsMesh class.
virtual void ComputeNodElCon()
Compute the number of elements connected to each connect object.
Contains the declaration of multiphysic interface class.
TPZMaterial * FindMaterial(int id)
Find the material with identity id.
TPZCompEl * Reference() const
Return a pointer to the element referenced by the geometric element.
virtual void AutoBuild(const std::set< int > *MaterialIDs)
Creates the computational elements, and the degree of freedom nodes.
virtual void GroupandCondenseElements()
group and condense the elements
int64_t Rows() const
Returns number of rows.
virtual void PrintFriendly(std::ostream &out)
print in a user friendly manner
int HasDependency() const
Returns whether exist dependecy information.
virtual void InsertPeriferalHdivMaterialObjects()
Insert the necessary H(div) material objects to create the flux mesh.
TPZAutoPointer< TPZCompMesh > fCMeshConstantPressure
computational mesh to represent the constant states
void CreateHDivPressureMHMMesh()
Create the multiphysics mesh.
TPZAutoPointer< TPZCompMesh > fPressureFineMesh
computational mesh to contain the pressure elements
std::map< int64_t, int64_t > fMHMtoSubCMesh
indices of the geometric elements which define the skeleton mesh and their corresponding subcmesh ind...
void HideTheElements()
put the elements in TPZSubCompMesh, group the elements and condense locally
void SetDimension(int dim)
int64_t NConnects() const
Number of connects allocated including free nodes.
TPZAdmChunkVector< TPZConnect > & ConnectVec()
Return a reference to the connect pointers vector.
int64_t Index() const
Returns element index of the mesh fELementVec list.
TPZAutoPointer< TPZGeoMesh > fGMesh
geometric mesh used to create the computational mesh
virtual int NConnects() const override=0
Returns the number of connect objects of the element.
static void PrintGMeshVTK(TPZGeoMesh *gmesh, std::ofstream &file, bool matColor=true)
Default constructor for graphical mesh with VTK format.
void SetDimension(int dim)
virtual TPZConnect & Connect(int i) const
Returns a pointer to the ith node.
void DeletePressureElements()
delete the pressure elements leaving the geometric mesh without pointing to the computational mesh ...
void SetDimModel(int dim)
Set de dimension of the domain of the problem.
TPZGeoEl * CreatedElement()
Recovers pointer to the geometric element created.
std::map< int,TPZMaterial *> & MaterialVec()
Returns a reference to the material pointers vector.
virtual int HasSubElement() const =0
Return 1 if the element has subelements.
Implements the interfaces for TPZCompElDisc, TPZInterfaceElement and TPZInterpolatedElement. Computational element.
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
Structure to help the construction of geometric elements along side of a given geometric element...
int fNState
number of state variables
class oriented towards the creation of multiscale hybrid meshes - YES
virtual TPZBndCond * CreateBC(TPZMaterial *reference, int id, int typ, TPZFMatrix< STATE > &val1, TPZFMatrix< STATE > &val2)
Creates an object TPZBndCond derived of TPZMaterial.
virtual void SetSideOrient(int side, int sideorient)
It set the normal orientation of the element by the side. Only side that has dimension equal to my di...
Contains declaration of TPZSubCompMesh class which implements a group of computational elements as a ...
void SetSubdomain(TPZCompEl *cel, int64_t subdomain)
associates the connects of an element with a subdomain
int InsertMaterialObject(TPZMaterial *mat)
Insert a material object in the datastructure.
static void SetTotalOrderShape(TPZCompMesh *cmesh)
Set total order shape functions for all Discontinuous elements in cmesh.
virtual void InsertPeriferalMaterialObjects()
Insert Boundary condition objects that do not perform any actual computation.
virtual void CleanUpUnconnectedNodes()
Delete the nodes which have no elements connected to them.
virtual void SetPreferredOrder(int order) override=0
Sets the preferred interpolation order along a side.
virtual int Dimension() const =0
Returns the dimension of the element.
TPZCompEl * Element() const
Gives a pointer to the reference computational element.
int Dimension()
Get Dimension.
TPZAutoPointer< TPZCompMesh > fRotationMesh
computational mesh to contain the rotation elements
int64_t fGlobalSystemWithLocalCondensationSize
number of equations considering local condensation
TPZGeoEl * Reference() const
Return a pointer to the corresponding geometric element if such exists, return 0 otherwise.
virtual int NSideConnects(int iside) const override=0
Returns the number of dof nodes along side iside.
This class implements a geometric mesh for the pz environment. Geometry.
This class implements a stack object. Utility.
void ResetReference()
Reset the element referenced by the geometric element to NULL.
Computes the contribution over an interface between two discontinuous elements. Computational Element...
virtual void ComputeNodElCon() override
Computes the number of elements connected to each connect object.
TPZDepend * FirstDepend()
Implements computational mesh. Computational Mesh.
TPZAdmChunkVector< TPZCompEl * > & ElementVec()
Returns a reference to the element pointers vector.
virtual void CreateInternalFluxElements()
void Print(std::ostream &out)
print the data structure
Contains declaration of TPZInterpolatedElement class which implements computational element of the in...
void SetMaterialId(int id)
Sets the material index of the element.
int Side() const
Returns the side index.
void BuildMultiphysicsSpace(TPZVec< int > &active_approx_spaces, TPZVec< TPZCompMesh * > &mesh_vector)
Set active approximation spaces.
virtual void CreateSkeleton()
will create the elements on the skeleton
void RemoveDepend(int64_t myindex, int64_t dependindex)
Remove dependency between connects if exist.
Contains the TPZMatLaplacian class.
int fpOrderSkeleton
interpolation order of the skeleton elements
void SetAnalysisSkyline(int numThreads, int preconditioned, TPZAutoPointer< TPZGuiInterface > guiInterface)
Condense the internal equations using a skyline symetric matrix the preconditioned argument indicates...
clarg::argInt porder("-porder", "polinomial order", 1)
This class implements a discontinuous element (for use with discontinuous Galerkin). Computational Element.
virtual void InsertPeriferalRotationMaterialObjects()
Insert the necessary Rotation material objects to create the flux mesh.
int64_t fNumeq
number of equations of the global system
void JoinSubdomains(TPZVec< TPZCompMesh *> &meshvec, TPZCompMesh *multiphysicsmesh)
Subdomains are identified by computational mesh, this method will join.
std::map< int64_t, std::pair< int64_t, int64_t > > fInterfaces
indices of the skeleton elements and their left/right partition indexes
void ResetReference()
Resets all load references in elements and nodes.
void SetNStateVariables(int nstate)
Defines the interface of a computational element. Computational Element.
void SetAllCreateFunctionsMultiphysicElem()
Contains the TPZVTKGeoMesh class which implements the graphical mesh to VTK environment to geometric ...
virtual int NSubElements() const =0
Returns the number of subelements of the element independent of the fact whether the element has alr...
TPZGeoEl * Father() const
Computes the normal vectors needed for forming HDiv vector valued shape functions.
static void SetSubMatid(TPZGeoEl *gel, int matid)
T * end() const
Returns a pointer to the last+1 element.
TPZFMatrix< STATE > & Solution()
Access the solution vector.
virtual void SetSideOrder(int side, int order)=0
Sets the interpolation order of side to order.
Implements computational element based on an interpolation space. Computational Element.
Non abstract class which implements full matrices with preallocated storage with (N+1) entries...
virtual void Print(std::ostream &out=std::cout) const
Prints mesh data.
TPZAdmChunkVector< TPZGeoEl * > & ElementVec()
Methods for handling pzlists.