Go to the documentation of this file.
53 #include <GeometryExceptions.H>
67 typedef enum { UNKNOWN_VERSION=-1, VERSION10, VERSION11 } VersionId;
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_; }
102 size_t size()
const {
return size_; }
118 double sigma (
const Mesh& m1,
const Mesh& m2)
const {
return funct_on_domains(m1, m2, IDENTITY); }
119 double sigma_inv (
const Mesh& m1,
const Mesh& m2)
const {
return funct_on_domains(m1, m2, INVERSE); }
120 double indicator (
const Mesh& m1,
const Mesh& m2)
const {
return funct_on_domains(m1, m2, INDICATOR); }
122 double sigma (
const std::string&)
const;
125 void read(
const std::string& geomFileName,
const std::string& condFileName =
"",
const bool OLD_ORDERING =
false);
127 void load_vtp(
const std::string& filename,
Matrix& data,
const bool READ_DATA =
true);
128 void write_vtp(
const std::string& filename,
const Matrix& data =
Matrix())
const;
134 const std::vector<Strings>&
geo_group()
const {
return geo_group_; }
140 typedef enum { IDENTITY,
INVERSE, INDICATOR} Function;
Interface class An interface is a closed-shape composed of oriented meshes (here pointer to meshes)
const bool & has_cond() const
std::vector< Domain > Domains
A vector of Domain is called Domains.
Meshes::iterator iterator
Default iterator of a Geometry is an Iterator on the meshes.
const std::vector< Strings > & geo_group() const
size_t nb_current_barrier_triangles_
number of triangles with 0 normal current. Including triangles of invalid meshes.
Domains::iterator domain_end()
std::vector< Vertex > Vertices
size_t size() const
the total number of vertices + triangles
const Domains & domains() const
returns the geometry domains
size_t nb_domains() const
size_t & nb_current_barrier_triangles()
double sigma_diff(const Mesh &m) const
void import_meshes(const Meshes &m)
imports meshes from a list of meshes
Domains::const_iterator domain_end() const
a Domain is a vector of HalfSpace A Domain is the intersection of simple domains (of type HalfSpace).
const Domain & domain(const std::string &id) const
returns the Domain called id
const Mesh & mesh(const std::string &id) const
Geometry(const std::string &geomFileName, const std::string &condFileName="", const bool OLD_ORDERING=false)
double sigma_inv(const Mesh &m1, const Mesh &m2) const
int oriented(const Mesh &, const Mesh &) const
void read(const std::string &geomFileName, const std::string &condFileName="", const bool OLD_ORDERING=false)
const size_t & nb_current_barrier_triangles() const
handle multiple 0 conductivity domains
Domains::iterator domain_begin()
const_iterator begin() const
Mesh & mesh(const std::string &id)
returns the Mesh called id
Vertices::const_iterator vertex_end() const
double & sigma()
The conductivity of the domain.
const bool & is_nested() const
iterator begin()
Iterators.
double sigma(const Mesh &m1, const Mesh &m2) const
const Domain & domain(const Vect3 &p) const
returns the Domain containing the point p
const Vertices & vertices() const
returns the geometry vertices
std::set< Vertex > invalid_vertices_
handle multiple 0 conductivity domains
Meshes::const_iterator const_iterator
VersionId version() const
const Domains common_domains(const Mesh &, const Mesh &) const
Domains::const_iterator domain_begin() const
Geometry contains the electrophysiological model Here are stored the vertices, meshes and domains.
bool check(const Mesh &m) const
check if m intersect geometry meshes
Vertices::iterator vertex_end()
const Interface & innermost_interface() const
returns the innermost interface (only valid for nested geometries).
VersionId version_id
Members.
double sigma(const std::string &) const
file containing the definition of a Domain.
const Meshes & meshes() const
returns the geometry meshes
const Interface & interface(const std::string &id) const
returns the Interface called id
bool selfCheck() const
the geometry meshes intersect each other
std::vector< Mesh > Meshes
A vector of Mesh is called Meshes.
std::vector< Strings > geo_group_
Mesh names that belong to different isolated groups.
Vertices::const_iterator vertex_begin() const
void load_vtp(const std::string &filename)
const_iterator end() const
bool check_inner(const Matrix &m) const
check if dipoles are outside of geometry meshes
void info(const bool verbous=false) const
Print information on the geometry.
size_t nb_triangles() const
size_t nb_vertices() const
const size_t nb_invalid_vertices()
const double & sigma(const Domain &d) const
void generate_indices(const bool)
Vertices::iterator vertex_begin()
A class to read geometry and cond file.
void mark_current_barrier()
double indicator(const Mesh &m1, const Mesh &m2) const
const Interface & outermost_interface() const
returns the outermost interface (only valid for nested geometries).
double funct_on_domains(const Mesh &, const Mesh &, const Function &) const