FDTD仿真发散(个人理解翻译)

2024-03-23 14:32

本文主要是介绍FDTD仿真发散(个人理解翻译),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

英文原文地址
非专业翻译,仅供参考。
主要讨论如何修复仿真发散的问题
大多数仿真发射是有auto shut-off引起的。“ERROR: Early termination of simulation, the electromagnetic fields are diverging.”(错误:过早的结束仿真,电磁场发散)。当仿真区域中的值达到指定的阈值时,发仿真散一般被分为两种情况:1.dt的稳定因素。2.PML边界条件问题。
区分这两种情况的方法是:将仿真区域的边界条件全部改为Matel边界条件,再次运行仿真。如果不发生发散,则是PML边界问题;否则为dt稳定的问题。

关于dt稳定问题

在这里插入图片描述

最大的仿真时间是根据mesh网格基于Courant stability准则计算的。默认情况下,软件会使用99%的理论最大仿真时长。最大时间不长是假定于光在均匀或真空介质中传播(homogeneous vacuum大概这么翻译吧)。仿真区域中包含结构或交界面,尤其存在色散材料的时候,仿真时间有时会变得更少。
对于这种发散情形,减小dt stability factor直到仿真稳定。通常情况下,0.95或者0.9就可以让仿真稳定;在其他情况下使用的值一般小于等于0.5。减小仿真步长并不会影响精度以及仿真内存需求,但它会增加仿真时间。dt stability factor从0.99到0.95会增加4%的仿真时间。
照成dt stability facyor不稳定原因:
1.材料未拟合正确,确保材料拟合较好。
2.网格的精细度,长宽比不应过大。尽量长宽比倍数差不要太大,原文中给的例子是5倍。

PML与材料发散

通常,我们应该将结构延伸到仿真区域外,这将给与更高的精度。然而有些色散材料在穿过PML边界的时候会不稳定。此时,材料与边界的交界处就会不稳定。如果你在仿真区域放置一个movie监视器,你可以很容易发现这种情况。
如果你使用的是2015a及之后的版本,你可以使用SPML边界来替换原PML边界以解决这个问题。
使用SCPML的方法:使用以下一种或几种。(我用的是旧版,这里无法验证)
1.alpha setting和PML layers的值进行加大。这种方法一般单独使用来使仿真稳定。
2.增大 alpha,但同时它也会增加边界的反射效果。或者增加PML layers的层数。
3.改变mesh的大小。
4.改变结构,避免材料穿过边界。
使用PML的放大:使用以下一种或几种。
1.减小PML的sigma值。这样会减少边界的吸收效果,但layers的值会自动变大。因此边界的整体效果不变,但会消耗更多的计算机内存。在这里插入图片描述
2.增加kappa。它的默认值是2,。将它加到10甚至20通常就会解决发散问题。它会轻微增加边界的反射效果,但也会减少大角度入射边界的反射。kappa的值大于20时会大幅降低PML的特性,因此最好不要大于20。
3.设置Type of PML to Stabilized ,但它会降低大角度入射时的边界性能。

4.改变结构,避免材料穿过边界。在结构穿过前终止,或者勾选extend structure through the pml 来防止结构穿过。
在这里插入图片描述

这篇关于FDTD仿真发散(个人理解翻译)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838593

相关文章

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快