41 static LoggerPtr logger(Logger::getLogger(
"substruct.gensubstruct"));
45 fDimension(dimension),
46 fNumLevels(numlevels),fSubstructLevel(substructlevel)
71 std::cout <<
"Generating mesh\n";
94 gmesh->
NodeVec()[ic].Initialize(noco,*gmesh);
123 std::cout <<
"Uniform refine "; std::cout.flush();
125 std::cout <<
"AutoBuild "; std::cout.flush();
131 std::stringstream str;
148 std::cout << il <<
' '; std::cout.flush();
152 for(iel=0; iel<nel; iel++)
165 for(is=0; is<
nsub; is++)
167 subel[is]->SetMaterialId(1+is%nk);
176 for(is=0; is<
nsub; is++)
178 subel[is]->SetMaterialId(1+(rand()%nk));
195 for(iel=0; iel<nel; iel++)
204 gelside.HigherLevelCompElementList2(subels,0,0);
211 subels.
Push(celside);
221 for(sub=0; sub<nelstack; sub++)
223 if(subels[sub].Reference().Dimension() ==
fDimension)
241 for(iel=0; iel<nel; iel++)
254 for(iel=0; iel<nel; iel++)
259 if(!submesh)
continue;
262 for(ic=0; ic<nc; ic++)
278 std::cout <<
"Making Internal";
282 std::cout <<
"Make all Internal \n";
285 for(iel=0; iel<nel; iel++)
290 if(!submesh)
continue;
291 std::cout <<
'-'; std::cout.flush();
294 std::cout <<
" == Finished\n";
312 int nel = elementgraphindex.
NElements()-1;
315 std::cout <<
"Convert Graph ";
321 std::cout <<
"AnalyseGraph ";
327 std::stringstream str;
335 for(in=0; in<nnodes; in++)
337 if(nodeset.
Levels()[in] == maxlev)
344 for(ieq=0; ieq<size; ieq++)
355 for(in=0; in<nindep; in++)
364 for(ieq=0; ieq<size; ieq++)
374 std::stringstream str;
375 str <<
"number of corner indices " <<
fCornerEqs.size() << std::endl;
376 str <<
" corner connect indices ";
377 std::set<int>::iterator it;
403 assembly->fFineEqs.Resize(nsub);
404 assembly->fCoarseEqs.Resize(nsub);
406 std::cout <<
"Computing the system of equations for each substructure\n";
407 for(isub=0; isub<
nsub; isub++)
432 substruct->fNEquations = neq;
435 std::map<int,int> globinv;
440 int next = substruct->fGlobalEqs.NElements();
441 assembly->fFineEqs[isub].Resize(next);
443 for(ieq=0; ieq<next; ieq++)
445 assembly->fFineEqs[isub][ieq] = substruct->fGlobalEqs[ieq].second;
454 substruct->fC.Redim(substruct->fCoarseNodes.NElements(),neq);
455 for(ieq = 0; ieq<substruct->fCoarseNodes.NElements(); ieq++)
457 substruct->fC(ieq,substruct->fCoarseNodes[ieq]) = 1.;
459 int ncoarse = substruct->fCoarseIndex.NElements();
460 assembly->fCoarseEqs[isub].Resize(ncoarse);
461 for(ieq=0; ieq<ncoarse; ieq++)
463 assembly->fCoarseEqs[isub][ieq] = substruct->fCoarseIndex[ieq];
475 std::stringstream sout;
478 sout <<
"Substructure for submesh " << isub << std::endl;
479 substruct->Print(sout);
485 std::cout << std::endl;
501 assembly->fFineEqs.Resize(nsub);
502 assembly->fCoarseEqs.Resize(nsub);
504 std::cout <<
"Computing the system of equations for each substructure\n";
505 for(isub=0; isub<
nsub; isub++)
521 substruct->fNEquations = neq;
524 std::map<int,int> globinv;
531 substruct->fNumExternalEquations = next;
532 assembly->fFineEqs[isub].Resize(next);
534 for(ieq=0; ieq<next; ieq++)
536 assembly->fFineEqs[isub][ieq] = globaleqs[ieq].second;
541 typedef std::pair<ENumbering,ENumbering> Numberingpair;
542 ENumbering tsub,text,tint;
547 TPZVec<int> &toexternal = substruct->fPermutationsScatter[Numberingpair(tsub,text)];
548 TPZVec<int> &fromexternal = substruct->fPermutationsScatter[Numberingpair(text,tsub)];
549 toexternal.
Resize(neq,-1);
550 fromexternal.
Resize(neq,-1);
553 for(ieq=0; ieq<nel; ieq++)
555 toexternal[globaleqs[ieq].first] = ieq;
558 for(ieq=0; ieq<neq; ieq++)
560 if(toexternal[ieq] == -1) toexternal[ieq] = count++;
562 for(ieq=0; ieq<neq; ieq++)
564 fromexternal[toexternal[ieq]] = ieq;
584 std::stringstream sout;
585 sout <<
"The coarse equations are " << assembly->fCoarseEqs[isub] << std::endl;
588 sout <<
"Substructure for submesh " << isub << std::endl;
589 substruct->Print(sout);
595 std::cout << std::endl;
604 globaleq.Resize(subcomp->
NEquations(),std::pair<int,int>(-1,-1));
609 std::stringstream sout;
610 sout <<
"total submesh connects/glob/loc ";
612 for(ic=0; ic<ncon; ic++)
616 if(glob == -1)
continue;
617 int locseq = sub->
ConnectVec()[ic].SequenceNumber();
618 int globseq = super->
ConnectVec()[glob].SequenceNumber();
624 for(ieq =0; ieq<locsize; ieq++)
627 sout << ic <<
"/" << globpos+ieq <<
"/" << locpos+ieq <<
" ";
629 globaleq[count] = std::pair<int,int>(locpos+ieq,globpos+ieq);
631 globinv[globpos+ieq] = locpos+ieq;
634 globaleq.Resize(count);
651 std::stringstream sout;
652 sout <<
"total submesh connects/glob/loc ";
654 for(ic=0; ic<ncon; ic++)
658 if(glob == -1)
continue;
659 int locseq = sub->
ConnectVec()[ic].SequenceNumber();
660 int globseq = super->
ConnectVec()[glob].SequenceNumber();
666 for(ieq =0; ieq<locsize; ieq++)
669 sout << ic <<
"/" << globpos+ieq <<
"/" << locpos+ieq <<
" ";
671 global[locpos+ieq] = globpos+ieq;
672 globinv[globpos+ieq] = locpos+ieq;
689 internalnodes.
Resize(ninternal);
691 internalnodes.
Fill(-1);
695 std::stringstream sout;
696 sout <<
"internal submesh connects/glob/loc ";
699 for(ic=0; ic<ncon; ic++)
702 if(glob == -1)
continue;
703 int locseq = sub->
ConnectVec()[ic].SequenceNumber();
704 int globseq = super->
ConnectVec()[glob].SequenceNumber();
710 for(ieq =0; ieq<locsize; ieq++)
712 if(locpos+ieq < ninternal)
715 sout << ic <<
"/" << globpos+ieq <<
"/" << locpos+ieq <<
" ";
717 internalnodes[locpos+ieq] = globaltolocal[globpos+ieq];
737 int nblocks = origblock.
NBlocks();
740 std::cout << __PRETTY_FUNCTION__ <<
" something seriously wrong!!!\n";
743 for(ib=0; ib<nblocks; ib++)
745 destblock.
Set(scatterpermuteblock[ib],origblock.
Size(ib));
750 scatterpermute.
Resize(neq);
751 gatherpermute.
Resize(neq);
752 scatterpermute.
Fill(-1);
753 gatherpermute.
Fill(-1);
756 std::stringstream sout;
757 sout <<
"internal submesh connects/glob/loc ";
760 for(ic=0; ic<ncon; ic++)
765 int locseq = sub->
ConnectVec()[ic].SequenceNumber();
767 if(locseq < 0)
continue;
768 int destseq = scatterpermuteblock[locseq];
769 int locpos = origblock.
Position(locseq);
770 int destpos = destblock.
Position(destseq);
771 int size = origblock.
Size(locseq);
774 for(ieq =0; ieq<size; ieq++)
777 sout << ic <<
"/" << locpos+ieq <<
"/" << destpos+ieq <<
" ";
779 scatterpermute[locpos+ieq] = destpos+ieq;
783 for(ieq = 0; ieq < neq; ieq++)
785 gatherpermute[scatterpermute[ieq]] = ieq;
806 blockinvpermute[permute[i]] = i;
809 internaleqs.
Resize(ninternal);
811 internaleqs.
Fill(-1);
814 std::stringstream sout;
815 sout <<
"internal submesh connects/glob/loc ";
818 for(ic=0; ic<ncon; ic++)
820 int locseq = sub->
ConnectVec()[ic].SequenceNumber();
821 int origseq = blockinvpermute[locseq];
823 int origpos = prevblock.
Position(origseq);
827 for(ieq =0; ieq<size; ieq++)
829 if(locpos+ieq < ninternal)
832 sout << ic <<
"/" << globpos+ieq <<
"/" << locpos+ieq <<
" ";
834 internaleqs[locpos+ieq] = origpos+ieq;
850 std::stringstream sout;
851 sout <<
"Input data for IdentifySubCornerEqs \nglobaltolocal";
852 std::map<int,int>::iterator mapit;
853 for(mapit = globaltolocal.begin(); mapit != globaltolocal.end(); mapit++)
855 sout <<
" [" << mapit->first <<
" , " << mapit->second <<
"] ";
857 sout <<
"\nCorner equations stored in the GenSubStructure data ";
858 std::set<int>::iterator setit;
861 sout << *setit <<
" , ";
863 sout <<
"\ncornereqs " << cornereqs;
869 std::set<int>::iterator it;
870 std::list<int> subcorn,coarseindexlist;
876 if(globaltolocal.find(*it) != globaltolocal.end())
878 subcorn.push_back(globaltolocal[*it]);
879 coarseindexlist.push_back(count);
882 std::list<int>::iterator lit;
883 cornereqs.
Resize(subcorn.size());
884 coarseindex.
Resize(coarseindexlist.size());
886 for(lit=subcorn.begin(); lit != subcorn.end(); lit++)
888 cornereqs[count++] = *lit;
891 for(lit = coarseindexlist.begin(); lit != coarseindexlist.end(); lit++)
893 coarseindex[count++] = *lit;
902 std::list<int64_t>
internal;
904 std::list<int64_t>::iterator it;
906 for(it=
internal.begin(); it !=
internal.end(); it++)
908 int64_t seq = sub->
ConnectVec()[*it].SequenceNumber();
926 substruct->fInvertedStiffness.SetMatrix(substruct->fStiffness->Clone());
927 substruct->fInvertedStiffness.SetDirect(
ECholesky);
934 int64_t ninternal = substruct->fInternalEqs.NElements();
938 substruct->fInvertedInternalStiffness.SetMatrix(skylstr.
CreateAssemble(rhs,toto));
939 substruct->fInvertedInternalStiffness.SetDirect(
ECholesky);
951 typedef std::pair<ENumbering,ENumbering> pairnumbering;
953 TPZVec<int> &permutescatter = substruct->fPermutationsScatter[fromsub];
962 matredbig->
SetK00(Stiffness);
963 substruct->fMatRedComplete = matredbig;
983 for (iel=0; iel < permuteconnectscatter.
NElements(); iel++) {
984 invpermuteconnectscatter[permuteconnectscatter[iel]] = iel;
989 submesh->
Permute(invpermuteconnectscatter);
992 substruct->fLocalLoad.Redim(Stiffness->Rows(),1);
993 pairstructmatrix.
Assemble(Stiffness.operator->(), matredptr, substruct->fLocalLoad);
997 substruct->fWeights.Resize(Stiffness->Rows());
999 for(i=0; i<substruct->fWeights.NElements(); i++)
1001 substruct->fWeights[i] = Stiffness->GetVal(i,i);
1004 int64_t ncoarse = substruct->fCoarseNodes.NElements(), ic;
1005 int64_t neq = Stiffness->Rows();
1006 for(ic=0; ic<ncoarse; ic++)
1008 int64_t coarse = substruct->fCoarseNodes[ic];
1009 Stiffness->operator()(coarse,coarse) += 10.;
1010 matredbig->operator()(neq+ic,coarse) = 1.;
1011 matredbig->operator()(coarse,neq+ic) = 1.;
1015 InvertedStiffness->
SetMatrix(Stiffness);
1017 matredbig->
SetSolver(InvertedStiffness);
1021 InvertedInternalStiffness->
SetMatrix(InternalStiffness);
1023 matredptr->
SetSolver(InvertedInternalStiffness);
1027 substruct->fMatRed = matred2;
1035 int64_t iel, count = 0;
1036 for(iel=0; iel<nel; iel++)
1051 int64_t iel, count = 0;
1052 for(iel=0; iel<nel; iel++)
1057 if(sub && isub == count)
return sub;
int64_t NElements() const
Number of computational elements allocated.
void InitializeDohr(TPZAutoPointer< TPZMatrix< STATE > > dohr, TPZAutoPointer< TPZDohrAssembly< STATE > > assembly)
Initialize the TPZDohrMatrix structure.
TPZGeoMesh * Reference() const
Returns a pointer to the geometrical mesh associated.
void AnalyseGraph()
Group the node graph as passed by the parameters.
TPZAutoPointer< TPZCompMesh > fCMesh
computational mesh
Contains the TPZTimeTemp class which takes times.
Contains TPZAnalysis class which implements the sequence of actions to perform a finite element analy...
static void ReorderInternalNodes2(TPZSubCompMesh *sub, TPZVec< int > &internalnodes, TPZVec< int64_t > &invpermute)
int Position(const int block_diagonal) const
Returns the position of first element block dependent on matrix diagonal.
std::set< int > fCornerEqs
The set of equations which correspond to corner nodes.
Implements computational element and a side. Computational Element.
virtual void SetEquationRange(int64_t mineq, int64_t maxeq)
int Set(const int index, const int dim, const int pos=-1)
Modifies existing block dimensions or creates a new block with given index.
Represents a set of shape functions associated with a computational element/side. Computational Eleme...
void Print(std::ostream &file) const
Contains definitions to LOGPZ_DEBUG, LOGPZ_INFO, LOGPZ_WARN, LOGPZ_ERROR and LOGPZ_FATAL, and the implementation of the inline InitializePZLOG(string) function using log4cxx library or not. It must to be called out of "#ifdef LOG4CXX" scope.
void SetReduced()
changes the declared dimension of the matrix to fDim1
int MaterialId() const
Returns the material index of the element.
clarg::argBool bc("-bc", "binary checkpoints", false)
virtual TPZGeoEl * CreateGeoElement(MElementType type, TPZVec< int64_t > &cornerindexes, int matid, int64_t &index, int reftype=1)
Generic method for creating a geometric element. Putting this method centrally facilitates the modifi...
int64_t NodeIndex(int64_t nolocal, TPZCompMesh *super)
Gives the id node of one local node in containing mesh.
Implements renumbering for elements of a mesh. Utility.
void ConvertGraph(TPZVec< int64_t > &elgraph, TPZVec< int64_t > &elgraphindex, TPZManVector< int64_t > &nodegraph, TPZManVector< int64_t > &nodegraphindex)
Will convert an element graph defined by elgraph and elgraphindex into a node graph defined by nodegr...
virtual TPZMatrix< STATE > * Create()
Contains the TPZDohrSubstruct class which implements sub structure matrices using Dohrman algorithm...
void SimetrizeMatRed()
If fK00 is simetric, only part of the matrix is accessible to external objects.
TPZManVector< int64_t > & Nodegraphindex()
clarg::argInt nsub("-nsub", "number of substructs", 4)
int64_t NEquations()
This computes the number of equations associated with non-restrained nodes.
int64_t NIndependentConnects()
Number of independent connect objects.
void InitializeMatrices(TPZSubCompMesh *submesh, TPZAutoPointer< TPZDohrSubstruct< STATE > > substruct, TPZDohrAssembly< STATE > &dohrassembly)
This is a lengthy process which should run on the remote processor.
clarg::argInt dimension("-d", "Matrices dimension M x M", 1000)
TPZGeoElSide Reference() const
Reference to the geometric element.
Implements a generic geometric element with a uniform refinement pattern. Geometry.
Defines step solvers class. Solver.
Calculate the Times. Utility.
virtual int Dimension() const =0
Dimension of the element.
Implements the generation of a multilayered bi-dimensional geometric grid. Getting Data...
virtual TPZEquationFilter & EquationFilter()
access method for the equation filter
virtual int Resize(const int64_t newRows, const int64_t newCols)
Redimensions a matriz keeping the previous values.
Contains the TPZDohrMatrix class which implements a matrix divided into substructures. Also contains the TPZDohrThreadMultData and TPZDohrThreadMultList structs.
int fSubstructLevel
Level of substructures.
int64_t NElements() const
Number of elements of the mesh.
void InitializeDohrCondense(TPZAutoPointer< TPZMatrix< STATE > > dohr, TPZAutoPointer< TPZDohrAssembly< STATE > > assembly)
Initialize the TPZDohrMatrix structure.
void SetNumCornerEqs(int nc)
int64_t NSubMesh(TPZAutoPointer< TPZCompMesh > compmesh)
Return the number of submeshes.
Utility class which represents an element with its side. The Geometric approximation classes Geometry...
void AddSubstruct(TPZAutoPointer< TSubStruct > substruct)
It adds a substruct.
int64_t NElements() const
Access method to query the number of elements of the vector.
Implements sub structure matrices using Dohrman algorithm. Sub Structure.
virtual int NSides() const =0
Returns the number of connectivities of the element.
virtual void Divide(TPZVec< TPZGeoEl *> &pv)
Divides the element and puts the resulting elements in the vector.
Implements a matrix divided into substructures. Matrix Sub structure.
void LoadReferences()
Map this grid in the geometric grid.
void SetK00(TPZAutoPointer< TPZMatrix< TVar > > K00)
Sets the matrix pointer of the upper left matrix to K00.
Contains the TPZMatPoisson3d class.
void ComputeElGraph(TPZStack< int64_t > &elgraph, TPZVec< int64_t > &elgraphindex)
Computes the connectivity graph of the elements, as appropriate for the TPZRenumbering class...
void PermuteInternalFirst(TPZVec< int64_t > &permute)
Permutes the potentially internal connects to the first on the list Respect the previous order of th...
void SetSolver(TPZAutoPointer< TPZMatrixSolver< TVar > > solver)
Implements SkyLine Structural Matrices. Structural Matrix.
This abstract class defines the behaviour which each derived class needs to implement.
Contains the TPZBndCond class which implements a boundary condition for TPZMaterial objects...
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object reallocating the necessary storage, copying the existing objects to the new...
Contains the TPZGenSubStruct class which is an interface to "feed" the datastructure of the Dohrmann ...
TPZSubCompMesh * SubMesh(TPZAutoPointer< TPZCompMesh > compmesh, int isub)
Return a pointer to the isub submesh.
void Resize(const int newsize)
Increase the size of the chunk vector.
Contains declaration of TPZMesh class which defines a geometrical mesh and contains a corresponding l...
void ReorderInternalNodes(TPZSubCompMesh *sub, std::map< int, int > &globaltolocal, TPZVec< int > &internalnodes)
static int64_t NInternalEq(TPZSubCompMesh *sub)
virtual TPZMatrix< STATE > * Create()
void Push(const T object)
Pushes a copy of the object on the stack.
int Level()
Returns the number of ancestors.
void SubStructure()
Divide the elements in substructures.
virtual void SetParameters(STATE diff, REAL conv, TPZVec< REAL > &convdir)
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
void IdentifyEqNumbers(TPZSubCompMesh *sub, TPZVec< std::pair< int, int > > &globaleq, std::map< int, int > &globinv)
Identify the global equations as a pair of local equation and global equation.
To condense matrix divided in sub structures. Sub Structure.
Computes the cardinality of a nodegraph, identifying nodes as vertices, lines, faces or volumes...
Implements a group of computational elements as a mesh and an element. Computational Mesh...
virtual void ExpandSolution()
Adapt the solution vector to new block dimensions.
#define LOGPZ_DEBUG(A, B)
Define log for debug info.
This class defines the boundary condition for TPZMaterial objects.
Contains the TPZSkylineStructMatrix class which implements SkyLine Structural Matrices.
virtual void ComputeNodElCon()
Compute the number of elements connected to each connect object.
int fDimension
Dimension of the mesh.
TPZVec< int > & Levels()
Returns the level of the nodes.
virtual void SetMatrix(TPZAutoPointer< TPZMatrix< TVar > > Refmat)
Sets a matrix to the current object.
TPZMaterial * FindMaterial(int id)
Find the material with identity id.
TPZAdmChunkVector< TPZGeoNode > & NodeVec()
virtual void AutoBuild(const std::set< int > *MaterialIDs)
Creates the computational elements, and the degree of freedom nodes.
int HasDependency() const
Returns whether exist dependecy information.
Contains the TPZGenGrid class which implements the generation of a multilayered geometric grid (two-d...
Contains the TPZPairStructMatrix class.
const TPZBlock< STATE > & Block() const
Access the block structure of the solution vector.
Contains the TPZDohrSubstructCondense class which condenses matrix divided in sub structures...
REAL co[8][3]
Coordinates of the eight nodes.
TPZAdmChunkVector< TPZConnect > & ConnectVec()
Return a reference to the connect pointers vector.
int64_t Index() const
Returns element index of the mesh fELementVec list.
int fNumLevels
Number of uniform refinements.
void UniformRefine()
Divide the geometric elements till num levels is achieved.
Contains the TPZfTime class which calculates times.
Contains declaration of TPZCompMesh class which is a repository for computational elements...
void PotentialInternal(std::list< int64_t > &connectindices) const
Puts the nodes which can be transferred in an ordered list.
void IdentifySubCornerEqs(std::map< int, int > &globaltolocal, TPZVec< int > &cornereqs, TPZVec< int > &coarseindex)
Identify the corner equations associated with a substructure.
Contains the TPZGeoPoint class which implements the geometry of a point element or 0-D element...
void IdentifyCornerNodes()
Identify cornernodes.
virtual int64_t ConnectIndex(int i) const =0
Returns the index of the ith connectivity of the element.
virtual int HasSubElement() const =0
Return 1 if the element has subelements.
int NBlocks() const
Returns number of blocks on diagonal.
void Assemble(TPZMatrix< STATE > *first, TPZMatrix< STATE > *second, TPZFMatrix< STATE > &rhs)
std::string ReturnTimeString()
When called, returns the time since the creation of the object in a string.
void ComputePermutationInternalFirst(TPZVec< int64_t > &permute) const
Computes the permutation vector which puts the internal connects to the first on the list Respect th...
void BuildConnectivity()
Build the connectivity of the grid.
TPZAutoPointer< TPZCompMesh > GenerateMesh()
Method which will generate the computational mesh.
Contains declaration of TPZSubCompMesh class which implements a group of computational elements as a ...
int InsertMaterialObject(TPZMaterial *mat)
Insert a material object in the datastructure.
virtual void CleanUpUnconnectedNodes()
Delete the nodes which have no elements connected to them.
virtual int Dimension() const =0
Returns the dimension of the element.
TPZCompEl * Element() const
Gives a pointer to the reference computational element.
This class implements a very simple interface from PZ kernel to GUI. Module: Common.
Implements a simple substructuring of a linear system of equations, composed of 4 submatrices...
TPZAutoPointer< TPZMatrix< TVar > > K00()
Contains the TPZMatRedStructMatrix class.
This class implements a geometric mesh for the pz environment. Geometry.
virtual int64_t ConnectIndex(int i) const override
Returns the connection index i.
virtual void MakeAllInternal() override
Makes all mesh connections internal mesh connections.
int MaxLevel()
Returns the maximum level.
Implements computational mesh. Computational Mesh.
int Size(const int block_diagonal) const
Returns block dimension.
TPZAdmChunkVector< TPZCompEl * > & ElementVec()
Returns a reference to the element pointers vector.
virtual int64_t TransferElement(TPZCompMesh *mesh, int64_t elindex) override
Transfer the element elindex belonging to mesh to the current mesh and returns its index...
int64_t NumInternalEquations()
Computes the number of internal equations.
void Fill(const T ©, const int64_t from=0, const int64_t numelem=-1)
Will fill the elements of the vector with a copy object.
TPZGenSubStruct(int dimension, int numlevels, int substructlevel)
Constructor.
Contains TPZVerySparseMatrix class which implements a matrix whose nonzero elements are stored in bin...
int64_t NElements() const
Returns the number of elements of the vector.
void SetInternalFlux(STATE flux)
void SetDirect(const DecomposeType decomp)
Contains declaration of TPZGeoElement class which implements a generic geometric element with a unifo...
bool VerifyDatastructureConsistency()
Method to verify that the datastructures are consistent.
void ResetReference()
Resets all load references in elements and nodes.
Contains the TPZNodesetCompute class which computes the cardinality of a nodegraph.
Defines the interface of a computational element. Computational Element.
virtual TPZMatrix< STATE > * CreateAssemble(TPZFMatrix< STATE > &rhs, TPZAutoPointer< TPZGuiInterface > guiInterface, unsigned numthreads_assemble, unsigned numthreads_decompose)
bool IsCondensed() const
Access method to return the indication whether the connect is condensed or not.
virtual short Read(TPZGeoMesh *mesh, int matid=1)
Add nodes and elements to the object mesh.
Contains the TPZRefPoint class which implements the uniform refinement of a geometric point element...
Contains TPZMetis class which implements the renumbering for elements of a mesh to minimize the band...
TPZManVector< int64_t > & Nodegraph()
void Reset()
Reset method.
static void ComputeInternalEquationPermutation(TPZSubCompMesh *sub, TPZVec< int > &scatterpermute, TPZVec< int > &gatherpermute)
Computes the permutation vectors from the subcompmesh ordening to the "internal first" ordering...
int Resequence(const int start=0)
Resequences blocks positioning.
virtual void Print(std::ostream &out=std::cout) const
Prints mesh data.
TPZAdmChunkVector< TPZGeoEl * > & ElementVec()
Methods for handling pzlists.
void Permute(TPZVec< int64_t > &permute)
Permute the sequence number of the connect objects It is a permute gather operation.
virtual int NConnects() const override
Returns the number of connections.