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

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

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

Public Member Functions

 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)
 

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::OpCalculateAdiabaticHeatingLhsdEPImpl< DIM, GAUSS, AssemblyDomainEleOp >

Definition at line 348 of file ThermoPlasticOps.hpp.

Constructor & Destructor Documentation

◆ OpCalculateAdiabaticHeatingLhsdEPImpl()

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

Definition at line 350 of file ThermoPlasticOps.hpp.

356 : AssemblyDomainEleOp(row_field_name, col_field_name,
357 AssemblyDomainEleOp::OPROWCOL),
358 elasticCommonDataPtr(elastic_common_data_ptr),
359 plasticCommonDataPtr(plastic_common_data_ptr),
360 inelasticHeatingFunction(inelastic_heating_function),
361 entsPtr(ents_ptr) {
362 this->sYmm = false;
363 }
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp

Member Function Documentation

◆ iNtegrate()

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

Definition at line 376 of file ThermoPlasticOps.hpp.

378 {
380
381 FTensor::Index<'i', DIM> i;
382 FTensor::Index<'j', DIM> j;
383 FTensor::Index<'k', DIM> k;
384 FTensor::Index<'l', DIM> l;
385 FTensor::Index<'m', DIM> m;
386 FTensor::Index<'n', DIM> n;
387 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
389
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();
393
395
396 constexpr auto t_kd = FTensor::Kronecker_Delta<int>();
397 auto t_row_base = row_data.getFTensor0N();
398
399 auto t_stress = getFTensor2SymmetricFromMat<DIM>(
400 *(elasticCommonDataPtr->getMatHenckyStress()));
401
402 // get plastic strain rate values
403 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
404 *(plasticCommonDataPtr->getPlasticStrainDotPtr()));
405
406 // get elasticity tensor
407 auto t_D =
408 getFTensor4DdgFromMat<DIM, DIM, 0>(*(elasticCommonDataPtr->matDPtr));
409
410 // get coordinate at integration points
411 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
412
414
415 for (auto gg = 0; gg != nb_integration_pts; ++gg) {
416 // get the local vector to store the symmetric tensor of size_symm
417 auto t_vec = getFTensor1FromPtr<size_symm>(&this->locMat(0, 0));
418 double alpha = this->getMeasure() * t_w;
419 auto rr = 0;
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
424 t_vec(L) -=
425 alpha * t_row_base *
426 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
427 (t_plastic_strain_rate(i, j) * t_D(i, j, k, l) *
428 t_diff(k, l, m, n) -
429 this->getTSa() * t_stress(i, j) * t_diff(i, j, m, n)) *
430 t_col_base * t_L(m, n, L);
431#else
432 t_vec(L) -=
433 alpha * t_row_base *
434 inelasticHeatingFunction(t_coords(0), t_coords(1), t_coords(2)) *
435 (t_plastic_strain_rate(i, j) * t_D(i, j, k, l) *
436 t_diff(k, l, m, n) -
437 this->getTSa() * t_stress(i, j) * t_diff(i, j, m, n)) *
438 t_col_base * t_L(m, n, L);
439#endif
440 ++t_vec;
441 ++t_col_base;
442 }
443
444 ++t_row_base;
445 }
446 for (; rr != nb_row_base_functions; ++rr)
447 ++t_row_base;
448
449 ++t_w;
450 ++t_plastic_strain_rate;
451 ++t_D;
452 ++t_coords;
453 ++t_stress;
454 }
455
457}
Kronecker Delta class.
#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()
constexpr auto t_kd
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
auto symm_L_tensor(FTensor::Number< DIM >)
auto diff_tensor(FTensor::Number< DIM >)
[Lambda functions]
FTensor::Index< 'm', 3 > m
constexpr auto size_symm
Definition plastic.cpp:42

Member Data Documentation

◆ elasticCommonDataPtr

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

Definition at line 366 of file ThermoPlasticOps.hpp.

◆ entsPtr

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

Definition at line 369 of file ThermoPlasticOps.hpp.

◆ inelasticHeatingFunction

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

Definition at line 368 of file ThermoPlasticOps.hpp.

◆ plasticCommonDataPtr

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

Definition at line 367 of file ThermoPlasticOps.hpp.


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