61StructuralInterfaceElementPhF :: computeDisplacementUnknowns(
FloatArray &answer, ValueModeType valueMode,
TimeStep *tStep)
70StructuralInterfaceElementPhF :: computeDamageUnknowns(
FloatArray &answer, ValueModeType valueMode,
TimeStep *tStep)
79StructuralInterfaceElementPhF :: computeLocationArrayOfDofIDs(
const IntArray &dofIdArray,
IntArray &answer )
86 for(
int j = 1; j <= dofIdArray.
giveSize( ); j++ ) {
99StructuralInterfaceElementPhF :: giveInternalForcesVector(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
120StructuralInterfaceElementPhF :: giveInternalForcesVector_u(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
151StructuralInterfaceElementPhF :: giveInternalForcesVector_d(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
172 answer.
add(facN*dA, Nd);
177 BStress = grad_d * l * l;
191StructuralInterfaceElementPhF :: computeDamageAt(
GaussPoint *gp, ValueModeType valueMode,
TimeStep *stepN)
209 N.beNMatrixOf(Nvec,1);
226StructuralInterfaceElementPhF :: computeNumberOfDofs()
238StructuralInterfaceElementPhF :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
250 answer.
resize( nDofs, nDofs );
272StructuralInterfaceElementPhF :: computeStiffnessMatrix_uu(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
279 bool matStiffSymmFlag = this->
giveCrossSection()->isCharacteristicMtrxSymmetric(rMode);
293 if ( matStiffSymmFlag ) {
300 if ( matStiffSymmFlag ) {
307StructuralInterfaceElementPhF :: computeStiffnessMatrix_ud(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
325 S.setColumn(stress,1);
334StructuralInterfaceElementPhF :: computeStiffnessMatrix_dd(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
353 double factorN = 1.0 + l* fPrime;
354 double factorB = l*l;
385StructuralInterfaceElementPhF :: updateYourself(
TimeStep *tStep)
387 Element :: updateYourself(tStep);
397StructuralInterfaceElementPhF :: updateInternalState(
TimeStep *tStep)
404 for (
auto &gp: *iRule ) {
bool hasDofID(DofIDItem id) const
int giveNumberOfDofs() const
virtual bool isActivated(TimeStep *tStep)
virtual FEInterpolation * giveInterpolation() 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
virtual int giveNumberOfDofManagers() const
DofManager * giveDofManager(int i) const
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
void assemble(const FloatArray &fe, const IntArray &loc)
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
double dotProduct(const FloatArray &x) const
void zero()
Zeroes all coefficients of receiver.
void rotatedWith(FloatMatrix &r, char mode)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beTProductOf(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)
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 beProductTOf(const FloatMatrix &a, const FloatMatrix &b)
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)
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
void followedBy(const IntArray &b, int allocChunk=0)
void computeStiffnessMatrix_uu(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
virtual void computeCovarBaseVectorsAt(GaussPoint *gp, FloatMatrix &G)=0
virtual void getLocationArray_d(IntArray &answer)=0
virtual void computeNd_matrixAt(const FloatArray &lCoords, FloatMatrix &N)
void giveInternalForcesVector_d(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
virtual void getLocationArray_u(IntArray &answer)=0
virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, FloatArray &jump, TimeStep *tStep)
int computeNumberOfDofs() override
void giveInternalForcesVector_u(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
double giveInternalLength()
void computeStiffnessMatrix_dd(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
virtual void giveDofManDofIDMask_u(IntArray &answer)=0
virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, double damage, TimeStep *tStep)
virtual void giveDofManDofIDMask_d(IntArray &answer)=0
virtual double computeDamageAt(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN)
void computeDamageUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN)
virtual void computeBd_matrixAt(GaussPoint *, FloatMatrix &)
FloatArray initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted.
virtual void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
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)
StructuralInterfaceElement(int n, Domain *d)
virtual void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
virtual double giveDrivingForcePrime(GaussPoint *gp) const
virtual double giveDrivingForce(GaussPoint *gp) const
GaussPoint IntegrationPoint