NeoPZ
Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
TPZInterpolatedElement Class Referenceabstract

Implements computational element based on an interpolation space. Computational Element. More...

#include <pzintel.h>

Inheritance diagram for TPZInterpolatedElement:
[legend]
Collaboration diagram for TPZInterpolatedElement:
[legend]

Public Member Functions

 TPZInterpolatedElement (TPZCompMesh &mesh, TPZGeoEl *reference, int64_t &index)
 Constructor with a mesh and geometric element as arguments. More...
 
 TPZInterpolatedElement (TPZCompMesh &mesh, const TPZInterpolatedElement &copy)
 Constructor aimed at creating a copy of an interpolated element within a new mesh. More...
 
 TPZInterpolatedElement (TPZCompMesh &mesh, const TPZInterpolatedElement &copy, std::map< int64_t, int64_t > &gl2lcElMap)
 Copy the given element into a new patch mesh. More...
 
 TPZInterpolatedElement ()
 
virtual ~TPZInterpolatedElement ()
 Destructor, does nothing. More...
 
virtual void SetCreateFunctions (TPZCompMesh *mesh) override
 Set create function in TPZCompMesh to create elements of this type. More...
 
int ClassId () const override
 Define the class id associated with the class. More...
 
void Write (TPZStream &buf, int withclassid) const override
 Saves the element data to a stream. More...
 
void Read (TPZStream &buf, void *context) override
 Reads the element data from a stream. More...
 
virtual void SetInterface (int, int64_t)
 To enable to work with discontinuous element that can have interface elements. More...
 
virtual int Interface (int)
 
virtual int CanHaveInterface ()
 
virtual void DeleteInterfaces ()
 
REAL MeanSolution (int var)
 Returns total mass contained into the element. More...
 
void CalcIntegral (TPZElementMatrix &ef)
 Computes the integral over the finite element. More...
 
data access methods

Methods which allow to access the internal data structure of the element

virtual void Print (std::ostream &out=std::cout) const override
 Prints the relevant data of the element to the output stream. More...
 
int NShapeF () const override
 Returns the total number of shapefunctions. More...
 
int NSideShapeF (int side) const
 Returns the number of shape functions on a side. More...
 
virtual int NSideConnects (int iside) const override=0
 Returns the number of dof nodes along side iside. More...
 
virtual int SideConnectLocId (int icon, int is) const override=0
 Returns the local node number of icon along is. More...
 
virtual int MidSideConnectLocId (int is) const
 Returns the local id of the connect in the middle of the side. More...
 
virtual TPZConnectMidSideConnect (int is) const
 Returns a reference to the connect in the middle of the side. More...
 
int64_t SideConnectIndex (int icon, int is) const
 Returns the index of the c th connect object along side is. More...
 
TPZConnectSideConnect (int icon, int is)
 Returns a pointer to the icon th connect object along side is. More...
 
virtual int Dimension () const override=0
 Returns the dimension of the element. More...
 
virtual int NCornerConnects () const =0
 Returns the number of corner connects of the element. More...
 
virtual int NConnects () const override=0
 Returns the number of connect objects of the element. More...
 
virtual void BuildCornerConnectList (std::set< int64_t > &connectindexes) const override
 adds the connect indexes associated with base shape functions to the set More...
 
virtual void GetInterpolationOrder (TPZVec< int > &ord)=0
 Identifies the interpolation order of all connects of the element different from the corner connects. More...
 
virtual int PreferredSideOrder (int iside)=0
 Returns the preferred order of the polynomial along side iside. More...
 
int AdjustPreferredSideOrder (int side, int order)
 Adjusts the preferredSideOrder for faces. More...
 
virtual int EffectiveSideOrder (int side) const =0
 Returns the actual interpolation order of the polynomial along the side. More...
 
bool VerifyConstraintConsistency (int side, TPZCompElSide large) const
 return true if the connects associated with the side have dependency with large and if the dependency dimensions match More...
 
Data modification methods

These methods which will modify the local datastructure of the element

virtual void SetConnectIndex (int i, int64_t connectindex) override=0
 Sets the node pointer of node i to nod. More...
 
virtual void SetIntegrationRule (int order) override
 
virtual void SetPreferredOrder (int order) override=0
 Sets the preferred interpolation order along a side. More...
 
virtual void SetSideOrder (int side, int order)=0
 Sets the interpolation order of side to order. More...
 
virtual void ForceSideOrder (int side, int order)
 Impose an interpolation order on a given side (without using computesideorder) More...
 
Computational methods

Methods used to perform computations on the interpolated element

virtual void SideShapeFunction (int side, TPZVec< REAL > &point, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi) override=0
 Compute the values of the shape function along the side. More...
 
Post processing methods

The TPZInterpolatedElement class provides the user with a variety of methods for post-processing

virtual void ComputeSolution (TPZVec< REAL > &qsi, TPZSolVec &sol, TPZGradSolVec &dsol, TPZFMatrix< REAL > &axes) override
 Computes solution and its derivatives in the local coordinate qsi. More...
 
virtual void ComputeSolution (TPZVec< REAL > &qsi, TPZMaterialData &data) override
 Compute shape functions based on master element in the classical FEM manne. More...
 
virtual void ComputeSolution (TPZVec< REAL > &qsi, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphix, const TPZFMatrix< REAL > &axes, TPZSolVec &sol, TPZGradSolVec &dsol) override
 Computes solution and its derivatives in local coordinate qsi. More...
 
virtual void ComputeSolution (TPZVec< REAL > &qsi, TPZVec< REAL > &normal, TPZSolVec &leftsol, TPZGradSolVec &dleftsol, TPZFMatrix< REAL > &leftaxes, TPZSolVec &rightsol, TPZGradSolVec &drightsol, TPZFMatrix< REAL > &rightaxes) override
 Computes solution and its derivatives in the local coordinate qsi.
This method will function for both volumetric and interface elements. More...
 
virtual REAL CompareElement (int var, char *matname) override
 Compare the L2 norm of the difference between the švarš solution of the current element with the švarš solution of the element which is pointed to by the geometric element. More...
 
Data consistency methods

These methods are used during the debugging phase and check the consistency of the data structures

void CheckConstraintConsistency (int side)
 Check the consistency of the constrained connects along a side. More...
 
void CheckConstraintConsistency ()
 Check the consistency of the constrained connects for all sides. More...
 
virtual int CheckElementConsistency ()
 Checks element data structure consistancy. More...
 
int CompareShapeF (int sides, int sidel, TPZFMatrix< REAL > &phis, TPZFMatrix< REAL > &dphis, TPZFMatrix< REAL > &phil, TPZFMatrix< REAL > &dphil, TPZTransform<> &transform)
 Compare the shape functions of sides of an element. More...
 
virtual TPZTransform TransformSideToElement (int side)=0
 Returns the transformation which transform a point from the side to the interior of the element. More...
 
- Public Member Functions inherited from TPZInterpolationSpace
 TPZInterpolationSpace ()
 Default constructor. More...
 
virtual ~TPZInterpolationSpace ()
 Default destructor. More...
 
 TPZInterpolationSpace (TPZCompMesh &mesh, const TPZInterpolationSpace &copy)
 Puts a copy of the element in the referred mesh. More...
 
 TPZInterpolationSpace (TPZCompMesh &mesh, const TPZInterpolationSpace &copy, std::map< int64_t, int64_t > &gl2lcElMap)
 Puts a copy of the element in the patch mesh. More...
 
 TPZInterpolationSpace (TPZCompMesh &mesh, const TPZInterpolationSpace &copy, int64_t &index)
 Copy of the element in the new mesh whit alocated index. More...
 
 TPZInterpolationSpace (TPZCompMesh &mesh, TPZGeoEl *gel, int64_t &index)
 Create a computational element within mesh. More...
 
virtual void ComputeShape (TPZVec< REAL > &intpoint, TPZMaterialData &data)
 Compute shape functions based on master element in the classical FEM manne. More...
 
virtual void InitMaterialData (TPZMaterialData &data)
 Initialize a material data and its attributes based on element dimension, number of state variables and material definitions. More...
 
virtual void ComputeRequiredData (TPZMaterialData &data, TPZVec< REAL > &qsi)
 Compute and fill data with requested attributes. More...
 
virtual void ComputeRequiredData (TPZVec< REAL > &intpointtemp, TPZVec< TPZTransform< REAL > > &trvec, TPZVec< TPZMaterialData > &datavec)
 Compute and fill data with requested attributes for each of the compels in fElementVec. More...
 
virtual void ComputeNormal (TPZMaterialData &data)
 Computes the proper normal vector towards the neighbour element. More...
 
void VectorialProd (TPZVec< REAL > &ivec, TPZVec< REAL > &jvec, TPZVec< REAL > &kvec, bool unitary=false)
 Computes the vectorial product of two vectors and normalize the result if unitary is set to true. More...
 
virtual void CalcStiff (TPZElementMatrix &ek, TPZElementMatrix &ef) override
 Computes the element stiffness matrix and right hand side. More...
 
virtual void CalcResidual (TPZElementMatrix &ef) override
 Only computes the element residual. More...
 
virtual void InitializeElementMatrix (TPZElementMatrix &ek, TPZElementMatrix &ef)
 Initialize element matrix in which is computed CalcStiff. More...
 
virtual void InitializeElementMatrix (TPZElementMatrix &ef)
 Initialize element matrix in which is computed in CalcResidual. More...
 
void MinMaxSolutionValues (TPZVec< STATE > &min, TPZVec< STATE > &max)
 Returns minimum and maximum values for each state variable. More...
 
virtual const TPZIntPointsGetIntegrationRule () const override=0
 Returns a reference to an integration rule suitable for integrating the interior of the element. More...
 
virtual TPZIntPointsGetIntegrationRule ()=0
 Returns a reference to an integration rule suitable for integrating the interior of the element. More...
 
virtual REAL InnerRadius ()
 Returns the inner radius value. More...
 
virtual void Solution (TPZVec< REAL > &qsi, int var, TPZVec< STATE > &sol) override
 Post processing method which computes the solution for the var post processed variable. More...
 
void InterpolateSolution (TPZInterpolationSpace &coarsel)
 Interpolates the solution into the degrees of freedom nodes from the degrees of freedom nodes from the coarse element. More...
 
void CreateInterfaces (bool BetweenContinuous=false)
 Create interfaces between this and its neighbours. More...
 
TPZInterfaceElementCreateInterface (int side, bool BetweenContinuous=false)
 Create an interface between this and the neighbour by side side. More...
 
int ExistsInterface (TPZGeoElSide geosd)
 Verify existence of interface. More...
 
void RemoveInterfaces ()
 Remove interfaces connected to this element. More...
 
void RemoveInterface (int side)
 Remove interface which is neighbour from side side. More...
 
virtual void EvaluateError (std::function< void(const TPZVec< REAL > &loc, TPZVec< STATE > &val, TPZFMatrix< STATE > &deriv)> func, TPZVec< REAL > &errors, bool store_error) override
 Performs an error estimate on the elemen. More...
 
virtual void ComputeError (int errorid, TPZVec< REAL > &error) override
 Computes the element error estimator. More...
 
virtual TPZVec< STATE > IntegrateSolution (int variable) const override
 Integrate a variable over the element. More...
 
virtual void Integrate (int variable, TPZVec< STATE > &value) override
 Integrates a variable over the element. More...
 
void ProjectFlux (TPZElementMatrix &ek, TPZElementMatrix &ef) override
 Integrate the solution over the element. More...
 
virtual int GetPreferredOrder ()
 Returns the prefered order for the element. More...
 
virtual int GetSideOrient (int side)
 It returns the normal orientation of the reference element by the side. Only side that has dimension larger than zero and smaller than me. More...
 
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 dimension minus one. More...
 
void BuildTransferMatrix (TPZInterpolationSpace &coarsel, TPZTransform<> &t, TPZTransfer< STATE > &transfer)
 Accumulates the transfer coefficients between the current element and the coarse element
into the transfer matrix, using the transformation t. More...
 
int NSideShapeF (int side) const
 Returns the number of shape functions on a side. More...
 
int64_t SideConnectIndex (int icon, int is) const
 Returns the index of the c th connect object along side is. More...
 
TPZConnectSideConnect (int icon, int is) const
 Returns a pointer to the icon th connect object along side is. More...
 
virtual int NConnectShapeF (int icon, int order) const =0
 Returns the number of shapefunctions associated with a connect. More...
 
virtual int MaxOrder ()
 Returns the max order of interpolation. More...
 
virtual void AdjustIntegrationRule ()
 Adjust the integration rule according to the polynomial order of shape functions. More...
 
virtual int ComputeIntegrationOrder () const override
 Compute integration order according to ... . More...
 
virtual void Shape (TPZVec< REAL > &qsi, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphidxi)=0
 Computes the shape function set at the point x. More...
 
virtual void ComputeShape (TPZVec< REAL > &intpoint, TPZVec< REAL > &X, TPZFMatrix< REAL > &jacobian, TPZFMatrix< REAL > &axes, REAL &detjac, TPZFMatrix< REAL > &jacinv, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi, TPZFMatrix< REAL > &dphidx)
 Compute shape functions based on master element in the classical FEM manner. More...
 
- Public Member Functions inherited from TPZCompEl
 TPZCompEl ()
 Simple Constructor. More...
 
virtual ~TPZCompEl ()
 Simple destructor. More...
 
virtual TPZCompElClone (TPZCompMesh &mesh) const =0
 Method for creating a copy of the element. More...
 
virtual TPZCompElClonePatchEl (TPZCompMesh &mesh, std::map< int64_t, int64_t > &gl2lcConMap, std::map< int64_t, int64_t > &gl2lcElMap) const =0
 Method for creating a copy of the element in a patch mesh. More...
 
 TPZCompEl (TPZCompMesh &mesh, const TPZCompEl &copy)
 Put a copy of the element in the referred mesh. More...
 
 TPZCompEl (TPZCompMesh &mesh, const TPZCompEl &copy, std::map< int64_t, int64_t > &gl2lcElMap)
 Put a copy of the element in the patch mesh. More...
 
 TPZCompEl (TPZCompMesh &mesh, const TPZCompEl &copy, int64_t &index)
 Copy of the element in the new mesh returning allocated index. More...
 
 TPZCompEl (TPZCompMesh &mesh, TPZGeoEl *gel, int64_t &index)
 Creates a computational element within mesh. Inserts the element within the data structure of the mesh. More...
 
virtual REAL VolumeOfEl ()
 Returns the volume of the geometric element associated. More...
 
virtual void LoadElementReference ()
 Loads the geometric element reference. More...
 
virtual void Assemble ()
 Computes the element stifness matrix and right hand side in an internal data structure. Used for initializing condensed element data structures. More...
 
virtual bool HasMaterial (const std::set< int > &materialids) const
 Verifies if the material associated with the element is contained in the set. More...
 
virtual void CreateGraphicalElement (TPZGraphMesh &graphmesh, int dimension)
 Creates corresponding graphical element(s) if the dimension matches graphical elements are used to generate output files. More...
 
virtual void GetMemoryIndices (TPZVec< int64_t > &indices) const
 Get the indices of the vector of element memory associated with the integration points. More...
 
virtual void SetMemoryIndices (TPZVec< int64_t > &indices)
 Set the indices of the vector of element memory associated with the integration points. More...
 
virtual void PrepareIntPtIndices ()
 Prepare the vector of the material withmem with the correct integration point indexes. More...
 
virtual void ForcePrepareIntPtIndices ()
 PrepareIntPtIndices initializes the material damage varibles memory in the proper material class. More...
 
virtual void SetFreeIntPtIndices ()
 Frees the material damage varibles memory in the proper material class. More...
 
virtual int NumberOfCompElementsInsideThisCompEl ()
 Return the size of the elementvec in multiphysics, if it is not multiphysics, just return 1. More...
 
virtual void TransferMultiphysicsElementSolution ()
 
virtual void SetMultiphysicsElementSolution ()
 
virtual std::list< TPZOneShapeRestraintGetShapeRestraints () const
 Return a list with the shape restraints. More...
 
virtual void ResetShapeRestraints ()
 Return a list with the shape restraints. More...
 
virtual TPZVec< STATE > IntegrateSolution (const std::string &varname, const std::set< int > &matids)
 Compute the integral of a variable defined by the string if the material id is included in matids. More...
 
virtual void BuildConnectList (std::set< int64_t > &indepconnectlist, std::set< int64_t > &depconnectlist)
 Builds the list of all connectivities related to the element including the connects pointed to by dependent connects. More...
 
virtual void BuildConnectList (TPZStack< int64_t > &connectlist) const
 Builds the list of all connectivities related to the element including the connects pointed to by dependent connects. More...
 
virtual void BuildConnectList (std::set< int64_t > &connectlist)
 Builds the list of all connectivities related to the element including the connects pointed to by dependent connects. More...
 
virtual int HasDependency ()
 Returns 1 if the element has at least one dependent node. Returns 0 otherwise. More...
 
virtual int PressureConnectIndex () const
 Returns the index of the pressure connect. More...
 
virtual void ReduceInternalNodes ()
 Domain Decomposition.
This method will eliminate the nodes which are internal to the element from the datastructure of the grid
After calling this method, the superelement will statically condense the internal equations. More...
 
virtual void CalcBlockDiagonal (TPZStack< int64_t > &connectlist, TPZBlockDiagonal< STATE > &block)
 Calculates the diagonal block. More...
 
REAL MaximumRadiusOfEl ()
 Will return the maximum distance between the nodes of the reference element. More...
 
REAL LesserEdgeOfEl ()
 Will return the smallest distance between two nodes of the reference element. More...
 
virtual void InitializeIntegrationRule ()
 
virtual void SetIntegrationRule (TPZIntPoints *intrule)
 Method to set a dynamically allocated integration rule. More...
 
virtual MElementType Type ()
 Return the type of the element. More...
 
virtual int IsInterface ()
 
TPZGeoElReference () const
 Return a pointer to the corresponding geometric element if such exists, return 0 otherwise. More...
 
void SetReference (int64_t referenceindex)
 
virtual bool NeedsComputing (const std::set< int > &materialids)
 return true if the element has a variational statement associated with the material ids More...
 
virtual int NEquations ()
 Returns the number of equations of the element. More...
 
int64_t Index () const
 Returns element index of the mesh fELementVec list. More...
 
void SetIndex (int64_t index)
 Sets element index of the mesh fELementVec list. More...
 
virtual int64_t ConnectIndex (int i) const =0
 Returns the index of the ith connectivity of the element. More...
 
virtual TPZConnectConnect (int i) const
 Returns a pointer to the ith node. More...
 
virtual TPZMaterialMaterial () const
 Identify the material object associated with the element. More...
 
TPZGeoElGetRefElPatch ()
 Returns the reference geometric element patch.
Look for a geometric element which refers to a computational element and is neighbour of the current element AND is larger than the current element. More...
 
virtual void LoadSolution ()
 Loads the solution within the internal data structure of the element. More...
 
void SetMesh (TPZCompMesh *mesh)
 Sets the grid of the element. More...
 
TPZCompMeshMesh () const
 Return a pointer to the grid of the element. More...
 
virtual void PrintSolution (TPZVec< REAL > &point, const char *VarName, std::ostream &out)
 Prints the solution - sol - for the variable "VarName" at point specified in terms of the master element coordinates. More...
 
virtual void PrintCoordinate (TPZVec< REAL > &point, int CoordinateIndex, std::ostream &out)
 Prints one coordinate index corresponding to the point to the output stream. More...
 
virtual void PrintTitle (const char *VarName, std::ostream &out)
 Prints the variables names associated with the element material. More...
 
- Public Member Functions inherited from TPZSavable
 TPZSavable ()
 
virtual ~TPZSavable ()
 
virtual std::list< std::map< std::string, uint64_t > > VersionHistory () const
 
virtual std::pair< std::string, uint64_t > Version () const
 
virtual bool Compare (TPZSavable *copy, bool override=false)
 Compares the object for identity with the object pointed to, eventually copy the object. More...
 
virtual bool Compare (TPZSavable *copy, bool override=false) const
 Compares the object for identity with the object pointed to, eventually copy the object. More...
 
- Public Member Functions inherited from TPZRegisterClassId
template<typename T >
 TPZRegisterClassId (int(T::*)() const)
 
 TPZRegisterClassId ()=default
 

Protected Member Functions

void UpdateNeighbourSideOrder (int side, TPZVec< TPZCompElSide > &elvec)
 Updates the interpolation order of all neighbouring elements along side to have side order equal to the side order of the current element. More...
 
- Protected Member Functions inherited from TPZInterpolationSpace
void ExpandShapeFunctions (TPZVec< int64_t > &connectlist, TPZVec< int > &dependencyorder, TPZVec< int > &blocksizes, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
 Auxiliary method to expand a vector of shapefunctions and their derivatives to acount for constraints. More...
 

Static Protected Member Functions

static int ComputeSideOrder (TPZVec< TPZCompElSide > &elementset)
 Computes the minimum interpolation order of the elements contained in elementset this method is used to identify the side order of a set of equal level elements. More...
 

Adaptivity methods

Methods which help to implement the adaptive process

enum  MInsertMode { EInsert, EDelete }
 Defines a flag indicating the state of creation/deletion of the element This has an impact on how constraints are being computed. More...
 
void Divide (int64_t index, TPZVec< int64_t > &sub, int interpolatesolution=0) override
 Implement the refinement of an interpolated element. More...
 
void PRefine (int order) override
 Changes the interpolation order of a side. Updates all constraints and block sizes
. More...
 
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 the element. More...
 
virtual void RemoveSideRestraintsII (MInsertMode mode)
 Delete the restraints on the nodes of the connected elements if necessary. More...
 
virtual void RemoveSideRestraintWithRespectTo (int side, const TPZCompElSide &neighbour)
 Removes the side restraints of the current element along side with respect to neighbour/side. More...
 
void RecomputeRestraints (int side)
 Will recompute the restraints of all connects which are restrained by this side. More...
 
virtual void AddShapeRestraint (TPZOneShapeRestraint restraint) override
 Add a shape restraint (meant to fit the pyramid to restraint. More...
 
virtual void BuildTransferMatrix (TPZInterpolatedElement &coarsel, TPZTransform<> &t, TPZTransfer< STATE > &transfer)
 Accumulates the transfer coefficients between the current element and the coarse element into the transfer matrix, using the transformation t. More...
 
virtual int64_t CreateMidSideConnect (int side)
 Verify the neighbours of the element and create a node along this side. More...
 
virtual void IdentifySideOrder (int side)
 Checks if the side order is consistent with the preferred side order and with the constraints and recomputes the constraints if necessary. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from TPZInterpolationSpace
static void Convert2Axes (const TPZFMatrix< REAL > &dphi, const TPZFMatrix< REAL > &jacinv, TPZFMatrix< REAL > &dphidx)
 convert a shapefunction derivative in xi-eta to a function derivative in axes More...
 
- Static Public Member Functions inherited from TPZCompEl
static int StaticClassId ()
 
static void SetgOrder (int order)
 Sets the value of the default interpolation order. More...
 
static int GetgOrder ()
 Set the default value of the interpolation order. More...
 
static void SetOrthogonalFunction (void(*orthogonal)(REAL x, int num, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi))
 Sets the orthogonal function which will be used throughout the program by default this function is the Chebyshev function. More...
 
static void Chebyshev (REAL x, int num, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
 Implements of the orthogonal Chebyshev functions. More...
 
- Static Public Member Functions inherited from TPZSavable
static std::set< TPZRestoreClassBase * > & RestoreClassSet ()
 This static function guarantees that the gMap object is available when needed. More...
 
static std::map< int, TPZRestore_t > & ClassIdMap ()
 This static function guarantees that the gMap object is available when needed. More...
 
static std::pair< std::string, uint64_t > NeoPZVersion ()
 
static void Register (TPZRestoreClassBase *restore)
 
static void RegisterClassId (int classid, TPZRestore_t fun)
 
static TPZSavableCreateInstance (const int &classId)
 
- Protected Attributes inherited from TPZInterpolationSpace
int fPreferredOrder
 Preferred polynomial order. More...
 
- Protected Attributes inherited from TPZCompEl
TPZCompMeshfMesh
 Computational mesh to which the element belongs. More...
 
int64_t fIndex
 Element index into mesh element vector. More...
 
TPZIntPointsfIntegrationRule
 Integration rule established by the user. More...
 

Detailed Description

Implements computational element based on an interpolation space. Computational Element.

All h and p adaptive methods are implemented in this class
derived classes need to implement the behaviour (interface) defined in this class
this makes the adaptive process extremely general

Definition at line 27 of file pzintel.h.

Member Enumeration Documentation

◆ MInsertMode

Defines a flag indicating the state of creation/deletion of the element This has an impact on how constraints are being computed.

Parameters
EInsertThe element is being inserted
EDeleteThe element is being deleted
Enumerator
EInsert 
EDelete 

Definition at line 331 of file pzintel.h.

Constructor & Destructor Documentation

◆ TPZInterpolatedElement() [1/4]

TPZInterpolatedElement::TPZInterpolatedElement ( TPZCompMesh mesh,
TPZGeoEl reference,
int64_t &  index 
)

Constructor with a mesh and geometric element as arguments.

Parameters
meshmesh object into which the element will insert itself
referencereference object to which this element will refer
indexindex in the vector of elements of mesh where this element was inserted

Definition at line 42 of file pzintel.cpp.

◆ TPZInterpolatedElement() [2/4]

TPZInterpolatedElement::TPZInterpolatedElement ( TPZCompMesh mesh,
const TPZInterpolatedElement copy 
)

Constructor aimed at creating a copy of an interpolated element within a new mesh.

Definition at line 46 of file pzintel.cpp.

◆ TPZInterpolatedElement() [3/4]

TPZInterpolatedElement::TPZInterpolatedElement ( TPZCompMesh mesh,
const TPZInterpolatedElement copy,
std::map< int64_t, int64_t > &  gl2lcElMap 
)

Copy the given element into a new patch mesh.

Parameters
meshpatch mesh
copyelement to be copied
gl2lcElMapmap the indexes of the orginal mesh to the pacht mesh

Definition at line 50 of file pzintel.cpp.

◆ TPZInterpolatedElement() [4/4]

TPZInterpolatedElement::TPZInterpolatedElement ( )

Definition at line 56 of file pzintel.cpp.

◆ ~TPZInterpolatedElement()

TPZInterpolatedElement::~TPZInterpolatedElement ( )
virtual

Destructor, does nothing.

Definition at line 60 of file pzintel.cpp.

Member Function Documentation

◆ AddShapeRestraint()

virtual void TPZInterpolatedElement::AddShapeRestraint ( TPZOneShapeRestraint  restraint)
inlineoverridevirtual

◆ AdjustPreferredSideOrder()

int TPZInterpolatedElement::AdjustPreferredSideOrder ( int  side,
int  order 
)

◆ BuildCornerConnectList()

void TPZInterpolatedElement::BuildCornerConnectList ( std::set< int64_t > &  connectindexes) const
overridevirtual

adds the connect indexes associated with base shape functions to the set

Implements TPZCompEl.

Definition at line 2053 of file pzintel.cpp.

References TPZCompEl::ConnectIndex(), and NCornerConnects().

◆ BuildTransferMatrix()

void TPZInterpolatedElement::BuildTransferMatrix ( TPZInterpolatedElement coarsel,
TPZTransform<> &  t,
TPZTransfer< STATE > &  transfer 
)
virtual

Accumulates the transfer coefficients between the current element and the coarse element into the transfer matrix, using the transformation t.

Parameters
coarsellarger element with respect to which the transfer matrix is computed
ttransformation which maps the master element space of the current element into the master element space of the coarse element
transfertransfer matrix mapping the solution of the coarse mesh into the fine meshThis method forms the basis for the multigrid method

Definition at line 447 of file pzintel.cpp.

References TPZTransfer< TVar >::AddBlockNumbers(), TPZTransform< T >::Apply(), TPZCompEl::BuildConnectList(), TPZConnect::BuildDependencyOrder(), TPZIntPoints::Clone(), TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), TPZCompMesh::ConnectVec(), DebugStop, dimension, Dimension(), ELDLt, TPZInterpolationSpace::ExpandShapeFunctions(), TPZInterpolationSpace::GetIntegrationRule(), GetInterpolationOrder(), TPZIntPoints::GetOrder(), TPZMatrix< TVar >::GetSub(), TPZConnect::HasDependency(), TPZCompEl::HasDependency(), TPZTransfer< TVar >::HasRowDefinition(), TPZGeoEl::Jacobian(), LOGPZ_ERROR, TPZCompEl::Material(), TPZCompEl::Mesh(), MidSideConnect(), NConnects(), NCornerConnects(), TPZVec< T >::NElements(), Norm(), TPZIntPoints::NPoints(), TPZConnect::NShape(), NShapeF(), TPZMaterial::NStateVariables(), TPZConnect::Order(), TPZIntPoints::Point(), TPZBlock< TVar >::Position(), TPZStack< T, NumExtAlloc >::Push(), TPZCompEl::Reference(), TPZBlock< TVar >::Resequence(), TPZManVector< T, NumExtAlloc >::Resize(), TPZConnect::SequenceNumber(), TPZBlock< TVar >::Set(), TPZTransfer< TVar >::SetBlockMatrix(), TPZIntPoints::SetOrder(), TPZInterpolationSpace::Shape(), TPZBlock< TVar >::Size(), TPZMatrix< TVar >::SolveDirect(), pzgeom::tol, TPZGeoEl::X(), and TPZFMatrix< TVar >::Zero().

Referenced by AddShapeRestraint().

◆ CalcIntegral()

void TPZInterpolatedElement::CalcIntegral ( TPZElementMatrix ef)

◆ CanHaveInterface()

virtual int TPZInterpolatedElement::CanHaveInterface ( )
inlinevirtual

Definition at line 436 of file pzintel.h.

◆ CheckConstraintConsistency() [1/2]

void TPZInterpolatedElement::CheckConstraintConsistency ( int  side)

◆ CheckConstraintConsistency() [2/2]

void TPZInterpolatedElement::CheckConstraintConsistency ( )

Check the consistency of the constrained connects for all sides.

Definition at line 1087 of file pzintel.cpp.

References TPZGeoEl::NSides(), and TPZCompEl::Reference().

Referenced by AddShapeRestraint(), and RestrainSide().

◆ CheckElementConsistency()

int TPZInterpolatedElement::CheckElementConsistency ( )
virtual

◆ ClassId()

int TPZInterpolatedElement::ClassId ( ) const
overridevirtual

Define the class id associated with the class.

This id has to be unique for all classes A non unique id is flagged at the startup of the program

Reimplemented from TPZInterpolationSpace.

Definition at line 1935 of file pzintel.cpp.

References TPZInterpolationSpace::ClassId(), and Hash().

Referenced by TPZIntelGen< TSHAPE >::ClassId().

◆ CompareElement()

REAL TPZInterpolatedElement::CompareElement ( int  var,
char *  matname 
)
overridevirtual

Compare the L2 norm of the difference between the švarš solution of the current element with the švarš solution of the element which is pointed to by the geometric element.

Parameters
varvariable index indicating which difference is being integrated
matnamereference material name In order to use this method, call ResetReference on the geometric mesh to which the geometric reference element belongs and call LoadReference on the mesh of the element with which to compare the solution
This method only computes the error is the name of the material is matname

Reimplemented from TPZCompEl.

Definition at line 1487 of file pzintel.cpp.

References Dimension(), error(), fabs, TPZInterpolationSpace::GetIntegrationRule(), TPZGeoEl::Jacobian(), LOGPZ_ERROR, TPZCompEl::Material(), TPZMaterial::Name(), TPZIntPoints::NPoints(), TPZMaterial::NSolutionVariables(), TPZIntPoints::Point(), PZError, TPZCompEl::Reference(), TPZGeoEl::Reference(), TPZInterpolationSpace::Solution(), and TPZCompEl::Solution().

Referenced by SetIntegrationRule().

◆ CompareShapeF()

int TPZInterpolatedElement::CompareShapeF ( int  sides,
int  sidel,
TPZFMatrix< REAL > &  phis,
TPZFMatrix< REAL > &  dphis,
TPZFMatrix< REAL > &  phil,
TPZFMatrix< REAL > &  dphil,
TPZTransform<> &  transform 
)

Compare the shape functions of sides of an element.

Parameters
sidessmall side
sidellarge side
phissmall side function values
dphissmall side gradient function values
phillarge side function values
dphillarge side gradient function values
transformtransformation matrix from large side to small side

Definition at line 1167 of file pzintel.cpp.

References TPZCompEl::Connect(), LOGPZ_ERROR, TPZTransform< T >::Mult(), TPZConnect::NShape(), NSideConnects(), TPZCompEl::Reference(), SideConnectLocId(), and TPZGeoEl::SideDimension().

Referenced by AddShapeRestraint(), and CheckElementConsistency().

◆ ComputeSideOrder()

int TPZInterpolatedElement::ComputeSideOrder ( TPZVec< TPZCompElSide > &  elementset)
staticprotected

Computes the minimum interpolation order of the elements contained in elementset this method is used to identify the side order of a set of equal level elements.

Parameters
elementsetvector of element/sides which will be used to compute the maximum order
Returns
resulting side order

Definition at line 1371 of file pzintel.cpp.

References LOGPZ_DEBUG, LOGPZ_ERROR, TPZVec< T >::NElements(), and PreferredSideOrder().

Referenced by CreateMidSideConnect(), ForceSideOrder(), and IdentifySideOrder().

◆ ComputeSolution() [1/4]

void TPZInterpolatedElement::ComputeSolution ( TPZVec< REAL > &  qsi,
TPZSolVec sol,
TPZGradSolVec dsol,
TPZFMatrix< REAL > &  axes 
)
overridevirtual

Computes solution and its derivatives in the local coordinate qsi.

Methods for error evaluation
Methods for computing derived post processed values (depending on the variational statement)

Parameters
qsimaster element coordinate
solfinite element solution
dsolsolution derivatives
axesaxes indicating the direction of the derivatives

Reimplemented from TPZCompEl.

Reimplemented in TPZCompElHDiv< TSHAPE >, and TPZCompElHDivPressure< TSHAPE >.

Definition at line 1956 of file pzintel.cpp.

References TPZGeoEl::Dimension(), TPZGeoEl::Jacobian(), LOGPZ_ERROR, NShapeF(), TPZCompEl::Reference(), and TPZInterpolationSpace::Shape().

Referenced by ComputeSolution(), and SetIntegrationRule().

◆ ComputeSolution() [2/4]

void TPZInterpolatedElement::ComputeSolution ( TPZVec< REAL > &  qsi,
TPZMaterialData data 
)
overridevirtual

Compute shape functions based on master element in the classical FEM manne.

Parameters
[in]qsipoint in master element coordinates
[in]datastores all input data

Reimplemented from TPZCompEl.

Reimplemented in TPZCompElHDiv< TSHAPE >, and TPZCompElHDivPressure< TSHAPE >.

Definition at line 1949 of file pzintel.cpp.

References TPZMaterialData::axes, ComputeSolution(), TPZMaterialData::dphix, TPZMaterialData::dsol, TPZMaterialData::phi, and TPZMaterialData::sol.

◆ ComputeSolution() [3/4]

void TPZInterpolatedElement::ComputeSolution ( TPZVec< REAL > &  qsi,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphix,
const TPZFMatrix< REAL > &  axes,
TPZSolVec sol,
TPZGradSolVec dsol 
)
overridevirtual

Computes solution and its derivatives in local coordinate qsi.

Parameters
qsimaster element coordinate
phimatrix containing shape functions compute in qsi point
dphixmatrix containing the derivatives of shape functions with respect of global coordinates: D[phi,x], D[phi,y], D[phi,z]
axesaxes indicating the direction of the derivatives
solfinite element solution
dsolsolution derivatives

Reimplemented from TPZCompEl.

Reimplemented in TPZCompElHDiv< TSHAPE >, and TPZCompElHDivPressure< TSHAPE >.

Definition at line 2002 of file pzintel.cpp.

References TPZCompMesh::Block(), TPZMatrix< TVar >::Cols(), TPZCompEl::Connect(), TPZGeoEl::Dimension(), TPZVec< T >::Fill(), TPZCompEl::Material(), TPZCompEl::Mesh(), NConnects(), TPZMaterial::NStateVariables(), TPZBlock< TVar >::Position(), TPZCompEl::Reference(), TPZManVector< T, NumExtAlloc >::Resize(), TPZConnect::SequenceNumber(), TPZBlock< TVar >::Size(), and TPZCompMesh::Solution().

◆ ComputeSolution() [4/4]

void TPZInterpolatedElement::ComputeSolution ( TPZVec< REAL > &  qsi,
TPZVec< REAL > &  normal,
TPZSolVec leftsol,
TPZGradSolVec dleftsol,
TPZFMatrix< REAL > &  leftaxes,
TPZSolVec rightsol,
TPZGradSolVec drightsol,
TPZFMatrix< REAL > &  rightaxes 
)
overridevirtual

Computes solution and its derivatives in the local coordinate qsi.
This method will function for both volumetric and interface elements.

Parameters
qsimaster element coordinate of the interface element
normalunitary normal vector
leftsolfinite element solution
dleftsolsolution derivatives
leftaxesaxes associated with the left solution
rightsolfinite element solution
drightsolsolution derivatives
rightaxesaxes associated with the right solution

Reimplemented from TPZCompEl.

Reimplemented in TPZCompElHDiv< TSHAPE >.

Definition at line 2039 of file pzintel.cpp.

References TPZManVector< T, NumExtAlloc >::Resize(), TPZVec< T >::Resize(), and TPZFMatrix< TVar >::Zero().

◆ CreateMidSideConnect()

int64_t TPZInterpolatedElement::CreateMidSideConnect ( int  side)
virtual

Verify the neighbours of the element and create a node along this side.

Note
This is the central method for h-p adaptivity : the constructor of the element simply calls CreateMidSideConnect which does all the necessary adjustmentsIf necessary.
This method returns the index of the newly created node

Definition at line 654 of file pzintel.cpp.

References TPZCompMesh::AllocateNewConnect(), TPZCompMesh::Block(), ComputeSideOrder(), TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), TPZCompMesh::ConnectVec(), DebugStop, Dimension(), TPZGeoElSide::Dimension(), EffectiveSideOrder(), TPZCompElSide::Element(), TPZCompElSide::EqualLevelElementList(), TPZCompElSide::Exists(), TPZCompMesh::GetDefaultOrder(), TPZConnect::HasDependency(), TPZCompElSide::HigherLevelElementList(), IdentifySideOrder(), LOGPZ_ERROR, TPZCompElSide::LowerLevelElementList(), TPZCompEl::Material(), TPZGeoEl::MaterialId(), TPZCompEl::Mesh(), MidSideConnect(), MidSideConnectLocId(), TPZInterpolationSpace::NConnectShapeF(), NCornerConnects(), TPZVec< T >::NElements(), TPZMaterial::NStateVariables(), TPZConnect::Order(), PreferredSideOrder(), TPZConnect::Print(), TPZStack< T, NumExtAlloc >::Push(), TPZCompEl::Reference(), TPZCompElSide::Reference(), RemoveSideRestraintWithRespectTo(), TPZGeoEl::ResetReference(), TPZManVector< T, NumExtAlloc >::Resize(), RestrainSide(), TPZConnect::SequenceNumber(), TPZBlock< TVar >::Set(), SetConnectIndex(), TPZConnect::SetNShape(), TPZGeoEl::SetReference(), SetSideOrder(), and TPZCompElSide::Side().

Referenced by AddShapeRestraint(), TPZCompElHDiv< TSHAPE >::TPZCompElHDiv(), TPZCompElHDivBound2< TSHAPE >::TPZCompElHDivBound2(), TPZCompElHDivPressureBound< TSHAPE >::TPZCompElHDivPressureBound(), and TPZIntelGen< TSHAPE >::TPZIntelGen().

◆ DeleteInterfaces()

virtual void TPZInterpolatedElement::DeleteInterfaces ( )
inlinevirtual

Definition at line 437 of file pzintel.h.

References CalcIntegral(), and MeanSolution().

◆ Dimension()

virtual int TPZInterpolatedElement::Dimension ( ) const
overridepure virtual

◆ Divide()

void TPZInterpolatedElement::Divide ( int64_t  index,
TPZVec< int64_t > &  sub,
int  interpolatesolution = 0 
)
overridevirtual

Implement the refinement of an interpolated element.

Parameters
index[in] index of the current element in the mesh
sub[out] indices of the subelements (they are already inserted in the mesh)
interpolatesolution[in] if == 1 the solution of the original element is projected on the solution of the subelements
See also
PRefine
Note
This is the user interface to adaptive refinement of this class Divides the current element into subelements. Inserts the subelements in the mesh of the element and returns their indices

Implement the refinement of an interpolated element

Reimplemented from TPZCompEl.

Definition at line 1396 of file pzintel.cpp.

References TPZCheckMesh::CheckConnectOrderConsistency(), CheckConstraintConsistency(), TPZCompMesh::CreateCompEl(), TPZGeoEl::Divide(), EDelete, TPZCompMesh::ElementVec(), EPoint, TPZCompMesh::ExpandSolution(), TPZCompEl::fMesh, TPZCompEl::Index(), TPZGeoEl::Index(), TPZInterpolationSpace::InterpolateSolution(), LOGPZ_DEBUG, LOGPZ_ERROR, LOGPZ_WARN, TPZCompEl::Mesh(), NConnects(), TPZVec< T >::NElements(), TPZGeoEl::NSides(), TPZGeoEl::NSubElements(), PreferredSideOrder(), TPZCompEl::Reference(), TPZInterpolationSpace::RemoveInterfaces(), RemoveSideRestraintsII(), TPZGeoEl::ResetReference(), TPZVec< T >::Resize(), TPZCompMesh::SetAllCreateFunctions(), TPZCompMesh::SetDefaultOrder(), and TPZCompEl::Type().

Referenced by TPZAnalysisError::HPAdapt(), SetIntegrationRule(), and TPZAnalysisError::ZoomInSingularity().

◆ EffectiveSideOrder()

virtual int TPZInterpolatedElement::EffectiveSideOrder ( int  side) const
pure virtual

◆ ForceSideOrder()

void TPZInterpolatedElement::ForceSideOrder ( int  side,
int  order 
)
virtual

◆ GetInterpolationOrder()

virtual void TPZInterpolatedElement::GetInterpolationOrder ( TPZVec< int > &  ord)
pure virtual

Identifies the interpolation order of all connects of the element different from the corner connects.

Note there is a diference between the actual side order returned by this method and the side order which the element naturally would have, which is returned by PreferredSideOrder

Parameters
ordvector which will be filled with the side orders of the element

Implemented in TPZCompElHDiv< TSHAPE >, TPZCompElHDivPressureBound< TSHAPE >, TPZCompElHDivPressure< TSHAPE >, TPZCompElHDivBound2< TSHAPE >, and TPZIntelGen< TSHAPE >.

Referenced by BuildTransferMatrix(), and TPZMGAnalysis::ElementError().

◆ IdentifySideOrder()

void TPZInterpolatedElement::IdentifySideOrder ( int  side)
virtual

Checks if the side order is consistent with the preferred side order and with the constraints and recomputes the constraints if necessary.

Calls IdentifySideOrder on higher level (i.e. smaller) connected elements recursively

comparte the fPreferred Orders of the neighbouring elements

if the dimension of the side = 0 there will be no smaller connects depending on it

Now we will look at the smaller connects

Definition at line 216 of file pzintel.cpp.

References ComputeSideOrder(), TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), DebugStop, dimension, TPZGeoElSide::Dimension(), EffectiveSideOrder(), TPZCompElSide::Element(), TPZCompElSide::EqualLevelElementList(), TPZCompElSide::Exists(), TPZCompEl::HasDependency(), TPZCompElSide::HigherLevelElementList(), IdentifySideOrder(), TPZConnect::LagrangeMultiplier(), LOGPZ_WARN, TPZCompElSide::LowerLevelElementList(), TPZCompEl::Mesh(), MidSideConnect(), MidSideConnectLocId(), TPZVec< T >::NElements(), TPZConnect::Order(), TPZConnect::Print(), TPZStack< T, NumExtAlloc >::Push(), TPZCompEl::Reference(), TPZCompElSide::Reference(), RemoveSideRestraintWithRespectTo(), RestrainSide(), SetSideOrder(), TPZCompElSide::Side(), TPZGeoEl::SideDimension(), TPZVec< T >::size(), and VerifyConstraintConsistency().

Referenced by AddShapeRestraint(), CreateMidSideConnect(), ForceSideOrder(), IdentifySideOrder(), TPZCompElHDiv< TSHAPE >::PRefine(), PRefine(), RemoveSideRestraintsII(), TPZCompElHDiv< TSHAPE >::TPZCompElHDiv(), and UpdateNeighbourSideOrder().

◆ Interface()

virtual int TPZInterpolatedElement::Interface ( int  )
inlinevirtual

Definition at line 435 of file pzintel.h.

◆ MeanSolution()

REAL TPZInterpolatedElement::MeanSolution ( int  var)

◆ MidSideConnect()

TPZConnect & TPZInterpolatedElement::MidSideConnect ( int  is) const
virtual

◆ MidSideConnectLocId()

int TPZInterpolatedElement::MidSideConnectLocId ( int  is) const
virtual

◆ NConnects()

virtual int TPZInterpolatedElement::NConnects ( ) const
overridepure virtual

◆ NCornerConnects()

virtual int TPZInterpolatedElement::NCornerConnects ( ) const
pure virtual

◆ NShapeF()

int TPZInterpolatedElement::NShapeF ( ) const
overridevirtual

◆ NSideConnects()

virtual int TPZInterpolatedElement::NSideConnects ( int  iside) const
overridepure virtual

◆ NSideShapeF()

int TPZInterpolatedElement::NSideShapeF ( int  side) const

◆ PreferredSideOrder()

virtual int TPZInterpolatedElement::PreferredSideOrder ( int  iside)
pure virtual

◆ PRefine()

void TPZInterpolatedElement::PRefine ( int  order)
overridevirtual

Changes the interpolation order of a side. Updates all constraints and block sizes
.

Parameters
orderinterpolation order which the user requests
See also
ComputeSideOrder
Note
This is the user interface to adaptive refinement of this class This call will not šnecessarilyš modify the interpolation order of the side. The interpolation order of neighbouring elements need to remain compatible. The actual order is obtained by calling ComputeSideOrder

Implements TPZInterpolationSpace.

Definition at line 1592 of file pzintel.cpp.

References TPZCompEl::Connect(), TPZCompEl::fMesh, IdentifySideOrder(), TPZCompEl::Index(), TPZGeoEl::Index(), LOGPZ_DEBUG, TPZGeoEl::Mesh(), TPZCompEl::Mesh(), NConnects(), TPZConnect::Order(), PZError, TPZCompEl::Reference(), TPZCompMesh::Reference(), and SetPreferredOrder().

Referenced by TPZCompMesh::AdjustBoundaryElements(), CreateCompMesh(), TPZAnalysisError::HPAdapt(), TPZHybridizeHDiv::HybridizeInternalSides(), SetIntegrationRule(), TPZCompMeshTools::SetPressureOrders(), TPZMGAnalysis::UniformlyRefineMesh(), and TPZAnalysisError::ZoomInSingularity().

◆ Print()

void TPZInterpolatedElement::Print ( std::ostream &  out = std::cout) const
overridevirtual

◆ Read()

void TPZInterpolatedElement::Read ( TPZStream buf,
void *  context 
)
overridevirtual

Reads the element data from a stream.

Read the element data from a stream

Reimplemented from TPZInterpolationSpace.

Definition at line 1945 of file pzintel.cpp.

References TPZInterpolationSpace::Read().

Referenced by TPZIntelGen< TSHAPE >::Read(), TPZCompElHDivPressure< TSHAPE >::Read(), and TPZCompElHDiv< TSHAPE >::Read().

◆ RecomputeRestraints()

void TPZInterpolatedElement::RecomputeRestraints ( int  side)

Will recompute the restraints of all connects which are restrained by this side.

Parameters
sideside of the large elementThis method will be called for a side when a connected lower dimension side is changing order

Definition at line 404 of file pzintel.cpp.

References dimension, Dimension(), EffectiveSideOrder(), TPZCompElSide::HigherLevelElementList(), TPZVec< T >::NElements(), TPZCompEl::Reference(), RemoveSideRestraintWithRespectTo(), TPZManVector< T, NumExtAlloc >::Resize(), RestrainSide(), and SetSideOrder().

Referenced by ForceSideOrder().

◆ RemoveSideRestraintsII()

void TPZInterpolatedElement::RemoveSideRestraintsII ( MInsertMode  mode)
virtual

Delete the restraints on the nodes of the connected elements if necessary.

Parameters
modeindicates insertion or deletion of element
Note
THIS IS A VERY TRICKY METHOD Depending on the insert mode, the neighbouring elements will need to recompute their constraints
insert indicates whether the element will be refined, coarsened, inserted or deleted
This method is only called during deletion

Definition at line 1286 of file pzintel.cpp.

References TPZGeoEl::Dimension(), EDelete, EInsert, TPZCompElSide::Element(), TPZCompElSide::EqualLevelElementList(), TPZCompElSide::Exists(), TPZCompElSide::HigherLevelElementList(), IdentifySideOrder(), LOGPZ_WARN, TPZCompElSide::LowerLevelElementList(), NCornerConnects(), TPZVec< T >::NElements(), NSideConnects(), TPZGeoEl::NSides(), TPZCompEl::Reference(), TPZGeoEl::Reference(), RemoveSideRestraintWithRespectTo(), TPZGeoEl::ResetReference(), TPZManVector< T, NumExtAlloc >::Resize(), RestrainSide(), TPZGeoEl::SetReference(), and TPZCompElSide::Side().

Referenced by TPZCompMesh::Coarsen(), Divide(), TPZCompElHDivPressure< TSHAPE >::~TPZCompElHDivPressure(), and TPZIntelGen< TSHAPE >::~TPZIntelGen().

◆ RemoveSideRestraintWithRespectTo()

void TPZInterpolatedElement::RemoveSideRestraintWithRespectTo ( int  side,
const TPZCompElSide neighbour 
)
virtual

Removes the side restraints of the current element along side with respect to neighbour/side.

Parameters
sideside of the current element which contains the constrained connect
neighbourelement/side with respect to which the connect is restrained This method checks (extensively) if the relative positions between both elements makes sense

Definition at line 1253 of file pzintel.cpp.

References TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), TPZCompElSide::Element(), TPZCompElSide::Exists(), TPZConnect::HasDependency(), LOGPZ_ERROR, LOGPZ_WARN, TPZCompElSide::LowerLevelElementList(), MidSideConnectLocId(), TPZGeoElSide::NeighbourExists(), NSideConnects(), TPZCompEl::Reference(), TPZCompElSide::Reference(), TPZConnect::RemoveDepend(), TPZCompElSide::Side(), SideConnectIndex(), and TPZGeoEl::SideDimension().

Referenced by CreateMidSideConnect(), IdentifySideOrder(), RecomputeRestraints(), and RemoveSideRestraintsII().

◆ RestrainSide()

void TPZInterpolatedElement::RestrainSide ( int  side,
TPZInterpolatedElement neighbour,
int  neighbourside 
)
virtual

Compute the shapefunction restraints which need to be applied to the shape functions on the side of the element.

no shape functions to restrain

Definition at line 849 of file pzintel.cpp.

References TPZConnect::AddDependency(), CheckConstraintConsistency(), TPZCheckRestraint::CheckRestraint(), TPZMatrix< TVar >::Cols(), TPZCompEl::Connect(), TPZCompEl::ConnectIndex(), TPZGeoEl::CreateSideIntegrationRule(), DebugStop, TPZCheckRestraint::Diagnose(), TPZGeoElSide::Dimension(), EffectiveSideOrder(), TPZCompElSide::Element(), ELU, EMathematicaInput, TPZCompElSide::Exists(), fabs, TPZConnect::TPZDepend::fDepMatrix, TPZConnect::HasDependency(), LOGPZ_DEBUG, LOGPZ_ERROR, LOGPZ_WARN, MidSideConnect(), MidSideConnectLocId(), TPZInterpolationSpace::NConnectShapeF(), TPZIntPoints::NPoints(), TPZConnect::NShape(), NSideConnects(), NSideShapeF(), TPZConnect::Order(), TPZIntPoints::Point(), TPZBlock< TVar >::Position(), TPZCheckRestraint::Print(), TPZMatrix< TVar >::Print(), TPZCompEl::Reference(), TPZCompElSide::Reference(), TPZBlock< TVar >::Resequence(), TPZCheckRestraint::RestraintMatrix(), TPZMatrix< TVar >::Rows(), TPZBlock< TVar >::Set(), TPZCompElSide::Side(), SideConnect(), SideConnectIndex(), SideConnectLocId(), pztopology::sidedimension, SideShapeFunction(), TPZGeoElSide::SideTransform3(), TPZBlock< TVar >::Size(), sqrt, and TPZFMatrix< TVar >::Zero().

Referenced by TPZMHMixedHybridMeshControl::CreateLowerDimensionPressureElements(), CreateMidSideConnect(), TPZMHMixedMeshControl::CreateSkeleton(), IdentifySideOrder(), RecomputeRestraints(), RemoveSideRestraintsII(), and SetIntegrationRule().

◆ SetConnectIndex()

virtual void TPZInterpolatedElement::SetConnectIndex ( int  i,
int64_t  connectindex 
)
overridepure virtual

◆ SetCreateFunctions()

void TPZInterpolatedElement::SetCreateFunctions ( TPZCompMesh mesh)
overridevirtual

Set create function in TPZCompMesh to create elements of this type.

Reimplemented from TPZCompEl.

Reimplemented in TPZCompElHDivPressureBound< TSHAPE >, TPZCompElHDivBound2< TSHAPE >, TPZCompElHDiv< TSHAPE >, and TPZCompElHDivPressure< TSHAPE >.

Definition at line 2126 of file pzintel.cpp.

References TPZCompMesh::SetAllCreateFunctionsContinuous().

◆ SetIntegrationRule()

virtual void TPZInterpolatedElement::SetIntegrationRule ( int  order)
inlineoverridevirtual

◆ SetInterface()

virtual void TPZInterpolatedElement::SetInterface ( int  ,
int64_t   
)
inlinevirtual

To enable to work with discontinuous element that can have interface elements.

Definition at line 434 of file pzintel.h.

◆ SetPreferredOrder()

virtual void TPZInterpolatedElement::SetPreferredOrder ( int  order)
overridepure virtual

Sets the preferred interpolation order along a side.

This method only updates the datastructure of the element In order to change the interpolation order of an element, use the method PRefine

Implements TPZInterpolationSpace.

Implemented in TPZCompElHDiv< TSHAPE >, TPZCompElHDivPressure< TSHAPE >, and TPZIntelGen< TSHAPE >.

Referenced by TPZMHMixedMeshControl::CreateHDivMHMMesh(), PRefine(), SetIntegrationRule(), and TPZHybridizeHDiv::SplitConnects().

◆ SetSideOrder()

virtual void TPZInterpolatedElement::SetSideOrder ( int  side,
int  order 
)
pure virtual

Sets the interpolation order of side to order.

This method only updates the datastructure of the element and updates the blocksize of the associated connect object

Note
DO NOT CALL THIS METHOD

Implemented in TPZCompElHDiv< TSHAPE >, TPZCompElHDivPressureBound< TSHAPE >, TPZIntelGen< TSHAPE >, and TPZCompElHDivBound2< TSHAPE >.

Referenced by TPZCompMeshTools::AdjustFluxPolynomialOrders(), TPZMHMixedMeshControl::CreateHDivMHMMesh(), CreateMidSideConnect(), ForceSideOrder(), IdentifySideOrder(), RecomputeRestraints(), and SetIntegrationRule().

◆ SideConnect()

TPZConnect & TPZInterpolatedElement::SideConnect ( int  icon,
int  is 
)

◆ SideConnectIndex()

int64_t TPZInterpolatedElement::SideConnectIndex ( int  icon,
int  is 
) const

◆ SideConnectLocId()

virtual int TPZInterpolatedElement::SideConnectLocId ( int  icon,
int  is 
) const
overridepure virtual

◆ SideShapeFunction()

virtual void TPZInterpolatedElement::SideShapeFunction ( int  side,
TPZVec< REAL > &  point,
TPZFMatrix< REAL > &  phi,
TPZFMatrix< REAL > &  dphi 
)
overridepure virtual

◆ TransformSideToElement()

virtual TPZTransform TPZInterpolatedElement::TransformSideToElement ( int  side)
pure virtual

Returns the transformation which transform a point from the side to the interior of the element.

Parameters
sideside from which the point will be tranformed (0<=side<=2)
Returns
TPZTransform<> object
See also
the class TPZTransform

Implemented in TPZCompElHDiv< TSHAPE >, TPZCompElHDivPressure< TSHAPE >, and TPZIntelGen< TSHAPE >.

Referenced by AddShapeRestraint().

◆ UpdateNeighbourSideOrder()

void TPZInterpolatedElement::UpdateNeighbourSideOrder ( int  side,
TPZVec< TPZCompElSide > &  elvec 
)
protected

Updates the interpolation order of all neighbouring elements along side to have side order equal to the side order of the current element.

Parameters
sideof the the element
elvecvector of elements whose side order will be set

Definition at line 432 of file pzintel.cpp.

References IdentifySideOrder(), MidSideConnect(), TPZVec< T >::NElements(), and TPZConnect::Order().

◆ VerifyConstraintConsistency()

bool TPZInterpolatedElement::VerifyConstraintConsistency ( int  side,
TPZCompElSide  large 
) const

return true if the connects associated with the side have dependency with large and if the dependency dimensions match

the number of sides with nonzero number of shapefunctions

the number of rows of the dependency matrix is equal to the number of shape functions of the connect associated with the small side

the number of columns of the dependency matrix is equal to the number of shape functions of the connect of the large element

Definition at line 2062 of file pzintel.cpp.

References TPZMatrix< TVar >::Cols(), TPZCompEl::Connect(), DebugStop, TPZGeoElSide::Dimension(), EffectiveSideOrder(), TPZCompElSide::Element(), TPZConnect::TPZDepend::fDepConnectIndex, TPZConnect::TPZDepend::fDepMatrix, TPZConnect::FirstDepend(), TPZConnect::TPZDepend::fNext, MidSideConnect(), MidSideConnectLocId(), TPZConnect::NShape(), NSideConnects(), TPZConnect::NumDepend(), TPZConnect::Order(), TPZCompEl::Reference(), TPZMatrix< TVar >::Rows(), TPZCompElSide::Side(), SideConnect(), and SideConnectIndex().

Referenced by IdentifySideOrder().

◆ Write()

void TPZInterpolatedElement::Write ( TPZStream buf,
int  withclassid 
) const
overridevirtual

Saves the element data to a stream.

Save the element data to a stream

Reimplemented from TPZInterpolationSpace.

Definition at line 1940 of file pzintel.cpp.

References TPZInterpolationSpace::Write().

Referenced by TPZIntelGen< TSHAPE >::Write(), TPZCompElHDivPressure< TSHAPE >::Write(), and TPZCompElHDiv< TSHAPE >::Write().


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