解决OpenFOAM颗粒计算输出文件Paraview无法打开问题(二)

第二个方案的源是在CFD中文网上看到的一篇帖子,其具体链接忘了。这个帖子给了一个github的链接,就是将OpenFOAM输出的颗粒位置信息转变为真实的位置信息的脚本。其链接在此。

1. 背景

我们知道,paraview之所以打不开OF输出的颗粒文件,是因为OF输出的颗粒信息的位置文件中的内容并不是真实的颗粒坐标。
在这里插入图片描述
而上面那个脚本就是将这个坐标转换为真实的位置坐标。

2. 具体步骤

GitHub链接里其实给的比较清楚了,说明文件写的十分良心。
主要有两种方法,一是边算边转换,而是算完之后统一转换。
说明文件中以MPPICFoam下的一个案例文件作为说明

cp -r $FOAM_TUTORIALS/lagrangian/MPPICFoam/column MPPICFoam_column
cd MPPICFoam_column

第一种方式

1、在system/controlDic文件的最后添加

functions
{writeCloudOldStyle1{type        writeCloudOldStyle;libs        ("liblagrangianExtraFunctionObjects.so");writeControl writeTime;clouds(kinematicCloud);}
}

2、运行算例
3、执行命令

find -name positions | while read line; do mv $line $line.coord; mv $line.orig $line; done
find -name positions | while read line; do sed -i -e 's=^\(.*object.*\)positions.orig;=\1positions;=' $line; done

之后就能用paraview成功打开文件进行查看了。

第二种方式

第二种方式是再计算完成之后进行。
1、需要在`system文件夹下创建一个positionConvertDict文件。

 /*--------------------------------*- C++ -*----------------------------------*\| =========                 |                                                 || \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           ||  \\    /   O peration     | Version:  5.x                                   ||   \\  /    A nd           | Web:      www.OpenFOAM.org                      ||    \\/     M anipulation  |                                                 |\*---------------------------------------------------------------------------*/FoamFile{version     2.0;format      ascii;class       dictionary;location    "system";object      positionConvertDict;}// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //functions{writeCloudOldStyle1{type        writeCloudOldStyle;libs        ("liblagrangianExtraFunctionObjects.so");writeControl writeTime;clouds(kinematicCloud);}}

2、执行命令

MPPICFoam -postProcess -dict system/positionConvertDict

这里的命令也可以换成DPMFoam开头,对于自己整的求解器可能会显示没有该命令的情况,但是可以把自己求解器的文件格式改成DPMFoam一样,在用DPMFoam命令转换,亲测有效。
3、执行命令

find -name positions | while read line; do mv $line $line.coord; mv $line.orig $line; done
find -name positions | while read line; do sed -i -e 's=^\(.*object.*\)positions.orig;=\1positions;=' $line; done

bug

这两个方法在并行计算时会存在一点小bug,因为他这个流程是我先生成一个真实颗粒位置的文件positions.org(再合并后的文件夹里),然后再把原始的颗粒位置文件(paraview无法识别的)的内容替换成positions.org。第三步的命令就是这个操作会检索所有可能的position名称的文件,但是在proc文件中并不会出现positions.org,因此会报错。
解决办法是把proc
文件给删掉,然后再执行第三部命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

写在前面 Python中有许多有趣和强大的模块,其中一个非常有趣的模块就是pynupt。pynupt是基于pynput模块的一个封装,用于控制鼠标和键盘。它可以实现自动化操作和游戏外挂等功能。 本文将详细介绍pynupt模块的使用方法和常见的功能。 1. 安装pynput模块…

Android 14新增复制粘贴方式,解析工作原理

安卓14为用户提供了一种更简单的方式来在应用程序之间复制和粘贴内容,这肯定是你现在想在安卓14测试版或未来几个月该软件在你的安卓手机上推出时尝试的。 一旦更新在你的手机上(无论是测试版还是其他版本),你只需点击并按住你想…

【Python机器学习】实验14 手写体卷积神经网络

文章目录 LeNet-5网络结构(1)卷积层C1(2)池化层S1(3)卷积层C2(4)池化层S2(5)卷积层C3(6)线性层F1(7)线性层F2 …

小程序中的全局配置以及常用的配置项(window,tabBar)

全局配置文件和常用的配置项 app.json: pages:是一个数组,用于记录当前小程序所有页面的存放路径,可以通过它来创建页面 window:全局设置小程序窗口的外观(导航栏,背景,页面的主体) tabBar:设置小程序底部的 tabBar效果 style:是否…

MySQL不停重启问题

MySQL不停的自动杀掉自动重启 看一下log日志 my.cnf 里配置的 log_error /var/log/mysqld.log vim /var/log/mysqld.log 报的错误只是 [ERROR] Cant start server: Bind on TCP/IP port: Address already in use [ERROR] Do you already have another mysqld server …

基于大语言模型知识问答应用落地实践 – 知识库构建(上)

01 背景介绍 随着大语言模型效果明显提升,其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型(LLM)知识召回(Knowledge Retrieval)的方式,在私域知识问答方面可以…

屏蔽软件,一个技术出生的小企业老板的灵感

我是技术出生,今年开始也带团队了。虽然 人不多,但是有的时候 人在外面出差,不知道办公室的情况。这个时候为了企业的安全考虑,灵感上就想到了开发出一款能屏蔽软件的工具。杜绝掉一些危害公司的一些事。软件后端采用的是JAVA服务…

【用于全变分去噪的分裂布雷格曼方法】实施拆分布雷格曼方法进行总变异去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

实现Token刷新机制

问题场景: 开发的项目中,如果正在项目中编辑信息,编辑信息的时间的过程中token失效可能导致信息丢失怎么办? 一、解决方法 实现Token刷新机制:客户端定时刷新token,当用户的token即将过期时,可以向服务器…

ForkJionPool线程池

分而治之 简单点说, 如果要处理的 1000 个数据 , 但是我们不具备处理1000 个数据的能力 , 可以只处理 10 个数据, 可以把这 1000 个数据分阶段处理 100 次 , 每次处理 10 个 , 把 100 次的处理结果进行合成, 形成最后这 1000 个数据的处理结果 . 把一个大任务调用 for…

5 Python的面向对象编程

概述 在上一节,我们介绍了Python的函数,包括:函数的定义、函数的调用、参数的传递、lambda函数等内容。在本节中,我们将介绍Python的面向对象编程。面向对象编程(Object-Oriented Programming, 即OOP)是一种…

系统架构设计师之缓存技术:Redis与Memcache能力比较

系统架构设计师之缓存技术:Redis与Memcache能力比较

OpenCV使用CMake和MinGW-w64的编译安装

OpenCV使用CMake和MinGW-w64的编译安装中的问题 问题:gcc: error: long: No such file or directory** C:\PROGRA~2\Dev-Cpp\MinGW64\bin\windres.exe: preprocessing failed. modules\core\CMakeFiles\opencv_core.dir\build.make:1420: recipe for target ‘modul…

Git如何操作本地分支仓库?

基本使用TortoiseGit 操作本地仓库(分支) 分支的概念 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间互不影响。 为何要…

无涯教程-PHP - 全局变量函数

全局变量 与局部变量相反,可以在程序的任何部分访问全局变量。通过将关键字 GLOBAL 放置在应被识别为全局变量的前面,可以很方便地实现这一目标。 <?php$somevar15;function addit() {GLOBAL $somevar;$somevar;print "Somevar is $somevar";}addit(); ?> …

Cohere API 之旅

Cohere API之旅 0. 背景1. Cohere提供的模型和函数2. Cohere 客户端3. Co.Generate API4. Co.Embed API5. Co.Classify API6. Co.Tokenize API7. Co.Detokenize API8. Co.Detect_language9. Co.Summarize API10. Co.Rerank API 0. 背景 大约两个月前有一份新闻稿。 https://w…

合并两个有序数组【leetcode】

1. 题目&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&…

测试框架pytest教程(9)跳过测试skip和xfail

skip无条件跳过 使用装饰器 pytest.mark.skip(reason"no way of currently testing this") def test_example(faker):print("nihao")print(faker.words()) 方法内部调用 满足条件时跳过 def test_example():a1if a>0:pytest.skip("unsupported …

基于Redis的BitMap实现签到、连续签到统计(含源码)

微信公众号访问地址&#xff1a;基于Redis的BitMap实现签到、连续签到统计(含源码) 推荐文章&#xff1a; 1、springBoot对接kafka,批量、并发、异步获取消息,并动态、批量插入库表; 2、SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据; 3、基于Redis的Geo实现附…

python小脚本——批量将PDF文件转换成图片

语言&#xff1a;python 3 用法&#xff1a;选择PDF文件所在的目录&#xff0c;点击 确定 后&#xff0c;自动将该目录下的所有PDF转换成单个图片&#xff0c;图片名称为: pdf文件名.page_序号.jpg 如运行中报错&#xff0c;需要自行根据报错内容按照缺失的库 例如&#x…