21 #ifndef numerical_towing_tank_h
22 #define numerical_towing_tank_h
37 #include <TopTools.hxx>
38 #include <Standard_Stream.hxx>
39 #include <TopoDS_Shape.hxx>
40 #include <TopoDS_Edge.hxx>
43 #include <IGESControl_Reader.hxx>
44 #include <IGESControl_Controller.hxx>
45 #include <IGESControl_Writer.hxx>
47 #include <TopoDS_Shape.hxx>
48 #include <TopoDS_Shell.hxx>
49 #include <TopoDS_Face.hxx>
50 #include <BRepTools.hxx>
51 #include <XSControl_Reader.hxx>
52 #include <TopTools_SequenceOfShape.hxx>
53 #include <Handle_Standard_Transient.hxx>
54 #include <TColStd_SequenceOfTransient.hxx>
55 #include <TColStd_HSequenceOfTransient.hxx>
56 #include <TopExp_Explorer.hxx>
59 #include <GeomAPI_ProjectPointOnSurf.hxx>
60 #include <GeomAPI_ProjectPointOnCurve.hxx>
61 #include <Standard_Real.hxx>
62 #include <Standard_Integer.hxx>
63 #include <BRep_Tool.hxx>
64 #include <Geom_Surface.hxx>
65 #include <Geom_Plane.hxx>
66 #include <Prs3d_ShapeTool.hxx>
67 #include <Bnd_Box.hxx>
70 #include <BRepBuilderAPI_MakeFace.hxx>
71 #include <GeomAPI_IntSS.hxx>
72 #include <TopoDS_Wire.hxx>
73 #include <BRepBuilderAPI_MakePolygon.hxx>
74 #include <Geom_Curve.hxx>
75 #include <Geom_BoundedCurve.hxx>
76 #include <Geom_TrimmedCurve.hxx>
77 #include <TColGeom_Array1OfCurve.hxx>
78 #include <GeomAPI_IntCS.hxx>
79 #include <BRepBuilderAPI_MakeEdge.hxx>
80 #include <GeomLib_Tool.hxx>
81 #include <GCPnts_AbscissaPoint.hxx>
82 #include <GeomConvert_CompCurveToBSplineCurve.hxx>
201 const std::vector<bool> &
id,
209 void evaluate_ref_surf_distances(
Vector <double> &distances,
const bool only_surf_smoothing=
false);
const unsigned int mapping_degree
std::vector< Point< 3 > > node_normals
Vector< double > initial_map_points
ConstraintMatrix vector_constraints
DoFHandler< dim-1, dim > vector_dh
SparsityPattern normals_sparsity_pattern
void remove_transom_hanging_nodes()
unsigned int init_adaptive_boat_refs
SparseMatrix< double > vector_normals_matrix
unsigned int find_point_id(const Point< 3 > &p, const std::vector< Point< 3 > > &ps)
void apply_curvatures(const Vector< double > &curvatures, const std::vector< bool > boundary_dofs)
Vector< double > vector_normals_rhs
Vector< double > smoothing_curvature_vector
std::string iges_file_name
void perform_water_line_nodes_projection()
std::vector< unsigned int > boundary_ids
std::set< tria_it > edge_cells
std::vector< std::vector< bool > > boundary_dofs
Vector< double > smoothing_map_points
Vector< double > vector_normals_solution
void perform_surface_projection()
Vector< double > map_points
double init_adaptive_boat_refs_fraction
std::vector< unsigned int > moving_point_ids
std::vector< Point< 3 > > old_iges_normals
void compute_constraints(ConstraintMatrix &cc)
void partial_mesh_treatment(const double blend_factor)
virtual void read_domain()
std::vector< GeometryFlags > flags
unsigned int number_of_transom_edges
NumericalTowingTank(unsigned int, unsigned int)
Vector< double > old_map_points
void perform_smoothing(bool full_treatment, const double blend_factor)
virtual void generate_double_nodes_set()
virtual void declare_parameters(ParameterHandler &prm)
void initialize_smoother()
std::vector< unsigned int > base_point_ids
double middle_keel_length
void make_edges_conformal(bool isotropic_ref_on_opposite_side)
std::vector< bool > on_curve_option
Vector< double > rigid_motion_map_points
double front_mesh_inclination_coeff
void full_mesh_treatment()
SurfaceSmoothing * surface_smoother
std::map< tria_it, tria_it > water_to_boat_edge_cells
std::vector< double > iges_mean_curvatures
PersistentTriangulation< dim-1, dim > tria
void perform_line_smoothing(unsigned int num_smoothings)
std::vector< GeometryFlags > vector_flags
std::vector< OpenCascade::LineSmoothing * > line_smoothers
void remove_mesh_anisotropy(Triangulation< 2, 3 > &tria)
Vector< double > edges_length_ratios
std::vector< TopLoc_Location * > smoothers_locations
void refine_global_on_boat(const unsigned int num_refinements)
virtual void refine_and_resize()
void compute_normals_at_nodes(Vector< double > &map_points_used)
void compute_curvatures(Vector< double > &curvatures)
std::set< tria_it > boat_edge_cells
void compute_nodes_flags()
SurfaceSmoothing * restart_surface_smoother
std::vector< Point< 3 > > moving_points
void create_initial_mesh(const Point< 3 > PointFrontTop, const Point< 3 > PointFrontBot, const Point< 3 > PointMidTop, const Point< 3 > PointMidBot, const Point< 3 > PointBackTop, const Point< 3 > PointBackBot, const Point< 3 > PointLeftTransom, const Point< 3 > PointRightTransom, const Point< 3 > PointCenterTransom, Triangulation< 2, 3 > &triangulation)
Handle(Geom_Curve) NumericalTowingTank
void extract_boundary_dofs(std::vector< bool > &dofs, unsigned int id, DoFHandler< 2, 3 > &vector_dh)
std::vector< Point< 3 > > iges_normals
virtual void parse_parameters(ParameterHandler &prm)
Vector< double > edges_tangents
std::vector< Handle(Geom_Curve)> curves
unsigned int init_global_boat_refs
std::map< tria_it, tria_it > boat_to_water_edge_cells
std::vector< Point< 3 > > base_points
std::set< tria_it > water_edge_cells
double back_mesh_inclination_coeff
void update_mapping(const Vector< double > &map_points)