OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
This class implements a layered cross section in a finite element problem. More...
#include <layeredcrosssection.h>
Public Member Functions | |
LayeredCrossSection (int n, Domain *d) | |
virtual | ~LayeredCrossSection () |
virtual IRResultType | initializeFrom (InputRecord *ir) |
Initializes receiver according to object description stored in input record. More... | |
virtual void | giveInputRecord (DynamicInputRecord &input) |
Setups the input record string of receiver. More... | |
virtual void | createMaterialStatus (GaussPoint &iGP) |
virtual int | setupIntegrationPoints (IntegrationRule &irule, int npoints, Element *element) |
Sets up integration rule for the given element. More... | |
virtual int | setupIntegrationPoints (IntegrationRule &irule, int npointsXY, int npointsZ, Element *element) |
Sets up integration rule for the given element. More... | |
virtual void | giveRealStress_3d (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
virtual void | giveRealStress_3dDegeneratedShell (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
virtual void | giveRealStress_PlaneStrain (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
virtual void | giveRealStress_PlaneStress (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
virtual void | giveRealStress_1d (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
virtual void | giveRealStress_Warping (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
virtual void | giveStiffnessMatrix_3d (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Method for computing the stiffness matrix. More... | |
virtual void | giveStiffnessMatrix_PlaneStress (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
virtual void | giveStiffnessMatrix_PlaneStrain (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
virtual void | giveStiffnessMatrix_1d (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
virtual void | giveGeneralizedStress_Beam2d (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
Computes the generalized stress vector for given strain and integration point. More... | |
virtual void | giveGeneralizedStress_Beam3d (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
virtual void | giveGeneralizedStress_Plate (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
virtual void | giveGeneralizedStress_Shell (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
virtual void | giveGeneralizedStress_MembraneRot (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
virtual void | giveGeneralizedStress_PlateSubSoil (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
virtual void | giveCharMaterialStiffnessMatrix (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Computes the stiffness matrix of receiver in given integration point, respecting its history. More... | |
virtual bool | isCharacteristicMtrxSymmetric (MatResponseMode mode) |
Check for symmetry of stiffness matrix. More... | |
virtual void | give2dBeamStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Computes the stiffness matrix for 2d beams. More... | |
virtual void | give3dBeamStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Computes the stiffness matrix for 2d beams. More... | |
virtual void | give2dPlateStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Method for computing 2d plate stiffness matrix. More... | |
virtual void | give3dShellStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Method for computing 3d shell stiffness matrix. More... | |
virtual void | give3dDegeneratedShellStiffMtrx (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
Method for computing 3d shell stiffness matrix on degenerated shell elements. More... | |
virtual void | giveMembraneRotStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Method for computing membrane stiffness matrix with added drilling stiffness. More... | |
virtual void | give2dPlateSubSoilStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Method for computing subsoil stiffness matrix for plates. More... | |
virtual FloatArray * | imposeStressConstrainsOnGradient (GaussPoint *gp, FloatArray *) |
Returns modified gradient of stress vector, which is used to bring stresses back to yield surface. More... | |
virtual FloatArray * | imposeStrainConstrainsOnGradient (GaussPoint *gp, FloatArray *) |
Returns modified gradient of strain vector, which is used to compute plastic strain increment. More... | |
virtual double | give (CrossSectionProperty a, GaussPoint *gp) |
Returns the value of cross section property at given point. More... | |
virtual double | give (CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local) |
Returns the value of cross section property at given point (belonging to given element). More... | |
int | giveNumberOfLayers () |
int | giveLayer (GaussPoint *gp) |
double | computeIntegralThick () |
Returns the total thickness of all layers. More... | |
void | setupLayerMidPlanes () |
int | giveLayerMaterial (int layer) |
virtual Material * | giveMaterial (IntegrationPoint *ip) |
Returns the material associated with the GP. More... | |
int | giveInterfaceMaterialNum (int interface) |
Material * | giveInterfaceMaterial (int interface) |
virtual int | checkConsistency () |
Allows programmer to test some internal data, before computation begins. More... | |
double | giveLayerMidZ (int layer) |
double | giveLayerThickness (int layer) |
int | giveNumIntegrationPointsInLayer () |
double | giveMidSurfaceZcoordFromBottom () |
double | giveMidSurfaceXiCoordFromBottom () |
void | giveInterfaceXiCoords (FloatArray &answer) |
virtual const char * | giveInputRecordName () const |
virtual const char * | giveClassName () const |
virtual void | printYourself () |
Prints receiver state on stdout. Useful for debugging. More... | |
MaterialMode | giveCorrespondingSlaveMaterialMode (MaterialMode mode) |
GaussPoint * | giveSlaveGaussPoint (GaussPoint *gp, int slaveIndex) |
virtual contextIOResultType | saveIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) |
Stores integration point state to output stream. More... | |
virtual contextIOResultType | restoreIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) |
Reads integration point state to output stream. More... | |
void | mapLayerGpCoordsToShellCoords (std::vector< std::unique_ptr< IntegrationRule > > &layerIntegrationRulesArray) |
void | setupLayeredIntegrationRule (std::vector< std::unique_ptr< IntegrationRule > > &layerIntegrationRulesArray, Element *el, int numInPlanePoints) |
virtual int | giveIPValue (FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep) |
Returns the integration point corresponding value in Reduced form. More... | |
virtual double | give (int aProperty, GaussPoint *gp) |
Returns the value of cross section property. More... | |
virtual int | packUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *ip) |
Pack all necessary data of integration point (according to element parallel_mode) into given communication buffer. More... | |
virtual int | unpackAndUpdateUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *ip) |
Unpack and updates all necessary data of given integration point (according to element parallel_mode) into given communication buffer. More... | |
virtual int | estimatePackSize (DataStream &buff, GaussPoint *ip) |
Estimates the necessary pack size to hold all packed data of receiver. More... | |
virtual void | giveFirstPKStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep) |
Computes the First Piola-Kirchoff stress vector for a given deformation gradient and integration point. More... | |
virtual void | giveCauchyStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep) |
Computes the Cauchy stress vector for a given increment of deformation gradient and given integration point. More... | |
virtual void | giveStiffnessMatrix_dPdF (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
Computes the material stiffness matrix dPdF of receiver in a given integration point, respecting its history. More... | |
virtual void | giveStiffnessMatrix_dCde (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
Computes the material stiffness matrix dCde of receiver in a given integration point, respecting its history. More... | |
Public Member Functions inherited from oofem::StructuralCrossSection | |
StructuralCrossSection (int n, Domain *d) | |
Constructor. More... | |
virtual | ~StructuralCrossSection () |
Destructor. More... | |
virtual void | giveEshelbyStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedvF, TimeStep *tStep) |
Computes the Eshelby stress vector. More... | |
virtual void | give3dBeamSubSoilStiffMtrx (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) |
Method for computing subsoil stiffness matrix for 2d beams. More... | |
virtual int | testCrossSectionExtension (CrossSectExtension ext) |
Returns nonzero, if receiver implements required extension. More... | |
virtual Interface * | giveMaterialInterface (InterfaceType t, IntegrationPoint *ip) |
void | giveRealStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) |
Computes the real stress vector for given strain and integration point. More... | |
virtual void | giveGeneralizedStress_3dBeamSubSoil (FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep) |
Public Member Functions inherited from oofem::CrossSection | |
CrossSection (int n, Domain *d) | |
Constructor. More... | |
virtual | ~CrossSection () |
Destructor. More... | |
int | giveSetNumber () const |
virtual bool | hasProperty (CrossSectionProperty a) |
Returns true if the dictionary contains the requested property. More... | |
virtual double | predictRelativeComputationalCost (GaussPoint *ip) |
Returns the weight representing relative computational cost of receiver The reference cross section is integral model in plane stress. More... | |
virtual double | giveRelativeSelfComputationalCost () |
Returns the weight representing relative computational cost of receiver The reference element is integral model in plane stress. More... | |
virtual double | predictRelativeRedistributionCost (GaussPoint *gp) |
Public Member Functions inherited from oofem::FEMComponent | |
FEMComponent (int n, Domain *d) | |
Regular constructor, creates component with given number and belonging to given domain. More... | |
virtual | ~FEMComponent () |
Virtual destructor. More... | |
Domain * | giveDomain () const |
virtual void | setDomain (Domain *d) |
Sets associated Domain. More... | |
int | giveNumber () const |
void | setNumber (int num) |
Sets number of receiver. More... | |
virtual void | updateLocalNumbering (EntityRenumberingFunctor &f) |
Local renumbering support. More... | |
virtual contextIOResultType | saveContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Stores receiver state to output stream. More... | |
virtual contextIOResultType | restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Restores the receiver state previously written in stream. More... | |
virtual void | printOutputAt (FILE *file, TimeStep *tStep) |
Prints output of receiver to stream, for given time step. More... | |
virtual Interface * | giveInterface (InterfaceType t) |
Interface requesting service. More... | |
std::string | errorInfo (const char *func) const |
Returns string for prepending output (used by error reporting macros). More... | |
Protected Member Functions | |
double | giveArea () |
Protected Attributes | |
IntArray | layerMaterials |
Material of each layer. More... | |
IntArray | interfacerMaterials |
Interface (cohesive zone) material for each interface. More... | |
FloatArray | layerThicks |
Thickness for each layer. More... | |
FloatArray | layerWidths |
Width for each layer. More... | |
FloatArray | layerMidZ |
z-coord of the mid plane for each layer More... | |
FloatArray | layerRots |
Rotation of the material in each layer. More... | |
int | numberOfLayers |
int | numberOfIntegrationPoints |
num integration points per layer More... | |
double | midSurfaceZcoordFromBottom |
double | midSurfaceXiCoordFromBottom |
double | totalThick |
double | area |
Protected Attributes inherited from oofem::CrossSection | |
Dictionary | propertyDictionary |
Dictionary for storing cross section parameters (like dimensions). More... | |
int | setNumber |
Protected Attributes inherited from oofem::FEMComponent | |
int | number |
Component number. More... | |
Domain * | domain |
Link to domain object, useful for communicating with other FEM components. More... | |
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:
Definition at line 91 of file layeredcrosssection.h.
|
inline |
Definition at line 108 of file layeredcrosssection.h.
|
inlinevirtual |
Definition at line 115 of file layeredcrosssection.h.
References computeIntegralThick(), createMaterialStatus(), give(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give2dPlateSubSoilStiffMtrx(), give3dBeamStiffMtrx(), give3dDegeneratedShellStiffMtrx(), give3dShellStiffMtrx(), giveCharMaterialStiffnessMatrix(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Beam3d(), giveGeneralizedStress_MembraneRot(), giveGeneralizedStress_Plate(), giveGeneralizedStress_PlateSubSoil(), giveGeneralizedStress_Shell(), giveInputRecord(), giveLayer(), giveMembraneRotStiffMtrx(), giveNumberOfLayers(), giveRealStress_1d(), giveRealStress_3d(), giveRealStress_3dDegeneratedShell(), giveRealStress_PlaneStrain(), giveRealStress_PlaneStress(), giveRealStress_Warping(), giveStiffnessMatrix_1d(), giveStiffnessMatrix_3d(), giveStiffnessMatrix_PlaneStrain(), giveStiffnessMatrix_PlaneStress(), imposeStrainConstrainsOnGradient(), imposeStressConstrainsOnGradient(), initializeFrom(), isCharacteristicMtrxSymmetric(), setupIntegrationPoints(), and setupLayerMidPlanes().
|
virtual |
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.
Implements oofem::StructuralCrossSection.
Definition at line 1415 of file layeredcrosssection.C.
References oofem::FEMComponent::giveClassName(), and OOFEM_WARNING.
Referenced by giveInterfaceMaterial().
double oofem::LayeredCrossSection::computeIntegralThick | ( | ) |
Returns the total thickness of all layers.
Definition at line 1086 of file layeredcrosssection.C.
References layerThicks, oofem::FloatArray::sum(), and totalThick.
Referenced by oofem::Shell7BaseXFEM::computeCohesiveForces(), oofem::Shell7Base::fitRecoveredStress2BC(), give(), oofem::Shell7BaseXFEM::giveFictiousUpdatedCZNodeCoordsForExport(), oofem::Shell7BaseXFEM::giveFictiousUpdatedNodeCoordsForExport(), giveInterfaceXiCoords(), oofem::Shell7BaseXFEM::giveRecoveredTransverseInterfaceStress(), oofem::Shell7Base::giveRecoveredTransverseInterfaceStress(), initializeFrom(), mapLayerGpCoordsToShellCoords(), oofem::Shell7BaseXFEM::mapXi3FromLocalToShell(), oofem::Shell7BaseXFEM::recoverShearStress(), oofem::Shell7Base::recoverShearStress(), oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack(), and ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 934 of file layeredcrosssection.C.
References oofem::Material::CreateStatus(), oofem::FEMComponent::domain, giveLayerMaterial(), oofem::Domain::giveMaterial(), giveSlaveGaussPoint(), numberOfLayers, and oofem::GaussPoint::setMaterialStatus().
Referenced by ~LayeredCrossSection().
|
inlinevirtual |
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.
buff | Communication buffer. |
ip | Integration point. |
Implements oofem::CrossSection.
Definition at line 249 of file layeredcrosssection.h.
References OOFEM_ERROR.
|
virtual |
Returns the value of cross section property at given point.
The default implementation assumes constant properties stored in propertyDictionary.
a | Id of requested property. |
gp | Integration point |
Reimplemented from oofem::CrossSection.
Definition at line 1203 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(), give3dShellStiffMtrx(), giveClassName(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), oofem::Shell7Base::giveGlobalZcoord(), giveRealStress_PlaneStress(), giveSlaveGaussPoint(), oofem::Delamination::initializeFrom(), and ~LayeredCrossSection().
|
virtual |
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.
a | Id of requested property. |
coords | local or global coordinates (determined by local parameter) of point of interest |
elem | reference to underlying element containing given point |
gp | Integration point |
Reimplemented from oofem::CrossSection.
Definition at line 1244 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.
|
virtual |
Returns the value of cross section property.
aProperty | Id of requested property. |
gp | Integration point. |
Reimplemented from oofem::CrossSection.
Definition at line 1500 of file layeredcrosssection.C.
References oofem::Material::give().
|
virtual |
Computes the stiffness matrix for 2d beams.
answer | The requested matrix. |
mode | Material response mode. |
gp | Integration point. |
tStep | Time step. |
Implements oofem::StructuralCrossSection.
Definition at line 694 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::StructuralMaterial::give2dBeamLayerStiffMtrx(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), giveSlaveGaussPoint(), layerRots, layerThicks, layerWidths, numberOfLayers, OOFEM_ERROR, oofem::FloatMatrix::resize(), and oofem::FloatMatrix::zero().
Referenced by giveCharMaterialStiffnessMatrix(), and ~LayeredCrossSection().
|
virtual |
Method for computing 2d plate stiffness matrix.
answer | Stiffness matrix. |
mode | Material response mode. |
gp | Integration point, which load history is used. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 509 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), oofem::StructuralMaterial::givePlateLayerStiffMtrx(), giveSlaveGaussPoint(), layerRots, layerThicks, layerWidths, M_PI, numberOfLayers, oofem::FloatMatrix::resize(), oofem::FloatMatrix::rotatedWith(), and oofem::FloatMatrix::zero().
Referenced by giveCharMaterialStiffnessMatrix(), and ~LayeredCrossSection().
|
virtual |
Method for computing subsoil stiffness matrix for plates.
answer | Stiffness matrix. |
mode | Material response mode. |
gp | Integration point, which load history is used. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 768 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Computes the stiffness matrix for 2d beams.
answer | The requested matrix. |
mode | Material response mode. |
gp | Integration point. |
tStep | Time step. |
Implements oofem::StructuralCrossSection.
Definition at line 755 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by giveCharMaterialStiffnessMatrix(), and ~LayeredCrossSection().
|
virtual |
Method for computing 3d shell stiffness matrix on degenerated shell elements.
answer | Stiffness matrix. |
mode | Material response mode. |
gp | Integration point, which load history is used. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 683 of file layeredcrosssection.C.
References oofem::FloatMatrix::resize(), and oofem::FloatMatrix::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Method for computing 3d shell stiffness matrix.
answer | Stiffness matrix. |
mode | Material response mode. |
gp | Integration point, which load history is used. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 590 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), oofem::StructuralMaterial::givePlateLayerStiffMtrx(), giveSlaveGaussPoint(), layerRots, layerThicks, layerWidths, numberOfLayers, oofem::FloatMatrix::resize(), oofem::FloatMatrix::rotatedWith(), and oofem::FloatMatrix::zero().
Referenced by giveCharMaterialStiffnessMatrix(), and ~LayeredCrossSection().
|
protected |
Definition at line 1270 of file layeredcrosssection.C.
References area, oofem::FloatArray::dotProduct(), layerThicks, and layerWidths.
Referenced by give(), and giveStiffnessMatrix_dCde().
|
inlinevirtual |
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.
answer | Contains the Cauchy stress. |
gp | Integration point. |
reducedFIncrement | Increment of the deformation gradient vector in reduced form. |
tStep | Current time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 258 of file layeredcrosssection.h.
References OOFEM_ERROR.
|
virtual |
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.
answer | Contains result. |
mode | Material response mode. |
gp | Integration point. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 476 of file layeredcrosssection.C.
References oofem::FEMComponent::domain, give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dBeamStiffMtrx(), give3dShellStiffMtrx(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveMaterialMode(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::StructuralMaterial::giveStiffnessMatrix(), oofem::StructuralMaterial::hasMaterialModeCapability(), numberOfLayers, and OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
inlinevirtual |
Implements oofem::FEMComponent.
Definition at line 220 of file layeredcrosssection.h.
References give(), giveCorrespondingSlaveMaterialMode(), giveIPValue(), giveSlaveGaussPoint(), mapLayerGpCoordsToShellCoords(), printYourself(), restoreIPContext(), saveIPContext(), and setupLayeredIntegrationRule().
MaterialMode oofem::LayeredCrossSection::giveCorrespondingSlaveMaterialMode | ( | MaterialMode | mode | ) |
Definition at line 1177 of file layeredcrosssection.C.
References oofem::__MaterialModeToString(), and OOFEM_ERROR.
Referenced by giveClassName(), and giveSlaveGaussPoint().
|
inlinevirtual |
Computes the First Piola-Kirchoff stress vector for a given deformation gradient and 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.
answer | Contains the First Piola-Kirchoff stresses. |
gp | Integration point. |
reducedFIncrement | Increment of the deformation gradient vector in reduced form. |
tStep | Current time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 256 of file layeredcrosssection.h.
References OOFEM_ERROR.
|
virtual |
Computes the generalized stress vector for given strain and integration point.
answer | Contains result. |
gp | Integration point. |
generalizedStrain | Strain vector in reduced generalized form. |
tStep | Current time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 241 of file layeredcrosssection.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::GaussPoint::giveElement(), oofem::FEMComponent::giveInterface(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), oofem::StructuralMaterial::giveRealStressVector_2dBeamLayer(), giveSlaveGaussPoint(), oofem::LayeredCrossSectionInterfaceType, layerMaterials, layerRots, layerThicks, layerWidths, oofem::StructuralMaterialStatus::letTempStrainVectorBe(), oofem::StructuralMaterialStatus::letTempStressVectorBe(), numberOfLayers, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 295 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 464 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 302 of file layeredcrosssection.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::GaussPoint::giveElement(), oofem::FEMComponent::giveInterface(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), oofem::StructuralMaterial::giveRealStressVector_PlateLayer(), giveSlaveGaussPoint(), oofem::LayeredCrossSectionInterfaceType, layerMaterials, layerRots, layerThicks, layerWidths, oofem::StructuralMaterialStatus::letTempStrainVectorBe(), oofem::StructuralMaterialStatus::letTempStressVectorBe(), M_PI, numberOfLayers, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 470 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 380 of file layeredcrosssection.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::GaussPoint::giveElement(), oofem::FEMComponent::giveInterface(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), oofem::StructuralMaterial::giveRealStressVector_PlateLayer(), giveSlaveGaussPoint(), oofem::LayeredCrossSectionInterfaceType, layerMaterials, layerRots, layerThicks, layerWidths, oofem::StructuralMaterialStatus::letTempStrainVectorBe(), oofem::StructuralMaterialStatus::letTempStressVectorBe(), M_PI, numberOfLayers, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Setups the input record string of receiver.
input | Dynamic input record to be filled by receiver. |
Reimplemented from oofem::CrossSection.
Definition at line 920 of file layeredcrosssection.C.
References _IFT_LayeredCrossSection_interfacematerials, _IFT_LayeredCrossSection_layermaterials, _IFT_LayeredCrossSection_layerRotations, _IFT_LayeredCrossSection_midsurf, _IFT_LayeredCrossSection_nintegrationpoints, _IFT_LayeredCrossSection_nlayers, _IFT_LayeredCrossSection_thicks, _IFT_LayeredCrossSection_widths, oofem::CrossSection::giveInputRecord(), interfacerMaterials, layerMaterials, layerRots, layerThicks, layerWidths, midSurfaceZcoordFromBottom, numberOfIntegrationPoints, numberOfLayers, and oofem::DynamicInputRecord::setField().
Referenced by ~LayeredCrossSection().
|
inlinevirtual |
Implements oofem::FEMComponent.
Definition at line 219 of file layeredcrosssection.h.
References _IFT_LayeredCrossSection_Name.
|
inline |
Definition at line 189 of file layeredcrosssection.h.
References oofem::IntArray::at(), checkConsistency(), oofem::FEMComponent::giveDomain(), giveInterfaceMaterialNum(), and oofem::Domain::giveMaterial().
Referenced by oofem::Shell7BaseXFEM::computeCohesiveForces(), oofem::Shell7BaseXFEM::computeCohesiveTangentAt(), oofem::Shell7BaseXFEM::giveFailedInterfaceNumber(), oofem::Shell7BaseXFEM::giveMaxCZDamages(), oofem::Shell7BaseXFEM::giveRecoveredTransverseInterfaceStress(), oofem::Shell7BaseXFEM::recoverShearStress(), and oofem::Shell7BaseXFEM::recoverValuesFromCZIP().
|
inline |
Definition at line 185 of file layeredcrosssection.h.
References oofem::IntArray::at().
Referenced by giveInterfaceMaterial(), and oofem::Shell7BaseXFEM::hasCohesiveZone().
void oofem::LayeredCrossSection::giveInterfaceXiCoords | ( | FloatArray & | answer | ) |
Definition at line 1292 of file layeredcrosssection.C.
References oofem::FloatArray::at(), computeIntegralThick(), giveLayerMidZ(), giveLayerThickness(), giveNumberOfLayers(), and oofem::FloatArray::resize().
Referenced by oofem::Shell7BaseXFEM::giveFailedInterfaceNumber(), and giveMidSurfaceXiCoordFromBottom().
|
virtual |
Returns the integration point corresponding value in Reduced form.
answer | contain corresponding ip value, zero sized if not available |
ip | Integration point. |
type | Determines the type of internal variable. |
tStep | Time step. |
Reimplemented from oofem::CrossSection.
Definition at line 1436 of file layeredcrosssection.C.
References oofem::_Cube, oofem::_Wedge, oofem::FloatArray::at(), oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), oofem::giveInternalStateValueType(), oofem::Material::giveIPValue(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::ISVT_SCALAR, oofem::ISVT_TENSOR_S3, oofem::ISVT_TENSOR_S3E, oofem::ISVT_VECTOR, and M_PI.
Referenced by giveClassName().
int oofem::LayeredCrossSection::giveLayer | ( | GaussPoint * | gp | ) |
Definition at line 1224 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::GaussPoint::giveNaturalCoordinates(), giveNumberOfLayers(), and OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
inline |
Definition at line 179 of file layeredcrosssection.h.
References oofem::IntArray::at(), and giveMaterial().
Referenced by oofem::Shell7Base::computeBulkTangentMatrix(), oofem::Shell7Base::computeConvectiveMassForce(), oofem::Shell7Base::computeMassMatrix(), oofem::Shell7BaseXFEM::computeMassMatrixNum(), oofem::Shell7Base::computeMassMatrixNum(), oofem::Shell7Base::computeSectionalForces(), oofem::Shell7BaseXFEM::computeStiffnessMatrix(), createMaterialStatus(), oofem::Shell7BaseXFEM::discComputeSectionalForces(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellStiffMtrx(), giveCharMaterialStiffnessMatrix(), giveRealStress_3d(), giveRealStress_PlaneStress(), giveStiffnessMatrix_3d(), giveStiffnessMatrix_PlaneStress(), and oofem::Shell7BaseXFEM::OLDcomputeStiffnessMatrix().
|
inline |
Definition at line 200 of file layeredcrosssection.h.
References oofem::FloatArray::at().
Referenced by oofem::Shell7BaseXFEM::giveFictiousUpdatedCZNodeCoordsForExport(), oofem::Shell7BaseXFEM::giveFictiousUpdatedNodeCoordsForExport(), oofem::Shell7Base::giveGlobalZcoordInLayer(), giveInterfaceXiCoords(), mapLayerGpCoordsToShellCoords(), oofem::Shell7BaseXFEM::mapXi3FromLocalToShell(), and oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack().
|
inline |
Definition at line 204 of file layeredcrosssection.h.
References oofem::FloatArray::at().
Referenced by oofem::Tr2Shell7XFEM::computeVolumeAroundLayer(), oofem::Tr2Shell7::computeVolumeAroundLayer(), oofem::Shell7Base::fitRecoveredStress2BC(), oofem::Shell7BaseXFEM::giveFictiousUpdatedCZNodeCoordsForExport(), oofem::Shell7BaseXFEM::giveFictiousUpdatedNodeCoordsForExport(), oofem::Shell7Base::giveGlobalZcoordInLayer(), giveInterfaceXiCoords(), oofem::Shell7Base::giveLayerContributionToSR(), oofem::Shell7BaseXFEM::giveRecoveredTransverseInterfaceStress(), oofem::Shell7Base::giveRecoveredTransverseInterfaceStress(), oofem::Delamination::initializeFrom(), mapLayerGpCoordsToShellCoords(), oofem::Shell7BaseXFEM::mapXi3FromLocalToShell(), oofem::Shell7BaseXFEM::recoverShearStress(), and oofem::Shell7Base::recoverShearStress().
|
virtual |
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.
Reimplemented from oofem::StructuralCrossSection.
Definition at line 960 of file layeredcrosssection.C.
References oofem::_Cube, oofem::_Wedge, oofem::IntArray::at(), oofem::FEMComponent::domain, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), oofem::Domain::giveMaterial(), oofem::GaussPoint::hasSlaveGaussPoint(), and layerMaterials.
Referenced by giveLayerMaterial().
|
virtual |
Method for computing membrane stiffness matrix with added drilling stiffness.
answer | Stiffness matrix. |
mode | Material response mode. |
gp | Integration point, which load history is used. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 762 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
inline |
Definition at line 213 of file layeredcrosssection.h.
References giveInterfaceXiCoords(), and midSurfaceXiCoordFromBottom.
|
inline |
Definition at line 210 of file layeredcrosssection.h.
References midSurfaceZcoordFromBottom.
Referenced by oofem::Shell7BaseXFEM::giveFictiousUpdatedCZNodeCoordsForExport(), oofem::Shell7BaseXFEM::giveFictiousUpdatedNodeCoordsForExport(), oofem::Shell7BaseXFEM::mapXi3FromLocalToShell(), and oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack().
int oofem::LayeredCrossSection::giveNumberOfLayers | ( | ) |
Definition at line 1264 of file layeredcrosssection.C.
References numberOfLayers.
Referenced by oofem::Shell7Base::computeBulkTangentMatrix(), oofem::Shell7BaseXFEM::computeFailureCriteriaQuantities(), oofem::Tr2Shell7XFEM::computeGaussPoints(), oofem::Tr2Shell7::computeGaussPoints(), oofem::Shell7BaseXFEM::computeMassMatrixNum(), oofem::Shell7Base::computeMassMatrixNum(), oofem::Shell7Base::computeSectionalForces(), oofem::Shell7BaseXFEM::computeStiffnessMatrix(), oofem::Shell7BaseXFEM::discComputeSectionalForces(), oofem::Shell7Base::fitRecoveredStress2BC(), oofem::Shell7BaseXFEM::giveAverageTransverseInterfaceStress(), oofem::Shell7BaseXFEM::giveCZExportData(), oofem::Shell7BaseXFEM::giveFailedInterfaceNumber(), giveInterfaceXiCoords(), giveLayer(), oofem::Shell7BaseXFEM::giveMaxCZDamages(), oofem::Shell7BaseXFEM::giveRecoveredTransverseInterfaceStress(), oofem::Shell7Base::giveRecoveredTransverseInterfaceStress(), oofem::Shell7BaseXFEM::giveShellExportData(), oofem::Shell7Base::giveShellExportData(), oofem::Shell7BaseXFEM::hasCohesiveZone(), oofem::Delamination::initializeFrom(), oofem::Shell7BaseXFEM::OLDcomputeStiffnessMatrix(), oofem::Shell7BaseXFEM::recoverShearStress(), oofem::Shell7Base::recoverShearStress(), setupLayeredIntegrationRule(), oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack(), oofem::Shell7BaseXFEM::updateYourself(), and ~LayeredCrossSection().
|
inline |
Definition at line 207 of file layeredcrosssection.h.
References numberOfIntegrationPoints.
Referenced by oofem::Tr2Shell7::computeGaussPoints(), oofem::Shell7Base::fitRecoveredStress2BC(), oofem::Shell7BaseXFEM::giveAverageTransverseInterfaceStress(), oofem::Shell7Base::giveLayerContributionToSR(), oofem::Shell7BaseXFEM::giveRecoveredTransverseInterfaceStress(), oofem::Shell7Base::giveRecoveredTransverseInterfaceStress(), oofem::Shell7BaseXFEM::recoverShearStress(), oofem::Shell7Base::recoverShearStress(), setupLayeredIntegrationRule(), oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack(), oofem::Shell7Base::updateLayerTransvNormalStressSR(), oofem::Shell7Base::updateLayerTransvShearStressesSR(), and oofem::Shell7Base::updateLayerTransvStressesSR().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 158 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 55 of file layeredcrosssection.C.
References oofem::_Cube, oofem::_Wedge, oofem::FloatArray::at(), oofem::FEMComponent::domain, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), layerRots, M_PI, numberOfLayers, and OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 97 of file layeredcrosssection.C.
References oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 107 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 114 of file layeredcrosssection.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::FEMComponent::domain, give(), oofem::GaussPoint::giveElement(), oofem::FEMComponent::giveInterface(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNaturalCoordinate(), giveSlaveGaussPoint(), oofem::LayeredCrossSectionInterfaceType, layerMaterials, layerThicks, oofem::StructuralMaterialStatus::letTempStrainVectorBe(), numberOfLayers, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 165 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
GaussPoint * oofem::LayeredCrossSection::giveSlaveGaussPoint | ( | GaussPoint * | gp, |
int | slaveIndex | ||
) |
Definition at line 1031 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::CS_BottomZCoord, oofem::CS_TopZCoord, oofem::GaussPoint::gaussPoints, give(), giveCorrespondingSlaveMaterialMode(), oofem::GaussPoint::giveIntegrationRule(), oofem::GaussPoint::giveMaterialMode(), oofem::GaussPoint::giveNaturalCoordinates(), oofem::FloatArray::giveSize(), oofem::GaussPoint::giveSlaveGaussPoint(), layerThicks, midSurfaceZcoordFromBottom, numberOfLayers, and OOFEM_ERROR.
Referenced by createMaterialStatus(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellStiffMtrx(), giveClassName(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveRealStress_PlaneStress(), giveStiffnessMatrix_PlaneStress(), restoreIPContext(), and saveIPContext().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 234 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Method for computing the stiffness matrix.
answer | Stiffness matrix. |
mode | Material response mode. |
gp | Integration point, which load history is used. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 172 of file layeredcrosssection.C.
References oofem::_Cube, oofem::_Wedge, oofem::FloatArray::at(), oofem::FEMComponent::domain, oofem::IntegrationRule::giveIntegrationDomain(), oofem::GaussPoint::giveIntegrationRule(), giveLayerMaterial(), oofem::Domain::giveMaterial(), oofem::GaussPoint::giveNumber(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), layerRots, M_PI, numberOfLayers, OOFEM_ERROR, and oofem::FloatMatrix::rotatedWith().
Referenced by ~LayeredCrossSection().
|
inlinevirtual |
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.
answer | Contains result. |
mode | Material response mode. |
gp | Integration point. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 262 of file layeredcrosssection.h.
References giveArea(), and OOFEM_ERROR.
|
inlinevirtual |
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.
answer | Contains result. |
mode | Material response mode. |
gp | Integration point. |
tStep | Time step (most models are able to respond only when tStep is current time step). |
Implements oofem::StructuralCrossSection.
Definition at line 260 of file layeredcrosssection.h.
References OOFEM_ERROR.
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 227 of file layeredcrosssection.C.
References OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
Implements oofem::StructuralCrossSection.
Definition at line 205 of file layeredcrosssection.C.
References oofem::FloatMatrix::add(), oofem::FloatArray::at(), oofem::FEMComponent::domain, giveLayerMaterial(), oofem::Domain::giveMaterial(), giveSlaveGaussPoint(), layerThicks, numberOfLayers, oofem::FloatMatrix::resize(), oofem::FloatMatrix::times(), and oofem::FloatMatrix::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
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.
gp | Integration point. |
gradientStressVector3d | General 3d stress gradient. |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 816 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::GaussPoint::giveMaterialMode(), oofem::FloatArray::giveSize(), oofem::StructuralCrossSection::imposeStrainConstrainsOnGradient(), and OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
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)
gp | Integration point. |
gradientStressVector3d | General 3d stress gradient. |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 776 of file layeredcrosssection.C.
References oofem::FloatArray::at(), oofem::GaussPoint::giveMaterialMode(), oofem::FloatArray::giveSize(), oofem::StructuralCrossSection::imposeStressConstrainsOnGradient(), and OOFEM_ERROR.
Referenced by ~LayeredCrossSection().
|
virtual |
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.
ir | Input record to initialize from. |
Reimplemented from oofem::CrossSection.
Definition at line 849 of file layeredcrosssection.C.
References _IFT_LayeredCrossSection_interfacematerials, _IFT_LayeredCrossSection_layermaterials, _IFT_LayeredCrossSection_layerRotations, _IFT_LayeredCrossSection_midsurf, _IFT_LayeredCrossSection_nintegrationpoints, _IFT_LayeredCrossSection_nlayers, _IFT_LayeredCrossSection_thicks, _IFT_LayeredCrossSection_widths, oofem::FloatArray::add(), oofem::IntArray::add(), oofem::IntArray::at(), oofem::FloatArray::at(), computeIntegralThick(), oofem::IntArray::giveSize(), oofem::FloatArray::giveSize(), oofem::CrossSection::initializeFrom(), interfacerMaterials, IR_GIVE_FIELD, IR_GIVE_OPTIONAL_FIELD, oofem::IRRT_BAD_FORMAT, oofem::IRRT_OK, layerMaterials, layerRots, layerThicks, layerWidths, midSurfaceXiCoordFromBottom, midSurfaceZcoordFromBottom, numberOfIntegrationPoints, numberOfLayers, OOFEM_WARNING, oofem::IntArray::resize(), oofem::FloatArray::resize(), setupLayerMidPlanes(), oofem::FloatArray::zero(), and oofem::IntArray::zero().
Referenced by ~LayeredCrossSection().
|
virtual |
Check for symmetry of stiffness matrix.
Default implementation returns true. It can be moved to base Cross section class in the future.
rMode | Response mode of material. |
Implements oofem::StructuralCrossSection.
Definition at line 1280 of file layeredcrosssection.C.
References oofem::FEMComponent::domain, oofem::Domain::giveMaterial(), and numberOfLayers.
Referenced by ~LayeredCrossSection().
void oofem::LayeredCrossSection::mapLayerGpCoordsToShellCoords | ( | std::vector< std::unique_ptr< IntegrationRule > > & | layerIntegrationRulesArray | ) |
Definition at line 1326 of file layeredcrosssection.C.
References oofem::FloatArray::at(), computeIntegralThick(), giveLayerMidZ(), giveLayerThickness(), midSurfaceZcoordFromBottom, oofem::FEMComponent::number, and numberOfLayers.
Referenced by giveClassName(), setupLayeredIntegrationRule(), and oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack().
|
inlinevirtual |
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.
buff | Communication buffer. |
tStep | Solution step. |
ip | Integration point. |
Implements oofem::CrossSection.
Definition at line 237 of file layeredcrosssection.h.
References OOFEM_ERROR.
|
virtual |
Prints receiver state on stdout. Useful for debugging.
Reimplemented from oofem::CrossSection.
Definition at line 1100 of file layeredcrosssection.C.
References oofem::FloatArray::giveSize(), layerMaterials, layerThicks, layerWidths, midSurfaceZcoordFromBottom, numberOfIntegrationPoints, oofem::Dictionary::printYourself(), oofem::FloatArray::printYourself(), oofem::IntArray::printYourself(), and oofem::CrossSection::propertyDictionary.
Referenced by giveClassName().
|
virtual |
Reads integration point state to output stream.
stream | Output stream. |
mode | Determines amount of info required in stream (state, definition, ...). |
gp | integration point. |
throws | an ContextIOERR exception if error encountered. |
Reimplemented from oofem::CrossSection.
Definition at line 1148 of file layeredcrosssection.C.
References oofem::IntArray::at(), oofem::CIO_OK, oofem::FEMComponent::domain, oofem::Domain::giveMaterial(), giveSlaveGaussPoint(), layerMaterials, numberOfLayers, oofem::Material::restoreIPContext(), oofem::CrossSection::restoreIPContext(), and THROW_CIOERR.
Referenced by giveClassName().
|
virtual |
Stores integration point state to output stream.
stream | Output stream. |
mode | Determines amount of info required in stream (state, definition, ...). |
gp | integration point. |
throws | an ContextIOERR exception if error encountered. |
Reimplemented from oofem::CrossSection.
Definition at line 1119 of file layeredcrosssection.C.
References oofem::IntArray::at(), oofem::CIO_OK, oofem::FEMComponent::domain, oofem::Domain::giveMaterial(), giveSlaveGaussPoint(), layerMaterials, numberOfLayers, oofem::Material::saveIPContext(), oofem::CrossSection::saveIPContext(), and THROW_CIOERR.
Referenced by giveClassName().
|
virtual |
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.
irule | Integration rule to set up. |
npoints | Number of integration points. |
element | Element which the integration rule belongs to. |
Reimplemented from oofem::CrossSection.
Definition at line 981 of file layeredcrosssection.C.
References oofem::_Cube, oofem::_Wedge, oofem::cbrt(), oofem::Element::giveIntegrationDomain(), oofem::Element::giveMaterialMode(), layerThicks, numberOfIntegrationPoints, oofem::IntegrationRule::setUpIntegrationPoints(), oofem::IntegrationRule::SetUpPointsOnCubeLayers(), and oofem::IntegrationRule::SetUpPointsOnWedgeLayers().
Referenced by ~LayeredCrossSection().
|
virtual |
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.
irule | Integration rule to set up. |
npointsXY | Number of integration points in xi-eta. |
npointsZ | Number of integration points in zeta. |
element | Element which the integration rule belongs to. |
Reimplemented from oofem::CrossSection.
Definition at line 1018 of file layeredcrosssection.C.
References oofem::_3dDegShell, oofem::Element::giveIntegrationDomain(), oofem::Element::giveMaterialMode(), layerThicks, OOFEM_ERROR, and oofem::IntegrationRule::SetUpPointsOn3dDegShellLayers().
void oofem::LayeredCrossSection::setupLayeredIntegrationRule | ( | std::vector< std::unique_ptr< IntegrationRule > > & | layerIntegrationRulesArray, |
Element * | el, | ||
int | numInPlanePoints | ||
) |
Definition at line 1308 of file layeredcrosssection.C.
References giveNumberOfLayers(), giveNumIntegrationPointsInLayer(), mapLayerGpCoordsToShellCoords(), and numberOfLayers.
Referenced by oofem::Tr2Shell7::computeGaussPoints(), and giveClassName().
void oofem::LayeredCrossSection::setupLayerMidPlanes | ( | ) |
Definition at line 946 of file layeredcrosssection.C.
References oofem::FloatArray::at(), layerMidZ, layerThicks, midSurfaceZcoordFromBottom, numberOfLayers, and oofem::FloatArray::resize().
Referenced by initializeFrom(), and ~LayeredCrossSection().
|
inlinevirtual |
Unpack and updates all necessary data of given integration point (according to element parallel_mode) into given communication buffer.
buff | Communication buffer. |
tStep | Solution step. |
ip | Integration point. |
Implements oofem::CrossSection.
Definition at line 243 of file layeredcrosssection.h.
References OOFEM_ERROR.
|
protected |
Definition at line 105 of file layeredcrosssection.h.
Referenced by giveArea().
|
protected |
Interface (cohesive zone) material for each interface.
Definition at line 95 of file layeredcrosssection.h.
Referenced by giveInputRecord(), and initializeFrom().
|
protected |
Material of each layer.
Definition at line 94 of file layeredcrosssection.h.
Referenced by giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveInputRecord(), giveMaterial(), giveRealStress_PlaneStress(), initializeFrom(), printYourself(), restoreIPContext(), and saveIPContext().
|
protected |
z-coord of the mid plane for each layer
Definition at line 98 of file layeredcrosssection.h.
Referenced by setupLayerMidPlanes().
|
protected |
Rotation of the material in each layer.
Definition at line 99 of file layeredcrosssection.h.
Referenced by give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellStiffMtrx(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveInputRecord(), giveRealStress_3d(), giveStiffnessMatrix_3d(), and initializeFrom().
|
protected |
Thickness for each layer.
Definition at line 96 of file layeredcrosssection.h.
Referenced by computeIntegralThick(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellStiffMtrx(), giveArea(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveInputRecord(), giveRealStress_PlaneStress(), giveSlaveGaussPoint(), giveStiffnessMatrix_PlaneStress(), initializeFrom(), printYourself(), setupIntegrationPoints(), and setupLayerMidPlanes().
|
protected |
Width for each layer.
Definition at line 97 of file layeredcrosssection.h.
Referenced by give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellStiffMtrx(), giveArea(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveInputRecord(), initializeFrom(), and printYourself().
|
protected |
Definition at line 103 of file layeredcrosssection.h.
Referenced by giveMidSurfaceXiCoordFromBottom(), and initializeFrom().
|
protected |
Definition at line 102 of file layeredcrosssection.h.
Referenced by give(), giveInputRecord(), giveMidSurfaceZcoordFromBottom(), giveSlaveGaussPoint(), initializeFrom(), mapLayerGpCoordsToShellCoords(), printYourself(), and setupLayerMidPlanes().
|
protected |
num integration points per layer
Definition at line 101 of file layeredcrosssection.h.
Referenced by giveInputRecord(), giveNumIntegrationPointsInLayer(), initializeFrom(), printYourself(), and setupIntegrationPoints().
|
protected |
Definition at line 100 of file layeredcrosssection.h.
Referenced by createMaterialStatus(), give(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dShellStiffMtrx(), giveCharMaterialStiffnessMatrix(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveInputRecord(), giveNumberOfLayers(), giveRealStress_3d(), giveRealStress_PlaneStress(), giveSlaveGaussPoint(), giveStiffnessMatrix_3d(), giveStiffnessMatrix_PlaneStress(), initializeFrom(), isCharacteristicMtrxSymmetric(), mapLayerGpCoordsToShellCoords(), restoreIPContext(), saveIPContext(), setupLayeredIntegrationRule(), and setupLayerMidPlanes().
|
protected |
Definition at line 104 of file layeredcrosssection.h.
Referenced by computeIntegralThick(), and give().