CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Programming & Development

about double numbers' Precision

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 21, 2021, 20:19
Default about double numbers' Precision
  #1
New Member
 
tom tony
Join Date: Oct 2018
Posts: 2
Rep Power: 0
tomtony is on a distinguished road
I want to some events happen in sometime at some places.So I generate random time and points,and put them in an vector.
As the runTime++,I use an If in the loop that act on the vector,to find whether there is a time equal the runTime.value().However,I can't get the output which I expected.


following is the code.


Code:
//about time and coordinate
    struct coordinateTime
    {
        scalar breakTime;
        scalar xCoordinate;
        scalar yCoordinate;
    };

    //vector store time and points
    std::vector<coordinateTime> timeCoordinateVector {};
    // get area of 'top' boundary
    label patchID = mesh.boundaryMesh().findPatchID("top"); 
    const polyPatch& cPatch = mesh.boundaryMesh()[patchID]; 
    const surfaceScalarField& magSf = mesh.magSf(); 
    scalar patchArea = 0.0;  
    forAll(cPatch,faceI) 
    { 
        patchArea += magSf.boundaryField()[patchID][faceI]; 
    } 
  
    Info << "Patch Area " << patchArea << endl; 

    //get the total time
    scalar totalTime =  runTime.controlDict().lookupOrDefault<scalar>("endTime", 50.);
    Info << "total Time = " << nl << totalTime << endl;
    //get the deltaT
    scalar deltatime = runTime.controlDict().lookupOrDefault<scalar>("deltaT", 0.1);
    
    //get the total number of events happen 
   
    label totalBreaker = ceil(0.00001*totalTime*patchArea);
    Info << "total Number of breaker = " << nl << totalBreaker << endl;
    //generate the random time and points
  
    Random ranGen(clock::getTime()+pid());
    
    scalar xIntial,yIntial;
    scalar a=0., b=14.08;
    scalar g = 0.,h = 7.04;
    scalar e = 0.,f = totalTime;
    scalar scale = 0.1;
    struct coordinateTime coordinateTime1;
    
    for(label i = 0;i<totalBreaker;i++)
    {

        coordinateTime1.xCoordinate = a+b*(random()/(RAND_MAX+1.));
        coordinateTime1.yCoordinate = g+h*(random()/(RAND_MAX+1.));
        coordinateTime1.breakTime = f*random()/(RAND_MAX+1.);
        coordinateTime1.breakTime = floor(coordinateTime1.breakTime/scale+0.5)*scale;
        timeCoordinateVector.push_back(coordinateTime1);
    }
    Info<<"the size of timeCoordinateVector vector :"<<timeCoordinateVector.size()<<endl;
    for(auto x: timeCoordinateVector)
    {
        Info<<x.breakTime<<" "<<x.xCoordinate<<" "<<x.yCoordinate<<endl;
    } 
    
    
    while (runTime.run())
    {
        
        Info << "Running... " << "Time = " << runTime.value() << endl;
        for(auto x:timeCoordinateVector)
        {
            if(abs(runTime.value()-x.breakTime)<1e-6)
            {
                Info<<"break happen"<<endl;
            }
        }
        
        runTime++;
    }
following is the output,as you see,for example ,I expect nothing happen at time = 0,however,it had happened

Code:
the size of timeCoordinateVector vector :18
15.7 11.8298 2.77646
4 11.242 6.418
5.6 4.71994 5.40834
12.6 7.7999 3.36088
19 5.13617 3.61434
14.3 12.9 4.47541
0.3 1.99376 4.27306
16.1 3.41985 0.96611
2.6 2.20604 2.82265
4.4 1.53203 7.03243
12.3 7.22209 5.90735
10.5 4.16813 4.48837
5.9 6.94965 6.84834
15.4 10.8607 3.70828
5.7 5.63522 6.27637
18.4 4.96261 5.68638
10.5 0.982154 6.68326
13.3 1.21167 1.35319
Running... Time = 0
break happen
Running... Time = 0.1
break happen
Running... Time = 0.2
break happen
Running... Time = 0.3
break happen
Running... Time = 0.4
break happen
Running... Time = 0.5
break happen
Running... Time = 0.6
break happen
Running... Time = 0.7
break happen
Running... Time = 0.8
break happen
Running... Time = 0.9
break happen
Running... Time = 1
break happen
Running... Time = 1.1
break happen
Running... Time = 1.2
break happen
Running... Time = 1.3
Running... Time = 1.4
Running... Time = 1.5
Running... Time = 1.6
break happen
Running... Time = 1.7
break happen
Running... Time = 1.8
break happen
Running... Time = 1.9
break happen
Running... Time = 2
break happen
Running... Time = 2.1
break happen
Running... Time = 2.2
break happen
Running... Time = 2.3
break happen
Running... Time = 2.4
break happen
Running... Time = 2.5
break happen
Running... Time = 2.6
break happen
Running... Time = 2.7
break happen
Running... Time = 2.8
break happen
Running... Time = 2.9
break happen
Running... Time = 3
break happen
break happen
Running... Time = 3.1
break happen
break happen
Running... Time = 3.2
break happen
break happen
Running... Time = 3.3
break happen
break happen
Running... Time = 3.4
break happen
break happen
break happen
Running... Time = 3.5
break happen
break happen
break happen
Running... Time = 3.6
break happen
break happen
Running... Time = 3.7
break happen
break happen
Running... Time = 3.8
break happen
break happen
Running... Time = 3.9
break happen
break happen
Running... Time = 4
break happen
break happen
Running... Time = 4.1
break happen
break happen
Running... Time = 4.2
break happen
break happen
Running... Time = 4.3
break happen
break happen
Running... Time = 4.4
break happen
break happen
Running... Time = 4.5
break happen
break happen
Running... Time = 4.6
break happen
break happen
Running... Time = 4.7
break happen
break happen
break happen
Running... Time = 4.8
break happen
break happen
break happen
break happen
Running... Time = 4.9
break happen
break happen
break happen
break happen
Running... Time = 5
break happen
break happen
break happen
break happen
break happen
Running... Time = 5.1
break happen
break happen
break happen
break happen
Running... Time = 5.2
break happen
break happen
break happen
break happen
Running... Time = 5.3
break happen
break happen
break happen
break happen
Running... Time = 5.4
break happen
break happen
break happen
break happen
Running... Time = 5.5
break happen
break happen
break happen
Running... Time = 5.6
break happen
break happen
break happen
Running... Time = 5.7
break happen
break happen
break happen
Running... Time = 5.8
break happen
break happen
break happen
Running... Time = 5.9
break happen
break happen
break happen
Running... Time = 6
break happen
break happen
break happen
Running... Time = 6.1
break happen
break happen
break happen
Running... Time = 6.2
break happen
break happen
break happen
Running... Time = 6.3
break happen
break happen
break happen
Running... Time = 6.4
break happen
break happen
break happen
Running... Time = 6.5
break happen
break happen
break happen
Running... Time = 6.6
break happen
break happen
break happen
Running... Time = 6.7
break happen
break happen
Running... Time = 6.8
break happen
Running... Time = 6.9
break happen
Running... Time = 7
Running... Time = 7.1
Running... Time = 7.2
Running... Time = 7.3
Running... Time = 7.4
Running... Time = 7.5
Running... Time = 7.6
Running... Time = 7.7
Running... Time = 7.8
Running... Time = 7.9
Running... Time = 8
Running... Time = 8.1
Running... Time = 8.2
Running... Time = 8.3
Running... Time = 8.4
Running... Time = 8.5
Running... Time = 8.6
Running... Time = 8.7
Running... Time = 8.8
Running... Time = 8.9
Running... Time = 9
Running... Time = 9.1
Running... Time = 9.2
Running... Time = 9.3
Running... Time = 9.4
Running... Time = 9.5
Running... Time = 9.6
break happen
break happen
Running... Time = 9.7
break happen
break happen
Running... Time = 9.8
break happen
break happen
Running... Time = 9.9
break happen
break happen
Running... Time = 10
break happen
break happen
Running... Time = 10.1
break happen
break happen
Running... Time = 10.2
break happen
break happen
Running... Time = 10.3
break happen
break happen
Running... Time = 10.4
break happen
break happen
Running... Time = 10.5
break happen
break happen
Running... Time = 10.6
break happen
break happen
Running... Time = 10.7
break happen
break happen
Running... Time = 10.8
break happen
break happen
Running... Time = 10.9
break happen
break happen
Running... Time = 11
break happen
break happen
Running... Time = 11.1
break happen
break happen
Running... Time = 11.2
break happen
break happen
Running... Time = 11.3
break happen
break happen
Running... Time = 11.4
break happen
break happen
break happen
Running... Time = 11.5
break happen
break happen
break happen
Running... Time = 11.6
break happen
Running... Time = 11.7
break happen
break happen
Running... Time = 11.8
break happen
break happen
Running... Time = 11.9
break happen
break happen
Running... Time = 12
break happen
break happen
Running... Time = 12.1
break happen
break happen
Running... Time = 12.2
break happen
break happen
Running... Time = 12.3
break happen
break happen
Running... Time = 12.4
break happen
break happen
break happen
Running... Time = 12.5
break happen
break happen
break happen
Running... Time = 12.6
break happen
break happen
break happen
Running... Time = 12.7
break happen
break happen
break happen
Running... Time = 12.8
break happen
break happen
break happen
Running... Time = 12.9
break happen
break happen
break happen
Running... Time = 13
break happen
break happen
break happen
Running... Time = 13.1
break happen
break happen
break happen
Running... Time = 13.2
break happen
break happen
break happen
Running... Time = 13.3
break happen
break happen
break happen
Running... Time = 13.4
break happen
break happen
break happen
Running... Time = 13.5
break happen
break happen
break happen
Running... Time = 13.6
break happen
break happen
break happen
Running... Time = 13.7
break happen
break happen
Running... Time = 13.8
break happen
break happen
Running... Time = 13.9
break happen
break happen
Running... Time = 14
break happen
break happen
Running... Time = 14.1
break happen
break happen
Running... Time = 14.2
break happen
break happen
Running... Time = 14.3
break happen
break happen
Running... Time = 14.4
break happen
Running... Time = 14.5
break happen
break happen
Running... Time = 14.6
break happen
break happen
Running... Time = 14.7
break happen
break happen
Running... Time = 14.8
break happen
break happen
break happen
Running... Time = 14.9
break happen
break happen
break happen
Running... Time = 15
break happen
break happen
break happen
Running... Time = 15.1
break happen
break happen
break happen
Running... Time = 15.2
break happen
break happen
break happen
break happen
Running... Time = 15.3
break happen
break happen
break happen
break happen
Running... Time = 15.4
break happen
break happen
break happen
Running... Time = 15.5
break happen
break happen
break happen
Running... Time = 15.6
break happen
break happen
break happen
Running... Time = 15.7
break happen
break happen
break happen
Running... Time = 15.8
break happen
break happen
break happen
Running... Time = 15.9
break happen
break happen
break happen
Running... Time = 16
break happen
break happen
break happen
Running... Time = 16.1
break happen
break happen
break happen
Running... Time = 16.2
break happen
break happen
break happen
Running... Time = 16.3
break happen
break happen
break happen
Running... Time = 16.4
break happen
break happen
break happen
Running... Time = 16.5
break happen
break happen
Running... Time = 16.6
break happen
break happen
Running... Time = 16.7
break happen
break happen
Running... Time = 16.8
break happen
Running... Time = 16.9
break happen
Running... Time = 17
break happen
Running... Time = 17.1
break happen
Running... Time = 17.2
Running... Time = 17.3
Running... Time = 17.4
Running... Time = 17.5
break happen
Running... Time = 17.6
break happen
Running... Time = 17.7
break happen
Running... Time = 17.8
break happen
Running... Time = 17.9
break happen
Running... Time = 18
break happen
Running... Time = 18.1
break happen
break happen
Running... Time = 18.2
break happen
break happen
Running... Time = 18.3
break happen
break happen
Running... Time = 18.4
break happen
break happen
Running... Time = 18.5
break happen
break happen
Running... Time = 18.6
break happen
break happen
Running... Time = 18.7
break happen
break happen
Running... Time = 18.8
break happen
break happen
Running... Time = 18.9
break happen
break happen
Running... Time = 19
break happen
break happen
Running... Time = 19.1
break happen
break happen
Running... Time = 19.2
break happen
break happen
Running... Time = 19.3
break happen
break happen
Running... Time = 19.4
break happen
Running... Time = 19.5
break happen
Running... Time = 19.6
break happen
Running... Time = 19.7
break happen
Running... Time = 19.8
break happen
Running... Time = 19.9
break happen

Last edited by tomtony; March 21, 2021 at 20:40. Reason: code style
tomtony is offline   Reply With Quote

Reply

Tags
double scalar precision


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
CFD by anderson, chp 10.... supersonic flow over flat plate varunjain89 Main CFD Forum 18 May 11, 2018 07:31
Missing math.h header Travis FLUENT 4 January 15, 2009 11:48
what's wrong about my code for 2d burgers equation morxio Main CFD Forum 3 April 27, 2007 10:38
REAL GAS UDF brian FLUENT 6 September 11, 2006 08:23
Could anybody help me see this error and give help liugx212 OpenFOAM Running, Solving & CFD 3 January 4, 2006 18:07


All times are GMT -4. The time now is 04:25.