v0.14.0
Public Member Functions | Public Attributes | List of all members
FractureMechanics::AnalyticalDisp Struct Reference

#include <users_modules/fracture_mechanics/AnalyticalFun.hpp>

Inheritance diagram for FractureMechanics::AnalyticalDisp:
[legend]
Collaboration diagram for FractureMechanics::AnalyticalDisp:
[legend]

Public Member Functions

virtual vector< VectorDouble > & operator() (const double X, const double Y, const double Z)
 
- Public Member Functions inherited from FractureMechanics::AnalyticalOptions
PetscErrorCode getOptions ()
 
 AnalyticalOptions ()
 

Public Attributes

vector< VectorDouble > dIsp
 
- Public Attributes inherited from FractureMechanics::AnalyticalOptions
double aLpha
 
bool optionsInitialised
 

Detailed Description

Definition at line 117 of file AnalyticalFun.hpp.

Member Function Documentation

◆ operator()()

virtual vector<VectorDouble>& FractureMechanics::AnalyticalDisp::operator() ( const double  X,
const double  Y,
const double  Z 
)
inlinevirtual

Definition at line 121 of file AnalyticalFun.hpp.

122  {
123 
124  // initailise options
125  if (!optionsInitialised) {
126  getOptions();
127  }
128 
129  dIsp.resize(1);
130  dIsp[0].resize(3);
131 
132  double &x = dIsp[0][0];
133  double &y = dIsp[0][1];
134  double &z = dIsp[0][2];
135 
136  // Current positions is given by
137 
138  const double E = 1.0e5;
139  const double nu = 0;
140  const double pi = M_PI;
141  const double alpha = aLpha;
142 
143  const double theta = atan2(Z, X * sin(alpha) + Y * cos(alpha));
144 
145  const double ux =
146  (1 + nu) / E *
147  sqrt(sqrt(pow(X * sin(alpha) + Y * cos(alpha), 2) + pow(Z, 2)) /
148  (2 * pi)) *
149  cos(theta / 2.) * (3 - 4 * nu - cos(theta)) *
150  sin(alpha); // simply ux = f(Z) = Z*1e-3
151  const double uy =
152  (1 + nu) / E *
153  sqrt(sqrt(pow(X * sin(alpha) + Y * cos(alpha), 2) + pow(Z, 2)) /
154  (2 * pi)) *
155  cos(theta / 2.) * (3 - 4 * nu - cos(theta)) * cos(alpha);
156  const double uz =
157  (1 + nu) / E *
158  sqrt(sqrt(pow(X * sin(alpha) + Y * cos(alpha), 2) + pow(Z, 2)) /
159  (2 * pi)) *
160  sin(theta / 2.) * (3 - 4 * nu - cos(theta));
161 
162  x = X + ux;
163  y = Y + uy;
164  z = Z + uz;
165 
166  return dIsp;
167  }

Member Data Documentation

◆ dIsp

vector<VectorDouble> FractureMechanics::AnalyticalDisp::dIsp

Definition at line 119 of file AnalyticalFun.hpp.


The documentation for this struct was generated from the following file:
FractureMechanics::AnalyticalOptions::aLpha
double aLpha
Definition: AnalyticalFun.hpp:18
E
ClipperLib::pi
static const double pi
Definition: clipper.cpp:89
FractureMechanics::AnalyticalOptions::getOptions
PetscErrorCode getOptions()
Definition: AnalyticalFun.hpp:20
FractureMechanics::AnalyticalDisp::dIsp
vector< VectorDouble > dIsp
Definition: AnalyticalFun.hpp:119
FractureMechanics::AnalyticalOptions::optionsInitialised
bool optionsInitialised
Definition: AnalyticalFun.hpp:19