OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::BoundaryLoad Class Referenceabstract

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>

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

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 FloatArraygiveComponentArray () 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 DofManagergiveInternalDofManager (int i)
 Gives an internal dof manager from receiver. More...
 
FunctiongiveTimeFunction ()
 
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 IntArraygiveDofIDs () 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
 
DomaingiveDomain () 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 InterfacegiveInterface (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...
 
Domaindomain
 Link to domain object, useful for communicating with other FEM components. More...
 

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

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

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 45 of file boundaryload.C.

Member Function Documentation

void oofem::BoundaryLoad::computeComponentArrayAt ( FloatArray answer,
TimeStep tStep,
ValueModeType  mode 
)
protectedvirtual

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

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

Reimplemented from oofem::Load.

Definition at line 50 of file boundaryload.C.

References oofem::Load::computeComponentArrayAt().

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::NeumannMomentLoad, oofem::ConstantSurfaceLoad, oofem::ConstantPressureLoad, oofem::LinearEdgeLoad, oofem::InteractionLoad, and oofem::ConstantEdgeLoad.

Referenced by computeValueAt().

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

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

double oofem::BoundaryLoad::giveProperty ( int  aProperty,
TimeStep tStep 
)
virtual

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 158 of file boundaryload.C.

References giveProperty().

double oofem::BoundaryLoad::giveTemperOffset ( void  )
virtual
virtual bcType oofem::BoundaryLoad::giveType ( ) const
inlinevirtual

Member Data Documentation

CoordSystType oofem::BoundaryLoad::coordSystemType
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.

bcType oofem::BoundaryLoad::lType
protected

Load type (its physical meaning).

Definition at line 127 of file boundaryload.h.

Referenced by giveInputRecord(), and initializeFrom().

Dictionary oofem::BoundaryLoad::propertyDictionary
protected

Additional b.c properties.

Definition at line 131 of file boundaryload.h.

Referenced by giveInputRecord(), giveProperty(), and initializeFrom().

Dictionary oofem::BoundaryLoad::propertyTimeFunctDictionary
protected

Optional time-functions for properties.

Definition at line 133 of file boundaryload.h.

Referenced by giveInputRecord(), giveProperty(), and initializeFrom().

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(), and initializeFrom().


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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:33 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011