Skip to content

Commit 3152c75

Browse files
committed
remove mutable and const. hopefully prepare for Mastodon/Blackbear changes. Refs #32178
1 parent 4b17c70 commit 3152c75

8 files changed

+73
-42
lines changed

modules/solid_mechanics/include/materials/CappedMohrCoulombStressUpdate.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ class CappedMohrCoulombStressUpdate : public MultiParameterPlasticityStressUpdat
6565
void computeStressParams(const RankTwoTensor & stress,
6666
std::vector<Real> & stress_params) const override;
6767

68-
void dstress_param_dstress(const RankTwoTensor & stress,
69-
std::vector<RankTwoTensor> & dsp) const override;
68+
void dstressparam_dstress(const RankTwoTensor & stress,
69+
std::vector<RankTwoTensor> & dsp) override;
7070

7171
std::vector<RankFourTensor> d2stress_param_dstress(const RankTwoTensor & stress) const override;
7272

@@ -126,5 +126,5 @@ class CappedMohrCoulombStressUpdate : public MultiParameterPlasticityStressUpdat
126126
* d(stress_param[:])/d(stress) used in dstress_param_dstress
127127
* to avoid repeatedly allocating/deallocating this vector
128128
*/
129-
mutable std::vector<RankTwoTensor> _dsp_trial_scratch;
129+
std::vector<RankTwoTensor> _dsp_trial_scratch;
130130
};

modules/solid_mechanics/include/materials/MultiParameterPlasticityStressUpdate.h

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -566,13 +566,12 @@ class MultiParameterPlasticityStressUpdate : public StressUpdateBase
566566
* @param inelastic_strain_increment[out] The inelastic strain increment resulting from this
567567
* return-map
568568
*/
569-
virtual void
570-
setInelasticStrainIncrementAfterReturn(const RankTwoTensor & stress_trial,
571-
Real gaE,
572-
const yieldAndFlow & smoothed_q,
573-
const RankFourTensor & elasticity_tensor,
574-
const RankTwoTensor & returned_stress,
575-
RankTwoTensor & inelastic_strain_increment) const;
569+
virtual void setInelasticStrainIncrementAfterReturn(const RankTwoTensor & stress_trial,
570+
Real gaE,
571+
const yieldAndFlow & smoothed_q,
572+
const RankFourTensor & elasticity_tensor,
573+
const RankTwoTensor & returned_stress,
574+
RankTwoTensor & inelastic_strain_increment);
576575

577576
/**
578577
* Calculates the consistent tangent operator.
@@ -608,11 +607,20 @@ class MultiParameterPlasticityStressUpdate : public StressUpdateBase
608607

609608
/**
610609
* d(stress_param[i])/d(stress) at given stress
610+
* TODO: remove this function when Blackbear and others have implemented the void version
611611
* @param stress stress tensor
612-
* @param dsp d(stress_param[:])/d(stress). Caller must ensure this has size _num_sp
612+
* @return d(stress_param[:])/d(stress)
613613
*/
614-
virtual void dstress_param_dstress(const RankTwoTensor & stress,
615-
std::vector<RankTwoTensor> & dsp) const = 0;
614+
virtual std::vector<RankTwoTensor> dstress_param_dstress(const RankTwoTensor & stress) const;
615+
616+
/**
617+
* d(stress_param[i])/d(stress) at given stress. When overriding, ensure to assert that dsp has
618+
* size _num_sp
619+
* TODO: when Blackbear and others have this implemented, make this pure virtual
620+
* @param stress[in] stress tensor
621+
* @param dsp[out] d(stress_param[:])/d(stress)
622+
*/
623+
virtual void dstressparam_dstress(const RankTwoTensor & stress, std::vector<RankTwoTensor> & dsp);
616624

617625
/**
618626
* d2(stress_param[i])/d(stress)/d(stress) at given stress
@@ -734,16 +742,16 @@ class MultiParameterPlasticityStressUpdate : public StressUpdateBase
734742
std::vector<Real> _current_intnl;
735743

736744
/**
737-
* d(stress_param[:])/d(stress) used in dstress_param_dstress
745+
* d(stress_param[:])/d(stress) used in dstressparam_dstress
738746
* to avoid repeatedly allocating/deallocating this vector
739747
*/
740-
mutable std::vector<RankTwoTensor> _dsp_scratch;
748+
std::vector<RankTwoTensor> _dsp_scratch;
741749

742750
/**
743-
* d(stress_param[:])/d(stress_trial) used in dstress_param_dstress
751+
* d(stress_param[:])/d(stress_trial) used in dstressparam_dstress
744752
* to avoid repeatedly allocating/deallocating this vector
745753
*/
746-
mutable std::vector<RankTwoTensor> _dsp_trial_scratch;
754+
std::vector<RankTwoTensor> _dsp_trial_scratch;
747755

748756
private:
749757
/**

modules/solid_mechanics/include/materials/TensileStressUpdate.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ class TensileStressUpdate : public MultiParameterPlasticityStressUpdate
4747
void computeStressParams(const RankTwoTensor & stress,
4848
std::vector<Real> & stress_params) const override;
4949

50-
void dstress_param_dstress(const RankTwoTensor & stress,
51-
std::vector<RankTwoTensor> & dsp) const override;
50+
void dstressparam_dstress(const RankTwoTensor & stress,
51+
std::vector<RankTwoTensor> & dsp) override;
5252

5353
std::vector<RankFourTensor> d2stress_param_dstress(const RankTwoTensor & stress) const override;
5454

@@ -108,5 +108,5 @@ class TensileStressUpdate : public MultiParameterPlasticityStressUpdate
108108
* d(stress_param[:])/d(stress) used in dstress_param_dstress
109109
* to avoid repeatedly allocating/deallocating this vector
110110
*/
111-
mutable std::vector<RankTwoTensor> _dsp_trial_scratch;
111+
std::vector<RankTwoTensor> _dsp_trial_scratch;
112112
};

modules/solid_mechanics/include/materials/TwoParameterPlasticityStressUpdate.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -248,13 +248,12 @@ class TwoParameterPlasticityStressUpdate : public MultiParameterPlasticityStress
248248
const RankFourTensor & Eijkl,
249249
RankTwoTensor & stress) const override;
250250

251-
void
252-
setInelasticStrainIncrementAfterReturn(const RankTwoTensor & stress_trial,
253-
Real gaE,
254-
const yieldAndFlow & smoothed_q,
255-
const RankFourTensor & elasticity_tensor,
256-
const RankTwoTensor & returned_stress,
257-
RankTwoTensor & inelastic_strain_increment) const override;
251+
void setInelasticStrainIncrementAfterReturn(const RankTwoTensor & stress_trial,
252+
Real gaE,
253+
const yieldAndFlow & smoothed_q,
254+
const RankFourTensor & elasticity_tensor,
255+
const RankTwoTensor & returned_stress,
256+
RankTwoTensor & inelastic_strain_increment) override;
258257

259258
/**
260259
* Calculates the consistent tangent operator.
@@ -298,8 +297,8 @@ class TwoParameterPlasticityStressUpdate : public MultiParameterPlasticityStress
298297
const std::vector<std::vector<Real>> & dvar_dtrial,
299298
RankFourTensor & cto) override;
300299

301-
virtual void dstress_param_dstress(const RankTwoTensor & stress,
302-
std::vector<RankTwoTensor> & dsp) const override;
300+
virtual void dstressparam_dstress(const RankTwoTensor & stress,
301+
std::vector<RankTwoTensor> & dsp) override;
303302
virtual std::vector<RankFourTensor>
304303
d2stress_param_dstress(const RankTwoTensor & stress) const override;
305304
/**

modules/solid_mechanics/src/materials/CappedMohrCoulombStressUpdate.C

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@ CappedMohrCoulombStressUpdate::computeStressParams(const RankTwoTensor & stress,
7575
}
7676

7777
void
78-
CappedMohrCoulombStressUpdate::dstress_param_dstress(const RankTwoTensor & stress,
79-
std::vector<RankTwoTensor> & dsp) const
78+
CappedMohrCoulombStressUpdate::dstressparam_dstress(const RankTwoTensor & stress,
79+
std::vector<RankTwoTensor> & dsp)
8080
{
81+
mooseAssert(dsp.size() == 3,
82+
"CappedMohrCoulombStressUpdate: dsp incorrectly sized in dstressparam_dstress");
8183
std::vector<Real> sp;
8284
stress.dsymmetricEigenvalues(sp, dsp);
8385
}
@@ -842,7 +844,7 @@ CappedMohrCoulombStressUpdate::consistentTangentOperatorV(
842844
drot_dstress(i, a, k, l) * stress_params[a] * eT(a, j) +
843845
_eigvecs(i, a) * stress_params[a] * drot_dstress(j, a, k, l);
844846

845-
dstress_param_dstress(stress_trial, _dsp_trial_scratch);
847+
dstressparam_dstress(stress_trial, _dsp_trial_scratch);
846848
for (unsigned i = 0; i < _tensor_dimensionality; ++i)
847849
for (unsigned j = 0; j < _tensor_dimensionality; ++j)
848850
for (unsigned k = 0; k < _tensor_dimensionality; ++k)

modules/solid_mechanics/src/materials/MultiParameterPlasticityStressUpdate.C

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -740,8 +740,8 @@ MultiParameterPlasticityStressUpdate::consistentTangentOperatorV(
740740

741741
const Real ga = gaE / _En;
742742

743-
dstress_param_dstress(stress, _dsp_scratch);
744-
dstress_param_dstress(stress_trial, _dsp_trial_scratch);
743+
dstressparam_dstress(stress, _dsp_scratch);
744+
dstressparam_dstress(stress_trial, _dsp_trial_scratch);
745745

746746
for (unsigned a = 0; a < _num_sp; ++a)
747747
{
@@ -782,16 +782,34 @@ MultiParameterPlasticityStressUpdate::consistentTangentOperatorV(
782782
cto = (cto.transposeMajor() * inv).transposeMajor();
783783
}
784784

785+
std::vector<RankTwoTensor>
786+
MultiParameterPlasticityStressUpdate::dstress_param_dstress(const RankTwoTensor & /*stress*/) const
787+
{
788+
std::vector<RankTwoTensor> dummy(_num_sp);
789+
return dummy;
790+
}
791+
792+
void
793+
MultiParameterPlasticityStressUpdate::dstressparam_dstress(const RankTwoTensor & stress,
794+
std::vector<RankTwoTensor> & dsp)
795+
{
796+
mooseDeprecated(
797+
"The function std::vector<RankTwoTensor> dstress_param_dstress(stress) const is deprecated. "
798+
"You need to override the new function void dstressparam_dstress(stress, dsp)");
799+
mooseAssert(dsp.size() == _num_sp, "dsp incorrectly sized in dstress_param_dstress");
800+
dsp = dstress_param_dstress(stress);
801+
}
802+
785803
void
786804
MultiParameterPlasticityStressUpdate::setInelasticStrainIncrementAfterReturn(
787805
const RankTwoTensor & /*stress_trial*/,
788806
Real gaE,
789807
const yieldAndFlow & smoothed_q,
790808
const RankFourTensor & /*elasticity_tensor*/,
791809
const RankTwoTensor & returned_stress,
792-
RankTwoTensor & inelastic_strain_increment) const
810+
RankTwoTensor & inelastic_strain_increment)
793811
{
794-
dstress_param_dstress(returned_stress, _dsp_scratch);
812+
dstressparam_dstress(returned_stress, _dsp_scratch);
795813
inelastic_strain_increment = RankTwoTensor();
796814
for (unsigned i = 0; i < _num_sp; ++i)
797815
inelastic_strain_increment += smoothed_q.dg[i] * _dsp_scratch[i];

modules/solid_mechanics/src/materials/TensileStressUpdate.C

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ TensileStressUpdate::computeStressParams(const RankTwoTensor & stress,
4848
}
4949

5050
void
51-
TensileStressUpdate::dstress_param_dstress(const RankTwoTensor & stress,
52-
std::vector<RankTwoTensor> & dsp) const
51+
TensileStressUpdate::dstressparam_dstress(const RankTwoTensor & stress,
52+
std::vector<RankTwoTensor> & dsp)
5353
{
54+
mooseAssert(dsp.size() == 3,
55+
"TensileStressUpdate: dsp incorrectly sized in dstressparam_dstress");
5456
std::vector<Real> sp;
5557
stress.dsymmetricEigenvalues(sp, dsp);
5658
}
@@ -270,7 +272,7 @@ TensileStressUpdate::consistentTangentOperatorV(const RankTwoTensor & stress_tri
270272
drot_dstress(i, a, k, l) * stress_params[a] * eT(a, j) +
271273
_eigvecs(i, a) * stress_params[a] * drot_dstress(j, a, k, l);
272274

273-
dstress_param_dstress(stress_trial, _dsp_trial_scratch);
275+
dstressparam_dstress(stress_trial, _dsp_trial_scratch);
274276
for (unsigned i = 0; i < _tensor_dimensionality; ++i)
275277
for (unsigned j = 0; j < _tensor_dimensionality; ++j)
276278
for (unsigned k = 0; k < _tensor_dimensionality; ++k)

modules/solid_mechanics/src/materials/TwoParameterPlasticityStressUpdate.C

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,16 +280,18 @@ TwoParameterPlasticityStressUpdate::setInelasticStrainIncrementAfterReturn(
280280
const yieldAndFlow & smoothed_q,
281281
const RankFourTensor & /*elasticity_tensor*/,
282282
const RankTwoTensor & returned_stress,
283-
RankTwoTensor & inelastic_strain_increment) const
283+
RankTwoTensor & inelastic_strain_increment)
284284
{
285285
inelastic_strain_increment = (gaE / _Epp) * (smoothed_q.dg[0] * dpdstress(returned_stress) +
286286
smoothed_q.dg[1] * dqdstress(returned_stress));
287287
}
288288

289289
void
290-
TwoParameterPlasticityStressUpdate::dstress_param_dstress(const RankTwoTensor & stress,
291-
std::vector<RankTwoTensor> & dsp) const
290+
TwoParameterPlasticityStressUpdate::dstressparam_dstress(const RankTwoTensor & stress,
291+
std::vector<RankTwoTensor> & dsp)
292292
{
293+
mooseAssert(dsp.size() == _num_sp,
294+
"TwoParameterPlasticityStressUpdate: dsp incorrectly sized in dstressparam_dstress");
293295
dsp[0] = dpdstress(stress);
294296
dsp[1] = dqdstress(stress);
295297
}

0 commit comments

Comments
 (0)