56 FMElement(n, aDomain), t_supg(0), t_pspg(0), t_lsic(0)
98 if ( type == TangentStiffnessMatrix ) {
108 answer.
resize(size, size);
132 h.
times( 1.0 / ( dscale * uscale ) );
144 OOFEM_ERROR(
"giveCharacteristicMatrix: Unknown Type of characteristic mtrx.");
157 if ( mtrx == ExternalForcesVector ) {
177 else if ( mtrx == InternalForcesVector ) {
221 OOFEM_ERROR(
"Unknown Type of characteristic mtrx.");
255 for (
int i = 1; i <= nLoads; i++ ) {
262 answer.
add(helpMatrix);
265 answer.
add(helpMatrix);
276 for (
int i = 1; i <= nLoads; i++ ) {
281 answer.
add(helpMatrix);
300 for (
int i = 1; i <= nLoads; i++ ) {
307 answer.
add(helpMatrix);
326 for (
int i = 1; i <= nLoads; i++ ) {
331 answer.
add(helpMatrix);
372 if ( type == IST_Velocity ) {
374 std::vector< Dof* >::const_iterator dofindx;
376 answer.
at(indx++) = (*dofindx)->giveUnknown(VM_Total, tStep);
378 answer.
at(indx++) = (*dofindx)->giveUnknown(VM_Total, tStep);
380 answer.
at(indx++) = (*dofindx)->giveUnknown(VM_Total, tStep);
384 }
else if ( type == IST_Pressure ) {
386 if ( dofindx != n->
end() ) {
388 answer.
at(1) = (*dofindx)->giveUnknown(VM_Total, tStep);
CrossSection * giveCrossSection()
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
IntArray * giveBoundaryLoadArray()
Returns array containing load numbers of boundary loads acting on element.
virtual void computePressureTerm_MB(FloatMatrix &answer, TimeStep *tStep)=0
Computes pressure terms for momentum balance equations(s).
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
virtual int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
virtual void computeLinearAdvectionTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
Computes the linear advection term for mass conservation equation.
bool isEmpty() const
Checks if receiver is empty (i.e., zero sized).
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
bcGeomType
Type representing the geometric character of loading.
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
#define _IFT_SUPGElement_bcodes
void clear()
Clears receiver (zero size).
IntArray boundarySides
Array of boundary sides.
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual void computeHomogenizedReinforceTerm_MC(FloatMatrix &answer, Load *load, TimeStep *tStep)
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual void giveLocalPressureDofMap(IntArray &map)
virtual void computeBCRhsTerm_MC(FloatArray &answer, TimeStep *tStep)=0
Computes Rhs terms due to boundary conditions.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
virtual bcType giveType() const
bool isNotEmpty() const
Tests for empty matrix.
virtual void computeVectorOfPressures(ValueModeType mode, TimeStep *tStep, FloatArray &pressures)
virtual void computeDiffusionTerm_MB(FloatArray &answer, TimeStep *tStep)=0
Computes diffusion terms for momentum balance equations(s).
virtual void computeHomogenizedReinforceTerm_MB(FloatMatrix &answer, Load *load, TimeStep *tStep)
bcType
Type representing the type of bc.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void computeDiffusionTerm_MC(FloatArray &answer, TimeStep *tStep)=0
Computes diffusion terms for mass conservation equation.
virtual void computeVectorOfVelocities(ValueModeType mode, TimeStep *tStep, FloatArray &velocities)
virtual void computeBCRhsTerm_MB(FloatArray &answer, TimeStep *tStep)=0
Computes Rhs terms due to boundary conditions.
virtual double giveVariableScale(VarScaleType varId)
Returns the scale factor for given variable type.
virtual void computeDeviatoricStress(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
void times(double f)
Multiplies receiver by factor f.
virtual void computePenetrationWithResistanceBCTerm_MB(FloatMatrix &answer, Load *load, int side, TimeStep *tStep)
Computes Lhs contribution due to applied Penetration bc.
IntArray * giveBodyLoadArray()
Returns array containing load numbers of loads acting on element.
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 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...
virtual void computeDeviatoricStrain(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)=0
virtual void computeDiffusionDerivativeTerm_MB(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep)=0
Computes the derivative of diffusion terms for momentum balance equations(s) with respect to nodal ve...
virtual void computeOutFlowBCTerm_MB(FloatMatrix &answer, int side, TimeStep *tStep)
Computes Lhs contribution due to outflow BC.
virtual void giveLocalVelocityDofMap(IntArray &map)
Class representing vector of real numbers.
This abstract class represent a general base element class for fluid dynamic problems.
virtual void computeBCLhsPressureTerm_MC(FloatMatrix &answer, TimeStep *tStep)
Computes Lhs terms due to boundary conditions - pressure.
virtual int giveSpatialDimension()
Returns the element spatial dimension (1, 2, or 3).
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void computeDiffusionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
Computes diffusion derivative terms for mass conservation equation.
virtual void computeBCLhsPressureTerm_MB(FloatMatrix &answer, TimeStep *tStep)
Computes Lhs terms due to boundary conditions - pressure.
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.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
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.
void zero()
Zeroes all coefficients of receiver.
virtual bcGeomType giveBCGeoType() const
Returns geometry character of boundary condition.
IntArray boundaryCodes
Boundary sides codes.
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.
Domain * giveDomain() const
#define _IFT_SUPGElement_bsides
Load is base abstract class for all loads.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
SUPGElement(int n, Domain *aDomain)
the oofem namespace is to define a context or scope in which all oofem names are defined.
std::vector< Dof * >::iterator end()
void assemble(const FloatMatrix &src, const IntArray &loc)
Assembles the contribution using localization array into receiver.
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
virtual bcValType giveBCValType() const
Returns receiver load type.
Class implementing node in finite element mesh.
virtual int checkConsistency()
Performs consistency check.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
Load * giveLoad(int n)
Service for accessing particular domain load.
Class representing integration point in finite element program.
IntArray boundaryLoadArray
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...
virtual void computeAdvectionTerm_MC(FloatArray &answer, TimeStep *tStep)=0
Computes advection terms for mass conservation equation.
Class representing solution step.
virtual void computePressureTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
Computes pressure terms for mass conservation equation.
InternalStateMode
Determines the mode of internal variable.
virtual void computeBCLhsTerm_MB(FloatMatrix &answer, TimeStep *tStep)
Computes Lhs terms due to boundary conditions - velocity.
virtual void computeSlipWithFrictionBCTerm_MB(FloatMatrix &answer, Load *load, int side, TimeStep *tStep)
Computes Lhs term due to applied slip with friction bc.
void resize(int s)
Resizes receiver towards requested size.