83 if ( type != TangentStiffnessMatrix && type != StiffnessMatrix ) {
102 FloatArray lcoords = gp->giveNaturalCoordinates();
126 for (
int j=1; j<=DofIDStemp.giveSize(); j++) {
127 if ( DofIDStemp.at(j) == dofids.
at(1) ) {
128 r_Sideloc.followedBy(rloc.at(j));
129 c_Sideloc.followedBy(cloc.at(j));
135 temp = N * (scale * detJ * gp->giveWeight() /
domainSize);
138 answer.
assemble(r_Sideloc, c_loc, temp);
139 answer.
assemble(r_loc, c_Sideloc, tempT);
154 if ( type == InternalForcesVector ) {
156 }
else if ( type == ExternalForcesVector ) {
182 for (
auto &gp: * iRule ) {
183 FloatArray lcoords = gp->giveNaturalCoordinates();
206 locationArray.clear();
207 for (
int j=1; j<=DofIDStemp.giveSize(); j++) {
208 if ( DofIDStemp.at(j) == dofids.
at(1) ) {
209 locationArray.followedBy(loc.at(j));
215 pressureEqns = N*detJ*gp->giveWeight()*lambda.
at(1)*(1.0/
domainSize);
221 lambdaEqns.
at(1) = lambdaEqns.
at(1);
225 answer.
assemble(pressureEqns, locationArray);
228 answer.
assemble(lambdaEqns, lambdaLoc);
254 answer.
times(factor);
269 for (
int i = 1; i <= setList.
giveSize(); i += 2) {
294 FloatArray lcoords = gp->giveNaturalCoordinates();
302 domainSize = domainSize + detJ*gp->giveWeight();
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
REGISTER_BoundaryCondition(BoundaryCondition)
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
virtual int assemble(const IntArray &loc, const FloatMatrix &mat)=0
Assembles sparse matrix from contribution of local elements.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorm=NULL)
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Base class for all matrices stored in sparse format.
virtual void assemble(SparseMtrx &answer, TimeStep *tStep, CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale=1.0)
Assembles B.C.
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Function * giveTimeFunction()
Abstract base class for all finite elements.
double evaluate(TimeStep *tStep, ValueModeType mode)
Returns the value of load time function at given time.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
virtual FEInterpolation * giveInterpolation() const
Abstract base class representing integration rule.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing a general abstraction for finite element interpolation class.
Class representing "master" degree of freedom.
virtual void assembleVector(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorm=NULL)
Assembles B.C.
void giveUnknownVector(FloatArray &answer, const IntArray &dofMask, ValueModeType mode, TimeStep *tStep, bool padding=false)
Assembles the vector of unknowns in global c.s for given dofs of receiver.
Element * giveElement(int n)
Service for accessing particular domain fe element.
double dotProduct(const FloatArray &x) const
Computes the dot product (or inner product) of receiver and argument.
void clear()
Clears the array (zero size).
DofIDItem
Type representing particular dof type.
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Returns the location array (array of code numbers) of receiver for given numbering scheme...
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
Wrapper around element definition to provide FEICellGeometry interface.
virtual double boundaryGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the determinant of the transformation Jacobian on the requested boundary.
Abstract base class for all boundary conditions of problem.
void resize(int n)
Checks size of receiver towards requested bounds.
void giveExternalForcesVector(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s)
virtual void scale(double s)
Scales the receiver according to given value.
void appendDof(Dof *dof)
Adds the given Dof into the receiver.
virtual void boundaryGiveNodes(IntArray &answer, int boundary)=0
Gives the boundary nodes for requested boundary number.
int giveNextFreeDofID(int increment=1)
Gives the next free dof ID.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
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 IntegrationRule * giveBoundaryIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
void followedBy(const IntArray &b, int allocChunk=0)
Appends array b at the end of receiver.
virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIds=NULL)
Returns the location array for the boundary of the element.
void times(double s)
Multiplies receiver with scalar.
void beTranspositionOf(const FloatMatrix &src)
Assigns to the receiver the transposition of parameter.
Domain * giveDomain() const
#define _IFT_PrescribedMean_Mean
virtual IntegrationRule * giveIntegrationRule(int order)
Sets up a suitable integration rule for numerical integrating over volume.
#define _IFT_PrescribedMean_Edge
the oofem namespace is to define a context or scope in which all oofem names are defined.
#define _IFT_PrescribedMean_DofID
#define _IFT_GeneralBoundaryCondition_set
void computeBoundaryVectorOf(const IntArray &bNodes, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding=false)
Boundary version of computeVectorOf.
void giveLocationArray(const IntArray &dofIDArry, IntArray &locationArray, const UnknownNumberingScheme &s) const
Returns location array (array containing for each requested dof related equation number) for given nu...
virtual void boundaryEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the basis functions on the requested boundary.
Class representing integration point in finite element program.
Class representing solution step.
void resize(int s)
Resizes receiver towards requested size.