U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(七)markDonors函数

来源:http://www.tudoupe.com时间:2022-02-06

在markPatchesAsHole函数之后是markDonors函数。可以先看到 解析文档 的介绍:

翻译一遍就是:这是一个用来确定所有目标体元的贡献单元的函数。寻址通过waveMethod计算得到。变量tgtToScrAddr由目标子网格和源子网格创建。创建了覆盖所有目标单元的循环映射。变量srcCelli等于带有与目标单元相关的索引的寻址。如果这个变量不等于-1,且它的类型也不是HOLE,那么就会找到贡献单元。然后检查是否有更好的贡献单元,最后确定。

markDonors调用和定义参数分别如下左右图:

最后输出的,应该是allStencil和allDonorID,此变量labelList allDonorID(mesh_.nCells(), -1);大小为网格量大小,初始化为-1。处理网格与网格之间对应关系的寻址用到waveMethod,输出tgtToSrcAddr存储了Src和Tgt之间的对应关系。

这一函数分了两种情况进行考虑:

// 1. do processor-local src/tgt overlap

// 2. Send over tgtMesh bits that overlap src and do calculation on srcMesh.

第一个是处理单个处理器内部的不同zone下的重叠情况。第二个是处理各处理器之间(并行)的不同zone下的重叠情况。第二部分因为涉及到并行的算法,所以会比较复杂。下面是单个处理器下的处理方法。

可以看到最后有一个if下判据是betterDonor(),这个bool类型函数判断当下的srcI是否作为donor更好?如果是的话,那么allDonor就会用这个zone的体元来担当贡献单元。反之则是由其他更好的zone来做。注意到allDonor[celli]中的celli是来自tgt的体元,也就是说,目标层的体元的贡献单元可能会来自不同的zone(srcI),这个由betterDonor来判断。这样,allDonor这一个labelList(下标列表)就记录了各体元的贡献单元所在的zone。因而markDonors并非只是记录个体元的贡献单元,而是这些贡献单元所在的zone,因为在多层网格重叠的情况下,系统必须判断要用哪一层的单元来作贡献插值。

各体元的贡献单元记录在allStencil里:

可以看到,allStencil每次只存一个单元的映射。那么重叠网格多个donors又是如何实现的呢?需要继续看update()后面的代码。

上一篇:JDBC快速入门教程

下一篇:没有了

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息