OOFEM 3.0
Loading...
Searching...
No Matches
oofem::LayeredCrossSection Class Reference

#include <layeredcrosssection.h>

Inheritance diagram for oofem::LayeredCrossSection:
Collaboration diagram for oofem::LayeredCrossSection:

Public Member Functions

 LayeredCrossSection (int n, Domain *d)
void initializeFrom (InputRecord &ir) override
void giveInputRecord (DynamicInputRecord &input) override
void createMaterialStatus (GaussPoint &iGP) override
int setupIntegrationPoints (IntegrationRule &irule, int npoints, Element *element) override
int setupIntegrationPoints (IntegrationRule &irule, int npointsXY, int npointsZ, Element *element) override
FloatArrayF< 6 > giveRealStress_3d (const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 6 > giveRealStress_3dDegeneratedShell (const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 4 > giveRealStress_PlaneStrain (const FloatArrayF< 4 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 3 > giveRealStress_PlaneStress (const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 1 > giveRealStress_1d (const FloatArrayF< 1 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 2 > giveRealStress_Warping (const FloatArrayF< 2 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 6, 6 > giveStiffnessMatrix_3d (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 3, 3 > giveStiffnessMatrix_PlaneStress (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > giveStiffnessMatrix_PlaneStrain (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 1, 1 > giveStiffnessMatrix_1d (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 3 > giveGeneralizedStress_Beam2d (const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 6 > giveGeneralizedStress_Beam3d (const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 5 > giveGeneralizedStress_Plate (const FloatArrayF< 5 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 8 > giveGeneralizedStress_Shell (const FloatArrayF< 8 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 9 > giveGeneralizedStress_ShellRot (const FloatArrayF< 9 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 4 > giveGeneralizedStress_MembraneRot (const FloatArrayF< 4 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 3 > giveGeneralizedStress_PlateSubSoil (const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override
void giveCharMaterialStiffnessMatrix (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
bool isCharacteristicMtrxSymmetric (MatResponseMode mode) const override
FloatMatrixF< 3, 3 > give2dBeamStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 6, 6 > give3dBeamStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 5, 5 > give2dPlateStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 8, 8 > give3dShellStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 9, 9 > give3dShellRotStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 6, 6 > give3dDegeneratedShellStiffMtrx (MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > giveMembraneRotStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 3, 3 > give2dPlateSubSoilStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayimposeStressConstrainsOnGradient (GaussPoint *gp, FloatArray *) override
FloatArrayimposeStrainConstrainsOnGradient (GaussPoint *gp, FloatArray *) override
double give (CrossSectionProperty a, GaussPoint *gp) const override
double give (CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local) const override
int giveNumberOfLayers () const
int giveLayer (GaussPoint *gp) const
double computeIntegralThick () const
 Returns the total thickness of all layers.
void setupLayerMidPlanes ()
int giveLayerMaterial (int layer) const
MaterialgiveMaterial (IntegrationPoint *ip) const override
 hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
int giveInterfaceMaterialNum (int interface)
MaterialgiveInterfaceMaterial (int interface)
int checkConsistency () override
double giveLayerMidZ (int layer) const
double giveLayerThickness (int layer) const
int giveNumIntegrationPointsInLayer () const
double giveMidSurfaceZcoordFromBottom () const
double giveMidSurfaceXiCoordFromBottom () const
void giveInterfaceXiCoords (FloatArray &answer) const
const char * giveInputRecordName () const override
const char * giveClassName () const override
void printYourself () override
 Prints receiver state on stdout. Useful for debugging.
GaussPointgiveSlaveGaussPoint (GaussPoint *gp, int layer, int igp) const
void saveIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) override
void restoreIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) override
void mapLayerGpCoordsToShellCoords (std::vector< std::unique_ptr< IntegrationRule > > &layerIntegrationRulesArray)
void setupLayeredIntegrationRule (std::vector< std::unique_ptr< IntegrationRule > > &layerIntegrationRulesArray, Element *el, int numInPlanePoints)
int giveIPValue (FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep) override
double give (int aProperty, GaussPoint *gp) const override
int packUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
int unpackAndUpdateUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
int estimatePackSize (DataStream &buff, GaussPoint *ip) override
FloatArrayF< 9 > giveFirstPKStress_3d (const FloatArrayF< 9 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 5 > giveFirstPKStress_PlaneStrain (const FloatArrayF< 5 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 4 > giveFirstPKStress_PlaneStress (const FloatArrayF< 4 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 1 > giveFirstPKStress_1d (const FloatArrayF< 1 > &reducedvF, GaussPoint *gp, TimeStep *tStep) const override
void giveCharMaterialStiffnessMatrix_dPdF (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
FloatMatrixF< 9, 9 > giveStiffnessMatrix_dPdF_3d (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 5, 5 > giveStiffnessMatrix_dPdF_PlaneStrain (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > giveStiffnessMatrix_dPdF_PlaneStress (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 1, 1 > giveStiffnessMatrix_dPdF_1d (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
void giveCauchyStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep) override
void giveStiffnessMatrix_dCde (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
Public Member Functions inherited from oofem::StructuralCrossSection
 StructuralCrossSection (int n, Domain *d)
FloatArray giveRealStresses (const FloatArray &reducedStrain, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArrayF< 6 > giveGeneralizedStress_3dBeamSubSoil (const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArray giveFirstPKStresses (const FloatArray &reducedF, GaussPoint *gp, TimeStep *tStep) const
virtual void giveEshelbyStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedvF, TimeStep *tStep)
virtual FloatMatrixF< 6, 6 > give3dBeamSubSoilStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
int testCrossSectionExtension (CrossSectExtension ext) override
MaterialgiveMaterial (IntegrationPoint *ip) const override
virtual InterfacegiveMaterialInterface (InterfaceType t, IntegrationPoint *ip)
Public Member Functions inherited from oofem::CrossSection
 CrossSection (int n, Domain *d)
virtual ~CrossSection ()
 Destructor.
int giveSetNumber () const
virtual bool hasProperty (CrossSectionProperty a)
virtual double predictRelativeComputationalCost (GaussPoint *ip)
virtual double giveRelativeSelfComputationalCost ()
virtual double predictRelativeRedistributionCost (GaussPoint *gp)
void saveContext (DataStream &stream, ContextMode mode) override
void restoreContext (DataStream &stream, ContextMode mode) override
Public Member Functions inherited from oofem::FEMComponent
 FEMComponent (int n, Domain *d)
virtual ~FEMComponent ()=default
 Virtual destructor.
DomaingiveDomain () const
virtual void setDomain (Domain *d)
int giveNumber () const
void setNumber (int num)
virtual void updateLocalNumbering (EntityRenumberingFunctor &f)
virtual void initializeFrom (InputRecord &ir, int priority)
virtual void initializeFinish ()
virtual void postInitialize ()
 Performs post initialization steps. Called after all components are created and initialized.
virtual void printOutputAt (FILE *file, TimeStep *tStep)
virtual InterfacegiveInterface (InterfaceType t)
std::string errorInfo (const char *func) const
 Returns string for prepending output (used by error reporting macros).

Static Public Member Functions

static MaterialMode giveCorrespondingSlaveMaterialMode (MaterialMode mode)

Protected Member Functions

double giveArea () const
int giveSlaveGPIndex (int ilayer, int igp) const

Protected Attributes

IntArray layerMaterials
 Material of each layer.
IntArray interfacerMaterials
 Interface (cohesive zone) material for each interface.
FloatArray layerThicks
 Thickness for each layer.
FloatArray layerWidths
 Width for each layer.
FloatArray layerMidZ
 z-coord of the mid plane for each layer
FloatArray layerRots
 Rotation of the material in each layer.
int numberOfLayers = 0
int numberOfIntegrationPoints = 1
 number of integration points per layer (for 3D elements)
IntArray layerIntegrationPoints
double midSurfaceZcoordFromBottom = 0.
double midSurfaceXiCoordFromBottom = 0.
double totalThick = 0.
double area = 0.
double beamShearCoeffxz = 1.0
Protected Attributes inherited from oofem::CrossSection
Dictionary propertyDictionary
int setNumber
Protected Attributes inherited from oofem::FEMComponent
int number
 Component number.
Domaindomain
 Link to domain object, useful for communicating with other FEM components.

Detailed Description

This class implements a layered cross section in a finite element problem. A cross section is an attribute of a domain. It is usually also attribute of many elements.

The attribute 'propertyDictionary' contains all the properties of a layered cross section, like thickness and width of each layer. The attribute 'layerMaterials' contains an array of Materials corresponding to each layer.

It uses master - slave GaussPoint approach, where master gp has more slaves gp. slave gp represent for each layer material point. It's coordinate sections contains z-coordinate (-1,1) from mid-section. The slaves are manage completely ( created, saved their context.,,,) from this class. Master gp only deletes slaves in destructor.

Tasks:

  • Returning standard material stiffness matrices (like 3d stress-strain, 2d plane , plate, 3d beam, 2d beam ..) according to current state determined by parameter StressMode by calling material and by possible modifying returned matrix (for example in layered mode approach each layer is asked for 3dMaterialStiffness and this is integrated for example over thickness for plate bending problems).
  • Returning RealStress state in Gauss point and for given Stress mode.
  • Returning a properties of cross section like thickness or area.

Definition at line 93 of file layeredcrosssection.h.

Constructor & Destructor Documentation

◆ LayeredCrossSection()

oofem::LayeredCrossSection::LayeredCrossSection ( int n,
Domain * d )
inline

Member Function Documentation

◆ checkConsistency()

int oofem::LayeredCrossSection::checkConsistency ( void )
overridevirtual

Allows programmer to test some internal data, before computation begins. For example, one may use this function, to ensure that element has material with required capabilities is assigned to element. This must be done after all mesh components are instanciated.

Returns
Nonzero if receiver is consistent.

Implements oofem::StructuralCrossSection.

Definition at line 1778 of file layeredcrosssection.C.

References oofem::FEMComponent::giveClassName(), oofem::FEMComponent::giveDomain(), giveLayerMaterial(), oofem::Domain::giveMaterial(), giveNumberOfLayers(), and OOFEM_WARNING.

◆ computeIntegralThick()

double oofem::LayeredCrossSection::computeIntegralThick ( ) const

Returns the total thickness of all layers.

Definition at line 1489 of file layeredcrosssection.C.

References totalThick.

Referenced by give(), give(), giveInterfaceXiCoords(), initializeFrom(), and mapLayerGpCoordsToShellCoords().

◆ createMaterialStatus()

◆ estimatePackSize()

int oofem::LayeredCrossSection::estimatePackSize ( DataStream & buff,
GaussPoint * ip )
inlineoverridevirtual

Estimates the necessary pack size to hold all packed data of receiver. The corresponding material model service is invoked. The nature of packed data is typically material model dependent.

Parameters
buffCommunication buffer.
ipIntegration point.
Returns
Estimate of pack size.

Implements oofem::CrossSection.

Definition at line 246 of file layeredcrosssection.h.

References OOFEM_ERROR.

◆ give() [1/3]

double oofem::LayeredCrossSection::give ( CrossSectionProperty a,
const FloatArray & coords,
Element * elem,
bool local ) const
overridevirtual

Returns the value of cross section property at given point (belonging to given element). the point coordinates can be specified using its local element coordinates or global coordinates (one of these two can be set to NULL) The default implementation assumes constant properties stored in propertyDictionary.

Parameters
aId of requested property.
coordslocal or global coordinates (determined by local parameter) of point of interest
elemreference to underlying element containing given point
gpIntegration point
Returns
Property value.

Reimplemented from oofem::CrossSection.

Definition at line 1614 of file layeredcrosssection.C.

References computeIntegralThick(), oofem::CS_Area, oofem::CS_BottomZCoord, oofem::CS_NumLayers, oofem::CS_Thickness, oofem::CS_TopZCoord, oofem::CrossSection::give(), giveArea(), midSurfaceZcoordFromBottom, numberOfLayers, and totalThick.

◆ give() [2/3]

double oofem::LayeredCrossSection::give ( CrossSectionProperty a,
GaussPoint * gp ) const
overridevirtual

Returns the value of cross section property at given point. The default implementation assumes constant properties stored in propertyDictionary.

Parameters
aId of requested property.
gpIntegration point
Returns
Property value.

Reimplemented from oofem::CrossSection.

Definition at line 1575 of file layeredcrosssection.C.

References computeIntegralThick(), oofem::CS_Area, oofem::CS_BottomZCoord, oofem::CS_NumLayers, oofem::CS_Thickness, oofem::CS_TopZCoord, oofem::CrossSection::give(), giveArea(), midSurfaceZcoordFromBottom, numberOfLayers, and totalThick.

Referenced by give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellRotStiffMtrx(), give3dShellStiffMtrx(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveGeneralizedStress_ShellRot(), giveSlaveGaussPoint(), and oofem::Delamination::initializeFrom().

◆ give() [3/3]

double oofem::LayeredCrossSection::give ( int aProperty,
GaussPoint * gp ) const
overridevirtual

◆ give2dBeamStiffMtrx()

FloatMatrixF< 3, 3 > oofem::LayeredCrossSection::give2dBeamStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Computes the stiffness matrix for 2d beams.

Parameters
answerThe requested matrix.
modeMaterial response mode.
gpIntegration point.
tStepTime step.
Todo
The logic in this whole class is pretty messy to support both slave-gp's and normal gps. Rethinking the approach is necessary. Just using the gp number doesn't nicely support more than 1 gp per layer. Must rethink.

Implements oofem::StructuralCrossSection.

Definition at line 840 of file layeredcrosssection.C.

References oofem::FloatMatrixF< N, M >::at(), beamShearCoeffxz, oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::StructuralMaterial::give2dBeamLayerStiffMtrx(), giveLayerMaterial(), giveSlaveGaussPoint(), layerIntegrationPoints, layerRots, layerThicks, layerWidths, numberOfLayers, and OOFEM_ERROR.

Referenced by giveCharMaterialStiffnessMatrix().

◆ give2dPlateStiffMtrx()

FloatMatrixF< 5, 5 > oofem::LayeredCrossSection::give2dPlateStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing 2d plate stiffness matrix.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).
Todo
Just using the gp number doesn't nicely support more than 1 gp per layer. Must rethink.

Implements oofem::StructuralCrossSection.

Definition at line 631 of file layeredcrosssection.C.

References oofem::FloatMatrixF< N, M >::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), giveLayerMaterial(), oofem::StructuralMaterial::givePlateLayerStiffMtrx(), giveSlaveGaussPoint(), layerIntegrationPoints, layerRots, layerThicks, layerWidths, M_PI, numberOfLayers, and oofem::unrotate().

Referenced by giveCharMaterialStiffnessMatrix().

◆ give2dPlateSubSoilStiffMtrx()

FloatMatrixF< 3, 3 > oofem::LayeredCrossSection::give2dPlateSubSoilStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing subsoil stiffness matrix for plates.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 913 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ give3dBeamStiffMtrx()

FloatMatrixF< 6, 6 > oofem::LayeredCrossSection::give3dBeamStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Computes the stiffness matrix for 2d beams.

Parameters
answerThe requested matrix.
modeMaterial response mode.
gpIntegration point.
tStepTime step.

Implements oofem::StructuralCrossSection.

Definition at line 896 of file layeredcrosssection.C.

References OOFEM_ERROR.

Referenced by giveCharMaterialStiffnessMatrix().

◆ give3dDegeneratedShellStiffMtrx()

FloatMatrixF< 6, 6 > oofem::LayeredCrossSection::give3dDegeneratedShellStiffMtrx ( MatResponseMode rMode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing 3d shell stiffness matrix on degenerated shell elements.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).

Reimplemented from oofem::StructuralCrossSection.

Definition at line 820 of file layeredcrosssection.C.

References oofem::FloatMatrixF< N, M >::at(), oofem::StructuralMaterial::give3dMaterialStiffnessMatrix(), and giveMaterial().

◆ give3dShellRotStiffMtrx()

FloatMatrixF< 9, 9 > oofem::LayeredCrossSection::give3dShellRotStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing 3d shell (with normal rotation) stiffness matrix.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 797 of file layeredcrosssection.C.

References oofem::FloatMatrix::assemble(), oofem::FloatMatrix::at(), oofem::CS_DrillingStiffness, give(), give3dShellStiffMtrx(), oofem::FloatMatrix::resize(), and oofem::FloatMatrix::zero().

◆ give3dShellStiffMtrx()

FloatMatrixF< 8, 8 > oofem::LayeredCrossSection::give3dShellStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing 3d shell stiffness matrix.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).
Todo
The logic in this whole class is pretty messy to support both slave-gp's and normal gps. Rethinking the approach is necessary. Just using the gp number doesn't nicely support more than 1 gp per layer. Must rethink.

Implements oofem::StructuralCrossSection.

Definition at line 707 of file layeredcrosssection.C.

References oofem::FloatMatrixF< N, M >::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), giveLayerMaterial(), oofem::StructuralMaterial::givePlateLayerStiffMtrx(), giveSlaveGaussPoint(), layerIntegrationPoints, layerRots, layerThicks, layerWidths, numberOfLayers, and oofem::unrotate().

Referenced by give3dShellRotStiffMtrx(), and giveCharMaterialStiffnessMatrix().

◆ giveArea()

double oofem::LayeredCrossSection::giveArea ( ) const
protected

Definition at line 1640 of file layeredcrosssection.C.

References area.

Referenced by give(), and give().

◆ giveCauchyStresses()

void oofem::LayeredCrossSection::giveCauchyStresses ( FloatArray & answer,
GaussPoint * gp,
const FloatArray & reducedFIncrement,
TimeStep * tStep )
inlineoverridevirtual

Computes the Cauchy stress vector for a given increment of deformation gradient and given integration point. The service should use previously reached equilibrium history variables. Also it should update temporary history variables in status according to newly reached state. The temporary history variables are moved into equilibrium ones after global structure equilibrium has been reached by iteration process. Elements should always pass their requests to their cross section model, which performs necessary integration over its volume and invokes necessary material services for corresponding material model defined for given integration point.

Parameters
answerContains the Cauchy stress.
gpIntegration point.
reducedFIncrementIncrement of the deformation gradient vector in reduced form.
Todo
should this then be in a multiplicative way? /JB
Parameters
tStepCurrent time step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 265 of file layeredcrosssection.h.

References OOFEM_ERROR.

◆ giveCharMaterialStiffnessMatrix()

void oofem::LayeredCrossSection::giveCharMaterialStiffnessMatrix ( FloatMatrix & answer,
MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep )
overridevirtual

Computes the stiffness matrix of receiver in given integration point, respecting its history. The algorithm should use temporary or equilibrium history variables stored in integration point status to compute and return required result. Elements should always pass their requests to their cross section model, which performs necessary integration over its volume and invokes necessary material services for corresponding material model defined for given integration point.

Parameters
answerContains result.
modeMaterial response mode.
gpIntegration point.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 598 of file layeredcrosssection.C.

References oofem::FEMComponent::domain, give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dBeamStiffMtrx(), give3dShellStiffMtrx(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::GaussPoint::giveMaterialMode(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), numberOfLayers, and OOFEM_ERROR.

◆ giveCharMaterialStiffnessMatrix_dPdF()

void oofem::LayeredCrossSection::giveCharMaterialStiffnessMatrix_dPdF ( FloatMatrix & answer,
MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep )
overridevirtual

Computes the large strain stiffness matrix of receiver in given integration point, respecting its history. The algorithm should use temporary or equilibrium history variables stored in integration point status to compute and return required result. Elements should always pass their requests to their cross section model, which performs necessary integration over its volume and invokes necessary material services for corresponding material model defined for given integration point.

Parameters
answerContains result.
modeMaterial response mode.
gpIntegration point.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 1024 of file layeredcrosssection.C.

References oofem::FEMComponent::domain, oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::GaussPoint::giveMaterialMode(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), numberOfLayers, and OOFEM_ERROR.

◆ giveClassName()

const char * oofem::LayeredCrossSection::giveClassName ( ) const
inlineoverridevirtual
Returns
Class name of the receiver.

Implements oofem::FEMComponent.

Definition at line 219 of file layeredcrosssection.h.

◆ giveCorrespondingSlaveMaterialMode()

MaterialMode oofem::LayeredCrossSection::giveCorrespondingSlaveMaterialMode ( MaterialMode mode)
static

Definition at line 1549 of file layeredcrosssection.C.

Referenced by giveSlaveGaussPoint().

◆ giveFirstPKStress_1d()

FloatArrayF< 1 > oofem::LayeredCrossSection::giveFirstPKStress_1d ( const FloatArrayF< 1 > & reducedvF,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 1015 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveFirstPKStress_3d()

◆ giveFirstPKStress_PlaneStrain()

FloatArrayF< 5 > oofem::LayeredCrossSection::giveFirstPKStress_PlaneStrain ( const FloatArrayF< 5 > & reducedvF,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 965 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveFirstPKStress_PlaneStress()

FloatArrayF< 4 > oofem::LayeredCrossSection::giveFirstPKStress_PlaneStress ( const FloatArrayF< 4 > & reducedvF,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 972 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_Beam2d()

FloatArrayF< 3 > oofem::LayeredCrossSection::giveGeneralizedStress_Beam2d ( const FloatArrayF< 3 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Computes the generalized stress vector for given strain and integration point.

Parameters
answerContains result.
gpIntegration point.
generalizedStrainStrain vector in reduced generalized form.
tStepCurrent time step (most models are able to respond only when tStep is current time step).
Todo
This should be replaced with a general "CrossSectionStatus"

Implements oofem::StructuralCrossSection.

Definition at line 285 of file layeredcrosssection.C.

References oofem::FloatArrayF< N >::at(), beamShearCoeffxz, oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::GaussPoint::giveElement(), giveSlaveGaussPoint(), oofem::LayeredCrossSectionInterfaceType, layerIntegrationPoints, layerMaterials, layerRots, layerThicks, layerWidths, oofem::StructuralMaterialStatus::letTempStrainVectorBe(), numberOfLayers, and OOFEM_ERROR.

◆ giveGeneralizedStress_Beam3d()

FloatArrayF< 6 > oofem::LayeredCrossSection::giveGeneralizedStress_Beam3d ( const FloatArrayF< 6 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 342 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_MembraneRot()

◆ giveGeneralizedStress_Plate()

◆ giveGeneralizedStress_PlateSubSoil()

FloatArrayF< 3 > oofem::LayeredCrossSection::giveGeneralizedStress_PlateSubSoil ( const FloatArrayF< 3 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 592 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_Shell()

◆ giveGeneralizedStress_ShellRot()

FloatArrayF< 9 > oofem::LayeredCrossSection::giveGeneralizedStress_ShellRot ( const FloatArrayF< 9 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

◆ giveInputRecord()

◆ giveInputRecordName()

const char * oofem::LayeredCrossSection::giveInputRecordName ( ) const
inlineoverridevirtual
Returns
Input record name of the receiver.

Implements oofem::FEMComponent.

Definition at line 218 of file layeredcrosssection.h.

References _IFT_LayeredCrossSection_Name.

◆ giveInterfaceMaterial()

Material * oofem::LayeredCrossSection::giveInterfaceMaterial ( int interface)
inline

◆ giveInterfaceMaterialNum()

int oofem::LayeredCrossSection::giveInterfaceMaterialNum ( int interface)
inline

Definition at line 184 of file layeredcrosssection.h.

References oofem::IntArray::at().

Referenced by giveInterfaceMaterial().

◆ giveInterfaceXiCoords()

void oofem::LayeredCrossSection::giveInterfaceXiCoords ( FloatArray & answer) const

◆ giveIPValue()

int oofem::LayeredCrossSection::giveIPValue ( FloatArray & answer,
GaussPoint * ip,
InternalStateType type,
TimeStep * tStep )
overridevirtual

Returns the integration point corresponding value in Reduced form.

Parameters
answercontain corresponding ip value, zero sized if not available
ipIntegration point.
typeDetermines the type of internal variable.
tStepTime step.
Returns
Nonzero if o.k, zero otherwise.
Todo
so far this only works for elements where each layer has its own integration rule

Reimplemented from oofem::CrossSection.

Definition at line 1799 of file layeredcrosssection.C.

References oofem::_Cube, oofem::_Wedge, oofem::FloatArray::at(), oofem::FEMComponent::domain, oofem::FEMComponent::giveDomain(), oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), oofem::giveInternalStateValueType(), oofem::Material::giveIPValue(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::ISVT_SCALAR, oofem::ISVT_TENSOR_S3, oofem::ISVT_TENSOR_S3E, oofem::ISVT_VECTOR, layerRots, M_PI, numberOfLayers, oofem::Vec3(), and oofem::Vec6().

◆ giveLayer()

int oofem::LayeredCrossSection::giveLayer ( GaussPoint * gp) const

◆ giveLayerMaterial()

◆ giveLayerMidZ()

double oofem::LayeredCrossSection::giveLayerMidZ ( int layer) const
inline

◆ giveLayerThickness()

double oofem::LayeredCrossSection::giveLayerThickness ( int layer) const
inline

◆ giveMaterial()

Material * oofem::LayeredCrossSection::giveMaterial ( IntegrationPoint * ip) const
overridevirtual

hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const

Returns the material associated with the GP. Default implementation uses gp->giveMaterial() for backwards compatibility, but it should be overloaded in each specialized cross-section.

Todo
We should keep track in integration point (integration rule) what material from layer is assigned. Otherwise difficulties due to different elements and IP numbering.

Implements oofem::CrossSection.

Definition at line 1330 of file layeredcrosssection.C.

References oofem::_3dDegShell, oofem::_Cube, oofem::_Wedge, oofem::FEMComponent::domain, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::GaussPoint::hasSlaveGaussPoint(), layerMaterials, and numberOfLayers.

Referenced by give3dDegeneratedShellStiffMtrx(), and giveRealStress_3dDegeneratedShell().

◆ giveMembraneRotStiffMtrx()

FloatMatrixF< 4, 4 > oofem::LayeredCrossSection::giveMembraneRotStiffMtrx ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing membrane stiffness matrix with added drilling stiffness.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 903 of file layeredcrosssection.C.

References oofem::assemble(), and giveStiffnessMatrix_PlaneStress().

Referenced by giveGeneralizedStress_MembraneRot().

◆ giveMidSurfaceXiCoordFromBottom()

double oofem::LayeredCrossSection::giveMidSurfaceXiCoordFromBottom ( ) const
inline

Definition at line 212 of file layeredcrosssection.h.

◆ giveMidSurfaceZcoordFromBottom()

double oofem::LayeredCrossSection::giveMidSurfaceZcoordFromBottom ( ) const
inline

Definition at line 209 of file layeredcrosssection.h.

◆ giveNumberOfLayers()

int oofem::LayeredCrossSection::giveNumberOfLayers ( ) const

◆ giveNumIntegrationPointsInLayer()

int oofem::LayeredCrossSection::giveNumIntegrationPointsInLayer ( ) const
inline

Definition at line 206 of file layeredcrosssection.h.

Referenced by setupLayeredIntegrationRule().

◆ giveRealStress_1d()

FloatArrayF< 1 > oofem::LayeredCrossSection::giveRealStress_1d ( const FloatArrayF< 1 > & reducedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 199 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveRealStress_3d()

◆ giveRealStress_3dDegeneratedShell()

◆ giveRealStress_PlaneStrain()

FloatArrayF< 4 > oofem::LayeredCrossSection::giveRealStress_PlaneStrain ( const FloatArrayF< 4 > & reducedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 146 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveRealStress_PlaneStress()

◆ giveRealStress_Warping()

FloatArrayF< 2 > oofem::LayeredCrossSection::giveRealStress_Warping ( const FloatArrayF< 2 > & reducedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 206 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveSlaveGaussPoint()

◆ giveSlaveGPIndex()

int oofem::LayeredCrossSection::giveSlaveGPIndex ( int ilayer,
int igp ) const
protected

Definition at line 1406 of file layeredcrosssection.C.

References layerIntegrationPoints.

Referenced by giveSlaveGaussPoint().

◆ giveStiffnessMatrix_1d()

FloatMatrixF< 1, 1 > oofem::LayeredCrossSection::giveStiffnessMatrix_1d ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 278 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_3d()

FloatMatrixF< 6, 6 > oofem::LayeredCrossSection::giveStiffnessMatrix_3d ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Method for computing the stiffness matrix.

Parameters
answerStiffness matrix.
modeMaterial response mode.
gpIntegration point, which load history is used.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 213 of file layeredcrosssection.C.

References oofem::_Cube, oofem::_Wedge, oofem::FEMComponent::domain, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), layerRots, M_PI, numberOfLayers, OOFEM_ERROR, and oofem::unrotate().

◆ giveStiffnessMatrix_dCde()

void oofem::LayeredCrossSection::giveStiffnessMatrix_dCde ( FloatMatrix & answer,
MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep )
inlineoverridevirtual

Computes the material stiffness matrix dCde of receiver in a given integration point, respecting its history. The algorithm should use temporary or equilibrium history variables stored in integration point status to compute and return required result. Elements should always pass their requests to their cross section model, which performs necessary integration over its volume and invokes necessary material services for corresponding material model defined for given integration point.

Parameters
answerContains result.
modeMaterial response mode.
gpIntegration point.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 267 of file layeredcrosssection.h.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_1d()

FloatMatrixF< 1, 1 > oofem::LayeredCrossSection::giveStiffnessMatrix_dPdF_1d ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 1118 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_3d()

FloatMatrixF< 9, 9 > oofem::LayeredCrossSection::giveStiffnessMatrix_dPdF_3d ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Computes the material stiffness matrix dPdF of receiver in a given integration point, respecting its history. The algorithm should use temporary or equilibrium history variables stored in integration point status to compute and return required result. Elements should always pass their requests to their cross section model, which performs necessary integration over its volume and invokes necessary material services for corresponding material model defined for given integration point.

Parameters
answerContains result.
modeMaterial response mode.
gpIntegration point.
tStepTime step (most models are able to respond only when tStep is current time step).

Implements oofem::StructuralCrossSection.

Definition at line 1047 of file layeredcrosssection.C.

References oofem::_Cube, oofem::_Wedge, oofem::FEMComponent::domain, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), layerRots, M_PI, numberOfLayers, OOFEM_ERROR, and oofem::unrotate().

◆ giveStiffnessMatrix_dPdF_PlaneStrain()

FloatMatrixF< 5, 5 > oofem::LayeredCrossSection::giveStiffnessMatrix_dPdF_PlaneStrain ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 1111 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_PlaneStress()

FloatMatrixF< 4, 4 > oofem::LayeredCrossSection::giveStiffnessMatrix_dPdF_PlaneStress ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 1085 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_PlaneStrain()

FloatMatrixF< 4, 4 > oofem::LayeredCrossSection::giveStiffnessMatrix_PlaneStrain ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 271 of file layeredcrosssection.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_PlaneStress()

FloatMatrixF< 3, 3 > oofem::LayeredCrossSection::giveStiffnessMatrix_PlaneStress ( MatResponseMode mode,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

◆ imposeStrainConstrainsOnGradient()

FloatArray * oofem::LayeredCrossSection::imposeStrainConstrainsOnGradient ( GaussPoint * gp,
FloatArray * gradientStressVector3d )
overridevirtual

Returns modified gradient of strain vector, which is used to compute plastic strain increment. Imposes zeros on places, where zero strain occurs or energetically connected stress is prescribed to be zero.

See also
imposeStressConstrainsOnGradient
Parameters
gpIntegration point.
gradientStressVector3dGeneral 3d stress gradient.

Reimplemented from oofem::StructuralCrossSection.

Definition at line 1166 of file layeredcrosssection.C.

References oofem::FloatArray::at(), oofem::GaussPoint::giveMaterialMode(), oofem::FloatArray::giveSize(), oofem::StructuralCrossSection::imposeStrainConstrainsOnGradient(), and OOFEM_ERROR.

◆ imposeStressConstrainsOnGradient()

FloatArray * oofem::LayeredCrossSection::imposeStressConstrainsOnGradient ( GaussPoint * gp,
FloatArray * gradientStressVector3d )
overridevirtual

Returns modified gradient of stress vector, which is used to bring stresses back to yield surface. Method imposes zeros on places, where zero stress occurs. if energetically connected strain is zero, we do not impose zero there, because stress exist and must be taken into account when computing yield function. In such case a problem is assumed to be full 3d with some explicit strain equal to 0. On the other hand, if some stress is imposed to be zero, we understand such case as subspace of 3d case (like a classical plane stress problem, with no tracing of e_z, sigma_z)

Parameters
gpIntegration point.
gradientStressVector3dGeneral 3d stress gradient.

Reimplemented from oofem::StructuralCrossSection.

Definition at line 1126 of file layeredcrosssection.C.

References oofem::FloatArray::at(), oofem::GaussPoint::giveMaterialMode(), oofem::FloatArray::giveSize(), oofem::StructuralCrossSection::imposeStressConstrainsOnGradient(), and OOFEM_ERROR.

◆ initializeFrom()

void oofem::LayeredCrossSection::initializeFrom ( InputRecord & ir)
overridevirtual

Initializes receiver according to object description stored in input record. This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record. Note that initializeFrom may be called mutiple times.

See also
IR_GIVE_FIELD
IR_GIVE_OPTIONAL_FIELD
Parameters
irInput record to initialize from.
priorityPriority of the input record. This is used to determine the order of initialization

Reimplemented from oofem::CrossSection.

Definition at line 1199 of file layeredcrosssection.C.

References _IFT_LayeredCrossSection_interfacematerials, _IFT_LayeredCrossSection_layermaterials, _IFT_LayeredCrossSection_layerRotations, _IFT_LayeredCrossSection_midsurf, _IFT_LayeredCrossSection_nintegrationpoints, _IFT_LayeredCrossSection_nlayerintegrationpoints, _IFT_LayeredCrossSection_nlayers, _IFT_LayeredCrossSection_shearcoeff_xz, _IFT_LayeredCrossSection_thicks, _IFT_LayeredCrossSection_widths, _IFT_SimpleCrossSection_drillStiffness, _IFT_SimpleCrossSection_drillType, _IFT_SimpleCrossSection_relDrillStiffness, area, beamShearCoeffxz, computeIntegralThick(), oofem::CS_DrillingStiffness, oofem::CS_DrillingType, oofem::CS_RelDrillingStiffness, oofem::CrossSection::initializeFrom(), interfacerMaterials, IR_GIVE_FIELD, IR_GIVE_OPTIONAL_FIELD, layerIntegrationPoints, layerMaterials, layerRots, layerThicks, layerWidths, midSurfaceXiCoordFromBottom, midSurfaceZcoordFromBottom, numberOfIntegrationPoints, numberOfLayers, OOFEM_WARNING, oofem::CrossSection::propertyDictionary, setupLayerMidPlanes(), and totalThick.

◆ isCharacteristicMtrxSymmetric()

bool oofem::LayeredCrossSection::isCharacteristicMtrxSymmetric ( MatResponseMode rMode) const
overridevirtual

Check for symmetry of stiffness matrix. Default implementation returns true. It can be moved to base Cross section class in the future.

Parameters
rModeResponse mode of material.
Returns
True if stiffness matrix of receiver is symmetric.

Implements oofem::StructuralCrossSection.

Definition at line 1646 of file layeredcrosssection.C.

References oofem::FEMComponent::domain, and numberOfLayers.

◆ mapLayerGpCoordsToShellCoords()

void oofem::LayeredCrossSection::mapLayerGpCoordsToShellCoords ( std::vector< std::unique_ptr< IntegrationRule > > & layerIntegrationRulesArray)

◆ packUnknowns()

int oofem::LayeredCrossSection::packUnknowns ( DataStream & buff,
TimeStep * tStep,
GaussPoint * ip )
inlineoverridevirtual

Pack all necessary data of integration point (according to element parallel_mode) into given communication buffer. The corresponding material model service for particular integration point is invoked. The nature of packed data is material model dependent. Typically, for material of "local" response (response depends only on integration point local state) no data are exchanged. For "nonlocal" constitutive models the send/receive of local values which undergo averaging is performed between local and corresponding remote elements.

Parameters
buffCommunication buffer.
tStepSolution step.
ipIntegration point.
Returns
Nonzero if successful.

Implements oofem::CrossSection.

Definition at line 236 of file layeredcrosssection.h.

References OOFEM_ERROR.

◆ printYourself()

void oofem::LayeredCrossSection::printYourself ( )
overridevirtual

Prints receiver state on stdout. Useful for debugging.

Reimplemented from oofem::CrossSection.

Definition at line 1496 of file layeredcrosssection.C.

References layerMaterials, layerThicks, layerWidths, midSurfaceZcoordFromBottom, numberOfIntegrationPoints, and oofem::CrossSection::propertyDictionary.

◆ restoreIPContext()

void oofem::LayeredCrossSection::restoreIPContext ( DataStream & stream,
ContextMode mode,
GaussPoint * gp )
overridevirtual

Reads integration point state to output stream.

Parameters
streamOutput stream.
modeDetermines amount of info required in stream (state, definition, ...).
gpintegration point.
Exceptions
throwsan ContextIOERR exception if error encountered.

Reimplemented from oofem::CrossSection.

Definition at line 1532 of file layeredcrosssection.C.

References oofem::FEMComponent::domain, giveSlaveGaussPoint(), layerIntegrationPoints, layerMaterials, numberOfLayers, oofem::CrossSection::restoreIPContext(), and oofem::Material::restoreIPContext().

◆ saveIPContext()

void oofem::LayeredCrossSection::saveIPContext ( DataStream & stream,
ContextMode mode,
GaussPoint * gp )
overridevirtual

Stores integration point state to output stream.

Parameters
streamOutput stream.
modeDetermines amount of info required in stream (state, definition, ...).
gpintegration point.
Exceptions
throwsan ContextIOERR exception if error encountered.

Reimplemented from oofem::CrossSection.

Definition at line 1515 of file layeredcrosssection.C.

References oofem::FEMComponent::domain, giveSlaveGaussPoint(), layerIntegrationPoints, layerMaterials, numberOfLayers, oofem::CrossSection::saveIPContext(), and oofem::Material::saveIPContext().

◆ setupIntegrationPoints() [1/2]

int oofem::LayeredCrossSection::setupIntegrationPoints ( IntegrationRule & irule,
int npoints,
Element * element )
overridevirtual

Sets up integration rule for the given element. Default behavior is just to call the Gauss integration rule, but for example the layered and fibered crosssections need to do their own thing.

Parameters
iruleIntegration rule to set up.
npointsNumber of integration points.
elementElement which the integration rule belongs to.
Returns
Number of integration points.
Todo
We must send arrays for integration points instead of just a single scalar.

Reimplemented from oofem::CrossSection.

Definition at line 1355 of file layeredcrosssection.C.

References oofem::_Cube, oofem::_Wedge, oofem::cbrt(), oofem::Element::giveIntegrationDomain(), oofem::Element::giveMaterialMode(), numberOfIntegrationPoints, oofem::IntegrationRule::setUpIntegrationPoints(), oofem::IntegrationRule::SetUpPointsOnCubeLayers(), and oofem::IntegrationRule::SetUpPointsOnWedgeLayers().

◆ setupIntegrationPoints() [2/2]

int oofem::LayeredCrossSection::setupIntegrationPoints ( IntegrationRule & irule,
int npointsXY,
int npointsZ,
Element * element )
overridevirtual

Sets up integration rule for the given element. Default behavior is just to call the Gauss integration rule, but for example the layered and fibered crosssections need to do their own thing.

Parameters
iruleIntegration rule to set up.
npointsXYNumber of integration points in xi-eta.
npointsZNumber of integration points in zeta.
elementElement which the integration rule belongs to.
Returns
Number of integration points.

Reimplemented from oofem::CrossSection.

Definition at line 1392 of file layeredcrosssection.C.

References oofem::_3dDegShell, oofem::Element::giveIntegrationDomain(), oofem::Element::giveMaterialMode(), oofem::max(), numberOfIntegrationPoints, OOFEM_ERROR, and oofem::IntegrationRule::SetUpPointsOn3dDegShellLayers().

◆ setupLayeredIntegrationRule()

void oofem::LayeredCrossSection::setupLayeredIntegrationRule ( std::vector< std::unique_ptr< IntegrationRule > > & layerIntegrationRulesArray,
Element * el,
int numInPlanePoints )

◆ setupLayerMidPlanes()

void oofem::LayeredCrossSection::setupLayerMidPlanes ( )

Definition at line 1316 of file layeredcrosssection.C.

References layerMidZ, layerThicks, midSurfaceZcoordFromBottom, and numberOfLayers.

Referenced by initializeFrom().

◆ unpackAndUpdateUnknowns()

int oofem::LayeredCrossSection::unpackAndUpdateUnknowns ( DataStream & buff,
TimeStep * tStep,
GaussPoint * ip )
inlineoverridevirtual

Unpack and updates all necessary data of given integration point (according to element parallel_mode) into given communication buffer.

See also
packUnknowns service.
Parameters
buffCommunication buffer.
tStepSolution step.
ipIntegration point.
Returns
Nonzero if successful.

Implements oofem::CrossSection.

Definition at line 241 of file layeredcrosssection.h.

References OOFEM_ERROR.

Member Data Documentation

◆ area

double oofem::LayeredCrossSection::area = 0.
protected

Definition at line 108 of file layeredcrosssection.h.

Referenced by giveArea(), and initializeFrom().

◆ beamShearCoeffxz

double oofem::LayeredCrossSection::beamShearCoeffxz = 1.0
protected

◆ interfacerMaterials

IntArray oofem::LayeredCrossSection::interfacerMaterials
protected

Interface (cohesive zone) material for each interface.

Definition at line 97 of file layeredcrosssection.h.

Referenced by giveInputRecord(), and initializeFrom().

◆ layerIntegrationPoints

◆ layerMaterials

◆ layerMidZ

FloatArray oofem::LayeredCrossSection::layerMidZ
protected

z-coord of the mid plane for each layer

Definition at line 100 of file layeredcrosssection.h.

Referenced by setupLayerMidPlanes().

◆ layerRots

◆ layerThicks

◆ layerWidths

◆ midSurfaceXiCoordFromBottom

double oofem::LayeredCrossSection::midSurfaceXiCoordFromBottom = 0.
protected

Definition at line 106 of file layeredcrosssection.h.

Referenced by initializeFrom().

◆ midSurfaceZcoordFromBottom

double oofem::LayeredCrossSection::midSurfaceZcoordFromBottom = 0.
protected

◆ numberOfIntegrationPoints

int oofem::LayeredCrossSection::numberOfIntegrationPoints = 1
protected

number of integration points per layer (for 3D elements)

Definition at line 103 of file layeredcrosssection.h.

Referenced by initializeFrom(), printYourself(), setupIntegrationPoints(), and setupIntegrationPoints().

◆ numberOfLayers

◆ totalThick

double oofem::LayeredCrossSection::totalThick = 0.
protected

Definition at line 107 of file layeredcrosssection.h.

Referenced by computeIntegralThick(), give(), give(), give(), and initializeFrom().


The documentation for this class was generated from the following files:

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011