25 template<
class TFather>
26 class SPr :
public TFather {
30 typedef typename TFather::TMem
FatMem;
31 typedef typename TFather::Top
FatTop;
140 template<
class TFather>
143 if(!mem.IsInitialized())
145 mem.Initialize(
id,order);
147 else if(pt == mem.fpt)
164 if(ExtendPoint == mem.fExtendPoint)
166 shape1d = mem.fshape1d;
167 dshape1d = mem.fdshape1d;
175 int imax0 = shapelower.
Rows();
176 REAL fac = (1-ExtendPoint)/2.;
177 for(i=0; i<imax0; i++)
179 shape(i,0) = shapelower(i,0)*fac;
182 dshape(j,i) = dshapelower(j,i)*fac;
184 dshape(j,i) = -shapelower(i,0)/2;
186 int imax1 = imax0+shapeupper.
Rows();
187 fac = (1+ExtendPoint)/2.;
188 for(i=imax0; i<imax1; i++)
190 shape(i,0) = shapeupper(i-imax0,0)*fac;
193 dshape(j,i) = dshapelower(j,i-imax0)*fac;
195 dshape(j,i) = shapelower(i-imax0,0)/2;
202 for(is = 0; is < TFather::Top::NSides; is++)
204 int ishape, ishapebef, ishapeaft, ishapeext;
206 for(ishape=0; ishape<mem.
fNShape[is]; ishape++)
213 shape(ishape,0) = mem.
fExtShapes[is][orgind]*shapelower[ishapeext];
229 template<
class TFather>
234 TFather::ShapeCorner(pt,phifather,dphifather);
240 for(i=0; i< FatTop::NCornerNodes; i++)
242 phi(i,0) = faclower*phifather(i,0);
243 phi(i+FatTop::NCornerNodes,0) = facupper*phifather(i,0);
245 dphi(
Top::Dimension-1,i+FatTop::NCornerNodes) = 0.5*phifather(i,0);
247 for(j=0; j<FatTop::Dimension; j++)
249 dphi(j,i) = faclower*dphifather(j,i);
250 dphi(j,i+FatTop::NCornerNodes) = facupper*dphifather(j,i);
static int NShapeF(TPZVec< int > &order)
Total number of shapefunctions, considering the order of interpolation of the element.
int fExtSideOrders[TFather::Top::NSides]
Interpolation order of the extension sides.
int fMaxOrder
Value of maximum order of the extension sides.
groups all classes dedicated to the computation of shape functions
FatMem fUpper
Retained values of the upper shape functions.
TPZManVector< int, TFather::Top::NSides > fNShapeBefore
Number of shape functions before "my" shapefunctions (only for the extension sides) ...
TPZManVector< int, TFather::Top::NSides > fNShape
Number of shape functions for each extension side.
Implements the shape functions of a hexahedral (3D) element. Shape.
Contains TPZMatrixclass which implements full matrix (using column major representation).
int64_t Rows() const
Returns number of rows.
void Shape(TPZVec< REAL > &pt, TPZVec< int > orders, TPZVec< TPZTransform< REAL > > &transvec, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
FatMem fLower
Retained values of the lower shape functions.
static void SideShape(int side, TPZVec< REAL > &pt, TPZVec< int > &id, TPZVec< int > &order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
static int NSideShapeF(int side, int order)
Number of shapefunctions of the connect associated with the side, considering the order of interpolat...
TPZManVector< int, TFather::Top::NSides > fNShapeAfter
number of shape functions after "my" shapefunctions (only for the extension sides) ...
TPZManVector< int, TFather::Top::NSides > fSign
sign of the shape functions (positive or negative)
static void Shape(TPZVec< REAL > &pt, TPZVec< int > &id, TPZVec< int > &order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi, TMem &memory)
Computes the values of the shape functions and their derivatives for a hexahedral element...
TPZManVector< REAL > fShape
Values of the last computed shape functions.
FatMem fExtension
Retained values of the extension shape functions.
static void ShapeInternal(TPZVec< REAL > &x, int order, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
Compute the internal functions of the hexahedral shape function at a point The internal shape functi...
Temporary storage to accelerate the computation of shape functions.
Defines the Prismatic extension of a topology. Topology.
pztopology::Pr< FatTop > Top
int Resize(const int64_t newRows, const int64_t wCols) override
Redimension a matrix, but maintain your elements.
int64_t NElements() const
Returns the number of elements of the vector.
static void ShapeCorner(TPZVec< REAL > &pt, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
Computes the corner shape functions for a hexahedral element.
TPZManVector< REAL > fExtShapes[TFather::Top::NSides]
Values of the shape functions associated with the extension sides.
Non abstract class which implements full matrices with preallocated storage with (N+1) entries...