Dennis M. Sullivan

Electromagnetic Simulation Using the FDTD Method with Python


Скачать книгу

      Absorbing boundary conditions are necessary to keep outgoing E and H fields from being reflected back into the problem space. Normally, in calculating the E field, we need to know the surrounding H values. This is a fundamental assumption of the FDTD method. At the edge of the problem space we will not have the value of one side. However, we have an advantage because we know that the fields at the edge must be propagating outward. We will use this fact to estimate the value at the end by using the value next to it (5).

      Suppose we are looking for a boundary condition at the end where k = 0. If a wave is going toward a boundary in free space, it is traveling at c0, the speed of light. So, in one time step of the FDTD algorithm, it travels

      This equation shows that it takes two time steps for the field to cross one cell. A commonsense approach tells us that an acceptable boundary condition might be

      (1.12)

      1 The program fd1d_1_2.py has absorbing boundary conditions at both ends. Get this program running and test it to ensure that the boundary conditions completely absorb the pulse.

      In order to simulate a medium with a dielectric constant other than 1, which corresponds to free space, we have to add the relative dielectric constant εr to Maxwell’s equations:

      (1.13a)

      (1.13b)

      We will stay with our one‐dimensional example,

      (1.14a)

      (1.14b)

      (1.15a)

      (1.15b)

      From this we can get the computer equations

      (1.16a)

      (1.16b)

Four graphs of Ex versus FDTD cells displaying intersecting solid and dashed curves with segments for T= 100 and Eps= 4, T=220 and Eps= 4, T=320 and Eps=4, and T=440 and Eps= 4 (top-bottom).

      over those values of k that specify the dielectric material.

      1 The program fd1d_1_3.py simulates a problem containing partly free space and partly dielectric material. Run this program and duplicate the results of Fig. 1.4.

      2 Look at the relative amplitudes of the reflected and transmitted pulses. Are they correct? Check them by calculating the reflection and transmission coefficients (Appendix 1.A).

      3 Still using a dielectric constant of 4, let the transmitted pulse propagate until it hits the far right wall. What happens? What could you do to correct this?

      In the fd1d_1_1.py and fd1d_1_2.py, a source is assigned as values to Ex; this is referred to as a hard source. In fd1d_1_3.py, however, a value is added to Ex at a certain point; this is called a soft source. The reason is that with a hard source, a propagating pulse will see that added value and be reflected because a hard value of Ex looks like a metal wall to FDTD. With the soft source, a propagating pulse will just pass through.

      Until now, we have been using a Gaussian pulse as the source. It is very easy to switch to a sinusoidal source. Just replace the parameter pulse with the following:

equation equation

      The parameter freq_in determines the frequency of the wave. This source is used in the program fd1d_1_4.py. Figure 1.5 shows the same dielectric medium problem with a sinusoidal source. A frequency of 700 MHz is used. Notice that the simulation was stopped before the wave reached the far right side. Remember that we have an absorbing boundary condition, but only for free space.