Working with the Poynting Vector

This page provides some basic information about the Poynting vector.

See also

Integrating the Poynting vector


The Poynting vector is defined as follows. Poynting vector data is generally obtained from frequency domain monitors, with the CW normalization option enabled. In such cases, the steady-state Poynting vector data will have units of Watts/m$^2$.

$$ \mathbf{P}=\mathbf{E}\times \mathbf{H^*}$$

The following code shows how you can manually calculate the z-component of the Poynting vector from the E and H fields. It also compares to the Poynting vector data automatically recorded by the monitor.

 # Get data from monitor
m = "monitor1";
x = getdata(m,"x");
y = getdata(m,"y");
Ex = getdata(m,"Ex");
Ey = getdata(m,"Ey");
Hx = getdata(m,"Hx");
Hy = getdata(m,"Hy");
Pz = getdata(m,"Pz");

# Manually calculate the z component of the Poynting vector
Pz_manual = Ex*conj(Hy)-Ey*conj(Hx);

# Plot and compare Pz calculated manually and by the monitor

Power transmission

The time-averaged power flowing across a surface is given by $$ \text{Power}=\frac{1}{2} \quad {\LARGE \int_{\normalsize Surface}} Re(\mathbf{P})\cdot d\mathbf{s}$$

Note that the propagating power is proportional to the real part of the Poynting vector only, which is related to the conservation of energy for the time-averaged quantities. The factor of 1/2 is related to the time averaging of the CW fields. The imaginary part of the Poynting vector relates to the non-propagating reactive or stored energy, such as one might find in the evanescent tail of light being reflected by total internal reflection (TIR).

As an example, if one simulates a y-propagating source such as a Gaussian bream striking a circular rod in a 2D TM time-domain simulation, then by placing a frequency power or profile monitor on the opposite side of the rod, the normalized transmission, T, as a function of frequency can be calculated with: $$ T(\omega)= \frac{\frac{1}{2}\int Re(P^{\mathit{Monitor}}_y(\omega))dx}{\frac{1}{2}\int Re(P^{\mathit{Source}}_y(\omega))dx}$$

FDTD Solutions/Propagator provide many GUI and scripting functions to make transmission calculations easily at the press of a button or using a single command. The transmission script command will perform this particular calculation. See below for more information on integrating the Poynting vector to get net power measurements.


There can be some confusion about how to interpret complex valued Poynting vector data.

Real part of the Poynting vector

Most people are familiar with the idea that the real part of the Poynting vector gives information about the direction of power flow. For example, integrating the real part of the Poynting vector can give you the power flowing through that surface (that’s what the built in transmission script function does to calculate the amount of power through a monitor).

Imaginary part of the Poynting vector

The imaginary part of the Poynting vector gives you information about evanescent (i.e. non-propagating) fields. If you calculate the Poynting vector for a plane wave, you will find the imaginary part is zero. However, when the Poynting vector is calculated from the fields near complex structures, you will often find a non-zero imaginary part of the Poynting vector. This indicates there are resonant, non-propagating fields at that location. This can be useful information in some situations. For example, it’s best to keep the PML absorbing boundary conditions far enough away from the structures so the evanescent fields are zero near the PML boundaries.

Monitor settings

Frequency monitors

By default, frequency monitors automatically calculate and save Poynting vector data. You can disable this option (for example, to reduce the file size) in the monitor properties - Data to record tab.

Time monitors

By default, time monitor do not record the Poynting vector. You can enable the Poynting vector in the Data to record tab.

Note: Reducing the size of your data files

To reduce the size of simulation files, it can be convenient to setup the frequency monitors to collect fewer field components in the Data to record tab. For example, if you only need to know the net power flow through the monitor, but not the spatial field profiles, it is possible to disable all of the E, H and P field components. In such cases, be sure to enable to ‘output power’ option, which saves the net power through the monitor. When ‘output power’ is the only enabled option, the simulation engine still collects the raw field and Poynting vector data as the simulation runs. At the end of the simulation, it calculates the power flow by integrating the Poynting vector. It then saves the power data, but does not save the raw field and Poynting vector data. This can greatly reduce the size of your data files.

1 Like