This page provides an example simulation that demonstrates how to do time reversal. This idea is most easily understood by viewing the videos below.
The associated files can be used to reproduce the following results. The script shows the basic approach required to run a reversed time simulation.
First, the script runs a normal simulation (i.e. forward in time). A single focused beam source injects a pulse in the -Z direction. The majority of the fields are transmitted into the substrate. A smaller fraction of the fields are reflected back in the +Z direction.
When the simulation completes, the script gets the field data from monitors R and T. The fields are manipulated (eg. factors of -1, complex conjugate operations, etc) as required for the time reversal. Finally, the 'reversed' field profiles are exported to '.fld' files that can be loaded into the Import source.
Next, the script disables the original beam source and enables two import sources that are located at the same position as the R and T monitors in the first simulation. It imports the 'reversed' fields from the monitors into these sources, then runs the simulation.
As the second video shows, the sources inject the reflected and transmitted fields. These fields combine at the interface, to recreate the original beam used in the first simulation.