We did two CMAQ one-day simulations, with identical input files except CTM_MAXSYNC and CTM_ADV_CFL settings.
Run1: set CTM_MAXSYNC to 720 and CTM_ADV_CFL to 0.75
Run2: set CTM_MAXSYNC to 300 and CTM_ADV_CFL to 0.95
We were surprised by the predicted ozone differences. There are up to 3 ppb for hourly ozone and up to 1 ppb for daily max ozone. Attached gif plots are Run1 minus Run2
Our questions are, can we say a run with shorter maxsync value is more accurate than a run with longer maxsync value. Or a run with smaller max adv_cfl value is more accurate?
Actually, as a mathematician I am much happier about runs with Courant number less than 1/SQRT(2) ~ 0.7 — after all, horizontal advection is a two-dimensional process relating to winds with magnitude SQRT(U^2+V^2)
And then there’s the coupling with other physical processes (also affected by the coupling time-step)…
Thank you for your question. I am posting a response on behalf of Rohit Mathur:
The CFL criteria ensures numerical stability of the advection scheme, i.e., CFL (ratio of distance moved to the grid size distance) < 1 ensures that a distribution is not translated over a distance greater than the grid size over a time step. Thus, given the wind speed, grid resolution and a CFL value an advection time step is computed. The smaller the specified CFL, the smaller the computed estimated time step and consequently greater numerical accuracy and higher computational cost. The numerical accuracy asymptotes to order of the integration scheme as Detla T and Delta X are reduced , so that at some point the gains in accuracy do not outweigh the increase in computational burden (and in most cases dwarfed by uncertainties in other model components). In my experience, CFL values have ranged between 0.75-0.9 and one could get differences in instantaneous O3 like Winston shows, simply because different amounts of the air mass will be transported across grid cells. The acceptable magnitude of this difference would depend on the application, but I would curious to know what this is in a relative sense to the simulated instantaneous O3 as well as changes in 8-hr O3 and DM8O3.
The SYNC step determines how often the individual process integrations in our time (or operator) splitting approach are “sync’d”. Ideally, the process with the largest characteristic time-scale (or slowest evolving) would be integrated first and then the solution for that would be intermediate initial state for the next slowest process and so forth. This construct worked well in the early days when the grid resolutions were coarse and emission data not well spatially resolved. Currently (and somewhat heuristically in my view) we first solve VDIFF (to bring in the emission forcing), then other transport and then chemistry. In any event, one can see that the time-step at which the processes are synced would change the numerical outcome and these changes would be more apparent in the instantaneous values. Again, from a strictly numerical perspective, one could argue that the smaller the sync step (possibly smaller individual process time steps), the higher the accuracy of the overall time-splitting integration scheme.
Depending on the domain, conditions, grid size, it is possible that reducing MAXSYNC also reduces the advection time step, but I would think those cases would be rare unless MAXSYNC is reduced significantly for a problem with large grid spacing.
So yes from a strict numerical perspective reducing both CTM_ADV_CFL and CMAQ CTM_MAXSYNC will yield more accurate numerical solutions for advection and the overall governing equation since both reduce the integration time-step. However, the bigger question is do these changes translate to changes in the inferences one is drawing from the model, either in terms of estimated changes in predicted values or how they compare with observations, the relevance of the change relative to other uncertainties in the system, and the gains relative to the computational cost.
CTM_ADV_CFL is (at least theoretically) independent of grid size.
The synchronization time step certainly depends on grid size. The code uses an algorithm to determine a synchronization time step that evenly divides the output time step and does not violate the Courant condition. CTM_MAXSYNC is an additional constraint, an absolute maximum synchronization time step for the model, in seconds.
If the algorithm that determines the proper synchronization time step works correctly, there should be no need to use CTM_MAXSYNC. However, we typically do set CTM_MAXSYNC. Commonly used values are 300 (5 minutes) for a 12-km simulation and 720 (12 minutes) for a 36-km simulation.