v0.13.0
Classes | Functions | Variables
PlasticOps Namespace Reference

Classes

struct  CommonData
 [Common data] More...
 
struct  OpCalculatePlasticSurface
 [Operators definitions] More...
 
struct  OpPlasticStress
 
struct  OpCalculatePlasticFlowRhs
 
struct  OpCalculateContrainsRhs
 
struct  OpCalculatePlasticInternalForceLhs_dEP
 
struct  OpCalculatePlasticInternalForceLhs_LogStrain_dEP
 
struct  OpCalculatePlasticFlowLhs_dU
 
struct  OpCalculatePlasticFlowLhs_LogStrain_dU
 
struct  OpCalculatePlasticFlowLhs_dEP
 
struct  OpCalculatePlasticFlowLhs_dTAU
 
struct  OpCalculateContrainsLhs_dU
 
struct  OpCalculateContrainsLhs_LogStrain_dU
 
struct  OpCalculateContrainsLhs_dEP
 
struct  OpCalculateContrainsLhs_dTAU
 
struct  OpPostProcPlastic
 
struct  Monitor
 

Functions

auto diff_tensor ()
 [Operators definitions] More...
 
auto symm_L_tensor ()
 
auto diff_symmetrize ()
 
template<typename T >
double trace (FTensor::Tensor2_symmetric< T, SPACE_DIM > &t_stress)
 
template<typename T >
auto deviator (FTensor::Tensor2_symmetric< T, SPACE_DIM > &t_stress, double trace)
 
auto diff_deviator (FTensor::Ddg< double, SPACE_DIM, SPACE_DIM > &&t_diff_stress)
 
double platsic_surface (FTensor::Tensor2_symmetric< double, 3 > &&t_stress_deviator)
 
auto plastic_flow (long double f, FTensor::Tensor2_symmetric< double, 3 > &&t_dev_stress, FTensor::Ddg< double, 3, SPACE_DIM > &&t_diff_deviator)
 
template<typename T >
auto diff_plastic_flow_dstress (long double f, FTensor::Tensor2_symmetric< T, SPACE_DIM > &t_flow, FTensor::Ddg< double, 3, SPACE_DIM > &&t_diff_deviator)
 
template<typename T >
auto diff_plastic_flow_dstrain (FTensor::Ddg< T, SPACE_DIM, SPACE_DIM > &t_D, FTensor::Ddg< double, SPACE_DIM, SPACE_DIM > &&t_diff_plastic_flow_dstress)
 
double constrain_abs (long double x)
 
double constrian_sign (long double x)
 
double w (long double dot_tau, long double f, long double sigma_y)
 
double constrain (long double dot_tau, long double f, long double sigma_y)
 
double diff_constrain_ddot_tau (long double dot_tau, long double f, long double sigma_y)
 
auto diff_constrain_df (long double dot_tau, long double f, long double sigma_y)
 
auto diff_constrain_dsigma_y (long double dot_tau, long double f, long double sigma_y)
 
template<typename T >
auto diff_constrain_dstress (double &&diff_constrain_df, FTensor::Tensor2_symmetric< T, SPACE_DIM > &t_plastic_flow)
 
template<typename T1 , typename T2 >
auto diff_constrain_dstrain (T1 &t_D, T2 &&t_diff_constrain_dstress)
 
static FTensor::Tensor3< FTensor::PackPtr< double *, 2 >, 2, 2, 2 > get_mat_tensor_sym_dvector (size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
 [Lambda functions] More...
 
static FTensor::Tensor3< FTensor::PackPtr< double *, 3 >, 3, 3, 3 > get_mat_tensor_sym_dvector (size_t rr, MatrixDouble &mat, FTensor::Number< 3 >)
 
static auto get_mat_scalar_dvector (MatrixDouble &mat, FTensor::Number< 2 >)
 
static auto get_mat_scalar_dvector (MatrixDouble &mat, FTensor::Number< 3 >)
 
static FTensor::Tensor2< FTensor::PackPtr< double *, 3 >, 2, 2 > get_nf (VectorDouble &nf, FTensor::Number< 2 >)
 
static FTensor::Tensor2< FTensor::PackPtr< double *, 6 >, 3, 3 > get_nf (VectorDouble &nf, FTensor::Number< 3 >)
 
static FTensor::Tensor2< FTensor::PackPtr< double *, 3 >, 2, 3 > get_mat_vector_dtensor_sym (size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
 
static FTensor::Tensor2< FTensor::PackPtr< double *, 6 >, 3, 6 > get_mat_vector_dtensor_sym (size_t rr, MatrixDouble &mat, FTensor::Number< 3 >)
 
static auto get_mat_tensor_sym_dtensor_sym (size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
 
static auto get_mat_tensor_sym_dtensor_sym (size_t rr, MatrixDouble &mat, FTensor::Number< 3 >)
 
static auto get_mat_tensor_sym_dscalar (size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
 
static auto get_mat_tensor_sym_dscalar (size_t rr, MatrixDouble &mat, FTensor::Number< 3 >)
 
auto get_mat_scalar_dtensor_sym (MatrixDouble &mat, FTensor::Number< 2 >)
 
auto get_mat_scalar_dtensor_sym (MatrixDouble &mat, FTensor::Number< 3 >)
 

Variables

FTensor::Index< 'j', SPACE_DIMj
 [Common data] More...
 
FTensor::Index< 'k', SPACE_DIMk
 
FTensor::Index< 'l', SPACE_DIMl
 
FTensor::Index< 'm', SPACE_DIMm
 
FTensor::Index< 'i', SPACE_DIMi
 
FTensor::Index< 'n', SPACE_DIMn
 
FTensor::Index< 'I', 3 > I
 
FTensor::Index< 'J', 3 > J
 
FTensor::Index< 'M', 3 > M
 
FTensor::Index< 'N', 3 > N
 
FTensor::Index< 'L',(SPACE_DIM *(SPACE_DIM+1))/2 > L
 

Function Documentation

◆ constrain()

double PlasticOps::constrain ( long double  dot_tau,
long double  f,
long double  sigma_y 
)

\[ \dot{\tau} - \frac{1}{2}\left\{\dot{\tau} + (f(\pmb\sigma) - \sigma_y) + \| \dot{\tau} + (f(\pmb\sigma) - \sigma_y) \|\right\} = 0 \\ c_n \sigma_y \dot{\tau} - \frac{1}{2}\left\{c_n\sigma_y \dot{\tau} + (f(\pmb\sigma) - \sigma_y) + \| c_n \sigma_y \dot{\tau} + (f(\pmb\sigma) - \sigma_y) \|\right\} = 0 \]

Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 491 of file PlasticOps.hpp.

492  {
493  return visH * dot_tau +
494  (sigmaY / 2) * ((cn * dot_tau - (f - sigma_y) / sigmaY) -
495  constrain_abs(w(dot_tau, f, sigma_y)));
496 };
double w(long double dot_tau, long double f, long double sigma_y)
Definition: PlasticOps.hpp:476
double constrain_abs(long double x)
Definition: PlasticOps.hpp:463
double visH
Definition: plastic.cpp:110
double sigmaY
Definition: plastic.cpp:108
double cn
Definition: plastic.cpp:111

◆ constrain_abs()

double PlasticOps::constrain_abs ( long double  x)
Examples
PlasticOps.hpp.

Definition at line 463 of file PlasticOps.hpp.

463  {
464  return std::abs(x);
465 };

◆ constrian_sign()

double PlasticOps::constrian_sign ( long double  x)
Examples
PlasticOps.hpp.

Definition at line 467 of file PlasticOps.hpp.

467  {
468  if (x > 0)
469  return 1;
470  else if (x < 0)
471  return -1;
472  else
473  return 0;
474 };

◆ deviator()

template<typename T >
auto PlasticOps::deviator ( FTensor::Tensor2_symmetric< T, SPACE_DIM > &  t_stress,
double  trace 
)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 360 of file PlasticOps.hpp.

361  {
363  t_dev(I, J) = 0;
364  for (int ii = 0; ii != SPACE_DIM; ++ii)
365  for (int jj = ii; jj != SPACE_DIM; ++jj)
366  t_dev(ii, jj) = t_stress(ii, jj);
367  t_dev(0, 0) -= trace;
368  t_dev(1, 1) -= trace;
369  t_dev(2, 2) -= trace;
370  return t_dev;
371 };
static Index< 'J', 3 > J
static Index< 'I', 3 > I
constexpr int SPACE_DIM
double trace(FTensor::Tensor2_symmetric< T, SPACE_DIM > &t_stress)
Definition: PlasticOps.hpp:351

◆ diff_constrain_ddot_tau()

double PlasticOps::diff_constrain_ddot_tau ( long double  dot_tau,
long double  f,
long double  sigma_y 
)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 498 of file PlasticOps.hpp.

499  {
500  return visH +
501  (sigmaY / 2) * (cn - cn * constrian_sign(w(dot_tau, f, sigma_y)));
502 };
double constrian_sign(long double x)
Definition: PlasticOps.hpp:467

◆ diff_constrain_df()

auto PlasticOps::diff_constrain_df ( long double  dot_tau,
long double  f,
long double  sigma_y 
)
Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 504 of file PlasticOps.hpp.

505  {
506  return (-1 - constrian_sign(w(dot_tau, f, sigma_y))) / 2;
507 };

◆ diff_constrain_dsigma_y()

auto PlasticOps::diff_constrain_dsigma_y ( long double  dot_tau,
long double  f,
long double  sigma_y 
)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 509 of file PlasticOps.hpp.

510  {
511  return (1 + constrian_sign(w(dot_tau, f, sigma_y))) / 2;
512 }

◆ diff_constrain_dstrain()

template<typename T1 , typename T2 >
auto PlasticOps::diff_constrain_dstrain ( T1 &  t_D,
T2 &&  t_diff_constrain_dstress 
)
Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 524 of file PlasticOps.hpp.

524  {
525  FTensor::Tensor2_symmetric<double, SPACE_DIM> t_diff_constrain_dstrain;
526  t_diff_constrain_dstrain(k, l) =
527  t_diff_constrain_dstress(i, j) * t_D(i, j, k, l);
528  return t_diff_constrain_dstrain;
529 };
FTensor::Index< 'j', SPACE_DIM > j
[Common data]
Definition: PlasticOps.hpp:91
FTensor::Index< 'l', SPACE_DIM > l
Definition: PlasticOps.hpp:93
FTensor::Index< 'k', SPACE_DIM > k
Definition: PlasticOps.hpp:92
FTensor::Index< 'i', SPACE_DIM > i
Definition: PlasticOps.hpp:95

◆ diff_constrain_dstress()

template<typename T >
auto PlasticOps::diff_constrain_dstress ( double &&  diff_constrain_df,
FTensor::Tensor2_symmetric< T, SPACE_DIM > &  t_plastic_flow 
)
Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 515 of file PlasticOps.hpp.

517  {
518  FTensor::Tensor2_symmetric<double, SPACE_DIM> t_diff_constrain_dstress;
519  t_diff_constrain_dstress(i, j) = diff_constrain_df * t_plastic_flow(i, j);
520  return t_diff_constrain_dstress;
521 };
auto diff_constrain_df(long double dot_tau, long double f, long double sigma_y)
Definition: PlasticOps.hpp:504

◆ diff_deviator()

auto PlasticOps::diff_deviator ( FTensor::Ddg< double, SPACE_DIM, SPACE_DIM > &&  t_diff_stress)
Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 374 of file PlasticOps.hpp.

374  {
375  FTensor::Ddg<double, 3, SPACE_DIM> t_diff_deviator;
376  t_diff_deviator(I, J, k, l) = 0;
377  for (int ii = 0; ii != SPACE_DIM; ++ii)
378  for (int jj = ii; jj != SPACE_DIM; ++jj)
379  for (int kk = 0; kk != SPACE_DIM; ++kk)
380  for (int ll = kk; ll != SPACE_DIM; ++ll)
381  t_diff_deviator(ii, jj, kk, ll) = t_diff_stress(ii, jj, kk, ll);
382 
383  constexpr double third = boost::math::constants::third<double>();
384 
385  t_diff_deviator(0, 0, 0, 0) -= third;
386  t_diff_deviator(0, 0, 1, 1) -= third;
387 
388  t_diff_deviator(1, 1, 0, 0) -= third;
389  t_diff_deviator(1, 1, 1, 1) -= third;
390 
391  t_diff_deviator(2, 2, 0, 0) -= third;
392  t_diff_deviator(2, 2, 1, 1) -= third;
393 
394  if (SPACE_DIM == 3) {
395  t_diff_deviator(0, 0, 2, 2) -= third;
396  t_diff_deviator(1, 1, 2, 2) -= third;
397  t_diff_deviator(2, 2, 2, 2) -= third;
398  }
399 
400  return t_diff_deviator;
401 };
constexpr double third

◆ diff_plastic_flow_dstrain()

template<typename T >
auto PlasticOps::diff_plastic_flow_dstrain ( FTensor::Ddg< T, SPACE_DIM, SPACE_DIM > &  t_D,
FTensor::Ddg< double, SPACE_DIM, SPACE_DIM > &&  t_diff_plastic_flow_dstress 
)
Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 454 of file PlasticOps.hpp.

456  {
458  t_diff_flow(i, j, k, l) =
459  t_diff_plastic_flow_dstress(i, j, m, n) * t_D(m, n, k, l);
460  return t_diff_flow;
461 };
FTensor::Index< 'n', SPACE_DIM > n
Definition: PlasticOps.hpp:96
FTensor::Index< 'm', 3 > m

◆ diff_plastic_flow_dstress()

template<typename T >
auto PlasticOps::diff_plastic_flow_dstress ( long double  f,
FTensor::Tensor2_symmetric< T, SPACE_DIM > &  t_flow,
FTensor::Ddg< double, 3, SPACE_DIM > &&  t_diff_deviator 
)
Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 442 of file PlasticOps.hpp.

444  {
446  t_diff_flow(i, j, k, l) =
447  (1.5 * (t_diff_deviator(M, N, i, j) * t_diff_deviator(M, N, k, l) -
448  (2. / 3.) * t_flow(i, j) * t_flow(k, l))) /
449  f;
450  return t_diff_flow;
451 };
static Index< 'M', 3 > M
const int N
Definition: speed_test.cpp:3

◆ diff_symmetrize()

auto PlasticOps::diff_symmetrize ( )
Examples
PlasticOps.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 320 of file PlasticOps.hpp.

320  {
322 
323  t_diff(i, j, k, l) = 0;
324  t_diff(0, 0, 0, 0) = 1;
325  t_diff(1, 1, 1, 1) = 1;
326 
327  t_diff(1, 0, 1, 0) = 0.5;
328  t_diff(1, 0, 0, 1) = 0.5;
329 
330  t_diff(0, 1, 0, 1) = 0.5;
331  t_diff(0, 1, 1, 0) = 0.5;
332 
333  if (SPACE_DIM == 3) {
334  t_diff(2, 2, 2, 2) = 1;
335 
336  t_diff(2, 0, 2, 0) = 0.5;
337  t_diff(2, 0, 0, 2) = 0.5;
338  t_diff(0, 2, 0, 2) = 0.5;
339  t_diff(0, 2, 2, 0) = 0.5;
340 
341  t_diff(2, 1, 2, 1) = 0.5;
342  t_diff(2, 1, 1, 2) = 0.5;
343  t_diff(1, 2, 1, 2) = 0.5;
344  t_diff(1, 2, 2, 1) = 0.5;
345  }
346 
347  return t_diff;
348 };

◆ diff_tensor()

auto PlasticOps::diff_tensor ( )

[Operators definitions]

[Lambda functions]

Examples
PlasticOps.hpp, PlasticOpsGeneric.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 294 of file PlasticOps.hpp.

294  {
297  t_diff(i, j, k, l) = (t_kd(i, k) ^ t_kd(j, l)) / 4.;
298  return t_diff;
299 };
Kronecker Delta class symmetric.
constexpr auto t_kd

◆ get_mat_scalar_dtensor_sym() [1/2]

auto PlasticOps::get_mat_scalar_dtensor_sym ( MatrixDouble &  mat,
FTensor::Number< 2 >   
)
Examples
PlasticOpsGeneric.hpp, and PlasticThermalOps.hpp.

Definition at line 609 of file PlasticOpsGeneric.hpp.

609  {
611  &mat(0, 0), &mat(0, 1), &mat(0, 2)};
612 }

◆ get_mat_scalar_dtensor_sym() [2/2]

auto PlasticOps::get_mat_scalar_dtensor_sym ( MatrixDouble &  mat,
FTensor::Number< 3 >   
)

Definition at line 614 of file PlasticOpsGeneric.hpp.

614  {
616  &mat(0, 0), &mat(0, 1), &mat(0, 2), &mat(0, 3), &mat(0, 4), &mat(0, 5)};
617 }

◆ get_mat_scalar_dvector() [1/2]

static auto PlasticOps::get_mat_scalar_dvector ( MatrixDouble &  mat,
FTensor::Number< 2 >   
)
static
Examples
PlasticOps.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 555 of file PlasticOps.hpp.

556  {
558  &mat(0, 1)};
559 }

◆ get_mat_scalar_dvector() [2/2]

static auto PlasticOps::get_mat_scalar_dvector ( MatrixDouble &  mat,
FTensor::Number< 3 >   
)
static

Definition at line 561 of file PlasticOps.hpp.

562  {
564  &mat(0, 0), &mat(0, 1), &mat(0, 2)};
565 }

◆ get_mat_tensor_sym_dscalar() [1/2]

static auto PlasticOps::get_mat_tensor_sym_dscalar ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 2 >   
)
static
Examples
PlasticOpsGeneric.hpp.

Definition at line 538 of file PlasticOpsGeneric.hpp.

539  {
541  &mat(3 * rr + 0, 0), &mat(3 * rr + 1, 0), &mat(3 * rr + 1, 0),
542  &mat(3 * rr + 2, 0)};
543 }

◆ get_mat_tensor_sym_dscalar() [2/2]

static auto PlasticOps::get_mat_tensor_sym_dscalar ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 3 >   
)
static

Definition at line 545 of file PlasticOpsGeneric.hpp.

546  {
548  &mat(6 * rr + 0, 0), &mat(6 * rr + 1, 0), &mat(6 * rr + 2, 0),
549  &mat(6 * rr + 1, 0), &mat(6 * rr + 3, 0), &mat(6 * rr + 4, 0),
550  &mat(6 * rr + 2, 0), &mat(6 * rr + 4, 0), &mat(6 * rr + 5, 0)};
551 }

◆ get_mat_tensor_sym_dtensor_sym() [1/2]

static auto PlasticOps::get_mat_tensor_sym_dtensor_sym ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 2 >   
)
static
Examples
PlasticOpsGeneric.hpp.

Definition at line 409 of file PlasticOpsGeneric.hpp.

410  {
412  &mat(3 * rr + 0, 0), &mat(3 * rr + 0, 1), &mat(3 * rr + 0, 1),
413  &mat(3 * rr + 0, 2), &mat(3 * rr + 1, 0), &mat(3 * rr + 1, 1),
414  &mat(3 * rr + 1, 1), &mat(3 * rr + 1, 2), &mat(3 * rr + 1, 0),
415  &mat(3 * rr + 1, 1), &mat(3 * rr + 1, 1), &mat(3 * rr + 1, 2),
416  &mat(3 * rr + 2, 0), &mat(3 * rr + 2, 1), &mat(3 * rr + 2, 1),
417  &mat(3 * rr + 2, 2)};
418 }

◆ get_mat_tensor_sym_dtensor_sym() [2/2]

static auto PlasticOps::get_mat_tensor_sym_dtensor_sym ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 3 >   
)
static

Definition at line 420 of file PlasticOpsGeneric.hpp.

421  {
423 
424  &mat(6 * rr + 0, 0), &mat(6 * rr + 0, 1), &mat(6 * rr + 0, 2),
425  &mat(6 * rr + 0, 1), &mat(6 * rr + 0, 3), &mat(6 * rr + 0, 4),
426  &mat(6 * rr + 0, 2), &mat(6 * rr + 0, 4), &mat(6 * rr + 0, 5),
427 
428  &mat(6 * rr + 1, 0), &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 2),
429  &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 3), &mat(6 * rr + 1, 4),
430  &mat(6 * rr + 1, 2), &mat(6 * rr + 1, 4), &mat(6 * rr + 1, 5),
431 
432  &mat(6 * rr + 2, 0), &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 2),
433  &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 3), &mat(6 * rr + 2, 4),
434  &mat(6 * rr + 2, 2), &mat(6 * rr + 2, 4), &mat(6 * rr + 2, 5),
435 
436  &mat(6 * rr + 1, 0), &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 2),
437  &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 3), &mat(6 * rr + 1, 4),
438  &mat(6 * rr + 1, 2), &mat(6 * rr + 1, 4), &mat(6 * rr + 1, 5),
439 
440  &mat(6 * rr + 3, 0), &mat(6 * rr + 3, 1), &mat(6 * rr + 3, 2),
441  &mat(6 * rr + 3, 1), &mat(6 * rr + 3, 3), &mat(6 * rr + 3, 4),
442  &mat(6 * rr + 3, 2), &mat(6 * rr + 3, 4), &mat(6 * rr + 3, 5),
443 
444  &mat(6 * rr + 4, 0), &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 2),
445  &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 3), &mat(6 * rr + 4, 4),
446  &mat(6 * rr + 4, 2), &mat(6 * rr + 4, 4), &mat(6 * rr + 4, 5),
447 
448  &mat(6 * rr + 2, 0), &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 2),
449  &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 3), &mat(6 * rr + 2, 4),
450  &mat(6 * rr + 2, 2), &mat(6 * rr + 2, 4), &mat(6 * rr + 2, 5),
451 
452  &mat(6 * rr + 4, 0), &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 2),
453  &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 3), &mat(6 * rr + 4, 4),
454  &mat(6 * rr + 4, 2), &mat(6 * rr + 4, 4), &mat(6 * rr + 4, 5),
455 
456  &mat(6 * rr + 5, 0), &mat(6 * rr + 5, 1), &mat(6 * rr + 5, 2),
457  &mat(6 * rr + 5, 1), &mat(6 * rr + 5, 3), &mat(6 * rr + 5, 4),
458  &mat(6 * rr + 5, 2), &mat(6 * rr + 5, 4), &mat(6 * rr + 5, 5)};
459 }

◆ get_mat_tensor_sym_dvector() [1/2]

static FTensor::Tensor3<FTensor::PackPtr<double *, 2>, 2, 2, 2> PlasticOps::get_mat_tensor_sym_dvector ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 2 >   
)
static

[Lambda functions]

[Auxiliary functions functions

Examples
PlasticOps.hpp, PlasticOpsLargeStrains.hpp, and PlasticOpsSmallStrains.hpp.

Definition at line 534 of file PlasticOps.hpp.

534  {
536  &mat(3 * rr + 0, 0), &mat(3 * rr + 0, 1), &mat(3 * rr + 1, 0),
537  &mat(3 * rr + 1, 1), &mat(3 * rr + 1, 0), &mat(3 * rr + 1, 1),
538  &mat(3 * rr + 2, 0), &mat(3 * rr + 2, 1)};
539 }

◆ get_mat_tensor_sym_dvector() [2/2]

static FTensor::Tensor3<FTensor::PackPtr<double *, 3>, 3, 3, 3> PlasticOps::get_mat_tensor_sym_dvector ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 3 >   
)
static

Definition at line 542 of file PlasticOps.hpp.

542  {
544  &mat(6 * rr + 0, 0), &mat(6 * rr + 0, 1), &mat(6 * rr + 0, 2),
545  &mat(6 * rr + 1, 0), &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 2),
546  &mat(6 * rr + 2, 0), &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 2),
547  &mat(6 * rr + 1, 0), &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 2),
548  &mat(6 * rr + 3, 0), &mat(6 * rr + 3, 1), &mat(6 * rr + 3, 2),
549  &mat(6 * rr + 4, 0), &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 2),
550  &mat(6 * rr + 2, 0), &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 2),
551  &mat(6 * rr + 4, 0), &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 2),
552  &mat(6 * rr + 5, 0), &mat(6 * rr + 5, 1), &mat(6 * rr + 5, 2)};
553 }

◆ get_mat_vector_dtensor_sym() [1/2]

static FTensor::Tensor2<FTensor::PackPtr<double *, 3>, 2, 3> PlasticOps::get_mat_vector_dtensor_sym ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 2 >   
)
static
Examples
PlasticOpsGeneric.hpp.

Definition at line 224 of file PlasticOpsGeneric.hpp.

224  {
226  &mat(2 * rr + 0, 0), &mat(2 * rr + 0, 1), &mat(2 * rr + 0, 2),
227  &mat(2 * rr + 1, 0), &mat(2 * rr + 1, 1), &mat(2 * rr + 1, 2)};
228 }

◆ get_mat_vector_dtensor_sym() [2/2]

static FTensor::Tensor2<FTensor::PackPtr<double *, 6>, 3, 6> PlasticOps::get_mat_vector_dtensor_sym ( size_t  rr,
MatrixDouble &  mat,
FTensor::Number< 3 >   
)
static

Definition at line 231 of file PlasticOpsGeneric.hpp.

231  {
233  &mat(3 * rr + 0, 0), &mat(3 * rr + 0, 1), &mat(3 * rr + 0, 2),
234  &mat(3 * rr + 0, 3), &mat(3 * rr + 0, 4), &mat(3 * rr + 0, 5),
235 
236  &mat(3 * rr + 1, 0), &mat(3 * rr + 1, 1), &mat(3 * rr + 1, 2),
237  &mat(3 * rr + 1, 3), &mat(3 * rr + 1, 4), &mat(3 * rr + 1, 5),
238 
239  &mat(3 * rr + 2, 0), &mat(3 * rr + 2, 1), &mat(3 * rr + 2, 2),
240  &mat(3 * rr + 2, 3), &mat(3 * rr + 2, 4), &mat(3 * rr + 2, 5)};
241 }

◆ get_nf() [1/2]

static FTensor::Tensor2<FTensor::PackPtr<double *, 3>, 2, 2> PlasticOps::get_nf ( VectorDouble &  nf,
FTensor::Number< 2 >   
)
static
Examples
PlasticOpsGeneric.hpp.

Definition at line 102 of file PlasticOpsGeneric.hpp.

102  {
103  return FTensor::Tensor2<FTensor::PackPtr<double *, 3>, 2, 2>{&nf[0], &nf[1],
104  &nf[1], &nf[2]};
105 }

◆ get_nf() [2/2]

static FTensor::Tensor2<FTensor::PackPtr<double *, 6>, 3, 3> PlasticOps::get_nf ( VectorDouble &  nf,
FTensor::Number< 3 >   
)
static

Definition at line 108 of file PlasticOpsGeneric.hpp.

108  {
110  &nf[0], &nf[1], &nf[2], &nf[1], &nf[3], &nf[4], &nf[2], &nf[4], &nf[5]};
111 }

◆ plastic_flow()

auto PlasticOps::plastic_flow ( long double  f,
FTensor::Tensor2_symmetric< double, 3 > &&  t_dev_stress,
FTensor::Ddg< double, 3, SPACE_DIM > &&  t_diff_deviator 
)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 432 of file PlasticOps.hpp.

434  {
436  t_diff_f(k, l) =
437  (1.5 * (t_dev_stress(I, J) * t_diff_deviator(I, J, k, l))) / f;
438  return t_diff_f;
439 };

◆ platsic_surface()

double PlasticOps::platsic_surface ( FTensor::Tensor2_symmetric< double, 3 > &&  t_stress_deviator)

\[ \begin{split} f&=\sqrt{s_{ij}s_{ij}}\\ A_{ij}&=\frac{\partial f}{\partial \sigma_{ij}}= \frac{1}{f} s_{kl} \frac{\partial s_{kl}}{\partial \sigma_{ij}}\\ \frac{\partial A_{ij}}{\partial \sigma_{kl}}&= \frac{\partial^2 f}{\partial \sigma_{ij}\partial\sigma_{mn}}= \frac{1}{f} \left( \frac{\partial s_{kl}}{\partial \sigma_{mn}}\frac{\partial s_{kl}}{\partial \sigma_{ij}} -A_{mn}A_{ij} \right)\\ \frac{\partial f}{\partial \varepsilon_{ij}}&=A_{mn}D_{mnij} \\ \frac{\partial A_{ij}}{\partial \varepsilon_{kl}}&= \frac{\partial A_{ij}}{\partial \sigma_{mn}} \frac{\partial \sigma_{mn}}{\partial \varepsilon_{kl}}= \frac{\partial A_{ij}}{\partial \sigma_{mn}} D_{mnkl} \end{split} \]

Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 427 of file PlasticOps.hpp.

427  {
428  return std::sqrt(1.5 * t_stress_deviator(I, J) * t_stress_deviator(I, J)) +
429  std::numeric_limits<double>::epsilon();
430 };

◆ symm_L_tensor()

auto PlasticOps::symm_L_tensor ( )
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 301 of file PlasticOps.hpp.

301  {
302  constexpr auto size_symm = (SPACE_DIM * (SPACE_DIM + 1)) / 2;
304  t_L(i, j, L) = 0;
305  if (SPACE_DIM == 2) {
306  t_L(0, 0, 0) = 1;
307  t_L(1, 0, 1) = 1;
308  t_L(1, 1, 2) = 1;
309  } else if (SPACE_DIM == 3) {
310  t_L(0, 0, 0) = 1;
311  t_L(1, 0, 1) = 1;
312  t_L(2, 0, 2) = 1;
313  t_L(1, 1, 3) = 1;
314  t_L(2, 1, 4) = 1;
315  t_L(2, 2, 5) = 1;
316  }
317  return t_L;
318 }
static Index< 'L', 3 > L

◆ trace()

template<typename T >
double PlasticOps::trace ( FTensor::Tensor2_symmetric< T, SPACE_DIM > &  t_stress)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 351 of file PlasticOps.hpp.

351  {
352  constexpr double third = boost::math::constants::third<double>();
353  if (SPACE_DIM == 2)
354  return (t_stress(0, 0) + t_stress(1, 1)) * third;
355  else
356  return (t_stress(0, 0) + t_stress(1, 1) + t_stress(2, 2)) * third;
357 };

◆ w()

double PlasticOps::w ( long double  dot_tau,
long double  f,
long double  sigma_y 
)
Examples
PlasticOps.hpp.

Definition at line 476 of file PlasticOps.hpp.

476  {
477  return (f - sigma_y) / sigmaY + cn * dot_tau;
478 };

Variable Documentation

◆ i

FTensor::Index<'i', SPACE_DIM> PlasticOps::i

◆ I

FTensor::Index<'I', 3> PlasticOps::I
Examples
PlasticOps.hpp.

Definition at line 98 of file PlasticOps.hpp.

◆ j

FTensor::Index<'j', SPACE_DIM> PlasticOps::j

◆ J

FTensor::Index<'J', 3> PlasticOps::J
Examples
PlasticOps.hpp.

Definition at line 99 of file PlasticOps.hpp.

◆ k

FTensor::Index<'k', SPACE_DIM> PlasticOps::k

◆ l

FTensor::Index<'l', SPACE_DIM> PlasticOps::l

◆ L

FTensor::Index<'L', (SPACE_DIM * (SPACE_DIM + 1)) / 2> PlasticOps::L
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 103 of file PlasticOps.hpp.

◆ m

FTensor::Index<'m', SPACE_DIM> PlasticOps::m

◆ M

FTensor::Index<'M', 3> PlasticOps::M
Examples
PlasticOps.hpp.

Definition at line 100 of file PlasticOps.hpp.

◆ n

FTensor::Index<'n', SPACE_DIM> PlasticOps::n

◆ N

FTensor::Index<'N', 3> PlasticOps::N
Examples
PlasticOps.hpp.

Definition at line 101 of file PlasticOps.hpp.