|
OOFEM 3.0
|
#include <boundaryload.h>
Public Types | |
| enum | BL_CoordSystType { BL_GlobalMode , BL_LocalMode , BL_UpdatedGlobalMode } |
| Public Types inherited from oofem::Load | |
| enum | CoordSystType { CST_Global , CST_Local , CST_UpdatedGlobal } |
| enum | FormulationType { FT_Entity , FT_Global } |
Public Member Functions | |
| BoundaryLoad (int i, Domain *d) | |
| void | computeValueAt (FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode) override |
| int | giveApproxOrder () override=0 |
| CoordSystType | giveCoordSystMode () override |
| void | initializeFrom (InputRecord &ir) override |
| void | giveInputRecord (DynamicInputRecord &input) override |
| bcType | giveType () const override |
| virtual double | giveProperty (int aProperty, TimeStep *tStep, const std ::map< std ::string, FunctionArgument > &valDict) const |
| double | giveProperty (int aProperty, TimeStep *tStep) const override |
| virtual double | giveTemperOffset (void) |
| Return temperature offset. | |
| Public Member Functions inherited from oofem::Load | |
| Load (int n, Domain *d) | |
| virtual | ~Load () |
| Destructor. | |
| virtual void | computeValueAt (FloatArray &answer, TimeStep *tStep, GaussPoint *gp, ValueModeType mode) |
| virtual void | computeValues (FloatArray &answer, TimeStep *tStep, const FloatArray &coords, const IntArray &dofids, ValueModeType mode) |
| int | isDofExcluded (int index) |
| void | scale (double s) override |
| virtual FormulationType | giveFormulationType () |
| void | initializeFrom (InputRecord &ir) override |
| void | giveInputRecord (DynamicInputRecord &input) override |
| const FloatArray & | giveComponentArray () const |
| void | setComponentArray (FloatArray &arry) |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
| Public Member Functions inherited from oofem::GeneralBoundaryCondition | |
| GeneralBoundaryCondition (int n, Domain *d) | |
| virtual | ~GeneralBoundaryCondition () |
| Destructor. | |
| int | giveSetNumber () const |
| virtual int | giveNumberOfInternalDofManagers () |
| Gives the number of internal dof managers. | |
| virtual DofManager * | giveInternalDofManager (int i) |
| Gives an internal dof manager from receiver. | |
| 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 void | updateYourself (TimeStep *tStep) |
| Public Member Functions inherited from oofem::FEMComponent | |
| FEMComponent (int n, Domain *d) | |
| virtual | ~FEMComponent ()=default |
| Virtual destructor. | |
| virtual const char * | giveClassName () const =0 |
| virtual const char * | giveInputRecordName () const =0 |
| 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). | |
Public Attributes | |
| CoordSystType | CST_UpdatedGlobal |
| ScalarFunction | propertyMultExpr |
| Expression to multiply all properties. | |
| Public Attributes inherited from oofem::Load | |
| bool | reference |
Protected Member Functions | |
| virtual void | computeNArray (FloatArray &answer, const FloatArray &coords) const =0 |
| void | computeComponentArrayAt (FloatArray &answer, TimeStep *tStep, ValueModeType mode) override |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
Protected Attributes | |
| bcType | lType |
| Load type (its physical meaning). | |
| CoordSystType | coordSystemType |
| Load coordinate system. | |
| Dictionary | propertyDictionary |
| Additional b.c properties. | |
| Dictionary | propertyTimeFunctDictionary |
| Optional time-functions for properties. | |
| double | temperOffset |
| Temperature offset with regards to Kelvin. Default is 273.15. | |
| Protected Attributes inherited from oofem::Load | |
| FloatArray | componentArray |
| Components of boundary condition. | |
| IntArray | dofExcludeMask |
| 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. | |
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a boundary of some finite element (on element side, face, ...). Boundary load is usually attribute of one or more finite elements.
This base class only declares the common services common to all derived classes. Derived classes must implement abstract services and possibly may customize existing. Boundary load is represented by its geometry (determined by its type - linear, quadratic load) and values (it is assumed, that user will supply all necessary values for each dof).
The load can generally be specified in global space or can be related to local entity space (related to edge, surface). If load is specified in global space then its values are evaluated at points, which is characterized by global coordinates. If load is specified in entity space, then point is characterized by entity isoparametric coordinates.
Methods for evaluation of load component values in any point on element boundary (on side, face, ...) are provided (this point is determined using global or local (global or entity definition) coordinates). The other possibility (faster, but less general) is to specify the the point using isoparametric coordinates - but this is not supported. It is generally assumed, that derived classes will approximate somehow their values based on user specified data (on side nodes for example) and load approximation type. The similar scheme borrowed from FE approximation is used, values computed at required point are computed as a product of approximation matrix (matrix of approximation functions) with "vertex" values, which has to be specified on input by user. Elements can request the order of load approximation (for setting up the appropriate integration rule order) and the array of component values (for each dof) at specific integration point on the boundary.
For some elements it may be better to obtain "vertex values" of boundary load to compute load vector directly using exact formulae. Elements then can ask for values at nodal points and obtain corresponding "vertex values". Meaning of these values is class dependent, see derived classes documentation for details.
Elements must take care, on which boundary the load acts on (side number, ...). Boundary load class also introduces load related coordinate system indicator. Load can be generally specified in global coordinate system or in entity dependent local coordinate system. The entity dependent coordinate system is defined by particular element.
Note, this class is not restricted to structural problems. For example, in thermal analysis, a boundary load load could be a heat source.
To summarize, the services provided include
Definition at line 110 of file boundaryload.h.
Load coordinate system type. Variable of this type can have following values BL_GlobalMode (indicates that load given in global coordinate system) or BL_LocalMode (entity dependent local coordinate system will be used).
| Enumerator | |
|---|---|
| BL_GlobalMode | Global mode i.e. load is specified in global c.s. |
| BL_LocalMode | Local entity (edge or surface) coordinate system. |
| BL_UpdatedGlobalMode | Load is specified in global c.s. and follows the deformation (only supported on el. level). |
Definition at line 119 of file boundaryload.h.
| oofem::BoundaryLoad::BoundaryLoad | ( | int | i, |
| Domain * | d ) |
Constructor. Creates a boundary load object with given number, belonging to given domain.
Definition at line 47 of file boundaryload.C.
References coordSystemType, oofem::Load::CST_Global, and oofem::Load::Load().
Referenced by oofem::EdgeLoad::EdgeLoad(), oofem::SurfaceLoad::SurfaceLoad(), and oofem::UsrDefBoundaryLoad::UsrDefBoundaryLoad().
|
overrideprotectedvirtual |
Returns array of load "vertex" values evaluated at given time.
| answer | Load "vertex" values. |
| tStep | Time step. |
| mode | Determines response mode. |
Reimplemented from oofem::Load.
Reimplemented in oofem::UsrDefBoundaryLoad.
Definition at line 52 of file boundaryload.C.
Referenced by computeNArray().
|
protectedpure virtual |
Abstract function, for computing approximation matrix of receiver at given point. The product of approximation matrix with "vertex" values array attribute will produce load components in given point.
| answer | Approximation vector. |
| coords | Global integration point coordinates. |
Implemented in oofem::ConstantEdgeLoad, oofem::ConstantPressureLoad, oofem::ConstantSurfaceLoad, oofem::FreeConstantSurfaceLoad, oofem::InteractionLoad, oofem::LinearEdgeLoad, oofem::NeumannMomentLoad, and oofem::UsrDefBoundaryLoad.
References computeComponentArrayAt(), restoreContext(), and saveContext().
Referenced by computeValueAt().
|
overridevirtual |
Computes components values of load at given point - global coordinates (coordinates given).
| answer | Component values at given point and time. |
| tStep | Time step representing time. |
| coords | Global (or local) problem coordinates, which are used to evaluate components values. |
| mode | Determines response mode. |
Implements oofem::Load.
Reimplemented in oofem::ConstantEdgeLoad, oofem::ConstantPressureLoad, oofem::ConstantSurfaceLoad, oofem::FreeConstantSurfaceLoad, oofem::InteractionLoad, oofem::NeumannMomentLoad, and oofem::UsrDefBoundaryLoad.
Definition at line 60 of file boundaryload.C.
References oofem::FloatArray::at(), oofem::Load::componentArray, computeNArray(), oofem::GeneralBoundaryCondition::giveTimeFunction(), N, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::FloatArray::times().
Referenced by oofem::TR1_2D_SUPG2::computeBCRhsTerm_MB(), oofem::Shell7BaseXFEM::computeBoundaryEdgeLoadVector(), oofem::StructuralElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TrPlanestressRotAllman::computeBoundaryEdgeLoadVector(), oofem::Hexa21Stokes::computeBoundarySurfaceLoadVector(), oofem::StructuralElement::computeBoundarySurfaceLoadVector(), oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::tet21ghostsolid::computeBoundarySurfaceLoadVector(), oofem::Tet21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tr21Stokes::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::TR1_2D_PFEM::computeEdgeBCSubVectorAt(), oofem::TransportElement::computeEdgeBCSubVectorAt(), oofem::Shell7BaseXFEM::computeEnrTractionForce(), oofem::TR1_2D_CBS::computePrescribedTractionPressure(), oofem::Shell7Base::computePressureForceAt(), oofem::TransportElement::computeSurfaceBCSubVectorAt(), and oofem::Shell7Base::computeTractionForce().
|
overridepure virtual |
Reimplemented from oofem::Load.
Implemented in oofem::ConstantEdgeLoad, oofem::ConstantPressureLoad, oofem::ConstantSurfaceLoad, oofem::FreeConstantSurfaceLoad, oofem::InteractionLoad, oofem::LinearEdgeLoad, oofem::NeumannMomentLoad, and oofem::UsrDefBoundaryLoad.
Referenced by oofem::StructuralElement::computeBoundaryEdgeLoadVector(), oofem::TMElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TrPlanestressRotAllman::computeBoundaryEdgeLoadVector(), oofem::UPElement::computeBoundaryEdgeLoadVector(), oofem::Hexa21Stokes::computeBoundarySurfaceLoadVector(), oofem::StructuralElement::computeBoundarySurfaceLoadVector(), oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::tet21ghostsolid::computeBoundarySurfaceLoadVector(), oofem::Tet21Stokes::computeBoundarySurfaceLoadVector(), oofem::TMElement::computeBoundarySurfaceLoadVector(), oofem::Tr1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tr21Stokes::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::UPElement::computeBoundarySurfaceLoadVector(), oofem::TR1_2D_PFEM::computeEdgeBCSubVectorAt(), oofem::TransportElement::computeEdgeBCSubVectorAt(), oofem::Shell7BaseXFEM::computeEnrTractionForce(), oofem::TransportElement::computeSurfaceBCSubVectorAt(), oofem::TransportElement::computeTangentFromEdgeLoad(), oofem::TransportElement::computeTangentFromSurfaceLoad(), oofem::Shell7Base::computeTractionForce(), oofem::TMElement::giveCharacteristicMatrixFromBC(), and oofem::TMElement::giveCharacteristicVectorFromBC().
|
inlineoverridevirtual |
Returns receiver's coordinate system.
Reimplemented from oofem::Load.
Definition at line 151 of file boundaryload.h.
References coordSystemType.
Referenced by oofem::Beam2d::computeBoundaryEdgeLoadVector(), oofem::Beam3d::computeBoundaryEdgeLoadVector(), oofem::StructuralElement::computeBoundaryEdgeLoadVector(), oofem::TrPlanestressRotAllman::computeBoundaryEdgeLoadVector(), oofem::StructuralElement::computeBoundarySurfaceLoadVector(), oofem::tet21ghostsolid::computeBoundarySurfaceLoadVector(), oofem::Shell7BaseXFEM::computeEnrTractionForce(), oofem::Beam3d::computeInternalForcesFromBoundaryEdgeLoadVectorAtPoint(), and oofem::Shell7Base::computeTractionForce().
|
overridevirtual |
Setups the input record string of receiver.
| input | Dynamic input record to be filled by receiver. |
Reimplemented from oofem::FEMComponent.
Reimplemented in oofem::ConstantPressureLoad, oofem::ConstantSurfaceLoad, oofem::FreeConstantSurfaceLoad, oofem::InteractionLoad, oofem::LinearEdgeLoad, and oofem::UsrDefBoundaryLoad.
Definition at line 120 of file boundaryload.C.
References _IFT_BoundaryLoad_cstype, _IFT_BoundaryLoad_loadtype, _IFT_BoundaryLoad_properties, _IFT_BoundaryLoad_propertyMultExpr, _IFT_BoundaryLoad_propertyTimeFunctions, coordSystemType, lType, propertyDictionary, propertyMultExpr, propertyTimeFunctDictionary, and oofem::DynamicInputRecord::setField().
|
overridevirtual |
Returns the value of a property 'aProperty'. Property must be identified by unique integer id.
| aProperty | id of property requested |
Reimplemented from oofem::Load.
Definition at line 153 of file boundaryload.C.
References giveProperty().
|
virtual |
Definition at line 132 of file boundaryload.C.
References oofem::FEMComponent::domain, oofem::FEMComponent::giveDomain(), OOFEM_ERROR, propertyDictionary, propertyMultExpr, and propertyTimeFunctDictionary.
Referenced by oofem::TransportElement::computeBCSubMtrxAt(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeEdgeBCSubVectorAt(), oofem::TR1_2D_SUPG::computePenetrationWithResistanceBCTerm_MB(), oofem::TR1_2D_SUPG_AXI::computePenetrationWithResistanceBCTerm_MB(), oofem::TR1_2D_SUPG::computeSlipWithFrictionBCTerm_MB(), oofem::TR1_2D_SUPG_AXI::computeSlipWithFrictionBCTerm_MB(), oofem::TransportElement::computeSurfaceBCSubVectorAt(), oofem::TransportElement::computeTangentFromEdgeLoad(), oofem::TransportElement::computeTangentFromSurfaceLoad(), and giveProperty().
|
virtual |
Return temperature offset.
Definition at line 159 of file boundaryload.C.
References temperOffset.
Referenced by oofem::TransportElement::computeBoundaryEdgeLoadVector(), and oofem::TransportElement::computeBoundarySurfaceLoadVector().
|
inlineoverridevirtual |
Returns receiver load type. It distinguish particular boundary conditions according to their "physical" meaning (like StructuralTemperatureLoadLT, StructuralLoadLT). Derived classes should always overload, default implementation returns value specified on input by user. See cltypes.h file for details.
Reimplemented from oofem::GeneralBoundaryCondition.
Definition at line 166 of file boundaryload.h.
References lType.
Referenced by oofem::TR1_2D_SUPG::computeBCRhsTerm_MB(), oofem::TMElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::Hexa21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tet21Stokes::computeBoundarySurfaceLoadVector(), oofem::TMElement::computeBoundarySurfaceLoadVector(), oofem::Tr1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tr21Stokes::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeTangentFromEdgeLoad(), oofem::TransportElement::computeTangentFromSurfaceLoad(), oofem::TMLhsAssembler::matrixFromElement(), and oofem::TMResidualAssembler::vectorFromElement().
|
overridevirtual |
Initializes receiver according to object description stored in input record. Reads number of dofs into nDofs attribute (i.e. the number of dofs, which are on loaded entity), its loadType into loadType attribute and coordinate system type into csType attribute.
Reimplemented from oofem::FEMComponent.
Reimplemented in oofem::ConstantEdgeLoad, oofem::ConstantPressureLoad, oofem::ConstantSurfaceLoad, oofem::FreeConstantSurfaceLoad, oofem::InteractionLoad, oofem::LinearEdgeLoad, oofem::NeumannMomentLoad, and oofem::UsrDefBoundaryLoad.
Definition at line 94 of file boundaryload.C.
References _IFT_BoundaryLoad_cstype, _IFT_BoundaryLoad_loadtype, _IFT_BoundaryLoad_properties, _IFT_BoundaryLoad_propertyMultExpr, _IFT_BoundaryLoad_propertyTimeFunctions, _IFT_BoundaryLoad_temperOffset, coordSystemType, IR_GIVE_OPTIONAL_FIELD, lType, propertyDictionary, propertyMultExpr, propertyTimeFunctDictionary, and temperOffset.
|
overrideprotectedvirtual |
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::FEMComponent.
Reimplemented in oofem::UsrDefBoundaryLoad.
Definition at line 187 of file boundaryload.C.
References oofem::CIO_IOERR, CM_Definition, coordSystemType, lType, propertyDictionary, propertyTimeFunctDictionary, oofem::DataStream::read(), temperOffset, and THROW_CIOERR.
Referenced by computeNArray().
|
overrideprotectedvirtual |
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::FEMComponent.
Reimplemented in oofem::UsrDefBoundaryLoad.
Definition at line 165 of file boundaryload.C.
References oofem::CIO_IOERR, CM_Definition, coordSystemType, lType, propertyDictionary, propertyTimeFunctDictionary, temperOffset, THROW_CIOERR, and oofem::DataStream::write().
Referenced by computeNArray().
|
protected |
Load coordinate system.
Definition at line 129 of file boundaryload.h.
Referenced by BoundaryLoad(), giveCoordSystMode(), giveInputRecord(), initializeFrom(), oofem::FreeConstantSurfaceLoad::initializeFrom(), restoreContext(), and saveContext().
| CoordSystType oofem::BoundaryLoad::CST_UpdatedGlobal |
Definition at line 113 of file boundaryload.h.
|
protected |
Load type (its physical meaning).
Definition at line 127 of file boundaryload.h.
Referenced by giveInputRecord(), giveType(), initializeFrom(), oofem::FreeConstantSurfaceLoad::initializeFrom(), restoreContext(), and saveContext().
|
protected |
Additional b.c properties.
Definition at line 131 of file boundaryload.h.
Referenced by giveInputRecord(), giveProperty(), initializeFrom(), oofem::FreeConstantSurfaceLoad::initializeFrom(), restoreContext(), and saveContext().
| ScalarFunction oofem::BoundaryLoad::propertyMultExpr |
Expression to multiply all properties.
Definition at line 172 of file boundaryload.h.
Referenced by oofem::TransportElement::computeBCSubMtrxAt(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeEdgeBCSubVectorAt(), oofem::TransportElement::computeSurfaceBCSubVectorAt(), oofem::TransportElement::computeTangentFromEdgeLoad(), oofem::TransportElement::computeTangentFromSurfaceLoad(), giveInputRecord(), giveProperty(), initializeFrom(), and oofem::FreeConstantSurfaceLoad::initializeFrom().
|
protected |
Optional time-functions for properties.
Definition at line 133 of file boundaryload.h.
Referenced by giveInputRecord(), giveProperty(), initializeFrom(), oofem::FreeConstantSurfaceLoad::initializeFrom(), restoreContext(), and saveContext().
|
protected |
Temperature offset with regards to Kelvin. Default is 273.15.
Definition at line 135 of file boundaryload.h.
Referenced by giveTemperOffset(), initializeFrom(), oofem::FreeConstantSurfaceLoad::initializeFrom(), restoreContext(), and saveContext().