156 double NA = 0.5 * ( 1.0 - lCoords.
at(2) );
157 double NC = 0.5 * ( 1.0 + lCoords.
at(2) );
158 double NB = 0.5 * ( 1.0 - lCoords.
at(1) );
159 double ND = 0.5 * ( 1.0 + lCoords.
at(1) );
165 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
166 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
167 answer.
at(6, 3 * i - 2) = dNdx.
at(i, 2);
168 answer.
at(6, 3 * i - 1) = dNdx.
at(i, 1);
172 answer.
at(3, 3 * i - 0) = dNdx0.
at(i, 3);
174 answer.
at(4, 3 * i - 1) = NB * dNdxB.
at(i, 3) + ND * dNdxD.
at(i, 3);
175 answer.
at(4, 3 * i - 0) = NB * dNdxB.
at(i, 2) + ND * dNdxD.
at(i, 2);
178 answer.
at(5, 3 * i - 2) = NA * dNdxA.
at(i, 3) + NC * dNdxC.
at(i, 3);
179 answer.
at(5, 3 * i - 0) = NA * dNdxA.
at(i, 1) + NC * dNdxC.
at(i, 1);
199 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
200 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
201 answer.
at(3, 3 * i - 0) = dNdx.
at(i, 3);
202 answer.
at(4, 3 * i - 1) = dNdx.
at(i, 3);
203 answer.
at(7, 3 * i - 0) = dNdx.
at(i, 2);
204 answer.
at(5, 3 * i - 2) = dNdx.
at(i, 3);
205 answer.
at(8, 3 * i - 0) = dNdx.
at(i, 1);
206 answer.
at(6, 3 * i - 2) = dNdx.
at(i, 2);
207 answer.
at(9, 3 * i - 1) = dNdx.
at(i, 1);
236 double NA = 0.5 * ( 1.0 - lCoords.
at(2) );
237 double NC = 0.5 * ( 1.0 + lCoords.
at(2) );
238 double NB = 0.5 * ( 1.0 - lCoords.
at(1) );
239 double ND = 0.5 * ( 1.0 + lCoords.
at(1) );
245 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
246 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
247 answer.
at(6, 3 * i - 2) = dNdx.
at(i, 2);
248 answer.
at(9, 3 * i - 1) = dNdx.
at(i, 1);
252 answer.
at(3, 3 * i - 0) = dNdx0.
at(i, 3);
254 answer.
at(4, 3 * i - 1) = NB * dNdxB.
at(i, 3) + ND * dNdxD.
at(i, 3);
255 answer.
at(7, 3 * i - 0) = NB * dNdxB.
at(i, 2) + ND * dNdxD.
at(i, 2);
257 answer.
at(5, 3 * i - 2) = NA * dNdxA.
at(i, 3) + NC * dNdxC.
at(i, 3);
258 answer.
at(8, 3 * i - 0) = NA * dNdxA.
at(i, 1) + NC * dNdxC.
at(i, 1);
281 double xi = lCoords.
at(1);
282 double eta = lCoords.
at(2);
283 double zeta = lCoords.
at(3);
337 {
x(0) *
x(0),
x(1) *
x(1),
x(2) *
x(2),
x(1) *
x(2),
x(0) *
x(2),
x(0) *
x(1) },
338 { y(0) * y(0), y(1) * y(1), y(2) * y(2), y(1) * y(2), y(0) * y(2), y(0) * y(1) },
339 { z(0) * z(0), z(1) * z(1), z(2) * z(2), z(1) * z(2), z(0) * z(2), z(0) * z(1) },
340 { 2 * y(0) * z(0), 2 * y(1) * z(1), 2 * y(2) * z(2), y(2) * z(1) + y(1) * z(2), y(2) * z(0) + y(0) * z(2), y(1) * z(0) + y(0) * z(1) },
341 { 2 *
x(0) * z(0), 2 *
x(1) * z(1), 2 *
x(2) * z(2),
x(2) * z(1) +
x(1) * z(2),
x(2) * z(0) +
x(0) * z(2),
x(1) * z(0) +
x(0) * z(1) },
342 { 2 *
x(0) * y(0), 2 *
x(1) * y(1), 2 *
x(2) * y(2),
x(2) * y(1) +
x(1) * y(2),
x(2) * y(0) +
x(0) * y(2),
x(1) * y(0) +
x(0) * y(1) }
363 answer = this->
alpha - deltaAlpha;
374 FloatArray fC,
fE, strain, u, vStrainC, vStrainE, vStress;
393 vStrainC.
add(vStrainE);
413 vStrainC.
add(vStrainE);
452 FloatArray fC,
fE, strain, u, vStrainC, vStrainE, vStress;
493 KCC.
add(dV, KCC_geo);
539 for (
int j = 1; j <= 3; j++ ) {
540 answer.
at(1,col + j) = F.
at(j,1) * dN.
at(i, 1);
541 answer.
at(2,col + j) = F.
at(j,2) * dN.
at(i, 2);
542 answer.
at(3,col + j) = F.
at(j,3) * dN.
at(i, 3);
543 answer.
at(4,col + j) = F.
at(j,2) * dN.
at(i, 3) + F.
at(j,3) * dN.
at(i, 2);
544 answer.
at(5,col + j) = F.
at(j,1) * dN.
at(i, 3) + F.
at(j,3) * dN.
at(i, 1);
545 answer.
at(6,col + j) = F.
at(j,1) * dN.
at(i, 2) + F.
at(j,2) * dN.
at(i, 1);
585 double NA = 0.5 * ( 1.0 - lCoords.
at(2) );
586 double NC = 0.5 * ( 1.0 + lCoords.
at(2) );
587 double NB = 0.5 * ( 1.0 - lCoords.
at(1) );
588 double ND = 0.5 * ( 1.0 + lCoords.
at(1) );
595 for (
int j = 1; j <= 3; j++ ) {
596 answer.
at(1,col + j) = F.
at(j,1) * dN.
at(i, 1);
597 answer.
at(2,col + j) = F.
at(j,2) * dN.
at(i, 2);
598 answer.
at(3,col + j) = F.
at(j,3) * dN.
at(i, 3);
599 answer.
at(6,col + j) = F.
at(j,1) * dN.
at(i, 2) + F.
at(j,2) * dN.
at(i, 1);
601 answer.
at(4,col + j) = NB * ( FB.
at(j,2) * dNdxB.
at(i, 3) + FB.
at(j,3) * dNdxB.
at(i, 2) ) + ND * ( FD.
at(j,2) * dNdxD.
at(i, 3) + FD.
at(j,3) * dNdxD.
at(i, 2) ) ;
602 answer.
at(5,col + j) = NA * ( FA.
at(j,1) * dNdxA.
at(i, 3) + FA.
at(j,3) * dNdxA.
at(i, 1) ) + NC * ( FC.
at(j,1) * dNdxC.
at(i, 3) + FC.
at(j,3) * dNdxC.
at(i, 1) );
689 double NA = 0.5 * ( 1.0 - lCoords.
at(2) );
690 double NC = 0.5 * ( 1.0 + lCoords.
at(2) );
691 double NB = 0.5 * ( 1.0 - lCoords.
at(1) );
692 double ND = 0.5 * ( 1.0 + lCoords.
at(1) );
694 answer.
at(4) = NB * EB.
at(2,3) + ND * ED.
at(2,3);
695 answer.
at(5) = NA * EA.
at(2,3) + NC * EC.
at(2,3);
726 K_ij.
at(1,1) = K_ij.
at(2,2) = K_ij.
at(3,3) = G_ij.
at(i,j);
727 answer.
assemble(K_ij, { (i-1)*3 + 1, (i-1)*3 + 2, (i-1)*3 + 3 }, { (j-1)*3 + 1, (j-1)*3 + 2, (j-1)*3 + 3 } );
double giveDeterminant() const
Returns the trace (sum of diagonal components) of the receiver.
CrossSection * giveCrossSection()
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
virtual void postInitialize()
Performs post initialization steps.
int nlGeometry
Flag indicating if geometrical nonlinearities apply.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
double & at(int i)
Coefficient access function.
This class implements a structural material status information.
void clear()
Clears receiver (zero size).
static FEI3dHexaLin interpolation
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void computeEASBmatrixAt(GaussPoint *gp, FloatMatrix &answer)
void computeEVector(FloatArray &answer, FloatArray &lCoords, FloatArray &ae)
#define _IFT_SolidShell_EAS_type
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void computeFVector(FloatArray &answer, FloatArray &lCoords, FloatArray &ae)
void computeBondTransformationMatrix(FloatMatrix &answer, FloatMatrix &base)
MatResponseMode
Describes the character of characteristic material matrix.
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Computes a matrix which, multiplied by the column matrix of nodal displacements, gives the displaceme...
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
void beColumnOf(const FloatMatrix &mat, int col)
Reciever will be set to a given column in a matrix.
void beMatrixForm(const FloatArray &aArray)
virtual void giveStiffnessMatrix_dPdF(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the material stiffness matrix dPdF of receiver in a given integration point, respecting its history.
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
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 .
SolidShell(int n, Domain *d)
virtual void giveFirstPKStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep)=0
Computes the First Piola-Kirchoff stress vector for a given deformation gradient and integration poin...
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
void times(double f)
Multiplies receiver by factor f.
Wrapper around element definition to provide FEICellGeometry interface.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
double at(int i, int j) const
Coefficient access function.
void giveRealStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Computes the real stress vector for given strain and integration point.
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
int numberOfGaussPoints
Number of integration points as specified by nip.
Class representing vector of real numbers.
virtual void postInitialize()
Performs post initialization steps.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
void beMatrixFormOfStress(const FloatArray &aArray)
Reciever will be a 3x3 matrix formed from a vector with either 9 or 6 components. ...
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Gives the jacobian matrix at the local coordinates.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
This class implements a Linear 3d 8-node finite element for stress analysis.
void add(const FloatMatrix &a)
Adds matrix to the receiver.
void zero()
Zeroes all coefficients of receiver.
void beTProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
virtual FEInterpolation * giveInterpolation() const
void computeAlpha(FloatArray &answer, FloatArray &u)
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
Evaluates nodal representation of real internal forces.
void beProductTOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
void zero()
Zeroes all coefficient of receiver.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual void computeBEmatrixAt(GaussPoint *gp, FloatMatrix &answer, TimeStep *tStep)
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Evaluates nodal representation of real internal forces.
void beSymVectorFormOfStrain(const FloatMatrix &aMatrix)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
Abstract base class for all structural cross section models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
void assemble(const FloatMatrix &src, const IntArray &loc)
Assembles the contribution using localization array into receiver.
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
void beInverseOf(const FloatMatrix &src)
Modifies receiver to become inverse of given parameter.
int giveNumberOfRows() const
Returns number of rows of receiver.
void symmetrized()
Initializes the lower half of the receiver according to the upper half.
Class representing integration point in finite element program.
void computeGeometricStiffness(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
void add(const FloatArray &src)
Adds array src to receiver.
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of 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 .