博文
[置顶] OpenFOAM软件介绍(2006-11-10 14:33:00)
摘要:什么是OpenFOAM?
这里简单介绍OpenFOAM,及其的功能和她的一些特点:
OpenFOAM的前身为FOAM(Field Operation and Manipulation的简写),后来作为开源代码公布到网上,任何人都可以自由下载和传播她的源代码。
她的官方网站为www.openfoam.org, 有兴趣的可以访问该网站了解关于OpenFOAM更多的内容。其作者之一Hrvoje Jasak为克罗地亚(南斯拉夫成员国)人,1993年在读PhD期间开始写FOAM。
OpenFOAM是一个完全由C++编写的面向对象的CFD类库,采用类似于我们日常习惯的方法在软件中描述偏微分方程的有限体积离散化,支持多面体网格(比如CD-adapco公司推出的CCM+生成的多面体网格),因而可以处理复杂的几何外形,支持大型并行计算,等。
另外OpenFOAM还具有以下功能和特点:
自动生成动网格
拉格朗日粒子追踪及射流
滑移网格,网格层消等
各种各样的工具箱,包括各种ODE求解器、ChemKIN接口等
网格转换工具,可以转换多种网格形式为FOAM可以处理的网格形式
支持多种网格接口
……
今天就写到这吧!......
OpenFOAM中的引用计数(2013-07-30 09:38:00)
摘要:
OpenFOAM中在进行场计算时,涉及大量内存占用量很大的对象的操作,如果对于这些对象均采用“按值”操作而不是“按址”操作那就会造成大量内存耗用,导致程序效率的降低。C++中引用的概念解决了这一问题,但是同时也带来另一个问题就是关于引用计数的问题,同一对象被多重引用所指,那么对于引用个数的跟踪就显得很重要,因为如果依然有引用指向该对象时是不能进行该对象的析构的,因而需要跟踪大内存对象的引用个数,这就出现了引用计数的概念。
可惜在STL中并没有提供引用计数这样的类,因而在OpenFOAM中编写了refCount类用于实现该功能,需要进行引用计数的类只要派生自refCount,结合另一特定的模板类tmp<T>便可实现引用计数的功能。这里需要注意的是refCount的派生类必须要封锁复制构造函数及赋值操作符函数。
......
C++的多态(2011-09-07 12:45:00)
摘要:当基类中含有虚函数(virtual)时,在运行时刻,通过基类指针(或引用)指向(或引用)具体派生对象时,当调用该指针(或引用)的虚函数时,实际调用的是该具体派生类中定义的相应函数。
那么如果存在以下继承关系:
class base;
class derived1:public base{...};
class derivedderived1:public derived1{...};
及derivedderived1继承自derived1,而derived1又继承自base,那么假设base中有一个虚函数
virtual void print(){...};
在derived1中也定义了该函数只是没有声明为virtual:
class derived:public base{
......
public:
void print(){...}
......
};
在derivedderived1中也定义了形式上一样的print函数,也没有加virtual说明符;这种情况下,当一个base指针指向derivedderived1的对象,并调用print函数时,会调用哪个类中的print呢?
答案是:derivedderived1中定义的print。这说明了在继承层次中只要从某一层定义时加了virtual的成员函数,其n重派生类中均可实现多态。
现在有另一个问题就是如果derivedderived1中没有定义print这时将调用哪个类的print呢?
答案是:将调用derived1中定义的print函数
......
C++笔记(2011-09-02 23:17:00)
摘要:C++知识学习笔记
1. C++中的引用类型变量必须进行初始化,并且这个引用类型变量的值将不能变了,即该变量所代指的对象只能是其初始化时的对象,可见引用变量是十分忠诚的。。
例如:int I = 1;
int& anotherI = I;//正确,编译通过
int& wrongI;//错误,引用变量wrongI必须进行初始化
通常情况下的引用类型变量T&进行初始化时必须为一个”左值“,即通俗的理解为一个T类型的变量名,而不能是T类型的一个常量。但是const T&类型的引用变量进行初始化时就没有这一限制,即其可以用一个常量进行初始化。
例如: int myT = 5;
int& myTRerfer=myT;//OK, myT is left value
int& myTRefer2=5;//Wrong, 5 is not left value
const int& myTRefer3=5;//OK, const int temp=5 first, myTRefer3=temp then;
2. 什么情况下将引用作为函数参数?
当函数要处理的参数是一个占用内存较大的类对象时,采用引用作为其参数可以避免在进行按值传递机制下对象复制所需内存及时间花销,而直接读取对象的内存,但是一般以const引用作为函数参数,表示函数不会改变对象的内容。如果想要改变对象内容时,应该以指针作为函数的参数,这样就显式的告诉函数使用者本函数将改变对象的内容。
......
[转载]被中国人误传了数千年的七句话(2011-01-16 16:03:00)
摘要:在中国崇尚权威的文化氛围中,名人名言占的地位是很重的,很多名家说的话,往往被人民当成指导自己人生观世界观的不二准则,但这些几千年流传下来的名言中,也有一些话被人刻意或无知地曲解,背离了话语者本身的意旨与初衷,迷惑了天下万千受众。影不才,试举数例解析一二,以还世情真相与大众……好了我再文诌诌地说话大家估计要扔鸡蛋,虚荣心也满足了,下面开始举例开讲。
1、以德抱怨
原句:“或曰:‘以德报怨,何如?’子曰:“何以报德?以直报怨,以德报德” ————《论语 宪问》
以德抱怨,是我们常听到的一句话了,人们通常理解的“以德抱怨”什么意思呢?就是说:孔老夫子教我们,别人欺负你了,你要忍,被打碎牙齿也要往肚子里吞,别人来欺负你,你反而应该对他更好,要用你的爱心去感化他,用你的胸怀去感动他。这就让人感觉很有点肃然了。想想看,如果我一巴掌呼过去那个被打的人还笑笑说打得好啊,你越打我我就要对你越好……遇到这种情况我也会感动到傻眼,这多好一孩子,多伟大的情操啊……
但事实上,我们根本曲解了孔子的原意,我当初,也万万没想到原来在孔子这句“以德抱怨”的后边还跟着另外一段话,什么话呢?子曰:“以德抱怨,何以报德?以直报怨,以德报德!”看完以后,幡然醒悟,原来我们都被某个断章取义的孔子FANS给玩了一把!当时的真实情况是怎么样的呢?孔子的一个弟子问他说:师傅,别人打我了,我不打他,我反而要对他好,用我的道德和教养羞死他,让他悔悟,好不好?孔子就说了,你以德抱怨,那“何以报德?”别人以德来待你的时候,你才需要以德来回报别人。可是现在别人打了你,你就应该“以直抱怨”,拿起板砖飞他!看!就因为被人故意省略了一句话,刚烈如火的孔老夫子一下就被扭曲成了现在这个温婉的受气包形象。
与西方文化相比,东方文明一向被认为是谦逊坚忍的,同样是被人欺负,西方的带头大哥耶稣在圣经里就叫嚣要:“以眼还眼,以牙还牙。”小弟们!别人瞪了你一眼,你就要瞪回去,别人咬了你一口,你就要咬回来!而东方呢?佛家的精神领袖释迦牟尼说“我不入地狱,谁入地狱?”一副逆来顺受的样子。而且他可不是说说而已的,大鹰来欺负他,要吃......
[转载]wxWidget与VTK结合编程(2011-01-16 15:40:00)
摘要:1.下载安装wxWidget,参见http://wxpack.sourceforge.net/Main/HomePage下载wxPack最新包【Windows下直接安装即可】,其中包含有wxWidgets,wxFormBuilder(可视化GUI设计),wxAdditions(扩展库);
2.下载安装VTK,参见http://www.vtk.org/。下载源码自行编译【需要下载CMake,见http://www.cmake.org】形成库,需提前装有相应的C/C++编译器,如VC或GCC等。注意:为方便操作,设置相应的环境变量。
---------------------------------------------------------------------------------------------------------------------------------------------------
CMake的用法十分简便:运行CMake后,定位到VTK的源码处【解压源码后的文件夹】;同时指定生成的项目文件的目录;点击Configure按钮,出现若干选项,根据需要进行设置,如多线程,JAVA库等;选择相应的编译器【决定所生成的库所适用的范围和平台,如VS下生成的库不能移植到GCC下;反之亦然。但不影响源码的可移植性。】相应设置完成后,点击OK按钮,进入项目文件的生成。。。。。进入到生成的项目文件的目录打开相应的项目文件,如VS7.1等,选择生成ALL_BUILD,就可以喝杯咖啡去了【雪顶摩卡貌似还可】。。。。。。。。~~~~~~~~~~········,生成结束后,找到INSTALL项目,右键BUILD生成即可自动将生成的VTK库《静态和动态》以及相应的include包含文件自动拷贝到安装目录【默认下为C:\Program files\VTK】。此时就可以进行VTK程序应用开发了。---------------------------------------------------------------------------------------------------------------------------------------------------
3. 下载wxVT......
[转载]wxVTK编译时的错误(2011-01-16 15:39:00)
摘要:Wx\wxVTK\src\wxVTKRenderWindowInteractor.cxx(86): error C2491: “wxVTKRenderWindowInteractor::ms_classInfo” : 不允许 dllimport 静态数据成员 的定义
解决办法:根据wxVTK提供的readme提示,出现的原因在于vtk和wxWidget混合使用了静态链接和动态链接,解决方案如下
VTK static静态 VTK dynamic动态
wxWindows static静态 1 3
wxWindows dynamic动态 2 4
Just open the file: wxVTKRenderWindowInteractor.h, find the line:
打开文件: wxVTKRenderWindowInteractor.h, 找到下面的语句
class VTK_RENDERING_EXPORT wxVTKRenderWindowInteractor : public wxWindow, public vtkRenderWindowInteractor
^^^^^^^^^^......
OpenFOAM相关资源(2010-11-25 15:38:00)
摘要:(1)OpenFOAM官方网站
www.openfoam.org
该网站你可以了解openfoam的基本信息,下载最近版本的OpenFOAM。
(2)OpenFOAM dev版本网站
http://openfoam-extend.wiki.sourceforge.net
该网站为openfoam dev的网站,你可以看到最新的dev版本修改相关信息。该网站实时对dev代码进行更新。
(3)OpenFOAM论坛
http://www.cfd-online.com/Forums/openfoam/
该网站为OpenFOAM的官方论坛,如果有关于openfoam的任何问题,都可以在这论坛上询问。当遇到问题时,不妨直接在该论坛上查询。你遇到的问题别人可能也遇到过,并且在论坛上已经解决。
(4)openfoamwiki
http://openfoamwiki.net/
该网站上有一些openfoam相关的一些说明,比如求解器、openfoam里面的一些前处理后处理功能等。
(5)jasak个人主页
http://www.h.jasak.dial.pipex.com/
该网站为jasak的个人主页,会公布一些关于openfoam的一些workshop,还有一些jasak的发表的paper
(6) http://powerlab.fsb.hr/ped/kturbo/OpenFOAM/
这个上面包含有一些openfoam的一些workshop的一些资料。很多paper还有基于openfoam的博士论文。
(7)http://www.foamcfd.org/
上面包括几乎所有基于of的博士论文,遗憾的是国内可能上不了这个网站
(8)流体中文网OpenFOAM社区
http://www.cfluid.com/bbs/forumdisplay.php?fid=86
很可惜,该网站不......
用latex和beamer做幻灯片(2010-11-03 10:11:00)
摘要:做幻灯片是一件头疼的事。而用latex做幻灯片是一件很头疼、很头疼、cdots、很头疼的事……总结和收集了一些经验如下:
beamer教程
有很多教程。对于初学者,最好先copy别人(比如师兄师姐的)模板用,或者直接看beamer的例子,C:CTeXtexmfdoclatexbeamerexamples。入门后,我觉得最好的提高教程是Ki-Joo Kim的Beamer v3.0 Guide,本身就是一个幻灯片,写的很清楚,看得也很爽。最后是beamer的用户手册,参考用。
中文幻灯片
一定要定义documentclass[cjk]{beamer},别忘了“cjk”,否则编译不通过
pdf书签中文乱码
这是做中文幻灯片时必然遇到的问题……
在Adobe Reader中,显示在一旁的书签(Bookmark)是Unicode的。这样一来,如果单纯是使用pdflatex生成pdf将会显示乱码。所以,若要生成中文的Bookmark就需要执行如下命令:
pdflatex slide.tex
pdflatex slide.tex
gbk2uni slide.out
pdflatex slide.tex
注:gbk2uni是cct的一个小工具。
改变文字颜色
textcolor{blue!80!white}可以调色,这是xcolor包的一个功能。
在WinEdt中要查看任何一个package的用户手册,可以在菜单中选Help-Latex doc,然后输入包名即可。
lyx:可见即所得的Latex编辑器
每个frame里几乎都要敲一遍begin{itemize}end{itemize;思考若干秒后决定再敲一遍(因为要缩进其中的几个item);再思考若干秒后把刚敲的这两行删掉(取消缩进)……用beamer就是这么痛苦。想想powerpoint,只要按Tab和Shift+Tab......
Courant number的意义(2010-10-23 16:50:00)
摘要: Courant number(库朗数)实际上是指时间步长和空间步长的相对关系,系统自动减小courant数,这种情况一般出现在存在尖锐外形的计算域,当局部的流速过大或者压差过大时出错,把局部的网格加密再试一下。
在FLUENT中,用courant number来调节计算的稳定性与收敛性。一般来说,随着courant number的从小到大的变化,收敛速度逐渐加快,但是稳定性逐渐降低。所以具体的问题,在计算的过程中,最好是把courant number从小开始设置,看看迭代残差的收敛情况,如果收敛速度较慢而且比较稳定的话,可以适当的增加courant number的大小,根据自己具体的问题,找出一个比较合适的courant number,让收敛速度能够足够的快,而且能够保持它的稳定性。
FLUENT计算开始迭代最好使用较小的库朗数,否则容易导致迭代发散,修改办法slove-controls-solution,修改courant Number 默认值为1,开始没有经验的改小点,比如0.01,然后逐渐加大。......