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

#include <fiberedcs.h>

Inheritance diagram for oofem::FiberedCrossSection:
Collaboration diagram for oofem::FiberedCrossSection:

Public Member Functions

 FiberedCrossSection (int n, Domain *d)
FloatArrayF< 6 > giveRealStress_3d (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
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< 4, 4 > giveMembraneRotStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 3, 3 > give2dPlateSubSoilStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
bool isCharacteristicMtrxSymmetric (MatResponseMode mode) const override
double give (int aProperty, GaussPoint *gp) const override
FloatArrayimposeStressConstrainsOnGradient (GaussPoint *gp, FloatArray *gradientStressVector3d) override
FloatArrayimposeStrainConstrainsOnGradient (GaussPoint *gp, FloatArray *gradientStrainVector3d) override
int giveIPValue (FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
double give (CrossSectionProperty a, GaussPoint *gp) const override
const char * giveInputRecordName () const override
const char * giveClassName () const override
void initializeFrom (InputRecord &ir) override
void createMaterialStatus (GaussPoint &iGP) override
void printYourself () override
 Prints receiver state on stdout. Useful for debugging.
double computeIntegralThickWidth ()
GaussPointgiveSlaveGaussPoint (GaussPoint *gp, int) const
void saveIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) override
void restoreIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) override
int checkConsistency () 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
MaterialgiveMaterial (IntegrationPoint *ip) const override
 hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
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 > giveRealStress_3dDegeneratedShell (const FloatArrayF< 6 > &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
virtual FloatMatrixF< 6, 6 > give3dDegeneratedShellStiffMtrx (MatResponseMode rMode, 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 give (CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local=true) const
virtual int setupIntegrationPoints (IntegrationRule &irule, int npoints, Element *element)
virtual int setupIntegrationPoints (IntegrationRule &irule, int npointsXY, int npointsZ, Element *element)
virtual double predictRelativeComputationalCost (GaussPoint *ip)
virtual double giveRelativeSelfComputationalCost ()
virtual double predictRelativeRedistributionCost (GaussPoint *gp)
void giveInputRecord (DynamicInputRecord &input) override
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)

Protected Attributes

IntArray fiberMaterials
 Material of each fiber.
FloatArray fiberThicks
 Thickness for each fiber.
FloatArray fiberWidths
 Width for each fiber.
int numberOfFibers = 0
 Number of fibers.
double thick = 0.
 Total thickness.
double width = 0.
 Total width.
double area = 0.
 Total area.
FloatArray fiberYcoords
FloatArray fiberZcoords
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 fibered 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 fiber material point. It's coordinate sections contains y,z-coordinates from mid-section. the slaves are manageg completely ( created, saved their context.,,,) from this class. Master gp only deletes slaves in destructor.

Tasks:

  • Returning standard material stiffness marices (like 3d stress-strain, 2d plane , plate, 3dbeam, 2d beam ..) according to current state determined by parameter StressMode by calling gp->material->GiveMaterialStiffnessMatrix (....) and by possible modifying returned matrix. (for example in layered mode approach each layer is asked for 3dMatrialStiffnes 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 89 of file fiberedcs.h.

Constructor & Destructor Documentation

◆ FiberedCrossSection()

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

Member Function Documentation

◆ checkConsistency()

int oofem::FiberedCrossSection::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 647 of file fiberedcs.C.

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

◆ computeIntegralThickWidth()

double oofem::FiberedCrossSection::computeIntegralThickWidth ( )

◆ createMaterialStatus()

void oofem::FiberedCrossSection::createMaterialStatus ( GaussPoint & iGP)
overridevirtual

◆ estimatePackSize()

int oofem::FiberedCrossSection::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 174 of file fiberedcs.h.

References OOFEM_ERROR.

◆ give() [1/2]

double oofem::FiberedCrossSection::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 618 of file fiberedcs.C.

References area, oofem::CS_Area, oofem::CS_Thickness, oofem::CS_Width, oofem::CrossSection::give(), thick, and width.

◆ give() [2/2]

double oofem::FiberedCrossSection::give ( int aProperty,
GaussPoint * gp ) const
inlineoverridevirtual

Returns the value of cross section property.

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

Reimplemented from oofem::CrossSection.

Definition at line 136 of file fiberedcs.h.

References OOFEM_ERROR.

◆ give2dBeamStiffMtrx()

FloatMatrixF< 3, 3 > oofem::FiberedCrossSection::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.

Implements oofem::StructuralCrossSection.

Definition at line 300 of file fiberedcs.C.

References OOFEM_ERROR.

Referenced by giveCharMaterialStiffnessMatrix().

◆ give2dPlateStiffMtrx()

FloatMatrixF< 5, 5 > oofem::FiberedCrossSection::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).

Implements oofem::StructuralCrossSection.

Definition at line 355 of file fiberedcs.C.

References OOFEM_ERROR.

Referenced by giveCharMaterialStiffnessMatrix().

◆ give2dPlateSubSoilStiffMtrx()

FloatMatrixF< 3, 3 > oofem::FiberedCrossSection::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 380 of file fiberedcs.C.

References OOFEM_ERROR.

◆ give3dBeamStiffMtrx()

FloatMatrixF< 6, 6 > oofem::FiberedCrossSection::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 307 of file fiberedcs.C.

References oofem::FloatMatrixF< N, M >::at(), oofem::FEMComponent::domain, fiberMaterials, fiberThicks, fiberWidths, fiberYcoords, fiberZcoords, oofem::StructuralMaterial::giveFiberStiffMtrx(), and giveSlaveGaussPoint().

Referenced by giveCharMaterialStiffnessMatrix().

◆ give3dShellRotStiffMtrx()

FloatMatrixF< 9, 9 > oofem::FiberedCrossSection::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 368 of file fiberedcs.C.

References OOFEM_ERROR.

◆ give3dShellStiffMtrx()

FloatMatrixF< 8, 8 > oofem::FiberedCrossSection::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).

Implements oofem::StructuralCrossSection.

Definition at line 362 of file fiberedcs.C.

References OOFEM_ERROR.

Referenced by giveCharMaterialStiffnessMatrix().

◆ giveCauchyStresses()

void oofem::FiberedCrossSection::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 195 of file fiberedcs.h.

References OOFEM_ERROR.

◆ giveCharMaterialStiffnessMatrix()

void oofem::FiberedCrossSection::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 279 of file fiberedcs.C.

References give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dBeamStiffMtrx(), give3dShellStiffMtrx(), oofem::GaussPoint::giveMaterialMode(), and OOFEM_ERROR.

◆ giveCharMaterialStiffnessMatrix_dPdF()

void oofem::FiberedCrossSection::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 147 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveClassName()

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

Implements oofem::FEMComponent.

Definition at line 149 of file fiberedcs.h.

◆ giveCorrespondingSlaveMaterialMode()

MaterialMode oofem::FiberedCrossSection::giveCorrespondingSlaveMaterialMode ( MaterialMode masterMode)
static

Definition at line 607 of file fiberedcs.C.

Referenced by giveSlaveGaussPoint().

◆ giveFirstPKStress_1d()

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

Implements oofem::StructuralCrossSection.

Definition at line 108 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveFirstPKStress_3d()

FloatArrayF< 9 > oofem::FiberedCrossSection::giveFirstPKStress_3d ( const FloatArrayF< 9 > & reducedvF,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 87 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveFirstPKStress_PlaneStrain()

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

Implements oofem::StructuralCrossSection.

Definition at line 94 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveFirstPKStress_PlaneStress()

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

Implements oofem::StructuralCrossSection.

Definition at line 101 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_Beam2d()

FloatArrayF< 3 > oofem::FiberedCrossSection::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).

Implements oofem::StructuralCrossSection.

Definition at line 186 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_Beam3d()

◆ giveGeneralizedStress_MembraneRot()

FloatArrayF< 4 > oofem::FiberedCrossSection::giveGeneralizedStress_MembraneRot ( const FloatArrayF< 4 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 267 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_Plate()

FloatArrayF< 5 > oofem::FiberedCrossSection::giveGeneralizedStress_Plate ( const FloatArrayF< 5 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 247 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_PlateSubSoil()

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

Implements oofem::StructuralCrossSection.

Definition at line 273 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_Shell()

FloatArrayF< 8 > oofem::FiberedCrossSection::giveGeneralizedStress_Shell ( const FloatArrayF< 8 > & generalizedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 254 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveGeneralizedStress_ShellRot()

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

Implements oofem::StructuralCrossSection.

Definition at line 260 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveInputRecordName()

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

Implements oofem::FEMComponent.

Definition at line 148 of file fiberedcs.h.

References _IFT_FiberedCrossSection_Name.

◆ giveIPValue()

int oofem::FiberedCrossSection::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
For now, create material status according to the first fiber material
Todo
so far this only works for elements where each layer has its own integration rule

Reimplemented from oofem::CrossSection.

Definition at line 458 of file fiberedcs.C.

References fiberMaterials, oofem::FEMComponent::giveDomain(), oofem::GaussPoint::giveIntegrationRule(), oofem::Material::giveIPValue(), oofem::Domain::giveMaterial(), oofem::IntegrationRule::giveNumber(), oofem::Material::giveStatus(), oofem::StructuralMaterialStatus::giveStrainVector(), and oofem::StructuralMaterialStatus::giveStressVector().

◆ giveMaterial()

Material * oofem::FiberedCrossSection::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 662 of file fiberedcs.C.

References oofem::_Cube, oofem::_Wedge, oofem::FEMComponent::domain, fiberMaterials, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), and oofem::GaussPoint::hasSlaveGaussPoint().

◆ giveMembraneRotStiffMtrx()

FloatMatrixF< 4, 4 > oofem::FiberedCrossSection::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 374 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveRealStress_1d()

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

Implements oofem::StructuralCrossSection.

Definition at line 71 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveRealStress_3d()

FloatArrayF< 6 > oofem::FiberedCrossSection::giveRealStress_3d ( const FloatArrayF< 6 > & reducedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 50 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveRealStress_PlaneStrain()

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

Implements oofem::StructuralCrossSection.

Definition at line 57 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveRealStress_PlaneStress()

FloatArrayF< 3 > oofem::FiberedCrossSection::giveRealStress_PlaneStress ( const FloatArrayF< 3 > & reducedStrain,
GaussPoint * gp,
TimeStep * tStep ) const
overridevirtual

Implements oofem::StructuralCrossSection.

Definition at line 64 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveRealStress_Warping()

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

Implements oofem::StructuralCrossSection.

Definition at line 78 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveSlaveGaussPoint()

GaussPoint * oofem::FiberedCrossSection::giveSlaveGaussPoint ( GaussPoint * gp,
int i ) const

◆ giveStiffnessMatrix_1d()

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

Implements oofem::StructuralCrossSection.

Definition at line 138 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_3d()

FloatMatrixF< 6, 6 > oofem::FiberedCrossSection::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 117 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dCde()

void oofem::FiberedCrossSection::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 197 of file fiberedcs.h.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_1d()

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

Implements oofem::StructuralCrossSection.

Definition at line 178 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_3d()

FloatMatrixF< 9, 9 > oofem::FiberedCrossSection::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 157 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_PlaneStrain()

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

Implements oofem::StructuralCrossSection.

Definition at line 171 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_dPdF_PlaneStress()

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

Implements oofem::StructuralCrossSection.

Definition at line 164 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_PlaneStrain()

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

Implements oofem::StructuralCrossSection.

Definition at line 131 of file fiberedcs.C.

References OOFEM_ERROR.

◆ giveStiffnessMatrix_PlaneStress()

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

Implements oofem::StructuralCrossSection.

Definition at line 124 of file fiberedcs.C.

References OOFEM_ERROR.

◆ imposeStrainConstrainsOnGradient()

FloatArray * oofem::FiberedCrossSection::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 426 of file fiberedcs.C.

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

◆ imposeStressConstrainsOnGradient()

FloatArray * oofem::FiberedCrossSection::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 388 of file fiberedcs.C.

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

◆ initializeFrom()

void oofem::FiberedCrossSection::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 478 of file fiberedcs.C.

References _IFT_FiberedCrossSection_fibermaterials, _IFT_FiberedCrossSection_fiberycentrecoords, _IFT_FiberedCrossSection_fiberzcentrecoords, _IFT_FiberedCrossSection_thick, _IFT_FiberedCrossSection_thicks, _IFT_FiberedCrossSection_width, _IFT_FiberedCrossSection_widths, area, fiberMaterials, fiberThicks, fiberWidths, fiberYcoords, fiberZcoords, oofem::CrossSection::initializeFrom(), IR_GIVE_FIELD, thick, and width.

◆ isCharacteristicMtrxSymmetric()

bool oofem::FiberedCrossSection::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.
Todo
As far as I can see, it only uses diagonal components for the 3dbeam, but there is no way to check here.

Implements oofem::StructuralCrossSection.

Definition at line 633 of file fiberedcs.C.

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

◆ packUnknowns()

int oofem::FiberedCrossSection::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 164 of file fiberedcs.h.

References OOFEM_ERROR.

◆ printYourself()

void oofem::FiberedCrossSection::printYourself ( )
overridevirtual

Prints receiver state on stdout. Useful for debugging.

Reimplemented from oofem::CrossSection.

Definition at line 559 of file fiberedcs.C.

References fiberMaterials, fiberThicks, fiberWidths, fiberYcoords, fiberZcoords, and oofem::CrossSection::propertyDictionary.

◆ restoreIPContext()

void oofem::FiberedCrossSection::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 593 of file fiberedcs.C.

References oofem::FEMComponent::domain, fiberMaterials, giveSlaveGaussPoint(), oofem::CrossSection::restoreIPContext(), and oofem::Material::restoreIPContext().

◆ saveIPContext()

void oofem::FiberedCrossSection::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 578 of file fiberedcs.C.

References oofem::FEMComponent::domain, fiberMaterials, giveSlaveGaussPoint(), oofem::CrossSection::saveIPContext(), and oofem::Material::saveIPContext().

◆ unpackAndUpdateUnknowns()

int oofem::FiberedCrossSection::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 169 of file fiberedcs.h.

References OOFEM_ERROR.

Member Data Documentation

◆ area

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

Total area.

Definition at line 98 of file fiberedcs.h.

Referenced by give(), and initializeFrom().

◆ fiberMaterials

◆ fiberThicks

FloatArray oofem::FiberedCrossSection::fiberThicks
protected

Thickness for each fiber.

Definition at line 93 of file fiberedcs.h.

Referenced by give3dBeamStiffMtrx(), giveGeneralizedStress_Beam3d(), initializeFrom(), and printYourself().

◆ fiberWidths

FloatArray oofem::FiberedCrossSection::fiberWidths
protected

Width for each fiber.

Definition at line 94 of file fiberedcs.h.

Referenced by give3dBeamStiffMtrx(), giveGeneralizedStress_Beam3d(), initializeFrom(), and printYourself().

◆ fiberYcoords

FloatArray oofem::FiberedCrossSection::fiberYcoords
protected

◆ fiberZcoords

FloatArray oofem::FiberedCrossSection::fiberZcoords
protected

◆ numberOfFibers

int oofem::FiberedCrossSection::numberOfFibers = 0
protected

Number of fibers.

Definition at line 95 of file fiberedcs.h.

◆ thick

double oofem::FiberedCrossSection::thick = 0.
protected

Total thickness.

Definition at line 96 of file fiberedcs.h.

Referenced by give(), and initializeFrom().

◆ width

double oofem::FiberedCrossSection::width = 0.
protected

Total width.

Definition at line 97 of file fiberedcs.h.

Referenced by 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