@李东岳 是的,之前搞过飞机结冰的模拟。现在已远离学术圈哈哈
sibo
帖子
-
-
哈哈的确是的,当年实习时候做的项目。希望各位老铁/老师 多多引用
-
@李东岳 东岳前辈觉得硕士/博士应届毕业,平均有30万么?有没有对行业选择的一些建议?感谢感谢!
-
@liujunCFD 都是海淀区的985
-
大家好,
想开一个就业贴,大家来讨论一下国内CFD就业情况,互相学习~
以下是个人的一些认知:国内CFD就业市场像科研一样也分为两类:第一类是使用CFD技术为其他产品开发做支撑的,这类就是CFD的应用。比如系统热分析,化工,暖通,整车等等。往往CFD不是主业,并且主要使用商软,Fluent,Star-ccm等。一般title是 XX工程师。第二类是关于CFD算法的开发,对学历要求高一些,要会写code,有算法植入的经历。
个人感觉对于应届毕业生或者3年经验内的朋友,第一类偏应用的工作,占大多数,但薪资较低。第二类门槛高一些,坑位较少,但薪资高一点。但也有可能,未来5-10年,国家会更重视cfd软件开发,从而导致第二类工作蓬勃发展??
总体来说,对国内CFD就业环境,机会多少,城市,以及工资待遇方面不是很清楚,毕竟不像码工市场大,大家信息流通快。所以开贴希望大家讨论,也希望论坛里的前辈给新人分享经验,建议。
先说一些我自己及朋友的信息来抛砖引玉:
杭州,汽车行业,ansys工程师,25k-12期, 硕士应届;
成都,ANSYS,应用工程师,16k-12期, 硕士应届;
长春,汽车行业,CFD工程师,20万年薪,硕士应届;
上海,上汽,研发工程师,25-30万年薪,海外硕士应届; -
@bestucan 感谢回复!加thermo在incomprehensible里面,理论上可以。不过今天试了一下,报错挺多好多需要改。。。并且主要是我们想做一个普适性的BC, 因为会用到多个不可压缩solvers,每个都改太麻烦了。所以还是想从改bc上入手。
-
大家好,
最近在用externalCoupledTemperature 边界条件,这个是用来把OpenFOAM solver和其他cfd联系起来。但是目前这个BC只能用在compressible solver里面,原因可见下面的code. 基本上就是,它需要‘he'和’alpha‘,但这些传热量只能在thermo库里找到。因为incomopressible solver是分开求解温度的,只有transport库,所以会报错。
if (db().foundObject<cmpTurbModelType>(turbName)) { const cmpTurbModelType& turbModel = db().lookupObject<cmpTurbModelType>(turbName); const basicThermo& thermo = turbModel.transport(); const fvPatchScalarField& hep = thermo.he().boundaryField()[patchi]; qDot = turbModel.alphaEff(patchi)*hep.snGrad(); } else if (db().foundObject<basicThermo>(thermoName)) { const basicThermo& thermo = db().lookupObject<basicThermo>(thermoName); const fvPatchScalarField& hep = thermo.he().boundaryField()[patchi]; qDot = thermo.alpha().boundaryField()[patchi]*hep.snGrad(); } else { FatalErrorInFunction << "Condition requires either compressible turbulence and/or " << "thermo model to be available" << exit(FatalError); }
现在想修改一下这个BC, 让它可以在incompressible solver中也得到’he', 'alpha', 还请大家给点建议!十分感谢!
-
@东岳 几年前在学校用student license跑燃烧,连100万都不能算的。并行的话,还有核数限制。忘记具体多少了。。
-
@东岳 还没毕业。。都是泪 结冰也在搞,也和别人合作搞搞别的。希望早日上岸。
-
感谢东岳前辈回复!
刚比较了一下OF5和7的结果,几乎是一样的。就是感觉这个不完全符合一般意义的Boussinesq approximation了。 -
大家好,之前用的OF5中,heat transfer有4个solvers,OF7把buoyantBoussinesqPimple[Sp]Foam 删掉了,通过把Boussinesq approximation作为 equation of state,使得之前的 buoyantPimpleFoam也可以使用Boussinesq approximation。
但是一般来讲,Boussinesq approximation 只对buoyancy term 进行处理,就像之前版本的buoyantBoussinesqPimple[Sp]Foam里,基于不可压缩,只有动量方程的buoyancy term 有修改过的rho项。现在,在of7里面,buoyantPimpleFoam完全是可压缩的方程,当我们使用Boussinesq approximation作为 equation of state时,就把 rho = rho0*(1 - beta*(T - T0)) 应用到了所有的rho项上。。。
请各位前辈讲解一下这是什么操作??多谢! -
@RebelYoung
建议先查boundary conditions;还有mesh,你的checkMesh结果呢 -
@RebelYoung
你这个log是rhoC的吧?你的case是inviscid还是viscous flow? rhoCentralFoam对待inviscid flow是用的explicit方法求解,所以假如你没有viscosity,用diagonal solver时,residual就是0. -
可能的原因太多了,先检查boundary conditions,你可以把case上传来看一下。
假如试了不同的BCs, 还是有问题。可以先做一些简单尝试。
rhoC 在做高mach number时候,出现这个错误,可以尝试把第一步dt降低很多。
rhoS 可能和simple算法有关,你可以在fvOption里面加个限制温度的:limitTemperature { type limitTemperature; active true; limitTemperatureCoeffs { selectionMode all; Tmin 300; Tmax 400; } }
感觉你的thermo设定可能也有问题,你可以把file放上来看看。
还有mesh,checkMesh结果怎么样? -
哈哈专家不敢当。。现在没有现成的求解器,最接近的可能是reactingParcelFilmFoam, 可以做water film在机翼上的模拟,但是没有结冰过程。
Messinger和myers model都不难植入,可以直接做成平衡方程的那种形式,但是宏观的机翼结冰模拟已经做的太多了。。不推荐搞这个。 -
@东岳 请问东岳老师,可以用速度基求解器比如rhoCentralFoam求解这个算例么?还得加个温度去解压力?
没算过DNS,望指点!谢谢! -
@东岳 是啊我也看到了,改成压力基说是在low mach时更好。感觉各种拼凑。。
-
@东岳 感谢前辈回复!
看来如果要做全隐式,还需要一些其他方法捕获间断。比如改成压力基然后用pimple?
rhoCentralFoam里面隐式的求解应该对速度修正吧?加入粘性项对速度的影响。
-
这里附上@东岳 前辈的 rhoCentralFoam解析
以及rhoCentralFoam作者的 文章 -
大家好,
rhoCentralFoam 在处理inviscid flow时完全显式,对于粘性项做隐式处理。
好奇为什么不直接做成 fully implicit? 因为作者在文中也提到考虑到步长问题,将粘性项做了隐式处理。还是说 central-upwind 的 KT/KNP 在全隐式时不可行?
欢迎大家讨论,谢谢!
-
因为在v4之后,
boundaryField
返回的是const,你不能直接assign value。所以定义了
boundaryFieldRef
它返回non-const object
-
我当时用了RANS一直算到了周期性稳定,然后开始算DDES,这样算起来快一些也稳定一些因为RANS提供了一个较可靠的入口边界条件,LES对这个很sensitive。但是至于能不能解决你的发散问题,还取决于很多其他因素。你可以先试一下,如果不行,可以发一下你case的具体信息。
potentialFlow 是用来初始化流场的,但是没用过它在LES上,当时用RANS的时候,用它主要来加快收敛。
-
你好,
我采用的办法是先用RANS计算一个流场解,再开始用LES计算。边界层用壁面函数求解。
你如果不求解边界的话,RANS的主要作用是得到一个较可靠的入口边界条件。 -
欢迎李老师来啊,感觉人生真的各种选择各种纠结。。
李老师来了有机会可以聚聚啊,我在芝加哥。 -
大家好,
不知道哪位大佬有使用过之前版本的wallGrad(U)和现在的grad(U),有问题想请教一下!
之前的wallGrad(U)的代码是:wallGradU.boundaryField()[patchi] =-U.boundaryField()[patchi].snGrad();
这里会返回一个vector。snGrad()计算的是垂直于壁面表面的gradient,就是说这里如果壁面是弯曲的,他会把角度计算进去,如图。然后计算返回的三个分量应该是速度在X,Y, Z方向的分速度的各自的梯度。
https://www.openfoam.com/documentation/cpp-guide/html/schemes-sngrad-schematic.png
但是在现在的版本里,如果type wallGrad(U),
会出现:In the new openfoam 5 wallGradU has been superseded by the postProcess utility: postProcess -func 'grad(U)
然后这里就不明白了,grad(U)和wallGrad(U)有关系么??
grad(U)返回一个tensor,是对整个场进行操作,返回的9个分量应该是类似于这样的:
按我的理解他是在对速度的三个方向分量 在每个global 的x, y, z方向求地图,也就是说对我的曲面,如果我想从grad(U) 得到wallGrad(U),还需要自己把角度算进去??
虽然我们还是可以再植入wallGrad(U)的code进去,可是只是想不通为啥OF要把他删掉?? 还说可以用grad(U),完全不是一回事儿啊!
不知道我想的对不对,还请各位前辈指导!
谢谢大家! -
@qjh888 您好!有个问题想请教。
我在用komegaSST的时候也遇到类似的问题(yPlus结果小于1),我的Residual plot 显示已经收敛了,并且用paraview看到的k和Omega在wall上的分布基本不变了,但是k的值还是很小,所以导致Openfoam计算的yplus也很小。因为openfoam计算的yplus其实是y*
我想问的是 OpenFOAM给的yPlus很小意味着我的k,omega结果不对么?还是说这个yplus实际参考意义不大?非常感谢!
-
@random_ran
感谢您的回复!-
根据那个连接,traction是shear stress的在边界y方向的分量。这里如果我们定义单位法向量用n表示,stress tensor用T表示。那么,根据OpenFOAM的代码,
n = -mesh.Sf().boundaryField()[patchI] / mesh.magSf().boundaryField()[patchI]; T = Reff.boundaryField()[patchI];
那么OpenFOAM这里做的就是 n * T 啊,也就是traction的定义。所以按照那个链接最终给出的公式,
正确的计算应该是:
wallShearStress = nT - n(n*T) *n -
加好了!非常感谢!
-
-
@郑澄远 在 编译icoFoam时出现没有发现fvCFD.H 中说:
EXE_INC =
-I$/home/zcy/openfoam/fin/lnInclude \看不见你的图片,我猜你是这行没写完吧。。。fin -> finiteVolume
-
@东岳 感谢李老师回复!
其实我是打算把grad(U)的plot和wallShearStress的plot对比一下看那个分量可以使他们有相似的shape哈哈。因为按理说同一个boundary上面的grad(U)和shear stress应该是差了一个mu(viscosity)的倍数。
https://www.cfd-online.com/W/images/math/0/c/b/0cbe8a602784d6e0c0c532d495dddff5.png然而看起来所有的分量都对不上。。。难道是对这个物理量理解错误么还是说openfoam计算shear stress或者grad(U)的方法比较特别??不过的确直接用wallShearStress command 导出的 是traction 而不是 真正的shear stress。就像我上个post里说的那样,不知道东岳师兄觉得是不是?
谢谢!
-
你在icoFoam.c中include fvCFD.H了么?
你这个错误应该是include了,那就检查一下你的Make/option 里面有没有link相应的头文件吧。 -
大家好,
最近在看wallShearStress的代码,发现OpenFOAM的计算是:
forAll(wallShearStress.boundaryField(), patchI) { wallShearStress.boundaryField()[patchI] = ( -mesh.Sf().boundaryField()[patchI] /mesh.magSf().boundaryField()[patchI] ) & Reff.boundaryField()[patchI]; }
这里的Reff发现是:
const volSymmTensorField Reff(model->devRhoReff());
devRhoReff() 返回的应该就是 stress tensor.
那么这样的话,openfoam计算的wallshearstress应该是traction而不是shear stress啊.
大家可以参考下这个链接:traction
请问是这样吗?后来想用wallGrad(U)来计算shear stress,发现OF5没有这个命令了。只能用
solverName -postprocess -func grad(U)
这里我有两个问题,
第一个是solverName对结果有关系么?因为我是用的自己的solver,和rhoCentralFoam类似,没有用simple或者PISO算法,所以这里如果用自己solver的名字,会报错。用rhoCentralFoam可以运行。按我理解只要有U这个场,有wall function 就应该可以可以了。所以想问大家,这个name对结果有影响么?第二个问题是,用grad(U)后生成是是一个tensor field,每一个cell会有9个分量。但是他们对应的是依次怎么排序的呢?
是dU_x/dx, dU_x/dy, dU_x/dz, dU_y/dx, dU_y/dy, dU_y/dz, dU_z/dx, dU_z/dy, dU_z/dz ? 还是dU_x/dx, dU_y/dx, dU_z/dx... 呢?非常感谢大家的帮忙!
-
大家好,
请问在并行运算的时候,每个core需要多少memory呢?
应该是和 decompse之后每个core所负责的cells数目 以及 solver复杂程度有关,请问有什么相关的大致规律呢?昨天发现一个大概3千万cells的mesh,单核跑checkMesh时 提示run out of memory, 但是solver可以跑!是不是checkMesh对memory要求很大?
非常感谢!
-
@东岳 是interfoam的一个h file
-
@飞火流星jyj zeroField就是为添加source term准备的应该
-
@aiweimo It should be fine using multiple versions of OF. I have OF2.1, 4 and 5.x in my account. However, don't use alias to source your OF in alias. Use
echo "Source OpenFOAM"
source $HOME/OpenFOAM/OpenFOAM-5.x/etc/bashrc WM_LABEL_SIZE=64 WM_COMPILER_TYPE=ThirdParty WM_COMPILER=Gcc48 WM_MPLIB=OPENMPI FOAMY_HEX_MESH=yesSorry I lost my Chinese input somehow.
-
如果你decompose了,并且脚本中的任务信息描述正确,可以试一下把running command改成:mpirun.openmpi -np 512 solver_name -parallel;
在提交到超算前,可以先在自己电脑上并行跑一下看有没有错误。 -
我在做gas-liquid compressible flow时,需要water的equation of state 去解液态场的压力。
我知道现在有这样几种方法:
the stiffened-gas equation
the Tait equation
Noble-Abel Stiffened-Gas equation of state
想问一下大家有没有这方面的经验,因为有很多系数,不太清楚怎么选择系数。比如:
关于gamma和P_infinite的选择会影响很大谢谢大家!
-
@李东岳 比如这一篇:’Numerical prediction of airfoil characteristics in a transonic droplet-laden air flow‘, Geum-Su Yeom ⇑, Keun-Shik Chang, Seung Wook Baek. 他们用了stiffened gas equation of state. 我之前已经在rhoPimpleFoam 中植入了液态的控制方程,算的结果也得到了验证,但无奈老板让做density based solver,所以不能用piso来解。。
-
@李东岳 嗯这个方程式动量方程。是two phase flow
-
@李东岳 我的模型是先计算空气流场,再算流场中的液滴。
关于液滴运动的Euler动量方程是:
时间项用4 stage Runge-kutta 来递进,这里虽然加入了压力梯度但是还是不稳定。
我的第一个问题是:如何close这里的压力?我看到有些人在直接用空气场的压力,还有的是用stiffened-gas equation of state来解压力。
第二个问题是:如何给droplet field的动量方程加入一些dissipation, 使得计算更加稳定。因为我在做transonic,所以shock的形成导致计算很不稳定。。。之前打算植入AUSM scheme,但是看到目前的paper做的都是两相分离的那种,不是我这种混合在一起的。。对多项并没有什么经验。。感谢指导!
-
@李东岳 我的droplet phase的convective flux只有rhoUU, 右边只有一个drag force,所以很不稳定。并且我使用runge-kutta递进,explicit更不稳定。。。现在想植入AUSM scheme,但是简单看了一下发现虽然AUSM有气液两相的,但是是把液相看成是contunumm的,而我的液相是dispersed. 是在气相里的droplet。。
不知道东岳师兄有没有什么建议~ -
大家好,
我想在一个动量方程中加入一项Artificial dissipation term,如下所示:
其中epsilon2 is the second order dissipation coefficient.
但是我没有找到关于这项更详细的介绍,比如如何对这个系数取值。
请问有没有前辈可以指点一下,哪里可以找到相关的资料?谢谢大家!
-
对,直接在case里面创建一个.foam的空白文档,然后用你下载的paraview找到这个case,打开这个.foam文件,就可以读取你的case了。
-
感谢东岳师兄指导!当时找到THE就不知道该怎么找下去了,还想请问一下如何可以准确的找到方程的定义啊?比如在找THE的时候,会出现在很多.H文件里,怎么能知道具体的某个solver是用的哪个呢?我一直都是在doxygen里面看最相关的,但是有时候不熟悉的话就得重复找好多次。。。很糟心。。。后来用了Qt,在写自己solver的时候是挺方便,但是看其他openfoam solver还得自己重新整理所有头文件进去,也很麻烦。。还请各位前辈给些意见~谢谢啦!
-
做了一些search后有如下进展:
解完能量方程后,有这样一行:thermo.correct();
然后thermal correct基本就是calculate();
在hePsiThermo.C中发现:TCells[celli] = mixture_.THE ( hCells[celli], pCells[celli], TCells[celli] );
就又去找了THE的解释:
inline Foam::scalar Foam::species::thermo<Thermo, Type>::THE ( const scalar he, const scalar p, const scalar T0 ) const { return Type<thermo<Thermo, Type>>::THE(*this, he, p, T0); }
但是到这里还是不清楚到底是如何计算T的啊?
-
在rhoCentralFoam中,能量方程解了之后求的是e--internal energy, 那么温度是在哪里计算的呢?
我在rhoCentralFoam中的createField.H
里面看到:const volScalarField& T = thermo.T();
请问为何这里将T声明为const
呢?在之后加T.boundaryFieldRef()=###
, 编译会报错,就是说T
被声明为了const
。想问const
的声明是否是必须的呢?谢谢大家!
-
遇到过,尤其是前几天试了下动网格并行。。结果简直感人。建议试一下不同的decompose method,减少一点分区个数。
竟然发现论坛有个老铁的文章
竟然发现论坛有个老铁的文章
CFD国内就业贴
CFD国内就业贴
CFD国内就业贴
externalCoupledTemperature 怎么用在不可压缩solver中?
externalCoupledTemperature 怎么用在不可压缩solver中?
Fluent 测试版本有的玩么?
OF7 更新的buoyantPimpleFoam 使用Boussinesq不正确
OF7 更新的buoyantPimpleFoam 使用Boussinesq不正确
OF7 更新的buoyantPimpleFoam 使用Boussinesq不正确
可压流计算发散,出现Negative Initial Temperature 问题如何处理?
可压流计算发散,出现Negative Initial Temperature 问题如何处理?
可压流计算发散,出现Negative Initial Temperature 问题如何处理?
OpenFOAM 结冰计算
东岳老师最近做的DNS验证算例疑惑点
rhoCentralFoam 为什么做成半隐式?
rhoCentralFoam 为什么做成半隐式?
rhoCentralFoam 为什么做成半隐式?
rhoCentralFoam 为什么做成半隐式?
rhoCentralFoam版本更替的交流
求助:LES如何设置初始场?
求助:LES如何设置初始场?
胖猫要去美国了
请教大家关于wallGrad(U)和grad(U)的问题
OpenFOAM中kOmegaSST和yPlusRAS
请问关于wallShearStress 和 grad(U)
编译icoFoam时出现没有发现fvCFD.H
请问关于wallShearStress 和 grad(U)
编译icoFoam时出现没有发现fvCFD.H
请问关于wallShearStress 和 grad(U)
OF memory requirement
新版本的alphaSuSp.H
新版本的alphaSuSp.H
超算平台上多版本编译OF,串行无误并行出错?
超算平台上多版本编译OF,串行无误并行出错?
液态水状态方程
Artificial dissipation 项
Artificial dissipation 项
Artificial dissipation 项
Artificial dissipation 项
Artificial dissipation 项
关于paraview的问题(Ubuntu17.04)
rhoCentralFoam是如何计算温度的?
rhoCentralFoam是如何计算温度的?
rhoCentralFoam是如何计算温度的?
并行和串行结果不一样。。