MDStressLab++
Constant.cpp
Go to the documentation of this file.
1 /*
2  * Constant.cpp
3  *
4  * Created on: Jan 9, 2020
5  * Author: Nikhil
6  */
7 
8 #include "Constant.h"
9 #include "typedef.h"
10 
12 
14 
15 double Constant::operator()(const double& t) const
16 {
17  // Constant weighting function
18  if (t < -1.0 - epsilon || t > 1.0 + epsilon)
19  {
20  return 0.0;
21  }
22  else if ((t >= -1.0 - epsilon && t <= -1.0 + epsilon) || (t <= 1.0 + epsilon && t >= 1.0 - epsilon))
23  {
24  return 0.5;
25  }
26  else
27  {
28  return 1.0;
29  }
30 
31 }
32 double Constant::integrate(const Vector3d& vec1_pull_seg, const Vector3d& vec2_pull_seg) const
33 {
34  double result = 1.0;
35  Vector3d vec_mid;
36  vec_mid = (vec1_pull_seg + vec2_pull_seg) / 2.0;
37 
38  for (int i = 0; i <= 2; i++)
39  {
40  if (vec_mid(i) < -1.0 - epsilon || vec_mid(i) > 1.0 + epsilon)
41  {
42  return 0.0;
43  }
44  else if ((vec_mid(i) >= -1.0 - epsilon && vec_mid(i) <= -1.0 + epsilon) || (vec_mid(i) <= 1.0 + epsilon && vec_mid(i) >= 1.0 - epsilon))
45  {
46  result = result * 0.5;
47  }
48  else
49  {
50  result = result * 1.0;
51  }
52  }
53 
54  return result;
55 }
56 
57 
58 
59 
const double epsilon
Definition: typedef.h:73
virtual ~Constant()
Definition: Constant.cpp:13
Constant()
Definition: Constant.cpp:11
double operator()(const double &t) const
Definition: Constant.cpp:15
Eigen::Matrix< double, 1, DIM, Eigen::RowMajor > Vector3d
Definition: typedef.h:60
double integrate(const Vector3d &vec1_pull_seg, const Vector3d &vec2_pull_seg) const
Definition: Constant.cpp:32