MATLAB程序初始化OpenFOAM颗粒位置

news2024/12/23 9:03:51

问题引入

在OpenFOAM的颗粒两相流求解器中,我们可以采用manualInjection的方式进行自定义颗粒的初始位置,这个命令十分方便,在CFDEM中也有类似的命令,不过CFDEM中的命令更加强大,我们不仅可以定义颗粒的初始位置,而且还可以定义颗粒的初始速度,唯一的缺点就是CFDEM学起来资料比较少。。。
anyway,这里我们介绍如何在OpenFOAM中实现这个操作。
其核心步骤是在cosntant文件夹下创建kinematicCloudPositions文件,其大致内容如下:
在这里插入图片描述
于是自定义粒子的位置的思路就非常简单,我们利用MATLAB创建上面的文件内容即可。

MATLAB编程

这里不对程序做解说,直接放在这里。

%% write by rqli 2023/8/10
%% MATLAB程序初始化OpenFOAM颗粒位置(颗粒位置为均匀分布)
clc;clear;format long

%% 各个方向颗粒的数目
NumXofP = 5;NumYofP = 5;NumZofP = 1;
%% 计算域参数
Lx = 0.278;Ly = 0.278;%这里是二维计算域,因此只有高度和宽度
Lz = 0.278;
%% 生成初始颗粒位置,每个点处速度的标准形式为(0.0,0.0,0.0)
position = zeros(NumXofP,NumYofP);
x = linspace(Lx/(2*NumXofP),Lx-Lx/(2*NumXofP),NumXofP);
y = linspace(Ly/(2*NumYofP),Ly-Ly/(2*NumYofP),NumYofP);
[X,Y] = meshgrid(x,y);
if NumZofP == 1
    postion_x = reshape(X,NumXofP*NumYofP*NumZofP,1);
    postion_y = reshape(Y,NumXofP*NumYofP*NumZofP,1);
    postion_z = zeros(NumXofP*NumYofP*NumZofP,1);
elseif NumZofP >1
    z = linspace(Lz/(2*NumZofP),Lz-Lz/(2*NumZofP),NumZofP); 
    X3d = [];
    Y3d = [];
    Z3d = [];
    for i = 1:length(z)
        X3d = [X3d;X];
        Y3d = [Y3d;Y];
        Z3d = [Z3d;z(i).*ones(NumXofP,NumYofP)];
    end
    postion_x = reshape(X3d,NumXofP*NumYofP*NumZofP,1);
    postion_y = reshape(Y3d,NumXofP*NumYofP*NumZofP,1);
    postion_z = reshape(Z3d,NumXofP*NumYofP*NumZofP,1);
    disp('done')
end

%% 将速度场转为txt文件
position_xyz = zeros(NumXofP*NumYofP*NumZofP,1);
position_xyz = num2str(position_xyz);
position_xyz = string(position_xyz);
for i = 1:NumXofP*NumYofP*NumZofP
    position_xyz(i) = strcat("(",num2str(postion_x(i))," ",...
        num2str(postion_y(i))," ",num2str(postion_z(i)),")");
end 
position_file = 'position';
writematrix(position_xyz,position_file);

二维粒子初始位置如下(采用scatter函数):
在这里插入图片描述
三维粒子位置排布如下(采用scatter3函数):
在这里插入图片描述

最后生成的文件如下:
在这里插入图片描述
我们把上面的坐标粘贴到kinematicCloudPositions文件里即可。

三维散点图的绘制参考资料

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

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

相关文章

Dockerfile 简单实战

将flask项目打包成镜像 1. 准备flask文件 创建 app.py 文件,内容如下 from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello Worldif __name__ __main__:app.run(host0.0.0.0, port8000, debugTrue) 并开启外网访问&#xf…

C# 使用FFmpeg.Autogen对byte[]进行编解码

C# 使用FFmpeg.Autogen对byte[]进行编解码,参考:https://github.com/vanjoge/CSharpVideoDemo 入口调用类: using System; using System.IO; using System.Drawing; using System.Runtime.InteropServices; using FFmpeg.AutoGen;namespace F…

云原生是什么

目录 1. 云原生是什么1.1. 微服务1.2. DevOps1.3. 持续交付1.4. 容器化 2. 什么是云原生2.1. 云原生的诞生2.2. 云原生基金会2.3. 主要区别: 云原生与传统企业应用 1. 云原生是什么 云原生是面向"云"而设计的应用, 因此技术部分依赖于传统云计算的 3 层概念, 基础设…

二叉树题目:根据二叉树创建字符串

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:根据二叉树创建字符串 出处:606. 根据二叉树创建字符串 难度 3 级 题目描述 要求 给你二叉树的根结…

Git 代码分支规范

目的 俗话说:没有规矩,不成方圆。遵循一个好的规章制度能让你的工作事半功倍。同时也可以展现出你做事的认真的态度以及你的专业性,不会显得杂乱无章,管理困难。Git分支规范也是一样。当遵循了某种约定的Git分支,在代…

欧拉公式的证明-泰勒展开法

欧拉公式 欧拉公式在理工科有着广泛的应用和影响。 特别地,当时,,巧妙地将自然对数底数 ,圆周率 ,虚数单位 , 写进一个公式。 证明 由泰勒公式: 即 提取奇偶次项: 即 补充&#xf…

Michael.W基于Foundry精读Openzeppelin第23期——ERC165Checker.sol

Michael.W基于Foundry精读Openzeppelin第23期——ERC165Checker.sol 0. 版本0.1 ERC165Checker.sol 1. 目标合约2. 代码精读2.1 supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId)2.2 supportsERC165(address account)2.3 supportsInterface(address acc…

Docker一键部署项目,无需登录XShell

文章目录 一键部署项目Docker手动部署SpringBoot项目编写docker部署的脚本文件script.sh 脚本内容 特别注意!编写dockerfiledockerfile 文件内容 上传后端服务的jar包到服务器中执行 script 脚本部署后端服务 自动部署SpringBoot项目引入jsch依赖编写jsch工具类执行…

C# byte[]与Bitmap互转

首先先观察一下本地bmp图像结构(参考: https://blog.csdn.net/qq_37872392/article/details/124710600): 可以看到bmp图像结构除了纯图像像素点位信息,还有一块未用空间(OffSet)。 所以如果需要得到图像所有数据进行转换,则可以使…

MySQL_SQL性能分析

SQL执行频次 语法: SHOW GLOBAL STATUS LIKE COM_类型; COM_insert; 插入次数 com_delete; 删除次数 com_update; 更新次数 com_select; 查询次数 com_______; 注意:通过语法,可以查询到数据库的实际状态,就可以知道数据库是以增删…

macos搭建appium-iOS自动化测试环境

目录 准备工作 安装必需的软件 安装appium 安装XCode 下载WDA工程 配置WDA工程 搭建appiumwda自动化环境 第一步:启动通过xcodebuild命令启动wda服务 分享一下如何在mac电脑上搭建一个完整的appium自动化测试环境 准备工作 前期需要准备的设备和账号&…

【独立版】新零售社区团购电商系统生鲜水果商城兴盛优选十荟团源码

【独立版】新零售社区团购电商系统生鲜水果商城兴盛优选十荟团源码

DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)

前言什么是UNC什么是DNSlog注入DNSlog注入的条件防止DNSlog注入的几个措施 sqli-labs试验 前言 前几天面试的时候,面试官问我知不知道OOB(带外数据)。 当时我蒙了,确实没听说过这个东西,然后面试官告诉我原来dnslog注入…

机器人CPP编程基础-04输入Input

机器人CPP编程基础-03变量类型Variables Types ……AI…… C #include<iostream> // 引入iostream库&#xff0c;这个库包含了对输入/输出进行操作所需的函数和对象 using namespace std; // 使用命名空间std&#xff0c;这样我们就可以直接使用std中的名字&#xff0c…

设定嵌入式linux系统的用户名和密码

遇到一个问题&#xff0c;板子上电后&#xff0c;串口可以正常输入命令行&#xff0c;而且不需要密码&#xff0c;用户名就是root &#xff0c;因为没有设置密码&#xff0c;但是SSH登录时用户名输入root&#xff0c;密码直接敲回车键也就是不输入密码竟然是错误的&#xff0c;…

一文带你入门Nacos:从安装到实例分析

目录 一、安装和配置 1.1 下载安装包 1.2 解压 1.3 端口配置 1.4 启动 1.5 访问 二、服务注册到nacos 2.1 引入依赖 2.2 配置nacos地址 2.3 重启 三、服务分级存储模型 3.1 给user-service配置集群 3.2 同集群优先的负载均衡 1&#xff09;给order-service配…

勘探开发人工智能技术:机器学习(3)

0 提纲 4.1 logistic回归 4.2 支持向量机(SVM) 4.3 PCA 1 logistic回归 用超平面分割正负样本, 考虑所有样本导致的损失. 1.1 线性分类器 logistic 回归是使用超平面将空间分开, 一边是正样本, 另一边是负样本. 因此, 它是一个线性分类器. 如图所示, 若干样本由两个特征描…

竞赛项目 深度学习疲劳驾驶检测 opencv python

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

Python爬虫 爬取图片

在我们日常上网浏览网页的时候&#xff0c;经常会看到一些好看的图片&#xff0c;我们就希望把这些图片保存下载&#xff0c;或者用户用来做桌面壁纸&#xff0c;或者用来做设计的素材。 我们最常规的做法就是通过鼠标右键&#xff0c;选择另存为。但有些图片鼠标右键的时候并没…

竞赛项目 深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …