v0.9.1
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 1000 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 1001 of file EshelbianPlasticity.hpp.

1005  : OpAssembleVolume(row_field, col_field, data_ptr, OPROWCOL,
1006  assemble_off) {
1007  sYmm = false;
1008  }
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 1749 of file EshelbianOperators.cpp.

1750  {
1752  // int nb_integration_pts = row_data.getN().size1();
1753  // int row_nb_dofs = row_data.getIndices().size();
1754  // int col_nb_dofs = col_data.getIndices().size();
1755 
1756  // auto get_ftensor3 = [](MatrixDouble &m, const int r, const int c) {
1757  // return FTensor::Christof<FTensor::PackPtr<double *, 6>, 3, 3>(
1758 
1759  // &m(r + 0, c + 0), &m(r + 0, c + 1), &m(r + 0, c + 2), &m(r + 0, c +
1760  // 3), &m(r + 0, c + 4), &m(r + 0, c + 5),
1761 
1762  // &m(r + 1, c + 0), &m(r + 1, c + 1), &m(r + 1, c + 2), &m(r + 1, c +
1763  // 3), &m(r + 1, c + 4), &m(r + 1, c + 5),
1764 
1765  // &m(r + 2, c + 0), &m(r + 2, c + 1), &m(r + 2, c + 2), &m(r + 2, c +
1766  // 3), &m(r + 2, c + 4), &m(r + 2, c + 5)
1767 
1768  // );
1769  // };
1770 
1771  // FTensor::Index<'i', 3> i;
1772  // FTensor::Index<'j', 3> j;
1773  // FTensor::Index<'k', 3> k;
1774  // FTensor::Index<'l', 3> l;
1775  // FTensor::Index<'m', 3> m;
1776  // FTensor::Index<'n', 3> n;
1777 
1778  // auto v = getVolume();
1779  // auto t_w = getFTensor0IntegrationWeight();
1780  // auto t_approx_P = getFTensor2FromMat<3, 3>(*(dataAtPts->approxPAtPts));
1781  // auto t_R = getFTensor2FromMat<3, 3>(*(dataAtPts->rotMatAtPts));
1782  // auto t_u =
1783  // getFTensor2SymmetricFromMat<3>(*(dataAtPts->streachTensorAtPts)); auto
1784 
1785  // int row_nb_base_functions = row_data.getN().size2();
1786  // auto t_row_base_fun = row_data.getFTensor0N();
1787 
1788  // for (int gg = 0; gg != nb_integration_pts; ++gg) {
1789  // double a = v * t_w;
1790 
1791  // FTensor::Tensor4<double, 3, 3, 3, 3> t_PhT_du;
1792  // t_PhT_du(i, j, k, l) = t_approx_P(i, l) * t_R(j, k);
1793 
1794  // FTensor::Tensor3<double, 3, 3, 3> t_levi;
1795  // t_levi(i, j, k) = levi_civita(i, j, k);
1796  // FTensor::Tensor3<double, 3, 3, 3> t_leviPhT_du;
1797  // t_leviPhT_du(n, k, l) = 0;
1798  // for (int ii : {0, 1, 2})
1799  // for (int jj : {0, 1, 2})
1800  // for (int nn : {0, 1, 2})
1801  // for (int kk : {0, 1, 2})
1802  // for (int ll : {0, 1, 2})
1803  // t_leviPhT_du(nn, kk, ll) += t_levi(ii, jj, nn) *
1804  // t_PhT_du(ii, jj, kk, ll);
1805 
1806  // int rr = 0;
1807  // for (; rr != row_nb_dofs / 3; ++rr) {
1808 
1809  // auto t_col_base_fun = col_data.getFTensor0N(gg, 0);
1810  // auto t_m = get_ftensor3(K, 3 * rr, 0);
1811  // for (int cc = 0; cc != col_nb_dofs / 6; ++cc) {
1812 
1813  // const double b = a * t_row_base_fun * t_col_base_fun;
1814 
1815  // for (int ii : {0, 1, 2})
1816  // for (int jj : {0, 1, 2})
1817  // for (int kk : {0, 1, 2})
1818  // t_m(ii, jj, kk) += b * t_leviPhT_du(ii, jj, kk);
1819 
1820  // ++t_m;
1821  // ++t_col_base_fun;
1822  // }
1823 
1824  // ++t_row_base_fun;
1825  // }
1826 
1827  // for (; rr != row_nb_base_functions; ++rr)
1828  // ++t_row_base_fun;
1829  // ++t_w;
1830  // ++t_approx_P;
1831  // ++t_R;
1832  // ++t_u;
1833  // }
1835 }
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412

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