找回密码
 注册
查看: 3385|回复: 6

[转载]transportModel与viscosityModels的关系

[复制链接]
发表于 2009-5-22 05:16:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
应openfoamlb的要求,本文简单的介绍一下transportModel和viscosityModels.   transportModel是个父类,他本身无法构造函数,因为里面有3个重要的纯虚函数
virtual tmp<volScalarField> nu() const=0;    //返回层流粘性
virtual void correct()=0;  //根据不同的粘性模型对层流粘性进行更新
virual bool read()=0; //读如transportation属性
该类本身可以说是粘性模型选择器。此类有两个子类singlePhaseTransportModel和twoPhaseMixture分别用于单相流动粘性和两相混合流动粘性的选择器。其实很简单,单相传输里面有个粘性模型指针(私有变量),该指针会根据你选择的粘性模型对粘性进行更新。更新过程在correct里面,可以通过nu()返回你更新后的粘性。在湍流模型中,不管是RAS还是LES模型都需要根据transportModel的correct进行层流粘性的更新。其基本调用过程为
turbulentModel.correct()-->singlePhaseTransportModel.correct()-->viscosityModels.correct().
turbulenceModel.nu()-->singlePhaseTransportmodel.nu()-->viscosityModels.nu()

viscosityModels是所有的粘性模型父类,该父类和transportModel模型一样,有三个纯虚函数,该纯虚函数和transportModel中的纯虚函数完全相同
virtual tmp<volScalarField> nu() const=0;    //返回层流粘性
virtual void correct()=0;  //不同的粘性模型需要重载该函数,该函数就是根据当前的流动情形重新计算粘性的。
virual bool read()=0; //读如transportation属性

应当注意上述所有的粘性模型通常是一个场,而非一个变量。对于牛顿流体粘性模型全场恒定,他是根据你在transportPropertiesDict里面的那个nu对粘性场进行构建的。也就是对牛顿流体全场流体粘性所有值都相同。

通常,大家关心的并不是如何定义一个transportModel,而是如何定义一个粘性模型viscosityModels。很简单,子类化viscosityModels,并重载nu(),  correct(), read()三个纯虚函数即可。 这样你的粘性模型就可以被transportModels 所调用。 为什么? 接口相同啰!!

转自OpenFOAM研究http://blog.sina.com.cn/openfoamresearch
发表于 2009-5-22 18:31:42 | 显示全部楼层
请问,为什么在openfoam中所有的viscositzmodels都默认为viscosity不受温度影响呢,也就是说 f-viscosity(T)=constant?


[ 本帖最后由 DAZ 于 2009-5-22 18:38 编辑 ]
 楼主| 发表于 2009-5-26 01:24:50 | 显示全部楼层

回复 2# DAZ 的帖子

呵呵,这个是开始的时候的问题。不过你可以将温度方程加进去就行了。
发表于 2009-5-26 22:25:24 | 显示全部楼层
温度加进viscosemodel中去了,solver下有能量公式。由于viscos-disserpation的存在,需要写一个迭加计算命令,因为viscose(T), TEqn(viscose)这两个公式在求解中互相受牵制。都需要在哪里在进行修改呢?是src/transportmodel/incommpessible/singlephasetransportmodel?还要再case中的controldirct再对时间修改吗?楼主有什么好的建议呢 ?
 楼主| 发表于 2009-5-28 04:45:35 | 显示全部楼层

回复 4# DAZ 的帖子

呵呵,应该在粘性viscosityModel里面进行修改。TEqn不会用到粘性性吧。粘性只有动量方程中才会用到。用到粘性也无所谓了。延迟修正就行了。 向粘性模型里面加个温度方程和controlDict没有关系的,不用做任何修改。关于如何加一个温度方程请参看我的blog上的scalarTransportFoam的说明
http://blog.sina.com.cn/openfoamresearch
发表于 2009-5-28 20:48:39 | 显示全部楼层
在对高分子材料的加工中,dissipationsenergie是要用到粘性的.
我们对src/transportmodel/incommpessible/singlephasetransportmodel中的所有nu都进行了修改,allmake也显示通过了。但是在自己的solver中,修改过nu后,wmake就一直通不过。看到说明是说要对application下的library进行从新编译,编进去用户自己的使用路径。还没太搞清楚除了在application下的make/file中修改外,还要在那里修改?两个library(src/.../allmake/.../lib)和(application/make/make/.../lib)之间的关系?
楼主做过类似的尝试吗?讲一讲好吗。
期待。。。
 楼主| 发表于 2009-5-29 05:35:42 | 显示全部楼层

回复 6# DAZ 的帖子

首先对黏性修改,不应该在singlephasetransportmodel模型中进行修改,而应该在黏性模型viscosityModels中修改。定义新的黏性模型,application无须进行任何修改,只需要在将新定义的黏性模型文件加入到src/transportModels/incompressible/Make/files,进行重新编译即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表