v0.9.0
Public Member Functions | List of all members
EshelbianPlasticity::OpSpatialRotation_domega_du Struct Reference

#include <users_modules/eshelbian_plasticty/src/EshelbianPlasticity.hpp>

Inheritance diagram for EshelbianPlasticity::OpSpatialRotation_domega_du:
[legend]
Collaboration diagram for EshelbianPlasticity::OpSpatialRotation_domega_du:
[legend]

Public Member Functions

 OpSpatialRotation_domega_du (const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
 
MoFEMErrorCode integrate (EntData &row_data, EntData &col_data)
 
- Public Member Functions inherited from EshelbianPlasticity::OpAssembleVolume
 OpAssembleVolume (const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
 
 OpAssembleVolume (const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
 
- Public Member Functions inherited from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >
 OpAssembleBasic (const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
 
 OpAssembleBasic (const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
 
virtual MoFEMErrorCode integrate (EntData &data)
 
virtual MoFEMErrorCode integrate (int row_side, EntityType row_type, EntData &data)
 
virtual MoFEMErrorCode assemble (EntData &data)
 
virtual MoFEMErrorCode assemble (int row_side, EntityType row_type, EntData &data)
 
virtual MoFEMErrorCode assemble (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
 
MoFEMErrorCode doWork (int side, EntityType type, EntData &data)
 
MoFEMErrorCode doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
 

Additional Inherited Members

- Public Attributes inherited from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >
const bool assembleSymmetry
 
boost::shared_ptr< DataAtIntegrationPtsdataAtPts
 data at integration pts More...
 
VectorDouble nF
 local right hand side vector More...
 
MatrixDouble K
 local tangent matrix More...
 
MatrixDouble transposeK
 

Detailed Description

Definition at line 1064 of file EshelbianPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpSpatialRotation_domega_du()

EshelbianPlasticity::OpSpatialRotation_domega_du::OpSpatialRotation_domega_du ( const std::string &  row_field,
const std::string &  col_field,
boost::shared_ptr< DataAtIntegrationPts > &  data_ptr,
const bool  assemble_off = false 
)

Definition at line 1065 of file EshelbianPlasticity.hpp.

1069  : OpAssembleVolume(row_field, col_field, data_ptr, OPROWCOL,
1070  assemble_off) {
1071  sYmm = false;
1072  }
OpAssembleVolume(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)

Member Function Documentation

◆ integrate()

MoFEMErrorCode EshelbianPlasticity::OpSpatialRotation_domega_du::integrate ( EntData row_data,
EntData col_data 
)
virtual

Reimplemented from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >.

Definition at line 1442 of file EshelbianOperators.cpp.

1443  {
1445  // int nb_integration_pts = row_data.getN().size1();
1446  // int row_nb_dofs = row_data.getIndices().size();
1447  // int col_nb_dofs = col_data.getIndices().size();
1448 
1449  // auto get_ftensor3 = [](MatrixDouble &m, const int r, const int c) {
1450  // return FTensor::Christof<FTensor::PackPtr<double *, 6>, 3, 3>(
1451 
1452  // &m(r + 0, c + 0), &m(r + 0, c + 1), &m(r + 0, c + 2), &m(r + 0, c + 3),
1453  // &m(r + 0, c + 4), &m(r + 0, c + 5),
1454 
1455  // &m(r + 1, c + 0), &m(r + 1, c + 1), &m(r + 1, c + 2), &m(r + 1, c + 3),
1456  // &m(r + 1, c + 4), &m(r + 1, c + 5),
1457 
1458  // &m(r + 2, c + 0), &m(r + 2, c + 1), &m(r + 2, c + 2), &m(r + 2, c + 3),
1459  // &m(r + 2, c + 4), &m(r + 2, c + 5)
1460 
1461  // );
1462  // };
1463 
1464  // FTensor::Index<'i', 3> i;
1465  // FTensor::Index<'j', 3> j;
1466  // FTensor::Index<'k', 3> k;
1467  // FTensor::Index<'l', 3> l;
1468  // FTensor::Index<'m', 3> m;
1469  // FTensor::Index<'n', 3> n;
1470 
1471  // auto v = getVolume();
1472  // auto t_w = getFTensor0IntegrationWeight();
1473  // auto t_approx_P = getFTensor2FromMat<3, 3>(*(dataAtPts->approxPAtPts));
1474  // auto t_R = getFTensor2FromMat<3, 3>(*(dataAtPts->rotMatAtPts));
1475  // auto t_u = getFTensor2SymmetricFromMat<3>(*(dataAtPts->streachTensorAtPts));
1476  // auto t_x_grad = getFTensor2FromMat<3, 3>(*(dataAtPts->xGradAtPts));
1477  // auto t_delta_h = getFTensor2FromMat<3, 3>(*(dataAtPts->hDeltaAtPts));
1478 
1479  // int row_nb_base_functions = row_data.getN().size2();
1480  // auto t_row_base_fun = row_data.getFTensor0N();
1481 
1482  // for (int gg = 0; gg != nb_integration_pts; ++gg) {
1483  // double a = v * t_w;
1484 
1485  // FTensor::Tensor2<double, 3, 3> t_pushed_P;
1486  // t_pushed_P(i, j) = t_x_grad(j, k) * t_approx_P(i, k);
1487  // FTensor::Tensor4<double, 3, 3, 3, 3> t_pushed_PhT_du;
1488  // t_pushed_PhT_du(i, j, k, l) = t_pushed_P(i, l) * t_R(j, k);
1489 
1490  // FTensor::Tensor3<double, 3, 3, 3> t_levi;
1491  // t_levi(i, j, k) = levi_civita(i, j, k);
1492  // FTensor::Tensor3<double, 3, 3, 3> t_leviPhT_du;
1493  // t_leviPhT_du(n, k, l) = 0;
1494  // for (int ii : {0, 1, 2})
1495  // for (int jj : {0, 1, 2})
1496  // for (int nn : {0, 1, 2})
1497  // for (int kk : {0, 1, 2})
1498  // for (int ll : {0, 1, 2})
1499  // t_leviPhT_du(nn, kk, ll) += t_levi(ii, jj, nn) *
1500  // t_pushed_PhT_du(ii, jj, kk, ll);
1501 
1502 
1503  // int rr = 0;
1504  // for (; rr != row_nb_dofs / 3; ++rr) {
1505 
1506  // auto t_col_base_fun = col_data.getFTensor0N(gg, 0);
1507  // auto t_m = get_ftensor3(K, 3 * rr, 0);
1508  // for (int cc = 0; cc != col_nb_dofs / 6; ++cc) {
1509 
1510  // const double b = a * t_row_base_fun * t_col_base_fun;
1511 
1512  // for (int ii : {0, 1, 2})
1513  // for (int jj : {0, 1, 2})
1514  // for (int kk : {0, 1, 2})
1515  // t_m(ii, jj, kk) += b * t_leviPhT_du(ii, jj, kk);
1516 
1517  // ++t_m;
1518  // ++t_col_base_fun;
1519  // }
1520 
1521  // ++t_row_base_fun;
1522  // }
1523 
1524  // for (; rr != row_nb_base_functions; ++rr)
1525  // ++t_row_base_fun;
1526  // ++t_w;
1527  // ++t_approx_P;
1528  // ++t_R;
1529  // ++t_u;
1530  // ++t_x_grad;
1531  // }
1533 }
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:477
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:407

The documentation for this struct was generated from the following files: