# floating point exception when moving plate comes close to stationary walls

 Register Blogs Members List Search Today's Posts Mark Forums Read

 June 4, 2017, 05:12 floating point exception when moving plate comes close to stationary walls #1 Member   Michael Frank Join Date: Aug 2012 Posts: 55 Rep Power: 13 Hi, I running a simulation using interDyMFoam, where a solid plate is free to move within an enclosure. The plate is moving as it should. However, when it comes very close to one of the stationary boundaries, the timestep becomes extremely small ( O(e-20) ) and the simulation eventually stops with a floating point exception. From the stack trace I can see that the problem occurs during surfaceInterpolation::makeDeltaCoeffs() when the dynamic mesh updates ( i.e. dynamicMotionSolverFvMesh::update() ). Does anyone know a way around this issue? Thanks in advance for any help Cheers Mike

 June 4, 2017, 06:18 #2 Senior Member     Uwe Pilz Join Date: Feb 2017 Location: Leipzig, Germany Posts: 744 Rep Power: 15 It would be valuable if you post your setup here. __________________ Uwe Pilz -- Die der Hauptbewegung überlagerte Schwankungsbewegung ist in ihren Einzelheiten so hoffnungslos kompliziert, daß ihre theoretische Berechnung aussichtslos erscheint. (Hermann Schlichting, 1950)

June 4, 2017, 07:06
#3
Member

Michael Frank
Join Date: Aug 2012
Posts: 55
Rep Power: 13

So the case involves an enclosure with a moving plate. There is an inflow and outflow of water which causes the moving plate to move around the enclosure. If it reaches one of the walls of the enclosure it should stop moving.

As I mentioned, the system dynamics seem completely fine up to the point where the plate reaches the walls. I assume it has something to do with dynamic mesh dictionary which I now post below.

Quote:
 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: dev | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object dynamicMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("librigidBodyMeshMotion.so"); solver rigidBodyMotion; rigidBodyMotionCoeffs { report on; solver { type Newmark; } accelerationRelaxation 0.9; bodies { disk { type rigidBody; parent root; centreOfMass (0 0.0075 0); mass 0.005; inertia (0 0 0 0 0 0); //transform (1 0 0 0 1 0 0 0 1) (2.929541 0 0.2); transform (1 0 0 0 1 0 0 0 1) (0 0 0); joint { type composite; joints ( { type Py; } ); } patches (disk); innerDistance 0.3; outerDistance 1.0; } } /*restraints { translationDamper { type linearDamper; body disk; coeff 8596; } rotationDamper { type sphericalAngularDamper; body disk; coeff 11586; } }*/ }

The points displacement dictionary is

Quote:
 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: dev | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class pointVectorField; object pointDisplacement; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; internalField uniform (0 0 0); boundaryField { inlet { type fixedValue; value uniform (0 0 0); } outlet { type fixedValue; value uniform (0 0 0); } wall { type fixedValue; value uniform (0 0 0); } disk { type calculated; value uniform (0 0 0); } }
Thanks again and let me know if you need anything else.

 June 15, 2017, 11:16 #4 Member   Michael Frank Join Date: Aug 2012 Posts: 55 Rep Power: 13 So I think I figured out what the problem is. As the moving object approaches a wall, the cells between the two solids are becoming continuously smaller. The adjustable timestep decreases continuously to accommodate the fixed CFL, to the point where it results in an error. Is there a way to stop this behaviour? For example, can I prevent the object from moving past a certain distance away from the wall? Thanks again for any help