v0.15.0
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp > Struct Template Reference

#include "users_modules/multifield-thermoplasticity-private/src/ThermoPlasticOps.hpp"

Inheritance diagram for ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >:
[legend]
Collaboration diagram for ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >:
[legend]

Public Member Functions

 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)
 

Protected Member Functions

MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
 

Protected Attributes

boost::shared_ptr< HenckyOps::CommonDataelasticCommonDataPtr
 
boost::shared_ptr< PlasticOps::CommonDataplasticCommonDataPtr
 
ScalarFun inelasticHeatingFunction
 
boost::shared_ptr< RangeentsPtr
 

Detailed Description

template<int DIM, typename AssemblyDomainEleOp>
struct ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >

Definition at line 497 of file ThermoPlasticOps.hpp.

Constructor & Destructor Documentation

◆ OpCalculateAdiabaticHeatingLhsdUImpl()

template<int DIM, typename AssemblyDomainEleOp >
ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >::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 
)
inline

Definition at line 499 of file ThermoPlasticOps.hpp.

505 : AssemblyDomainEleOp(row_field_name, col_field_name,
506 AssemblyDomainEleOp::OPROWCOL),
507 elasticCommonDataPtr(elastic_common_data_ptr),
508 plasticCommonDataPtr(plastic_common_data_ptr),
509 inelasticHeatingFunction(inelastic_heating_function),
510 entsPtr(ents_ptr) {
511 this->sYmm = false;
512 }
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp

Member Function Documentation

◆ iNtegrate()

template<int DIM, typename AssemblyDomainEleOp >
MoFEMErrorCode ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >::iNtegrate ( EntitiesFieldData::EntData &  row_data,
EntitiesFieldData::EntData &  col_data 
)
protected

Definition at line 525 of file ThermoPlasticOps.hpp.

527 {
529
530 FTensor::Index<'i', DIM> i;
531 FTensor::Index<'j', DIM> j;
532 FTensor::Index<'k', DIM> k;
533 FTensor::Index<'l', DIM> l;
534 FTensor::Index<'m', DIM> m;
535 FTensor::Index<'n', DIM> n;
536 FTensor::Index<'o', DIM> o;
537 FTensor::Index<'p', DIM> p;
538
539 const auto nb_integration_pts = row_data.getN().size1();
540 const auto nb_row_base_functions = row_data.getN().size2();
541
542 auto t_w = this->getFTensor0IntegrationWeight();
543
544 auto t_row_base = row_data.getFTensor0N();
545
546 auto t_logC_dC =
547 getFTensor4DdgFromMat<DIM, DIM>(elasticCommonDataPtr->matLogCdC);
548 auto t_C_dF =
549 getFTensor4FromMat<DIM, DIM, DIM, DIM, 1>(elasticCommonDataPtr->matCdF);
550
551 // get plastic strain rate values
552 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
553 *(plasticCommonDataPtr->getPlasticStrainDotPtr()));
554
555 // get elasticity tensor
556 auto t_D =
557 getFTensor4DdgFromMat<DIM, DIM, 0>(*(elasticCommonDataPtr->matDPtr));
558
559 // get coordinate at integration points
560 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
561
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;
565
566 auto rr = 0;
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
571 // TODO: implement correct small strain problem
572 t_vec(m) +=
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)) *
577 t_col_grad_base(n);
578#else
579 // Multiply by a half for dEdC from dlogCdC
580 t_vec(m) +=
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)) *
585 t_col_grad_base(n);
586#endif
587 ++t_col_grad_base;
588 ++t_vec;
589 }
590
591 ++t_row_base;
592 }
593 for (; rr != nb_row_base_functions; ++rr)
594 ++t_row_base;
595
596 ++t_w;
597 ++t_plastic_strain_rate;
598 ++t_D;
599 ++t_coords;
600 ++t_logC_dC;
601 ++t_C_dF;
602 }
603
605}
#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
FTensor::Index< 'm', 3 > m

Member Data Documentation

◆ elasticCommonDataPtr

template<int DIM, typename AssemblyDomainEleOp >
boost::shared_ptr<HenckyOps::CommonData> ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >::elasticCommonDataPtr
protected

Definition at line 515 of file ThermoPlasticOps.hpp.

◆ entsPtr

template<int DIM, typename AssemblyDomainEleOp >
boost::shared_ptr<Range> ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >::entsPtr
protected

Definition at line 518 of file ThermoPlasticOps.hpp.

◆ inelasticHeatingFunction

template<int DIM, typename AssemblyDomainEleOp >
ScalarFun ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >::inelasticHeatingFunction
protected

Definition at line 517 of file ThermoPlasticOps.hpp.

◆ plasticCommonDataPtr

template<int DIM, typename AssemblyDomainEleOp >
boost::shared_ptr<PlasticOps::CommonData> ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdUImpl< DIM, GAUSS, AssemblyDomainEleOp >::plasticCommonDataPtr
protected

Definition at line 516 of file ThermoPlasticOps.hpp.


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