Static scheduling assigns the iterations of a field loop to threads before they execute. FDTD OpenMP uses the same work-sharing directive for both field phases:
#pragma omp for schedule(static) for (size_t k = 0; k < width - 1; k++) { Hy[k] = Ch1[k] * Hy[k] + Ch2[k] * (Ez[k + 1] - Ez[k]); }
Without a chunk size, each thread receives a contiguous, approximately equal block. Cell updates have similar arithmetic cost, so a dynamic work queue offers little obvious balancing benefit here.
Scheduling selects who updates each destination; it does not establish when the other phase may read it. The implicit barrier at the end of this loop must finish all magnetic updates before the electric loop starts, including reads across thread-block boundaries.
Source: fdtd_ez_kernels.c.