44 #define GEOMETRY_HPP 1
87 void save( std::ostream &os )
const {
134 std::vector<const Solid*> _sdata;
135 std::vector<Bound> _bound;
145 bool vac_or_neu( int32_t i, int32_t j, int32_t k );
149 void check_definition();
151 Vec3D surface_normal_2d(
const Vec3D &x )
const;
152 Vec3D surface_normal_3d(
const Vec3D &x )
const;
273 bool built(
void )
const {
return( _built ); }
282 const signed char &
mesh( int32_t i )
const {
return( _smesh[i] ); }
286 const signed char &
mesh( int32_t i, int32_t j )
const {
287 return( _smesh[i + j*
_size[0]] );
292 const signed char &
mesh( int32_t i, int32_t j, int32_t k )
const {
298 signed char &
mesh( int32_t i ) {
return( _smesh[i] ); }
302 signed char &
mesh( int32_t i, int32_t j ) {
303 return( _smesh[i + j*
_size[0]] );
308 signed char &
mesh( int32_t i, int32_t j, int32_t k ) {
315 signed char mesh_check( int32_t i, int32_t j, int32_t k )
const;
319 void save(
const std::string &filename )
const;
323 void save( std::ostream &os )
const;
Geometry(geom_mode_e geom_mode, Int3D size, Vec3D origo, double h)
Constructor for geometry class.
uint32_t inside(const Vec3D &x) const
Returns 0 if point x is vacuum or the number of solid of x is inside a defined solid. Returns a number from 1 to 6 if point x is outside the defined geometry. If the point is inside several defined solids, the solid with the highest solid number is returned.
Bound(bound_e t, double v)
Constructor.
Definition: geometry.hpp:76
void set_solid(uint32_t n, const Solid *s)
Sets solid number n to s.
uint32_t number_of_solids() const
Return number of solids.
void write_int32(std::ostream &os, int32_t value)
Write int32_t value into stream os.
bound_e type
Definition: geometry.hpp:71
void debug_print(std::ostream &os) const
Print debugging information to stream os.
double val
Definition: geometry.hpp:72
friend std::ostream & operator<<(std::ostream &os, const Bound &b)
Outputting to stream.
Base for solid definition.
std::vector< Bound > get_boundaries() const
Returns a vector of boundary conditions.
void save(std::ostream &os) const
Saves data to stream os.
Definition: geometry.hpp:87
uint32_t get_bracket_count(void) const
Returns the solid bracketing count number.
void save(const std::string &filename) const
Saves data to a new file filename.
signed char & mesh(int32_t i)
Returns a reference to solid mesh.
Definition: geometry.hpp:298
Vec3D surface_normal(const Vec3D &x) const
Find surface outward normal at location x.
Bindary file writing and reading tools.
double bracket_surface(uint32_t n, const Vec3D &xin, const Vec3D &xout, Vec3D &xsurf) const
Find solid n surface location by bracketing.
Mesh geometry definion.
Definition: mesh.hpp:67
Vec3D origo(void) const
Returns origo vector of geometry.
Definition: mesh.hpp:128
geom_mode_e
Geometry mode enum.
Definition: types.hpp:59
uint32_t number_of_boundaries() const
Return number of boundaries.
Three dimensional vectors.
const signed char & mesh(int32_t i, int32_t j, int32_t k) const
Returns a const reference to solid mesh.
Definition: geometry.hpp:292
void write_double(std::ostream &os, double value)
Write double value into stream os.
void set_boundary(uint32_t n, const Bound &b)
Sets boundary condition b for solid number n.
signed char & mesh(int32_t i, int32_t j, int32_t k)
Returns a reference to solid mesh.
Definition: geometry.hpp:308
Geometry defining class.
Definition: geometry.hpp:131
double h(void) const
Returns mesh cell size.
Definition: mesh.hpp:146
Bound(std::istream &s)
Constructor for loading boundary condition from a file.
Definition: geometry.hpp:80
Abstract solid class.
Definition: solid.hpp:56
signed char mesh_check(int32_t i, int32_t j, int32_t k) const
Returns solid node number from solid mesh at i, j, k or number from 1 to 6 if point is outside mesh...
3D Integer vector class.
Definition: vec3d.hpp:289
Int3D _size
Size of mesh.
Definition: mesh.hpp:71
Bound get_boundary(uint32_t n) const
Returns boundary condition for solid number n.
bool built(void) const
Is the solid mesh built?
Definition: geometry.hpp:273
bound_e
Boundary type.
Definition: types.hpp:117
Rectangular mesh definition.
int32_t read_int32(std::istream &is)
Read int32_t from stream is.
const signed char & mesh(int32_t i, int32_t j) const
Returns a const reference to solid mesh.
Definition: geometry.hpp:286
const signed char & mesh(int32_t i) const
Returns a const reference to solid mesh.
Definition: geometry.hpp:282
~Geometry()
Destructor for geometry.
void build_mesh(void)
Builds (or rebuilds) the solid mesh from solid definitions.
Int3D size(void) const
Returns size array of geometry.
Definition: mesh.hpp:116
Three dimensional vector.
Definition: vec3d.hpp:58
void set_bracket_count(uint32_t n)
Set the solid bracketing count number.
signed char & mesh(int32_t i, int32_t j)
Returns a reference to solid mesh.
Definition: geometry.hpp:302
geom_mode_e geom_mode(void) const
Returns geometry mode.
Definition: mesh.hpp:108
Boundary condition definition class.
Definition: geometry.hpp:69
double read_double(std::istream &is)
Readd double from stream is.
const Solid * get_solid(uint32_t n) const
Returns a const pointer to solid number n.