fdtd non-uniform
from non-uniform grids or whether someone has experience with any of the methods below.
There are three simple methods I am aware of which can be used to reduce the (non-physical)
reflection caused by changing cell sizes in a non-uniform grid.
1) Change the cell size gradually. 1.5 Taflove or 1.2 the Yu,Mittra book below have been
suggested as maximal ratios between consecutive cells.
2) When updating the H-field (e.g Hx) replace the edge length in the corresponding
direction by a weighted average of three consecutive cells (suggested in the parallel FDTD
book by Yu, Mittra et al)
3) When updating the E-field between two cells of different sizes replace the difference
approximation of the H-derivative by the average of two such approximations. This works
for grids where the ratio between consecutive cells satisfies some mild condition (from
the paper "The complementary derivatives method : A second-order accurate interpolation
scheme for non-uniform grid in FDTD simulation" by Kermani & Ramahi)
I have made bad experiences with 1 for very long models (I wasted some time looking
for a bug in the ABC until I noticed that the non-uniform grid was to blame.) I am about
to test 2 and 3 now.
I am particular interested if somebody has some experience with 2 and 3 in non-homogeneous
regions, I expect 3) to work well if the region in which the grid size is changing is homogeneous
Thanks (for reading until the end)
I've only played some with nonuniform grids, but do not recall having a problem. I suspect that is because I did not change the grid spacing abruptly enough to cause a serious problem. When you work through, please report to the group your experience.
Thanks!
-Tip
I actually did change the gridsize very slowly from 2 to 20 micrometers in over 50 steps.
The model consisted of several long parallel wires. I have not had time yet to check to
what degree the spacing between the wires influenced the results but the main point was
that larger uniform grids gave more accurate S-parameters.
If I get some concrete results I will post them but I fear the result may turn out to be of the
type: "for this model this method seems best but I do not know why"
It is interesting you say that you get more accurate s-parameter calculations with a sparser grid. I am wondering if your update equations are formulated correctly, but I will assume they are. Have you tried the brute force approach of using a uniform grid, but making it fine everywhere? Do you still get more error with the finer grid? Is your device highly resonant? If so, perhaps you are not iterating long enough or perhaps a frequency-domain approach would be better suited.
I've recently been playing with moment methods for modeling thin wire structures and I am running into a similar problem. Finer grids give me poorer results which makes me not trust anything and makes me suspicious I have something wrong in my formulation.
-Tip
I did check the code when I ran the simulation but I will do so again.
Arguments against a bug are:
a) this is quite stable code which has been used for many simulations so far (checked against
various results from commercial software (FDTD & MOM))
b) the uniform grid simulation was done with the same code chosing a non-uniform grid which
just happened to be uniform.
Arguments for a bug are:
a) in more than half of the cases where I was sure that the problems were intrinsic I found
a bug after a while
b) the error was bigger than I believe it ought to be.
I will look for some published results using non-uniform grids and run them with my code.
Yes for equal running time the uniform results were consistently better (= closer to the MOM result).
I don't think so. Mostly a bunch of parallel very long thin wires
This is possible. It was simple enough to expect better (faster) results from MOM.
Good luck. I hope you find the cause. MOM is on my TODO list for quite a while now but
I haven't found the time to study it seriously yet.
I am bouncing between FDTD and MOM to simulate impedance loaded dipole antennas. This is just a simple modification of the code for a standard dipole. If this code is of interest, I'd be happy to share it...keeping in mind there may be a bug!
Have you looked at 4NEC2? It is freeware for windows with a nice GUI. I am actually considering trying to figure out a way to call it from MATLAB.
-Tip
I will have a look. If it works using wine I should be fine. I am probably one of the few people here who has never touched Matlab. I am only using python and C (or C++) and occasionally Fortran for my numerical programs.
I am interested in your code but would probably not have time to look at it carefully until February or March.