Skip to content

Commit

Permalink
Use ints for indices, make stuff const (idaholab#193)
Browse files Browse the repository at this point in the history
  • Loading branch information
dschwen committed Mar 31, 2021
1 parent 58f36c4 commit b64f092
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions src/materials/NEMLStressBase.C
Original file line number Diff line number Diff line change
Expand Up @@ -156,40 +156,37 @@ NEMLStressBase::RankTwoTensorToNeml(const RankTwoTensor & in, double * const out
double mults[6] = {1.0, 1.0, 1.0, sqrt(2.0), sqrt(2.0), sqrt(2.0)};

for (unsigned int i = 0; i < 6; ++i)
{
out[i] = in(inds[i][0], inds[i][1]) * mults[i];
}
}

void
NEMLStressBase::NemlToRankTwoTensor(const double * const in, RankTwoTensor & out)
{
double inds[6][2] = {{0, 0}, {1, 1}, {2, 2}, {1, 2}, {0, 2}, {0, 1}};
double mults[6] = {1.0, 1.0, 1.0, sqrt(2.0), sqrt(2.0), sqrt(2.0)};
static const unsigned int inds[6][2] = {{0, 0}, {1, 1}, {2, 2}, {1, 2}, {0, 2}, {0, 1}};
static const double mults[6] = {
1.0, 1.0, 1.0, 1.0 / std::sqrt(2.0), 1.0 / std::sqrt(2.0), 1.0 / std::sqrt(2.0)};

for (unsigned int i = 0; i < 6; ++i)
{
out(inds[i][0], inds[i][1]) = in[i] / mults[i];
out(inds[i][1], inds[i][0]) = in[i] / mults[i];
out(inds[i][0], inds[i][1]) = in[i] * mults[i];
out(inds[i][1], inds[i][0]) = in[i] * mults[i];
}
}

void
NEMLStressBase::NemlToRankFourTensor(const double * const in, RankFourTensor & out)
{
double inds[6][2] = {{0, 0}, {1, 1}, {2, 2}, {1, 2}, {0, 2}, {0, 1}};
double mults[6] = {1.0, 1.0, 1.0, sqrt(2.0), sqrt(2.0), sqrt(2.0)};
static const unsigned int inds[6][2] = {{0, 0}, {1, 1}, {2, 2}, {1, 2}, {0, 2}, {0, 1}};
static const double mults[6] = {1.0, 1.0, 1.0, 1.0 / sqrt(2.0), 1.0 / sqrt(2.0), 1.0 / sqrt(2.0)};

for (unsigned int i = 0; i < 6; ++i)
{
for (unsigned int j = 0; j < 6; ++j)
{
out(inds[i][0], inds[i][1], inds[j][0], inds[j][1]) = in[i * 6 + j] / (mults[i] * mults[j]);
out(inds[i][1], inds[i][0], inds[j][0], inds[j][1]) = in[i * 6 + j] / (mults[i] * mults[j]);
out(inds[i][0], inds[i][1], inds[j][1], inds[j][0]) = in[i * 6 + j] / (mults[i] * mults[j]);
out(inds[i][1], inds[i][0], inds[j][1], inds[j][0]) = in[i * 6 + j] / (mults[i] * mults[j]);
out(inds[i][0], inds[i][1], inds[j][0], inds[j][1]) = in[i * 6 + j] * (mults[i] * mults[j]);
out(inds[i][1], inds[i][0], inds[j][0], inds[j][1]) = in[i * 6 + j] * (mults[i] * mults[j]);
out(inds[i][0], inds[i][1], inds[j][1], inds[j][0]) = in[i * 6 + j] * (mults[i] * mults[j]);
out(inds[i][1], inds[i][0], inds[j][1], inds[j][0]) = in[i * 6 + j] * (mults[i] * mults[j]);
}
}
}

#endif // NEML_ENABLED

0 comments on commit b64f092

Please sign in to comment.