1 if (runTime.outputTime())
3 volScalarField epsilonEq
13 sqrt((2.0/3.0)*magSqr(dev(epsilon)))
16 Info<< "Max epsilonEq = " << max(epsilonEq).value()
19 volScalarField sigmaEq
29 sqrt((3.0/2.0)*magSqr(dev(sigma)))
32 Info<< "Max sigmaEq = " << max(sigmaEq).value()
36 // volVectorField traction
41 // runTime.timeName(),
44 // IOobject::AUTO_WRITE
47 // dimensionedVector("zero", dimForce/dimArea, vector::zero)
49 // forAll(traction.boundaryField(), patchi)
51 // traction.boundaryField()[patchi] =
52 // n.boundaryField()[patchi] & sigma.boundaryField()[patchi];
56 // if(contactBoundaries)
58 // volScalarField stickSlipFaces
63 // runTime.timeName(),
66 // IOobject::AUTO_WRITE
69 // dimensionedScalar("zero", dimless, 0.0)
71 // forAll(stickSlipFaces.boundaryField(), patchi)
73 // if(U.boundaryField()[patchi].type()
75 // solidContactFvPatchVectorField::typeName)
77 // const solidContactFvPatchVectorField& Upatch =
78 // refCast<const solidContactFvPatchVectorField>
79 // (U.boundaryField()[patchi]);
81 // if(!Upatch.master())
83 // stickSlipFaces.boundaryField()[patchi] =
84 // Upatch.frictionContactModelPtr()->stickSlipFaces();
88 // stickSlipFaces.write();
94 // forAll(mesh.boundary(), patchi)
96 // Info << "Patch " << mesh.boundary()[patchi].name() << endl;
97 // vectorField totalForce = mesh.Sf().boundaryField()[patchi] & sigma.boundaryField()[patchi];
99 // vector force = sum( totalForce );
100 // Info << "\ttotal force is " << force << " N" << endl;
102 // const vectorField& nb = n.boundaryField()[patchi];
103 // scalar normalForce = sum( nb & totalForce );
104 // Info << "\tnormal force is " << normalForce << " N" << endl;
105 // scalar shearForce = mag(sum( (I - sqr(nb)) & totalForce ));
106 // Info << "\tshear force is " << shearForce << " N" << endl;