55SUPGElement2 :: SUPGElement2(
int n,
Domain *aDomain) :
63 SUPGElement :: initializeFrom(ir, priority);
70 SUPGElement :: giveInputRecord(input);
82 if ( mtrx == TangentStiffnessMatrix ) {
110 OOFEM_ERROR(
"Unknown Type of characteristic mtrx.");
122 if ( mtrx == ExternalForcesVector ) {
137 if ( mtrx == InternalForcesVector ) {
183 OOFEM_ERROR(
"Unknown Type of characteristic mtrx.");
189SUPGElement2 :: checkConsistency()
202SUPGElement2 :: updateInternalState(
TimeStep *tStep)
208 for (
auto &gp: *iRule ) {
224 if ( type == IST_Velocity ) {
226 std::vector< Dof* >::const_iterator dofindx;
228 answer.
at(indx++) = (*dofindx)->giveUnknown(VM_Total, tStep);
230 answer.
at(indx++) = (*dofindx)->giveUnknown(VM_Total, tStep);
232 answer.
at(indx++) = (*dofindx)->giveUnknown(VM_Total, tStep);
236 }
else if ( type == IST_Pressure ) {
238 if ( dofindx != n->
end() ) {
240 answer.
at(1) = (*dofindx)->giveUnknown(VM_Total, tStep);
246 return Element :: giveInternalStateAtNode(answer, type, mode, node, tStep);
358SUPGElement2 :: computeDiffusionDerivativeTerm_MB(
FloatMatrix &answer, MatResponseMode mode,
TimeStep *tStep)
600 for (
int i = 1; i <= nLoads; i++ ) {
624 for (
int i = 1; i <= nLoads; i++ ) {
632 answer.
add(helpLoadVector);
637 answer.
add(helpLoadVector);
658 for (
int i = 1; i <= nLoads; i++ ) {
679 for (
int i = 1; i <= nLoads; i++ ) {
687 answer.
add(helpLoadVector);
692 answer.
add(helpLoadVector);
704 if ( type != ExternalForcesVector ) {
std::vector< Dof * >::const_iterator findDofWithDofId(DofIDItem dofID) const
std::vector< Dof * >::iterator end()
Node * giveNode(int i) const
IntArray boundaryLoadArray
virtual int giveSpatialDimension()
virtual int computeNumberOfDofs()
IntArray * giveBodyLoadArray()
Returns array containing load numbers of loads acting on element.
IntArray * giveBoundaryLoadArray()
Returns array containing load numbers of boundary loads acting on element.
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
CrossSection * giveCrossSection()
virtual double computeVolumeAround(GaussPoint *gp)
Domain * domain
Link to domain object, useful for communicating with other FEM components.
void computeVectorOfPressures(ValueModeType mode, TimeStep *tStep, FloatArray &pressures)
void computeVectorOfVelocities(ValueModeType mode, TimeStep *tStep, FloatArray &velocities)
void assemble(const FloatArray &fe, const IntArray &loc)
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Index giveSize() const
Returns the size of receiver.
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void add(const FloatArray &src)
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
void resize(Index rows, Index cols)
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void zero()
Zeroes all coefficient of receiver.
void assemble(const FloatMatrix &src, const IntArray &loc)
virtual double giveReynoldsNumber()=0
virtual bcGeomType giveBCGeoType() const
virtual bcValType giveBCValType() const
virtual void computeComponentArrayAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
void computeAdvectionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
void computeLSICStabilizationTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
virtual void computeEdgeLoadVector_MB(FloatArray &answer, Load *load, int id, TimeStep *tStep)
void computePressureTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
virtual void computeDivTauMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)=0
void computeBCRhsTerm_MB(FloatArray &answer, TimeStep *tStep) override
virtual void computeUDotGradUMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)=0
void computeAdvectionDerivativeTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
virtual void computeNpMatrix(FloatMatrix &answer, GaussPoint *gp)=0
void computeLinearAdvectionTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
virtual void computeGradPMatrix(FloatMatrix &answer, GaussPoint *gp)=0
void computePressureTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
void computeDeviatoricStrain(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) override
virtual void computeBMatrix(FloatMatrix &anwer, GaussPoint *gp)=0
void computeAdvectionTerm_MC(FloatArray &answer, TimeStep *tStep) override
virtual void computeGradUMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)=0
virtual void computeSurfaceLoadVector_MC(FloatArray &answer, Load *load, int id, TimeStep *tStep)
void computeDiffusionTerm_MB(FloatArray &answer, TimeStep *tStep) override
void computeAdvectionTerm_MB(FloatArray &answer, TimeStep *tStep) override
virtual void computeEdgeLoadVector_MC(FloatArray &answer, Load *load, int id, TimeStep *tStep)
virtual void computeDivUMatrix(FloatMatrix &answer, GaussPoint *gp)=0
void giveCharacteristicMatrix(FloatMatrix &answer, CharType, TimeStep *tStep) override
void computeDiffusionDerivativeTerm_MB(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep) override
void computeDiffusionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
virtual void computeSurfaceLoadVector_MB(FloatArray &answer, Load *load, int id, TimeStep *tStep)
virtual void computeNuMatrix(FloatMatrix &answer, GaussPoint *gp)=0
void computeBCRhsTerm_MC(FloatArray &answer, TimeStep *tStep) override
void computeDiffusionTerm_MC(FloatArray &answer, TimeStep *tStep) override
virtual void giveLocalPressureDofMap(IntArray &map)
SUPGElement(int n, Domain *aDomain)
virtual void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep)=0
virtual void giveLocalVelocityDofMap(IntArray &map)
virtual void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
TimeStep * givePreviousStep()
Returns pointer to previous solution step.
bcGeomType
Type representing the geometric character of loading.
@ SurfaceLoadBGT
Distributed surface load.
@ BodyLoadBGT
Distributed body load.
@ EdgeLoadBGT
Distributed edge load.
InternalStateMode
Determines the mode of internal variable.