7 constexpr
double load = 10;
21 constexpr
double a = 1.0;
22 double r = cartesianCoordinate.norm();
23 double theta = std::atan(cartesianCoordinate[1] / cartesianCoordinate[0]);
25 double cos2t = std::cos(2 * theta);
26 double cos4t = std::cos(4 * theta);
27 double sin2t = std::sin(2 * theta);
28 double sin4t = std::sin(4 * theta);
30 double fac1 = (a * a) / (r * r);
31 double fac2 = 1.5 * fac1 * fac1;
33 stress[0] = 1. - fac1 * (1.5 * cos2t + cos4t) + fac2 * cos4t;
34 stress[1] = -fac1 * (0.5 * cos2t - cos4t) - fac2 * cos4t;
35 stress[2] = -fac1 * (0.5 * sin2t + sin4t) + fac2 * sin4t;
44 double r = cartesianCoordinate.norm();
45 double theta = std::atan(cartesianCoordinate[1] / cartesianCoordinate[0]);
47 double ct = std::cos(theta);
48 double c3t = std::cos(3 * theta);
49 double st = std::sin(theta);
50 double s3t = std::sin(3 * theta);
52 double mu = E / (2. + 2. *
nu);
53 double k = (3. -
nu) / (1. + nu);
55 double ux = ((T * a) / (8. * mu)) * ((r / a) * (k + 1.) * ct + ((2. * a) / r) * ((1. + k) * ct + c3t) -
56 ((2. * a * a * a) / (r * r * r)) * c3t);
57 double uy = ((T * a) / (8. * mu)) * ((r / a) * (k - 3.) * st + ((2. * a) / r) * ((1. - k) * st + s3t) -
58 ((2. * a * a * a) / (r * r * r)) * s3t);
60 return Eigen::Vector2d(ux, uy);
63 static Eigen::Vector2d
Pressure(Eigen::Vector2d cartesianCoordinate, Eigen::Vector2d rN)
66 Eigen::Matrix2d stress;
67 stress << s[0], s[2], s[2], s[1];
68 Eigen::Vector2d
pressure = stress * rN;
69 std::cout <<
"Apply pressure " << pressure.transpose() <<
" at cartesian coordinate " 70 << cartesianCoordinate.transpose() << std::endl;
74 static Eigen::Vector2d
PressureRight(Eigen::Vector2d cartesianCoordinate)
76 return Pressure(cartesianCoordinate, Eigen::Vector2d::UnitX());
79 static Eigen::Vector2d
PressureTop(Eigen::Vector2d cartesianCoordinate)
81 return Pressure(cartesianCoordinate, Eigen::Vector2d::UnitY());
84 static Eigen::Vector2d
PressureLeft(Eigen::Vector2d cartesianCoordinate)
86 return Pressure(cartesianCoordinate, -Eigen::Vector2d::UnitX());
91 return Pressure(cartesianCoordinate, -Eigen::Vector2d::UnitY());
static Eigen::Vector2d PressureLeft(Eigen::Vector2d cartesianCoordinate)
Definition: PlateWithHoleAnalytic.h:84
static Eigen::Vector2d PressureRight(Eigen::Vector2d cartesianCoordinate)
Definition: PlateWithHoleAnalytic.h:74
static Eigen::Vector2d PressureBottom(Eigen::Vector2d cartesianCoordinate)
Definition: PlateWithHoleAnalytic.h:89
static Eigen::Vector2d Pressure(Eigen::Vector2d cartesianCoordinate, Eigen::Vector2d rN)
Definition: PlateWithHoleAnalytic.h:63
const double nu
Definition: LinearElasticDamageBenchmark.cpp:7
double pressure
Definition: SurfaceLoad.cpp:17
Definition: PlateWithHoleAnalytic.h:14
static ExactStress AnalyticStress(Eigen::VectorXd cartesianCoordinate)
Definition: PlateWithHoleAnalytic.h:19
s
Definition: WaveFieldSynthesis.py:99
static Eigen::VectorXd AnalyticDisplacement(Eigen::Vector2d cartesianCoordinate, double E, double nu)
Definition: PlateWithHoleAnalytic.h:40
Definition: Exception.h:6
Eigen::Vector3d ExactStress
Definition: PlateWithHoleAnalytic.h:6
constexpr double load
Definition: PlateWithHoleAnalytic.h:7
const double E
Definition: LinearElasticDamageBenchmark.cpp:6
static Eigen::Vector2d PressureTop(Eigen::Vector2d cartesianCoordinate)
Definition: PlateWithHoleAnalytic.h:79