Space Class Reference
[Spaces]

Base class for all spaces. More...

#include <space.h>

Inherited by H1Space, and HcurlSpace.

List of all members.

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 Spacedup (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
Shapesetget_shapeset () const
Meshget_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)
VertexDatacreate_vertex_node_data (Word_t vid, bool ced)
EdgeDatacreate_edge_node_data (Word_t eid, bool ced)
FaceDatacreate_face_node_data (Word_t fid, bool ced)
void output_component (BaseVertexComponent *&current, BaseVertexComponent *&last, BaseVertexComponent *min, bool add)
void output_component (BaseEdgeComponent *&current, BaseEdgeComponent *&last, BaseEdgeComponent *min, bool add)
void output_component (BaseFaceComponent *&current, BaseFaceComponent *&last, BaseFaceComponent *min, bool add)
void output_component_over (BaseFaceComponent *&current, BaseFaceComponent *min, BaseFaceComponent *m)
BaseVertexComponentmerge_baselist (BaseVertexComponent *l1, int n1, BaseVertexComponent *l2, int n2, int &ncomponents, bool add)
BaseEdgeComponentmerge_baselist (BaseEdgeComponent *l1, int n1, BaseEdgeComponent *l2, int n2, int &ncomponents, bool add)
BaseFaceComponentmerge_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

Meshmesh
Shapesetshapeset
ESpaceType type
int first_dof
int next_dof
int first_bubble
int stride
int seq
int mesh_seq
bool was_assigned
ArrayPtr< VertexDatavn_data
ArrayPtr< EdgeDataen_data
 Vertex node hash table.
ArrayPtr< FaceDatafn_data
 Edge node hash table.
ArrayPtr< ElementDataelm_data
 Face node hash table.
BitArray face_ced
BitArray uc_deps
Array< FaceInfo * > fi_data

Friends

class DiscreteProblem
class LinearProblem

Detailed Description

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'.


Constructor & Destructor Documentation

Space::Space ( Mesh mesh,
Shapeset shapeset 
)
Space::~Space (  )  [virtual]

Member Function Documentation

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]
Parameters:
[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]
Parameters:
[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]
Parameters:
[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]
Parameters:
[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]
Parameters:
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]
Parameters:
[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 (  ) 
virtual Space* Space::dup ( Mesh mesh  )  const [pure virtual]

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]
Parameters:
[in] idx - ID of the element
void Space::fc_face ( Word_t  eid,
int  iface,
bool  ced 
) [protected]
Parameters:
[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]
Parameters:
[in] fid - ID of the facet
void Space::fc_face_right ( Word_t  fid  )  [protected]
Parameters:
[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.

void Space::get_bubble_assembly_list ( Element e,
AsmList al 
) [protected, virtual]
int Space::get_dof_count (  )  const [inline]
void Space::get_edge_assembly_list ( Element e,
int  iedge,
AsmList al 
) [protected, virtual]
virtual int Space::get_edge_ndofs ( order1_t  order  )  [protected, pure virtual]

Implemented in H1Space, and HcurlSpace.

virtual void Space::get_element_assembly_list ( Element e,
AsmList al 
) [pure virtual]

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
void Space::get_face_assembly_list ( Element e,
int  iface,
AsmList al 
) [protected, virtual]
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_info ( NodeData node,
BCType  bc,
int  marker 
) [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_order_recurrent ( Word_t  eid,
order3_t  order 
) [protected]

Element node hash table.

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]

Friends And Related Function Documentation

friend class DiscreteProblem [friend]
friend class LinearProblem [friend]

Member Data Documentation

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]

The documentation for this class was generated from the following files:
Generated on Fri Sep 3 09:22:20 2010 for Hermes3D Library: Real Version by  doxygen 1.6.3