对于新手来说,如何上手课本理论向计算机程序语言转换?



  • 目前一直使用商用软件,但是对于里面的很多内容一知半解。后面根据PPT自学了《数值传热学》1-6章(记得东岳老师说学前6章足够,后面为专题),但是对于如何将里面的公式转化为计算机语言完全一窍不通。
    课题组只有一两个做DNS,都是基于fortran。本人之前学的是C语言,所以希望有什么教材或者指导是用C/CPP实现编程讲解的。因为目前没打算使用Openfoam,所以相关内容没有看过。先前看过12 Steps to Navier–Stokes,但是因为python语言原因,很多内容完全也是看的一知半解,还有很大一部分时间花在了IDE上面。
    请问各位,如何利用C/CPP语言实现课本理论到计算机程序的转化?谢谢 @东岳



  • @Juanyong对于新手来说,如何上手课本理论向计算机程序语言转换? 中说:

    但是对于如何将里面的公式转化为计算机语言完全一窍不通。

    不知道你C语言到什么程度,按照道理如果算法明白,编程求解应该不是大问题。就我个人而言,大部分在搞算法,算法搞通了,植入一般不会花费太长时间。

    目前对于矩形的结构网格,如果用C求解,基本上几十行代码就能搞定。给你举例子:比如网格长度、宽度,那肯定是这样定义:

    double length = 1.0;
    double height = 2.0;
    

    然后就是定义deltaX和deltaY:

    double deltaX = 0.1;//10个网格
    double deltaY = 0.1;//20个网格
    

    二维网格的变量定义可以采用数组:

    double U[10][20];
    double V[10][20];
    

    即使求解方程中,也是按照结构网格标识来做的,比如中心差分:

    U[5][6] = 0.5*(U[5+1][6] + U[5-1][6])
    

    结构网格变成求解非常简单。我觉得你唯一可能的就是不能沉下心来,自己动手搞一把?比如数值传热学中94页那个例子,手算都能算出来,这样的话,没有用C写不出来语言的道理啊

    我之前曾经想过写一个教程,类似12步求解N-S方程,只不过是用C语言写,但是这种写起来太麻烦了,写的太糙小白看不懂,写的太细很占用时间


  • Linux讲师

    fluid_cal.zip
    我们上流动仿真课时写的一维和二维传热的程序。
    看着是c++,其实就用了个cout。调整数据输出格式这点,cout写出来真长,还不会灵活运用。
    这是程序里算法的逻辑,其他的笔记丢失了,写的啥已经快看不懂了。
    2D.jpg
    3D.jpg



  • 是的,我觉得,本质上,还是应该走看书 - 手算 - 编程这个过程,如果看书直接去编程,可能理不清思路。


 

Forest
Mountains