52StructuralInterfaceElement :: StructuralInterfaceElement(
int n,
Domain *aDomain) :
Element(n, aDomain)
66 for (
int i = 1; i <= numNodes/2; i++ ) {
67 const auto &nodeCoord = this->
giveDofManager(i)->giveCoordinates();
68 answer.
add(
N.at(i), nodeCoord );
76StructuralInterfaceElement :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
80 bool matStiffSymmFlag = this->
giveCrossSection()->isCharacteristicMtrxSymmetric(rMode);
100 if ( matStiffSymmFlag ) {
108 if ( matStiffSymmFlag ) {
126 answer.
resize(
N.giveNumberOfRows());
144StructuralInterfaceElement :: giveInternalForcesVector(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
205 FloatArray normal = {rotationMatGtoL.
at(2,1), rotationMatGtoL.
at(2,2), 0.};
218 if ( mtrx == TangentStiffnessMatrix ) {
220 }
else if ( mtrx == SecantStiffnessMatrix ) {
222 }
else if ( mtrx == ElasticStiffnessMatrix ) {
232StructuralInterfaceElement :: giveCharacteristicVector(
FloatArray &answer,
CharType mtrx, ValueModeType mode,
238 if ( ( mtrx == InternalForcesVector ) && ( mode == VM_Total ) ) {
240 }
else if ( ( mtrx == LastEquilibratedInternalForcesVector ) && ( mode == VM_Total ) ) {
245 }
else if (mtrx == ExternalForcesVector ) {
253StructuralInterfaceElement :: updateYourself(
TimeStep *tStep)
255 Element :: updateYourself(tStep);
265StructuralInterfaceElement :: updateInternalState(
TimeStep *tStep)
281StructuralInterfaceElement :: checkConsistency()
295 return Element :: giveIPValue(answer, aIntegrationPoint, type, tStep);
301 Element :: giveInputRecord(input);
virtual bool isActivated(TimeStep *tStep)
virtual FEInterpolation * giveInterpolation() const
virtual int giveNumberOfNodes() const
int activityTimeFunction
Element activity time function. If defined, nonzero value indicates active receiver,...
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
DofManager * giveDofManager(int i) const
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Element(int n, Domain *aDomain)
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
void zero()
Zeroes all coefficients of receiver.
void rotatedWith(FloatMatrix &r, char mode)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void add(const FloatArray &src)
void subtract(const FloatArray &src)
void rotatedWith(const FloatMatrix &r, char mode='n')
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
*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)
double at(std::size_t i, std::size_t j) const
void beUnitMatrix()
Sets receiver to unity matrix.
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
FloatArray initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted.
bool nlGeometry
Flag indicating if geometrical nonlinearities apply.
virtual void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
StructuralInterfaceCrossSection * giveInterfaceCrossSection()
virtual void computeSpatialJump(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
virtual double computeAreaAround(GaussPoint *gp)=0
virtual void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
const char * giveClassName() const override
virtual void giveStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
virtual void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, const FloatArray &jump, TimeStep *tStep)
virtual void giveFirstPKTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
virtual int testCrossSectionExtension(CrossSectExtension ext)
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
void letNormalBe(const FloatArrayF< 3 > &iN)
Assigns normal vector.
#define OOFEM_WARNING(...)
GaussPoint IntegrationPoint
const char * __CharTypeToString(CharType _value)