87 if ((mmode == _3dMat)|| (mmode == _3dUP) || (mmode == _3dUPV)) {
89 answer.
resize(6, nnodes*ndofs);
90 for (
int i = 0; i< nnodes; i++) {
91 answer(0, i*ndofs+0) = dndx(i, 0);
92 answer(1, i*ndofs+1) = dndx(i, 1);
93 answer(2, i*ndofs+2) = dndx(i, 2);
95 answer(3, i*ndofs+1) = dndx(i, 2);
96 answer(3, i*ndofs+2) = dndx(i, 1);
98 answer(4, i*ndofs+0) = dndx(i, 2);
99 answer(4, i*ndofs+2) = dndx(i, 0);
101 answer(5, i*ndofs+0) = dndx(i, 1);
102 answer(5, i*ndofs+1) = dndx(i, 0);
104 }
else if ((mmode == _2dUP) || (mmode == _2dUPV)) {
105 answer.
resize(6, nnodes*ndofs);
106 for (
int i = 0; i< nnodes; i++) {
107 answer(0, i*ndofs+0) = dndx(i, 0);
108 answer(1, i*ndofs+1) = dndx(i, 1);
110 answer(5, i*ndofs+0) = dndx(i, 1);
111 answer(5, i*ndofs+1) = dndx(i, 0);
190 if ((mmode == _3dUP) || (mmode == _3dMat)) {
192 answer.
resize(6, nnodes*ndofs);
193 for (
int i = 0; i< nnodes; i++) {
194 answer(0, i*ndofs+0) = dndx(i, 0);
195 answer(1, i*ndofs+1) = dndx(i, 1);
196 answer(2, i*ndofs+2) = dndx(i, 2);
198 answer(3, i*ndofs+1) = dndx(i, 2);
199 answer(3, i*ndofs+2) = dndx(i, 1);
201 answer(4, i*ndofs+0) = dndx(i, 2);
202 answer(4, i*ndofs+2) = dndx(i, 0);
204 answer(5, i*ndofs+0) = dndx(i, 1);
205 answer(5, i*ndofs+1) = dndx(i, 0);
207 }
else if ((mmode == _2dUP)||(mmode == _PlaneStress)||(mmode == _PlaneStrain)) {
208 answer.
resize(6, nnodes*ndofs);
209 for (
int i = 0; i< nnodes; i++) {
210 answer(0, i*ndofs+0) = dndx(i, 0);
211 answer(1, i*ndofs+1) = dndx(i, 1);
213 answer(5, i*ndofs+0) = dndx(i, 1);
214 answer(5, i*ndofs+1) = dndx(i, 0);
256 if ((mmode == _3dUP) || (mmode == _3dMat)) {
258 answer.
resize(6, nnodes*ndofs);
259 for (
int i = 0; i< nnodes; i++) {
260 answer(0, i*ndofs+0) = dndx(i, 0);
261 answer(1, i*ndofs+1) = dndx(i, 1);
262 answer(2, i*ndofs+2) = dndx(i, 2);
264 answer(3, i*ndofs+1) = dndx(i, 2);
265 answer(3, i*ndofs+2) = dndx(i, 1);
267 answer(4, i*ndofs+0) = dndx(i, 2);
268 answer(4, i*ndofs+2) = dndx(i, 0);
270 answer(5, i*ndofs+0) = dndx(i, 1);
271 answer(5, i*ndofs+1) = dndx(i, 0);
273 }
else if ((mmode == _2dUP) || (mmode == _PlaneStress)||(mmode == _PlaneStrain)) {
274 answer.
resize(6, nnodes*ndofs);
275 for (
int i = 0; i< nnodes; i++) {
276 answer(0, i*ndofs+0) = dndx(i, 0);
277 answer(1, i*ndofs+1) = dndx(i, 1);
279 answer(5, i*ndofs+0) = dndx(i, 1);
280 answer(5, i*ndofs+1) = dndx(i, 0);
320 this->
f.evaluate(flux, lc, cell, this->
testField, tStep);
337 this->
f.evaluate(flux, lc, cell, this->
testField, tStep);
355 this->
f.evaluate(flux, lc, cell, this->
testField, tStep);
#define REGISTER_Term(class)
void initializeCell(Element &cell) const override
void evaluate_lin(FloatMatrix &answer, MPElement &e, GaussPoint *gp, TimeStep *tstep) const override
Evaluates the linearization of $B^T\sigma(u)$, i.e. $B^TDBu$.
BTSigTerm(const Variable *testField, const Variable *unknownField)
void getDimensions(Element &cell) const override
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $b^T\sigma(u)$.
void grad(FloatMatrix &answer, const Variable *v, const FEInterpolation *interpol, const Element &cell, const FloatArray &coords, const MaterialMode mmode) const
Evaluates B matrix; i.e. $LN$ where $L$ is operator matrix and $N$ is interpolation matrix of unknown...
A continuity equation term $Qp=(B)^T \alpha\bf{m}N_p$.
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
void getDimensions(Element &cell) const override
void grad(FloatMatrix &answer, const Variable *v, const FEInterpolation *interpol, const Element &cell, const FloatArray &coords, const MaterialMode mmode) const
Evaluates B matrix; i.e. $\grad N$ where $N$ is interpolation matrix of unknown (p).
void evaluate_lin(FloatMatrix &answer, MPElement &e, GaussPoint *gp, TimeStep *tstep) const override
Evaluates the linearization of receiver, i.e. the LHS term.
virtual Material * giveMaterial(IntegrationPoint *ip) const =0
hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
CrossSection * giveCrossSection()
virtual Element_Geometry_Type giveGeometryType() const =0
virtual int giveNumberOfNodes(const Element_Geometry_Type) const
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beTProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
static FloatMatrix fromArray(const FloatArray &vector, bool transpose=false)
void resize(Index rows, Index cols)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void beTranspositionOf(const FloatMatrix &src)
void beDyadicProductOf(const FloatArray &vec1, const FloatArray &vec2)
void beTProductOf(const FloatMatrix &a, const FloatMatrix &b)
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
Base class for elements based on mp (multi-physics) concept.
virtual const void getUnknownVector(FloatArray &answer, const Variable *field, ValueModeType mode, TimeStep *tstep)
Returns vector of nodal unknowns for given Variable.
virtual void giveCharacteristicVector(FloatArray &answer, FloatArray &flux, MatResponseMode type, GaussPoint *gp, TimeStep *tStep) const
Returns characteristic vector of the receiver.
virtual void giveCharacteristicMatrix(FloatMatrix &answer, MatResponseMode type, GaussPoint *gp, TimeStep *tStep) const
Returns characteristic matrix of the receiver.
virtual double giveCharacteristicValue(MatResponseMode type, GaussPoint *gp, TimeStep *tStep) const
Returns characteristic value of the receiver.
A continuity equation term $Q^T(du\over dt)=(N)^T \alpha\bf{m}^TB du\over dt$.
void evaluate_lin(FloatMatrix &answer, MPElement &e, GaussPoint *gp, TimeStep *tstep) const override
Evaluates the linearization of receiver, i.e. the LHS term.
void grad(FloatMatrix &answer, const Variable *v, const FEInterpolation *interpol, const Element &cell, const FloatArray &coords, const MaterialMode mmode) const
Evaluates B matrix; i.e. $\grad N$ where $N$ is interpolation matrix of unknown (p).
void getDimensions(Element &cell) const override
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
ValueModeType unknownFieldVMT
A continuity equation compressibility matrix $S=(N_p)^T c\ N_p$, where $c=({\alpha-n}...
ValueModeType unknownFieldVMT
void evaluate_lin(FloatMatrix &answer, MPElement &e, GaussPoint *gp, TimeStep *tstep) const override
Evaluates the linearization of term (the lhs contribution).
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
void getDimensions(Element &cell) const override
An external flux functor.
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
NTf_Body(const Variable *testField, const NTfFunctor &f)
NTf_Edge(const Variable *testField, const NTfFunctor &f, int surf)
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
NTf_Surface(const Variable *testField, const NTfFunctor &f, int surf)
Class representing a weak form expression to be evaluated (integrated). It defines two key methods:
const Variable * testField
gNTfTerm(const Variable *testField, const Variable *unknownField, MatResponseMode lhsType, MatResponseMode rhsType)
void grad(FloatMatrix &answer, const Variable *v, const FEInterpolation *interpol, const Element &cell, const FloatArray &coords) const
Evaluates B matrix; i.e. $\grad N$ where $N$ is interpolation matrix of unknown (p).
void getDimensions(Element &cell) const override
void evaluate(FloatArray &, MPElement &cell, GaussPoint *gp, TimeStep *tstep) const override
Evaluates Internal forces vector, i.e. $w^T(\grad N)^T f(p)$.
void initializeCell(Element &cell) const override
void evaluate_lin(FloatMatrix &answer, MPElement &e, GaussPoint *gp, TimeStep *tstep) const override
Evaluates $\bf{H}$ matrix, the linearization of $w^T(\grad N)^T f(p)$, i.e. $(\grad N)^T \bf{k}...