使用OpenFOAM-v2006版本的重叠网格时,其挖洞只能挖出壁面以及壁面附近区域的网格,而离重叠区边缘(fringe)还有一定距离,如下图所示:
经研究,其和挖洞策略有关系,修改需要动源代码,十分费工夫。foam-extend-4.1版本有比较好的重叠网格功能,挖洞也很完善,能挖到边缘,是比较标准的,但extend比较大杂烩,也没有其他一些我需要的功能,所以只好作罢。我只好以extend版本为参考,修改2006版本的挖洞相关的代码来修正这一问题。这个过程需要深入地读取源码,特此记录。
这里以overPimpleDyMFoam为例。我们知道,OpenFOAM是基于有限体积方法的,计算时每一个体元(cell)对应一组NS方程。通过simple或piso算法,对隐式的方程组进行迭代使其收敛。重叠网格的实现原理是在重叠的区域对体元的流场量乘上一个系数,使其传递两套甚至更多套网格之间的信息。具体可看overPimpleDyMFoam.C, pEqn.H, UEqn.H等文件。这一系数与重叠网格的插值格式有关,OpenFOAM的2006版本提供了四种插值格式:cellVolumeWeight,inverseDistance,leastSquares和trackingInverseDistance。不同插值格式可能有不一样的结果,这里不予深究,我用的是inverseDistance格式。
OpenFOAM将重叠网格的功能整合到动网格的一个库里(dynamicOversetFvMesh),通过类进行信息和指令的传递,所以其他的计算步骤等都相对比较独立。当需要网格运动时,mesh.update()就会被激活,这个函数在大类里是虚函数,只有到实际用上它的类那里才会被具体定义。找到文件inverseDistanceCellCellStencil.C,在最后有update()的定义:
这一函数有600多行,囊括了重叠网格的所有步骤,总的来说就是挖洞以及网格装配。挖洞就是前言所说,把不需要进行计算的网格进行识别,并在计算时不予考虑。一般来说,两层网格之间的重叠区域不宜太大,仅在边缘有两到三层即可,因为这样才能体现出重叠网格相比于浸入边界的优势:运动网格,满足大变形运动,并且在近壁面也能保持比较好的网格质量(y+,模拟湍流)。不知为何OpenFOAM连最基本的这一功能都无法保证!只好自己改代码了。网格装配就是在挖洞之后,把需要进行信息传递的网格之间用一定的格式连接起来。这里有两个角色:donor贡献者和acceptor接受者,通过一定的插值格式来完成信息的传递。网格如何装配会影响最后的精度以及计算效果,但不是本次主要的研究对象,不细说了。
在第1932行找到Mark holes的步骤段。前面两百多行似乎是一些准备工作,如定义一些临时的数组,定义搜索范围等。我们看到这一段,里面有markPatchesAsHoles的函数,字面意思就是把patch标记为hole,就是挖洞对应的函数。
这一函数在第314行开始,在333行开始,进行挖洞的步骤,可以看到有allCellTypes[celli]=HOLE的指令,在这一行的上方有一个if判据,里面是overlaps的函数。从这不难看出,overlaps将是决定改体元在此刻会不会被当成洞来挖掉的函数,也就是本次研究的主要目标。
下图是overlaps的代码段,可以看到,当vals[i1]==patchCellType::PATCH为真时,返回true,回到markPatchesAsHole上就会把当前的体元标记成hole。
为了深入理解这一判据的含义,以便进行修改完善,这里提出三个问题:
1. PATCH指的是哪一类patch?
2. vals是什么?
3. il是什么?它遍历的对象是什么?
接下来的博文,会逐步理解这些问题。
1、下载netperf2.5.0.tar.gz,解压缩到/opt/netperf2.5.02、cd /opt/netperf2.5.0 ./configure CC=arm-linux-gcc --host=arm-linux --prefix=/usr/local/netperf2 出现如下错误: checking types of argument
PhpMyAdmin漏洞利用汇总目录0x01 信息收集1.1 版本信息获取1.2 绝对路径获取0x02 PhpMyAdmin利用2.1 写入文件GetShell2.2 User defined funct ion(UDF):2.3 MOF提权:0x03 PhpMyAdmin漏洞利用3.1 WooYun-2016-199433:任意文件读取漏洞3.2 CVE-2014 -8959:本地文件包含3.3 CVE-2016-5734 :后台命令执行RCE3.4 CVE-20_phpmyadmin display: none;
Cs宏病毒一、打开服务器./teamserver 192.168.100.130 ajie 运行团队服务器(其中ajie是密码)运行后结果:┌──(root���kali)-[/home/…/Desktop/cs4.0/cs4.0/cobalt-strike]└─# ./teamserver..._will use existing x509 certificate and keystore (for ssl)
函数在Julia里,函数是一个将参数值元组映射到返回值的对象。Julia的函数不是纯粹的数学函数,在某种意义上,函数可以改变并受程序的全局状态的影响。在Julia中定义函数的基本语法是:julia> function f(x,y) x + y endf (generic function with 1 method)在Julia中定义函数...
为什么要学习这个,动态加载dex,因为学习android插件化必须要了解这个才行。 Android使用Dalvik虚拟机加载可执行程序,所以不能直接加载基于class的jar,而是需要将class转化为dex字节码,从而执行代码。优化后的字节码文件可以存在一个*.jar中,只要其内部存放的是*.dex即可使用。 将class的jar包转化为dex需要用到命令dx(在*\and..._dex动态加载成功后怎么调用
函数原型如下: __CRT_INLINE char *__cdecl ctime(const time_t *_Time); __CRT_INLINE struct tm *__cdecl gmtime(const time_t *_Time);ctime函数 ctime函数可以将当前时间值转换为字符串格式返回。返回的字符串格式为:Www Mmm dd hh:mm:ss yyyy 其中,Www 表示星期几,Mmm 是以字母表示的月份,dd 表示一月中的第几天,hh:mm:ss 表示时间,yy
1.关闭防火墙systemctl stop firewalld.service2.设置开机不启动systemctl disable firewalld.service3.查看防火墙状态systemctl status firewalld不同系统常见防火墙相关命令:一、下面是red hat/CentOs7关闭防火墙的命令!1:查看防火状态systemctl status firewalldservice iptables status2:暂时关闭防火墙systemctl_nacos开启需要关闭防火墙
k8s DaemonSet服务守护进程_k8s守护进程
引言其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。其实之前LZ写过一篇文章,但是那篇文...
任务和代码/**Copyright (c)2015,CSDN学院*All rights reserved.*文件名称:main.c*作 者:胡先军*完成日期:2015年5月26日*版 本 号:v1.0**问题描述:警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问*时,A说:“我不是小偷”;B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好
目录概述在div+css中,了解块级元素和行内元素还是非常有必要的,比如:对行内元素使用width属性就会失效。虽然自己不是做前端的,但是,在项目中,曾经也弄过从前端布局,也吃过这方面的亏。今天,群里有朋友问起这个,就趁着学习一下,也算是查漏补缺吧,虽然,谈不上精通,但是了解,还是很有必要的。盒子模型css盒子模型分为两种,一种是遵循w3c标准的标准盒子模型,另外一种就是IE盒子模型。标准盒子模型..._html怎么在盒子里添加图片
为什么80%的码农都做不了架构师?>>> ..._cvsnt server2.5.05.3744 control panel启动