OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a boundary of some finite element (on element side, face, ...). More...
#include <boundaryload.h>
Public Types | |
enum | BL_CoordSystType { BL_GlobalMode, BL_LocalMode, BL_UpdatedGlobalMode } |
Load coordinate system type. More... | |
Public Types inherited from oofem::Load | |
enum | CoordSystType { CST_Global, CST_Local, CST_UpdatedGlobal } |
Load coordinate system type. More... | |
enum | FormulationType { FT_Entity, FT_Global } |
Type determining the type of formulation (entity local or global one). More... | |
Public Member Functions | |
BoundaryLoad (int i, Domain *d) | |
Constructor. More... | |
virtual void | computeValueAt (FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode) |
Computes components values of load at given point - global coordinates (coordinates given). More... | |
virtual int | giveApproxOrder ()=0 |
virtual CoordSystType | giveCoordSystMode () |
Returns receiver's coordinate system. More... | |
IRResultType | initializeFrom (InputRecord *ir) |
Initializes receiver according to object description stored in input record. More... | |
virtual void | giveInputRecord (DynamicInputRecord &input) |
Setups the input record string of receiver. More... | |
virtual bcType | giveType () const |
Returns receiver load type. More... | |
virtual double | giveProperty (int aProperty, TimeStep *tStep, const std::map< std::string, FunctionArgument > &valDict) |
virtual double | giveProperty (int aProperty, TimeStep *tStep) |
Returns the value of a property 'aProperty'. More... | |
virtual double | giveTemperOffset (void) |
Return temperature offset. More... | |
Public Member Functions inherited from oofem::Load | |
Load (int n, Domain *d) | |
Constructor. More... | |
virtual | ~Load () |
Destructor. More... | |
virtual void | computeValues (FloatArray &answer, TimeStep *tStep, const FloatArray &coords, const IntArray &dofids, ValueModeType mode) |
Computes components values for specified dof ids. More... | |
int | isDofExcluded (int index) |
Returns the value of dofExcludeMask corresponding to given index. More... | |
virtual void | scale (double s) |
Scales the receiver according to given value. More... | |
virtual FormulationType | giveFormulationType () |
Specifies is load should take local or global coordinates. More... | |
const FloatArray & | giveComponentArray () const |
void | setComponentArray (FloatArray &arry) |
Public Member Functions inherited from oofem::GeneralBoundaryCondition | |
GeneralBoundaryCondition (int n, Domain *d) | |
Constructor. More... | |
virtual | ~GeneralBoundaryCondition () |
Destructor. More... | |
int | giveSetNumber () |
Gives the set number which boundary condition is applied to. More... | |
virtual int | giveNumberOfInternalDofManagers () |
Gives the number of internal dof managers. More... | |
virtual DofManager * | giveInternalDofManager (int i) |
Gives an internal dof manager from receiver. More... | |
Function * | giveTimeFunction () |
virtual bcValType | giveBCValType () const |
Returns receiver load type. More... | |
virtual bool | isImposed (TimeStep *tStep) |
Returns nonzero if receiver representing BC is imposed at given time, otherwise returns zero. More... | |
virtual const IntArray & | giveDofIDs () const |
Array with default dofs which b.c. More... | |
virtual bcGeomType | giveBCGeoType () const |
Returns geometry character of boundary condition. More... | |
virtual void | postInitialize () |
Performs post initialization steps. More... | |
virtual contextIOResultType | saveContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Stores receiver state to output stream. More... | |
virtual contextIOResultType | restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Restores the receiver state previously written in stream. More... | |
Public Member Functions inherited from oofem::FEMComponent | |
FEMComponent (int n, Domain *d) | |
Regular constructor, creates component with given number and belonging to given domain. More... | |
virtual | ~FEMComponent () |
Virtual destructor. More... | |
virtual const char * | giveClassName () const =0 |
virtual const char * | giveInputRecordName () const =0 |
Domain * | giveDomain () const |
virtual void | setDomain (Domain *d) |
Sets associated Domain. More... | |
int | giveNumber () const |
void | setNumber (int num) |
Sets number of receiver. More... | |
virtual void | updateLocalNumbering (EntityRenumberingFunctor &f) |
Local renumbering support. More... | |
virtual int | checkConsistency () |
Allows programmer to test some internal data, before computation begins. More... | |
virtual void | printOutputAt (FILE *file, TimeStep *tStep) |
Prints output of receiver to stream, for given time step. More... | |
virtual void | printYourself () |
Prints receiver state on stdout. Useful for debugging. More... | |
virtual Interface * | giveInterface (InterfaceType t) |
Interface requesting service. More... | |
std::string | errorInfo (const char *func) const |
Returns string for prepending output (used by error reporting macros). More... | |
Public Attributes | |
CoordSystType | CST_UpdatedGlobal |
ScalarFunction | propertyMultExpr |
Expression to multiply all properties. More... | |
Public Attributes inherited from oofem::Load | |
bool | reference |
Protected Member Functions | |
virtual void | computeNArray (FloatArray &answer, const FloatArray &coords) const =0 |
Abstract function, for computing approximation matrix of receiver at given point. More... | |
virtual void | computeComponentArrayAt (FloatArray &answer, TimeStep *tStep, ValueModeType mode) |
Returns array of load "vertex" values evaluated at given time. More... | |
Protected Attributes | |
bcType | lType |
Load type (its physical meaning). More... | |
CoordSystType | coordSystemType |
Load coordinate system. More... | |
Dictionary | propertyDictionary |
Additional b.c properties. More... | |
Dictionary | propertyTimeFunctDictionary |
Optional time-functions for properties. More... | |
double | temperOffset |
Temperature offset with regards to Kelvin. Default is 273.15. More... | |
Protected Attributes inherited from oofem::Load | |
FloatArray | componentArray |
Components of boundary condition. More... | |
IntArray | dofExcludeMask |
The load is specified for all dofs of object to which is associated. More... | |
Protected Attributes inherited from oofem::GeneralBoundaryCondition | |
int | timeFunction |
Associated load time function. More... | |
bcValType | valType |
Physical meaning of BC value. More... | |
IntArray | dofs |
Dofs that b.c. is applied to (relevant for Dirichlet type b.c.s). More... | |
int | isImposedTimeFunction |
Zero by default - the BC is than always imposed. More... | |
int | set |
Set number for boundary condition to be applied to. More... | |
Protected Attributes inherited from oofem::FEMComponent | |
int | number |
Component number. More... | |
Domain * | domain |
Link to domain object, useful for communicating with other FEM components. More... | |
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 45 of file boundaryload.C.
|
protectedvirtual |
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.
Definition at line 50 of file boundaryload.C.
References oofem::Load::computeComponentArrayAt().
|
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::NeumannMomentLoad, oofem::ConstantSurfaceLoad, oofem::ConstantPressureLoad, oofem::LinearEdgeLoad, oofem::InteractionLoad, and oofem::ConstantEdgeLoad.
Referenced by computeValueAt().
|
virtual |
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::NeumannMomentLoad, oofem::ConstantSurfaceLoad, oofem::ConstantPressureLoad, oofem::InteractionLoad, and oofem::ConstantEdgeLoad.
Definition at line 58 of file boundaryload.C.
References oofem::FloatArray::at(), oofem::Load::componentArray, computeNArray(), oofem::Function::evaluate(), oofem::FloatArray::giveSize(), oofem::GeneralBoundaryCondition::giveTimeFunction(), N, OOFEM_ERROR, oofem::FloatArray::resize(), and oofem::FloatArray::times().
Referenced by oofem::TR1_2D_SUPG_AXI::computeBCRhsTerm_MB(), oofem::TR1_2D_SUPG2_AXI::computeBCRhsTerm_MB(), oofem::TR1_2D_SUPG2::computeBCRhsTerm_MB(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TrPlanestressRotAllman::computeBoundaryEdgeLoadVector(), oofem::Shell7BaseXFEM::computeBoundaryEdgeLoadVector(), oofem::StructuralElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::tet21ghostsolid::computeBoundarySurfaceLoadVector(), oofem::Hexa21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tet21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::StructuralElement::computeBoundarySurfaceLoadVector(), oofem::TR1_2D_CBS::computeDiffusionTermsI(), oofem::Tr1Darcy::computeEdgeBCSubVectorAt(), 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().
|
pure virtual |
Reimplemented from oofem::Load.
Implemented in oofem::LinearEdgeLoad, oofem::NeumannMomentLoad, oofem::ConstantSurfaceLoad, oofem::ConstantPressureLoad, oofem::InteractionLoad, and oofem::ConstantEdgeLoad.
Referenced by oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TrPlanestressRotAllman::computeBoundaryEdgeLoadVector(), oofem::StructuralElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::tet21ghostsolid::computeBoundarySurfaceLoadVector(), oofem::Hexa21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tet21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::StructuralElement::computeBoundarySurfaceLoadVector(), oofem::Tr1Darcy::computeEdgeBCSubVectorAt(), oofem::TR1_2D_PFEM::computeEdgeBCSubVectorAt(), oofem::TransportElement::computeEdgeBCSubVectorAt(), oofem::Shell7BaseXFEM::computeEnrTractionForce(), oofem::TransportElement::computeSurfaceBCSubVectorAt(), oofem::TransportElement::computeTangentFromEdgeLoad(), oofem::TransportElement::computeTangentFromSurfaceLoad(), and oofem::Shell7Base::computeTractionForce().
|
inlinevirtual |
Returns receiver's coordinate system.
Reimplemented from oofem::Load.
Definition at line 151 of file boundaryload.h.
Referenced by oofem::TrPlanestressRotAllman::computeBoundaryEdgeLoadVector(), oofem::Beam2d::computeBoundaryEdgeLoadVector(), oofem::Beam3d::computeBoundaryEdgeLoadVector(), oofem::StructuralElement::computeBoundaryEdgeLoadVector(), oofem::tet21ghostsolid::computeBoundarySurfaceLoadVector(), oofem::StructuralElement::computeBoundarySurfaceLoadVector(), oofem::Shell7BaseXFEM::computeEnrTractionForce(), oofem::Beam3d::computeInternalForcesFromBoundaryEdgeLoadVectorAtPoint(), and oofem::Shell7Base::computeTractionForce().
|
virtual |
Setups the input record string of receiver.
input | Dynamic input record to be filled by receiver. |
Reimplemented from oofem::Load.
Reimplemented in oofem::ConstantSurfaceLoad, oofem::ConstantPressureLoad, oofem::LinearEdgeLoad, and oofem::InteractionLoad.
Definition at line 125 of file boundaryload.C.
References _IFT_BoundaryLoad_cstype, _IFT_BoundaryLoad_loadtype, _IFT_BoundaryLoad_properties, _IFT_BoundaryLoad_propertyMultExpr, _IFT_BoundaryLoad_propertyTimeFunctions, coordSystemType, oofem::Load::giveInputRecord(), lType, propertyDictionary, propertyMultExpr, propertyTimeFunctDictionary, and oofem::DynamicInputRecord::setField().
Referenced by oofem::LinearEdgeLoad::giveInputRecord(), oofem::ConstantPressureLoad::giveInputRecord(), and oofem::ConstantSurfaceLoad::giveInputRecord().
|
virtual |
Definition at line 137 of file boundaryload.C.
References oofem::Dictionary::at(), oofem::FEMComponent::domain, oofem::ScalarFunction::eval(), oofem::FEMComponent::giveDomain(), oofem::Domain::giveFunction(), oofem::Dictionary::includes(), oofem::ScalarFunction::isDefined(), OOFEM_ERROR, propertyDictionary, propertyMultExpr, and propertyTimeFunctDictionary.
Referenced by oofem::TransportElement::computeBCSubMtrxAt(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeEdgeBCSubVectorAt(), oofem::TR1_2D_SUPG_AXI::computePenetrationWithResistanceBCTerm_MB(), oofem::TR1_2D_SUPG::computePenetrationWithResistanceBCTerm_MB(), oofem::TR1_2D_SUPG_AXI::computeSlipWithFrictionBCTerm_MB(), oofem::TR1_2D_SUPG::computeSlipWithFrictionBCTerm_MB(), oofem::TransportElement::computeSurfaceBCSubVectorAt(), oofem::TransportElement::computeTangentFromEdgeLoad(), oofem::TransportElement::computeTangentFromSurfaceLoad(), and giveProperty().
|
virtual |
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 158 of file boundaryload.C.
References giveProperty().
|
virtual |
Return temperature offset.
Definition at line 164 of file boundaryload.C.
References temperOffset.
Referenced by oofem::TransportElement::computeBoundaryEdgeLoadVector(), and oofem::TransportElement::computeBoundarySurfaceLoadVector().
|
inlinevirtual |
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.
Referenced by oofem::TR1_2D_SUPG::computeBCRhsTerm_MB(), oofem::TransportElement::computeBoundaryEdgeLoadVector(), oofem::TransportElement::computeBoundarySurfaceLoadVector(), oofem::Hexa21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tet21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr21Stokes::computeBoundarySurfaceLoadVector(), oofem::Tr1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), oofem::TransportElement::computeTangentFromEdgeLoad(), and oofem::TransportElement::computeTangentFromSurfaceLoad().
|
virtual |
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::Load.
Reimplemented in oofem::NeumannMomentLoad, oofem::ConstantSurfaceLoad, oofem::ConstantPressureLoad, oofem::LinearEdgeLoad, oofem::InteractionLoad, and oofem::ConstantEdgeLoad.
Definition at line 92 of file boundaryload.C.
References _IFT_BoundaryLoad_cstype, _IFT_BoundaryLoad_loadtype, _IFT_BoundaryLoad_properties, _IFT_BoundaryLoad_propertyMultExpr, _IFT_BoundaryLoad_propertyTimeFunctions, _IFT_BoundaryLoad_temperOffset, coordSystemType, oofem::Load::initializeFrom(), IR_GIVE_OPTIONAL_FIELD, oofem::IRRT_OK, lType, propertyDictionary, propertyMultExpr, propertyTimeFunctDictionary, and temperOffset.
Referenced by oofem::ConstantEdgeLoad::initializeFrom(), oofem::LinearEdgeLoad::initializeFrom(), oofem::ConstantPressureLoad::initializeFrom(), oofem::ConstantSurfaceLoad::initializeFrom(), and oofem::NeumannMomentLoad::initializeFrom().
|
protected |
Load coordinate system.
Definition at line 129 of file boundaryload.h.
Referenced by giveInputRecord(), and initializeFrom().
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(), and initializeFrom().
|
protected |
Additional b.c properties.
Definition at line 131 of file boundaryload.h.
Referenced by giveInputRecord(), giveProperty(), and initializeFrom().
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(), and initializeFrom().
|
protected |
Optional time-functions for properties.
Definition at line 133 of file boundaryload.h.
Referenced by giveInputRecord(), giveProperty(), and initializeFrom().
|
protected |
Temperature offset with regards to Kelvin. Default is 273.15.
Definition at line 135 of file boundaryload.h.
Referenced by giveTemperOffset(), and initializeFrom().