关于计算时间的deltaT问题



  • 仿真网格1687568,一共不到2百万的网格;
    controlDict中的deltaT设置为0.1

    application     interFoam;
    startFrom       startTime;
    startTime       0;
    stopAt          endTime;
    endTime         100;
    deltaT          0.1;
    writeControl    adjustableRunTime;
    writeInterval   5;
    purgeWrite      0;
    writeFormat     ascii;
    writePrecision  6;
    writeCompression uncompressed;s
    timeFormat      general;
    timePrecision   6;
    runTimeModifiable yes;
    adjustTimeStep  yes;
    maxCo           0.9;
    maxAlphaCo      0.9;
    maxDeltaT       1;
    

    采用40核并行,一晚上一共运行了3s多的时间,按道理应该是每0.1s一输出,请教下这个是什么情况呢
    2020-06-21 07-58-22屏幕截图.png



  • 200万网格不应该一个时间步算3秒,你内存所有通道都用上了么?



  • @东岳 老师,我是一晚上的时间在log中显示的计算结果一共计算了3s,这也太慢了,我查看了tutorials中的例子和您之前讲血管的案例,都是根据deltaT的值输出的;我这里deltaT 0.1正常应该是Time =0.1s一输出;
    上面那个图中Time=3.11332下一次输出的是Time=3.11357,在之后是Time=3.11383,这里的deltaT也变成了log文件中显示的deltaT=0.0002578949log中显示的和我在controlDict设置的deltaT这相差的也太大了,我用单核计算了一下,还是这样,我已经彻底不知道哪里出问题了~



  • 因为你是自动调整时间步长,为了保证库朗数,这个很必要,你内存所有通道都用上了么?
    要不就降网格数,处理成100万,先跑出结果,再细化网格优化数据



  • @东岳 好的老师,我查查这个内存通道怎么全部用上,我以为能跑起来就可以,还有这么多说法



  • 不清楚你那个CPU几个通道,要全部通道都用上,比如4个4G内存,而不是2个16G,前者比后者快得多。



  • @东岳 谢谢老师指导
    下面也给以后看帖子的人一些提示,不要犯我一样的错误:
    DTCHull中得controlDict

    application     interFoam;
    startFrom       startTime;
    startTime       0;
    stopAt          endTime; 
    endTime         4000;
    deltaT          1;
    writeControl    timeStep;
    writeInterval   100;
    purgeWrite      0;
    writeFormat     binary;
    writePrecision  6;
    writeCompression off;
    timeFormat      general;
    timePrecision   6;
    runTimeModifiable yes;
    

    在这里时间步长是固定的,也就是每1s一输出;
    而我采用了adjustTimeStep yes;这样的话,这样的话为保证库朗数,自动调整时间步长,所以就会出现我图中时间步特别小的情况。这些老师在OKSS1中详细讲过,我给忘记了;
    真对上面老师说的CPU几个通道,怎么设置,我再研究研究之后跟帖~


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2