The base class only declares itself as a base class of all boundary conditions, and declares only very basic services. It introduces 'loadTimeFunction' as an atrribute of each boundary condition. 'loadTimeFunction' represent time variation, its value is dependent on time step. The value (or the components) of a boundary condition (load) will be the product of its value by the value of the associated load time function at given time step. The meaning of boundary condition components is dependent on particular boundary condition type, and should be defined in derived classes documentation. This base class introduces also two general services for requesting boundary condition physical meaning and boundary condition geometrical character (pointwise, acting on element body or edge and so on).
Derived classes should represent the base classes for particular boundary condition type (like force load, or boundary condition prescribed directlly on some dof) and should declare the basic common interface. For example, the Load is derived from GeneralBoundaryCondition and represent base class for all load types. The following derived classes are provided by OOFEMlib
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 evalueated 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 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 appriximation 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 cooresponding "vertex values". Meaning of these values is load type 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 cooordinate 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.
To sumarize, the services provided include computing component array evaluated at specific point on boundary, returning component array of "vertex values", returning load appriximation order (usefull 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.).
Borek Patzak 2018-01-02