CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM CC Toolkits for Fluid-Structure Interaction (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/)
-   -   [solidMechanics] solidMechanics gear contact in rotation (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/136444-solidmechanics-gear-contact-rotation.html)

nlc May 28, 2014 12:54

solidMechanics gear contact in rotation
 
Hi,

I'm trying to study a gear contact with the solid solver of Foam-extended 3.0

Ok the solver elasticSolidFoam work perfectly for contact but dos not allow rotation.

elasticNonLinTLSolidFoam and elasticNonLinULSolidFoam work for rotation but I cant seam to make them work for contact.

In the case of elasticNonLinTLSolidFoam I get the error
Code:

Starting time loop

Time: 1

    Slave contact patch pinionTeeth grabbing normalContactModel pointer from master
    Slave contact patch pinionTeeth grabbing frictionContactModel pointer from master


--> FOAM FATAL ERROR:

    request for volVectorField U_0 from objectRegistry region0 failed
    available objects of type volVectorField are

3
(
div((magSf*((((((-(interpolate(mu)+interpolate(lambda))*(snGrad(U)&((1)-((S|magSf)*(S|magSf)))))+((interpolate(lambda)*tr(((((1)-((S|magSf)*(S|magSf)))&interpolate(grad(U)))&((1)-((S|magSf)*(S|magSf))))))*(S|magSf)))+(interpolate(mu)*((((1)-((S|magSf)*(S|magSf)))&interpolate(grad(U)))&(S|magSf))))+(interpolate(mu)*((S|magSf)&interpolate((grad(U)&grad(U).T())))))+((0.5*interpolate(lambda))*((S|magSf)*tr(interpolate((grad(U)&grad(U).T()))))))+((S|magSf)&interpolate((sigma&grad(U)))))))
U
UPrevIter
)


    From function objectRegistry::lookupObject<Type>(const word&) const
    in file /home/Foam/foam-extend-3.0/src/foam/lnInclude/objectRegistryTemplates.C at line 139.

And in the case of elasticNonLinULSolidFoam it crash
Code:

Starting time loop

Time = 1

    Slave contact patch pinionTeeth grabbing normalContactModel pointer from master
    Slave contact patch pinionTeeth grabbing frictionContactModel pointer from master
    Time 1, Corrector 0, Solving for DU using DICPCG, res = 1, rel res = 1, inner iters 3
    Time 1, Corrector 1, Solving for DU using DICPCG, res = 0.0745107, rel res = 1, inner iters 12
    Time 1, Corrector 2, Solving for DU using DICPCG, res = 0.0670055, rel res = 0.204413, inner iters 10
    Time 1, Corrector 3, Solving for DU using DICPCG, res = 0.0300142, rel res = 0.0550744, inner iters 7
    Time 1, Corrector 4, Solving for DU using DICPCG, res = 0.0139227, rel res = 0.0486533, inner iters 7
    Time 1, Corrector 5, Solving for DU using DICPCG, res = 0.00770099, rel res = 0.0133588, inner iters 8
    Time 1, Corrector 6, Solving for DU using DICPCG, res = 0.00474556, rel res = 0.0197897, inner iters 6
    Time 1, Corrector 7, Solving for DU using DICPCG, res = 0.00321626, rel res = 0.00619995, inner iters 7
    Time 1, Corrector 8, Solving for DU using DICPCG, res = 0.00237219, rel res = 0.0093214, inner iters 6
    Time 1, Corrector 9, Solving for DU using DICPCG, res = 0.001763, rel res = 0.00428953, inner iters 7
    Time 1, Corrector 10, Solving for DU using DICPCG, res = 0.00214489, rel res = 0.0123793, inner iters 13
    Time 1, Corrector 11, Solving for DU using DICPCG, res = 0.00176585, rel res = 0.01188, inner iters 9
    Time 1, Corrector 12, Solving for DU using DICPCG, res = 0.00101126, rel res = 0.00232465, inner iters 8
    Time 1, Corrector 13, Solving for DU using DICPCG, res = 0.000605676, rel res = 0.00126276, inner iters 5
    Time 1, Corrector 14, Solving for DU using DICPCG, res = 0.00035762, rel res = 0.000939143, inner iters 21
    Time 1, Corrector 15, Solving for DU using DICPCG, res = 0.000258029, rel res = 0.000650839, inner iters 6
    Time 1, Corrector 16, Solving for DU using DICPCG, res = 0.000173268, rel res = 0.000342203, inner iters 10
    Time 1, Corrector 17, Solving for DU using DICPCG, res = 0.000120151, rel res = 0.000454567, inner iters 21
    Time 1, Corrector 18, Solving for DU using DICPCG, res = 8.35921e-05, rel res = 0.000200285, inner iters 10
    Time 1, Corrector 19, Solving for DU using DICPCG, res = 5.68496e-05, rel res = 0.000201291, inner iters 25
    Time 1, Corrector 20, Solving for DU using DICPCG, res = 0.0543611, rel res = 0.946589, inner iters 40
    Time 1, Corrector 21, Solving for DU using DICPCG, res = 0.0150151, rel res = 2.09456, inner iters 33
    Time 1, Corrector 22, Solving for DU using DICPCG, res = 0.0449331, rel res = 1.1662, inner iters 30
    Time 1, Corrector 23, Solving for DU using DICPCG, res = 0.0221391, rel res = 1.3073, inner iters 31
    Time 1, Corrector 24, Solving for DU using DICPCG, res = 0.0148178, rel res = 0.532443, inner iters 30
    Time 1, Corrector 25, Solving for DU using DICPCG, res = 0.0235522, rel res = 0.183507, inner iters 31
    Time 1, Corrector 26, Solving for DU using DICPCG, res = 0.0199556, rel res = 0.220766, inner iters 17
    Time 1, Corrector 27, Solving for DU using DICPCG, res = 0.0147405, rel res = 0.117636, inner iters 29
    Time 1, Corrector 28, Solving for DU using DICPCG, res = 0.0104383, rel res = 0.103261, inner iters 26
    Time 1, Corrector 29, Solving for DU using DICPCG, res = 0.00777503, rel res = 0.0755759, inner iters 26
    Time 1, Corrector 30, Solving for DU using DICPCG, res = 0.0454017, rel res = 1, inner iters 39
    Time 1, Corrector 31, Solving for DU using DICPCG, res = 0.0849541, rel res = 1.85395, inner iters 37
    Time 1, Corrector 32, Solving for DU using DICPCG, res = 0.15859, rel res = 126.43, inner iters 32
    Time 1, Corrector 33, Solving for DU using DICPCG, res = 0.999821, rel res = 28.6856, inner iters 5
    Time 1, Corrector 34, Solving for DU using DICPCG, res = 1, rel res = 4.67685, inner iters 5
    Time 1, Corrector 35, Solving for DU using DICPCG, res = 1, rel res = 1, inner iters 4
Exception en point flottant

My boundary condition for U in the case of are elasticNonLinTLSolidFoam. For elasticNonLinULSolidFoam I use a DU field with the same BC
Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | foam-extend: Open Source CFD                    |
|  \\    /  O peration    | Version:    3.0                                |
|  \\  /    A nd          | Web:        http://www.extend-project.de      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      volVectorField;
    location    "0";
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 0 0 0 0 0];

internalField  uniform (0 0 0);

boundaryField
{

    pinionDisplacement
    {
/*
      type            timeVaryingFixedDisplacement;
      outOfBounds    clamp;
      fileName        "$FOAM_CASE/constant/timeVsTopDisp";
      value          uniform (0 0 0);
*/
      type timeVaryingFixedRotation;
      rotationAxis (0 0 -1);
      rotationOrigin (0 0 0);
      fileName "$FOAM_CASE/constant/timeVsPignonAngle";
      outOfBounds clamp;
      value uniform ( 0 0 0 );

    }

    gearDisplacement
    {
      type            fixedDisplacement;
      value uniform ( 0 0 0 );
/*
      type timeVaryingFixedRotation;
      rotationAxis (0 0 1);
      rotationOrigin (-2 0 0);
      fileName "$FOAM_CASE/constant/timeVsPignonAngle";
      outOfBounds clamp;
      value uniform ( 0 0 0 );
*/
    }

    gearTeeth
    {
      type                solidContact;
      master              yes;
      contactActive        yes;
      rigidMaster          no;
      shadowPatch          pinionTeeth;
      interpolationMethod  ggi;
      //interpolationMethod  patchToPatch;
      projectionAlgo      visible;
      projectionDir        contactSphere;
      //projectionDir        vector;
      correctionFrequency  10;
      normalContactModel    standardPenalty;
      standardPenaltyNormalModelDict
    {
      relaxationFactor              0.1;
      penaltyScale                  1;
      returnScale                    1.5;
      contactGapTol                  1e-7;
      limitPenetration              no;
      penetrationLimit              -0.03;
      limitPressure                  no;
      pressureLimit                  1e12;
      correctMissedVertices          yes;
      distanceMethod                point;
      //distanceMethod                face;
      oscillationCorrection          yes;
      smoothingSteps                1;
      infoFrequency                  10;
          }
      //frictionContactModel  frictionless;
      frictionContactModel  standardPenalty;
      standardPenaltyFrictionModelDict
    {
      relaxationFactor              0.1;
      penaltyScale                  1;
      oscillationCorrection          yes;
      smoothingSteps                1;
      infoFrequency                  10;
   
      frictionLaw      coulomb;
      frictionLawDict
        {
          frictionCoeff    0.1;
        }
    }
      value                uniform (0 0 0);
    }

    pinionTeeth
    {
      type                solidContact;
      shadowPatch          gearTeeth;
      master              no;
      contactActive        yes;
      value                uniform (0 0 0);
    }

    empty
    {
        type            empty;
    }

I can get the gear in rotation with no error if I remove the contact boundary condition.

Thank you for your help

jherb January 8, 2015 09:11

I hit the same problem (see thread http://www.cfd-online.com/Forums/ope...-openfoam.html). Did you find a solution?

nlc January 10, 2015 17:34

Yes I manage to make a contact in rotation work. I still have problem with false constraint cause buy numerical error due to rotation. And I need a torque boundary condition.

Here is the video of the gear contact simulation:
https://www.youtube.com/watch?v=sW_sLQ9JbHI

The problem in my case was that the boundary contact condition treatment dos not seem to allow for surface that has 2 point intersect buy the contact normal. So I spited the contact boundary.

This work with UL and IncTL

Regards

jherb January 11, 2015 06:41

Thank you for your answer. Actually, in my case the problem was the parameter correctionFrequency for the solidContact boundary condition. By reducing it from 10 to 1 it now works.


All times are GMT -4. The time now is 09:02.