The serial CPU solver is [[EM.Cube]]'s basic FDTD kernel that run the time marching loop on a single central processing unit (CPU) of your computer. The default option is the multi-core CPU solver. This is a highly parallelized version of the FDTD kernel based on the Open-MP framework. It takes full advantage of a multi-core, multi-CPU architecture, if your computer does have one. The GPU solver is a hardware-accelerated FDTD kernel optimized for CUDA-enabled graphical processing unit (GPU) cards. If your computer has a fast NVIDIA GPU card with enough onboard RAM, the GPU kernel can speed up your FDTD simulations up to 50 times or more over the single CPU solver.
For structures excited with a plane wave source, there are two standard FDTD formulations: '''Scattered Field '''(SF) formulation and '''Total Field - Scattered Field''' (TF-SF) formulation. [[EM.Tempo]] offers both formulations. The TF-SF solver is the default choice and is typically much faster than the SF solver for most problems. In two cases, when the structure has periodic boundary conditions or infinite CPML boundary conditions (zero domain offsets), only the SF solver is available.  === Excitation Waveform & Frequency Domain Computations === When an FDTD simulation starts, your project's source starts pumping energy into the computational domain at t > 0. [[Maxwell's Equations|Maxwell's equations]] are solved in all cells at every time step until the solution converges, or the maximum number of time steps is reached. A physical source has a zero value at t = 0, but it rises from zero at t > 0 according to a specified waveform. [[EM.Tempo]] currently offers four types of temporal waveform: # Sinusoidal# Gaussian Pulse# Modulated Gaussian Pulse# Arbitrary User-Defined Function A sinusoidal waveform is single-tone and periodic. Its spectrum is concentrated around a single frequency, which is equal to your project's center frequency. A Gaussian pulse decays exponentially as t → ∞, but it has a lowpass frequency spectrum which is concentrated around f = 0. A modulated Gaussian pulse decays exponentially as t → ∞, and it has a bandpass frequency spectrum concentrated around your project's center frequency. For most practical problems, a modulated Gaussian pulse waveform with EM.Tempo's default [[parameters]] provides an adequate performance.  If you use a Gaussian pulse or a modulated Gaussian pulse waveform to drive your FDTD source, after a certain number of time steps, the total energy of the computational domain drops to very negligible levels. At the point, you can consider your solution to have converged. If you drive your FDTD source by a sinusoidal waveform, the total energy of the computational domain will oscillate indefinitely, and you have to force the time loop to terminate after a certain number of time steps assuming a steady state have been reached. The accuracy of the FDTD simulation results depends on the right choice of temporal waveform. [[EM.Cube]]'s default waveform choice is a modulated Gaussian pulse. At the end of an FDTD simulation, the time domain field data are transformed into the frequency domain at your specified frequency or bandwidth to produce the desired observables.  In addition to the default waveforms, [[EM.Cube]] allows the ability to define custom waveforms by either time or frequency specifications on a per source basis. [[Image:MORE.png|40px]] Click here to learn more about EM.Tempo's '''[[Waveforms and Discrete Fourier Transforms]]'''.
== Working with FDTD Simulation Data ==