|
OOFEM 3.0
|
#include <stressstrainbasevector.h>
Public Member Functions | |
| StressStrainBaseVector (MaterialMode) | |
| Constructor. Creates zero value stress/strain vector for given material mode. | |
| StressStrainBaseVector (const FloatArray &, MaterialMode) | |
| Constructor. Creates stress/strain vector, values taken from given vector, mode is parameter. | |
| ~StressStrainBaseVector () | |
| Destructor. | |
| StressStrainBaseVector & | operator= (const StressStrainBaseVector &) |
| MaterialMode | giveStressStrainMode () const |
| Returns the material mode of receiver. | |
| void | letStressStrainModeBe (const MaterialMode newMode) |
| void | convertToFullForm (FloatArray &fullform) const |
| void | convertFromFullForm (const FloatArray &reducedform, MaterialMode mode) |
| virtual void | computePrincipalValues (FloatArray &answer) const =0 |
| virtual void | computePrincipalValDir (FloatArray &answer, FloatMatrix &dir) const =0 |
| void | transformTo (StressStrainBaseVector &answer, const FloatMatrix &base, int transpose=0) const |
| contextIOResultType | storeYourself (DataStream &stream) |
| contextIOResultType | restoreYourself (DataStream &stream) |
| double | computeVolumetricPart () const |
| Returns the volumetric part of the vector. | |
| Public Member Functions inherited from oofem::FloatArray | |
| FloatArray & | operator= (const double &) |
| Assignment of scalar to all components of receiver. | |
| std::vector< double >::iterator | begin () |
| std::vector< double >::iterator | end () |
| std::vector< double >::const_iterator | begin () const |
| std::vector< double >::const_iterator | end () const |
| FloatArray (int n=0) | |
| Constructor for sized array. Data is zeroed. | |
| FloatArray (double)=delete | |
| Disallow double parameter, which can otherwise give unexpected results. | |
| FloatArray (const FloatArray &src) | |
| Copy constructor. Creates the array from another array. | |
| FloatArray (FloatArray &&src) noexcept | |
| Move constructor. Creates the array from another array. | |
| FloatArray & | operator= (const FloatArray &src) |
| Assignment operator. | |
| FloatArray & | operator= (FloatArray &&src) noexcept |
| Move operator. | |
| const double * | data () const |
| double * | data () |
| double & | operator() (Index i) |
| double & | operator[] (Index i) |
| const double & | operator() (Index i) const |
| const double & | operator[] (Index i) const |
| void | resize (Index s) |
| Index | size () const |
| void | _resize_internal (Index newsize) |
| FloatArray (std ::initializer_list< double >list) | |
| Initializer list constructor. | |
| template<std::size_t N> | |
| FloatArray (const FloatArrayF< N > &src) | |
| virtual | ~FloatArray () |
| Destructor. | |
| FloatArray & | operator= (std ::initializer_list< double >list) |
| Assignment operator. | |
| template<std::size_t N> | |
| FloatArray & | operator= (const FloatArrayF< N > &src) |
| Assign from fixed size array. | |
| bool | isAllFinite () const |
| Returns true if no element is NAN or infinite. | |
| double & | at (Index i) |
| double | at (Index i) const |
| void | checkBounds (Index i) const |
| void | checkSizeTowards (const IntArray &loc) |
| void | resizeWithValues (Index s, std::size_t allocChunk=0) |
| void | clear () |
| bool | containsOnlyZeroes () const |
| Index | giveSize () const |
| Returns the size of receiver. | |
| bool | isNotEmpty () const |
| Returns true if receiver is not empty. | |
| bool | isEmpty () const |
| Returns true if receiver is empty. | |
| void | negated () |
| virtual void | printYourself () const |
| virtual void | printYourself (const std::string &name) const |
| virtual void | printYourselfToFile (const std::string filename, const bool showDimensions=true) const |
| virtual void | pY () const |
| void | zero () |
| Zeroes all coefficients of receiver. | |
| void | beProductOf (const FloatMatrix &aMatrix, const FloatArray &anArray) |
| void | beTProductOf (const FloatMatrix &aMatrix, const FloatArray &anArray) |
| void | beVectorProductOf (const FloatArray &v1, const FloatArray &v2) |
| void | beScaled (double s, const FloatArray &b) |
| void | add (const FloatArray &src) |
| void | add (double factor, const FloatArray &b) |
| void | plusProduct (const FloatMatrix &b, const FloatArray &s, double dV) |
| void | add (double offset) |
| void | subtract (const FloatArray &src) |
| void | times (double s) |
| void | beMaxOf (const FloatArray &a, const FloatArray &b) |
| void | beMinOf (const FloatArray &a, const FloatArray &b) |
| void | beDifferenceOf (const FloatArray &a, const FloatArray &b) |
| void | beDifferenceOf (const FloatArray &a, const FloatArray &b, Index n) |
| void | beSubArrayOf (const FloatArray &src, const IntArray &indx) |
| void | addSubVector (const FloatArray &src, Index si) |
| void | assemble (const FloatArray &fe, const IntArray &loc) |
| void | assembleSquared (const FloatArray &fe, const IntArray &loc) |
| void | copySubVector (const FloatArray &src, int si) |
| double | distance (const FloatArray &x) const |
| double | distance (const FloatArray *x) const |
| double | distance (const FloatArray &iP1, const FloatArray &iP2, double &oXi, double &oXiUnbounded) const |
| double | distance_square (const FloatArray &iP1, const FloatArray &iP2, double &oXi, double &oXiUnbounded) const |
| double | distance_square (const FloatArray &x) const |
| int | giveIndexMinElem (void) |
| int | giveIndexMaxElem (void) |
| double | dotProduct (const FloatArray &x) const |
| double | dotProduct (const FloatArray &x, Index size) const |
| double | normalize_giveNorm () |
| void | normalize () |
| double | computeNorm () const |
| double | computeSquaredNorm () const |
| double | sum () const |
| double | product () const |
| void | rotatedWith (FloatMatrix &r, char mode) |
| const double * | givePointer () const |
| double * | givePointer () |
| void | beVectorForm (const FloatMatrix &aMatrix) |
| void | beSymVectorForm (const FloatMatrix &aMatrix) |
| void | beSymVectorFormOfStrain (const FloatMatrix &aMatrix) |
| void | changeComponentOrder () |
| void | power (const double exponent) |
| void | beColumnOf (const FloatMatrix &mat, int col) |
| void | beRowOf (const FloatMatrix &mat, Index row) |
| contextIOResultType | storeYourself (DataStream &stream) const |
| contextIOResultType | restoreYourself (DataStream &stream) |
| int | givePackSize (DataStream &buff) const |
Protected Member Functions | |
| virtual void | giveTranformationMtrx (FloatMatrix &answer, const FloatMatrix &base, int transpose=0) const =0 |
Protected Attributes | |
| StressStrainMatMode | mode |
| Stress strain mode. | |
| Protected Attributes inherited from oofem::FloatArray | |
| std::vector< double > | values |
| Stored values. | |
Additional Inherited Members | |
| typedef double | Scalar |
| static FloatArray | fromVector (const std::vector< double > &v) |
| static FloatArray | fromList (const std::list< double > &l) |
| static FloatArray | fromConcatenated (std::initializer_list< FloatArray > ini) |
| static FloatArray | fromIniList (std::initializer_list< double > ini) |
| static constexpr int | Dim = 1 |
Base class for stress/strain vector representations. It is derived from FloatArray class, which is used to store the stress/strain vector components in reduced form. Additional attribute is introduced to keep the stress/strain mode. This allows to implement various stress/strain vector methods regarding the correct stress/strain mode without doing so in full form. The full form includes all components, even if they are zero due to stress/strain mode nature, but in the reduced format, only relevant nonzero components are stored. If in particular mode particular stress component is zero, the corresponding strain is not computed and not stored in reduced vector, and in full vector there is zero value on corresponding position. On the other hand, if zero strain component is imposed this condition must be taken into account in geometrical relations (at element level), and corresponding component are included stress/strain reduced vectors. Methods for converting vectors between reduced and full format are provided.
Definition at line 56 of file stressstrainbasevector.h.
| oofem::StressStrainBaseVector::StressStrainBaseVector | ( | MaterialMode | m | ) |
Constructor. Creates zero value stress/strain vector for given material mode.
Definition at line 45 of file stressstrainbasevector.C.
References oofem::FloatArray::FloatArray(), mode, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by computePrincipalValDir(), operator=(), oofem::StrainVector::StrainVector(), oofem::StrainVector::StrainVector(), oofem::StressVector::StressVector(), oofem::StressVector::StressVector(), and transformTo().
| oofem::StressStrainBaseVector::StressStrainBaseVector | ( | const FloatArray & | src, |
| MaterialMode | m ) |
Constructor. Creates stress/strain vector, values taken from given vector, mode is parameter.
Definition at line 52 of file stressstrainbasevector.C.
References oofem::FloatArray::FloatArray(), and oofem::FloatArray::giveSize().
|
inline |
Destructor.
Definition at line 68 of file stressstrainbasevector.h.
|
pure virtual |
Computes principal values and directions of receiver vector.
| answer | Computed principal values (sorted). |
| dir | Principal directions (stored column wise). |
Implemented in oofem::StrainVector, and oofem::StressVector.
References computeVolumetricPart(), oofem::FloatArray::FloatArray(), oofem::FloatArray::FloatMatrix, restoreYourself(), storeYourself(), StressStrainBaseVector(), transformTo(), and oofem::transpose().
|
pure virtual |
Member function that computes principal values of receiver (strain vector).
| answer | Computed principal values (sorted). |
Implemented in oofem::StrainVector, and oofem::StressVector.
References oofem::FloatArray::FloatArray().
| double oofem::StressStrainBaseVector::computeVolumetricPart | ( | ) | const |
Returns the volumetric part of the vector.
Definition at line 188 of file stressstrainbasevector.C.
References oofem::FloatArray::at(), giveStressStrainMode(), and OOFEM_ERROR.
Referenced by computePrincipalValDir().
| void oofem::StressStrainBaseVector::convertFromFullForm | ( | const FloatArray & | reducedform, |
| MaterialMode | mode ) |
Assign to receiver the reduced form of given vector.
| reducedform | Reduced form of receiver to expand. |
| mode | Mode of the stress/strain. |
Definition at line 92 of file stressstrainbasevector.C.
References oofem::FloatArray::at(), oofem::IntArray::at(), oofem::FloatArray::FloatArray(), oofem::FloatArray::giveSize(), oofem::IntArray::giveSize(), mode, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::zero().
Referenced by oofem::MPSDamMaterial::giveRealStressVector().
| void oofem::StressStrainBaseVector::convertToFullForm | ( | FloatArray & | fullform | ) | const |
Computes the full form of receiver.
| fullform | Requested full form of receiver. |
Definition at line 74 of file stressstrainbasevector.C.
References oofem::FloatArray::assemble(), oofem::FloatArray::FloatArray(), mode, oofem::FloatArray::resize(), and oofem::FloatArray::zero().
Referenced by oofem::StrainVector::computePrincipalValDir(), oofem::StressVector::computePrincipalValDir(), oofem::StrainVector::computePrincipalValues(), oofem::StressVector::computePrincipalValues(), and transformTo().
|
inline |
Returns the material mode of receiver.
Definition at line 78 of file stressstrainbasevector.h.
References mode.
Referenced by oofem::StressVector::applyDeviatoricElasticCompliance(), oofem::StrainVector::applyDeviatoricElasticStiffness(), oofem::StressVector::applyElasticCompliance(), oofem::StrainVector::applyElasticStiffness(), oofem::StressVector::computeAllThreeHWCoordinates(), oofem::StrainVector::computeDeviatoricVolumetricSplit(), oofem::StressVector::computeDeviatoricVolumetricSplit(), oofem::StrainVector::computeDeviatoricVolumetricSum(), oofem::StressVector::computeDeviatoricVolumetricSum(), oofem::StressVector::computeFirstInvariant(), oofem::StrainVector::computePrincipalValDir(), oofem::StressVector::computePrincipalValDir(), oofem::StrainVector::computePrincipalValues(), oofem::StressVector::computePrincipalValues(), oofem::StressVector::computeSecondInvariant(), oofem::StrainVector::computeStrainNorm(), oofem::StressVector::computeStressNorm(), oofem::StressVector::computeThirdInvariant(), oofem::StrainVector::computeVolumeChange(), computeVolumetricPart(), and transformTo().
|
protectedpure virtual |
Computes 3d transformation matrix from standard vector transformation matrix.
| answer | transformation matrix for strain vector |
| base | (3,3) matrix, where on each column are stored unit direction vectors of local coordinate axes to which we do transformation. |
| transpose | If transpose == 1 then transpose base matrix before transforming |
Implemented in oofem::StrainVector, and oofem::StressVector.
References oofem::FloatArray::FloatMatrix, and oofem::transpose().
Referenced by transformTo().
| void oofem::StressStrainBaseVector::letStressStrainModeBe | ( | const MaterialMode | newMode | ) |
Changes the material mode of receiver.
| newMode | New mode. |
Definition at line 156 of file stressstrainbasevector.C.
References mode, oofem::FloatArray::resize(), and oofem::zero().
Referenced by oofem::StrainVector::applyDeviatoricElasticStiffness().
| StressStrainBaseVector & oofem::StressStrainBaseVector::operator= | ( | const StressStrainBaseVector & | src | ) |
Assignment operator. Defines the assignment between two Stress Strain Base Vectors. The Assignment between FloatArray and StressStrainBaseVector is also possible, in this case the FloatArray assignment operator is used, where the operand is converted to FloatArray (mode is lost). The assignment from FloatArray to StressStrainBaseVector is not defined (needs material mode).
Definition at line 62 of file stressstrainbasevector.C.
References mode, oofem::FloatArray::resize(), oofem::FloatArray::size(), and StressStrainBaseVector().
| contextIOResultType oofem::StressStrainBaseVector::restoreYourself | ( | DataStream & | stream | ) |
Definition at line 137 of file stressstrainbasevector.C.
References oofem::CIO_IOERR, oofem::CIO_OK, mode, and oofem::DataStream::read().
Referenced by computePrincipalValDir().
| contextIOResultType oofem::StressStrainBaseVector::storeYourself | ( | DataStream & | stream | ) |
Definition at line 121 of file stressstrainbasevector.C.
References oofem::CIO_IOERR, oofem::CIO_OK, mode, and oofem::DataStream::write().
Referenced by computePrincipalValDir().
| void oofem::StressStrainBaseVector::transformTo | ( | StressStrainBaseVector & | answer, |
| const FloatMatrix & | base, | ||
| int | transpose = 0 ) const |
Transforms receiver vector into another coordinate system.
| answer | transformed strain vector |
| base | Transformation matrix. There are on each column stored unit vectors of coordinate system (so called base vectors) to which we do transformation. These vectors must be expressed in the same coordinate system as source strainVector. |
| answer | Transformed 3d strain. |
| base | New base to express vector in. |
| transpose | If transpose == 1 then transpose base matrix before transforming. |
Definition at line 164 of file stressstrainbasevector.C.
References oofem::FloatArray::beProductOf(), convertToFullForm(), oofem::FloatArray::FloatArray(), oofem::FloatArray::FloatMatrix, giveStressStrainMode(), giveTranformationMtrx(), StressStrainBaseVector(), and oofem::transpose().
Referenced by computePrincipalValDir().
|
protected |
Stress strain mode.
Definition at line 60 of file stressstrainbasevector.h.
Referenced by convertFromFullForm(), convertToFullForm(), giveStressStrainMode(), letStressStrainModeBe(), operator=(), oofem::StrainVector::printYourself(), oofem::StressVector::printYourself(), restoreYourself(), storeYourself(), and StressStrainBaseVector().