15 #include "../sm/Materials/InterfaceMaterials/structuralinterfacematerialstatus.h" 43 if(lcoords.
at(1) < xi_0 ){
44 xiScaled = {lcoords.
at(1)*2. + 1.};
48 answer.
add(N.
at(1), x1 );
51 answer.
add(N.
at(2), x3 );
54 xiScaled = {lcoords.
at(1)*2. - 1.};
58 answer.
add(N.
at(1), x3 );
61 answer.
add(N.
at(2), x2 );
90 G.
at(1) += dNdxi.
at(1, 1) * X1_i;
91 G.
at(2) += dNdxi.
at(1, 1) * X2_i;
96 G.
at(1) += dNdxi.
at(2, 1) * X1_i;
97 G.
at(2) += dNdxi.
at(2, 1) * X2_i;
155 proj_N.
times(1./area);
156 proj_DN.
times(1./area);
177 if ( matStiffSymmFlag ) {
185 if ( matStiffSymmFlag ) {
239 proj_N.
times(1./area);
240 proj_DN.
times(1./area);
261 if ( matStiffSymmFlag ) {
271 if ( matStiffSymmFlag ) {
285 TimeStep *tStep,
int useUpdatedGpRecord)
336 proj_jump.
add(dA, jump);
341 proj_jump.
times(1./area);
342 proj_N.
times(1./area);
428 proj_t.
add(dA, traction);
434 proj_t.
times(1./area);
437 proj_N.
times(1./area);
451 answer.plusProduct(proj_N, proj_t, dA);
491 answer.
at(1, 1) = answer.
at(2, 2) = -N.
at(1);
493 answer.
at(1, 5) = answer.
at(2, 6) = -N.
at(2);
495 answer.
at(1, 7) = answer.
at(2, 8) = N.
at(1);
497 answer.
at(1, 11) = answer.
at(2, 12) = N.
at(2);
504 answer.
at(1, 3) = answer.
at(2, 4) = -N.
at(2);
505 answer.
at(1, 5) = answer.
at(2, 6) = -N.
at(1);
508 answer.
at(1, 9) = answer.
at(2, 10) = N.
at(2);
509 answer.
at(1, 11) = answer.
at(2, 12) = N.
at(1);
CrossSection * giveCrossSection()
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual void evaldNdxi(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, const FloatArray &jump, TimeStep *tStep)
double & at(int i)
Coefficient access function.
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
void clear()
Clears receiver (zero size).
virtual void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer)
virtual FloatArray * giveCoordinates()
virtual void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Computes modified interpolation matrix (N) for the element which multiplied with the unknowns vector ...
static FEI2dLineLin interp
virtual double giveCoordinate(int i)
virtual double computeAreaAround(GaussPoint *gp)
MatResponseMode
Describes the character of characteristic material matrix.
void rotatedWith(FloatMatrix &r, char mode)
Returns the receiver a rotated according the change-of-base matrix r.
FloatArray initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted...
void letProjectedTractionBe(FloatArray iProjectedTraction)
Assigns projeted traction.
IntElLine1IntPen(int n, Domain *d)
Class representing a general abstraction for finite element interpolation class.
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
Adds to the receiver the product .
double giveNaturalCoordinate(int i) const
Returns i-th natural element coordinate of receiver.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
virtual FEInterpolation * giveInterpolation() const
virtual ~IntElLine1IntPen()
virtual void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
void times(double f)
Multiplies receiver by factor f.
void rotatedWith(const FloatMatrix &r, char mode= 'n')
Returns the receiver 'a' transformed using give transformation matrix r.
Wrapper around element definition to provide FEICellGeometry interface.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Check for symmetry of stiffness matrix.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
This class implements a structural interface material status information.
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
Adds to the receiver the product .
double at(int i, int j) const
Coefficient access function.
virtual void giveStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
virtual void computeCovarBaseVectorAt(GaussPoint *gp, FloatArray &G)
int numberOfGaussPoints
Number of integration points as specified by nip.
Class representing vector of real numbers.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness/tangent matrix of receiver.
Implementation of matrix containing floating point numbers.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void add(const FloatMatrix &a)
Adds matrix to the receiver.
void zero()
Zeroes all coefficients of receiver.
void times(double s)
Multiplies receiver with scalar.
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Returns equivalent nodal forces vectors.
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.
This class implements a two dimensional interface element.
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
int giveSize() const
Returns the size of receiver.
the oofem namespace is to define a context or scope in which all oofem names are defined.
DofManager * giveDofManager(int i) const
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Node * giveNode(int i) const
Returns reference to the i-th node of element.
void symmetrized()
Initializes the lower half of the receiver according to the upper half.
int nlGeometry
Flag indicating if geometrical nonlinearities apply.
Class representing integration point in finite element program.
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
void add(const FloatArray &src)
Adds array src to receiver.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Adds the product .