CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions > OpenFOAM CC Toolkits for Fluid-Structure Interaction

[solidMechanics] solidMechanics gear contact in rotation

Register Blogs Community New Posts Updated Threads Search

Like Tree3Likes
  • 1 Post By nlc
  • 1 Post By nlc
  • 1 Post By jherb

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   May 28, 2014, 12:54
Default solidMechanics gear contact in rotation
  #1
nlc
Member
 
nlc's Avatar
 
Nicolas Lussier Clément
Join Date: Apr 2009
Location: Montréal, Qc, Canada
Posts: 61
Rep Power: 17
nlc is on a distinguished road
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 likes this.
nlc is offline   Reply With Quote

Old   January 8, 2015, 09:11
Default
  #2
Senior Member
 
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 21
jherb is on a distinguished road
I hit the same problem (see thread http://www.cfd-online.com/Forums/ope...-openfoam.html). Did you find a solution?
jherb is offline   Reply With Quote

Old   January 10, 2015, 17:34
Default
  #3
nlc
Member
 
nlc's Avatar
 
Nicolas Lussier Clément
Join Date: Apr 2009
Location: Montréal, Qc, Canada
Posts: 61
Rep Power: 17
nlc is on a distinguished road
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 likes this.
nlc is offline   Reply With Quote

Old   January 11, 2015, 06:41
Default
  #4
Senior Member
 
Joachim Herb
Join Date: Sep 2010
Posts: 650
Rep Power: 21
jherb is on a distinguished road
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.
nlc likes this.
jherb is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Dynamic contact angle rmousavibt Fluent UDF and Scheme Programming 12 October 31, 2021 22:38
Dynamic contact angle issue: fluent UDF couldn't set the correct contact angle FelixJJ FLUENT 2 October 20, 2021 02:39
Java Macro -- Passive Pith in Superposing Rotation Motion Weidong Dai STAR-CCM+ 2 August 4, 2018 05:39
Contact analysis in Flexible gear virgo86 ANSYS 0 October 1, 2016 12:01
help with UDF for contact angle based on contact line velocity gandesk Fluent UDF and Scheme Programming 14 October 29, 2012 13:58


All times are GMT -4. The time now is 17:21.