rsvs3D  0.0.0
Codes for the c++ implementation of the 3D RSVS
RSVSmath_automatic.hpp
1 #ifndef RSVSMATH_AUTOMATIC_H_INCLUDED
2 #define RSVSMATH_AUTOMATIC_H_INCLUDED
3 
4 #include <cmath>
5 #include <vector>
6 
7 #include "vectorarray.hpp"
8 
9 #pragma GCC diagnostic push
10 #pragma GCC diagnostic ignored "-Wunused-variable"
11 static double rsvsmath_automatic_eps_edge = 0.0;
12 static double rsvsmath_automatic_eps_surf = 1e-10;
13 static double rsvsmath_automatic_eps_volu = 0.0;
14 static double rsvsmath_automatic_eps_centre = 1e-10;
15 static double rsvsmath_automatic_eps_centre2 = 1e-10;
16 #pragma GCC diagnostic pop
17 
18 void Volume_f(const std::vector<double> &p0, const std::vector<double> &p1, const std::vector<double> &p2, double &t0);
19 void Volume_df(const std::vector<double> &p0, const std::vector<double> &p1, const std::vector<double> &p2,
20  ArrayVec<double> &A0);
21 void Volume_ddf(const std::vector<double> &p0, const std::vector<double> &p1, const std::vector<double> &p2,
22  ArrayVec<double> &A0);
23 
24 void Volume2_f(double d0, double d1, double d2, const std::vector<double> &g0s, const std::vector<double> &g1s,
25  const std::vector<double> &g2s, const std::vector<double> &g0e, const std::vector<double> &g1e,
26  const std::vector<double> &g2e, double &t0);
27 void Volume2_df(double d0, double d1, double d2, const std::vector<double> &g0s, const std::vector<double> &g1s,
28  const std::vector<double> &g2s, const std::vector<double> &g0e, const std::vector<double> &g1e,
29  const std::vector<double> &g2e, ArrayVec<double> &A0);
30 void Volume2_ddf(double d0, double d1, double d2, const std::vector<double> &g0s, const std::vector<double> &g1s,
31  const std::vector<double> &g2s, const std::vector<double> &g0e, const std::vector<double> &g1e,
32  const std::vector<double> &g2e, ArrayVec<double> &A0);
33 
34 void Area_f(const std::vector<double> &p0, const std::vector<double> &p1, const std::vector<double> &p2, double &t0,
35  double eps = 0.0);
36 void Area_df(const std::vector<double> &p0, const std::vector<double> &p1, const std::vector<double> &p2,
37  ArrayVec<double> &A0, double eps = rsvsmath_automatic_eps_surf);
38 void Area_ddf(const std::vector<double> &p0, const std::vector<double> &p1, const std::vector<double> &p2,
39  ArrayVec<double> &A0, double eps = rsvsmath_automatic_eps_surf);
40 void LengthEdge_f(const std::vector<double> &p0, const std::vector<double> &p1, double &t0);
41 void LengthEdge_df(const std::vector<double> &p0, const std::vector<double> &p1, ArrayVec<double> &A0);
42 void LengthEdge_ddf(const std::vector<double> &p0, const std::vector<double> &p1, ArrayVec<double> &A0);
43 void SurfIntersect_f(const std::vector<double> &p1, const std::vector<double> &p2, const std::vector<double> &v0,
44  const std::vector<double> &v01, const std::vector<double> &v02, const std::vector<double> &v11,
45  const std::vector<double> &v12, const std::vector<double> &c, double &t0);
46 void SurfIntersect_df(const std::vector<double> &p1, const std::vector<double> &p2, const std::vector<double> &v0,
47  const std::vector<double> &v01, const std::vector<double> &v02, const std::vector<double> &v11,
48  const std::vector<double> &v12, const std::vector<double> &c, ArrayVec<double> &A0);
49 void SurfIntersect_ddf(const std::vector<double> &p1, const std::vector<double> &p2, const std::vector<double> &v0,
50  const std::vector<double> &v01, const std::vector<double> &v02, const std::vector<double> &v11,
51  const std::vector<double> &v12, const std::vector<double> &c, ArrayVec<double> &A0);
52 void SurfCentroid4_f(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
53  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
54  ArrayVec<double> &A0);
55 void SurfCentroid4_df(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
56  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
57  ArrayVec<double> &A0);
58 void SurfCentroid5_f(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
59  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
60  ArrayVec<double> &A0);
61 void SurfCentroid5_df(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
62  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
63  ArrayVec<double> &A0);
64 void SurfCentroid6_f(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
65  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
66  ArrayVec<double> &A0);
67 void SurfCentroid6_df(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
68  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
69  ArrayVec<double> &A0);
70 void SurfCentroidConnec_f(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
71  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
72  ArrayVec<double> &A0);
73 void SurfCentroidConnec_df(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
74  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
75  ArrayVec<double> &A0);
76 void SurfCentroidConnec_ddf(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
77  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
78  ArrayVec<double> &A0);
79 void SurfCentroidNoConnec_f(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
80  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
81  ArrayVec<double> &A0);
82 void SurfCentroidNoConnec_df(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
83  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
84  ArrayVec<double> &A0);
85 void SurfCentroidNoConnec_ddf(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
86  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
87  ArrayVec<double> &A0);
88 void SurfCentroidSelf_f(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
89  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
90  ArrayVec<double> &A0);
91 void SurfCentroidSelf_df(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
92  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
93  ArrayVec<double> &A0);
94 void SurfCentroidSelf_ddf(const std::vector<double> &x, const std::vector<double> &y, const std::vector<double> &z,
95  const double totD, const double X_dot_d, const double Y_dot_d, const double Z_dot_d,
96  ArrayVec<double> &A0);
97 #endif
Provides a 2D std::vector based container.