.\" .de Id .. .de Sp .if n .sp .if t .sp 0.4 .. .TH domain_indirect 7rheolef "rheolef-6.5" "rheolef-6.5" "rheolef-6.5" .\" label: /*Class:domain_indirect .SH NAME \fBdomain_indirect\fP - a named part of a finite element mesh .\" skip: @cindex mesh boundary .\" skip: @clindex domain_indirect .SH DESCRIPTION The \fBdomain_indirect\fP class defines a container for a part of a finite element mesh. This describes the connectivity of edges or faces. This class is usefull for boundary condition setting. .SH IMPLEMENTATION NOTE The \fBdomain\fP class is splitted into two parts. The first one is the \fBdomain_indirect\fP class, that contains the main renumbering features: it acts as a indirect on a \fBgeo\fP class(see geo(2)). The second one is the \fBdomain\fP class, that simply contains two smart_pointers: one on a \fBdomain_indirect\fP and the second on the \fBgeo\fP where renumbering is acting. Thus, the domain class develops a complete \fBgeo\fP-like interface, via the \fBgeo_abstract_rep\fP pure virtual class derivation, and can be used by the \fBspace\fP class (see space(2)). The split between domain_indirect and domain is necessary, because the \fBgeo\fP class contains a list of domain_indirect. It cannot contains a list of \fBdomain\fP classes, that refers to the geo class itself: a loop in reference counting leads to a blocking situation in the automatic deallocation. .PP .\" skip start:DATE: .\" END .SH IMPLEMENTATION .\" begin_example .Sp .nf template <> class domain_indirect_basic : public smart_pointer > { public: // typedefs: typedef domain_indirect_rep rep; typedef smart_pointer base; typedef rep::size_type size_type; typedef rep::iterator_ioige iterator_ioige; typedef rep::const_iterator_ioige const_iterator_ioige; // allocators: domain_indirect_basic (); template domain_indirect_basic ( const geo_basic& omega, const std::string& name, size_type map_dim, const communicator& comm, const std::vector& ie_list); template domain_indirect_basic ( array >,sequential, heap_allocator >& d_tmp, const geo_basic& omega, std::vector* ball); void resize (size_type n); // accessors: size_type size() const; size_type dis_size() const; const distributor& ownership() const; const_iterator_ioige ioige_begin() const; const_iterator_ioige ioige_end() const; iterator_ioige ioige_begin(); iterator_ioige ioige_end(); const geo_element_indirect& oige (size_type ioige) const; void set_name (std::string name); void set_map_dimension (size_type map_dim); std::string name () const; size_type map_dimension () const; // i/o: odiststream& put (odiststream&) const; template idiststream& get (idiststream& ips, const geo_rep& omega, std::vector *ball); }; .Sp .fi .\" end_example .SH IMPLEMENTATION .\" begin_example .Sp .nf template <> class domain_indirect_basic : public smart_pointer > { public: // typedefs: typedef domain_indirect_rep rep; typedef smart_pointer base; typedef rep::size_type size_type; // allocators: domain_indirect_basic (); template domain_indirect_basic ( const geo_basic& omega, const std::string& name, size_type map_dim, const communicator& comm, const std::vector& ie_list); // accessors/modifiers: size_type size() const; size_type dis_size() const; const distributor& ownership() const; const geo_element_indirect& oige (size_type ioige) const; void set_name (std::string name); void set_map_dimension (size_type map_dim); std::string name () const; size_type map_dimension () const; // distributed specific acessors: const distributor& ini_ownership() const; size_type ioige2ini_dis_ioige (size_type ioige) const; size_type ini_ioige2dis_ioige (size_type ini_ioige) const; // i/o: template idiststream& get (idiststream& ips, const geo_rep& omega); template odiststream& put (odiststream& ops, const geo_rep& omega) const; }; .Sp .fi .\" end_example .\" LENGTH = 2 .SH SEE ALSO geo(2), space(2)