49 lines
1 KiB
C
49 lines
1 KiB
C
|
//--------------------------------------------------//
|
||
|
//- rotate fields
|
||
|
//--------------------------------------------------//
|
||
|
{
|
||
|
Info << "Rotating fields" << endl;
|
||
|
|
||
|
volTensorField F = I + gradDU;
|
||
|
|
||
|
U += DU;
|
||
|
|
||
|
epsilon += DEpsilon;
|
||
|
|
||
|
sigma += DSigma;
|
||
|
|
||
|
volTensorField Finv = inv(F);
|
||
|
|
||
|
volScalarField J = det(F);
|
||
|
if(min(J.internalField()) < 0)
|
||
|
{
|
||
|
FatalErrorIn(args.executable())
|
||
|
<< "Negative Jacobian - a cell volume has become negative!"
|
||
|
<< exit(FatalError);
|
||
|
}
|
||
|
|
||
|
rho = rho/J;
|
||
|
|
||
|
n = mesh.Sf()/mesh.magSf();
|
||
|
|
||
|
//- rotate strain
|
||
|
//epsilon = symm(Finv & epsilon & Finv.T());
|
||
|
epsilon = transform(Finv, epsilon);
|
||
|
|
||
|
//- rotate stress
|
||
|
//sigma = 1/J * symm(F.T() & sigma & F);
|
||
|
sigma = (1/J) * transform(F.T(), sigma);
|
||
|
|
||
|
//- rotate elastic constitutive tensor
|
||
|
C = transform(F.T(), C);
|
||
|
|
||
|
// - update implicit stiffness tensor
|
||
|
forAll(K, celli)
|
||
|
{
|
||
|
K[celli].xx() = C[celli].xxxx();
|
||
|
K[celli].yy() = C[celli].yyyy();
|
||
|
K[celli].zz() = C[celli].zzzz();
|
||
|
}
|
||
|
K.correctBoundaryConditions();
|
||
|
}
|