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

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

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

Public Member Functions

 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)
 

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< VectorDouble > coeffExpansionPtr
 
boost::shared_ptr< RangeentsPtr
 

Detailed Description

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

Definition at line 207 of file ThermoPlasticOps.hpp.

Constructor & Destructor Documentation

◆ OpCalculateAdiabaticHeatingLhsdTImpl()

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

Definition at line 209 of file ThermoPlasticOps.hpp.

216 : AssemblyDomainEleOp(row_field_name, col_field_name,
217 AssemblyDomainEleOp::OPROWCOL),
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) {}
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp

Member Function Documentation

◆ iNtegrate()

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

Definition at line 235 of file ThermoPlasticOps.hpp.

237 {
239
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();
243
244 constexpr auto t_kd = FTensor::Kronecker_Delta<int>();
245 auto t_row_base = row_data.getFTensor0N();
246
247 // get plastic strain rate values
248 auto t_plastic_strain_rate = getFTensor2SymmetricFromMat<DIM>(
249 *(plasticCommonDataPtr->getPlasticStrainDotPtr()));
250
251 // get elasticity tensor
252 auto t_D =
253 getFTensor4DdgFromMat<DIM, DIM, 0>(*(elasticCommonDataPtr->matDPtr));
254
255 // get coordinate at integration points
256 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
257
258 FTensor::Index<'i', DIM> i;
259 FTensor::Index<'j', DIM> j;
260 FTensor::Index<'k', DIM> k;
261 FTensor::Index<'l', DIM> l;
262
264 t_coeff_exp(i, j) = 0;
265 for (auto d = 0; d != SPACE_DIM; ++d) {
266 t_coeff_exp(d, d) = (*coeffExpansionPtr)[d];
267 }
268
269 for (auto gg = 0; gg != nb_integration_pts; ++gg) {
270
271 double alpha = this->getMeasure() * t_w;
272 auto rr = 0;
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) -=
278 alpha * t_row_base *
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) *
281 t_col_base;
282#else
283 AssemblyDomainEleOp::locMat(rr, cc) -=
284 alpha * t_row_base *
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) *
287 t_col_base;
288#endif
289 ++t_col_base;
290 }
291
292 ++t_row_base;
293 }
294 for (; rr != nb_row_base_functions; ++rr)
295 ++t_row_base;
296
297 ++t_w;
298 ++t_plastic_strain_rate;
299 ++t_D;
300 ++t_coords;
301 }
302
304}
constexpr int SPACE_DIM
[Define dimension]
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
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k

Member Data Documentation

◆ coeffExpansionPtr

template<int DIM, typename AssemblyDomainEleOp >
boost::shared_ptr<VectorDouble> ThermoPlasticOps::OpCalculateAdiabaticHeatingLhsdTImpl< DIM, GAUSS, AssemblyDomainEleOp >::coeffExpansionPtr
protected

Definition at line 227 of file ThermoPlasticOps.hpp.

◆ elasticCommonDataPtr

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

Definition at line 224 of file ThermoPlasticOps.hpp.

◆ entsPtr

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

Definition at line 228 of file ThermoPlasticOps.hpp.

◆ inelasticHeatingFunction

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

Definition at line 226 of file ThermoPlasticOps.hpp.

◆ plasticCommonDataPtr

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

Definition at line 225 of file ThermoPlasticOps.hpp.


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