v0.15.0
Loading...
Searching...
No Matches
ThermoElasticOps::OpKCauchyThermoElasticity Struct Reference

#include "tutorials/adv-2/src/ThermoElasticOps.hpp"

Inheritance diagram for ThermoElasticOps::OpKCauchyThermoElasticity:
[legend]
Collaboration diagram for ThermoElasticOps::OpKCauchyThermoElasticity:
[legend]

Public Member Functions

 OpKCauchyThermoElasticity (const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< MatrixDouble > mDptr, boost::shared_ptr< VectorDouble > coeff_expansion_ptr)
 
MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
 

Private Attributes

boost::shared_ptr< MatrixDouble > mDPtr
 
boost::shared_ptr< VectorDouble > coeffExpansionPtr
 

Detailed Description

Definition at line 9 of file ThermoElasticOps.hpp.

Constructor & Destructor Documentation

◆ OpKCauchyThermoElasticity()

ThermoElasticOps::OpKCauchyThermoElasticity::OpKCauchyThermoElasticity ( const std::string row_field_name,
const std::string col_field_name,
boost::shared_ptr< MatrixDouble > mDptr,
boost::shared_ptr< VectorDouble > coeff_expansion_ptr )
Examples
ThermoElasticOps.hpp.

Definition at line 53 of file ThermoElasticOps.hpp.

57 : AssemblyDomainEleOp(row_field_name, col_field_name,
58 DomainEleOp::OPROWCOL),
59 mDPtr(mDptr), coeffExpansionPtr(coeff_expansion_ptr) {
60 sYmm = false;
61}
boost::shared_ptr< MatrixDouble > mDPtr
boost::shared_ptr< VectorDouble > coeffExpansionPtr
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp

Member Function Documentation

◆ iNtegrate()

MoFEMErrorCode ThermoElasticOps::OpKCauchyThermoElasticity::iNtegrate ( EntitiesFieldData::EntData & row_data,
EntitiesFieldData::EntData & col_data )
Examples
ThermoElasticOps.hpp.

Definition at line 64 of file ThermoElasticOps.hpp.

65 {
67
68 auto &locMat = AssemblyDomainEleOp::locMat;
69
70 const auto nb_integration_pts = row_data.getN().size1();
71 const auto nb_row_base_functions = row_data.getN().size2();
72 auto t_w = getFTensor0IntegrationWeight();
73 auto t_row_diff_base = row_data.getFTensor1DiffN<SPACE_DIM>();
74 auto t_D = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM, 0>(*mDPtr);
75
81
83 t_coeff_exp(i, j) = 0;
84 for (auto d = 0; d != SPACE_DIM; ++d) {
85 t_coeff_exp(d, d) = (*coeffExpansionPtr)[d];
86 }
87
88 t_eigen_strain(i, j) = (t_D(i, j, k, l) * t_coeff_exp(k, l));
89
90 for (auto gg = 0; gg != nb_integration_pts; ++gg) {
91
92 double alpha = getMeasure() * t_w;
93 auto rr = 0;
94 for (; rr != AssemblyDomainEleOp::nbRows / SPACE_DIM; ++rr) {
95 auto t_mat = getFTensor1FromMat<SPACE_DIM, 1>(locMat, rr * SPACE_DIM);
96 auto t_col_base = col_data.getFTensor0N(gg, 0);
97 for (auto cc = 0; cc != AssemblyDomainEleOp::nbCols; cc++) {
98
99 t_mat(i) -=
100 (t_row_diff_base(j) * t_eigen_strain(i, j)) * (t_col_base * alpha);
101
102 ++t_mat;
103 ++t_col_base;
104 }
105
106 ++t_row_diff_base;
107 }
108 for (; rr != nb_row_base_functions; ++rr)
109 ++t_row_diff_base;
110
111 ++t_w;
112 }
113
115}
constexpr int SPACE_DIM
#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
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k

Member Data Documentation

◆ coeffExpansionPtr

boost::shared_ptr<VectorDouble> ThermoElasticOps::OpKCauchyThermoElasticity::coeffExpansionPtr
private
Examples
ThermoElasticOps.hpp.

Definition at line 20 of file ThermoElasticOps.hpp.

◆ mDPtr

boost::shared_ptr<MatrixDouble> ThermoElasticOps::OpKCauchyThermoElasticity::mDPtr
private
Examples
ThermoElasticOps.hpp.

Definition at line 19 of file ThermoElasticOps.hpp.


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