56 #ifdef __CEMHYD_MODULE 70 Element(n, aDomain), emode( em )
101 if ( mtrx == TangentStiffnessMatrix ) {
106 }
else if ( mtrx == ConductivityMatrix ) {
108 }
else if ( mtrx == CapacityMatrix || mtrx == MassMatrix ) {
110 }
else if ( mtrx == LumpedMassMatrix ) {
115 s += answer.
at(i, j);
116 answer.
at(i, j) = 0.0;
133 if ( mtrx == InternalForcesVector ) {
135 }
else if ( mtrx == ExternalForcesVector ) {
138 }
else if ( mtrx == InertiaForcesVector ) {
140 }
else if ( mtrx == LumpedMassMatrix ) {
143 OOFEM_ERROR(
"Unknown Type of characteristic mtrx (%s)",
159 OOFEM_WARNING(
"cross section without support for transport problems");
164 if ( !this->
giveCrossSection()->testCrossSectionExtension(CS_TransportCapability) ) {
165 OOFEM_WARNING(
"cross-section without support for transport problems", 1);
184 Capacity_hh, Capacity_ww
188 for (
int i = 1; i <= 2; i++ ) {
206 MatResponseMode rmode [ 2 ] [ 2 ] = { { Conductivity_hh, Conductivity_hw }, { Conductivity_wh, Conductivity_ww } };
208 for (
int i = 1; i <= 2; i++ ) {
209 for (
int j = 1; j <= 2; j++ ) {
251 answer.
resize(nsd*2, nodes*2);
253 for (
int i = 0; i < nodes; ++i) {
254 for (
int j = 0; j < nsd; ++j) {
255 answer(j, i*2) = dnx(i, j);
256 answer(j+nsd, i*2+1) = dnx(i, j);
277 if ( dynamic_cast< FEInterpolation2d * >(interp) ) {
279 }
else if ( dynamic_cast< FEInterpolation3d * >(interp) ) {
289 if ( dynamic_cast< FEInterpolation2d * >(interp) ) {
290 dynamic_cast< FEInterpolation2d *
>(interp)->computeLocalEdgeMapping(answer, iEdge);
291 }
else if ( dynamic_cast< FEInterpolation3d * >(interp) ) {
292 dynamic_cast< FEInterpolation3d *
>(interp)->computeLocalEdgeMapping(answer, iEdge);
301 if ( dynamic_cast< FEInterpolation3d * >(interp) ) {
310 if ( dynamic_cast< FEInterpolation3d * >(interp) ) {
311 dynamic_cast< FEInterpolation3d *
>(interp)->computeLocalSurfaceMapping(answer, iSurf);
329 this->
computeNAt( n, gp->giveNaturalCoordinates() );
375 this->
computeNAt( n, gp->giveNaturalCoordinates() );
379 answer.
add(val.
at(indx) * dV, n);
393 for (
int i = 1; i <= 2; i++ ) {
423 IntSource_hh, IntSource_ww
427 for (
int i = 1; i <= 2; i++ ) {
452 this->
computeNAt( n, gp->giveNaturalCoordinates() );
483 const FloatArray &lcoords = gp->giveNaturalCoordinates();
536 for (
int i = 1; i <= size; i++ ) {
537 for (
int j = 1; j <= size; j++ ) {
538 answer.
at(i) += cap.
at(i, j);
551 if ( type != ExternalForcesVector ) {
576 for (
auto &gp: *iRule ) {
577 const FloatArray &lcoords = gp->giveNaturalCoordinates();
624 for (
auto &gp: *iRule ) {
625 const FloatArray &lcoords = gp->giveNaturalCoordinates();
638 tf->evaluateAt(val, gcoords, VM_TotalIntrinsic, tStep);
652 if ( unknownsPerNode != 1 ) {
653 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
659 val.
times( -1.0 * a );
690 if ( unknownsPerNode != 1 ) {
691 OOFEM_ERROR(
"Load property multexpr not implemented for coupled fields");
699 for (
auto &gp : *iRule ) {
700 const FloatArray &lcoords = gp->giveNaturalCoordinates();
748 for (
auto &gp : *iRule ) {
749 const FloatArray &lcoords = gp->giveNaturalCoordinates();
760 if ( unknownsPerNode != 1 ) {
761 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
809 for (
auto &gp: *iRule ) {
810 const FloatArray &lcoords = gp->giveNaturalCoordinates();
823 tf->evaluateAt(val, gcoords, VM_TotalIntrinsic, tStep);
839 if ( unknownsPerNode != 1 ) {
840 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
846 val.
times( -1.0 * a );
874 for (
int i = 1; i <= 2; i++ ) {
888 answer.
resize(ndofs, ndofs);
896 for (
int i = 1; i <= 2; i++ ) {
918 for (
int i = 1; i <= nLoads; i++ ) {
958 this->
computeNAt( n, gp->giveNaturalCoordinates() );
961 answer.
add(val.
at(indx) * dV, n);
977 int numberOfEdgeIPs = ( int ) ceil( ( approxOrder + 1.0 ) / 2. );
982 double dV, coeff = 1.0;
991 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
1000 coeff = edgeLoad->
giveProperty(
'a', tStep, { {
"u", value } });
1005 OOFEM_ERROR(
"Not implemented, use TransientTransport solver");
1009 const FloatArray &lcoords = gp->giveNaturalCoordinates();
1019 tf->evaluateAt(val, gcoords, VM_TotalIntrinsic, tStep);
1028 reducedAnswer.
add(val.
at(indx) * coeff * dV, n);
1032 answer.
assemble(reducedAnswer, mask);
1066 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
1075 coeff = surfLoad->
giveProperty(
'a', tStep, { {
"u", value } });
1080 OOFEM_ERROR(
"Not implemented, use TransientTransport solver");
1093 tf->evaluateAt(val, gcoords, VM_TotalIntrinsic, tStep);
1095 surfLoad->
computeValueAt(val, tStep, gp->giveNaturalCoordinates(), mode);
1103 reducedAnswer.
add(val.
at(indx) * coeff * dV, n);
1107 answer.
assemble(reducedAnswer, mask);
1124 for (
int i = 1; i <= nLoads; i++ ) {
1138 int numberOfEdgeIPs = ( int ) ceil( ( approxOrder + 1. ) / 2. );
1145 for (
auto &gp: iRule ) {
1153 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
1161 a = edgeLoad->
giveProperty(
'a', tStep, { {
"u", value } });
1186 for (
auto &gp: *iRule ) {
1194 OOFEM_ERROR(
"Not implemented for >=2 coupled fields");
1202 a = surfLoad->
giveProperty(
'a', tStep, { {
"u", value } });
1229 int ndofs,
int rdof,
int cdof)
1233 for (
int i = 1; i <= nnodes; i++ ) {
1234 int ti = ( i - 1 ) * ndofs + rdof;
1235 for (
int j = 1; j <= nnodes; j++ ) {
1236 int tj = ( j - 1 ) * ndofs + cdof;
1237 answer.
at(ti, tj) += src.
at(i, j);
1245 int ndofs,
int rdof)
1249 for (
int i = 1; i <= nnodes; i++ ) {
1250 int ti = ( i - 1 ) * ndofs + rdof;
1251 answer.
at(ti) += src.
at(i);
1330 #ifdef __CEMHYD_MODULE //not very efficient here, looping over all GPs in each call 1331 if (dynamic_cast< CemhydMat * >( mat ) && tStep->
isIcApply()){
1335 #endif //__CEMHYD_MODULE 1379 for (
int i = 1; i <= dofId.
giveSize(); i++ ) {
1382 for (
int j = 1; j <= elemvector.
giveSize(); j++ ) {
1383 sum += n.
at(indx, j) * elemvector.
at(j);
1395 OOFEM_ERROR(
"target point not in receiver volume");
1425 if ( type == IST_Temperature ) {
1427 if ( dofindx != n->
end() ) {
1429 answer.
at(1) = (*dofindx)->giveUnknown(VM_Total, tStep);
1434 }
else if ( type == IST_MassConcentration_1 ) {
1436 if ( dofindx != n->
end() ) {
1438 answer.
at(1) = (*dofindx)->giveUnknown(VM_Total, tStep);
CrossSection * giveCrossSection()
virtual bool isImposed(TimeStep *tStep)
Returns nonzero if receiver representing BC is imposed at given time, otherwise returns zero...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual bool isActivated(TimeStep *tStep)
int giveNumberOfColumns() const
Returns number of columns of receiver.
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual void computeTangentFromSurfaceLoad(FloatMatrix &answer, SurfaceLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep)
Computes the tangent contribution of the given load at the given boundary.
virtual void boundarySurfaceLocal2global(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates edge global coordinates from given local ones.
virtual void computeInternalSourceVector(FloatArray &val, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes the internal source vector of receiver.
int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep)
Returns internal state variable (like stress,strain) at node of element in Reduced form...
IntArray * giveBoundaryLoadArray()
Returns array containing load numbers of boundary loads acting on element.
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
void assembleLocalContribution(FloatMatrix &answer, FloatMatrix &src, int ndofs, int rdof, int cdof)
Assembles the given source matrix of size (ndofs, ndofs) into target matrix answer.
std::shared_ptr< Field > FieldPtr
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
virtual int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
virtual void computeBCVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
Computes the RHS contribution to balance equation(s) due to boundary conditions.
virtual IntegrationRule * giveIntegrationRule(int i)
virtual int testElementExtension(ElementExtension ext)
Tests if the element implements required extension.
virtual void computeCapacityMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes the capacity matrix of the receiver.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Abstract class representing field of primary variables (those, which are unknown and are typically as...
virtual int checkConsistency()
Performs consistency check.
bcGeomType
Type representing the geometric character of loading.
double & at(int i)
Coefficient access function.
virtual int giveApproxOrder()
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Class implementing element body load, acting over whole element volume (e.g., the dead weight)...
Class representing a general abstraction for surface finite element interpolation class...
void clear()
Clears receiver (zero size).
int giveInterpolationOrder()
Returns the interpolation order.
virtual void computeValueAt(FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode)=0
Computes components values of load at given point - global coordinates (coordinates given)...
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
virtual void computeInternalSourceRhsVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
Computes the contribution to balance equation(s) due to internal sources.
virtual void computeExternalForcesVector(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated.
virtual int giveApproxOrder(int unknownIndx)
Abstract base class for all finite elements.
virtual void computeBmatrixAt(FloatMatrix &answer, const FloatArray &lcoords)
bool isDefined() const
True if receiver is defined.
virtual double giveProperty(int aProperty, TimeStep *tStep, const std::map< std::string, FunctionArgument > &valDict)
FieldManager * giveFieldManager()
virtual void computeIntSourceLHSMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes the LHS contribution to balance equation(s) due to material internal source.
virtual void computeNAt(FloatArray &answer, const FloatArray &lcoord)
Computes the basis functions.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void computeTangentFromEdgeLoad(FloatMatrix &answer, EdgeLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep)
Computes the tangent contribution of the given load at the given boundary.
virtual void computeConductivityMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the conductivity matrix of the receiver.
virtual void computeNmatrixAt(FloatMatrix &answer, const FloatArray &lcoords)
Computes the interpolation matrix corresponding to all unknowns.
virtual int giveNumberOfDofManagers() const
Newton type - transfer coefficient.
virtual void computeGradientMatrixAt(FloatMatrix &answer, const FloatArray &lcoords)
Computes the gradient matrix corresponding to one unknown.
virtual FEInterpolation * giveInterpolation() const
virtual void computeSurfaceNAt(FloatArray &answer, int iSurf, const FloatArray &lcoord)
virtual void computeInertiaForcesVector(FloatArray &answer, TimeStep *tStep)
virtual bcType giveType() const
Element extension for surface loads.
void setSubMatrix(const FloatMatrix &src, int sr, int sc)
Adds the given matrix as sub-matrix to receiver.
virtual void computeCapacitySubMatrix(FloatMatrix &answer, MatResponseMode rmode, int iri, TimeStep *tStep)
Computes the matrix .
Class representing a general abstraction for finite element interpolation class.
bool isNotEmpty() const
Tests for empty matrix.
void computeBodyBCSubVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode, int indx)
virtual void computeInternalForcesVector(FloatArray &answer, TimeStep *tStep)
void computeSurfaceBCSubVectorAt(FloatArray &answer, Load *load, int iSurf, TimeStep *tStep, ValueModeType mode, int indx)
Computes the part of RHS due to applied BCs on particular surface.
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)=0
Computes the length around a integration point on a edge.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual int hasInternalSource()
Returns nonzero if receiver generates internal source of state variable(s), zero otherwise.
virtual void computeInternalSourceRhsSubVectorAt(FloatArray &answer, TimeStep *, ValueModeType mode, int indx)
Computes the contribution to balance equation(s) due to internal sources.
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a bound...
virtual IntegrationRule * giveBoundaryEdgeIntegrationRule(int order, int boundary)
Returns boundary edge integration rule.
Material * giveMaterial(int n)
Service for accessing particular domain material model.
virtual void boundaryEdgeGiveNodes(IntArray &answer, int boundary)=0
Gives the boundary nodes for requested boundary number.
double dotProduct(const FloatArray &x) const
Computes the dot product (or inner product) of receiver and argument.
EngngModelContext * giveContext()
Context requesting service.
int material
Number of associated material.
virtual void boundaryLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Maps the local boundary coordinates to global.
virtual void giveSurfaceDofMapping(IntArray &mask, int iSurf)
virtual FormulationType giveFormulationType()
Specifies is load should take local or global coordinates.
virtual void computeFlow(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Computes a flow vector in an integration point.
Neumann type (prescribed flux).
virtual int EIPrimaryFieldI_evaluateFieldVectorAt(FloatArray &answer, PrimaryField &pf, const FloatArray &coords, IntArray &dofId, ValueModeType mode, TimeStep *tStep)
Evaluates the value of field at given point of interest (should be located inside receiver's volume) ...
void power(const double exponent)
Raise each element to its power.
Abstract base class representing an edge load (force, momentum, ...) that acts directly on a edge bou...
Wrapper around element definition to provide FEICellGeometry interface.
virtual void boundaryEdgeEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the basis functions on the requested boundary.
const char * __CharTypeToString(CharType _value)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
IntArray bodyLoadArray
Array containing indexes of loads (body loads and boundary loads are kept separately), that apply on receiver.
virtual double boundaryGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the determinant of the transformation Jacobian on the requested boundary.
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
Adds to the receiver the product .
virtual int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep)
Returns internal state variable (like stress,strain) at node of element in Reduced form...
Abstract base class for all boundary conditions of problem.
virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
Computes the unknown vector interpolated at the specified local coordinates.
virtual void giveElementDofIDMask(IntArray &answer) const
Returns element dof mask for node.
virtual int giveApproxOrder()=0
bool isEmpty() const
Returns true if receiver is empty.
Abstract base class for all material models.
double at(int i, int j) const
Coefficient access function.
ScalarFunction propertyMultExpr
Expression to multiply all properties.
virtual bcType giveType() const
Returns receiver load type.
FieldPtr giveField(FieldType key)
Returns the previously registered field under given key; NULL otherwise.
Distributed surface load.
virtual void computeLumpedCapacityVector(FloatArray &answer, TimeStep *tStep)
virtual void updateInternalState(const FloatArray &state, GaussPoint *gp, TimeStep *tStep)
Updates internal state of material according to new state vector.
void beNMatrixOf(const FloatArray &n, int nsd)
Assigns the receiver to be a repeated diagonal matrix.
void computeBCSubVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode, int indx)
Computes the part of RHS due to applied BCs.
Initializes the variable VERBOSE, in order to get a few intermediate messages on screen: beginning an...
virtual void boundaryGiveNodes(IntArray &answer, int boundary)=0
Gives the boundary nodes for requested boundary number.
Class representing vector of real numbers.
void plusDyadSymmUpper(const FloatArray &a, double dV)
Adds to the receiver the dyadic product .
virtual double computeSurfaceVolumeAround(GaussPoint *gp, int iSurf)
Abstract base class representing a surface load (force, momentum, ...) that acts directly on a surfac...
virtual double giveCharacteristicValue(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the characteristic value of receiver in given integration point, respecting its history...
Implementation of matrix containing floating point numbers.
virtual void computeLoadVector(FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep)
Computes the contribution of the given body load (volumetric).
virtual void computeConductivitySubMatrix(FloatMatrix &answer, int iri, MatResponseMode rmode, TimeStep *tStep)
Computes the matrix .
virtual double giveThicknessAt(const FloatArray &gcoords)
Gives the thickness at some global coordinate.
virtual IntegrationRule * giveBoundarySurfaceIntegrationRule(int order, int boundary)
Returns boundary surface integration rule.
void assemble(const FloatArray &fe, const IntArray &loc)
Assembles the array fe (typically, the load vector of a finite element) into the receiver, using loc as location array.
virtual int initMaterial(Element *element)
Optional function to call specific procedures when initializing a material.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
Class representing a general abstraction for surface finite element interpolation class...
std::vector< Dof * >::const_iterator findDofWithDofId(DofIDItem dofID) const
Finds index of DOF with required physical meaning of receiver.
void add(const FloatMatrix &a)
Adds matrix to the receiver.
int isDofExcluded(int index)
Returns the value of dofExcludeMask corresponding to given index.
virtual void computeIntSourceLHSSubMatrix(FloatMatrix &answer, MatResponseMode rmode, int iri, TimeStep *tStep)
Computes the part of internal source LHS contribution corresponding to unknown identified by rmode pa...
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
void zero()
Zeroes all coefficients of receiver.
static const double stefanBoltzmann
Stefan–Boltzmann constant W/m2/K4.
virtual bcGeomType giveBCGeoType() const
Returns geometry character of boundary condition.
Abstract base class for all constitutive models for transport problems.
virtual void computeBCMtrxAt(FloatMatrix &answer, TimeStep *tStep, ValueModeType mode)
Computes the LHS contribution to balance equation(s) due to boundary conditions.
void computeEdgeBCSubVectorAt(FloatArray &answer, Load *load, int iEdge, TimeStep *tStep, ValueModeType mode, int indx)
Computes the part of RHS due to applied BCs on particular edge.
void times(double s)
Multiplies receiver with scalar.
void beTranspositionOf(const FloatMatrix &src)
Assigns to the receiver the transposition of parameter.
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
Computes the element local coordinates from given global coordinates.
virtual IntegrationRule * GetSurfaceIntegrationRule(int approxOrder)
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
void zero()
Zeroes all coefficient of receiver.
Load is base abstract class for all loads.
virtual void giveEdgeDofMapping(IntArray &mask, int iEdge)
Gives the node indexes for given edge.
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
virtual void giveFluxVector(FloatArray &answer, GaussPoint *gp, const FloatArray &grad, const FloatArray &field, TimeStep *tStep)=0
Returns the flux for the field and its gradient.
bool isIcApply()
Check if receiver is solution step when initial conditions should apply.
virtual void boundaryEdgeLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Maps the local boundary coordinates to global.
TransportCrossSection * giveTransportCrossSection()
int giveSize() const
Returns the size of receiver.
virtual IntegrationRule * giveIntegrationRule(int order)
Sets up a suitable integration rule for numerical integrating over volume.
the oofem namespace is to define a context or scope in which all oofem names are defined.
bool isNotEmpty() const
Returns true if receiver is not empty.
std::vector< Dof * >::iterator end()
void assemble(const FloatMatrix &src, const IntArray &loc)
Assembles the contribution using localization array into receiver.
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
virtual void computeBoundarySurfaceLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true)
Computes the contribution of the given load at the given boundary surface in global coordinate system...
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Class implementing node in finite element mesh.
void negated()
Switches the sign of every coefficient of receiver.
TransportElement(int n, Domain *d, ElementMode em=HeatTransferEM)
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual Material * giveMaterial()
virtual void computeValueAt(FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode)
Computes components values of load at given point - global coordinates (coordinates given)...
int giveNumberOfRows() const
Returns number of rows of receiver.
Load * giveLoad(int n)
Service for accessing particular domain load.
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
virtual int SetUpPointsOnLine(int nPoints, MaterialMode mode)
Sets up receiver's integration points on unit line integration domain.
void symmetrized()
Initializes the lower half of the receiver according to the upper half.
void computeBoundaryVectorOf(const IntArray &bNodes, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding=false)
Boundary version of computeVectorOf.
virtual void boundaryEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the basis functions on the requested boundary.
virtual double giveTemperOffset(void)
Return temperature offset.
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
IntArray boundaryLoadArray
Class representing solution step.
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
virtual void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int edge, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true)
Computes the contribution of the given load at the given boundary edge.
InternalStateMode
Determines the mode of internal variable.
void add(const FloatArray &src)
Adds array src to receiver.
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
void computeBCSubMtrxAt(FloatMatrix &answer, TimeStep *tStep, ValueModeType mode, int indx)
Computes the part of LHS due to applied BCs.
virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates global coordinates from given local ones.
int findFirstIndexOf(int value) const
Finds index of first occurrence of given value in array.
virtual ~TransportElement()
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.
virtual void computeEgdeNAt(FloatArray &answer, int iEdge, const FloatArray &lcoord)
Computes the basis functions at the edge for one unknown.
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Adds the product .