MDStressLab++
Loading...
Searching...
No Matches
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
15double 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}
32double Constant::integral() const
33{
34 return 2.0;
35}
36
37double Constant::integrate(const Vector3d& vec1_pull_seg, const Vector3d& vec2_pull_seg) const
38{
39 double result = 1.0;
40 Vector3d vec_mid;
41 vec_mid = (vec1_pull_seg + vec2_pull_seg) / 2.0;
42
43 for (int i = 0; i <= 2; i++)
44 {
45 if (vec_mid(i) < -1.0 - epsilon || vec_mid(i) > 1.0 + epsilon)
46 {
47 return 0.0;
48 }
49 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))
50 {
51 result = result * 0.5;
52 }
53 else
54 {
55 result = result * 1.0;
56 }
57 }
58
59 return result;
60}
61
62
63
double integral() const
Return for this shape.
Definition Constant.cpp:32
virtual ~Constant()
Definition Constant.cpp:13
double integrate(const Vector3d &vec1_pull_seg, const Vector3d &vec2_pull_seg) const
Evaluate the segment integral used by the LDAD bond function.
Definition Constant.cpp:37
double operator()(const double &t) const
Evaluate the one-dimensional constant LDAD shape function.
Definition Constant.cpp:15
Eigen::Matrix< double, 1, DIM, Eigen::RowMajor > Vector3d
Definition typedef.h:60
const double epsilon
Definition typedef.h:73