v0.14.0
Public Member Functions | Public Attributes | List of all members
FractureMechanics::GriffithForceElement::AuxFunctions< TYPE > Struct Template Reference

#include <users_modules/fracture_mechanics/src/GriffithForceElement.hpp>

Inheritance diagram for FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >:
[legend]
Collaboration diagram for FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >:
[legend]

Public Member Functions

 AuxFunctions ()
 
MoFEMErrorCode calculateAreaAndNormal (const MatrixDouble &diff_n)
 
MoFEMErrorCode calculateMatA (const MatrixDouble &diff_n)
 
MoFEMErrorCode calculateGriffithForce (const double gc, const double beta, const MatrixDouble &diff_n)
 

Public Attributes

ublas::vector< TYPE > referenceCoords
 
ublas::vector< TYPE > currentCoords
 
ublas::vector< TYPE > griffithForce
 
FTensor::Tensor1< TYPE, 3 > t_Normal
 
FTensor::Tensor1< TYPE, 3 > t_Tangent1_ksi
 
FTensor::Tensor1< TYPE, 3 > t_Tangent2_eta
 
TYPE currentArea
 
FTensor::Index< 'i', 3 > i
 
FTensor::Index< 'j', 3 > j
 
FTensor::Index< 'k', 3 > k
 
FTensor::Number< 0 > N0
 
FTensor::Number< 1 > N1
 
boost::function< FTensor::Tensor1< TYPE *, 3 >ublas::vector< TYPE > &v)> get_ftensor_from_vec
 
boost::function< FTensor::Tensor1< FTensor::PackPtr< const double *, 2 >, 2 > const MatrixDouble &m)> get_ftensor_from_mat_2d
 

Detailed Description

template<typename TYPE>
struct FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >

\[ A = \| \mathbf{N} \| = \left\| \textrm{Spin}\left[ \frac{\partial\mathbf{N}\mathbf{X}}{\partial\xi} \right] \frac{\partial\mathbf{N}\mathbf{X}}{\partial\eta} \right\| \]

Definition at line 123 of file GriffithForceElement.hpp.

Constructor & Destructor Documentation

◆ AuxFunctions()

template<typename TYPE >
FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::AuxFunctions ( )
inline

Definition at line 147 of file GriffithForceElement.hpp.

147  {
148 
149  get_ftensor_from_vec = [](ublas::vector<TYPE> &v) {
150  return FTensor::Tensor1<TYPE *, 3>(&v(0), &v(1), &v(2), 3);
151  };
152 
153  get_ftensor_from_mat_2d = [](const MatrixDouble &m) {
155  &m(0, 0), &m(0, 1));
156  };
157  }

Member Function Documentation

◆ calculateAreaAndNormal()

template<typename TYPE >
MoFEMErrorCode FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::calculateAreaAndNormal ( const MatrixDouble &  diff_n)
inline

Definition at line 159 of file GriffithForceElement.hpp.

159  {
161 
162  auto t_coords = get_ftensor_from_vec(currentCoords);
163  auto t_diff = get_ftensor_from_mat_2d(diff_n);
164  t_Tangent1_ksi(i) = (TYPE)0;
165  t_Tangent2_eta(i) = (TYPE)0;
166  for (int nn = 0; nn != 3; ++nn) {
167  t_Tangent1_ksi(i) += t_coords(i) * t_diff(N0);
168  t_Tangent2_eta(i) += t_coords(i) * t_diff(N1);
169  ++t_diff;
170  ++t_coords;
171  }
172 
173  t_Normal(j) =
175  currentArea = 0.5 * sqrt(t_Normal(i) * t_Normal(i));
176 
178  }

◆ calculateGriffithForce()

template<typename TYPE >
MoFEMErrorCode FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::calculateGriffithForce ( const double  gc,
const double  beta,
const MatrixDouble &  diff_n 
)
inline

Definition at line 201 of file GriffithForceElement.hpp.

202  {
204 
206  CHKERR calculateMatA(diff_n);
207 
208  for (int dd = 0; dd != 9; dd++)
209  griffithForce[dd] *= gc * beta;
210 
212  }

◆ calculateMatA()

template<typename TYPE >
MoFEMErrorCode FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::calculateMatA ( const MatrixDouble &  diff_n)
inline

Definition at line 180 of file GriffithForceElement.hpp.

180  {
182 
183  griffithForce.resize(9, false);
184  std::fill(griffithForce.begin(), griffithForce.end(), 0);
185  auto t_griffith = get_ftensor_from_vec(griffithForce);
186  auto t_diff = get_ftensor_from_mat_2d(diff_n);
187 
188  for (int dd = 0; dd != 3; dd++) {
189 
190  t_griffith(i) += FTensor::levi_civita(i, j, k) * t_Tangent1_ksi(k) *
191  t_diff(N1) * t_Normal(j) * 0.25 / currentArea;
192  t_griffith(i) -= FTensor::levi_civita(i, j, k) * t_Tangent2_eta(k) *
193  t_diff(N0) * t_Normal(j) * 0.25 / currentArea;
194  ++t_diff;
195  ++t_griffith;
196  }
197 
199  }

Member Data Documentation

◆ currentArea

template<typename TYPE >
TYPE FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::currentArea

Definition at line 132 of file GriffithForceElement.hpp.

◆ currentCoords

template<typename TYPE >
ublas::vector<TYPE> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::currentCoords

Definition at line 126 of file GriffithForceElement.hpp.

◆ get_ftensor_from_mat_2d

template<typename TYPE >
boost::function<FTensor::Tensor1<FTensor::PackPtr<const double *, 2>, 2> const MatrixDouble &m)> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::get_ftensor_from_mat_2d

Definition at line 145 of file GriffithForceElement.hpp.

◆ get_ftensor_from_vec

template<typename TYPE >
boost::function<FTensor::Tensor1<TYPE *, 3>ublas::vector<TYPE> &v)> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::get_ftensor_from_vec

Definition at line 141 of file GriffithForceElement.hpp.

◆ griffithForce

template<typename TYPE >
ublas::vector<TYPE> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::griffithForce

Definition at line 127 of file GriffithForceElement.hpp.

◆ i

template<typename TYPE >
FTensor::Index<'i', 3> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::i

Definition at line 134 of file GriffithForceElement.hpp.

◆ j

template<typename TYPE >
FTensor::Index<'j', 3> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::j

Definition at line 135 of file GriffithForceElement.hpp.

◆ k

template<typename TYPE >
FTensor::Index<'k', 3> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::k

Definition at line 136 of file GriffithForceElement.hpp.

◆ N0

Definition at line 137 of file GriffithForceElement.hpp.

◆ N1

Definition at line 138 of file GriffithForceElement.hpp.

◆ referenceCoords

template<typename TYPE >
ublas::vector<TYPE> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::referenceCoords

Definition at line 125 of file GriffithForceElement.hpp.

◆ t_Normal

template<typename TYPE >
FTensor::Tensor1<TYPE, 3> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::t_Normal

Definition at line 129 of file GriffithForceElement.hpp.

◆ t_Tangent1_ksi

template<typename TYPE >
FTensor::Tensor1<TYPE, 3> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::t_Tangent1_ksi

Definition at line 130 of file GriffithForceElement.hpp.

◆ t_Tangent2_eta

template<typename TYPE >
FTensor::Tensor1<TYPE, 3> FractureMechanics::GriffithForceElement::AuxFunctions< TYPE >::t_Tangent2_eta

Definition at line 131 of file GriffithForceElement.hpp.


The documentation for this struct was generated from the following file:
MoFEMFunctionReturnHot
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:460
FTensor::Tensor1
Definition: Tensor1_value.hpp:8
FractureMechanics::GriffithForceElement::AuxFunctions::k
FTensor::Index< 'k', 3 > k
Definition: GriffithForceElement.hpp:136
MoFEM::Types::MatrixDouble
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:77
FractureMechanics::GriffithForceElement::AuxFunctions::i
FTensor::Index< 'i', 3 > i
Definition: GriffithForceElement.hpp:134
FractureMechanics::GriffithForceElement::AuxFunctions::N0
FTensor::Number< 0 > N0
Definition: GriffithForceElement.hpp:137
FTensor::levi_civita
constexpr std::enable_if<(Dim0<=2 &&Dim1<=2), Tensor2_Expr< Levi_Civita< T >, T, Dim0, Dim1, i, j > >::type levi_civita(const Index< i, Dim0 > &, const Index< j, Dim1 > &)
levi_civita functions to make for easy adhoc use
Definition: Levi_Civita.hpp:617
FractureMechanics::GriffithForceElement::AuxFunctions::get_ftensor_from_mat_2d
boost::function< FTensor::Tensor1< FTensor::PackPtr< const double *, 2 >, 2 > const MatrixDouble &m)> get_ftensor_from_mat_2d
Definition: GriffithForceElement.hpp:145
FractureMechanics::GriffithForceElement::AuxFunctions::currentCoords
ublas::vector< TYPE > currentCoords
Definition: GriffithForceElement.hpp:126
CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:548
FractureMechanics::GriffithForceElement::AuxFunctions::N1
FTensor::Number< 1 > N1
Definition: GriffithForceElement.hpp:138
FractureMechanics::GriffithForceElement::AuxFunctions::j
FTensor::Index< 'j', 3 > j
Definition: GriffithForceElement.hpp:135
FractureMechanics::GriffithForceElement::AuxFunctions::t_Tangent1_ksi
FTensor::Tensor1< TYPE, 3 > t_Tangent1_ksi
Definition: GriffithForceElement.hpp:130
FractureMechanics::GriffithForceElement::AuxFunctions::get_ftensor_from_vec
boost::function< FTensor::Tensor1< TYPE *, 3 >ublas::vector< TYPE > &v)> get_ftensor_from_vec
Definition: GriffithForceElement.hpp:141
FractureMechanics::GriffithForceElement::AuxFunctions::t_Normal
FTensor::Tensor1< TYPE, 3 > t_Normal
Definition: GriffithForceElement.hpp:129
FractureMechanics::GriffithForceElement::AuxFunctions::t_Tangent2_eta
FTensor::Tensor1< TYPE, 3 > t_Tangent2_eta
Definition: GriffithForceElement.hpp:131
FractureMechanics::GriffithForceElement::AuxFunctions::currentArea
TYPE currentArea
Definition: GriffithForceElement.hpp:132
v
const double v
phase velocity of light in medium (cm/ns)
Definition: initial_diffusion.cpp:40
FTensor::dd
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition: ddTensor0.hpp:33
FractureMechanics::GriffithForceElement::AuxFunctions::griffithForce
ublas::vector< TYPE > griffithForce
Definition: GriffithForceElement.hpp:127
FractureMechanics::GriffithForceElement::AuxFunctions::calculateAreaAndNormal
MoFEMErrorCode calculateAreaAndNormal(const MatrixDouble &diff_n)
Definition: GriffithForceElement.hpp:159
m
FTensor::Index< 'm', 3 > m
Definition: shallow_wave.cpp:80
MoFEMFunctionBeginHot
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:453
FractureMechanics::GriffithForceElement::AuxFunctions::calculateMatA
MoFEMErrorCode calculateMatA(const MatrixDouble &diff_n)
Definition: GriffithForceElement.hpp:180