8#ifndef __THERMO_PLASTIC_OPS_HPP__
9#define __THERMO_PLASTIC_OPS_HPP__
14 :
public boost::enable_shared_from_this<BlockedParameters> {
29 :
public boost::enable_shared_from_this<ThermoPlasticBlockedParameters> {
41 return boost::shared_ptr<double>(shared_from_this(), &
omega0);
45 return boost::shared_ptr<double>(shared_from_this(), &
omegaH);
49 return boost::shared_ptr<double>(shared_from_this(),
54 return boost::shared_ptr<double>(shared_from_this(), &
temp0);
58 return boost::shared_ptr<VectorDouble>(shared_from_this(), &
temperature);
62 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
heat_flux);
68 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
69 std::string thermoplastic_block_name,
70 boost::shared_ptr<ThermoPlasticBlockedParameters> blockedParamsPtr,
71 boost::shared_ptr<ThermoElasticOps::BlockedThermalParameters>
72 &blockedThermalParamsPtr,
75template <
int DIM, IntegrationType I,
typename DomainEleOp>
78 std::string thermal_block_name, std::string thermoelastic_block_name,
79 std::string thermoplastic_block_name,
80 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
81 std::string u, std::string ep, std::string tau, std::string temperature,
86 bool with_rates =
true);
88template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
93template <
int DIM,
typename AssemblyDomainEleOp>
99 boost::shared_ptr<MatrixDouble> stress_measure,
100 boost::shared_ptr<MatrixDouble> plastic_strain_rate_measure,
101 ScalarFun inelastic_heating_function,
102 boost::shared_ptr<Range> ents_ptr =
nullptr)
104 stressMeasurePtr(stress_measure),
105 plasticStrainRateMeasurePtr(plastic_strain_rate_measure),
106 inelasticHeatingFunction(inelastic_heating_function) {}
112 MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &data);
115template <
int DIM,
typename AssemblyDomainEleOp>
118 EntitiesFieldData::EntData &data) {
124 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
127 auto t_stress = getFTensor2SymmetricFromMat<DIM>(*stressMeasurePtr);
128 auto t_plastic_strain_rate =
129 getFTensor2SymmetricFromMat<DIM>(*plasticStrainRateMeasurePtr);
132 const double vol = AssemblyDomainEleOp::getMeasure();
134 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
136 auto t_row_base = data.getFTensor0N();
139 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
142 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
146 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
147 t_stress(
i,
j) * t_plastic_strain_rate(
i,
j);
151 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
152 AssemblyDomainEleOp::locF[rr] += alpha * t_row_base;
155 for (; rr < AssemblyDomainEleOp::nbRowBaseFunctions; ++rr)
160 ++t_plastic_strain_rate;
171template <
int SPACE_DIM, IntegrationType I,
typename AssemblyDomainEleOp>
174 AssemblyDomainEleOp> {
177 boost::shared_ptr<MatrixDouble> stress_measure,
178 boost::shared_ptr<MatrixDouble> plastic_strain_rate_measure,
179 ScalarFun inelastic_heating_function,
180 boost::shared_ptr<Range> ents_ptr =
nullptr)
183 field_name, stress_measure, plastic_strain_rate_measure,
184 inelastic_heating_function, ents_ptr) {}
187template <
int SPACE_DIM, IntegrationType I,
typename AssemblyDomainEleOp>
190 AssemblyDomainEleOp> {
193 boost::shared_ptr<MatrixDouble> stress_measure,
194 boost::shared_ptr<MatrixDouble> plastic_strain_rate_measure,
195 ScalarFun inelastic_heating_function,
196 boost::shared_ptr<Range> ents_ptr =
nullptr)
199 field_name, stress_measure, plastic_strain_rate_measure,
200 inelastic_heating_function, ents_ptr) {}
203template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
206template <
int DIM,
typename AssemblyDomainEleOp>
210 const std::string row_field_name,
const std::string col_field_name,
211 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
212 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
213 ScalarFun inelastic_heating_function,
214 boost::shared_ptr<VectorDouble> coeff_expansion_ptr,
215 boost::shared_ptr<Range> ents_ptr =
nullptr)
218 elasticCommonDataPtr(elastic_common_data_ptr),
219 plasticCommonDataPtr(plastic_common_data_ptr),
220 inelasticHeatingFunction(inelastic_heating_function),
221 coeffExpansionPtr(coeff_expansion_ptr), entsPtr(ents_ptr) {}
229 MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data,
230 EntitiesFieldData::EntData &col_data);
233template <
int DIM,
typename AssemblyDomainEleOp>
236 iNtegrate(EntitiesFieldData::EntData &row_data,
237 EntitiesFieldData::EntData &col_data) {
240 const auto nb_integration_pts = row_data.getN().size1();
241 const auto nb_row_base_functions = row_data.getN().size2();
242 auto t_w = this->getFTensor0IntegrationWeight();
245 auto t_row_base = row_data.getFTensor0N();
248 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
249 *(plasticCommonDataPtr->getPlasticStrainDotPtr()));
253 getFTensor4DdgFromMat<DIM, DIM, 0>(*(elasticCommonDataPtr->matDPtr));
256 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
264 t_coeff_exp(
i,
j) = 0;
266 t_coeff_exp(d, d) = (*coeffExpansionPtr)[d];
269 for (
auto gg = 0; gg != nb_integration_pts; ++gg) {
271 double alpha = this->getMeasure() * t_w;
273 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
274 auto t_col_base = col_data.getFTensor0N(gg, 0);
275 for (
auto cc = 0; cc != AssemblyDomainEleOp::nbCols; cc++) {
276#ifdef HENCKY_SMALL_STRAIN
277 AssemblyDomainEleOp::locMat(rr, cc) -=
279 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
280 t_coeff_exp(
i,
j) * t_D(
i,
j,
k,
l) * t_plastic_strain_rate(
k,
l) *
283 AssemblyDomainEleOp::locMat(rr, cc) -=
285 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
286 t_coeff_exp(
i,
j) * t_D(
i,
j,
k,
l) * t_plastic_strain_rate(
k,
l) *
294 for (; rr != nb_row_base_functions; ++rr)
298 ++t_plastic_strain_rate;
310template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
313 AssemblyDomainEleOp> {
315 const std::string row_field_name,
const std::string col_field_name,
316 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
317 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
318 ScalarFun inelastic_heating_function,
319 boost::shared_ptr<VectorDouble> coeff_expansion_ptr,
320 boost::shared_ptr<Range> ents_ptr =
nullptr)
322 row_field_name, col_field_name, elastic_common_data_ptr,
323 plastic_common_data_ptr, inelastic_heating_function,
324 coeff_expansion_ptr, ents_ptr) {}
327template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
330 AssemblyDomainEleOp> {
332 const std::string row_field_name,
const std::string col_field_name,
333 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
334 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
335 ScalarFun inelastic_heating_function,
336 boost::shared_ptr<VectorDouble> coeff_expansion_ptr,
337 boost::shared_ptr<Range> ents_ptr =
nullptr)
339 row_field_name, col_field_name, elastic_common_data_ptr,
340 plastic_common_data_ptr, inelastic_heating_function,
341 coeff_expansion_ptr, ents_ptr) {}
344template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
347template <
int DIM,
typename AssemblyDomainEleOp>
351 const std::string row_field_name,
const std::string col_field_name,
352 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
353 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
354 ScalarFun inelastic_heating_function,
355 boost::shared_ptr<Range> ents_ptr =
nullptr)
358 elasticCommonDataPtr(elastic_common_data_ptr),
359 plasticCommonDataPtr(plastic_common_data_ptr),
360 inelasticHeatingFunction(inelastic_heating_function),
370 MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data,
371 EntitiesFieldData::EntData &col_data);
374template <
int DIM,
typename AssemblyDomainEleOp>
377 iNtegrate(EntitiesFieldData::EntData &row_data,
378 EntitiesFieldData::EntData &col_data) {
387 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
390 const auto nb_integration_pts = row_data.getN().size1();
391 const auto nb_row_base_functions = row_data.getN().size2();
392 auto t_w = this->getFTensor0IntegrationWeight();
397 auto t_row_base = row_data.getFTensor0N();
399 auto t_stress = getFTensor2SymmetricFromMat<DIM>(
400 *(elasticCommonDataPtr->getMatHenckyStress()));
403 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
404 *(plasticCommonDataPtr->getPlasticStrainDotPtr()));
408 getFTensor4DdgFromMat<DIM, DIM, 0>(*(elasticCommonDataPtr->matDPtr));
411 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
415 for (
auto gg = 0; gg != nb_integration_pts; ++gg) {
417 auto t_vec = getFTensor1FromPtr<size_symm>(&this->locMat(0, 0));
418 double alpha = this->getMeasure() * t_w;
420 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
421 auto t_col_base = col_data.getFTensor0N(gg, 0);
422 for (
auto cc = 0; cc != AssemblyDomainEleOp::nbCols /
size_symm; cc++) {
423#ifdef HENCKY_SMALL_STRAIN
426 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
427 (t_plastic_strain_rate(
i,
j) * t_D(
i,
j,
k,
l) *
429 this->getTSa() * t_stress(
i,
j) * t_diff(
i,
j,
m,
n)) *
430 t_col_base * t_L(
m,
n, L);
434 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
435 (t_plastic_strain_rate(
i,
j) * t_D(
i,
j,
k,
l) *
437 this->getTSa() * t_stress(
i,
j) * t_diff(
i,
j,
m,
n)) *
438 t_col_base * t_L(
m,
n, L);
446 for (; rr != nb_row_base_functions; ++rr)
450 ++t_plastic_strain_rate;
463template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
466 AssemblyDomainEleOp> {
468 const std::string row_field_name,
const std::string col_field_name,
469 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
470 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
471 ScalarFun inelastic_heating_function,
472 boost::shared_ptr<Range> ents_ptr =
nullptr)
474 row_field_name, col_field_name, elastic_common_data_ptr,
475 plastic_common_data_ptr, inelastic_heating_function, ents_ptr) {}
478template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
481 AssemblyDomainEleOp> {
483 const std::string row_field_name,
const std::string col_field_name,
484 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
485 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
486 ScalarFun inelastic_heating_function,
487 boost::shared_ptr<Range> ents_ptr =
nullptr)
489 row_field_name, col_field_name, elastic_common_data_ptr,
490 plastic_common_data_ptr, inelastic_heating_function, ents_ptr) {}
493template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
496template <
int DIM,
typename AssemblyDomainEleOp>
500 const std::string row_field_name,
const std::string col_field_name,
501 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
502 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
503 ScalarFun inelastic_heating_function,
504 boost::shared_ptr<Range> ents_ptr =
nullptr)
507 elasticCommonDataPtr(elastic_common_data_ptr),
508 plasticCommonDataPtr(plastic_common_data_ptr),
509 inelasticHeatingFunction(inelastic_heating_function),
519 MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data,
520 EntitiesFieldData::EntData &col_data);
523template <
int DIM,
typename AssemblyDomainEleOp>
526 iNtegrate(EntitiesFieldData::EntData &row_data,
527 EntitiesFieldData::EntData &col_data) {
539 const auto nb_integration_pts = row_data.getN().size1();
540 const auto nb_row_base_functions = row_data.getN().size2();
542 auto t_w = this->getFTensor0IntegrationWeight();
544 auto t_row_base = row_data.getFTensor0N();
547 getFTensor4DdgFromMat<DIM, DIM>(elasticCommonDataPtr->matLogCdC);
549 getFTensor4FromMat<DIM, DIM, DIM, DIM, 1>(elasticCommonDataPtr->matCdF);
552 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
553 *(plasticCommonDataPtr->getPlasticStrainDotPtr()));
557 getFTensor4DdgFromMat<DIM, DIM, 0>(*(elasticCommonDataPtr->matDPtr));
560 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
562 for (
auto gg = 0; gg != nb_integration_pts; ++gg) {
563 auto t_vec = getFTensor1FromPtr<DIM>(&this->locMat(0, 0));
564 double alpha = this->getMeasure() * t_w;
567 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
568 auto t_col_grad_base = col_data.getFTensor1DiffN<DIM>(gg, 0);
569 for (
auto cc = 0; cc != AssemblyDomainEleOp::nbCols / DIM; cc++) {
570#ifdef HENCKY_SMALL_STRAIN
573 0.5 * alpha * t_row_base *
574 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
575 (t_plastic_strain_rate(
i,
j) * t_D(
i,
j,
k,
l) *
576 t_logC_dC(
k,
l, o, p) * t_C_dF(o, p,
m,
n)) *
581 0.5 * alpha * t_row_base *
582 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
583 (t_plastic_strain_rate(
i,
j) * t_D(
i,
j,
k,
l) *
584 t_logC_dC(
k,
l, o, p) * t_C_dF(o, p,
m,
n)) *
593 for (; rr != nb_row_base_functions; ++rr)
597 ++t_plastic_strain_rate;
611template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
614 AssemblyDomainEleOp> {
616 const std::string row_field_name,
const std::string col_field_name,
617 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
618 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
619 ScalarFun inelastic_heating_function,
620 boost::shared_ptr<Range> ents_ptr =
nullptr)
622 row_field_name, col_field_name, elastic_common_data_ptr,
623 plastic_common_data_ptr, inelastic_heating_function, ents_ptr) {}
626template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
629 AssemblyDomainEleOp> {
631 const std::string row_field_name,
const std::string col_field_name,
632 boost::shared_ptr<HenckyOps::CommonData> elastic_common_data_ptr,
633 boost::shared_ptr<PlasticOps::CommonData> plastic_common_data_ptr,
634 ScalarFun inelastic_heating_function,
635 boost::shared_ptr<Range> ents_ptr =
nullptr)
637 row_field_name, col_field_name, elastic_common_data_ptr,
638 plastic_common_data_ptr, inelastic_heating_function, ents_ptr) {}
641template <
int DIM, AssemblyType A, IntegrationType I,
typename DomainEleOp>
644 std::string thermal_block_name,
645 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
646 std::string u, std::string ep, std::string tau, std::string temperature);
648template <
int DIM, AssemblyType A, IntegrationType I,
typename DomainEleOp>
651 std::string thermal_block_name,
652 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
653 std::string u, std::string ep, std::string tau, std::string temperature);
655template <IntegrationType I,
typename AssemblyDomainEleOp>
658template <IntegrationType I>
662template <
typename AssemblyDomainEleOp>
666 const std::string row_field_name,
const std::string col_field_name,
667 boost::shared_ptr<ThermoPlasticOps::ThermoPlasticBlockedParameters>
669 MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data,
670 EntitiesFieldData::EntData &col_data);
673 boost::shared_ptr<ThermoPlasticOps::ThermoPlasticBlockedParameters>
677template <
typename AssemblyDomainEleOp>
680 const std::string row_field_name,
const std::string col_field_name,
681 boost::shared_ptr<ThermoPlasticOps::ThermoPlasticBlockedParameters>
685 TPcommonDataPtr(TP_common_data_ptr) {
686 AssemblyDomainEleOp::sYmm =
false;
689template <
typename AssemblyDomainEleOp>
692 EntitiesFieldData::EntData &row_data,
693 EntitiesFieldData::EntData &col_data) {
696 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
697 const auto nb_row_base_functions = row_data.getN().size2();
699 auto t_res_c_dtemperature =
700 getFTensor0FromVec(TPcommonDataPtr->resCdTemperature);
701 auto next = [&]() { ++t_res_c_dtemperature; };
703 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
704 auto t_row_base = row_data.getFTensor0N();
705 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
706 const double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
709 const auto res = alpha * (t_res_c_dtemperature);
712 auto mat_ptr = AssemblyDomainEleOp::locMat.data().begin();
714 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
715 auto t_col_base = col_data.getFTensor0N(gg, 0);
716 for (
size_t cc = 0; cc != AssemblyDomainEleOp::nbCols; ++cc) {
717 *mat_ptr += t_row_base * t_col_base * res;
723 for (; rr < nb_row_base_functions; ++rr)
730template <
int DIM, IntegrationType I,
typename AssemblyDomainEleOp>
733template <
int DIM, IntegrationType I>
737template <
int DIM,
typename AssemblyDomainEleOp>
741 const std::string row_field_name,
const std::string col_field_name,
742 boost::shared_ptr<ThermoPlasticOps::ThermoPlasticBlockedParameters>
744 MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &row_data,
745 EntitiesFieldData::EntData &col_data);
748 boost::shared_ptr<ThermoPlasticOps::ThermoPlasticBlockedParameters>
752template <
int DIM,
typename AssemblyDomainEleOp>
755 const std::string row_field_name,
const std::string col_field_name,
756 boost::shared_ptr<ThermoPlasticOps::ThermoPlasticBlockedParameters>
760 commonTPDataPtr(common_TP_data_ptr) {
761 AssemblyDomainEleOp::sYmm =
false;
764template <
int DIM,
typename AssemblyDomainEleOp>
767 EntitiesFieldData::EntData &row_data,
768 EntitiesFieldData::EntData &col_data) {
773 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
776 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
777 const size_t nb_row_base_functions = row_data.getN().size2();
778 auto &locMat = AssemblyDomainEleOp::locMat;
780 auto t_res_flow_dtemp =
781 getFTensor2SymmetricFromMat<DIM>(commonTPDataPtr->resFlowDtemp);
785 auto next = [&]() { ++t_res_flow_dtemp; };
787 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
788 auto t_row_base = row_data.getFTensor0N();
789 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
790 double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
793 t_res_vec(L) = alpha * (t_res_flow_dtemp(
i,
j) * t_L(
i,
j, L));
797 for (; rr != AssemblyDomainEleOp::nbRows /
size_symm; ++rr) {
800 auto t_col_base = col_data.getFTensor0N(gg, 0);
801 for (
size_t cc = 0; cc != AssemblyDomainEleOp::nbCols; cc++) {
802 t_mat(L) += t_row_base * t_col_base * t_res_vec(L);
808 for (; rr != nb_row_base_functions; ++rr)
constexpr int SPACE_DIM
[Define dimension]
#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< 'i', SPACE_DIM > i
const double n
refractive index of diffusive medium
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
static auto get_mat_tensor_sym_dscalar(size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
auto symm_L_tensor(FTensor::Number< DIM >)
auto diff_tensor(FTensor::Number< DIM >)
[Lambda functions]
MoFEMErrorCode opThermoPlasticFactoryDomainLhs(MoFEM::Interface &m_field, std::string block_name, std::string thermal_block_name, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string u, std::string ep, std::string tau, std::string temperature)
MoFEMErrorCode opThermoPlasticFactoryDomainRhs(MoFEM::Interface &m_field, std::string block_name, std::string thermal_block_name, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string u, std::string ep, std::string tau, std::string temperature)
auto createCommonThermoPlasticOps(MoFEM::Interface &m_field, std::string plastic_block_name, std::string thermal_block_name, std::string thermoelastic_block_name, std::string thermoplastic_block_name, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string u, std::string ep, std::string tau, std::string temperature, double scale, ScalerFunTwoArgs thermal_conductivity_scaling, ScalerFunTwoArgs heat_capacity_scaling, ScalerFunThreeArgs inelastic_heat_fraction_scaling, Sev sev, bool with_rates=true)
MoFEMErrorCode addMatThermoPlasticBlockOps(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::string thermoplastic_block_name, boost::shared_ptr< ThermoPlasticBlockedParameters > blockedParamsPtr, boost::shared_ptr< ThermoElasticOps::BlockedThermalParameters > &blockedThermalParamsPtr, Sev sev, ScalerFunThreeArgs inelastic_heat_fraction_scaling)
constexpr IntegrationType I
constexpr auto field_name
FTensor::Index< 'm', 3 > m
Deprecated interface functions.
auto getHeatConductivityPtr()
double inelasticHeatFraction
auto getHeatCapacityPtr()
auto getInelasticHeatFractionPtr()
auto getCoeffExpansionPtr()
OpCalculateAdiabaticHeatingLhsdEPImpl(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
ScalarFun inelasticHeatingFunction
boost::shared_ptr< PlasticOps::CommonData > plasticCommonDataPtr
boost::shared_ptr< HenckyOps::CommonData > elasticCommonDataPtr
boost::shared_ptr< Range > entsPtr
OpCalculateAdiabaticHeatingLhsdEP(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
OpCalculateAdiabaticHeatingLhsdEP(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< Range > entsPtr
ScalarFun inelasticHeatingFunction
OpCalculateAdiabaticHeatingLhsdTImpl(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< VectorDouble > coeff_expansion_ptr, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< VectorDouble > coeffExpansionPtr
boost::shared_ptr< PlasticOps::CommonData > plasticCommonDataPtr
boost::shared_ptr< HenckyOps::CommonData > elasticCommonDataPtr
OpCalculateAdiabaticHeatingLhsdT(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< VectorDouble > coeff_expansion_ptr, boost::shared_ptr< Range > ents_ptr=nullptr)
OpCalculateAdiabaticHeatingLhsdT(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< VectorDouble > coeff_expansion_ptr, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< PlasticOps::CommonData > plasticCommonDataPtr
ScalarFun inelasticHeatingFunction
boost::shared_ptr< Range > entsPtr
OpCalculateAdiabaticHeatingLhsdUImpl(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< HenckyOps::CommonData > elasticCommonDataPtr
OpCalculateAdiabaticHeatingLhsdU(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
OpCalculateAdiabaticHeatingLhsdU(const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< HenckyOps::CommonData > elastic_common_data_ptr, boost::shared_ptr< PlasticOps::CommonData > plastic_common_data_ptr, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
OpCalculateAdiabaticHeatingRhsImpl(const std::string field_name, boost::shared_ptr< MatrixDouble > stress_measure, boost::shared_ptr< MatrixDouble > plastic_strain_rate_measure, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< MatrixDouble > plasticStrainRateMeasurePtr
boost::shared_ptr< MatrixDouble > stressMeasurePtr
ScalarFun inelasticHeatingFunction
OpCalculateAdiabaticHeatingRhs(const std::string field_name, boost::shared_ptr< MatrixDouble > stress_measure, boost::shared_ptr< MatrixDouble > plastic_strain_rate_measure, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
OpCalculateAdiabaticHeatingRhs(const std::string field_name, boost::shared_ptr< MatrixDouble > stress_measure, boost::shared_ptr< MatrixDouble > plastic_strain_rate_measure, ScalarFun inelastic_heating_function, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< ThermoPlasticOps::ThermoPlasticBlockedParameters > TPcommonDataPtr
boost::shared_ptr< ThermoPlasticOps::ThermoPlasticBlockedParameters > commonTPDataPtr
VectorDouble resCdTemperature
auto getInelasticHeatFractionPtr()
double inelasticHeatFraction
MatrixDouble resFlowDtemp
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp
ScalerFunTwoArgs heat_capacity_scaling
ScalerFunThreeArgs inelastic_heat_fraction_scaling
boost::function< double(const double, const double, const double)> ScalerFunThreeArgs
boost::function< double(const double, const double)> ScalerFunTwoArgs
ScalerFunTwoArgs thermal_conductivity_scaling
constexpr bool IS_LARGE_STRAINS