Base class for all spaces. More...
#include <space.h>
Inherited by H1Space, and HcurlSpace.
Classes | |
| struct | BaseEdgeComponent |
| struct | BaseFaceComponent |
| struct | BaseVertexComponent |
| struct | EdgeData |
| struct | ElementData |
| struct | FaceData |
| struct | FaceInfo |
| struct | NodeData |
| struct | VertexData |
Public Member Functions | |
| Space (Mesh *mesh, Shapeset *shapeset) | |
| virtual | ~Space () |
| virtual Space * | dup (Mesh *mesh) const =0 |
| ESpaceType | get_type () |
| void | set_bc_types (BCType(*bc_type_callback)(int marker)) |
| void | set_essential_bc_values (scalar(*bc_value_callback_by_coord)(int ess_bdy_marker, double x, double y, double z)) |
| void | set_essential_bc_values (scalar3 &(*bc_vec_value_callback_by_coord)(int ess_bdy_marker, double x, double y, double z)) |
| void | set_element_order (Word_t eid, order3_t order) |
| order3_t | get_element_order (Word_t eid) const |
| void | set_uniform_order (order3_t order) |
| void | copy_orders (const Space &space, int inc=0) |
| virtual void | enforce_minimum_rule () |
| virtual int | assign_dofs (int first_dof=0, int stride=1) |
| int | get_dof_count () const |
| int | get_max_dof () const |
| Shapeset * | get_shapeset () const |
| Mesh * | get_mesh () const |
| virtual void | get_element_assembly_list (Element *e, AsmList *al)=0 |
| virtual void | get_boundary_assembly_list (Element *e, int face, AsmList *al)=0 |
| void | dump () |
| bool | is_up_to_date () const |
| Returns true if the space is ready for computation, false otherwise. | |
Public Attributes | |
| BCType(* | bc_type_callback )(int) |
| scalar(* | bc_value_callback_by_coord )(int ess_bdy_marker, double x, double y, double z) |
| scalar3 &(* | bc_vec_value_callback_by_coord )(int ess_bdy_marker, double x, double y, double z) |
Protected Member Functions | |
| void | set_order_recurrent (Word_t eid, order3_t order) |
| Element node hash table. | |
| virtual int | get_vertex_ndofs ()=0 |
| virtual int | get_edge_ndofs (order1_t order)=0 |
| virtual int | get_face_ndofs (order2_t order)=0 |
| virtual int | get_element_ndofs (order3_t order)=0 |
| virtual void | assign_vertex_dofs (Word_t vid) |
| virtual void | assign_edge_dofs (Word_t eid) |
| virtual void | assign_face_dofs (Word_t fid) |
| virtual void | assign_bubble_dofs (Word_t eid) |
| virtual void | assign_dofs_internal ()=0 |
| virtual void | get_vertex_assembly_list (Element *e, int ivertex, AsmList *al) |
| virtual void | get_edge_assembly_list (Element *e, int iedge, AsmList *al) |
| virtual void | get_face_assembly_list (Element *e, int iface, AsmList *al) |
| virtual void | get_bubble_assembly_list (Element *e, AsmList *al) |
| virtual void | calc_boundary_projections () |
| virtual void | calc_vertex_boundary_projection (Element *elem, int ivertex)=0 |
| virtual void | calc_edge_boundary_projection (Element *elem, int iedge)=0 |
| virtual void | calc_face_boundary_projection (Element *elem, int iface)=0 |
| void | set_bc_info (NodeData *node, BCType bc, int marker) |
| void | set_bc_information () |
| void | copy_callbacks (const Space *space) |
| void | init_data_tables () |
| void | free_data_tables () |
| void | update_constraints () |
| void | find_constraints () |
| void | fc_base (Word_t eid, int iface) |
| void | fc_face (Word_t eid, int iface, bool ced) |
| void | fc_face_left (Word_t fid) |
| void | fc_face_right (Word_t fid) |
| void | fc_element (Word_t idx) |
| void | uc_element (Word_t idx) |
| void | uc_face (Word_t eid, int iface) |
| void | uc_dep (Word_t eid) |
| VertexData * | create_vertex_node_data (Word_t vid, bool ced) |
| EdgeData * | create_edge_node_data (Word_t eid, bool ced) |
| FaceData * | create_face_node_data (Word_t fid, bool ced) |
| void | output_component (BaseVertexComponent *¤t, BaseVertexComponent *&last, BaseVertexComponent *min, bool add) |
| void | output_component (BaseEdgeComponent *¤t, BaseEdgeComponent *&last, BaseEdgeComponent *min, bool add) |
| void | output_component (BaseFaceComponent *¤t, BaseFaceComponent *&last, BaseFaceComponent *min, bool add) |
| void | output_component_over (BaseFaceComponent *¤t, BaseFaceComponent *min, BaseFaceComponent *m) |
| BaseVertexComponent * | merge_baselist (BaseVertexComponent *l1, int n1, BaseVertexComponent *l2, int n2, int &ncomponents, bool add) |
| BaseEdgeComponent * | merge_baselist (BaseEdgeComponent *l1, int n1, BaseEdgeComponent *l2, int n2, int &ncomponents, bool add) |
| BaseFaceComponent * | merge_baselist (BaseFaceComponent *l1, int n1, BaseFaceComponent *l2, int n2, int &ncomponents, Word_t fid, bool add) |
| void | calc_vertex_vertex_ced (Word_t vtx1, Word_t vtx2) |
| void | calc_vertex_edge_ced (Word_t vtx, Word_t edge_id, int ori, int part) |
| void | calc_vertex_face_ced (Word_t vtx, Word_t fid, int ori, int iface, int hpart, int vpart) |
| void | calc_edge_edge_ced (Word_t seid, Word_t eid, int ori, int epart, int part) |
| void | calc_edge_face_ced (Word_t mid_eid, Word_t eid[], Word_t fid, int ori, int iface, int part_ori, int fpart, int epart) |
| void | calc_face_face_ced (Word_t sfid, Word_t fid, int ori, int hpart, int vpart) |
| void | calc_mid_vertex_vertex_ced (Word_t mid, Word_t vtx1, Word_t vtx2, Word_t vtx3, Word_t vtx4) |
| void | calc_mid_vertex_edge_ced (Word_t vtx, Word_t fmp, Word_t eid, int ori, int part) |
| void | calc_mid_edge_edge_ced (Word_t meid, Word_t eid[], int ori[], int epart, int part) |
| int | get_seq () const |
| Internal. Used by LinProblem to detect changes in the space. | |
Protected Attributes | |
| Mesh * | mesh |
| Shapeset * | shapeset |
| ESpaceType | type |
| int | first_dof |
| int | next_dof |
| int | first_bubble |
| int | stride |
| int | seq |
| int | mesh_seq |
| bool | was_assigned |
| ArrayPtr< VertexData > | vn_data |
| ArrayPtr< EdgeData > | en_data |
| Vertex node hash table. | |
| ArrayPtr< FaceData > | fn_data |
| Edge node hash table. | |
| ArrayPtr< ElementData > | elm_data |
| Face node hash table. | |
| BitArray | face_ced |
| BitArray | uc_deps |
| Array< FaceInfo * > | fi_data |
Friends | |
| class | DiscreteProblem |
| class | LinearProblem |
Base class for all spaces.
The Space class represents a finite element space over a domain defined by 'mesh', consisting of basis functions constructed using 'shapeset'.
| Space::~Space | ( | ) | [virtual] |
| void Space::assign_bubble_dofs | ( | Word_t | eid | ) | [protected, virtual] |
| int Space::assign_dofs | ( | int | first_dof = 0, |
|
| int | stride = 1 | |||
| ) | [virtual] |
| virtual void Space::assign_dofs_internal | ( | ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| void Space::assign_edge_dofs | ( | Word_t | eid | ) | [protected, virtual] |
| void Space::assign_face_dofs | ( | Word_t | fid | ) | [protected, virtual] |
| void Space::assign_vertex_dofs | ( | Word_t | vid | ) | [protected, virtual] |
| void Space::calc_boundary_projections | ( | ) | [protected, virtual] |
| virtual void Space::calc_edge_boundary_projection | ( | Element * | elem, | |
| int | iedge | |||
| ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| void Space::calc_edge_edge_ced | ( | Word_t | seid, | |
| Word_t | eid, | |||
| int | ori, | |||
| int | epart, | |||
| int | part | |||
| ) | [protected] |
| [in] | seid | - small edge id |
| [in] | eid | - big edge id |
| [in] | ori | - prt orientation |
| [in] | epart | - part of the edge |
| [in] | part | - part of the edge |
| void Space::calc_edge_face_ced | ( | Word_t | mid_eid, | |
| Word_t | eid[], | |||
| Word_t | fid, | |||
| int | ori, | |||
| int | iface, | |||
| int | part_ori, | |||
| int | fpart, | |||
| int | epart | |||
| ) | [protected] |
| [in] | eid | - edge id |
| [in] | fid | - constraining face id |
| [in] | ori | - orientation of the constraining face |
| [in] | part_ori | - part ori |
| [in] | fpart | - face part |
| [in] | epart | - edge part |
| virtual void Space::calc_face_boundary_projection | ( | Element * | elem, | |
| int | iface | |||
| ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| void Space::calc_face_face_ced | ( | Word_t | sfid, | |
| Word_t | fid, | |||
| int | ori, | |||
| int | hpart, | |||
| int | vpart | |||
| ) | [protected] |
| [in] | sfid | - small facet id (constrained) |
| [in] | fid | - constraining facet id |
| [in] | ori | - orientation of the constraining face |
| [in] | hpart | - horizontal part |
| [in] | vpart | - vertical part |
| void Space::calc_mid_edge_edge_ced | ( | Word_t | meid, | |
| Word_t | eid[], | |||
| int | ori[], | |||
| int | epart, | |||
| int | part | |||
| ) | [protected] |
| void Space::calc_mid_vertex_edge_ced | ( | Word_t | vtx, | |
| Word_t | fmp, | |||
| Word_t | eid, | |||
| int | ori, | |||
| int | part | |||
| ) | [protected] |
| void Space::calc_mid_vertex_vertex_ced | ( | Word_t | mid, | |
| Word_t | vtx1, | |||
| Word_t | vtx2, | |||
| Word_t | vtx3, | |||
| Word_t | vtx4 | |||
| ) | [protected] |
| [in] | vtx1 | - vertex 1 |
| [in] | vtx2 | - vertex 2 |
| virtual void Space::calc_vertex_boundary_projection | ( | Element * | elem, | |
| int | ivertex | |||
| ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| void Space::calc_vertex_edge_ced | ( | Word_t | vtx, | |
| Word_t | edge_id, | |||
| int | ori, | |||
| int | part | |||
| ) | [protected] |
| void Space::calc_vertex_face_ced | ( | Word_t | vtx, | |
| Word_t | fid, | |||
| int | ori, | |||
| int | iface, | |||
| int | hpart, | |||
| int | vpart | |||
| ) | [protected] |
| vtx | - id of the vertex node for which we calculate the constrain | |
| fid | - id of the constraining facet | |
| ori | - the orientation of the constraining facet |
| void Space::calc_vertex_vertex_ced | ( | Word_t | vtx1, | |
| Word_t | vtx2 | |||
| ) | [protected] |
| [in] | vtx1 | - vertex 1 |
| [in] | vtx2 | - vertex 2 |
| void Space::copy_callbacks | ( | const Space * | space | ) | [protected] |
| void Space::copy_orders | ( | const Space & | space, | |
| int | inc = 0 | |||
| ) |
| Space::EdgeData * Space::create_edge_node_data | ( | Word_t | eid, | |
| bool | ced | |||
| ) | [protected] |
| Space::FaceData * Space::create_face_node_data | ( | Word_t | fid, | |
| bool | ced | |||
| ) | [protected] |
| Space::VertexData * Space::create_vertex_node_data | ( | Word_t | vid, | |
| bool | ced | |||
| ) | [protected] |
| void Space::dump | ( | ) |
Implemented in H1Space, and HcurlSpace.
| void Space::enforce_minimum_rule | ( | ) | [virtual] |
| void Space::fc_base | ( | Word_t | eid, | |
| int | iface | |||
| ) | [protected] |
| void Space::fc_element | ( | Word_t | idx | ) | [protected] |
| [in] | idx | - ID of the element |
| void Space::fc_face | ( | Word_t | eid, | |
| int | iface, | |||
| bool | ced | |||
| ) | [protected] |
| [in] | eid | - ID of the element |
| [in] | iface | - local number of the face on the element eid |
| void Space::fc_face_left | ( | Word_t | fid | ) | [protected] |
| [in] | fid | - ID of the facet |
| void Space::fc_face_right | ( | Word_t | fid | ) | [protected] |
| [in] | fid | - ID of the facet |
| void Space::find_constraints | ( | ) | [protected] |
| void Space::free_data_tables | ( | ) | [protected] |
| virtual void Space::get_boundary_assembly_list | ( | Element * | e, | |
| int | face, | |||
| AsmList * | al | |||
| ) | [pure virtual] |
Implemented in H1Space, and HcurlSpace.
| int Space::get_dof_count | ( | ) | const [inline] |
| virtual int Space::get_edge_ndofs | ( | order1_t | order | ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
Implemented in H1Space, and HcurlSpace.
| virtual int Space::get_element_ndofs | ( | order3_t | order | ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| order3_t Space::get_element_order | ( | Word_t | eid | ) | const |
| virtual int Space::get_face_ndofs | ( | order2_t | order | ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| int Space::get_max_dof | ( | ) | const [inline] |
| Mesh* Space::get_mesh | ( | ) | const [inline] |
| int Space::get_seq | ( | ) | const [inline, protected] |
Internal. Used by LinProblem to detect changes in the space.
| Shapeset* Space::get_shapeset | ( | ) | const [inline] |
| ESpaceType Space::get_type | ( | ) | [inline] |
| void Space::get_vertex_assembly_list | ( | Element * | e, | |
| int | ivertex, | |||
| AsmList * | al | |||
| ) | [protected, virtual] |
| virtual int Space::get_vertex_ndofs | ( | ) | [protected, pure virtual] |
Implemented in H1Space, and HcurlSpace.
| void Space::init_data_tables | ( | ) | [protected] |
| bool Space::is_up_to_date | ( | ) | const [inline] |
Returns true if the space is ready for computation, false otherwise.
| Space::BaseFaceComponent * Space::merge_baselist | ( | BaseFaceComponent * | l1, | |
| int | n1, | |||
| BaseFaceComponent * | l2, | |||
| int | n2, | |||
| int & | ncomponents, | |||
| Word_t | fid, | |||
| bool | add | |||
| ) | [protected] |
| Space::BaseEdgeComponent * Space::merge_baselist | ( | BaseEdgeComponent * | l1, | |
| int | n1, | |||
| BaseEdgeComponent * | l2, | |||
| int | n2, | |||
| int & | ncomponents, | |||
| bool | add | |||
| ) | [protected] |
| Space::BaseVertexComponent * Space::merge_baselist | ( | BaseVertexComponent * | l1, | |
| int | n1, | |||
| BaseVertexComponent * | l2, | |||
| int | n2, | |||
| int & | ncomponents, | |||
| bool | add | |||
| ) | [protected] |
| void Space::output_component | ( | BaseFaceComponent *& | current, | |
| BaseFaceComponent *& | last, | |||
| BaseFaceComponent * | min, | |||
| bool | add | |||
| ) | [inline, protected] |
| void Space::output_component | ( | BaseEdgeComponent *& | current, | |
| BaseEdgeComponent *& | last, | |||
| BaseEdgeComponent * | min, | |||
| bool | add | |||
| ) | [inline, protected] |
| void Space::output_component | ( | BaseVertexComponent *& | current, | |
| BaseVertexComponent *& | last, | |||
| BaseVertexComponent * | min, | |||
| bool | add | |||
| ) | [inline, protected] |
| void Space::output_component_over | ( | BaseFaceComponent *& | current, | |
| BaseFaceComponent * | min, | |||
| BaseFaceComponent * | m | |||
| ) | [inline, protected] |
| void Space::set_bc_information | ( | ) | [protected] |
| void Space::set_bc_types | ( | BCType(*)(int marker) | bc_type_callback | ) |
| void Space::set_element_order | ( | Word_t | eid, | |
| order3_t | order | |||
| ) |
| void Space::set_essential_bc_values | ( | scalar3 &(*)(int ess_bdy_marker, double x, double y, double z) | bc_vec_value_callback_by_coord | ) |
| void Space::set_essential_bc_values | ( | scalar(*)(int ess_bdy_marker, double x, double y, double z) | bc_value_callback_by_coord | ) |
| void Space::set_uniform_order | ( | order3_t | order | ) |
| void Space::uc_dep | ( | Word_t | eid | ) | [protected] |
| void Space::uc_element | ( | Word_t | idx | ) | [protected] |
| void Space::uc_face | ( | Word_t | eid, | |
| int | iface | |||
| ) | [protected] |
| void Space::update_constraints | ( | ) | [protected] |
friend class DiscreteProblem [friend] |
friend class LinearProblem [friend] |
| BCType(* Space::bc_type_callback)(int) |
| scalar(* Space::bc_value_callback_by_coord)(int ess_bdy_marker, double x, double y, double z) |
| scalar3&(* Space::bc_vec_value_callback_by_coord)(int ess_bdy_marker, double x, double y, double z) |
ArrayPtr<ElementData> Space::elm_data [protected] |
Face node hash table.
ArrayPtr<EdgeData> Space::en_data [protected] |
Vertex node hash table.
BitArray Space::face_ced [protected] |
Array<FaceInfo *> Space::fi_data [protected] |
int Space::first_bubble [protected] |
int Space::first_dof [protected] |
ArrayPtr<FaceData> Space::fn_data [protected] |
Edge node hash table.
Mesh* Space::mesh [protected] |
int Space::mesh_seq [protected] |
int Space::next_dof [protected] |
int Space::seq [protected] |
Shapeset* Space::shapeset [protected] |
int Space::stride [protected] |
ESpaceType Space::type [protected] |
BitArray Space::uc_deps [protected] |
ArrayPtr<VertexData> Space::vn_data [protected] |
bool Space::was_assigned [protected] |
1.6.3