OOFEM  2.1
Public Member Functions | Protected Member Functions
oofem::SimpleCrossSection Class Reference

Class implementing "simple" cross section model in finite element problem. More...

#include <simplecrosssection.h>

+ Inheritance diagram for oofem::SimpleCrossSection:
+ Collaboration diagram for oofem::SimpleCrossSection:

List of all members.

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.

Detailed Description

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.


Constructor & Destructor Documentation

Constructor.

Parameters:
nCross section number.
dAssociated domain.

Definition at line 76 of file simplecrosssection.h.


Member Function Documentation

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.

Parameters:
answerStress independent strain vector.
gpIntegration point.
modeDetermines load mode.
tStepTime step (most models are able to respond only when tStep is current time step).
modeDetermines the response mode.
Todo:
Deprecated or not? If so, remove it! / Mikael

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().

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.

Deprecated:
Please use giveCharMaterialStiffnessMatrix, this service will not be supported in future releases.
Parameters:
answerContains result.
formMaterial response form.
modeMaterial response mode.
gpIntegration point.
matMaterial to evaluate for.
tStepTime 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.

See also:
classType.
Returns:
Class type of receiver.

Reimplemented from oofem::StructuralCrossSection.

Definition at line 96 of file simplecrosssection.h.

References oofem::SimpleCrossSectionClass.

virtual const char* oofem::SimpleCrossSection::giveClassName ( ) const [inline, virtual]
Returns:
Class name of the receiver.

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.

Parameters:
answerFull form of stress/strain vector.
gpIntegration point.
strainVectorReduced 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]
Returns:
Input record name of the receiver.

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.

Parameters:
strString to be filled by input record.
keywordDetermines 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.

See also:
Material::giveCharacteristicMatrix
Parameters:
answerContains result.
formMaterial response form.
modeMaterial response mode.
gpIntegration point.
matPointer to material model.
tStepTime 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.

Parameters:
answerContains result.
formMaterial response form.
gpIntegration point.
reducedStrainIncrementStrain increment vector in reduced form.
tStepCurrent 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.

Parameters:
answerCharacteristic vector in reduced form.
gpIntegration point.
charVector3dFull 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().


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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Sun Mar 10 2013 18:17:00 for OOFEM by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2011