|
OOFEM
2.1
|
Class implementing "simple" cross section model in finite element problem. More...
#include <simplecrosssection.h>
Inheritance diagram for oofem::SimpleCrossSection:
Collaboration diagram for oofem::SimpleCrossSection:Public Member Functions | |
| SimpleCrossSection (int n, Domain *d) | |
| Constructor. | |
| virtual void | giveFullCharacteristicVector (FloatArray &answer, GaussPoint *gp, const FloatArray &strainVector) |
| Computes full form of stress/strain from its reduced form, based on stress/strain mode stored in given integration point. | |
| virtual void | giveReducedCharacteristicVector (FloatArray &answer, GaussPoint *gp, const FloatArray &charVector3d) |
| Computes reduced stress/strain vector from full stress/strain vector. | |
| virtual void | giveRealStresses (FloatArray &answer, MatResponseForm form, GaussPoint *gp, const FloatArray &reducedStrainIncrement, TimeStep *tStep) |
| Computes the real stress vector for given strain and integration point. | |
| virtual void | giveCharMaterialStiffnessMatrixOf (FloatMatrix &answer, MatResponseForm form, MatResponseMode mode, GaussPoint *gp, StructuralMaterial *mat, TimeStep *tStep) |
| Computes the stiffness matrix of receiver in given integration point, respecting its history. | |
| virtual void | computeStressIndependentStrainVector (FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) |
| Computes reduced strain vector not dependent on stresses in given integration point. | |
| virtual double | give (CrossSectionProperty a) |
| Returns the value of cross section property. | |
| virtual const char * | giveClassName () const |
| virtual classType | giveClassID () const |
| Returns classType id of receiver. | |
| virtual const char * | giveInputRecordName () const |
| virtual IRResultType | initializeFrom (InputRecord *ir) |
| Initializes receiver acording to object description stored in input record. | |
| virtual int | giveInputRecordString (std::string &str, bool keyword=true) |
| Setups the input record string of receiver. | |
Protected Member Functions | |
| virtual void | giveMaterialStiffnessMatrixOf (FloatMatrix &answer, MatResponseForm form, MatResponseMode rMode, GaussPoint *gp, StructuralMaterial *mat, TimeStep *tStep) |
| For internal usage by cross section model. | |
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 68 of file simplecrosssection.h.
| oofem::SimpleCrossSection::SimpleCrossSection | ( | int | n, |
| Domain * | d | ||
| ) | [inline] |
Constructor.
| n | Cross section number. |
| d | Associated domain. |
Definition at line 76 of file simplecrosssection.h.
| void oofem::SimpleCrossSection::computeStressIndependentStrainVector | ( | FloatArray & | answer, |
| GaussPoint * | gp, | ||
| TimeStep * | tStep, | ||
| ValueModeType | mode | ||
| ) | [virtual] |
Computes reduced strain vector not dependent on stresses in given integration point.
Returned vector is generated by temperature or shrinkage effects, for example. The load mode (Incremental or Total Load form) passed as parameter is taken into account. Depend on load form, true resulting strain is total strain or its increment from previous step.
| answer | Stress independent strain vector. |
| gp | Integration point. |
| mode | Determines load mode. |
| tStep | Time step (most models are able to respond only when tStep is current time step). |
| mode | Determines the response mode. |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 310 of file simplecrosssection.C.
References _error, oofem::FloatArray::at(), oofem::StructuralMaterial::computeStressIndependentStrainVector(), give(), oofem::GaussPoint::giveElement(), oofem::Element::giveMaterial(), oofem::StructuralMaterial::giveReferenceTemperature(), oofem::FloatArray::giveSize(), oofem::StructuralMaterial::giveThermalDilatationVector(), oofem::FloatArray::resize(), and oofem::FloatArray::zero().
| double oofem::SimpleCrossSection::give | ( | CrossSectionProperty | a | ) | [virtual] |
Returns the value of cross section property.
| a | Id of requested property. |
Reimplemented from oofem::CrossSection.
Definition at line 295 of file simplecrosssection.C.
References oofem::Dictionary::at(), oofem::FEMComponent::giveNumber(), oofem::Dictionary::includes(), OOFEM_ERROR3, and oofem::CrossSection::propertyDictionary.
Referenced by computeStressIndependentStrainVector(), oofem::IsotropicLinearElasticMaterial::give2dBeamStiffMtrx(), oofem::LinearElasticMaterial::give2dPlateStiffMtrx(), oofem::IsotropicLinearElasticMaterial::give3dBeamStiffMtrx(), oofem::LinearElasticMaterial::give3dShellStiffMtrx(), and giveInputRecordString().
| void oofem::SimpleCrossSection::giveCharMaterialStiffnessMatrixOf | ( | FloatMatrix & | answer, |
| MatResponseForm | form, | ||
| MatResponseMode | mode, | ||
| GaussPoint * | gp, | ||
| StructuralMaterial * | mat, | ||
| TimeStep * | tStep | ||
| ) | [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. Passed material mode is always used instead of mode of given integration point. (Therefore, this function should be used if some object would like to obtain char matrix with different material form than that is associated with gp and its element)
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. |
| form | Material response form. |
| mode | Material response mode. |
| gp | Integration point. |
| mat | Material to evaluate for. |
| tStep | Time step (most models are able to respond only when tStep is current time step). |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 64 of file simplecrosssection.C.
References giveMaterialStiffnessMatrixOf().
| virtual classType oofem::SimpleCrossSection::giveClassID | ( | ) | const [inline, virtual] |
Returns classType id of receiver.
Intended for run time type checking. Every derived class have to overload this method.
Reimplemented from oofem::StructuralCrossSection.
Definition at line 96 of file simplecrosssection.h.
References oofem::SimpleCrossSectionClass.
| virtual const char* oofem::SimpleCrossSection::giveClassName | ( | ) | const [inline, virtual] |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 95 of file simplecrosssection.h.
| void oofem::SimpleCrossSection::giveFullCharacteristicVector | ( | FloatArray & | answer, |
| GaussPoint * | gp, | ||
| const FloatArray & | strainVector | ||
| ) | [virtual] |
Computes full form of stress/strain from its reduced form, based on stress/strain mode stored in given integration point.
| answer | Full form of stress/strain vector. |
| gp | Integration point. |
| strainVector | Reduced vector. |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 101 of file simplecrosssection.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::GaussPoint::giveMaterial(), oofem::GaussPoint::giveMaterialMode(), oofem::IntArray::giveSize(), oofem::StructuralMaterial::giveStressStrainMask(), oofem::ReducedForm, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
| virtual const char* oofem::SimpleCrossSection::giveInputRecordName | ( | ) | const [inline, virtual] |
Reimplemented from oofem::FEMComponent.
Definition at line 97 of file simplecrosssection.h.
| int oofem::SimpleCrossSection::giveInputRecordString | ( | std::string & | str, |
| bool | keyword = true |
||
| ) | [virtual] |
Setups the input record string of receiver.
| str | String to be filled by input record. |
| keyword | Determines if record keyword should be printed. |
Reimplemented from oofem::FEMComponent.
Definition at line 279 of file simplecrosssection.C.
References oofem::CS_Area, oofem::CS_BeamShearCoeff, oofem::CS_InertiaMomentY, oofem::CS_InertiaMomentZ, oofem::CS_Thickness, oofem::CS_TorsionMomentX, oofem::CS_Width, and give().
| void oofem::SimpleCrossSection::giveMaterialStiffnessMatrixOf | ( | FloatMatrix & | answer, |
| MatResponseForm | form, | ||
| MatResponseMode | mode, | ||
| GaussPoint * | gp, | ||
| StructuralMaterial * | mat, | ||
| TimeStep * | tStep | ||
| ) | [protected, virtual] |
For internal usage by cross section model.
It is direct interface to material model service giveCharacteristicMatrix. Material model passed as parameter is used instead of material, to which given integration point belongs to. It should always be the same material as integration point belongs to, because in integration point are stored load history variables related only to its associated material model. Different model can be used only if it does not depend on any internal history variables, like linear elastic material. Accessing load history variables, which are not in integration point status can lead to segmentation fault error.
| answer | Contains result. |
| form | Material response form. |
| mode | Material response mode. |
| gp | Integration point. |
| mat | Pointer to material model. |
| tStep | Time step (most models are able to respond only when tStep is current time step). |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 79 of file simplecrosssection.C.
References oofem::__MaterialModeToString(), oofem::StructuralMaterial::giveCharacteristicMatrix(), oofem::GaussPoint::giveElement(), oofem::Element::giveGlobalNumber(), oofem::GaussPoint::giveMaterialMode(), oofem::StructuralMaterial::hasMaterialModeCapability(), and OOFEM_ERROR3.
Referenced by giveCharMaterialStiffnessMatrixOf().
| void oofem::SimpleCrossSection::giveRealStresses | ( | FloatArray & | answer, |
| MatResponseForm | form, | ||
| GaussPoint * | gp, | ||
| const FloatArray & | reducedStrainIncrement, | ||
| TimeStep * | tStep | ||
| ) | [virtual] |
Computes the real stress vector for given strain 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 result. |
| form | Material response form. |
| gp | Integration point. |
| reducedStrainIncrement | Strain increment vector in reduced form. |
| tStep | Current time step (most models are able to respond only when tStep is current time step). |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 42 of file simplecrosssection.C.
References _error, oofem::GaussPoint::giveElement(), oofem::Element::giveMaterial(), oofem::GaussPoint::giveMaterialMode(), and oofem::StructuralMaterial::hasMaterialModeCapability().
| void oofem::SimpleCrossSection::giveReducedCharacteristicVector | ( | FloatArray & | answer, |
| GaussPoint * | gp, | ||
| const FloatArray & | charVector3d | ||
| ) | [virtual] |
Computes reduced stress/strain vector from full stress/strain vector.
The stress/strain mode is determined form given integration point.
| answer | Characteristic vector in reduced form. |
| gp | Integration point. |
| charVector3d | Full 3d stress/strain vector. |
Reimplemented from oofem::StructuralCrossSection.
Definition at line 157 of file simplecrosssection.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::GaussPoint::giveElement(), oofem::Element::giveMaterial(), oofem::GaussPoint::giveMaterialMode(), oofem::IntArray::giveSize(), oofem::FloatArray::giveSize(), oofem::StructuralMaterial::giveStressStrainMask(), OOFEM_ERROR, oofem::ReducedForm, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
| IRResultType oofem::SimpleCrossSection::initializeFrom | ( | InputRecord * | ir | ) | [virtual] |
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.
Definition at line 217 of file simplecrosssection.C.
References oofem::Dictionary::add(), oofem::CS_Area, oofem::CS_BeamShearCoeff, oofem::CS_InertiaMomentY, oofem::CS_InertiaMomentZ, oofem::CS_SHEAR_AREA_Y, oofem::CS_SHEAR_AREA_Z, oofem::CS_Thickness, oofem::CS_TorsionMomentX, oofem::CS_Width, oofem::InputRecord::hasField(), oofem::IFT_SimpleCrossSection_area, oofem::IFT_SimpleCrossSection_ik, oofem::IFT_SimpleCrossSection_iy, oofem::IFT_SimpleCrossSection_iz, oofem::IFT_SimpleCrossSection_shearareay, oofem::IFT_SimpleCrossSection_shearareaz, oofem::IFT_SimpleCrossSection_shearcoeff, oofem::IFT_SimpleCrossSection_thick, oofem::IFT_SimpleCrossSection_width, IR_GIVE_FIELD, IR_GIVE_OPTIONAL_FIELD, oofem::IRRT_OK, and oofem::CrossSection::propertyDictionary.