.\" .de Id .. .de Sp .if n .sp .if t .sp 0.4 .. .TH geo 2rheolef "rheolef-6.5" "rheolef-6.5" "rheolef-6.5" .\" label: /*Class:geo .SH NAME \fBgeo\fP - finite element mesh (rheolef-6.5) .SH SYNOPSYS Distributed finite element mesh. .\" skip start:SEE ALSO: .\" skip start:AUTHORS: .\" skip start:DATE: .\" END .SH IMPLEMENTATION .\" begin_example .Sp .nf template class geo_basic : public smart_pointer_clone > { public: // typedefs: typedef sequential memory_type; typedef geo_abstract_rep rep; typedef geo_rep rep_geo_rep; typedef smart_pointer_clone base; typedef typename rep::size_type size_type; typedef typename rep::node_type node_type; typedef typename rep::variant_type variant_type; typedef typename rep::reference reference; typedef typename rep::const_reference const_reference; typedef typename rep::iterator iterator; typedef typename rep::const_iterator const_iterator; typedef typename rep::iterator_by_variant iterator_by_variant; typedef typename rep::const_iterator_by_variant const_iterator_by_variant; typedef typename rep::coordinate_type coordinate_type; // allocators: geo_basic (); geo_basic (std::string name, const communicator& comm = communicator()); void load (std::string name, const communicator& comm = communicator()); geo_basic (const domain_indirect_basic& dom, const geo_basic& omega); // build from_list (for level set) geo_basic ( const geo_basic& lambda, const array,sequential>& node_list, const boost::array >,sequential>, reference_element::max_variant>& elt_list) : base (new_macro(rep_geo_rep(lambda,node_list,elt_list))) {} // accessors: std::string name() const { return base::data().name(); } std::string familyname() const { return base::data().familyname(); } size_type dimension() const { return base::data().dimension(); } size_type map_dimension() const { return base::data().map_dimension(); } size_type serial_number() const { return base::data().serial_number(); } size_type variant() const { return base::data().variant(); } coordinate_type coordinate_system() const { return base::data().coordinate_system(); } std::string coordinate_system_name() const { return space_constant::coordinate_system_name(coordinate_system()); } const basis_basic& get_piola_basis() const { return base::data().get_piola_basis(); } size_type order() const { return base::data().get_piola_basis().degree(); } const node_type& xmin() const { return base::data().xmin(); } const node_type& xmax() const { return base::data().xmax(); } const distributor& geo_element_ownership(size_type dim) const { return base::data().geo_element_ownership(dim); } const geo_size& sizes() const { return base::data().sizes(); } const geo_size& ios_sizes() const { return base::data().ios_sizes(); } const_reference get_geo_element (size_type dim, size_type ige) const { return base::data().get_geo_element (dim, ige); } reference get_geo_element (size_type dim, size_type ige) { return base::data().get_geo_element (dim, ige); } const_reference dis_get_geo_element (size_type dim, size_type dis_ige) const { return get_geo_element (dim, dis_ige); } const geo_element& bgd2dom_geo_element (const geo_element& bgd_K) const { return base::data().bgd2dom_geo_element (bgd_K); } const geo_element& dom2bgd_geo_element (const geo_element& dom_K) const { return base::data().dom2bgd_geo_element (dom_K); } size_type neighbour (size_type ie, size_type loc_isid) const { return base::data().neighbour (ie, loc_isid); } void neighbour_guard() const { base::data().neighbour_guard(); } size_type n_node() const { return base::data().n_node(); } const node_type& node(size_type inod) const { return base::data().node(inod); } const node_type& dis_node(size_type dis_inod) const { return base::data().dis_node(dis_inod); } void dis_inod (const geo_element& K, std::vector& dis_inod) const { return base::data().dis_inod(K,dis_inod); } node_type piola (const geo_element& K, const node_type& hat_x) const { return base::data().piola (K, hat_x); } const array& get_nodes() const { return base::data().get_nodes(); } size_type dis_inod2dis_iv (size_type dis_inod) const { return base::data().dis_inod2dis_iv(dis_inod); } size_type n_domain_indirect () const { return base::data().n_domain_indirect (); } bool have_domain_indirect (const std::string& name) const { return base::data().have_domain_indirect (name); } const domain_indirect_basic& get_domain_indirect (size_type i) const { return base::data().get_domain_indirect (i); } const domain_indirect_basic& get_domain_indirect (const std::string& name) const { return base::data().get_domain_indirect (name); } void insert_domain_indirect (const domain_indirect_basic& dom) const { base::data().insert_domain_indirect (dom); } size_type n_domain () const { return base::data().n_domain_indirect (); } geo_basic get_domain (size_type i) const; geo_basic operator[] (const std::string& name) const; geo_basic boundary() const; geo_basic internal_sides() const; geo_basic sides() const; size_type seq_locate ( const point_basic& x, size_type dis_ie_guest = std::numeric_limits::max()) const { return base::data().seq_locate (x, dis_ie_guest); } size_type dis_locate ( const point_basic& x, size_type dis_ie_guest = std::numeric_limits::max()) const { return base::data().dis_locate (x, dis_ie_guest); } void locate ( const array, sequential>& x, array& dis_ie) const { return base::data().locate (x, dis_ie); } size_type seq_trace_move ( const point_basic& x, const point_basic& v, point_basic& y) const { return base::data().seq_trace_move (x,v,y); } size_type dis_trace_move ( const point_basic& x, const point_basic& v, point_basic& y) const { return base::data().dis_trace_move (x,v,y); } void trace_ray_boundary ( const array,sequential>& x, const array,sequential>& v, array& dis_ie, array,sequential>& y) const { return base::data().trace_ray_boundary (x,v,dis_ie,y); } void trace_move ( const array,sequential>& x, const array,sequential>& v, array& dis_ie, array,sequential>& y) const { return base::data().trace_move (x,v,dis_ie,y); } // modifiers: void set_name (std::string name); void set_dimension (size_type dim); void set_serial_number (size_type i); void reset_order (size_type order); void set_coordinate_system (coordinate_type sys_coord); void set_coordinate_system (std::string sys_coord_name) { set_coordinate_system (space_constant::coordinate_system(sys_coord_name)); } void set_nodes (const array& x); void build_from_data ( const geo_header& hdr, const array& node, boost::array >,sequential, heap_allocator >, reference_element::max_variant>& tmp_geo_element, bool do_upgrade); // extended accessors: const communicator& comm() const { return geo_element_ownership (0).comm(); } size_type size(size_type dim) const { return base::data().geo_element_ownership(dim).size(); } size_type dis_size(size_type dim) const { return base::data().geo_element_ownership(dim).dis_size(); } size_type size() const { return size (map_dimension()); } size_type dis_size() const { return dis_size (map_dimension()); } size_type n_vertex() const { return size (0); } size_type dis_n_vertex() const { return dis_size (0); } const_reference operator[] (size_type ie) const { return get_geo_element (map_dimension(), ie); } reference operator[] (size_type ie) { return get_geo_element (map_dimension(), ie); } const_iterator begin (size_type dim) const { return base::data().begin(dim); } const_iterator end (size_type dim) const { return base::data().end (dim); } const_iterator begin () const { return begin(map_dimension()); } const_iterator end () const { return end (map_dimension()); } const_iterator_by_variant begin_by_variant (variant_type variant) const { return base::data().begin_by_variant (variant); } const_iterator_by_variant end_by_variant (variant_type variant) const { return base::data(). end_by_variant (variant); } const geo_basic& get_background_geo() const; // code in geo_domain.h geo_basic get_background_domain() const; // for compatibility with distributed interface: size_type ige2ios_dis_ige (size_type dim, size_type ige) const { return ige; } size_type dis_ige2ios_dis_ige (size_type dim, size_type dis_ige) const { return dis_ige; } size_type ios_ige2dis_ige (size_type dim, size_type ios_ige) const { return ios_ige; } // comparator: bool operator== (const geo_basic& omega2) const { return base::data().operator== (omega2.data()); } // i/o: idiststream& get (idiststream& ips); odiststream& put (odiststream& ops) const; void save (std::string filename = "") const; void dump (std::string name) const { base::data().dump (name); } bool check (bool verbose = true) const { return base::data().check(verbose); } }; .Sp .fi .\" end_example .SH IMPLEMENTATION .\" begin_example .Sp .nf template class geo_basic : public smart_pointer_clone > { public: // typedefs: typedef distributed memory_type; typedef geo_abstract_rep rep; typedef geo_rep rep_geo_rep; typedef smart_pointer_clone base; typedef typename rep::size_type size_type; typedef typename rep::node_type node_type; typedef typename rep::variant_type variant_type; typedef typename rep::node_map_type node_map_type; typedef typename rep::reference reference; typedef typename rep::const_reference const_reference; typedef typename rep::iterator iterator; typedef typename rep::const_iterator const_iterator; typedef typename rep::iterator_by_variant iterator_by_variant; typedef typename rep::const_iterator_by_variant const_iterator_by_variant; typedef typename rep::coordinate_type coordinate_type; // allocators: geo_basic (); geo_basic (std::string name, const communicator& comm = communicator()); void load (std::string name, const communicator& comm = communicator()); geo_basic (const domain_indirect_basic& dom, const geo_basic& omega); // build from_list (for level set) geo_basic ( const geo_basic& lambda, const array,distributed>& node_list, const boost::array >,distributed>, reference_element::max_variant>& elt_list) : base (new_macro(rep_geo_rep(lambda,node_list,elt_list))) {} // accessors: std::string name() const { return base::data().name(); } std::string familyname() const { return base::data().familyname(); } size_type dimension() const { return base::data().dimension(); } size_type map_dimension() const { return base::data().map_dimension(); } size_type serial_number() const { return base::data().serial_number(); } size_type variant() const { return base::data().variant(); } coordinate_type coordinate_system() const { return base::data().coordinate_system(); } std::string coordinate_system_name() const { return space_constant::coordinate_system_name(coordinate_system()); } const basis_basic& get_piola_basis() const { return base::data().get_piola_basis(); } size_type order() const { return base::data().get_piola_basis().degree(); } const node_type& xmin() const { return base::data().xmin(); } const node_type& xmax() const { return base::data().xmax(); } const distributor& geo_element_ownership(size_type dim) const { return base::data().geo_element_ownership (dim); } const geo_size& sizes() const { return base::data().sizes(); } const geo_size& ios_sizes() const { return base::data().ios_sizes(); } const_reference get_geo_element (size_type dim, size_type ige) const { return base::data().get_geo_element (dim, ige); } const_reference dis_get_geo_element (size_type dim, size_type dis_ige) const { return base::data().dis_get_geo_element (dim, dis_ige); } const geo_element& bgd2dom_geo_element (const geo_element& bgd_K) const { return base::data().bgd2dom_geo_element (bgd_K); } const geo_element& dom2bgd_geo_element (const geo_element& dom_K) const { return base::data().dom2bgd_geo_element (dom_K); } size_type neighbour (size_type ie, size_type loc_isid) const { return base::data().neighbour (ie, loc_isid); } void neighbour_guard() const { base::data().neighbour_guard(); } distributor geo_element_ios_ownership (size_type dim) const { return base::data().geo_element_ios_ownership (dim); } size_type ige2ios_dis_ige (size_type dim, size_type ige) const { return base::data().ige2ios_dis_ige (dim,ige); } size_type dis_ige2ios_dis_ige (size_type dim, size_type dis_ige) const { return base::data().dis_ige2ios_dis_ige (dim,dis_ige); } size_type ios_ige2dis_ige (size_type dim, size_type ios_ige) const { return base::data().ios_ige2dis_ige (dim, ios_ige); } size_type n_node() const { return base::data().n_node(); } const node_type& node(size_type inod) const { return base::data().node(inod); } const node_type& dis_node(size_type dis_inod) const { return base::data().dis_node(dis_inod); } void dis_inod (const geo_element& K, std::vector& dis_inod) const { return base::data().dis_inod(K,dis_inod); } node_type piola (const geo_element& K, const node_type& hat_x) const { return base::data().piola (K, hat_x); } const array& get_nodes() const { return base::data().get_nodes(); } void set_nodes (const array& x); void reset_order (size_type order); size_type dis_inod2dis_iv (size_type dis_inod) const { return base::data().dis_inod2dis_iv(dis_inod); } void set_coordinate_system (coordinate_type sys_coord); void set_coordinate_system (std::string sys_coord_name) { set_coordinate_system (space_constant::coordinate_system(sys_coord_name)); } void set_dimension (size_type dim); void set_serial_number (size_type i); void set_name (std::string name); size_type n_domain_indirect () const { return base::data().n_domain_indirect (); } bool have_domain_indirect (const std::string& name) const { return base::data().have_domain_indirect (name); } const domain_indirect_basic& get_domain_indirect (size_type i) const { return base::data().get_domain_indirect (i); } const domain_indirect_basic& get_domain_indirect (const std::string& name) const { return base::data().get_domain_indirect (name); } void insert_domain_indirect (const domain_indirect_basic& dom) const { base::data().insert_domain_indirect (dom); } size_type n_domain () const { return base::data().n_domain_indirect (); } geo_basic get_domain (size_type i) const; geo_basic operator[] (const std::string& name) const; geo_basic boundary() const; geo_basic internal_sides() const; geo_basic sides() const; size_type seq_locate ( const point_basic& x, size_type dis_ie_guest = std::numeric_limits::max()) const { return base::data().seq_locate (x, dis_ie_guest); } size_type dis_locate ( const point_basic& x, size_type dis_ie_guest = std::numeric_limits::max()) const { return base::data().dis_locate (x, dis_ie_guest); } void locate (const array, distributed>& x, array& dis_ie) const { return base::data().locate (x, dis_ie); } size_type seq_trace_move ( const point_basic& x, const point_basic& v, point_basic& y) const { return base::data().seq_trace_move (x,v,y); } size_type dis_trace_move ( const point_basic& x, const point_basic& v, point_basic& y) const { return base::data().dis_trace_move (x,v,y); } void trace_ray_boundary ( const array,distributed>& x, const array,distributed>& v, array& dis_ie, array,distributed>& y) const { return base::data().trace_ray_boundary (x,v,dis_ie,y); } void trace_move ( const array,distributed>& x, const array,distributed>& v, array& dis_ie, array,distributed>& y) const { return base::data().trace_move (x,v,dis_ie,y); } // extended accessors: size_type size(size_type dim) const { return base::data().geo_element_ownership(dim).size(); } size_type dis_size(size_type dim) const { return base::data().geo_element_ownership(dim).dis_size(); } const communicator& comm() const { return geo_element_ownership (0).comm(); } size_type size() const { return size (map_dimension()); } size_type dis_size() const { return dis_size (map_dimension()); } size_type n_vertex() const { return size (0); } const_reference operator[] (size_type ie) const { return get_geo_element (map_dimension(), ie); } const_iterator begin (size_type dim) const { return base::data().begin(dim); } const_iterator end (size_type dim) const { return base::data().end (dim); } const_iterator begin () const { return begin(map_dimension()); } const_iterator end () const { return end (map_dimension()); } const_iterator_by_variant begin_by_variant (variant_type variant) const { return base::data().begin_by_variant (variant); } const_iterator_by_variant end_by_variant (variant_type variant) const { return base::data(). end_by_variant (variant); } const geo_basic& get_background_geo() const; // code in geo_domain.h geo_basic get_background_domain() const; // comparator: bool operator== (const geo_basic& omega2) const { return base::data().operator== (omega2.data()); } // i/o: odiststream& put (odiststream& ops) const { return base::data().put (ops); } idiststream& get (idiststream& ips); void save (std::string filename = "") const; bool check (bool verbose = true) const { return base::data().check(verbose); } // utilities: void set_ios_permutation ( boost::array& loc_ndof_by_variant, array& idof2ios_dis_idof) const { base::data().set_ios_permutation (loc_ndof_by_variant, idof2ios_dis_idof); } }; .Sp .fi .\" end_example