35 #include "../sm/Elements/Interfaces/structuralinterfaceelement.h" 36 #include "../sm/Materials/InterfaceMaterials/structuralinterfacematerial.h" 37 #include "../sm/Materials/InterfaceMaterials/structuralinterfacematerialstatus.h" 38 #include "../sm/CrossSections/structuralinterfacecrosssection.h" 71 for(
int i = 1; i <= numNodes/2; i++) {
73 answer.
add(N.
at(i), nodeCoord );
105 if ( matStiffSymmFlag ) {
113 if ( matStiffSymmFlag ) {
147 TimeStep *tStep,
int useUpdatedGpRecord)
208 FloatArray normal = {rotationMatGtoL.
at(2,1), rotationMatGtoL.
at(2,2), 0.};
221 if ( mtrx == TangentStiffnessMatrix ) {
223 }
else if ( mtrx == SecantStiffnessMatrix ) {
225 }
else if ( mtrx == ElasticStiffnessMatrix ) {
241 if ( ( mtrx == InternalForcesVector ) && ( mode == VM_Total ) ) {
243 }
else if ( ( mtrx == LastEquilibratedInternalForcesVector ) && ( mode == VM_Total ) ) {
248 }
else if (mtrx == ExternalForcesVector ) {
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
CrossSection * giveCrossSection()
virtual int testCrossSectionExtension(CrossSectExtension ext)
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual bool isActivated(TimeStep *tStep)
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
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 ~StructuralInterfaceElement()
Destructor.
virtual void giveFirstPKTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, const FloatArray &jump, TimeStep *tStep)
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual int checkConsistency()
Allows programmer to test some internal data, before computation begins.
void clear()
Clears receiver (zero size).
virtual FloatArray * giveCoordinates()
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Abstract base class for all finite elements.
StructuralInterfaceElement(int n, Domain *d)
Constructor.
virtual double computeAreaAround(GaussPoint *gp)=0
MatResponseMode
Describes the character of characteristic material matrix.
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Returns equivalent nodal forces vectors.
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...
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
virtual int giveNumberOfNodes() const
Returns number of nodes of receiver.
virtual FEInterpolation * giveInterpolation() const
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 .
int activityTimeFunction
Element activity time function. If defined, nonzero value indicates active receiver, zero value inactive element.
virtual void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
Computes modified interpolation matrix (N) for the element which multiplied with the unknowns vector ...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
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.
const char * __CharTypeToString(CharType _value)
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 .
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Base class for all structural interface cross section models.
double at(int i, int j) const
Coefficient access function.
virtual int checkConsistency()
Performs consistency check.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness/tangent matrix of receiver.
virtual void giveStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
virtual void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
void zero()
Zeroes all coefficients of receiver.
virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
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 computeSpatialJump(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
void beUnitMatrix()
Sets receiver to unity matrix.
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...
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
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.
#define OOFEM_WARNING(...)
Class representing solution step.
void letNormalBe(FloatArray iN)
Assigns normal vector.
virtual const char * giveClassName() const
void add(const FloatArray &src)
Adds array src to receiver.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
StructuralInterfaceCrossSection * giveInterfaceCrossSection()
void resize(int s)
Resizes receiver towards requested size.
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Adds the product .