OOFEM 3.0
Loading...
Searching...
No Matches
oofem::BoundaryLoad Class Referenceabstract

#include <boundaryload.h>

Inheritance diagram for oofem::BoundaryLoad:
Collaboration diagram for oofem::BoundaryLoad:

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 FloatArraygiveComponentArray () 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 DofManagergiveInternalDofManager (int i)
 Gives an internal dof manager from receiver.
FunctiongiveTimeFunction ()
int getIsImposedTimeFunctionNumber () const
void setIsImposedTimeFunctionNumber (int funcIndx)
virtual bcValType giveBCValType () const
virtual bool isImposed (TimeStep *tStep)
virtual const IntArraygiveDofIDs () 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
DomaingiveDomain () 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 InterfacegiveInterface (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.
Domaindomain
 Link to domain object, useful for communicating with other FEM components.

Detailed Description

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

  • Computing component array evaluated at specific point on boundary.
  • Returning component array of "vertex values". Meaning of these values is class dependent, see derived classes documentation for details. "vertexes" can generally differ from element nodes.
  • Returning load approximation order. Useful when numerical integrations of load vector over element boundaries are used.
  • Returning type of coordinate system, in which load applies. (global c.s., or entity related c.s.).
  • Returning number of load approximation DOFs, which represent its geometry. (number of DOFs is also size of load component array attribute and should correspond to number of DOFs on loaded entity).

Definition at line 110 of file boundaryload.h.

Member Enumeration Documentation

◆ BL_CoordSystType

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.

Constructor & Destructor Documentation

◆ BoundaryLoad()

oofem::BoundaryLoad::BoundaryLoad ( int i,
Domain * d )

Constructor. Creates a boundary load object with given number, belonging to given domain.

Parameters
iLoad number.
dDomain to which new object will belongs.

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

Member Function Documentation

◆ computeComponentArrayAt()

void oofem::BoundaryLoad::computeComponentArrayAt ( FloatArray & answer,
TimeStep * tStep,
ValueModeType mode )
overrideprotectedvirtual

Returns array of load "vertex" values evaluated at given time.

Parameters
answerLoad "vertex" values.
tStepTime step.
modeDetermines response mode.

Reimplemented from oofem::Load.

Reimplemented in oofem::UsrDefBoundaryLoad.

Definition at line 52 of file boundaryload.C.

Referenced by computeNArray().

◆ computeNArray()

virtual void oofem::BoundaryLoad::computeNArray ( FloatArray & answer,
const FloatArray & coords ) const
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.

Parameters
answerApproximation vector.
coordsGlobal 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().

◆ computeValueAt()

void oofem::BoundaryLoad::computeValueAt ( FloatArray & answer,
TimeStep * tStep,
const FloatArray & coords,
ValueModeType mode )
overridevirtual

Computes components values of load at given point - global coordinates (coordinates given).

Parameters
answerComponent values at given point and time.
tStepTime step representing time.
coordsGlobal (or local) problem coordinates, which are used to evaluate components values.
modeDetermines 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().

◆ giveApproxOrder()

int oofem::BoundaryLoad::giveApproxOrder ( )
overridepure virtual
Returns
Approximation order of load geometry.

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

◆ giveCoordSystMode()

◆ giveInputRecord()

◆ giveProperty() [1/2]

double oofem::BoundaryLoad::giveProperty ( int aProperty,
TimeStep * tStep ) const
overridevirtual

Returns the value of a property 'aProperty'. Property must be identified by unique integer id.

Parameters
aPropertyid of property requested
Returns
property value

Reimplemented from oofem::Load.

Definition at line 153 of file boundaryload.C.

References giveProperty().

◆ giveProperty() [2/2]

◆ giveTemperOffset()

double oofem::BoundaryLoad::giveTemperOffset ( void )
virtual

◆ giveType()

◆ initializeFrom()

void oofem::BoundaryLoad::initializeFrom ( InputRecord & ir)
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.

◆ restoreContext()

void oofem::BoundaryLoad::restoreContext ( DataStream & stream,
ContextMode mode )
overrideprotectedvirtual

Restores the receiver state previously written in stream.

See also
saveContext
Parameters
streamInput stream.
modeDetermines amount of info available in stream (state, definition, ...).
Exceptions
throwsan 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().

◆ saveContext()

void oofem::BoundaryLoad::saveContext ( DataStream & stream,
ContextMode mode )
overrideprotectedvirtual

Stores receiver state to output stream.

Parameters
streamOutput stream.
modeDetermines amount of info required in stream (state, definition, ...).
Exceptions
throwsan 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().

Member Data Documentation

◆ coordSystemType

CoordSystType oofem::BoundaryLoad::coordSystemType
protected

◆ CST_UpdatedGlobal

CoordSystType oofem::BoundaryLoad::CST_UpdatedGlobal

Definition at line 113 of file boundaryload.h.

◆ lType

bcType oofem::BoundaryLoad::lType
protected

◆ propertyDictionary

Dictionary oofem::BoundaryLoad::propertyDictionary
protected

◆ propertyMultExpr

◆ propertyTimeFunctDictionary

Dictionary oofem::BoundaryLoad::propertyTimeFunctDictionary
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().

◆ temperOffset

double oofem::BoundaryLoad::temperOffset
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().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011