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:
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
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.
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.