在数值计算过程中,对于计算结果的准确性和效率有很高的要求,但是这两者之间往往互相矛盾;而使用柯朗数可用于平衡两者。

1、柯朗数的定义:

C = sqrt(gh)*t/s

其中,t是时间步长,s是网格在水平方向的间距。

柯朗数的意义在于表示了在单位时间步长中,有多少个网格的信息发生了移动。经过正确的调整,可以更好地加速收敛和增强解的稳定性。

2、C语言实现柯朗数计算:

依据上述方程,在实际计算中采用C语言实现计算固液界面上的柯朗数,结果如下:

1 voidlocalCourantNumber()2 {3

4

5 doublerhoe,rhon,rhot;6

7 for(i=2;i<=nxm-1;i++) //Calculation of local Courant number only at internal faces

8 {9 ieast = i + 1;10 dxpe = xc[ieast] -xc[i];11 fxe = (xf[i]-xc[i])/dxpe;12 fxp = 1.0 -fxe;13

14 for(j=2;j<=nym;j++)15 {16 jnorth = j + 1;17 dypn = yc[jnorth] -yc[j];18 fyn = (yf[j] - yc[j])/dypn;19 fyp = 1.0 -fyn;20

21 for(k=2;k<=nzm;k++)22 {23 ktop = k + 1;24 dzpt = zc[ktop]-zc[k];25 fzt = (zf[k] - zc[k])/dzpt;26 fzp = 1.0 -fzt;27

28

29

30 //Calculating density at cell interface

31 rhoe = fxp * rho[i][j][k] + fxe *rho[ieast][j][k];32

33 /*rhoe = 2.0 * rho[i][j][k] * rho[ieast][j][k]/( rho[i][j][k] + rho[ieast][j][k]);*/

34

35 s = (yf[j]-yf[j-1])*(zf[k]-zf[k-1]);36 vole = dxpe *s;37

38

39 //Sum of courant numbers of outflow faces of donor cell

40 Ce[i][j][k] = fabs(Fe[i][j][k]/(rhoe*vole))*dt;41

42 /*printf("Ce=%e\n",Ce[i][j][k]);*/

43 }44 }45 }46

47

48 for(i=2;i<=nxm;i++) //Calculation of local Courant number only at internal faces

49 {50 ieast = i + 1;51 dxpe = xc[ieast] -xc[i];52 fxe = (xf[i]-xc[i])/dxpe;53 fxp = 1.0 -fxe;54

55 for(j=2;j<=nym-1;j++)56 {57 jnorth = j + 1;58 dypn = yc[jnorth] -yc[j];59 fyn = (yf[j] - yc[j])/dypn;60 fyp = 1.0 -fyn;61

62 for(k=2;k<=nzm;k++)63 {64 ktop = k + 1;65 dzpt = zc[ktop]-zc[k];66 fzt = (zf[k] - zc[k])/dzpt;67 fzp = 1.0 -fzt;68

69

70

71 //Calculating density at cell interface

72 rhon = fyp * rho[i][j][k] + fyn *rho[i][jnorth][k];73

74 /*rhon = 2.0 * rho[i][j][k] * rho[i][jnorth][k]/( rho[i][j][k] + rho[i][jnorth][k]);*/

75

76

77 s = (xf[i]-xf[i-1])*(zf[k]-zf[k-1]);78 voln = s *dypn;79

80

81 //Sum of courant numbers of outflow faces of donor cell

82 Cn[i][j][k] = fabs(Fn[i][j][k]/(rhon*voln))*dt;83

84 /*printf("Ce=%e\n",Ce[i][j][k]);*/

85 }86 }87 }88

89 for(i=2;i<=nxm;i++) //Calculation of local Courant number only at internal faces

90 {91 ieast = i + 1;92 dxpe = xc[ieast] -xc[i];93 fxe = (xf[i]-xc[i])/dxpe;94 fxp = 1.0 -fxe;95

96 for(j=2;j<=nym;j++)97 {98 jnorth = j + 1;99 dypn = yc[jnorth] -yc[j];100 fyn = (yf[j] - yc[j])/dypn;101 fyp = 1.0 -fyn;102

103 for(k=2;k<=nzm-1;k++)104 {105 ktop = k + 1;106 dzpt = zc[ktop]-zc[k];107 fzt = (zf[k] - zc[k])/dzpt;108 fzp = 1.0 -fzt;109

110

111

112 //Calculating density at cell interface

113 rhot = fzp * rho[i][j][k] + fzt *rho[i][j][ktop];114

115 /*rhot = 2.0 * rho[i][j][k] * rho[i][j][ktop]/( rho[i][j][k] + rho[i][j][ktop]);*/

116

117

118 s = (xf[i]-xf[i-1])*(yf[j]-yf[j-1]);119 volt = s *dzpt;120

121

122 //Sum of courant numbers of outflow faces of donor cell

123 Ct[i][j][k] = fabs(Ft[i][j][k]/(rhot*volt))*dt;124

125

126

127 /*printf("Ce=%e\n",Ce[i][j][k]);*/

128 }129 }130 }131

132

133 for(i=2;i<=nxm;i++) //Calculation of local Courant number only at internal faces

134 {135

136 for(j=2;j<=nym;j++)137 {138

139 for(k=2;k<=nzm;k++)140 {141

142 COutD[i][j][k] = Ce[i][j][k] + Cn[i][j][k] +Ct[i][j][k];143 /*printf("COutD=%lf\n",COutD[i][j][k]);*/

144 /*printf("Ce=%e\n",Ce[i][j][k]);*/

145 /*printf("Cn=%e\n",Cn[i][j][k]);*/

146 /*printf("Ct=%e\n",Ct[i][j][k]);*/

147 }148 }149 }150

151

152 }

3、柯朗数使用的注意事项:

在fluent中,用courant number 来调节计算的稳定性与收敛性。一般来说,随着courantnumber 的从小到大的变化,收敛速度逐渐加快,但是稳定性逐渐降低。所以具体的问题,在计算的过程中,最好是把Courant number 从小开始设置,看看迭代残差的收敛情况,如果收敛速度较慢而且比较稳定的话,可以适当的增加courant number 的大小,根据自己具体的问题,找出一个比较合适的courant number,让收敛速度能够足够的快,而且能够保持它的稳定性。

Generally, in the explicit schemes of differential method, Courant number is an important number which should be less than 1 in order to assure the stability. However, if the Courant number is too small, much computation time will be lost. So the Courant number could be one of those important parameters affecting computation cost and stability. we could use Courant number to control the time step in the transient simulation in CFD codes. Here is some configuration parameters which could be used in simulation with OpenFOAM。

courant数_柯朗数(Courant number)研究相关推荐

  1. courant数_CFD中常用的参数介绍 | 坐倚北风

    1.斯特劳哈尔数(Strouhal number) 斯特劳哈尔数(Strouhal number)是在流体力学中讨论物理相似与模化时引入的相似准则.在考虑具有特征频率的圆周运动时使用斯特劳哈尔数St: ...

  2. 物理内存是什么是计算机的显卡内存吗,物理内存可用数_可用内存和物理内存是什么意思?_可用物理内存...

    网友求助:物理内存可用数_可用内存和物理内存是什么意思?_可用物理内存 问题 最佳答案 物理内存:电脑主板上插入的内存条的总容量(在系统支持的范围内).可用内存:电脑运行时,未被使用的内存总量. 追问 ...

  3. C#,纽曼-康韦数(Newman Conway Number)的算法与源代码

    John Henrry Newman 纽曼-康韦数(Newman Conway Number)序列是生成以下整数序列的序列. 1 1 2 2 3 4 4 4 5 6 7 7- 在数学上,纽曼-康韦数的 ...

  4. 【HDU No. 4006】 第k 大的数 The kth great number

    [HDU No. 4006] 第k 大的数 The kth great number 杭电OJ 题目地址 [题意] 小明和小宝正在玩数字游戏.游戏有n轮,小明在每轮中都可以写一个数,或者问小宝第k 大 ...

  5. estern c语言,柯朗数(Courant number)研究

    在数值计算过程中,对于计算结果的准确性和效率有很高的要求,但是这两者之间往往互相矛盾:而使用柯朗数可用于平衡两者. 1.柯朗数的定义: C = sqrt(gh)*t/s 其中,t是时间步长,s是网格在 ...

  6. python获取word页数_使用Python的word文档的页数(Number of pages of a word document with Python)...

    使用Python的word文档的页数(Number of pages of a word document with Python) 有没有办法用Python有效地获得word文档(.doc,.doc ...

  7. 用matlab画标准雷电波,标准雷电波波形参数测量与评定方法研究_问答库

    随着国际标准IEC60060的公布,国际上对高电压量值提出了进行溯源的要求,我国也发布了相应的国标.中国计量科学研究院目前建立的方案是使用比较测量法来校准雷电波参数.本文主要研究内容为在建立标准雷电波 ...

  8. java编程求卡特兰数_卡特兰数(Catalan Number)

    卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.该数在计算机专业中比较重要,有一些具体的应用实例.这篇文章主要分三部分: 卡特兰数递归式的含 ...

  9. matlab中读文件的行数_[转载]MATLAB中获取大型文本文件行数方法研究(转)

    在工作中会有很多特殊的需要,比如我现在就遇到一个需要将大型的文本格式数据文件(比如5G)读取到MATLAB中,同时进行一定的处理.由于XP的内存是绝对没有办法将5G的数据一次性加载到工作空间的,此时一 ...

最新文章

  1. 信息服务器已停止工作,游戏服务器已停止工作
  2. MATLAB寻址访问按什么优先,matlab笔记
  3. AD9833所产生的高频信号质量分析
  4. [学习笔记]数字电路技术
  5. iOS之深入解析Xcode的拼写检查
  6. 深度学习(四十三)——深度强化学习(6)AlphaGo全系列
  7. php getcount_PHP中关键字interface和implements详解
  8. pyqt5 + pyinstaller 制作爬虫小程序
  9. 国产自主可控的形式化验证代码自动生成工具ModelCoder可替代Matlab/Sumlink
  10. php三个表格,phpspreadsheet-excel工作表中有多个“格式为表”的表
  11. python调用函数(一分钟读懂)
  12. 【QCustomPlot】1.3 - 运行官方例程Demo,介绍功能
  13. Linux Iptables 语法大全
  14. UNIX环境高级编程之第8章:进程控制
  15. LEACH算法无线传感器网络路由协议
  16. JTAG接口定义与其他简介
  17. 质量评估指标:PSNR(Peak signal-to-noise ratio 峰值信噪比)
  18. 「雕爷学编程」Arduino动手做(37)——MQ-3酒精传感器
  19. Zabbix监控组件介绍、工作原理、监控方式、监控概念
  20. 自动驾驶面临的困难以及中国在自动驾驶的优势

热门文章

  1. 生物素化聚N-异丙基丙烯酰胺,Biotin-PNIPAM
  2. BCM5396的使用问题
  3. 小程序支付 和 回调处理
  4. uniapp打包时未添加camera模块,请参考http://ask.dcloud.net.cn/article/283
  5. 鸢尾花完整的python代码_鸢尾花BP算法实现 Python
  6. Java指令屏障_指令重排序和内存屏障
  7. lum使用cgi处理PHP,php-cgi进程占用cpu资源过多负载高的原因分析及解决步骤
  8. 模拟舵机、数字舵机、总线舵机的区别
  9. 苹果手机怎么恢复通讯录联系人
  10. Git系列文章(8):Git分支(4)