⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 二维、结构网格单相流simple 算法的c语言实现.htm

📁 数值传热学NHT C语言源代码及解释 陶文铨院士 的经典例题中3个题目的解答
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0040)http://www.flotu.org/~qzhen/cfd/simplec/ -->
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office"><HEAD><TITLE>二维、结构网格单相流SIMPLE 算法的C语言实现</TITLE>
<META http-equiv=Content-Language content=zh-cn>
<META content="MSHTML 6.00.2722.900" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="index.files/filelist.xml" rel=File-List>
<STYLE>P.MsoNormal {
	TEXT-JUSTIFY: inter-ideograph; FONT-SIZE: 10.5pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: justify; mso-style-parent: ""
}
TABLE.1 {
	BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; TEXT-JUSTIFY: inter-ideograph; FONT-SIZE: 10pt; BORDER-LEFT: windowtext 1pt solid; BORDER-BOTTOM: windowtext 1pt solid; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: justify
}
</STYLE>
<!--[if !mso]>
<STYLE>v\:* {
	BEHAVIOR: url(#default#VML)
}
o\:* {
	BEHAVIOR: url(#default#VML)
}
.shape {
	BEHAVIOR: url(#default#VML)
}
</STYLE>
<![endif]--><!--[if gte mso 9]>
<xml><o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--></HEAD>
<BODY>
<P> </P>
<P><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">下载:SIMPLE_C源代码 <A 
href="http://www.flotu.org/~qzhen/cfd/simplec/exam1.zip">exam1</A>&nbsp; <A 
href="http://www.flotu.org/~qzhen/cfd/simplec/exam6.zip">exam6</A> <A 
href="http://www.flotu.org/~qzhen/cfd/simplec/exam10.zip">exam10</A>&nbsp; <A 
href="http://www.flotu.org/~qzhen/cfd/simplec/exam6.mpg">exam6.mpg(46K)</A></SPAN></P>
<P><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp; <A 
href="http://www.flotu.org/~qzhen/cfd/simplec/SIMPLEC.pdf">SIMPLE_C说明文件</A>(PDF 
1.7M)</SPAN></P>
<P><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><A 
href="mailto:qzhen@flotu.org">mailto:qzhen@flotu.org</A></SPAN></P>
<P> </P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center> </P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><A 
name=第一节前言><B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">第一节 
前言</SPAN></B></A></P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center> </P>
<P class=MsoNormal><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">SIMPLE算法的全称是“Semi-Implicit Method for 
Pressure-Linked 
Equations”,意思是求解压力耦合的质量/动量/能量传递方程的半隐式方法。自从S.V.Patankar(帕坦卡)和D.B.Spalding(斯伯丁)于1972年提出SIMPLE算法后,它实际上已经成为许多工程流动、传热以及反应体系的数值模拟的最重要的方法。许多商业CFD软件,如cfx与fluent,其核心也都基于SIMPLE算法。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"></SPAN>&nbsp;</P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">了解<SPAN 
lang=EN-US>SIMPLE算法是学习差分数值计算以及CFD(计算流体力学)一个非常好的起点。而且,SIMPLE算法对于很多工程问题也足够用了。介绍SIMPLE算法最好的书自然是帕坦卡自己所著的《传热与流体流动的数值计算》[1]。不过,这本优秀、简洁的著作没有附带源代码。</SPAN></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"></SPAN>&nbsp;</P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我在学习<SPAN 
lang=EN-US>SIMPLE的过程中,了解到一份可靠、简单、说明文档完整、可方便地编译执行的源代码对于初学者的重要性。于是我用C语言改写了SIMPLE算法(称之为SIMPLE_C),并给出了详细的文档,希望能够缩短算法与代码之间的距离。算法源自水木清华BBS上orange01与moran两位同学所给予的FORTRAN 
SIMPLE代码。同时清华大学化工系反应工程教研组刘飞同学的笔记也给了我很大的帮助,在此一并谢过。</SPAN></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"></SPAN>&nbsp;</P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">目前,<SPAN 
lang=EN-US>SIMPLE_C只能解决二维直角坐标、结构网格的问题。取决于表征问题的微分方程,SIMPLE_C在这个几何框架下能够模拟瞬态或者时均的流动、传热以及反应耦合的单相流体系。应该说明,下面的一些问题可能或者根本不在SIMPLE_C的能力范围之内:高精度的流场预测;多相流;三维流动;复杂流场或者几何结构;边界层行为预测;马赫数接近或超过1的高速流动。</SPAN></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"></SPAN>&nbsp;</P>
<P class=MsoNormal><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">关于<SPAN 
lang=EN-US>orange01与moran两位同学的SIMPLE 
FORTRAN代码的版权问题,我在源代码上看见这么一段,在此原封不动地摘录如下:</SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc<BR>Cccc 
This computer program was copied from the graduate student course 
program<BR>Cccc of the University of Minnesota. Part of it was re-formulated to 
meet the <BR>Cccc personal computer environment. Some inappropriate expressions 
were also <BR>Cccc corrected. The program is used only for teaching purpose. No 
part of it<BR>Cccc may be published. You may use it as a frame to re-develop 
your own code <BR>Cccc for research purpose.&nbsp;&nbsp;&nbsp; XJTU Instructor, 
1995.11&nbsp; </SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">Cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc<BR><![if !supportLineBreakNewLine]><BR> <![endif]></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">本文的工作是非常粗浅的。本质上它是帕坦卡在<SPAN 
lang=EN-US>70年代就已解决的问题的一个简单的复述。不过,希望它能起到抛砖引玉的作用――期望</SPAN></SPAN><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">更多的研究者能够将手头基于<SPAN 
lang=EN-US>SIMPLE的先进算法的源代码整理并共享出来。下面一些特性是特别欢迎的:</SPAN></SPAN></P>
<P class=MsoNormal 
style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">l<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">三维网格;</SPAN></P>
<P class=MsoNormal 
style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">l<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">非结构<SPAN 
lang=EN-US>/自适应网格;</SPAN></SPAN></P>
<P class=MsoNormal 
style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><SPAN 
lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings">l<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">高精度差分格式;</SPAN></P>
<P class=MsoNormal 
style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">l<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">欧拉<SPAN 
lang=EN-US>+欧拉模式的多相流;</SPAN></SPAN></P>
<P class=MsoNormal 
style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">l<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">欧拉<SPAN 
lang=EN-US>+拉格朗日模式的多相流;</SPAN></SPAN></P>
<P class=MsoNormal 
style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left" align=left><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Wingdings">l<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">基于<SPAN 
lang=EN-US>PC CLUSTER(个人电脑集群,MIMD体系)的并行算法。</SPAN></SPAN></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><BR 
style="PAGE-BREAK-BEFORE: always" clear=all></SPAN><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">我个人在计算方法的兴趣主要集中欧拉<SPAN 
lang=EN-US>+拉格朗日模式的多相流模拟。要解决的主要物理问题是连续相与离散相的耦合作用。</SPAN></SPAN></P>
<P> </P>
<P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN 
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">第四节 计算实例以及源程序编译指南</SPAN></B></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><B><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">4.1 例子的编译</SPAN></B></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><B><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><SPAN style="FONT-WEIGHT: normal"><A 
style="COLOR: blue; TEXT-DECORATION: underline; text-underline: single" 
href="http://www.flotu.org/~qzhen/cfd/simplec/index.htm">http://www.flotu.org/~qzhen/cfd/simplec/index.htm</A></SPAN></SPAN></B><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> 
给出了三个计算例子的ZIP文件。它们都是VC6或者VC7的项目文件,对应后面的例子4.2~4.4。相信使用GCC的同学能够轻松地写出make文件。编译过程中需要注意的matlab相关部分的编译。下面我以Windows平台介绍一下。关于使用matlab的engine接口的编程的详细介绍可以浏览:</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">[5]</SPAN><SPAN lang=EN-US> 
</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体"><A 
style="COLOR: blue; TEXT-DECORATION: underline; text-underline: single" 
href="http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/ch06eng2.shtml#using_the_matlab_engine">http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/ch06eng2.shtml#using_the_matlab_engine</A>。</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">SIMPLE_C的</SPAN><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">matlab engine的C语言接口是matlab 
5.3中所带的。编译过程的几个简要的技巧叙述如下:</SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt"><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">1)<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">程序中只有<SPAN 
lang=EN-US>exam*.c文件中的user_plot()用到了matlab 
engine的C语言接口。如果你不想使用它或者编译遇到麻烦,直接将user_plot()以及其它matlab相关语句注释调掉即可。这些语句只在exam*.c出现,包括:</SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 49.5pt; TEXT-ALIGN: left" 
align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">exam*.c中的<SPAN 
style="COLOR: blue">#include</SPAN> "engine.h"与<SPAN 
style="COLOR: blue">#include</SPAN> "matrix.h";</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 49.5pt; TEXT-ALIGN: left" 
align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">exam*.c中的give_matlab_a_double_matrix()与give_matlab_a_interger()的定义;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 49.5pt; TEXT-ALIGN: left" 
align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">exam*.c中的user_plot()中的语句;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 49.5pt; TEXT-ALIGN: left" 
align=left><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">global_var.h中的give_matlab_a_double_matrix()与give_matlab_a_interger()的声明。</SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">下面的<SPAN 
lang=EN-US>(2)~(4)是需要加入matlab支持的步骤。</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt"><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">2)<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">把<SPAN 
lang=EN-US>matlab的头文件路径</SPAN></SPAN><SPAN lang=EN-US 
style="FONT-SIZE: 9pt">”</SPAN><SPAN lang=EN-US 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">%matlab%\extern\include</SPAN><SPAN 
lang=EN-US style="FONT-SIZE: 9pt">”</SPAN><SPAN 
style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">加入到你的编译环境中。<SPAN 
lang=EN-US>%matlab%是你的matlab安装主目录。</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt"><SPAN 
lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">3)<SPAN 
style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体">产生<SPAN 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -