66 TransportElement :: initializeFrom(ir, priority);
70Tr1Darcy :: giveInterpolation()
const
75void Tr1Darcy :: computeGaussPoints()
95 auto D = mat->computeTangent2D(mode, gp, tStep);
96 Ke += detJ * gp->giveWeight() *
Tdot(B,
dot(D, B));
103 if ( mtrx == ExternalForcesVector ) {
105 }
else if ( mtrx == InternalForcesVector ) {
108 OOFEM_ERROR(
"Unknown Type of characteristic mtrx.");
131 auto gradp =
dot(B, a);
132 auto w = mat->computeFlux2D(gradp, p, gp, tStep);
134 fe += -gp->giveWeight() * detJ *
Tdot(B, w);
151 for (
int i = 1; i <= nLoads; i++ ) {
154 auto load =
domain->giveLoad(load_number);
155 auto ltype = load->giveBCGeoType();
167void Tr1Darcy :: computeEdgeBCSubVectorAt(
FloatArray &answer,
Load *load,
int iEdge,
TimeStep *tStep, ValueModeType mode,
int indx)
178 auto boundaryLoad =
static_cast< BoundaryLoad *
>(load);
181 numberOfEdgeIPs = ( int ) ceil( ( boundaryLoad->giveApproxOrder() + 1. ) / 2. ) * 2;
188 for (
auto &gp: iRule ) {
189 const FloatArray &lcoords = gp->giveNaturalCoordinates();
193 if ( boundaryLoad->giveFormulationType() == Load :: FT_Entity ) {
194 boundaryLoad->computeValueAt(loadValue, tStep, lcoords, mode);
198 boundaryLoad->computeValueAt(loadValue, tStep, gcoords, mode);
201 reducedAnswer.
add(loadValue.
at(1) * dV,
N);
205 answer.
assemble(reducedAnswer, mask);
215double Tr1Darcy :: computeEdgeVolumeAround(
GaussPoint *gp,
int iEdge)
217 double thickness = 1;
224 if ( mtrx == ConductivityMatrix || mtrx == TangentStiffnessMatrix ) {
227 OOFEM_ERROR(
"Unknown Type of characteristic mtrx %d", mtrx);
231void Tr1Darcy :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
237Tr1Darcy :: NodalAveragingRecoveryMI_computeNodalValue(
FloatArray &answer,
int node,
256Tr1Darcy :: computeNumberOfDofs()
#define REGISTER_Element(class)
IntArray boundaryLoadArray
int numberOfDofMans
Number of dofmanagers.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
CrossSection * giveCrossSection()
Domain * domain
Link to domain object, useful for communicating with other FEM components.
void assemble(const FloatArray &fe, const IntArray &loc)
void zero()
Zeroes all coefficients of receiver.
void add(const FloatArray &src)
int SetUpPointsOnLine(int nPoints, MaterialMode mode) override
const FloatArray & giveSubPatchCoordinates() const
Returns local sub-patch coordinates of the receiver.
double giveWeight()
Returns integration weight of receiver.
virtual bcType giveType() const
NodalAveragingRecoveryModelInterface()
Constructor.
void computeInternalForcesVector(FloatArray &answer, TimeStep *tStep) override
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep)
void computeEdgeBCSubVectorAt(FloatArray &answer, Load *load, int iEdge, TimeStep *tStep, ValueModeType mode, int indx)
double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override
void computeExternalForcesVector(FloatArray &answer, TimeStep *tStep, ValueModeType mode) override
static FEI2dTrLin interpolation_lin
TransportElement(int n, Domain *d, ElementMode em=HeatTransferEM)
Material * giveMaterial() override
FloatMatrixF< N, P > Tdot(const FloatMatrixF< M, N > &a, const FloatMatrixF< M, P > &b)
Computes .
@ EdgeLoadBGT
Distributed edge load.
double dot(const FloatArray &x, const FloatArray &y)
@ NodalAveragingRecoveryModelInterfaceType
@ TransmissionBC
Neumann type (prescribed flux).