53 #include <GeometryExceptions.H> 67 typedef enum { UNKNOWN_VERSION=-1, VERSION10, VERSION11 }
VersionId;
69 VersionId
version()
const {
return version_id; }
76 iterator
begin() {
return meshes_.begin(); }
77 const_iterator
begin()
const {
return meshes_.begin(); }
78 iterator
end() {
return meshes_.end(); }
79 const_iterator
end()
const {
return meshes_.end(); }
81 Vertices::const_iterator
vertex_begin()
const {
return vertices_.begin(); }
82 Vertices::iterator
vertex_end() {
return vertices_.end(); }
83 Vertices::const_iterator
vertex_end()
const {
return vertices_.end(); }
85 Domains::const_iterator
domain_begin()
const {
return domains_.begin(); }
86 Domains::iterator
domain_end() {
return domains_.end(); }
87 Domains::const_iterator
domain_end()
const {
return domains_.end(); }
90 Geometry(): has_cond_(false), is_nested_(false), size_(0), nb_current_barrier_triangles_(0) {}
91 Geometry(
const std::string& geomFileName,
const std::string& condFileName =
"",
const bool OLD_ORDERING =
false): has_cond_(false), is_nested_(false), size_(0), nb_current_barrier_triangles_(0) { read(geomFileName, condFileName, OLD_ORDERING); }
93 void info(
const bool verbous =
false)
const;
94 const bool&
has_cond()
const {
return has_cond_; }
95 const bool&
is_nested()
const {
return is_nested_; }
96 bool selfCheck()
const;
97 bool check(
const Mesh& m)
const;
101 size_t size()
const {
return size_; }
107 const Interface& outermost_interface()
const;
108 const Interface& innermost_interface()
const;
110 const Interface& interface(
const std::string&
id)
const;
111 const Domain& domain(
const std::string&
id)
const;
114 void import_meshes(
const Meshes& m);
117 double sigma (
const Mesh& m1,
const Mesh& m2)
const {
return funct_on_domains(m1, m2, IDENTITY); }
118 double sigma_inv (
const Mesh& m1,
const Mesh& m2)
const {
return funct_on_domains(m1, m2, INVERSE); }
119 double indicator (
const Mesh& m1,
const Mesh& m2)
const {
return funct_on_domains(m1, m2, INDICATOR); }
120 double sigma_diff(
const Mesh& m)
const;
121 double sigma (
const std::string&)
const;
122 int oriented(
const Mesh&,
const Mesh&)
const;
124 void read(
const std::string& geomFileName,
const std::string& condFileName =
"",
const bool OLD_ORDERING =
false);
126 void load_vtp(
const std::string& filename,
Matrix& data,
const bool READ_DATA =
true);
127 void write_vtp(
const std::string& filename,
const Matrix& data =
Matrix())
const;
133 const std::vector<Strings>&
geo_group()
const {
return geo_group_; }
134 void mark_current_barrier();
135 const Mesh& mesh(
const std::string&
id)
const;
141 Mesh& mesh(
const std::string&
id);
152 void generate_indices(
const bool);
154 double funct_on_domains(
const Mesh&,
const Mesh&,
const Function& )
const;
Meshes::const_iterator const_iterator
const_iterator begin() const
const size_t nb_invalid_vertices() const
std::vector< Vertex > Vertices
double & sigma()
The conductivity of the domain.
Vertices::iterator vertex_end()
Geometry contains the electrophysiological model Here are stored the vertices, meshes and domains...
double sigma(const Mesh &m1, const Mesh &m2) const
const_iterator end() const
VersionId version() const
std::vector< Domain > Domains
A vector of Domain is called Domains.
Domains::const_iterator domain_begin() const
size_t nb_domains() const
double indicator(const Mesh &m1, const Mesh &m2) const
Domains::const_iterator domain_end() const
std::vector< Strings > geo_group_
Mesh names that belong to different isolated groups.
std::set< Vertex > invalid_vertices_
handle multiple 0 conductivity domains
size_t nb_triangles() const
VersionId version_id
Members.
std::vector< Mesh > Meshes
A vector of Mesh is called Meshes.
void load_vtp(const std::string &filename)
const Domains & domains() const
returns the geometry domains
A class to read geometry and cond file.
size_t size() const
the total number of vertices + triangles
Vertices::iterator vertex_begin()
const Meshes & meshes() const
returns the geometry meshes
Vertices::const_iterator vertex_begin() const
size_t & nb_current_barrier_triangles()
const Vertices & vertices() const
returns the geometry vertices
Geometry(const std::string &geomFileName, const std::string &condFileName="", const bool OLD_ORDERING=false)
const bool & is_nested() const
iterator begin()
Iterators.
Vertices::const_iterator vertex_end() const
double sigma_inv(const Mesh &m1, const Mesh &m2) const
Domains::iterator domain_begin()
Meshes::iterator iterator
Default iterator of a Geometry is an Iterator on the meshes.
const std::vector< Strings > & geo_group() const
file containing the definition of a Domain.
size_t nb_current_barrier_triangles_
number of triangles with 0 normal current. Including triangles of invalid meshes. ...
const bool & has_cond() const
a Domain is a vector of HalfSpace A Domain is the intersection of simple domains (of type HalfSpace)...
Interface class An interface is a closed-shape composed of oriented meshes (here pointer to meshes) ...
Domains::iterator domain_end()
const size_t & nb_current_barrier_triangles() const
handle multiple 0 conductivity domains
size_t nb_vertices() const
const double & sigma(const Domain &d) const