79 answer.
at(1, 1) = answer.
at(2, 2) = answer.
at(3, 3) = 0.;
80 answer.
at(1, 2) = -vec.
at(3);
81 answer.
at(1, 3) = vec.
at(2);
82 answer.
at(2, 1) = vec.
at(3);
83 answer.
at(2, 3) = -vec.
at(1);
84 answer.
at(3, 1) = -vec.
at(2);
85 answer.
at(3, 2) = vec.
at(1);
103 answer.
at(1, 1) = answer.
at(2, 2) = answer.
at(3, 3) = 1.;
105 if ( psiSize <= 1.e-40 ) {
111 S.times(sin(psiSize) / psiSize);
112 SS.
times( ( 1. - cos(psiSize) ) / ( psiSize * psiSize ) );
134 centreSpin.
at(1) = 0.5 * ( u.
at(4) + u.
at(10) );
135 centreSpin.
at(2) = 0.5 * ( u.
at(5) + u.
at(11) );
136 centreSpin.
at(3) = 0.5 * ( u.
at(6) + u.
at(12) );
159 eps.beTProductOf(
tempTc, xd);
160 eps.times(1. / this->
l0);
167 answer.
at(1) = eps.at(1);
168 answer.
at(2) = eps.at(2);
169 answer.
at(3) = eps.at(3);
170 answer.
at(4) = curv.
at(1);
171 answer.
at(5) = curv.
at(2);
172 answer.
at(6) = curv.
at(3);
188 for (
int i = 1; i < 4; i++ ) {
189 answer.
at(i, i) = -1.0;
190 answer.
at(i + 6, i) = 1.0;
191 answer.
at(i + 3, i + 3) = -1.0;
192 answer.
at(i + 9, i + 3) = 1.0;
194 for (
int j = 1; j < 4; j++ ) {
195 answer.
at(i + 3, j) = answer.
at(i + 9, j) = 0.5 * s.
at(j, i);
212 if ( useUpdatedGpRecord == 1 ) {
219 for (
int i = 1; i <= 3; i++ ) {
221 for (
int j = 1; j <= 3; j++ ) {
222 s1 +=
tempTc.at(i, j) * stress.
at(j);
223 s2 +=
tempTc.at(i, j) * stress.
at(j + 3);
245 ( this->
giveNode(1)->giveCoordinate(1) + u.
at(1) );
247 ( this->
giveNode(1)->giveCoordinate(2) + u.
at(2) );
249 ( this->
giveNode(1)->giveCoordinate(3) + u.
at(3) );
268 for (
int i = 1; i <= 12; i++ ) {
269 for (
int j = 1; j <= 3; j++ ) {
270 for (
int k = 1; k <= 3; k++ ) {
272 xt.at(i, j) += x.
at(i, k) *
tempTc.at(k, j);
273 xt.at(i, j + 3) += x.
at(i, k + 3) *
tempTc.at(k, j);
288 for (
int i = 1; i <= 3; i++ ) {
290 for (
int j = 1; j <= 3; j++ ) {
291 s1 +=
tempTc.at(i, j) * stress.
at(j);
292 s2 +=
tempTc.at(i, j) * stress.
at(j + 3);
302 for (
int i = 1; i <= 3; i++ ) {
303 for (
int j = 1; j <= 3; j++ ) {
304 answer.
at(i, j + 3) += sn.
at(i, j);
305 answer.
at(i, j + 9) += sn.
at(i, j);
306 answer.
at(i + 3, j + 3) += sm.
at(i, j);
307 answer.
at(i + 3, j + 9) += sm.
at(i, j);
309 answer.
at(i + 6, j + 3) -= sn.
at(i, j);
310 answer.
at(i + 6, j + 9) -= sn.
at(i, j);
311 answer.
at(i + 9, j + 3) -= sm.
at(i, j);
312 answer.
at(i + 9, j + 9) -= sm.
at(i, j);
323 for (
int i = 1; i <= 3; i++ ) {
324 for (
int j = 1; j <= 3; j++ ) {
325 answer.
at(i + 3, j) -= sn.
at(i, j);
326 answer.
at(i + 3, j + 3) += y.
at(i, j);
327 answer.
at(i + 3, j + 6) += sn.
at(i, j);
328 answer.
at(i + 3, j + 9) += y.
at(i, j);
330 answer.
at(i + 9, j) -= sn.
at(i, j);
331 answer.
at(i + 9, j + 3) += y.
at(i, j);
332 answer.
at(i + 9, j + 6) += sn.
at(i, j);
333 answer.
at(i + 9, j + 9) += y.
at(i, j);
372 this->
tc.beTranspositionOf(lcs);
390 l0 = sqrt(dx * dx + dy * dy + dz * dz);
407 answer.
at(1, 1) = answer.
at(2, 2) = answer.
at(3, 3) = halfMass;
408 answer.
at(7, 7) = answer.
at(8, 8) = answer.
at(9, 9) = halfMass;
416 answer.
at(4, 4) = answer.
at(10, 10) = Irr * halfMass;
417 answer.
at(5, 5) = answer.
at(11, 11) = Iy * halfMass;
418 answer.
at(6, 6) = answer.
at(12, 12) = Iz * halfMass;
429 ksi = iLocCoord.
at(1);
430 n1 = ( 1. - ksi ) * 0.5;
431 n2 = ( 1. + ksi ) * 0.5;
437 answer.
at(1, 1) = n1;
438 answer.
at(1, 7) = n2;
440 answer.
at(2, 2) = n1;
441 answer.
at(2, 8) = n2;
443 answer.
at(3, 3) = n1;
444 answer.
at(3, 9) = n2;
446 answer.
at(4, 4) = n1;
447 answer.
at(4, 10) = n2;
449 answer.
at(5, 5) = n1;
450 answer.
at(5, 11) = n2;
452 answer.
at(6, 6) = n1;
453 answer.
at(6, 12) = n2;
472 if ( type == IST_BeamForceMomentTensor ) {
475 }
else if ( type == IST_BeamStrainCurvatureTensor ) {
487 answer = { D_u, D_v, D_w, R_u, R_v, R_w };
497 n1 = ( 1. - ksi ) * 0.5;
498 n2 = ( 1. + ksi ) * 0.5;
518 OOFEM_ERROR(
"computeConstitutiveMatrix_dPdF_At Not implemented for libeam2dnl");
541 for (
int i = 1; i <= 12; i++ ) {
568 Node *nodeA, *nodeB, *refNode;
576 for (
int i = 1; i <= 3; i++ ) {
581 lz.beVectorProductOf(lx, help);
583 ly.beVectorProductOf(lz, lx);
586 for (
int i = 1; i <= 3; i++ ) {
587 answer.
at(1, i) = lx.at(i);
588 answer.
at(2, i) = ly.at(i);
589 answer.
at(3, i) = lz.at(i);
640 for (
int i = 1; i <= 3; i++ ) {
641 for (
int j = 1; j <= 3; j++ ) {
642 answer.
at(i, j) = lcs.
at(i, j);
643 answer.
at(3 + i, 3 + j) = lcs.
at(i, j);
715 ac.at(1) = 0.5 * ( ui.at(10) - ui.at(4) );
716 ac.at(2) = 0.5 * ( ui.at(11) - ui.at(5) );
717 ac.at(3) = 0.5 * ( ui.at(12) - ui.at(6) );
727 ac.at(1) = ( ui.at(10) - ui.at(4) );
728 ac.at(2) = ( ui.at(11) - ui.at(5) );
729 ac.at(3) = ( ui.at(12) - ui.at(6) );
740 answer.
at(1) += PrevEpsilon.
at(4);
741 answer.
at(2) += PrevEpsilon.
at(5);
742 answer.
at(3) += PrevEpsilon.
at(6);
747LIBeam3dNL :: NodalAveragingRecoveryMI_computeNodalValue(
FloatArray &answer,
int node,
771 if ( !
gc.testElementGraphicActivity(
this) ) {
778 EASValsSetColor(
gc.getElementColor() );
786 go = CreateLine3D(p);
787 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
788 EGAttachObject(go, ( EObjectP )
this);
789 EMAddGraphicsToModel(ESIModel(), go);
797 if ( !
gc.testElementGraphicActivity(
this) ) {
801 double defScale =
gc.getDefScale();
805 EASValsSetColor(
gc.getDeformedElementColor() );
814 go = CreateLine3D(p);
815 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
816 EMAddGraphicsToModel(ESIModel(), go);
double length(const Vector &a)
#define REGISTER_Element(class)
virtual Material * giveMaterial(IntegrationPoint *ip) const =0
hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
virtual double give(CrossSectionProperty a, GaussPoint *gp) const
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
double giveCoordinate(int i) const
ParameterManager elementPPM
Node * giveNode(int i) const
virtual void updateYourself(TimeStep *tStep)
int numberOfDofMans
Number of dofmanagers.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
void postInitialize() override
Performs post initialization steps.
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
virtual void initForNewStep()
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Domain * giveDomain() const
int number
Component number.
double computeNorm() const
Index giveSize() const
Returns the size of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beTProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void add(const FloatMatrix &a)
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 beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void zero()
Zeroes all coefficient of receiver.
double at(std::size_t i, std::size_t j) const
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
double giveWeight()
Returns integration weight of receiver.
GaussPoint * getIntegrationPoint(int n)
void computeSMtrx(FloatMatrix &answer, FloatArray &vec)
int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int iEdge, GaussPoint *gp) override
void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode) override
FloatMatrix tempTc
Temporary triad at the centre.
void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep) override
void computeXdVector(FloatArray &answer, TimeStep *tStep)
void initForNewStep() override
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer) override
void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType) override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void postInitialize() override
Performs post initialization steps.
void computeXMtrx(FloatMatrix &answer, TimeStep *tStep)
StateCounterType tempTcCounter
Time stamp of temporary centre triad.
void giveDofManDofIDMask(int inode, IntArray &) const override
void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void initializeFrom(InputRecord &ir, int priority) override
void updateYourself(TimeStep *tStep) override
FloatMatrix tc
Last equilibrium triad at the centre.
int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override
int referenceNode
Reference node.
void giveEdgeDofMapping(IntArray &answer, int iEdge) const override
LIBeam3dNL(int n, Domain *d)
double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override
void updateTempTriad(TimeStep *tStep)
static ParamKey IPK_LIBeam3dNL_refnode
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
void computeRotMtrx(FloatMatrix &answer, FloatArray &psi)
void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) override
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
int giveLocalCoordinateSystem(FloatMatrix &answer) override
double computeLength() override
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0) override
void computeTempCurv(FloatArray &answer, TimeStep *tStep)
void computeGaussPoints() override
double computeVolumeAround(GaussPoint *gp) override
int computeLoadGToLRotationMtrx(FloatMatrix &answer) override
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
void initializeFrom(InputRecord &ir, int priority) override
NLStructuralElement(int n, Domain *d)
int nlGeometry
Flag indicating if geometrical nonlinearities apply.
NodalAveragingRecoveryModelInterface()
Constructor.
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
virtual FloatMatrixF< 6, 6 > give3dBeamStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatArrayF< 6 > giveGeneralizedStress_Beam3d(const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const =0
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
StateCounterType giveSolutionStateCounter()
@ CS_InertiaMomentZ
Moment of inertia around z-axis.
@ CS_InertiaMomentY
Moment of inertia around y-axis.
@ NodalAveragingRecoveryModelInterfaceType
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define OOFEG_DEFORMED_GEOMETRY_LAYER
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
#define OOFEG_RAW_GEOMETRY_WIDTH
#define OOFEG_RAW_GEOMETRY_LAYER
#define PM_ELEMENT_ERROR_IFNOTSET(_pm, _componentnum, _paramkey)
#define PM_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)