一种用于模拟电晕放电的高效半拉格朗日算法(Matlab代码实现)

news2024/11/17 16:32:27

 目录

摘要

1 概述

2 数学模型与方法

3 讲解

3.1 测试1 

3.2 测试2 

3.3 测试3 

3.4 测试4 

4 Matlab代码实现


摘要

提出了一种无需通量校正的高效电晕放电模拟算法。称为位置-状态分离 (POSS) 方法的算法用于求解电晕放电建模中通常存在的以对流为主的连续性方程。所提出的求解方法结合了用于求解对流加速度、扩散和反应子问题的欧拉方案,以及用于求解线性对流子问题的拉格朗日方案。在不同维度和坐标系中进行了几个经典的数值实验,以证明 POSS 在低计算成本、鲁棒性和高分辨率方面的优异性能。结果表明,该方法在处理带电粒子对流时的时间复杂度随着未知数的增加而线性增加。对于局部电场不会随时间发生强烈变化的电晕放电的模拟,POSS 的时间步长可能比 Courant-Friedrichs-Lewy 时间步长大得多。这些特殊功能使 POSS 在模拟长电极间间隙和长时间模拟的电晕放电方面具有巨大潜力。

1 概述

当电极附近的电场变得大于电离气体所需的阈值电场时,就会发生电晕放电。当电极的特征尺寸远小于电极间距离时,就会出现这种情况,从而产生自持的局部放电 [1]。电晕放电通常有两种不同的模式:在不同配置和施加电压下的均匀辉光电晕放电和灯丝流光放电 [2]。文献中的大多数电晕放电模拟模型都遵循流体动力学近似,其中气体中带电粒子的一组连续性方程与泊松方程一起同时求解。

连续方程评估在对流整体运动、扩散运动和反应项的影响下,气体中带电粒子(电子和离子)的密度 ρ 的变化。在一般形式中,连续性方程表示为:

          

这里 u 是所考虑粒子的速度矢量,D 是扩散系数。术语 f 定义了由于不同过程而产生的源和汇,例如碰撞电离、附着、光电离、复合等。由于两个主要原因,电晕模拟中的连续性方程难以求解。首先,数值时间步长受到电子连续性方程解的限制,因为它们的移动速度比离子快两个数量级以上。其次,当过渡到流光放电时,在模拟过程中会出现 ρ 或 u 的不连续性或陡峭梯度。在这些条件下,数值方法可能会遇到一些缺点,例如人工振荡或过度的数值扩散 [3]。

一般来说,求解连续性方程的数值方法可以根据参考系分为三组:欧拉、拉格朗日和混合欧拉-拉格朗日(也称为半拉格朗日)。现在让我们简要描述一下用于模拟电晕放电的对流主导的连续性方程求解的最常用方法的主要特征。对于大多数欧拉方法,“通量限制”概念通常用于避免在使用高阶空间离散化方案时在不连续性和激波前沿发生虚假振荡。引入这一概念的第一个方法是通量校正传输 (FCT) 方法 [4]-[6]。 FCT 最初是由 Boris 和 Book [4]-[6] 提出的,用于一维均匀网格,后来 Zalesak [7] 和 Morrow 和 Cram [8] 分别提出了它对高维和非均匀网格的扩展.不久之后,引入了有限元 FCT 方法 (FEM-FCT) 来处理不规则结构 [9]、[10]。 FEM-FCT 基于 Zalesak 处理元素贡献的 FCT 程序,后来通过引入各个节点之间的双边质量交换对其进行了修改 [11]。然而,Zalesak 的通量限制策略非常耗时。遵循概念。

总之,一种适用于电晕放电建模的改进数值方法应该能够在发生丝状流光电晕放电时,在存在激波前沿、不连续性或陡峭梯度的情况下提供准确、稳定和非负的解;简单快速,这意味着该算法易于实现且计算成本低,以适应电晕放电的多尺度物理变化;易于在非结构化网格上实现,因为存在电晕放电的几何形状通常是不规则的,例如点对板或导体对板配置;可扩展到高维和其他坐标系,例如在模拟电晕放电时经常使用的柱坐标系;并且对于并行计算处理高维模型中的巨大未知数是可行的。

2 数学模型与方法

电晕放电建模的目标是准确估计任何时间任何粒子的分布。为了实现这一目标,必须计算不稳定粒子流的三个基本要素——时间、位置和状态。在求解连续性方程时,由于密度 ρ 的时间和空间离散化都混合在一个方程中,因此会出现困难。为了规避这一点,POSS 使用将密度 ρ 的位置和状态的瞬态解拆分为两个不同的数值问题的概念,并为每个问题使用最合适的求解方法。

让我们首先考虑具有恒定扩散系数 D 的一维连续性方程。然后,(1)重写为:

           

这里x ∈ [ a, b], a < b 是在空间上用n个节点的欧拉网格(以下称为参考网格)离散化的计算域。通过执行算子拆分 [27],(2) 被分成两个不同的表达式,使得它的解近似为两个独立子问题的顺序解。

2.1 由下式给出的状态子问题

             

它处理由于扩散、对流加速和反应项引起的变量 ρ 的变化。该方程的解在每个时间步为第二个子问题提供了初始条件 ρ∗

2.2 给出的位置子问题

             

它仅通过考虑线性对流来确定变量 ρ 的传输。由于算子拆分与所涉及的维数无关,因此这种方法可以很容易地扩展到 2-D/3-D。重写 (3) 和 (4) :

                  

 其中密度 ρ 定义在属于有界域 ∈ Rd (d = 1, 2, 3) 的空间变量 x 和速度向量中。

3 讲解

部分代码:

%% MAIN
% 这段代码说明了如何POSS(位置-状态分离法)在模拟电晕放电。
% 高效的半拉格朗日算法用于模拟电晕放电:位置-状态分离法。
% 电晕放电模拟的高效半拉格朗日算法:位置-状态分离法。

%%
% 该代码有4个测试案例,如论文中所述。
% TestCase_1: 正方形测试
% 测试案例2:一般平流-扩散问题测试
% 测试案例3:戴维斯测试
% 测试案例4:辉光电晕测试,注意这个测试案例是非常消耗时间。

CaseToBeRun = 2;  %自行切换四种情形
if CaseToBeRun == 1
    run('./TestCase_1/SquareTest.m');
elseif CaseToBeRun ==  2
    run('./TestCase_2/GeneralAdvectionDiffusionTest.m');
elseif CaseToBeRun ==  3
    run('./TestCase_3/DaviesTest.m');
elseif CaseToBeRun ==  4
    run('./TestCase_4/CoronaTest.m');
else
    error('No such test case!');
end


 

3.1 测试1 

%% 正方形测试

%%
clc
clear
close all
tic
x1 = 0;   % 计算区域的左端
x2 = 1;   % 计算区域的右端
ng = 200; % 网格的未知数
xg = linspace(x1,x2,ng)'; % 位置
ug = zeros(ng,1); % 密度
ug(find(xg>=0.1 & xg<=0.2)) = 1; % 初始条件
vg = zeros(ng,1); % 速度
vg = vg+1;
xp = xg;
up = ug;
%
T = 1; % 仿真时间
saveTime = [0.3*T;0.6*T]; % 何时绘制
dt = [2e-2 2e-3 2e-4];    % 时间步长
lineTpye = {'r--','m-.','b:'};
%% 绘制分析解决方案
figure; box on; hold on
plot(xg,ug,'k-','LineWidth',1.2);
for i = 1:length(saveTime)
    ug1 = ug;
    ug1(find(xg >= 0.1 + saveTime(i)*vg & xg <= 0.2 + saveTime(i)*vg)) = 1;
    plot(xg,ug1,'k-','LineWidth',1.2);
end
text(0.11,1.2,'t = 0')
text(0.41,1.2,'t = 0.3')
text(0.71,1.2,'t = 0.6')
xlabel('位置')
ylabel('密度')
%% 运行
for i = 1:length(dt)
    t = 0; xg2 = xg; ug2 = ug;
    saveTime2 = [saveTime;saveTime(end)*2];
    for t=0:dt(i):T
        % 重置网格
        xp = xg2;
        up = ug2;
        % 可视化
        if abs(t - saveTime2(1))<dt(i)/2;
            saveTime2(1)=[];
            plot(xg2,ug2,lineTpye{i},'LineWidth',1.2);
            hold on
            axis([x1 x2 -0.3 1.3])
            drawnow
        end
        % 求解位置方程得到辅助网格( xp )。
        xp = xp+vg*dt(i);
        % 从辅助网格到参考网格的插值( xg2 )
        ug2 = interp1(xp,up,xg2,'linear','extrap'); %线性插值
        %         ug2 = interp1(xp,up,xg2,'spline','extrap'); % 三次插值
        %         ug2 = interp1(xp,up,xg2,'PCHIP','extrap'); %分段三次插值
        % 边界条件
        if i>1
            ug2(1) = 0;
            ug2(end) = 0;
        end
    end
end
toc

3.2 测试2 

3.3 测试3 

3.4 测试4 

4 Matlab代码实现

一种用于模拟电晕放电的高效半拉格朗日算法

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

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

相关文章

Java项目:ssm实验室预约维修管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为超级管理员、管理员、学生三种角色&#xff0c; 超级管理员角色包含以下功能&#xff1a; 通知管理、用户管理、实验室管理、实验室预…

字节跳动抖音本地生活前端招聘

一、认识Typescript (1)Javascript是一种动态类型的弱类型语言 Javascript超集&#xff1a; A.包含与兼容所有JS特性&#xff0c;支持共存 B.支持渐进式引入与升级 (2)TypeScript是一种静态类型的弱类型语言 静态类型的优点&#xff1a; A.可读性增强&#xff1a;基于语法…

Linux内存分配原理

Linux内存分配原理虚拟内存分区Linux内存分配时的maps文件brk()与sbrk()mmap()与munmap()mmap()munmap()内存分配过程更多资讯、知识&#xff0c;微信公众号搜索&#xff1a;“上官宏竹”。 虚拟内存分区 虚拟内存由于用途不同&#xff0c;分类也不尽相同&#xff0c;一般我们…

底层网络知识详解:从二层到三层-第6讲-交换机与VLAN:办公室太复杂,我要回学校

上一次,我们在宿舍里组建了一个本地的局域网LAN,可以愉快地玩游戏了。这是一个非常简单的场景,因为只有一台交换机,电脑数目很少。今天,让我们切换到一个稍微复杂一点的场景,办公室。 拓扑结构是怎么形成的? 我们常见到的办公室大多是一排排的桌子,每个桌子都有网口,…

C++11标准模板(STL)- 算法(std::minmax_element)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 返回范围内的最小元素和最…

非零基础自学Golang 第11章 文件操作 11.2 文件基本操作 11.2.1 文件创建与打开

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.2 文件基本操作11.2.1 文件创建与打开第11章 文件操作 11.2 文件基本操作 在学习文件操作之前&#xff0c;我们先来了解一下Linux下的文件权限。 文件有三种权限&#xff0c;分别为读取、写入和执行&#x…

设计模式2 - 创建型模式

23种设计模式分析与见解开篇、UML、软件设计原则https://blog.csdn.net/lili40342/article/details/128358435创建型模式https://blog.csdn.net/lili40342/article/details/128358392结构型模式https://blog.csdn.net/lili40342/article/details/128358313行为型模式https://bl…

【MATLAB100个实用小技巧】——图形处理(67-75)

文章目录前言系列文章67. 图像的块操作68. 图形的过滤操作69. 图像的频率操作70. 函数变换71. RADON 函数变换72. 图像分析&#xff08;1&#xff09;73. 过滤图像74. 图像的区域处理75. 图像的颜色处置前言 &#x1f30f;MATLAB是一个功能强大的软件&#xff0c;我们可以利用M…

Mycat(3):mycat的安装

1、前言 使用mycat要安装JDK.不会的去看Linux里面的安装JDK的知识点&#xff0c;这是不再做说明 也可以直接使用yum install java-1.7.0-openjdk 因为mycat 基于jdk1.7开发的&#xff0c;所有最好安装jdk1.7的版本 重要说明&#xff1a; Mycat-server-1.6-release 版本发布的版…

手机技巧:苹果手机这8个实用小技巧

今天给大家大家分享苹果手机8个实用小技巧&#xff0c;你都会用吗&#xff1f; 1、快速搜索相机照片 相信大家的相册里的照片应该和我一样不说有几千张&#xff0c;几百张总是有的&#xff0c;有时候想找照片&#xff0c;又不想一张一张找怎么办&#xff1f;很简单&#xff0c…

Docker配置从私有仓库拉取镜像

修改Docker配置文件 修改docker的配置文件daemon.json&#xff0c;如果配置文件不存在则直接创建。 vim /etc/docker/daemon.json文件内容如下&#xff0c;其中insecure-registries属性值“registry.luntek-inc.com”代表私有仓库的地址&#xff0c;你需要将registry.luntek-…

JavaSE13-方法

目录 1.方法的基本用法 1.1.什么是方法 1.2.方法定义语法 1.3.方法调用的执行过程 1.4.实参和形参的关系 1.5.方法的返回值 2.方法重载 2.1.方法重载定义 2.2.代码示例 3.方法递归 3.1.方法递归定义 3.2.方法递归使用条件 3.3.递归与非递归优劣比较 3.4.递归执行…

[附源码]Nodejs计算机毕业设计基于网络C++实验管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

SpringBoot+Vue项目部门人事管理系统的设计与实现

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

Vit 中的 Token 改进版本:Token Mreging: Your Vit But Faster 论文阅读笔记

Vit 中的 Token 改进版本&#xff1a;Token Mreging: Your Vit But Faster 论文阅读笔记一、Abstract二、引言三、相关工作3.1 有效的 Transformer3.2 Token 的减少3.3 Token 的联合四、Token 融合4.1 策略4.2 Token 相似性4.3 双边软匹配4.4 追踪 Token 的尺寸4.5 采用融合操作…

[附源码]计算机毕业设计Python餐馆点餐管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

非零基础自学Golang 第11章 文件操作 11.3 处理JSON文件 11.3.2 解码JSON 11.4 小结

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.3 处理JSON文件11.3.2 解码JSON11.4 小结第11章 文件操作 11.3 处理JSON文件 11.3.2 解码JSON 解码JSON会使用到Unmarshal接口&#xff0c;也就是Marshal的反操作。 func Unmarshal(data []byte, v interf…

30岁零基础没学历学Python怎么样?30岁学习Python晚吗?

30岁零基础没学历学Python怎么样&#xff1f;30岁学习Python晚吗&#xff1f;任何时候开始都不晚。30岁开始学习Python听起来年纪有点大&#xff0c;大家认为编程上了年纪学习编程语言是一个劣势。想在三十岁的时候通过学习Python来谋求一份IT程序员工作&#xff0c;则需要有一…

SQL笔记

SQL笔记 基本概述 数据库&#xff1a;保存有组织的数据的容器&#xff08;通常是一个文件或一组文件&#xff09;。容易混淆&#xff1a;人们通常用数据库这个术语来代表他们使用的数据库软件&#xff0c;这是不正确的&#xff0c;也因此产生了许多混淆。确切地说&#xff0c…

抖音关键词排名优化技巧,手把手教你怎样优化抖音关键词

云南百收科技有限公司 1、标题中出现关键词是关键词排名靠前的基础。 一篇文章中标题中一定要出现你想做的关键词&#xff0c;因为搜索引擎是是匹配标题的&#xff0c;如果你标题中没有关键词&#xff0c;是不会有排名的。而且还有一点&#xff0c;关键词的位置要靠近标题最前面…