This repository has been archived on 2023-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
foam-extend4.1-coherent-io/applications/solvers/solidMechanics/elasticOrthoNonLinULSolidFoam/rotateFields.H

48 lines
1.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();
}