18 #ifndef SURFACE_DEPTH_HH_ 19 #define SURFACE_DEPTH_HH_ 42 DECLARE_INPUT_EXCEPTION(ExcTooLargeSnapDistance, <<
"Distance of projected point during calculation of surface depth is larger " 43 <<
"than the global snap radius limit!\nRegion: " << EI_RegionName::qval <<
", time: " << EI_FieldTime::val
44 <<
", coordinates of projected point: [" << EI_Xcoord::val <<
", " << EI_Ycoord::val <<
", " << EI_Zcoord::val
45 <<
"], distance of nearest element: " << EI_SnapDistance::val );
50 SurfaceDepth(
const Mesh *mesh, std::string surface_region, std::string surface_direction);
std::vector< arma::mat > inv_projection_
vector of inversion projection matrices of elements above which BIH tree is created ...
arma::mat m_
projection matrix
std::vector< unsigned int > searched_elements_
Surface region name (need for exception)
double projection_search_radius_
Projection search radius given from global_snap_radius of mesh.
arma::vec3 surface_norm_vec_
normal vector of surface plane
SurfaceDepth(const Mesh *mesh, std::string surface_region, std::string surface_direction)
std::vector< arma::vec3 > b_vecs_
vector of b-vectors (right side of equation system) of elements above which BIH tree is created ...
void construct_bih_tree(Mesh *mesh, std::string surface_region)
Construct BIH tree above surface region of given name.
ArmaMat< double, N, M > mat
Class for O(log N) lookup for intersections with a set of bounding boxes.
BIHTree bih_tree_
Tree of mesh elements.
void prepare_distance_solve(unsigned int elem_idx, arma::vec3 &point, arma::vec3 &x)
Precompute solve of distance in transformed coordinations of surface element plane.
TYPEDEF_ERR_INFO(EI_Message, const std::string)
Declaration of exceptions.
void create_projection_matrix(arma::vec3 surface_vec)
Create projection matrix m_.
DECLARE_INPUT_EXCEPTION(ExcSurfaceProjection,<< EI_Message::val)
std::string surface_region_
Surface region name (need for exception)
double compute_distance(arma::vec3 point)
Compute distance of point from given surface region (was set in constructor)