|
OOFEM 3.0
|
#include <simplecrosssection.h>
Public Member Functions | |
| SimpleCrossSection (int n, Domain *d) | |
| FloatArrayF< 6 > | giveRealStress_3d (const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 6 > | giveRealStress_3dDegeneratedShell (const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 4 > | giveRealStress_PlaneStrain (const FloatArrayF< 4 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 3 > | giveRealStress_PlaneStress (const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 1 > | giveRealStress_1d (const FloatArrayF< 1 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 2 > | giveRealStress_Warping (const FloatArrayF< 2 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 6, 6 > | giveStiffnessMatrix_3d (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 3, 3 > | giveStiffnessMatrix_PlaneStress (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 4, 4 > | giveStiffnessMatrix_PlaneStrain (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 1, 1 > | giveStiffnessMatrix_1d (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 3 > | giveGeneralizedStress_Beam2d (const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 6 > | giveGeneralizedStress_Beam3d (const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 5 > | giveGeneralizedStress_Plate (const FloatArrayF< 5 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 8 > | giveGeneralizedStress_Shell (const FloatArrayF< 8 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 9 > | giveGeneralizedStress_ShellRot (const FloatArrayF< 9 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 4 > | giveGeneralizedStress_MembraneRot (const FloatArrayF< 4 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| FloatArrayF< 3 > | giveGeneralizedStress_PlateSubSoil (const FloatArrayF< 3 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const override |
| void | giveCharMaterialStiffnessMatrix (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override |
| bool | isCharacteristicMtrxSymmetric (MatResponseMode mode) const override |
| FloatMatrixF< 6, 6 > | give3dDegeneratedShellStiffMtrx (MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 3, 3 > | give2dBeamStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 6, 6 > | give3dBeamStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 5, 5 > | give2dPlateStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 8, 8 > | give3dShellStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 9, 9 > | give3dShellRotStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 4, 4 > | giveMembraneRotStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 3, 3 > | give2dPlateSubSoilStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override |
| virtual FloatArrayF< 9 > | giveFirstPKStress_3d (const FloatArrayF< 9 > &reducedF, GaussPoint *gp, TimeStep *tStep) const override |
| virtual FloatArrayF< 5 > | giveFirstPKStress_PlaneStrain (const FloatArrayF< 5 > &reducedF, GaussPoint *gp, TimeStep *tStep) const override |
| virtual FloatArrayF< 4 > | giveFirstPKStress_PlaneStress (const FloatArrayF< 4 > &reducedF, GaussPoint *gp, TimeStep *tStep) const override |
| virtual FloatArrayF< 1 > | giveFirstPKStress_1d (const FloatArrayF< 1 > &reducedF, 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 rMode, 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 rMode, GaussPoint *gp, TimeStep *tStep) const override |
| FloatMatrixF< 1, 1 > | giveStiffnessMatrix_dPdF_1d (MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override |
| void | initializeFrom (InputRecord &ir) override |
| void | giveInputRecord (DynamicInputRecord &input) override |
| void | createMaterialStatus (GaussPoint &iGP) override |
| const char * | giveClassName () const override |
| const char * | giveInputRecordName () const override |
| double | give (int aProperty, GaussPoint *gp) const override |
| double | give (CrossSectionProperty a, GaussPoint *gp) const override |
| double | give (CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local) const override |
| int | giveIPValue (FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep) override |
| Material * | giveMaterial (IntegrationPoint *ip) const override |
| hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const | |
| int | giveMaterialNumber () const |
| void | setMaterialNumber (int matNum) |
| int | checkConsistency () override |
| Interface * | giveMaterialInterface (InterfaceType t, IntegrationPoint *ip) override |
| void | giveCauchyStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep) override |
| void | giveEshelbyStresses (FloatArray &answer, GaussPoint *gp, const FloatArray &reducedvF, TimeStep *tStep) override |
| void | giveStiffnessMatrix_dCde (FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override |
| void | giveTemperatureVector (FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const |
| int | packUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *gp) override |
| int | unpackAndUpdateUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *gp) override |
| int | estimatePackSize (DataStream &buff, GaussPoint *gp) override |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
| Public Member Functions inherited from oofem::StructuralCrossSection | |
| StructuralCrossSection (int n, Domain *d) | |
| FloatArray | giveRealStresses (const FloatArray &reducedStrain, GaussPoint *gp, TimeStep *tStep) const |
| virtual FloatArrayF< 6 > | giveGeneralizedStress_3dBeamSubSoil (const FloatArrayF< 6 > &generalizedStrain, GaussPoint *gp, TimeStep *tStep) const |
| virtual FloatArray | giveFirstPKStresses (const FloatArray &reducedF, GaussPoint *gp, TimeStep *tStep) const |
| virtual FloatMatrixF< 6, 6 > | give3dBeamSubSoilStiffMtrx (MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const |
| virtual FloatArray * | imposeStressConstrainsOnGradient (GaussPoint *gp, FloatArray *gradientStressVector3d) |
| virtual FloatArray * | imposeStrainConstrainsOnGradient (GaussPoint *gp, FloatArray *gradientStressVector3d) |
| int | testCrossSectionExtension (CrossSectExtension ext) override |
| Material * | giveMaterial (IntegrationPoint *ip) const override |
| Public Member Functions inherited from oofem::CrossSection | |
| CrossSection (int n, Domain *d) | |
| virtual | ~CrossSection () |
| Destructor. | |
| int | giveSetNumber () const |
| virtual bool | hasProperty (CrossSectionProperty a) |
| void | printYourself () override |
| Prints receiver state on stdout. Useful for debugging. | |
| 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) |
| virtual void | saveIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) |
| virtual void | restoreIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) |
| Public Member Functions inherited from oofem::FEMComponent | |
| FEMComponent (int n, Domain *d) | |
| virtual | ~FEMComponent ()=default |
| Virtual destructor. | |
| Domain * | giveDomain () 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 Interface * | giveInterface (InterfaceType t) |
| std::string | errorInfo (const char *func) const |
| Returns string for prepending output (used by error reporting macros). | |
Protected Attributes | |
| int | materialNumber = 0 |
| Material number. | |
| int | czMaterialNumber = 0 |
| Cohesive zone material number. | |
| Protected Attributes inherited from oofem::CrossSection | |
| Dictionary | propertyDictionary |
| int | setNumber |
| Protected Attributes inherited from oofem::FEMComponent | |
| int | number |
| Component number. | |
| Domain * | domain |
| Link to domain object, useful for communicating with other FEM components. | |
Class implementing "simple" cross section model in finite element problem. A cross section is an attribute of a domain. It is usually also attribute of many elements.
The simple cross section implementation does not perform any integration over cross-section volume, it represents a cross section model, where the whole cross section model is represented by single integration point. and therefore all requests for characteristic contributions (stiffness) and for real stress computations are simply passed to parent StructuralCrossSection class, which invokes corresponding material mode services. Please note, that it is assumed that material model will support these material modes and provide corresponding services for characteristic components and stress evaluation. For description, how to incorporate more elaborate models of cross section, please read base CrossSection documentation.
The overloaded methods giveFullCharacteristicVector and giveFullCharacteristicVector add some additional support for integrated cross section models - _3dShell, _3dBeam, _2dPlate and _2dBeam.
This class also reads into its property dictionary necessary geometric cross section characteristics, which are requested by particular material models. These parameters can be requested using get service and include those defined by CrossSectionProperty.
Definition at line 86 of file simplecrosssection.h.
|
inline |
Constructor.
| n | Cross section number. |
| d | Associated domain. |
Definition at line 98 of file simplecrosssection.h.
References oofem::StructuralCrossSection::StructuralCrossSection().
Referenced by oofem::VariableCrossSection::VariableCrossSection(), and oofem::WarpingCrossSection::WarpingCrossSection().
|
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.
Implements oofem::StructuralCrossSection.
Definition at line 701 of file simplecrosssection.C.
References oofem::FEMComponent::giveClassName(), oofem::FEMComponent::giveDomain(), oofem::Domain::giveMaterial(), materialNumber, and OOFEM_WARNING.
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 651 of file simplecrosssection.C.
References oofem::Material::CreateStatus(), oofem::FEMComponent::domain, materialNumber, and oofem::GaussPoint::setMaterialStatus().
|
overridevirtual |
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 923 of file simplecrosssection.C.
References oofem::Material::estimatePackSize(), and giveMaterial().
|
inlineoverridevirtual |
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.
Reimplemented in oofem::VariableCrossSection.
Definition at line 170 of file simplecrosssection.h.
References oofem::CrossSection::give().
|
inlineoverridevirtual |
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.
Reimplemented in oofem::VariableCrossSection.
Definition at line 169 of file simplecrosssection.h.
References oofem::CrossSection::give().
|
overridevirtual |
Returns the value of cross section property.
| aProperty | Id of requested property. |
| gp | Integration point. |
Reimplemented from oofem::CrossSection.
Definition at line 681 of file simplecrosssection.C.
References oofem::Material::give(), and giveMaterial().
Referenced by oofem::Quasicontinuum::computeStiffnessTensorOf1Link(), oofem::Quasicontinuum::createGlobalStiffnesMatrix(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dBeamStiffMtrx(), give3dShellRotStiffMtrx(), give3dShellStiffMtrx(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Beam3d(), giveGeneralizedStress_Plate(), giveGeneralizedStress_Shell(), giveGeneralizedStress_ShellRot(), and giveMembraneRotStiffMtrx().
|
overridevirtual |
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 355 of file simplecrosssection.C.
References oofem::FloatMatrixF< N, M >::at(), oofem::CS_Area, oofem::CS_InertiaMomentY, oofem::CS_ShearAreaZ, give(), oofem::StructuralMaterial::give1dStressStiffMtrx(), and giveMaterial().
Referenced by giveCharMaterialStiffnessMatrix(), and giveGeneralizedStress_Beam2d().
|
overridevirtual |
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 405 of file simplecrosssection.C.
References oofem::FloatMatrixF< N, M >::at(), oofem::CS_Thickness, give(), giveMaterial(), and oofem::StructuralMaterial::givePlaneStressStiffMtrx().
Referenced by giveCharMaterialStiffnessMatrix(), and giveGeneralizedStress_Plate().
|
overridevirtual |
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 499 of file simplecrosssection.C.
References oofem::StructuralMaterial::give2dPlateSubSoilStiffMtrx(), and giveMaterial().
|
overridevirtual |
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 373 of file simplecrosssection.C.
References oofem::FloatMatrixF< N, M >::at(), oofem::CS_Area, oofem::CS_InertiaMomentY, oofem::CS_InertiaMomentZ, oofem::CS_ShearAreaY, oofem::CS_ShearAreaZ, oofem::CS_TorsionConstantX, E, give(), oofem::StructuralMaterial::give1dStressStiffMtrx(), and giveMaterial().
Referenced by giveCharMaterialStiffnessMatrix(), and giveGeneralizedStress_Beam3d().
|
overridevirtual |
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 470 of file simplecrosssection.C.
References oofem::FloatMatrixF< N, M >::at(), oofem::StructuralMaterial::give3dMaterialStiffnessMatrix(), and giveMaterial().
Referenced by giveCharMaterialStiffnessMatrix().
|
overridevirtual |
Method for computing 3d shell (with normal rotation) 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 457 of file simplecrosssection.C.
References oofem::FloatMatrix::assemble(), oofem::FloatMatrix::at(), oofem::CS_DrillingStiffness, give(), give3dShellStiffMtrx(), oofem::FloatMatrix::resize(), and oofem::FloatMatrix::zero().
|
overridevirtual |
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 429 of file simplecrosssection.C.
References oofem::FloatMatrixF< N, M >::at(), oofem::CS_Thickness, give(), and giveMaterial().
Referenced by give3dShellRotStiffMtrx(), giveCharMaterialStiffnessMatrix(), and giveGeneralizedStress_Shell().
|
overridevirtual |
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 730 of file simplecrosssection.C.
References oofem::StructuralMaterial::giveCauchyStressVector_1d(), oofem::StructuralMaterial::giveCauchyStressVector_3d(), oofem::StructuralMaterial::giveCauchyStressVector_PlaneStrain(), oofem::StructuralMaterial::giveCauchyStressVector_PlaneStress(), giveMaterial(), and oofem::GaussPoint::giveMaterialMode().
|
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.
| 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 323 of file simplecrosssection.C.
References give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give3dBeamStiffMtrx(), give3dDegeneratedShellStiffMtrx(), give3dShellStiffMtrx(), giveMaterial(), and oofem::GaussPoint::giveMaterialMode().
|
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.
| 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 804 of file simplecrosssection.C.
References giveMaterial(), oofem::GaussPoint::giveMaterialMode(), and OOFEM_ERROR.
|
inlineoverridevirtual |
Implements oofem::FEMComponent.
Reimplemented in oofem::VariableCrossSection, and oofem::WarpingCrossSection.
Definition at line 165 of file simplecrosssection.h.
|
overridevirtual |
Computes the Eshelby stress vector. Does not update history variables, this is a postprocesing computation.
| answer | Contains the Eshelby stress. |
| gp | Integration point. |
| tStep | Current time step (most models are able to respond only when tStep is current time step). |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 751 of file simplecrosssection.C.
References oofem::StructuralMaterial::giveEshelbyStressVector_PlaneStrain(), giveMaterial(), and oofem::GaussPoint::giveMaterialMode().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 795 of file simplecrosssection.C.
References oofem::StructuralMaterial::giveFirstPKStressVector_1d(), and giveMaterial().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 771 of file simplecrosssection.C.
References oofem::StructuralMaterial::giveFirstPKStressVector_3d(), and giveMaterial().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 779 of file simplecrosssection.C.
References oofem::StructuralMaterial::giveFirstPKStressVector_PlaneStrain(), and giveMaterial().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 787 of file simplecrosssection.C.
References oofem::StructuralMaterial::giveFirstPKStressVector_PlaneStress(), and giveMaterial().
|
overridevirtual |
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). |
Note: (by bp): This assumes that the behaviour is elastic there exist a nuumber of nonlinear integral material models for beams defined directly in terms of integral forces and moments and corresponding deformations and curvatures. This would require to implement support at material model level. Mikael: That would not be a continuum material model, but it would highly depend on the cross-section shape, thus, it should be a special cross-section model instead. This cross-section assumes you can split the response into inertia moments and pure material response. This is only possible for a constant, elastic response (i.e. elastic). Therefore, this cross-section may only be allowed to give the elastic response.
Implements oofem::StructuralCrossSection.
Definition at line 136 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::CS_Thickness, oofem::dot(), give(), give2dBeamStiffMtrx(), giveMaterial(), oofem::FloatArray::giveSize(), giveTemperatureVector(), and oofem::StructuralMaterialStatus::letTempStrainVectorBe().
|
overridevirtual |
Note: (by bp): This assumes that the behaviour is elastic there exist a number of nonlinear integral material models for beams defined directly in terms of integral forces and moments and corresponding deformations and curvatures. This would require to implement support at material model level. Mikael: See earlier response to comment
Implements oofem::StructuralCrossSection.
Definition at line 169 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::CS_Thickness, oofem::CS_Width, oofem::dot(), give(), give3dBeamStiffMtrx(), giveMaterial(), oofem::FloatArray::giveSize(), giveTemperatureVector(), and oofem::StructuralMaterialStatus::letTempStrainVectorBe().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 300 of file simplecrosssection.C.
References oofem::dot(), giveMaterial(), giveMembraneRotStiffMtrx(), oofem::Material::giveStatus(), and oofem::StructuralMaterialStatus::letTempStrainVectorBe().
|
overridevirtual |
Note: (by bp): This assumes that the behaviour is elastic there exist a number of nonlinear integral material models for beams/plates/shells defined directly in terms of integral forces and moments and corresponding deformations and curvatures. This would require to implement support at material model level. Mikael: See earlier response to comment
Implements oofem::StructuralCrossSection.
Definition at line 204 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::CS_Thickness, oofem::dot(), give(), give2dPlateStiffMtrx(), giveMaterial(), oofem::FloatArray::giveSize(), giveTemperatureVector(), and oofem::StructuralMaterialStatus::letTempStrainVectorBe().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 315 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::giveRealStressVector_2dPlateSubSoil().
|
overridevirtual |
Note: (by bp): This assumes that the behaviour is elastic there exist a nuumber of nonlinear integral material models for beams/plates/shells defined directly in terms of integral forces and moments and corresponding deformations and curvatures. This would require to implement support at material model level. Mikael: See earlier response to comment
Implements oofem::StructuralCrossSection.
Definition at line 236 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::CS_Thickness, oofem::dot(), give(), give3dShellStiffMtrx(), giveMaterial(), oofem::FloatArray::giveSize(), giveTemperatureVector(), and oofem::StructuralMaterialStatus::letTempStrainVectorBe().
Referenced by giveGeneralizedStress_ShellRot().
|
overridevirtual |
Note: (by bp): This assumes that the behaviour is elastic there exist a nuumber of nonlinear integral material models for beams/plates/shells defined directly in terms of integral forces and moments and corresponding deformations and curvatures. This would require to implement support at material model level. Mikael: See earlier response to comment
Implements oofem::StructuralCrossSection.
Definition at line 270 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::FloatArrayF< N >::at(), oofem::CS_DrillingStiffness, give(), giveGeneralizedStress_Shell(), giveMaterial(), and oofem::StructuralMaterialStatus::letTempStrainVectorBe().
|
overridevirtual |
Setups the input record string of receiver.
| input | Dynamic input record to be filled by receiver. |
Reimplemented from oofem::CrossSection.
Reimplemented in oofem::VariableCrossSection.
Definition at line 595 of file simplecrosssection.C.
References _IFT_SimpleCrossSection_area, _IFT_SimpleCrossSection_directorx, _IFT_SimpleCrossSection_directory, _IFT_SimpleCrossSection_directorz, _IFT_SimpleCrossSection_ik, _IFT_SimpleCrossSection_iy, _IFT_SimpleCrossSection_iz, _IFT_SimpleCrossSection_MaterialNumber, _IFT_SimpleCrossSection_shearareay, _IFT_SimpleCrossSection_shearareaz, _IFT_SimpleCrossSection_shearcoeff, _IFT_SimpleCrossSection_thick, _IFT_SimpleCrossSection_width, oofem::CS_Area, oofem::CS_BeamShearCoeff, oofem::CS_DirectorVectorX, oofem::CS_DirectorVectorY, oofem::CS_DirectorVectorZ, oofem::CS_InertiaMomentY, oofem::CS_InertiaMomentZ, oofem::CS_ShearAreaY, oofem::CS_ShearAreaZ, oofem::CS_Thickness, oofem::CS_TorsionConstantX, oofem::CS_Width, oofem::CrossSection::giveInputRecord(), materialNumber, oofem::CrossSection::propertyDictionary, and oofem::DynamicInputRecord::setField().
|
inlineoverridevirtual |
Implements oofem::FEMComponent.
Reimplemented in oofem::VariableCrossSection, and oofem::WarpingCrossSection.
Definition at line 166 of file simplecrosssection.h.
References _IFT_SimpleCrossSection_Name.
|
overridevirtual |
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 688 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::Material::giveIPValue(), giveMaterial(), oofem::FEMComponent::giveNumber(), and oofem::FloatArray::resize().
|
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.
Implements oofem::CrossSection.
Definition at line 670 of file simplecrosssection.C.
References oofem::FEMComponent::giveDomain(), oofem::GaussPoint::giveElement(), oofem::Domain::giveMaterial(), oofem::Element::giveMaterial(), and giveMaterialNumber().
Referenced by estimatePackSize(), give(), give2dBeamStiffMtrx(), give2dPlateStiffMtrx(), give2dPlateSubSoilStiffMtrx(), give3dBeamStiffMtrx(), give3dDegeneratedShellStiffMtrx(), give3dShellStiffMtrx(), giveCauchyStresses(), giveCharMaterialStiffnessMatrix(), giveCharMaterialStiffnessMatrix_dPdF(), giveEshelbyStresses(), giveFirstPKStress_1d(), giveFirstPKStress_3d(), giveFirstPKStress_PlaneStrain(), giveFirstPKStress_PlaneStress(), giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Beam3d(), giveGeneralizedStress_MembraneRot(), giveGeneralizedStress_Plate(), giveGeneralizedStress_PlateSubSoil(), giveGeneralizedStress_Shell(), giveGeneralizedStress_ShellRot(), giveIPValue(), giveMaterialInterface(), giveMembraneRotStiffMtrx(), giveRealStress_1d(), giveRealStress_3d(), giveRealStress_3dDegeneratedShell(), giveRealStress_PlaneStrain(), giveRealStress_PlaneStress(), giveRealStress_Warping(), giveStiffnessMatrix_1d(), giveStiffnessMatrix_3d(), giveStiffnessMatrix_dCde(), giveStiffnessMatrix_dPdF_1d(), giveStiffnessMatrix_dPdF_3d(), giveStiffnessMatrix_dPdF_PlaneStrain(), giveStiffnessMatrix_dPdF_PlaneStress(), giveStiffnessMatrix_PlaneStrain(), giveStiffnessMatrix_PlaneStress(), packUnknowns(), and unpackAndUpdateUnknowns().
|
overridevirtual |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 720 of file simplecrosssection.C.
References oofem::FEMComponent::giveInterface(), and giveMaterial().
|
inline |
Definition at line 174 of file simplecrosssection.h.
Referenced by giveMaterial(), and isCharacteristicMtrxSymmetric().
|
overridevirtual |
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 489 of file simplecrosssection.C.
References oofem::assemble(), oofem::FloatMatrixF< N, M >::at(), oofem::CS_DrillingStiffness, give(), giveMaterial(), and oofem::StructuralMaterial::givePlaneStressStiffMtrx().
Referenced by giveGeneralizedStress_MembraneRot().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 88 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::giveRealStressVector_1d().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 54 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::giveRealStressVector_3d().
|
overridevirtual |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 61 of file simplecrosssection.C.
References giveMaterial().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 72 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::giveRealStressVector_PlaneStrain().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 80 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::giveRealStressVector_PlaneStress().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 96 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::giveRealStressVector_Warping().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 128 of file simplecrosssection.C.
References oofem::StructuralMaterial::give1dStressStiffMtrx(), and giveMaterial().
|
overridevirtual |
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 104 of file simplecrosssection.C.
References oofem::StructuralMaterial::give3dMaterialStiffnessMatrix(), and giveMaterial().
|
overridevirtual |
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 858 of file simplecrosssection.C.
References oofem::StructuralMaterial::give1dStressStiffMtrx_dCde(), oofem::StructuralMaterial::give3dMaterialStiffnessMatrix_dCde(), giveMaterial(), oofem::GaussPoint::giveMaterialMode(), oofem::StructuralMaterial::givePlaneStrainStiffMtrx_dCde(), oofem::StructuralMaterial::givePlaneStressStiffMtrx_dCde(), and OOFEM_ERROR.
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 848 of file simplecrosssection.C.
References oofem::StructuralMaterial::give1dStressStiffnessMatrix_dPdF(), and giveMaterial().
|
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.
| 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 823 of file simplecrosssection.C.
References oofem::StructuralMaterial::give3dMaterialStiffnessMatrix_dPdF(), and giveMaterial().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 831 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::givePlaneStrainStiffnessMatrix_dPdF().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 840 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::givePlaneStressStiffnessMatrix_dPdF().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 120 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::givePlaneStrainStiffMtrx().
|
overridevirtual |
Implements oofem::StructuralCrossSection.
Definition at line 112 of file simplecrosssection.C.
References giveMaterial(), and oofem::StructuralMaterial::givePlaneStressStiffMtrx().
| void oofem::SimpleCrossSection::giveTemperatureVector | ( | FloatArray & | answer, |
| GaussPoint * | gp, | ||
| TimeStep * | tStep ) const |
Definition at line 880 of file simplecrosssection.C.
References oofem::FloatArray::at(), oofem::FloatArray::clear(), oofem::Element::computeGlobalCoordinates(), oofem::StructuralElement::computeResultingIPTemperatureAt(), oofem::FEMComponent::domain, oofem::GaussPoint::giveElement(), oofem::FieldManager::giveField(), oofem::GaussPoint::giveNaturalCoordinates(), oofem::FEMComponent::giveNumber(), oofem::FloatArray::isEmpty(), oofem::FloatArray::isNotEmpty(), and OOFEM_ERROR.
Referenced by giveGeneralizedStress_Beam2d(), giveGeneralizedStress_Beam3d(), giveGeneralizedStress_Plate(), and giveGeneralizedStress_Shell().
|
overridevirtual |
Initializes receiver acording to object description stored in input record. Calls CrossSection initializeFrom service and reads the values of
| ir | Record to read off. |
Reimplemented from oofem::CrossSection.
Reimplemented in oofem::VariableCrossSection, and oofem::WarpingCrossSection.
Definition at line 507 of file simplecrosssection.C.
References _IFT_SimpleCrossSection_area, _IFT_SimpleCrossSection_directorx, _IFT_SimpleCrossSection_directory, _IFT_SimpleCrossSection_directorz, _IFT_SimpleCrossSection_drillStiffness, _IFT_SimpleCrossSection_drillType, _IFT_SimpleCrossSection_ik, _IFT_SimpleCrossSection_iy, _IFT_SimpleCrossSection_iz, _IFT_SimpleCrossSection_MaterialNumber, _IFT_SimpleCrossSection_relDrillStiffness, _IFT_SimpleCrossSection_shearareay, _IFT_SimpleCrossSection_shearareaz, _IFT_SimpleCrossSection_shearcoeff, _IFT_SimpleCrossSection_thick, _IFT_SimpleCrossSection_width, oofem::CS_Area, oofem::CS_BeamShearCoeff, oofem::CS_DirectorVectorX, oofem::CS_DirectorVectorY, oofem::CS_DirectorVectorZ, oofem::CS_DrillingStiffness, oofem::CS_DrillingType, oofem::CS_InertiaMomentY, oofem::CS_InertiaMomentZ, oofem::CS_RelDrillingStiffness, oofem::CS_ShearAreaY, oofem::CS_ShearAreaZ, oofem::CS_Thickness, oofem::CS_TorsionConstantX, oofem::CS_Width, oofem::InputRecord::hasField(), oofem::CrossSection::initializeFrom(), IR_GIVE_FIELD, IR_GIVE_OPTIONAL_FIELD, materialNumber, and oofem::CrossSection::propertyDictionary.
|
overridevirtual |
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 659 of file simplecrosssection.C.
References oofem::FEMComponent::domain, and giveMaterialNumber().
|
overridevirtual |
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 911 of file simplecrosssection.C.
References giveMaterial(), and oofem::Material::packUnknowns().
|
overridevirtual |
Restores the receiver state previously written in stream.
| stream | Input stream. |
| mode | Determines amount of info available in stream (state, definition, ...). |
| throws | an ContextIOERR exception if error encountered. |
Reimplemented from oofem::CrossSection.
Definition at line 944 of file simplecrosssection.C.
References oofem::CIO_IOERR, CM_Definition, czMaterialNumber, materialNumber, oofem::DataStream::read(), oofem::CrossSection::restoreContext(), and THROW_CIOERR.
|
overridevirtual |
Stores receiver state to output stream.
| stream | Output stream. |
| mode | Determines amount of info required in stream (state, definition, ...). |
| throws | an ContextIOERR exception if error encountered. |
Reimplemented from oofem::CrossSection.
Definition at line 929 of file simplecrosssection.C.
References oofem::CIO_IOERR, CM_Definition, czMaterialNumber, materialNumber, oofem::CrossSection::saveContext(), THROW_CIOERR, and oofem::DataStream::write().
|
inline |
Definition at line 175 of file simplecrosssection.h.
|
overridevirtual |
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 917 of file simplecrosssection.C.
References giveMaterial(), and oofem::Material::unpackAndUpdateUnknowns().
|
protected |
Cohesive zone material number.
Definition at line 90 of file simplecrosssection.h.
Referenced by restoreContext(), and saveContext().
|
protected |
Material number.
Definition at line 89 of file simplecrosssection.h.
Referenced by checkConsistency(), createMaterialStatus(), giveInputRecord(), oofem::VariableCrossSection::giveInputRecord(), initializeFrom(), oofem::VariableCrossSection::initializeFrom(), restoreContext(), and saveContext().