#include "b2domain.H"
Classes | |
struct | AdjacentElement |
class | ElementIterator |
class | NodeIterator |
Initialization | |
virtual void | set_model (Model &model)=0 |
virtual void | set_case (Case &case_)=0 |
virtual void | set_subcase_id (const int subcase_id_)=0 |
General information | |
virtual size_t | get_number_of_dof () const =0 |
virtual size_t | get_number_of_elements () const =0 |
virtual size_t | get_number_of_elements_and_subelements () const =0 |
virtual size_t | get_number_of_nodes () const =0 |
virtual const std::vector< Element::VariableInfo > | get_value_info () const =0 |
virtual b2linalg::SparseMatrixConnectivityType | get_dof_connectivity_type () const =0 |
virtual bool | have_temperature () const =0 |
Nodes and elements | |
virtual node_iterator | get_node_iterator ()=0 |
template<typename T > | |
const T * | get_node_local_referential (const Node &node) const |
virtual const double * | get_node_local_referential_double (const Node &node) const =0 |
virtual const b2000::csda< double > * | get_node_local_referential_csda (const Node &node) const =0 |
virtual Node * | get_node (const std::string &node_name) |
virtual void | get_slave_node (std::vector< std::pair< const Node *, const Node * > > &slave_node)=0 |
virtual element_iterator | get_element_iterator ()=0 |
virtual Element * | get_element (const std::string &element_name) |
Adjacent and neighbouring elements | |
virtual void | get_adjacent_elements (const Node *node, std::vector< AdjacentElement > &adjacent_elements) |
virtual void | get_adjacent_elements (std::pair< int, const Node *const * > node_list, std::vector< AdjacentElement > &adjacent_elements)=0 |
virtual void | get_elements_of_same_type_near (const Element *e, double dist, std::vector< Element * > &element_list)=0 |
Restart | |
To implement re-start of an FE analysis, in addition to the solution vector, the state of the FE domain must be saved in the preceding analysis and re-loaded upon re-start. The state of an FE domain comprises the states of all path-dependent Element and ElementProperty instances. To allow the saving of and re-starting from different states, the states are distinguished by their ID. | |
virtual void | save_state (const std::string &state_id)=0 |
virtual void | load_state (const std::string &state_id)=0 |
virtual void | save_field (const std::string &name_id, const b2linalg::Vector< double, b2linalg::Vdense_constref > &dof)=0 |
virtual void | save_field (const std::string &name_id, const b2linalg::Vector< b2000::csda< double >, b2linalg::Vdense_constref > &dof)=0 |
virtual void | save_field (const std::string &name_id, const b2linalg::Vector< std::complex< double >, b2linalg::Vdense_constref > &dof)=0 |
Multiscale analysis | |
Functions used in multiscale analysis where a (local) domain overlaps with a parent (global) domain. | |
virtual Element * | get_parent_element_and_nodes_mapping (Domain &parent_domain, const Element &element, b2linalg::Matrix< double > &parent_nodes_internal_coor) |
virtual Element * | get_parent_element_mapping (Domain &parent_domain, const Node &node, b2linalg::Vector< double > &parent_internal_coor) |
std::vector< std::reference_wrapper< Element > > & | GetElementContainer () |
Return private member domain_element_container_ holding all elements of this domain. | |
void | FillElementContainer () |
Fill domain_element_container_ with all elements of this domain. | |
Additional Inherited Members | |
![]() | |
virtual const std::string & | get_object_name () const |
virtual | ~Object () |
![]() | |
static ObjectType | type |
Interface for C++ representations of a domain that is discretized by Finite Elements.
The Domain instance is created and owned by the Model instance. The number of functions of the Domain interface is quite large, but many of the functions are specific to certain kinds of analyses like adaptive refinement or contact analysis. The minimum functionality that a Domain class must provide in order to work in conjunction with a Solver instance is:
|
inline |
Fill domain_element_container_ with all elements of this domain.
|
inlinevirtual |
|
pure virtual |
Get the list of elements that are adjacent to all the Node instances given as argument.
node_list | A pair (first, second) with first being the number of nodes and second a pointer to an array of Node pointers (input). |
adjacent_elements | A vector of containing information on adjacent elements. Each entry corresponds to one Element. |
The AdjacentElement::internal_node_id_list contains the node-internal ID's of the nodes given in node_list that
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
virtual |
Reimplemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Get the list of elements near a given element and of the same type. This function is useful e.g. for contact overlay elements.
e | A pointer to the Element instance (input). |
dist | The maximum search distance (input). |
element_list | A vector of pointers to Element instances (output). |
The list of returned elements contains all elements of the same type as Element e, and for with the distance with e is less or equal dist. The list may also contain some elements whose distance to e is slightly larger than dist.
Implemented in b2000::b2dbv3::Domain.
|
virtual |
Reimplemented in b2000::b2dbv3::Domain.
|
pure virtual |
Return a std::unique_ptr to NodeIterator to iterate over all nodes of the FE domain.
Implemented in b2000::b2dbv3::Domain.
|
inline |
This function is utilized by elements etc. to obtain node-local reference frames (coordinate systems).
|
pure virtual |
Must be overwritten by implementations of Domain.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Must be overwritten by implementations of Domain.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
inlinevirtual |
Get the Element of the parent domain containing an element belonging to this domain (the local domain).
parent_domain | The parent domain to search. |
element | The Element instance of the this domain (= the local element). |
parent_nodes_internal_coor | The element-internal coordinates of the local element inside the parent element. |
Reimplemented in b2000::b2dbv3::Domain.
|
inlinevirtual |
Get the first Element of the parent domain containing a node belonging to this domain (the local domain.
parent_domain | The parent domain to search. |
parent_domain | The parent domain to search. |
node | The Node instance of the this domain (= the local node). |
parent_internal_coor | The element-internal coordinates of the local node inside the parent element. |
Reimplemented in b2000::b2dbv3::Domain.
|
pure virtual |
In a domain, coinciding nodes of different branches may be merged together. In this case, one of the nodes becomes the master node and the other node becomes the slave node.
slave_node | A vector of (slave,master) pairs of pointers to Node instances (output). |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Implemented in b2000::b2dbv3::Domain.
|
inline |
Return private member domain_element_container_ holding all elements of this domain.
|
pure virtual |
Whether temperature conditions affecting the right-hand side through the element response (thermal expansion) are present for the current case and subcase.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Load the state of the FE domain with the identifier state_id. This function is called by the Solver instance upon restart.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Save a csda-valued field defined on all degrees-of-freedom. This function is called by the Solver instance.
name_id | The name of the field. |
dof | A vector containing values for all degrees-of-freedom present in the FE domain. |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Save a real-valued field defined on all degrees-of-freedom. This function is called by the Solver instance. Such fields may be, e.g. for stress analysis, the displacement field ("DISP"), or the field containing the summed-up internal forces ("RCFO").
name_id | The name of the field. |
dof | A vector containing values for all degrees-of-freedom present in the FE domain. |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Save a complex-valued field defined on all degrees-of-freedom. This function is called by the Solver instance.
name_id | The name of the field. |
dof | A vector containing values for all degrees-of-freedom present in the FE domain. |
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Save the state of the FE domain with the identifier state_id. This function is called by the Solver instance.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Set the current Case instance. This function is called by the Model instance.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Set a reference to the Model instance. This function is called by the Model instance.
Implemented in b2000::b2dbv3::Domain.
|
pure virtual |
Set the subcase ID.
Implemented in b2000::b2dbv3::Domain.