9 const std::string row_field_name,
const std::string col_field_name,
10 boost::shared_ptr<CommonData> common_data_ptr,
11 boost::shared_ptr<HenckyOps::CommonData> common_henky_data_ptr,
12 boost::shared_ptr<MatrixDouble> m_D_ptr)
15 commonDataPtr(common_data_ptr),
16 commonHenckyDataPtr(common_henky_data_ptr), mDPtr(m_D_ptr) {
21 EntitiesFieldData::EntData &row_data,
22 EntitiesFieldData::EntData &col_data) {
27 const size_t nb_integration_pts = row_data.getN().size1();
28 const size_t nb_row_base_functions = row_data.getN().size2();
35 getFTensor3FromMat<SPACE_DIM, SPACE_DIM, size_symm>(
resDiff);
36 auto t_D = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM, 0>(*
mDPtr);
37 auto t_logC_dC = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM>(
39 auto t_grad = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(
43 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
48 t_DLogC_dC(
i,
j,
k,
l) = t_D(
m,
n,
k,
l) * t_logC_dC(
m,
n,
i,
j);
51 t_FDLogC_dC(
i,
j,
k,
l) = t_F(
i,
m) * t_DLogC_dC(
m,
j,
k,
l);
53 t_res_diff(
i,
j,
L) = t_FDLogC_dC(
i,
j,
k,
l) * t_L(
k,
l,
L);
60 auto t_w = getFTensor0IntegrationWeight();
61 auto t_row_diff_base = row_data.getFTensor1DiffN<
SPACE_DIM>();
63 getFTensor3FromMat<SPACE_DIM, SPACE_DIM, size_symm>(
resDiff);
65 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
66 double alpha = getMeasure() * t_w;
75 t_tmp(
i,
L) = (t_res_diff(
i,
j,
L) * (alpha * t_row_diff_base(
j)));
77 auto t_col_base = col_data.getFTensor0N(gg, 0);
80 t_mat(
i,
L) -= (t_col_base * t_tmp(
i,
L));
89 for (; rr < nb_row_base_functions; ++rr)
100 const std::string row_field_name,
const std::string col_field_name,
101 boost::shared_ptr<CommonData> common_data_ptr,
102 boost::shared_ptr<HenckyOps::CommonData> comman_henky_data_ptr,
103 boost::shared_ptr<MatrixDouble> m_D_ptr)
106 commonDataPtr(common_data_ptr),
107 commonHenckyDataPtr(comman_henky_data_ptr), mDPtr(m_D_ptr) {
112 EntitiesFieldData::EntData &row_data,
113 EntitiesFieldData::EntData &col_data) {
118 const auto nb_integration_pts = getGaussPts().size2();
119 const auto nb_row_base_functions = row_data.getN().size2();
127 getFTensor3FromMat<size_symm, SPACE_DIM, SPACE_DIM>(
resDiff);
129 auto t_res_flow_dstrain = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM>(
132 getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*(
commonDataPtr->mGradPtr));
133 auto t_logC_dC = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM>(
137 ++t_res_flow_dstrain;
149 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
155 t_diff_ls_dlogC_dC(
i,
j,
k,
l) =
156 (t_res_flow_dstrain(
i,
j,
m,
n)) * (t_logC_dC(
m,
n,
k,
l) / 2);
162 t_res_diff(
L,
i,
j) =
163 (t_L(
m,
n,
L) * t_diff_ls_dlogC_dC(
m,
n,
k,
l)) * t_dC_dF(
k,
l,
i,
j);
169 getFTensor3FromMat<size_symm, SPACE_DIM, SPACE_DIM>(
resDiff);
171 auto t_w = getFTensor0IntegrationWeight();
172 auto t_row_base = row_data.getFTensor0N();
173 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
174 double alpha = getMeasure() * t_w;
179 const auto row_base = alpha * t_row_base;
182 auto t_col_diff_base = col_data.getFTensor1DiffN<
SPACE_DIM>(gg, 0);
184 t_mat(
L,
l) += row_base * (t_res_diff(
L,
l,
k) * t_col_diff_base(
k));
191 for (; rr < nb_row_base_functions; ++rr)
201 const std::string row_field_name,
const std::string col_field_name,
202 boost::shared_ptr<CommonData> common_data_ptr,
203 boost::shared_ptr<HenckyOps::CommonData> comman_henky_data_ptr,
204 boost::shared_ptr<MatrixDouble> m_D_ptr)
207 commonDataPtr(common_data_ptr),
208 commonHenckyDataPtr(comman_henky_data_ptr), mDPtr(m_D_ptr) {
213 EntitiesFieldData::EntData &row_data,
214 EntitiesFieldData::EntData &col_data) {
222 const auto nb_integration_pts = getGaussPts().size2();
223 const auto nb_row_base_functions = row_data.getN().size2();
229 auto t_res_diff = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(
resDiff);
231 getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(*(
commonDataPtr->mGradPtr));
232 auto t_logC_dC = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM>(
235 getFTensor2SymmetricFromMat<SPACE_DIM>(
commonDataPtr->resCdStrain);
246 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
252 t_diff_ls_dlog_c(
k,
l) =
253 (t_c_dstrain(
i,
j)) * (t_logC_dC(
i,
j,
k,
l) / 2);
258 t_res_diff(
i,
j) = (t_diff_ls_dlog_c(
k,
l) * t_dC_dF(
k,
l,
i,
j));
263 auto t_res_diff = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(
resDiff);
265 auto t_w = getFTensor0IntegrationWeight();
266 auto t_row_base = row_data.getFTensor0N();
267 for (
auto gg = 0; gg != nb_integration_pts; ++gg) {
268 double alpha = getMeasure() * t_w;
271 auto t_mat = getFTensor1FromPtr<SPACE_DIM>(
locMat.data().data());
274 const auto row_base = alpha * t_row_base;
275 auto t_col_diff_base = col_data.getFTensor1DiffN<
SPACE_DIM>(gg, 0);
277 t_mat(
i) += row_base * (t_res_diff(
i,
j) * t_col_diff_base(
j));
283 for (; rr != nb_row_base_functions; ++rr)
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
FTensor::Index< 'j', SPACE_DIM > j
FTensor::Index< 'L', size_symm > L
FTensor::Index< 'l', SPACE_DIM > l
FTensor::Index< 'k', SPACE_DIM > k
FTensor::Index< 'i', SPACE_DIM > i
[Common data]
FTensor::Index< 'm', SPACE_DIM > m
static FTensor::Tensor2< FTensor::PackPtr< double *, 3 >, 2, 3 > get_mat_vector_dtensor_sym(size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
FTensor::Index< 'n', SPACE_DIM > n
static auto get_mat_tensor_sym_dvector(size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
[Lambda functions]
int rowSide
row side number
int colSide
column side number
int nbRows
number of dofs on rows
EntityType colType
column type
MatrixDouble locMat
local entity block matrix
int nbCols
number if dof on column
EntityType rowType
row type
MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
boost::shared_ptr< CommonData > commonDataPtr
boost::shared_ptr< HenckyOps::CommonData > commonHenckyDataPtr
OpCalculateConstraintsLhs_LogStrain_dU(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< CommonData > common_data_ptr, boost::shared_ptr< HenckyOps::CommonData > comman_henky_data_ptr, boost::shared_ptr< MatrixDouble > m_D_ptr)
MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
OpCalculatePlasticFlowLhs_LogStrain_dU(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< CommonData > common_data_ptr, boost::shared_ptr< HenckyOps::CommonData > comman_henky_data_ptr, boost::shared_ptr< MatrixDouble > m_D_ptr)
boost::shared_ptr< HenckyOps::CommonData > commonHenckyDataPtr
boost::shared_ptr< CommonData > commonDataPtr
boost::shared_ptr< HenckyOps::CommonData > commonHenckyDataPtr
OpCalculatePlasticInternalForceLhs_LogStrain_dEP(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< CommonData > common_data_ptr, boost::shared_ptr< HenckyOps::CommonData > common_henky_data_ptr, boost::shared_ptr< MatrixDouble > m_D_ptr)
boost::shared_ptr< MatrixDouble > mDPtr
MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)