63 PZError <<
"TPZAgglomerateElement::AddSubElementIndex null element\n";
76 int i,maxdeg = -1,mat,mat2;
78 for(i=1;i<indsize;i++){
82 PZError <<
"TPZAgglomerateElement::TPZAgglomerateElement data error, distinct material\n";
87 PZError <<
"TPZAgglomerateElement::TPZAgglomerateElement empty list\n";
91 for(i=0;i<indsize;i++){
93 if(deg > maxdeg) maxdeg = deg;
110 for(i=0; i<nsubs; i++){
113 PZError <<
"TPZAgglomerateElement::AccumulateIntegrationRule, null index element\n";
125 for(i=0;i<indsize;i++){
135 for(i=0;i<indsize;i++) voltot += volumes[i];
136 REAL centx=0.0,centy=0.0,centz=0.0;
137 for(i=0;i<indsize;i++){
152 for(
int i = 0; i < 3; i++)
164 for(i=0;i<nindex;i++){
175 PZError <<
"TPZAgglomerateElement::CalcResidual DEVE SER IMPLEMENTADO";
183 cout <<
"TPZCompElDisc::CalcStiff : no material for this element\n";
195 int64_t numbersol = MeshSol.
Cols();
196 int numeq = nshape * nstate;
210 for(
int i=0;i<ncon;i++){
224 for(ip=0;ip<npoints;ip++){
225 data.
x[0] = points[3*ip];
226 data.
x[1] = points[3*ip+1];
227 data.
x[2] = points[3*ip+2];
228 weight = weights[ip];
231 for (int64_t is=0; is<numbersol; is++) {
233 data.
dsol[is].Zero();
235 for(
int in=0; in<ncon; in++) {
238 int dfvar = block.
Size(dfseq);
239 int64_t pos = block.
Position(dfseq);
241 for(int64_t jn=0; jn<dfvar; jn++) {
242 for (int64_t is=0; is<numbersol; is++) {
243 data.
sol[is][iv%nstate] += (STATE)data.
phi(iv/nstate,0)*MeshSol(pos+jn,is);
244 for(
int d=0; d<dim; d++) data.
dsol[is](d,iv%nstate) += (STATE)data.
dphix(d,iv/nstate)*MeshSol(pos+jn,is);
258 if(sub < 0 || sub > nsubs){
259 PZError <<
"TPZAgglomerateElement::SubElement sub-element out of range\n";
270 REAL maxsub,maxall = -1.0;
272 for(i=0;i<nindex;i++){
276 if(maxall < maxsub) maxall = maxsub;
285 PZError <<
"\nTPZCompElDisc::CreateMidSideConnect Material nulo\n";
293 if(dim == InterfaceDimension){
318 out <<
"\nTPZAgglomerateElement element : \n";
319 out <<
"\tComputational mesh : " <<
fMotherMesh << endl;
320 out <<
"\tAgglomerate elements indexes : ";
322 for(i=0;i<naggel;i++) out <<
fIndexes[i] <<
" ";
324 <<
"\tDegrau of interpolation : " <<
Degree() << endl
326 <<
"\tNormalizing constant : " <<
ConstC() << endl
327 <<
"\tCenter point of the element : ";
337 if(dimension == 2 && to_postpro){
347 if(dimension == 3 && to_postpro){
350 if(dimension == 1 && to_postpro){
365 for(i=0;i<indsize;i++){
374 PZError <<
"TPZAgglomerateElement::NSides unknow type element\n";
384 for(i=0;i<indsize;i++){
392 PZError <<
"TPZAgglomerateElement::NSides unknow type element\n";
522 int nivel,int64_t &numaggl,
int dim){
525 cout <<
"\nTPZAgglomerateElement::ListOfGroupings para malha 2D\n";
526 cout <<
"Este metodo somente funciona para agrupar elementos descontinuos \n";
537 cout <<
"TPZAgglomerateElement::ListOfGroupings nao funciona para esta malha\n";
543 if(eldim == sdim)
continue;
545 if(!father)
continue;
546 while(father && father->
Level() != nivel) father = father->
Father();
547 if (!father)
continue;
549 int64_t fatid = father->
Id();
550 accumlist[i] = fatid;
556 for(j=i+1;j<nel;j++){
557 if(list[i] > list[j]){
568 int64_t act = list[i];
569 if(act == act2)
continue;
570 for(j=i+1;j<nel;j++){
571 int64_t next = list[j];
583 int64_t fatid1 = newlist[i];
584 if(fatid1 < 0)
continue;
585 accumlist[i] = newfat;
587 for(j=i+1;j<nel;j++){
588 int64_t fatid2 = newlist[j];
589 if(fatid2 == fatid1){
590 accumlist[j] = newfat;
596 if(newfat != numaggl) cout <<
"TPZAgglomerateElement::ListOfGroupings nmero de pais n� confere\n";
597 if(!newfat && !numaggl) cout <<
"TPZAgglomerateElement::ListOfGroupings lista de elementos aglomerados vacia\n";
602 cout <<
"TPZAgglomerateElement::Print agrupamento de indexes: saida AGRUPAMENTO.out\n";
603 ofstream out(
"AGRUPAMENTO.out");
604 int64_t size = listindex.
NElements(),i,father = 0;
605 out <<
"\n\t\t\t* * * AGRUPAMENTO DE INDEXES * * *\n\n";
608 if(listindex[i] == father){
612 if( (i+1) == size && exists ){
613 out <<
"-> father = " << father << endl;
648 int mindegree = 1000,coarsedeg =
Degree(),maxdegree = 0;
654 if(mindegree > degree) mindegree =
degree;
655 if(maxdegree < degree) maxdegree =
degree;
657 if(coarsedeg > mindegree){
660 cout <<
"TPZAgglomerateElement::RestrictionOperator MUDANDO A ORDEM DO ELEMENTO\n";
662 coarsedeg = mindegree;
678 int64_t in,jn,kn,ip,ind;
681 for(ind=0;ind<size;ind++){
687 for(ip=0;ip<npoints;ip++){
688 for(in=0; in<3; in++) x[in] = accintpoint[3*ip+in];
689 weight = accweight[ip];
690 ShapeX(x,aggphix,aggdphix);
695 for(in=0; in<aggmatsize; in++) {
696 for(jn=0; jn<aggmatsize; jn++) {
699 aggmat(in,jn) += weight*aggphix(in,0)*aggphix(jn,0);
702 for(kn=0; kn<nvar; kn++) {
703 loadvec(in,kn) += (STATE)weight*(STATE)aggphix(in,0)*uh[kn];
715 int dfvar = block.
Size(dfseq);
716 int64_t pos = block.
Position(dfseq);
717 for(
int d=0; d<dfvar; d++) {
719 projectsol(pos+d,0) = loadvec(iv/nvar,iv%nvar);
727 int64_t j,l,nvertices;
735 REAL maxX=-1.,maxY=-1.,maxZ=-1.;
736 REAL distX,distY,distZ;
737 for(l=0;l<nvertices;l++){
738 for(j=l+1;j<nvertices;j++){
741 distX =
fabs(nodes[l]->Coord(0) - nodes[j]->Coord(0));
742 distY =
fabs(nodes[l]->Coord(1) - nodes[j]->Coord(1));
743 distZ =
fabs(nodes[l]->Coord(2) - nodes[j]->Coord(2));
744 if(distX > maxX) maxX = distX;
745 if(distY > maxY) maxY = distY;
746 if(distZ > maxZ) maxZ = distZ;
749 if(maxX < 1.e-8 && maxY < 1.e-8 && maxZ < 1.e-8) {
750 PZError <<
"TPZCompElDisc::LesserEdgeOfEl degenerate element\n";
752 if(maxX < 1.e-8) maxX = 1000000.0;
753 if(maxY < 1.e-8) maxY = 1000000.0;
754 if(maxZ < 1.e-8) maxZ = 1000000.0;
755 maxX = maxX < maxY ? maxX : maxY;
756 maxX = maxX < maxZ ? maxX : maxZ;
790 for(in=0; in<nsubs; in++) {
817 if(numaggl < 1 || nlist < 2){
818 PZError <<
"TPZCompElDisc::CreateAgglomerateMesh number agglomerate elements" 819 <<
" out of range\nMALHA AGGLOMERADA N� CRIADA\n";
831 IdElNewMesh.
Fill(-1);
834 for(i=0;i<numaggl;i++){
837 while( accumlist[k] != i && k < size) k++;
841 PZError <<
"TPZCompElDisc::CreateAgglomerateMesh material not found\n";
846 nummat = finemesh->
ElementVec()[k]->Material()->Id();
849 IdElNewMesh[k] = index;
853 int meshdim = finemesh->
Dimension(),type,eldim;
855 int surfacedim = meshdim-1;
859 father = accumlist[i];
863 if(eldim == meshdim){
865 PZError <<
"TPZCompElDisc::CreateAgglomerateMesh element null father\n";
866 if(aggmesh)
delete aggmesh;
872 IdElNewMesh[i] = father;
873 }
else if(eldim == surfacedim){
876 IdElNewMesh[i] = AggCell->
Index();
889 int64_t indleft = leftel->
Index();
890 int64_t indright = rightel->Index();
891 if(accumlist[indleft] == -1 && accumlist[indright] == -1){
893 PZError <<
"TPZCompElDisc::CreateAgglomerateMesh data error\n";
894 if(aggmesh)
delete aggmesh;
899 if(accumlist[indleft] == accumlist[indright])
continue;
905 leftid = IdElNewMesh[leftid];
908 PZError <<
"\nLeftid cannot be -1." << endl;
915 rightid = IdElNewMesh[rightid];
918 PZError <<
"\nRightid cannot be -1." << endl;
923 TPZCompElSide leftcompelside(leftagg, leftside), rightcompelside(rightagg, rightside);
924 interf->
CloneInterface(*aggmesh,index, leftcompelside, rightcompelside);
946 for(i = 0; i < nel; i++){
963 REAL LeftDistance = -1., RightDistance = -1.;
967 for (
int irib = 0; irib < nsides; irib++){
968 REAL left = 0., right = 0.;
971 interfaceEl->
Reference()->
X(RefInterfaceCenter, InterfaceCenter);
973 for (
int isum = 0; isum < dim; isum++)
975 left += (LeftCenter[isum] - InterfaceCenter[isum]) * (LeftCenter[isum] - InterfaceCenter[isum]);
976 right += (RightCenter[isum] - InterfaceCenter[isum]) * (RightCenter[isum] - InterfaceCenter[isum]);
980 if(left < LeftDistance || LeftDistance < 0.) LeftDistance = left;
981 if(right < RightDistance || RightDistance < 0.) RightDistance = right;
1016 for(iel=0; iel<nelem; iel++) {
1019 if(!inter)
continue;
1023 neighbour[LeftEl].insert(RightEl);
1024 neighbour[RightEl].insert(LeftEl);
1049 cout <<
"TPZAgglomerateEl::Write built from non agglomeratemesh at " << __FILE__ <<
":" << __LINE__ << endl;
1065 cout <<
"TPZAgglomerateEl::Read built from non agglomeratemesh at " << __FILE__ <<
":" << __LINE__ << endl;
int64_t NElements() const
Number of computational elements allocated.
void IndexesDiscSubEls(TPZStack< int64_t > &elvec)
Returns a vector of all indexes of the discontinuous elements in cluster.
bool Material_Is_PostProcessed(int matid)
Return a directive if the material id is being postprocessed.
Represents a graphical mesh used for post processing purposes. Post processing.
Contains the TPZGraphElTd class which implements the graphical discontinuous triangular element...
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ fabs
void Read(TPZStream &buf, void *context) override
Read the element data from a stream.
virtual void AccumulateIntegrationRule(int degree, TPZStack< REAL > &point, TPZStack< REAL > &weight)
virtual void Print(std::ostream &out=std::cout) const override
Prints the features of the element.
Contains the TPZInt1d, TPZIntTriang, TPZIntQuad, TPZIntCube3D, TPZIntTetra3D, TPZIntPyram3D and TPZIn...
REAL CenterPoint(int index) const
int Position(const int block_diagonal) const
Returns the position of first element block dependent on matrix diagonal.
virtual int NShapeF() const override
Returns the shapes number of the element.
Implements computational element and a side. Computational Element.
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 SolutionX(TPZVec< REAL > &x, TPZVec< STATE > &uh)
Computes the solution in function of a point in cartesian space.
Contains declaration of TPZGeoElSide class which represents an element and its side, and TPZGeoElSideIndex class which represents an TPZGeoElSide index.
TPZManVector< REAL, 3 > x
value of the coordinate at the integration point
To export a graphical one dimensional discontinuous element. Post processing.
virtual MElementType Type()
Return the type of the element.
virtual void InitMaterialData(TPZMaterialData &data)
Initialize a material data and its attributes based on element dimension, number of state variables a...
static TPZAgglomerateMesh * CreateAgglomerateMesh(TPZCompMesh *finemesh, TPZVec< int64_t > &accumlist, int64_t numaggl)
virtual int NConnects() const override
Returns the number of connects.
void SetInnerRadius(REAL InnerRadius) override
Sets the inner radius value.
clarg::argInt dimension("-d", "Matrices dimension M x M", 1000)
TPZStack< int64_t > fConnect
Vector of pointers to TPZConnect objects.
virtual int64_t AllocateNewConnect(int nshape, int nstate, int order)
Returns an index to a new connect.
void CenterPoint()
Computes the center of the mass to clustered elements.
void ProjectSolution(TPZFMatrix< STATE > &projectsol)
TPZFNMatrix< 1000, STATE > fMat
Pointer to a blocked matrix object.
Contains declaration of TPZCompEl class which defines the interface of a computational element...
void Read(TPZStream &buf, void *context) override
Read the element data from a stream.
To export a graphical two-dimensional discontinuous element. Post processing.
To export a graphical three dimensional discontinuous element. Post processing.
virtual int Dimension() const =0
Dimension of the element.
void SetNInterfaces(int nfaces) override
Sets element's number of interfaces.
void degree(int root, int adj_num, int adj_row[], int adj[], int mask[], int deg[], int *iccsze, int ls[], int node_num)
virtual int Dimension() const =0
Returns the integrable dimension of the material.
Contains the TPZGraphEl class which implements the graphical one-, two- and three-dimensional element...
virtual int NStateVariables() const =0
Returns the number of state variables associated with the material.
TPZGradSolVec dsol
vector of the derivatives of the solution at the integration point
Declarates the TPZBlock<REAL>class which implements block matrices.
TPZCompEl * CloneInterface(TPZCompMesh &aggmesh, int64_t &index, TPZCompElSide &left, TPZCompElSide &right) const
Method used in TPZAgglomerateElement::CreateAgglomerateMesh.
int64_t NElements() const
Access method to query the number of elements of the vector.
virtual int NSides() const =0
Returns the number of connectivities of the element.
virtual void Contribute(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef)=0
It computes a contribution to the stiffness matrix and load vector at one integration point...
TPZBlock< STATE > fBlock
Block structure associated with fMat.
Contains the TPZGraphEl1d class which implements the graphical one dimensional element.
TPZCompMesh * fMotherMesh
Mesh for the clusters which elements are part and from that the current mesh was obtained.
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object.
int Dimension() const override
It returns dimension from the elements.
TPZFNMatrix< 220, REAL > phi
vector of shapefunctions (format is dependent on the value of shapetype)
TPZStack< int64_t > fIndexes
Indexes into the fine mesh of computational subelements in the clusters by the current.
TPZFNMatrix< 660, REAL > dphix
values of the derivative of the shape functions
virtual void AccumulateIntegrationRule(int degree, TPZStack< REAL > &point, TPZStack< REAL > &weight) override
Accumulates integration rule to deformed element.
void SetConnectIndex(int, int64_t index) override
Set the index i to node inode.
This abstract class defines the behaviour which each derived class needs to implement.
Contains declaration of TPZElementMatrix struct which associates an element matrix with the coeficien...
virtual REAL NormalizeConst()
Calculates the normalizing constant of the bases of the element.
virtual void CenterPoint(int side, TPZVec< REAL > &masscent) const =0
It returns the coordinates from the center of the side of the element in the element coordinate space...
virtual TPZMaterial * Material() const
Identify the material object associated with the element.
void Write(TPZStream &buf, int withclassid) const override
Save the element data to a stream.
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 declaration of TPZMesh class which defines a geometrical mesh and contains a corresponding l...
int64_t SequenceNumber() const
Returns the Sequence number of the connect object.
void Push(const T object)
Pushes a copy of the object on the stack.
int Level()
Returns the number of ancestors.
virtual void Write(const bool val)
Defines the behaviour of all geometric elements. GeometryTPZGeoEl is the common denominator for all g...
Contains the TPZGraphElQ2dd class which implements the graphical two-dimensional discontinuous elemen...
#define DebugStop()
Returns a message to user put a breakpoint in.
Contains declaration of TPZInterfaceElement class which computes the contribution over an interface b...
TPZCompElSide & LeftElementSide()
Returns left neighbor.
virtual REAL LesserEdgeOfEl()
Computes a measure of the element.
REAL fInnerRadius
Stores the element's inner radius.
TPZCompMesh * Mesh() const
Return a pointer to the grid of the element.
Free store vector implementation.
int ClassId() const override
Returns the unique identifier for reading/writing objects to streams.
int Dimension() const
Returns the dimension of the simulation.
int ClassId() const override
Returns the unique identifier for reading/writing objects to streams.
To export a graphical discontinuous triangular element. Post processing.
virtual int64_t CreateMidSideConnect() override
It creates new conect that it associates the degrees of freedom of the element and returns its index...
virtual void AccumulateVertices(TPZStack< TPZGeoNode *> &nodes) override
Accumulate the vertices of the agglomerated elements.
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ sqrt
Contains the TPZGraphElT class which implements the graphical triangular element. ...
const TPZBlock< STATE > & Block() const
Access the block structure of the solution vector.
Contains the TPZGraphMesh class which represents a graphical mesh used for post processing purposes...
TPZCompElSide & RightElementSide()
Returns right neighbor.
static void AddSubElementIndex(TPZCompMesh *aggcmesh, int64_t subel, int64_t destind)
Insert the subelement index.
virtual void AccumulateVertices(TPZStack< TPZGeoNode *> &nodes)
Accumulates the vertices of the agglomerated elements.
TPZAdmChunkVector< TPZConnect > & ConnectVec()
Return a reference to the connect pointers vector.
int64_t Index() const
Returns element index of the mesh fELementVec list.
int SetNBlocks(const int num_of_blocks)
Sets number of blocks on diagonal matrix.
Contains declaration of TPZCompMesh class which is a repository for computational elements...
int Redim(const int64_t newRows, const int64_t newCols) override
Redimension a matrix and ZERO your elements.
virtual TPZConnect & Connect(int i) const
Returns a pointer to the ith node.
static REAL gBigNumber
Big number to penalization method, used for Dirichlet conditions.
int64_t ConnectIndex(int side=0) const override
Returns the connect index from the element.
void SetDimModel(int dim)
Set de dimension of the domain of the problem.
int32_t Hash(std::string str)
Computes the contribution over an interface between two discontinuous elements. Computational Element...
TPZManVector< REAL, 3 > fCenterPoint
It keeps the interior point coordinations of the element.
virtual TPZCompEl * Clone(TPZCompMesh &mesh) const override
Method for creating a copy of the element.
This class associates an element matrix with the coeficients of its contribution in the global stiffn...
static void ComputeNeighbours(TPZCompMesh *mesh, std::map< TPZCompElDisc *, std::set< TPZCompElDisc *> > &neighbours)
void CalcResidual(TPZFMatrix< REAL > &Rhs, TPZCompElDisc *el)
Computes the residual of the solution to father element from clustered subelements.
void Write(TPZStream &buf, int withclassid) const override
void CalcStiff(TPZElementMatrix &ek, TPZElementMatrix &ef) override
Assembles the differential equation to model over the element defined by clustered subelements...
void ListOfDiscEl(TPZStack< TPZCompEl *> &elvec)
Returns a vector of all discontinuous elements in cluster.
int fMaterialId
Material id of the agglomerated element.
Implements a mesh that contains agglomerated elements. Computational Mesh.
int64_t Id() const
Returns the Id of the element.
virtual void CalcStiff(TPZElementMatrix &ek, TPZElementMatrix &ef) override
Computes the element stiffness matrix and right hand side.
void CreateGraphicalElement(TPZGraphMesh &grmesh, int dimension) override
TPZGeoEl * Reference() const
Return a pointer to the corresponding geometric element if such exists, return 0 otherwise.
TPZCompEl * LeftElement() const
Returns the left element from the element interface.
virtual void X(TPZVec< REAL > &qsi, TPZVec< REAL > &result) const =0
Return the coordinate in real space of the point coordinate in the master element space...
TPZCompEl * SubElement(int64_t sub) const
Returns the "sub" subelement.
TPZCompMesh * FineMesh()
Returns a pointer to the associated fine mesh.
REAL VolumeOfEl() override
Returns the volume of the geometric element referenced.
void Reset(TPZCompMesh *mesh=NULL, MType type=Unknown)
Reset the data structure.
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.
void InitializeElement()
Initialize the characteristics data of the clustered elements.
int NumLoadCases()
returns the number of load cases for this material object
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.
int64_t NIndexes() const
Returns the number of clustered subelements.
int Side() const
Returns the side index.
int64_t Cols() const
Returns number of cols.
virtual void SetDegree(int degree)
Assigns the degree of the element.
int NInterfaces() override
Retunrs the number of interfaces.
virtual int Degree() const
Returns the degree of interpolation of the element.
void CopyMaterials(TPZCompMesh &mesh) const
Copies the materials of this mesh to the given mesh.
Contains declaration of TPZAgglomerateMesh which implements a mesh that contains agglomerated element...
Defines the interface for saving and reading data. Persistency.
int64_t NElements() const
Returns the number of elements of the vector.
TPZCompEl * RightElement() const
Returns the right element from the element interface.
void SetCenterPoint(int i, REAL x)
Contains the TPZGraphEl1dd class which implements the graphical one dimensional discontinuous element...
virtual REAL VolumeOfEl()
Returns the volume of the geometric element associated.
This class implements a discontinuous element (for use with discontinuous Galerkin). Computational Element.
virtual REAL VolumeOfEl() override
Returns the volume of the geometric element associated.
REAL InnerRadius2()
Returns the inner radius value.
virtual void ShapeX(TPZVec< REAL > &X, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
Contains the TPZDiscontinuousGalerkin class which implements the interface for discontinuous Galerkin...
int fNFaces
Stores the number of interfaces of the element.
int Dimension() const override
Returns dimension from the element.
Defines the interface of a computational element. Computational Element.
TPZSolVec sol
vector of the solutions at the integration point
int NSides()
Returns the number of sides. If all the volumes agglomerated have the same number, it returns this number, else it returns -1.
TPZGeoEl * Father() const
Computes the normal vectors needed for forming HDiv vector valued shape functions.
Contains the TPZGraphElQ3dd class which implements the graphical three dimensional discontinuous elem...
TPZFMatrix< STATE > & Solution()
Access the solution vector.
static void ListOfGroupings(TPZCompMesh *finemesh, TPZVec< int64_t > &accumlist, int nivel, int64_t &numaggl, int dim)
virtual MElementType Type() override
Type of the element.
Implements an interface to register a class id and a restore function. Persistence.
virtual int SolveDirect(TPZFMatrix< TVar > &F, const DecomposeType dt, std::list< int64_t > &singular)
Solves the linear system using Direct methods.
REAL NormalizeConst() override
Calculates the normalizing constant of the bases of the element.
#define PZError
Defines the output device to error messages and the DebugStop() function.
Implements an agglomerated discontinuous element. Computational Element.
virtual void Read(bool &val)
REAL ConstC() const
It returns the constant that normalizes the bases of the element.