# Open Source EM Field FDTD Software
What is new:
Bug fix in PML code.
Version 2 code uploaded: https://github.com/DavidGeUSA/TSS/tree/master/Source%20Code%20V2
For details, see https://github.com/DavidGeUSA/TSS/blob/master/TSS_Linux_Windows.pdf
The purpose of this software is for doing digital experiments on electromagnetic fields, such as simulations, statistics, FFT, 3D/2D drawings, etc. It is not intended to be a software product; rather, it uses open source to provide a framework and tools for you to experiment your own ideas and coding.
For simulating EM fields, a simple plugin system is used to dynamically load following modules: FDTD algorithms, boundary conditions, initial field values, field sources, and total field/scattered field boundary.
By using this plugin system, you can experiment on different ideas and coding of these elements in a field simulation.
For the simulation system, each plugin module is represented by an abstract C++ class. You try your ideas and coding by deriving new classes from these abstract classes.
Sample plugin modules are part of this open source project.
Following FDTD algorithms are implemented as FDTD algorithm plugin modules:
1. Standard Yee FDTD algorithm
2. Space synchronized Yee FDTD algorithm
3. Time-Space-Synchronized FDTD algorithm for homogeneous space
4. Tine-Space-Synchronized FDTD algorithm for inhomogeneous environments
You can review source code of these sample plugin modules to see how you can develop your own plugin modules.
To get a rough idea of what the software does, read a test report at https://github.com/DavidGeUSA/TSS/blob/master/FDTD%20Test%20Results.pdf
To know more about this software, read software specifications at https://github.com/DavidGeUSA/TSS/blob/master/EM%20field%20Software%20Spec.pdf
# Time-Space-Synchronized FDTD Simulation
I am a retired software engineer. I like to play with computer coding. Among the coding I played is Schneider’s teaching book “Understanding the FDTD Method” (https://github.com/john-b-schneider/uFDTD).
One thing I found strange was that the field simulation results provided by an FDTD method could not be used to do calculations such as field energy transfer and field divergence. I did a quick search over the internet and did not find an answer. Since I am just playing with FDTD, not using a grant to do research, I did not bother to do a thorough research but simply came up with my owner solution. My solution is a new algorithm. To my surprise the new algorithm is better than the current FDTD in many major aspects, as explained below.
1. It uses a non-staggered grid to give simulation results in a time and space synchronized manner. Therefore it is called a Time-Space-Synchronized FDTD algorithm (TSS FDTD, or in short, TSS). I believe it is the first algorithm that can do it. Please correct me if I am wrong. This feature is my sole motivation to develop this new algorithm. It makes it possible to calculate field divergence and energy transfer. If your project requires such calculations then my algorithm is a very good option.
2. Its estimation order for time advancement is arbitrary. By “arbitrary” I mean that choosing estimation order does not affect memory usages and calculation algorithm. For example, choosing 4-th order and choosing 40-th order, same memory and programming code is used, just different numbers of iterations is used. I believe it is also the first algorithm that can do it. Increasing estimation order greatly increases simulation accuracy.
3. The higher order of time advancement estimation is realized via getting higher order temporal derivatives from higher order space curls, NOT via time history of fields. I believe this is also the first algorithm doing time advancement estimation in this way. Using time history of fields CANNOT increase estimation accuracy because there is not new information involved. Using higher order space curls for higher order temporal derivatives can greatly enhance estimation accuracy because new information is utilized.
4. Its estimation order for space curl is arbitrary but limited to the number of space grid
5. Its computational complexity with regard to the estimation order is linear. That means increasing a little calculation amount can increase accuracy greatly. Therefore, large step sizes can be used, which in turn reduces greatly the calculation amount. The combined effect is that the TSS algorithm is much faster and much more accurate than a traditional FDTD.
6. A modular design is used for designing a simulation system. It separates field estimation algorithms from applying boundary conditions. Thus, it is very easy to apply different boundary conditions.
7. It does not impose adverse restrictions, limitations, conditions, etc., to its applications comparing to traditional FDTD methods. For example, it can be used for inhomogeneous material just like a traditional FDTD does. That is, given a calculation task, if a traditional FDTD can be used then TSS algorithm can also be used.
Due to very high precision TSS can achieve with higher order estimations, large space steps can be used, which in turn greatly reduces simulation time. Therefore, comparing with standard Yee FDTD, TSS can achieve very high precision in very fast simulation speed.
Test data show that a 6-th order TSS simulation used about 1/6 of Yee FDTD simulation time and produced field data 10^10 times more accurate than field data produced by Yee FDTD. See test reports at https://github.com/DavidGeUSA/TSS/blob/master/FDTD%20Test%20Results.pdf
The test reports contains task files so that you can repeat the tests and verify the test results. The full source code is here at https://github.com/DavidGeUSA/TSS/tree/master/Source%20Code. You can compile it and run the tests shown in the test report.
For details about TSS, see https://github.com/DavidGeUSA/TSS/blob/master/TSS.pdf
You are very welcome to criticize the algorithm, to provide professional guidance, to contribute to the algorithm or to the coding. You can also take its basic ideas and merge it into your own projects, just show your courtesy by presenting a reference to their origin here.
没有合适的资源?快使用搜索试试~ 我知道了~
时空同步FDTD算法_C++_代码_下载
共529个文件
h:163个
cpp:159个
task:42个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 65 浏览量
2022-07-03
14:28:37
上传
评论
收藏 22.03MB ZIP 举报
温馨提示
本软件的目的是对电磁场进行数字化实验,如仿真、统计、FFT、3D/2D绘图等。它不是软件产品;相反,它使用开源来提供框架和工具,供您试验自己的想法和编码。 为了模拟电磁场,一个简单的插件系统用于动态加载以下模块:FDTD 算法、边界条件、初始场值、场源和总场/散射场边界。 通过使用这个插件系统,您可以在现场模拟中试验这些元素的不同想法和编码。对于仿真系统,每个插件模块都由一个抽象的 C++ 类表示。您通过从这些抽象类派生新类来尝试您的想法和编码。 示例插件模块是这个开源项目的一部分。以下 FDTD 算法被实现为 FDTD 算法插件模块: 标准 Yee FDTD 算法 空间同步 Yee FDTD 算法 齐次空间的时空同步FDTD算法 用于非均匀环境的 Tine-Space-Synchronized FDTD 算法 更多详情、使用方法,请下载后阅读README.md文件
资源推荐
资源详情
资源评论
收起资源包目录
时空同步FDTD算法_C++_代码_下载
(529个子文件)
packages.config 221B
repositories.config 118B
app.config 69B
TssTest.cpp 96KB
PmlTss.cpp 92KB
Curl_x.cpp 57KB
Curl_y.cpp 57KB
Curl_z.cpp 57KB
RadiusIndex.cpp 57KB
RadiusIndex.cpp 57KB
CurlOneSymmetryZ.cpp 52KB
CurlOne.cpp 51KB
tasks.cpp 49KB
tasks.cpp 39KB
simConsole.cpp 37KB
Simulator.cpp 35KB
CurlTwo_0.cpp 34KB
simConsole.cpp 29KB
TimeTssBase.cpp 22KB
taskFile.cpp 22KB
MemoryManager.cpp 19KB
FieldSimulation.cpp 16KB
PmlRange.cpp 15KB
Space.cpp 15KB
FieldSimulation.cpp 13KB
fileutil.cpp 13KB
HighYee.cpp 12KB
HighYee.cpp 12KB
MemoryManager.cpp 12KB
TssInSphere.cpp 11KB
TssInSphere.cpp 11KB
GaussianCurl.cpp 10KB
FieldStatistics.cpp 9KB
CurlTwo.cpp 9KB
FourthSpaceOrderTss.cpp 9KB
FourthSpaceOrderTss.cpp 9KB
GaussianTest.cpp 8KB
FieldSourceTss.cpp 8KB
RotateSymmetryField.cpp 8KB
Matrix.cpp 8KB
Matrix.cpp 8KB
AbcFirstOrder.cpp 8KB
FieldStatistics.cpp 8KB
AbcFirstOrder.cpp 8KB
FDTD.cpp 8KB
taskFile.cpp 7KB
TimeTssRotateSymmetryZ.cpp 7KB
HeidlerCurrent.cpp 7KB
DerivativeEstimator.cpp 7KB
DerivativeEstimator.cpp 7KB
FDTD.cpp 7KB
Curl.cpp 7KB
BoundaryTss.cpp 6KB
TimeYee.cpp 6KB
CurlEstimatorAsymmetric.cpp 6KB
CurlEstimatorAsymmetric.cpp 6KB
TimeTss.cpp 6KB
TimeTssMultiThreads.cpp 6KB
HiMatrix.cpp 6KB
YeeFDTDSpaceSynched.cpp 6KB
YeeFDTDSpaceSynched.cpp 6KB
fileutil.cpp 6KB
DivergenceStatistic.cpp 5KB
FieldDivergenceComparer.cpp 5KB
FieldDivergenceComparer.cpp 5KB
CurlXYZ2.cpp 5KB
TimeTss2Threads.cpp 5KB
TssInhomogeneous.cpp 5KB
TssInhomogeneous.cpp 5KB
FieldStatisticsByDivergence.cpp 5KB
FieldStatisticsByDivergence.cpp 5KB
DipoleSourceTss.cpp 4KB
taskClasses.cpp 4KB
CurlXYZ.cpp 4KB
taskClasses.cpp 4KB
TimeTss4th.cpp 4KB
FieldAnalysor.cpp 4KB
PluginInstances.cpp 4KB
RadiusStatistics.cpp 4KB
FieldAnalysor.cpp 4KB
FieldUpdator.cpp 3KB
FieldUpdator.cpp 3KB
FieldSourceEz.cpp 3KB
ArbitraryTimeOrder.cpp 3KB
FdtdMemory.cpp 3KB
RickerSource.cpp 3KB
YeeFDTD.cpp 3KB
YeeFDTD.cpp 3KB
FdtdMemory.cpp 2KB
FieldDataComparer.cpp 2KB
FieldDataComparer.cpp 2KB
FieldSourceEz.cpp 2KB
Gaussian.cpp 2KB
Tss.cpp 2KB
Gaussian.cpp 2KB
Export.cpp 2KB
TotalFieldScatteredFieldBoundary.cpp 2KB
TotalFieldScatteredFieldBoundary.cpp 2KB
RadiusCubic.cpp 2KB
LoopWorkDivider.cpp 2KB
共 529 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
- wenwang1272023-04-05资源很好用,有较大的参考价值,资源不错,支持一下。
- WeiThree2023-11-02资源很赞,希望多一些这类资源。
- heroictyy2023-12-28果断支持这个资源,资源解决了当前遇到的问题,给了新的灵感,感谢分享~
快撑死的鱼
- 粉丝: 1w+
- 资源: 9149
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 的玩具 Python 实现.zip
- RHCE linux下的火墙管理 及下载
- ESP32-C3FH4 : UltraLowPower SoC with RISCV SingleCore CPU Supporting 2.4 GHz WiFi and Bluetooth LE
- 用于解包和反编译由 Python 代码编译的 EXE 的辅助脚本 .zip
- 用于自动执行任务的精选 Python 脚本列表.zip
- 全国IT学科竞赛蓝桥杯的比赛特点及参赛心得
- 用于编码面试审查的算法和数据结构 .zip
- 用于操作 ESC,POS 打印机的 Python 库.zip
- 用于控制“Universal Robots”机器人的 Python 库.zip
- 用于控制 Broadlink RM2,3 (Pro) 遥控器、A1 传感器平台和 SP2,3 智能插头的 Python 模块.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功