|
OOFEM 3.0
|
#include <mixedgradientpressuredirichlet.h>
Public Member Functions | |
| MixedGradientPressureDirichlet (int n, Domain *d) | |
| virtual | ~MixedGradientPressureDirichlet () |
| Destructor. | |
| int | giveNumberOfInternalDofManagers () override |
| DofManager * | giveInternalDofManager (int i) override |
| void | initializeFrom (InputRecord &ir) override |
| void | giveInputRecord (DynamicInputRecord &input) override |
| void | scale (double s) override |
| void | computeFields (FloatArray &stressDev, double &vol, TimeStep *tStep) override |
| void | computeTangents (FloatMatrix &Ed, FloatArray &Ep, FloatArray &Cd, double &Cp, TimeStep *tStep) override |
| void | setPrescribedPressure (double p) override |
| void | setPrescribedDeviatoricGradientFromVoigt (const FloatArray &ddev) override |
| virtual void | setCenterCoordinate (const FloatArray &x) |
| FloatArray & | giveCenterCoordinate () |
| Returns the center coordinate. | |
| void | assembleVector (FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorms=nullptr, void *lock=nullptr) override |
| bool | requiresActiveDofs () override |
| bool | isPrimaryDof (ActiveDof *dof) override |
| double | giveBcValue (Dof *dof, ValueModeType mode, TimeStep *tStep) override |
| bool | hasBc (Dof *dof, TimeStep *tStep) override |
| bool | isDevDof (Dof *dof) |
| Returns true is DOF represents one of the deviatoric parts. | |
| int | giveNumberOfMasterDofs (ActiveDof *dof) override |
| Dof * | giveMasterDof (ActiveDof *dof, int mdof) override |
| void | computeDofTransformation (ActiveDof *dof, FloatArray &masterContribs) override |
| double | giveUnknown (double vol, const FloatArray &dev, ValueModeType mode, TimeStep *tStep, ActiveDof *dof) |
| double | giveUnknown (PrimaryField &field, ValueModeType mode, TimeStep *tStep, ActiveDof *dof) override |
| double | giveUnknown (ValueModeType mode, TimeStep *tStep, ActiveDof *dof) override |
| const char * | giveClassName () const override |
| const char * | giveInputRecordName () const override |
| Public Member Functions inherited from oofem::MixedGradientPressureBC | |
| MixedGradientPressureBC (int n, Domain *d) | |
| virtual | ~MixedGradientPressureBC () |
| Destructor. | |
| bcType | giveType () const override |
| Not relevant for this boundary condition. | |
| double | domainSize () |
| Public Member Functions inherited from oofem::ActiveBoundaryCondition | |
| ActiveBoundaryCondition (int n, Domain *d) | |
| virtual | ~ActiveBoundaryCondition () |
| Destructor. | |
| virtual void | addElementSide (int elem, int side) |
| virtual void | assemble (SparseMtrx &answer, TimeStep *tStep, CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale=1.0, void *lock=nullptr) |
| virtual void | giveLocationArrays (std ::vector< IntArray > &rows, std ::vector< IntArray > &cols, CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s) |
| Public Member Functions inherited from oofem::GeneralBoundaryCondition | |
| GeneralBoundaryCondition (int n, Domain *d) | |
| virtual | ~GeneralBoundaryCondition () |
| Destructor. | |
| int | giveSetNumber () const |
| Function * | giveTimeFunction () |
| int | getIsImposedTimeFunctionNumber () const |
| void | setIsImposedTimeFunctionNumber (int funcIndx) |
| virtual bcValType | giveBCValType () const |
| virtual bool | isImposed (TimeStep *tStep) |
| virtual const IntArray & | giveDofIDs () const |
| virtual bcGeomType | giveBCGeoType () const |
| virtual double | giveProperty (int aProperty, TimeStep *tStep) const |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
| virtual void | updateYourself (TimeStep *tStep) |
| 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 int | checkConsistency () |
| virtual void | printOutputAt (FILE *file, TimeStep *tStep) |
| virtual void | printYourself () |
| Prints receiver state on stdout. Useful for debugging. | |
| virtual Interface * | giveInterface (InterfaceType t) |
| std::string | errorInfo (const char *func) const |
| Returns string for prepending output (used by error reporting macros). | |
Protected Member Functions | |
| Dof * | giveVolDof () |
Protected Attributes | |
| FloatArray | devGradient |
| Prescribed gradient \( d_{\mathrm{dev},ij} \) in Voigt form. | |
| FloatArray | centerCoord |
| Center coordinate \( \bar{x}_i \). | |
| double | pressure |
| Prescribed pressure. | |
| std ::unique_ptr< Node > | voldman |
| DOF-manager containing the unknown volumetric strain(rate). | |
| int | vol_id |
| std ::unique_ptr< Node > | devdman |
| DOF-manager containing the known deviatoric strain(rate). | |
| IntArray | dev_id |
| Protected Attributes inherited from oofem::GeneralBoundaryCondition | |
| int | timeFunction |
| Associated load time function. | |
| bcValType | valType |
| Physical meaning of BC value. | |
| IntArray | dofs |
| Dofs that b.c. is applied to (relevant for Dirichlet type b.c.s). | |
| int | isImposedTimeFunction |
| int | set |
| Set number for boundary condition to be applied to. | |
| Protected Attributes inherited from oofem::FEMComponent | |
| int | number |
| Component number. | |
| Domain * | domain |
| Link to domain object, useful for communicating with other FEM components. | |
Prescribes \( v_i = d_{ij}(x_j-\bar{x}_j) = (d_{\mathrm{dev},ij}+ \frac13 d_{\mathrm{vol}} I_{ij})(x_j+\bar{x}_j)) \) where \( d_{\mathrm{vol}} \) is unknown, loaded by a pressure. This is mixed Dirichlet boundary condition in multiscale analysis where \( d = \partial_x s\) would a macroscopic gradient at the integration point, i.e. this is a boundary condition for prolongation. It is also convenient to use when one wants to test a arbitrary specimen for shear.
Definition at line 72 of file mixedgradientpressuredirichlet.h.
| oofem::MixedGradientPressureDirichlet::MixedGradientPressureDirichlet | ( | int | n, |
| Domain * | d ) |
Creates boundary condition with given number, belonging to given domain.
| n | Boundary condition number. |
| d | Domain to which new object will belongs. |
Definition at line 63 of file mixedgradientpressuredirichlet.C.
References dev_id, devdman, oofem::Domain::giveNextFreeDofID(), oofem::Domain::giveNumberOfSpatialDimensions(), oofem::MixedGradientPressureBC::MixedGradientPressureBC(), vol_id, and voldman.
|
virtual |
Destructor.
Definition at line 87 of file mixedgradientpressuredirichlet.C.
|
overridevirtual |
Assembles B.C. contributions to specified vector.
| [in,out] | answer | Vector to assemble to. |
| tStep | Active time step. | |
| type | Type of matrix to assemble. | |
| mode | Mode of value. | |
| s | Numbering scheme. | |
| eNorms | Norms for each dofid. | |
| omp_lock | optional OMP lock to ensure correct update of answer |
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 399 of file mixedgradientpressuredirichlet.C.
References oofem::FloatArray::at(), oofem::MixedGradientPressureBC::domainSize(), oofem::Dof::giveDofID(), oofem::Dof::giveEquationNumber(), giveVolDof(), and pressure.
|
overridevirtual |
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 136 of file mixedgradientpressuredirichlet.C.
References oofem::FloatArray::at(), oofem::FloatArray::beDifferenceOf(), centerCoord, devdman, oofem::DofManager::giveCoordinates(), oofem::Dof::giveDofID(), oofem::Dof::giveDofManager(), oofem::FloatArray::giveSize(), OOFEM_ERROR, and oofem::FloatArray::resize().
|
overridevirtual |
Computes the homogenized fields through sensitivity analysis.
| [out] | stressDev | Computes the homogenized deviatoric stress. |
| [out] | vol | Computes the homogenized volumetric gradient. |
| tStep | Time step for which field to obtain. |
Implements oofem::MixedGradientPressureBC.
Definition at line 234 of file mixedgradientpressuredirichlet.C.
References oofem::EngngModel::assembleVector(), oofem::FloatArray::at(), oofem::FEMComponent::domain, oofem::MixedGradientPressureBC::domainSize(), oofem::FEMComponent::giveDomain(), oofem::FEMComponent::giveNumber(), oofem::EngngModel::giveNumberOfDomainEquations(), giveVolDof(), pressure, oofem::FloatArray::resize(), oofem::FloatArray::subtract(), oofem::FloatArray::times(), and oofem::FloatArray::zero().
|
overridevirtual |
Computes the macroscopic tangents through sensitivity analysis.
| [out] | Ed | Tangent \( \frac{\partial \sigma_{\mathrm{dev}}}{\partial d_{\mathrm{dev}}} \). |
| [out] | Ep | Tangent \( \frac{\partial \sigma_{\mathrm{dev}}}{\partial p} \). |
| [out] | Cd | Tangent \( \frac{\partial d_{\mathrm{vol}}}{\partial d_{\mathrm{dev}}} \). |
| [out] | Cp | Tangent \( \frac{\partial d_{\mathrm{vol}}}{\partial p} \). |
| tStep | Time step for the tangents. |
Implements oofem::MixedGradientPressureBC.
Definition at line 258 of file mixedgradientpressuredirichlet.C.
References oofem::EngngModel::assemble(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::classFactory, dev_id, devdman, devGradient, oofem::FEMComponent::domain, oofem::MixedGradientPressureBC::domainSize(), oofem::FEMComponent::giveDomain(), oofem::FloatMatrix::giveNumberOfColumns(), giveVolDof(), OOFEM_ERROR, oofem::FloatArray::resize(), oofem::FloatMatrix::resize(), oofem::ST_Petsc, oofem::FloatMatrix::subtract(), oofem::FloatArray::times(), oofem::FloatMatrix::times(), oofem::FloatArray::zero(), and oofem::FloatMatrix::zero().
|
overridevirtual |
Returns the prescribed value of a dof (if any).
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 433 of file mixedgradientpressuredirichlet.C.
References dev_id, devGradient, oofem::Dof::giveDofID(), isDevDof(), and OOFEM_ERROR.
|
inline |
Returns the center coordinate.
Definition at line 146 of file mixedgradientpressuredirichlet.h.
References centerCoord.
|
inlineoverridevirtual |
Implements oofem::FEMComponent.
Definition at line 170 of file mixedgradientpressuredirichlet.h.
|
overridevirtual |
Setups the input record string of receiver.
| input | Dynamic input record to be filled by receiver. |
Reimplemented from oofem::GeneralBoundaryCondition.
Definition at line 465 of file mixedgradientpressuredirichlet.C.
References _IFT_MixedGradientPressure_centerCoords, _IFT_MixedGradientPressure_devGradient, _IFT_MixedGradientPressure_pressure, centerCoord, devGradient, pressure, and oofem::DynamicInputRecord::setField().
|
inlineoverridevirtual |
Implements oofem::FEMComponent.
Definition at line 171 of file mixedgradientpressuredirichlet.h.
References _IFT_MixedGradientPressureDirichlet_Name.
|
overridevirtual |
Returns the volumetric DOF manager for i == 1, and the deviatoric manager for i == 2.
Reimplemented from oofem::GeneralBoundaryCondition.
Definition at line 104 of file mixedgradientpressuredirichlet.C.
|
overridevirtual |
Give the pointer to master dof belonging to active DOF.
| dof | Active dof belonging to receiver. |
| mdof | Local master dof number. |
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 123 of file mixedgradientpressuredirichlet.C.
References dev_id, devdman, isDevDof(), and voldman.
|
overridevirtual |
Returns the number of internal DOF managers (=2). This boundary condition stores its own DOF managers, one for \( d_{\mathrm{dev},ij} \) in which the DOFs are prescribed and one for \( d_{\mathrm{vol}} \) for single free volumetric strain rate.
Reimplemented from oofem::GeneralBoundaryCondition.
Definition at line 98 of file mixedgradientpressuredirichlet.C.
|
overridevirtual |
Allows for active boundary conditions to handle their own special DOF.
| dof | Active dof belonging to receiver. |
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 114 of file mixedgradientpressuredirichlet.C.
References devdman, and isDevDof().
| double oofem::MixedGradientPressureDirichlet::giveUnknown | ( | double | vol, |
| const FloatArray & | dev, | ||
| ValueModeType | mode, | ||
| TimeStep * | tStep, | ||
| ActiveDof * | dof ) |
Definition at line 189 of file mixedgradientpressuredirichlet.C.
References oofem::FloatArray::at(), oofem::FloatArray::beDifferenceOf(), centerCoord, oofem::DofManager::giveCoordinates(), oofem::Dof::giveDofID(), oofem::Dof::giveDofManager(), and oofem::FloatArray::giveSize().
Referenced by giveUnknown(), and giveUnknown().
|
overridevirtual |
Computes the value of the dof.
| field | Field to take value from. |
| mode | Mode of unknown value. |
| tStep | Time step. |
| dof | Active dof for which to obtain the value. |
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 375 of file mixedgradientpressuredirichlet.C.
References dev_id, devGradient, oofem::Dof::giveDofID(), giveUnknown(), giveVolDof(), and isDevDof().
|
overridevirtual |
Computes the value of the dof.
| mode | Mode of unknown value. |
| tStep | Time step. |
| dof | Active dof for which to obtain the value. |
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 384 of file mixedgradientpressuredirichlet.C.
References dev_id, devGradient, oofem::Dof::giveDofID(), giveUnknown(), giveVolDof(), and isDevDof().
|
protected |
Definition at line 92 of file mixedgradientpressuredirichlet.C.
References voldman.
Referenced by assembleVector(), computeFields(), computeTangents(), giveUnknown(), and giveUnknown().
Returns the prescribed value of a dof (if any).
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 443 of file mixedgradientpressuredirichlet.C.
References isDevDof().
|
overridevirtual |
Initializes receiver according to object description stored in input record. The input record contains two fields;
Reimplemented from oofem::MixedGradientPressureBC.
Definition at line 455 of file mixedgradientpressuredirichlet.C.
References _IFT_MixedGradientPressure_centerCoords, centerCoord, oofem::FEMComponent::domain, and IR_GIVE_OPTIONAL_FIELD.
| bool oofem::MixedGradientPressureDirichlet::isDevDof | ( | Dof * | dof | ) |
Returns true is DOF represents one of the deviatoric parts.
Definition at line 449 of file mixedgradientpressuredirichlet.C.
References devdman, and oofem::Dof::giveDofManager().
Referenced by giveBcValue(), giveMasterDof(), giveNumberOfMasterDofs(), giveUnknown(), giveUnknown(), hasBc(), and isPrimaryDof().
|
overridevirtual |
Checks to see if the dof is a primary DOF.
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 427 of file mixedgradientpressuredirichlet.C.
References isDevDof().
|
inlineoverridevirtual |
Checks to see if active boundary condition requires special DOFs.
Reimplemented from oofem::ActiveBoundaryCondition.
Definition at line 153 of file mixedgradientpressuredirichlet.h.
|
inlineoverridevirtual |
Scales the receiver according to given value. Typically used in nondimensional analysis to scale down BCs and ICs.
| s | Scale factor. |
Reimplemented from oofem::GeneralBoundaryCondition.
Definition at line 129 of file mixedgradientpressuredirichlet.h.
References devGradient, and pressure.
|
inlinevirtual |
Set the center coordinate.
| x | New center coordinate. |
Definition at line 144 of file mixedgradientpressuredirichlet.h.
References centerCoord.
|
overridevirtual |
Sets the prescribed tensor from the matrix from given Voigt notation. Assumes use of double values (gamma) for off-diagonal, usually the way for strain in Voigt form.
| ddev | Vector in Voigt format. |
Implements oofem::MixedGradientPressureBC.
Definition at line 393 of file mixedgradientpressuredirichlet.C.
References devGradient.
|
inlineoverridevirtual |
Set prescribed pressure.
| p | New prescribed pressure. |
Implements oofem::MixedGradientPressureBC.
Definition at line 137 of file mixedgradientpressuredirichlet.h.
References pressure.
|
protected |
Center coordinate \( \bar{x}_i \).
Definition at line 79 of file mixedgradientpressuredirichlet.h.
Referenced by computeDofTransformation(), giveCenterCoordinate(), giveInputRecord(), giveUnknown(), initializeFrom(), and setCenterCoordinate().
|
protected |
Definition at line 90 of file mixedgradientpressuredirichlet.h.
Referenced by computeTangents(), giveBcValue(), giveMasterDof(), giveUnknown(), giveUnknown(), and MixedGradientPressureDirichlet().
|
protected |
DOF-manager containing the known deviatoric strain(rate).
Definition at line 89 of file mixedgradientpressuredirichlet.h.
Referenced by computeDofTransformation(), computeTangents(), giveInternalDofManager(), giveMasterDof(), giveNumberOfMasterDofs(), isDevDof(), and MixedGradientPressureDirichlet().
|
protected |
Prescribed gradient \( d_{\mathrm{dev},ij} \) in Voigt form.
Definition at line 76 of file mixedgradientpressuredirichlet.h.
Referenced by computeTangents(), giveBcValue(), giveInputRecord(), giveUnknown(), giveUnknown(), scale(), and setPrescribedDeviatoricGradientFromVoigt().
|
protected |
Prescribed pressure.
Definition at line 82 of file mixedgradientpressuredirichlet.h.
Referenced by assembleVector(), computeFields(), giveInputRecord(), scale(), and setPrescribedPressure().
|
protected |
Definition at line 86 of file mixedgradientpressuredirichlet.h.
Referenced by MixedGradientPressureDirichlet().
|
protected |
DOF-manager containing the unknown volumetric strain(rate).
Definition at line 85 of file mixedgradientpressuredirichlet.h.
Referenced by giveInternalDofManager(), giveMasterDof(), giveVolDof(), and MixedGradientPressureDirichlet().