21 template<
class TFather>
22 class SPr :
public TFather {
27 typedef typename TFather::TMem
FatMem;
28 typedef typename TFather::Top
FatTop;
128 template<
class TFather>
131 if(!mem.IsInitialized())
133 mem.Initialize(
id,order);
135 else if(pt == mem.fpt)
152 if(ExtendPoint == mem.fExtendPoint)
154 shape1d = mem.fshape1d;
155 dshape1d = mem.fdshape1d;
163 int imax0 = shapelower.
Rows();
164 REAL fac = (1-ExtendPoint)/2.;
165 for(i=0; i<imax0; i++)
167 shape(i,0) = shapelower(i,0)*fac;
170 dshape(j,i) = dshapelower(j,i)*fac;
172 dshape(j,i) = -shapelower(i,0)/2;
174 int imax1 = imax0+shapeupper.
Rows();
175 fac = (1+ExtendPoint)/2.;
176 for(i=imax0; i<imax1; i++)
178 shape(i,0) = shapeupper(i-imax0,0)*fac;
181 dshape(j,i) = dshapelower(j,i-imax0)*fac;
183 dshape(j,i) = shapelower(i-imax0,0)/2;
187 REAL bubble = (1.+ExtendPoint)*(1.-ExtendPoint);
190 for(is = 0; is < TFather::Top::NSides; is++)
192 int ishape, ishapebef, ishapeaft, ishapeext;
194 for(ishape=0; ishape<mem.
fNShape[is]; ishape++)
201 shape(index,0) = mem.
fExtShapes[is][orgind]*shapelower[ishapeext];
212 template<
class TFather>
217 TFather::ShapeCorner(pt,phifather,dphifather);
223 for(i=0; i< FatTop::NCornerNodes; i++)
225 phi(i,0) = faclower*phifather(i,0);
226 phi(i+FatTop::NCornerNodes,0) = facupper*phifather(i,0);
228 dphi(
Top::Dimension-1,i+FatTop::NCornerNodes) = 0.5*phifather(i,0);
230 for(j=0; j<FatTop::Dimension; j++)
232 dphi(j,i) = faclower*dphifather(j,i);
233 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.
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...