v0.15.0
Loading...
Searching...
No Matches
ADOLCPlasticity::J2Plasticity< 3 > Struct Reference

J2 (Von Misses) plasticity. More...

#include "users_modules/adolc-plasticity/src/ADOLCPlasticityMaterialModels.hpp"

Inheritance diagram for ADOLCPlasticity::J2Plasticity< 3 >:
[legend]
Collaboration diagram for ADOLCPlasticity::J2Plasticity< 3 >:
[legend]

Public Types

enum  ModelParams {
  LAMBDA , MU , ISOH , KINK ,
  PHI , SIGMA_Y , LAST_PARAM
}
 
using ParamsArray = std::array<double, LAST_PARAM>
 
- Public Types inherited from ADOLCPlasticity::ClosestPointProjection
enum  TypesTags { W = 0 , Y , H , LAST_TAPE }
 

Public Member Functions

 J2Plasticity ()
 
MoFEMErrorCode getDefaultMaterialParameters ()
 
MoFEMErrorCode addMatBlockOps (MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string block_name, Sev sev)
 Get material parameters from block.
 
MoFEMErrorCode setParams (short tag, bool &recalculate_elastic_tangent)
 Set material parameters at integration point.
 
MoFEMErrorCode freeHemholtzEnergy ()
 [Free energy J2]
 
MoFEMErrorCode evalF ()
 [Yield function J2]
 
MoFEMErrorCode yieldFunction ()
 Set yield function.
 
MoFEMErrorCode flowPotential ()
 [Yield function J2]
 
MoFEMErrorCode codedHessianW (vector< double * > hessian)
 
- Public Member Functions inherited from ADOLCPlasticity::ClosestPointProjection
VectorAdaptor getPlasticStrain ()
 
VectorAdaptor getTotalStrain ()
 
VectorAdaptor getInternalVariables ()
 
VectorAdaptor getActiveVariablesYH ()
 
VectorAdaptor getStress ()
 
VectorAdaptor getInternalFluxes ()
 
 ClosestPointProjection ()
 
MoFEMErrorCode recordW ()
 Record strain energy.
 
MoFEMErrorCode recordY ()
 Record yield function.
 
MoFEMErrorCode recordH ()
 Record flow potential.
 
MoFEMErrorCode playW ()
 
MoFEMErrorCode playW_NoHessian ()
 
MoFEMErrorCode playY ()
 
MoFEMErrorCode playY_NoGradient ()
 
MoFEMErrorCode playH ()
 
MoFEMErrorCode playH_NoHessian ()
 
MoFEMErrorCode createMatAVecR ()
 
MoFEMErrorCode evaluatePotentials ()
 
MoFEMErrorCode playPotentials ()
 
MoFEMErrorCode playPotentials_NoHessian ()
 
MoFEMErrorCode calculateR (Vec R)
 
MoFEMErrorCode calculateA ()
 
MoFEMErrorCode snesCreate ()
 Create nested snes.
 
MoFEMErrorCode solveClosestProjection ()
 Solve nonlinear system of equations to find stress, internal fluxes, and Lagrange plastic multiplier.
 
MoFEMErrorCode consistentTangent ()
 Calculate consistent tangent matrix.
 
MoFEMErrorCode recordTapes ()
 Record tapes.
 

Public Attributes

FTensor::Index< 'i', 3 > i
 
FTensor::Index< 'j', 3 > j
 
FTensor::Index< 'Z', 6 > Z
 
FTensor::Tensor2_symmetric< adouble, 3 > tTotalStrain
 
FTensor::Tensor2_symmetric< adouble, 3 > tPlasticStrain
 
FTensor::Tensor2_symmetric< adouble, 3 > tElasticStrain
 
FTensor::Tensor2_symmetric< adouble, 3 > tInternalTensor
 
FTensor::Tensor2_symmetric< adouble, 3 > tStress
 
FTensor::Tensor2_symmetric< adouble, 3 > tBackStress
 
FTensor::Tensor2_symmetric< adouble, 3 > tDeviator
 
adouble tR
 
double mu
 
double lambda
 
double H
 
double K
 
double phi
 
double sigmaY
 
boost::shared_ptr< ParamsArraydefaultParamsArrayPtr = nullptr
 
boost::shared_ptr< ParamsArrayparamsArrayPtr = nullptr
 
boost::shared_ptr< ParamsArrayoldParamsArrayPtr = nullptr
 
adouble f
 [Free energy J2]
 
- Public Attributes inherited from ADOLCPlasticity::ClosestPointProjection
int nbInternalVariables
 
boost::function< int(int, int, int)> integrationRule
 
VectorDouble internalVariables0
 
VectorDouble plasticStrain0
 
std::array< int, LAST_TAPEtapesTags
 
VectorAdaptor activeVariablesW
 
VectorAdaptor gradientW
 
double w
 
double y
 
double h
 
double deltaGamma
 
MatrixDouble Ep
 
MatrixDouble Cp
 
MatrixDouble Cep
 
ublas::symmetric_matrix< double, ublas::lower > C
 
ublas::symmetric_matrix< double, ublas::lower > D
 
PetscBool implHessianW
 
MatrixDouble hessianW
 
VectorDouble gradientY
 
VectorDouble gradientH
 
MatrixDouble hessianH
 
MatrixDouble partialWStrainPlasticStrain
 
VectorAdaptor partialYSigma
 
VectorAdaptor partialYFlux
 
VectorAdaptor partialHSigma
 
VectorAdaptor partialHFlux
 
ublas::symmetric_matrix< double, ublas::lower > partial2HSigma
 
ublas::symmetric_matrix< double, ublas::lower > partial2HFlux
 
MatrixDouble partial2HSigmaFlux
 
SmartPetscObj< Mat > A
 
SmartPetscObj< Vec > R
 
SmartPetscObj< Vec > Chi
 
SmartPetscObj< Vec > dChi
 
ublas::matrix< double, ublas::column_major > dataA
 
SmartPetscObj< SNES > sNes
 
ublas::vector< adoublea_sTrain
 
ublas::vector< adoublea_plasticStrain
 
ublas::vector< adoublea_internalVariables
 
ublas::vector< adoublea_sTress
 
ublas::vector< adoublea_internalFluxes
 
adouble a_w
 
adouble a_y
 
adouble a_h
 

Detailed Description

J2 (Von Misses) plasticity.

Free energy:

\[ \psi(\varepsilon^e, \alpha, \beta) = \frac{1}{2} \lambda \textrm{tr}[\varepsilon^e]^2 + \mu \varepsilon^e : \varepsilon^e + \sigma_y\alpha + \frac{1}{2} \phi H \alpha^2 + \frac{1}{2} (1-\phi)K \beta^2 \]

Isotropic hardening variable \(\alpha\) is in first index of internal variables vector. Kinematic hardening variable is in the remaining indices of internal variables vector.

Yield function:

Deviator of actual stress:

\[ \eta=\textrm{dev}[\sigma]-\overline{\beta} \]

where \(\overline{\beta}\) is back stress.

Square of the deviator norm

\[ f = \frac{3}{2} \eta:\eta \]

Yield function:

\[ y = \sqrt{f} - \overline{\alpha} \]

where \(f\) is defined in eva

This is associated potential model, so flow potential is equal to yield

Definition at line 73 of file ADOLCPlasticityMaterialModels.hpp.

Member Typedef Documentation

◆ ParamsArray

using ADOLCPlasticity::J2Plasticity< 3 >::ParamsArray = std::array<double, LAST_PARAM>

Definition at line 103 of file ADOLCPlasticityMaterialModels.hpp.

Member Enumeration Documentation

◆ ModelParams

Constructor & Destructor Documentation

◆ J2Plasticity()

Member Function Documentation

◆ addMatBlockOps()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::addMatBlockOps ( MoFEM::Interface & m_field,
boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > & pip,
std::string block_name,
Sev sev )
inlinevirtual

Get material parameters from block.

Parameters
m_field
pip
block_name
sev
Returns
MoFEMErrorCode

Reimplemented from ADOLCPlasticity::ClosestPointProjection.

Definition at line 175 of file ADOLCPlasticityMaterialModels.hpp.

177 {
179
180 struct OpMatBlocks : public ForcesAndSourcesCore::UserDataOperator {
181
182 using OP = ForcesAndSourcesCore::UserDataOperator;
183
184 OpMatBlocks(boost::shared_ptr<ParamsArray> params_array_ptr,
185 boost::shared_ptr<ParamsArray> def_params_array_otr,
186 MoFEM::Interface &m_field, Sev sev,
187 std::vector<const CubitMeshSets *> meshset_vec_ptr)
188 : OP(NOSPACE, OP::OPSPACE), paramsArrayPtr(params_array_ptr),
189 defParamsArray(def_params_array_otr) {
190 CHK_THROW_MESSAGE(extractBlockData(m_field, meshset_vec_ptr, sev),
191 "Can not get data from block");
192 }
193
194 MoFEMErrorCode doWork(int side, EntityType type,
195 EntitiesFieldData::EntData &data) {
197
198 for (auto &b : blockData) {
199
200 if (b.blockEnts.find(getFEEntityHandle()) != b.blockEnts.end()) {
201 std::copy(b.paramsArray.begin(), b.paramsArray.end(),
202 paramsArrayPtr->begin());
204 }
205 }
206
207 std::copy(defParamsArray->begin(), defParamsArray->end(),
208 paramsArrayPtr->begin());
209
211 }
212
213 private:
214 boost::shared_ptr<ParamsArray> paramsArrayPtr;
215 boost::shared_ptr<ParamsArray> defParamsArray;
216
217 struct BlockData {
218 ParamsArray paramsArray;
219 Range blockEnts;
220 };
221
222 std::vector<BlockData> blockData;
223
225 extractBlockData(MoFEM::Interface &m_field,
226 std::vector<const CubitMeshSets *> meshset_vec_ptr,
227 Sev sev) {
229
230 for (auto m : meshset_vec_ptr) {
231 MOFEM_TAG_AND_LOG("ADOLCPlasticityWold", sev, "JP2 parameters") << *m;
232 std::vector<double> block_data;
233 CHKERR m->getAttributes(block_data);
234 if (block_data.size() != 6) {
235 SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
236 "Expected that block has two attribute");
237 }
238 auto get_block_ents = [&]() {
239 Range ents;
240 CHKERR
241 m_field.get_moab().get_entities_by_handle(m->meshset, ents, true);
242 return ents;
243 };
244
245 blockData.push_back({*defParamsArray, get_block_ents()});
246 std::copy(block_data.begin(), block_data.end(),
247 blockData.back().paramsArray.begin());
248 const auto young_modulus = blockData.back().paramsArray[LAMBDA];
249 const auto poisson_ratio = blockData.back().paramsArray[MU];
250
251 // It is assumed that user provide young_modulus and poisson_ratio in
252 // first two arguments of the block
253
254 MOFEM_LOG("ADOLCPlasticityWold", sev)
255 << "Young modulus: " << (blockData.back().paramsArray)[LAMBDA];
256 MOFEM_LOG("ADOLCPlasticityWold", sev)
257 << "Poisson ratio: " << (blockData.back().paramsArray)[MU];
258
259 blockData.back().paramsArray[LAMBDA] =
261 blockData.back().paramsArray[MU] = MU(young_modulus, poisson_ratio);
262
263 MOFEM_LOG("ADOLCPlasticityWold", sev)
264 << "LAMBDA: " << (blockData.back().paramsArray)[LAMBDA];
265 MOFEM_LOG("ADOLCPlasticityWold", sev)
266 << "MU: " << (blockData.back().paramsArray)[MU];
267 MOFEM_LOG("ADOLCPlasticityWold", sev)
268 << "H: " << (blockData.back().paramsArray)[ISOH];
269 MOFEM_LOG("ADOLCPlasticityWold", sev)
270 << "K: " << (blockData.back().paramsArray)[KINK];
271 MOFEM_LOG("ADOLCPlasticityWold", sev)
272 << "PHI: " << (blockData.back().paramsArray)[PHI];
273 MOFEM_LOG("ADOLCPlasticityWold", sev)
274 << "SIGMA_Y: " << (blockData.back().paramsArray)[SIGMA_Y];
275 }
277 }
278 };
279
280 auto cubit_meshsets_vec_ptr =
281 m_field.getInterface<MeshsetsManager>()->getCubitMeshsetPtr(
282 std::regex((boost::format("%s(.*)") % block_name).str()));
283
284 pip.push_back(new OpMatBlocks(paramsArrayPtr, defaultParamsArrayPtr,
285 m_field, sev, cubit_meshsets_vec_ptr));
286
288 }
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ NOSPACE
Definition definitions.h:83
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_DATA_INCONSISTENCY
Definition definitions.h:31
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
#define MU(E, NU)
Definition fem_tools.h:23
#define LAMBDA(E, NU)
Definition fem_tools.h:22
#define MOFEM_LOG(channel, severity)
Log.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
double young_modulus
Young modulus.
Definition plastic.cpp:125
double poisson_ratio
Poisson ratio.
Definition plastic.cpp:126
FTensor::Index< 'm', 3 > m
boost::shared_ptr< ParamsArray > defaultParamsArrayPtr
boost::shared_ptr< ParamsArray > paramsArrayPtr
virtual moab::Interface & get_moab()=0
Deprecated interface functions.
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.

◆ codedHessianW()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::codedHessianW ( vector< double * > hessian)
inlinevirtual

Reimplemented from ADOLCPlasticity::ClosestPointProjection.

Definition at line 408 of file ADOLCPlasticityMaterialModels.hpp.

409 {
411 lambda = (*paramsArrayPtr)[0];
412 mu = (*paramsArrayPtr)[1];
413 H = (*paramsArrayPtr)[5];
414
415 double lambda_plus_2mu = lambda + 2 * mu;
416 // first 6x6 is \frac{\partial^2 \psi}{\partial \varepsilon^p^2}
417 // lower symmetric part
418 // Diagonal elements
419 hessian[0][0] = lambda_plus_2mu;
420 hessian[1][1] = lambda_plus_2mu;
421 hessian[2][2] = lambda_plus_2mu;
422
423 // Off-diagonal elements
424 hessian[1][0] = lambda;
425 hessian[2][0] = lambda;
426 hessian[2][1] = lambda;
427
428 // Shear components
429 for (int i = 3; i <= 5; ++i) {
430 hessian[i][i] = mu;
431 }
432
433 //next 6x6 is \frac{\partial^2 \psi}{\partial \varepsilon \partial \varepsilon^p}
434 double neg_lambda_plus_2mu = -(lambda + 2 * mu);
435 double neg_lambda = -lambda;
436 double neg_mu = -mu;
437
438 for (int i = 6; i <= 8; ++i) {
439 for (int j = 0; j <= 2; ++j) {
440 hessian[i][j] = (i - 6 == j) ? neg_lambda_plus_2mu : neg_lambda;
441 }
442 }
443
444 hessian[9][3] = neg_mu;
445 hessian[10][4] = neg_mu;
446 hessian[11][5] = neg_mu;
447
448 //next 6x6 is \frac{\partial^2 \psi}{\partial \varepsilon \partial \varepsilon}
449 hessian[6][6] = lambda_plus_2mu;
450 hessian[7][6] = lambda;
451 hessian[7][7] = lambda_plus_2mu;
452 hessian[8][6] = lambda;
453 hessian[8][7] = lambda;
454 hessian[8][8] = lambda_plus_2mu;
455 hessian[9][9] = mu;
456 hessian[10][10] = mu;
457 hessian[11][11] = mu;
458
459 // internalVariables is \frac{\partial^2 \psi}{\partial \alpha^2}
460 hessian[12][12] = H;
461
463 }

◆ evalF()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::evalF ( )
inline

[Yield function J2]

Definition at line 373 of file ADOLCPlasticityMaterialModels.hpp.

373 {
375 auto t_voight_stress_op = voight_to_stress_op();
376 auto t_vioght_stress = getFTensor1FromPtr<6>(&a_sTress[0]);
377 auto t_back_stress = getFTensor1FromPtr<6>(&a_internalFluxes[1]);
378 tStress(i, j) = t_voight_stress_op(i, j, Z) * t_vioght_stress(Z);
379 tBackStress(i, j) = t_voight_stress_op(i, j, Z) * t_back_stress(Z);
380
381 constexpr double third = boost::math::constants::third<double>();
383 tR = tStress(i, i) / 3.;
384 tDeviator(i, j) = tStress(i, j) - tR * t_kd(i, j) - tBackStress(i, j);
385
386 // Fix the constant to mach uniaxial test
387 constexpr double c = 3. / 2.;
388 f = c * tDeviator(i, j) * tDeviator(i, j);
389
391 }
constexpr double third
Kronecker Delta class symmetric.
constexpr auto t_kd
const double c
speed of light (cm/ns)
FTensor::Dg< double, 3, 6 > voight_to_stress_op()
Op convert Vight stress vector to stress tensor.
FTensor::Tensor2_symmetric< adouble, 3 > tDeviator
FTensor::Tensor2_symmetric< adouble, 3 > tStress
FTensor::Tensor2_symmetric< adouble, 3 > tBackStress

◆ flowPotential()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::flowPotential ( )
inlinevirtual

[Yield function J2]

Implements ADOLCPlasticity::ClosestPointProjection.

Definition at line 401 of file ADOLCPlasticityMaterialModels.hpp.

◆ freeHemholtzEnergy()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::freeHemholtzEnergy ( )
inlinevirtual

[Free energy J2]

Implements ADOLCPlasticity::ClosestPointProjection.

Definition at line 324 of file ADOLCPlasticityMaterialModels.hpp.

324 {
326
327 // ADOL-C register parameters (those can varied for integration points)
328 auto p_lambda = mkparam(lambda); // 0
329 auto p_mu = mkparam(mu); // 1
330 auto p_H = mkparam(H); // 2
331 auto p_K = mkparam(K); // 3
332 auto p_phi = mkparam(phi); // 4
333 auto p_sigma_y = mkparam(sigmaY); // 5
334
335 // Operator converting Voight and tensor notation
336 auto t_voight_strain_op = voight_to_strain_op();
337
338 // Variable in voight notation
339 auto t_voight_total_strain = getFTensor1FromPtr<6>(&a_sTrain[0]);
340 auto t_voight_plastic_strain = getFTensor1FromPtr<6>(&a_plasticStrain[0]);
341 auto t_voight_internal_tensor =
342 getFTensor1FromPtr<6>(&a_internalVariables[1]);
343
344 // Convert variables to tensor notation
345 tTotalStrain(i, j) = t_voight_strain_op(i, j, Z) * t_voight_total_strain(Z);
346 tPlasticStrain(i, j) =
347 t_voight_strain_op(i, j, Z) * t_voight_plastic_strain(Z);
349 t_voight_strain_op(i, j, Z) * t_voight_internal_tensor(Z);
350
351 // Evaluate elastic strain
353 tR = tElasticStrain(i, i);
354
355 // Strain energy
356 a_w = 0.5 * p_lambda * tR * tR +
357 p_mu * (tElasticStrain(i, j) * tElasticStrain(i, j));
358 // Isotropic strain energy
359 a_w +=
360 a_internalVariables[0] * p_sigma_y +
361 0.5 * p_phi * p_H * (a_internalVariables[0] * a_internalVariables[0]);
362 // Kinematic strain energy
363 a_w += (0.5 * (1 - p_phi) * p_K) *
365
367 }
FTensor::Dg< double, 3, 6 > voight_to_strain_op()
Op convert Vight strain vector to strain tensor.
FTensor::Tensor2_symmetric< adouble, 3 > tInternalTensor
FTensor::Tensor2_symmetric< adouble, 3 > tPlasticStrain
FTensor::Tensor2_symmetric< adouble, 3 > tTotalStrain
FTensor::Tensor2_symmetric< adouble, 3 > tElasticStrain

◆ getDefaultMaterialParameters()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::getDefaultMaterialParameters ( )
inline

Definition at line 108 of file ADOLCPlasticityMaterialModels.hpp.

108 {
110
111 double young_modulus = 1;
112 double poisson_ratio = 0.25;
113 sigmaY = 1;
114 H = 0.1;
115 K = 0;
116 phi = 1;
117
118 CHKERR PetscOptionsGetScalar(PETSC_NULLPTR, "-young_modulus", &young_modulus,
119 PETSC_NULLPTR);
120 CHKERR PetscOptionsGetScalar(PETSC_NULLPTR, "-poisson_ratio", &poisson_ratio,
121 0);
122 CHKERR PetscOptionsGetScalar(PETSC_NULLPTR, "-sigma_y", &sigmaY, PETSC_NULLPTR);
123 CHKERR PetscOptionsGetScalar(PETSC_NULLPTR, "-H", &H, PETSC_NULLPTR);
124 CHKERR PetscOptionsGetScalar(PETSC_NULLPTR, "-K", &K, PETSC_NULLPTR);
125 CHKERR PetscOptionsGetScalar(PETSC_NULLPTR, "-phi", &phi, PETSC_NULLPTR);
126
127 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
128 << "Young modulus: " << young_modulus;
129 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
130 << "Poisson ratio: " << poisson_ratio;
131
134
135 defaultParamsArrayPtr = boost::make_shared<ParamsArray>();
136 (*defaultParamsArrayPtr)[LAMBDA] = lambda;
137 (*defaultParamsArrayPtr)[MU] = mu;
138 (*defaultParamsArrayPtr)[ISOH] = H;
139 (*defaultParamsArrayPtr)[KINK] = K;
140 (*defaultParamsArrayPtr)[PHI] = phi;
141 (*defaultParamsArrayPtr)[SIGMA_Y] = sigmaY;
142
143 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
144 << "LAMBDA: " << (*defaultParamsArrayPtr)[LAMBDA];
145 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
146 << "MU: " << (*defaultParamsArrayPtr)[MU];
147 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
148 << "H: " << (*defaultParamsArrayPtr)[ISOH];
149 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
150 << "K: " << (*defaultParamsArrayPtr)[KINK];
151 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
152 << "PHI: " << (*defaultParamsArrayPtr)[PHI];
153 MOFEM_LOG("ADOLCPlasticityWold", Sev::inform)
154 << "SIGMA_Y: " << (*defaultParamsArrayPtr)[SIGMA_Y];
155
156 paramsArrayPtr = boost::make_shared<ParamsArray>();
157 std::copy(defaultParamsArrayPtr->begin(), defaultParamsArrayPtr->end(),
158 paramsArrayPtr->begin());
159 oldParamsArrayPtr = boost::make_shared<ParamsArray>();
160 std::fill(oldParamsArrayPtr->begin(), oldParamsArrayPtr->end(), 0);
161
163 };
PetscErrorCode PetscOptionsGetScalar(PetscOptions *, const char pre[], const char name[], PetscScalar *dval, PetscBool *set)
boost::shared_ptr< ParamsArray > oldParamsArrayPtr

◆ setParams()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::setParams ( short tag,
bool & recalculate_elastic_tangent )
inlinevirtual

Set material parameters at integration point.

Parameters
tag
recalculate_elastic_tangent
Returns
MoFEMErrorCode

Reimplemented from ADOLCPlasticity::ClosestPointProjection.

Definition at line 297 of file ADOLCPlasticityMaterialModels.hpp.

297 {
299 switch (tag) {
300 case TypesTags::W: {
301 set_param_vec(tapesTags[tag], paramsArrayPtr->size(),
302 paramsArrayPtr->data());
303 for (auto p = 0; p != LAST_PARAM; p++) {
304 if ((*paramsArrayPtr)[p] != (*oldParamsArrayPtr)[p]) {
305 recalculate_elastic_tangent = true;
306 std::copy(paramsArrayPtr->begin(), paramsArrayPtr->end(),
307 oldParamsArrayPtr->begin());
308 break;
309 }
310 }
311
312 } break;
313 case TypesTags::Y:
314 case TypesTags::H:
315 break;
316 default:
317 SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
318 "Unknown tag for setParams");
319 }
321 }
std::array< int, LAST_TAPE > tapesTags

◆ yieldFunction()

MoFEMErrorCode ADOLCPlasticity::J2Plasticity< 3 >::yieldFunction ( )
inlinevirtual

Set yield function.

Implements ADOLCPlasticity::ClosestPointProjection.

Definition at line 393 of file ADOLCPlasticityMaterialModels.hpp.

Member Data Documentation

◆ defaultParamsArrayPtr

boost::shared_ptr<ParamsArray> ADOLCPlasticity::J2Plasticity< 3 >::defaultParamsArrayPtr = nullptr

Definition at line 104 of file ADOLCPlasticityMaterialModels.hpp.

◆ f

[Free energy J2]

Definition at line 370 of file ADOLCPlasticityMaterialModels.hpp.

◆ H

◆ i

◆ j

◆ K

◆ lambda

◆ mu

◆ oldParamsArrayPtr

boost::shared_ptr<ParamsArray> ADOLCPlasticity::J2Plasticity< 3 >::oldParamsArrayPtr = nullptr

Definition at line 106 of file ADOLCPlasticityMaterialModels.hpp.

◆ paramsArrayPtr

boost::shared_ptr<ParamsArray> ADOLCPlasticity::J2Plasticity< 3 >::paramsArrayPtr = nullptr

Definition at line 105 of file ADOLCPlasticityMaterialModels.hpp.

◆ phi

◆ sigmaY

◆ tBackStress

◆ tDeviator

◆ tElasticStrain

◆ tInternalTensor

◆ tPlasticStrain

◆ tR

◆ tStress

◆ tTotalStrain

◆ Z


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