10 template <
class TSHAPE>
12 template <
class TSHAPE>
14 template <
class TSHAPE>
19 template <
class TSHAPE>
21 int NSides = TSHAPE::NSides;
22 int NCorners = TSHAPE::NCornerNodes;
23 transvec.resize(NSides - NCorners);
24 for (
int iside = NCorners; iside< NSides ; iside++) {
25 int pos = iside - NCorners;
26 int trans_id = TSHAPE::GetTransformId(iside,
id);
27 transvec[pos] = GetSideTransform<TSHAPE>(iside, trans_id);
31 template <
class TSHAPE>
34 int dim = TSHAPE::Dimension;
35 int NSides = TSHAPE::NSides;
36 int NCorners = TSHAPE::NCornerNodes;
39 TSHAPE::ShapeCorner(pt,phi,dphi);
44 TSHAPE::ShapeGenerating(pt,phiblend, dphiblend);
46 for (
int side = NCorners; side<NSides ; side++)
49 int sidedim = TSHAPE::SideDimension(side);
50 int numshape =TSHAPE::NConnectShapeF( side, orders[side - NCorners]);
54 transform.
Apply(pt, outvec);
56 TSHAPE::ShapeInternal(side, outvec,orders[side - NCorners], phin, dphin);
57 REAL alpha = 1.0, beta =0.0;
59 transform.
Mult().
MultAdd(dphin, dphin, dphiaux, alpha, beta, transpose);
60 for (
int i = 0; i < numshape; i++) {
61 phi(shape,0) = phiblend(side,0)*phin(i,0);
62 for(
int xj=0;xj<TSHAPE::Dimension;xj++) {
63 dphi(xj,shape) = dphiblend(xj,side)*phin(i,0)+phiblend(side,0)*dphiaux(xj,i);
73 template <
class TSHAPE>
100 if ((side == TSHAPE::NSides - 1) && TSHAPE::Dimension>2) {
102 return TransElToSide;
107 TransElToSide.
Mult() = resul_mult;
110 TransElToSide.
Sum() =res1;
111 TransElToSide.
Sum() += TransParametric.
Sum();
115 return TransElToSide;
Contains TPZShapeTetra class which implements the shape functions of a tetrahedral element...
Implements a vector class which allows to use external storage provided by the user. Utility.
Contains TPZShapeLinear class which implements the shape functions of a linear one-dimensional elemen...
Contains TPZShapeCube class which implements the shape functions of a hexaedral element.
TPZTransform< REAL > GetSideTransform(int side, int trans_id)
static TPZTransform< REAL > ParametricTransform(int trans_id)
void Shape(TPZVec< REAL > &pt, TPZVec< int > orders, TPZVec< TPZTransform< REAL > > &transvec, TPZFMatrix< REAL > &phi, TPZFMatrix< REAL > &dphi)
static TPZTransform< REAL > ParametricTransform(int transid)
static TPZTransform< REAL > ParametricTransform(int trans_id)
Contains TPZShapePrism class which implements the shape functions of a prism element.
void ComputeTransforms(TPZVec< int64_t > &id, TPZVec< TPZTransform< REAL > > &transvec)
MElementType
Define the element types.
virtual void Multiply(const TPZFMatrix< TVar > &A, TPZFMatrix< TVar > &res, int opt=0) const
It mutiplies itself by TPZMatrix<TVar>A putting the result in res.
virtual void MultAdd(const TPZFMatrix< TVar > &x, const TPZFMatrix< TVar > &y, TPZFMatrix< TVar > &z, const TVar alpha=1., const TVar beta=0., const int opt=0) const override
It computes z = beta * y + alpha * opt(this)*x but z and x can not overlap in memory.
Contains TPZShapePiram class which implements the shape functions of a pyramid element.
Contains TPZShapeQuad class which implements the shape functions of a quadrilateral element...
Non abstract class which implements full matrices with preallocated storage with (N+1) entries...