Welcome to the new DiscussCESM forum!
We are still working on the website migration, so you may experience downtime during this process.

Existing users, please reset your password before logging in here: https://xenforo.cgd.ucar.edu/cesm/index.php?lost-password/

CAM3 failure to time interpolate aerosol data


New Member
When running the cam3 from 15 sep 1999, it fails at 16 Dec 12Z. It reports the errror:
Offset 0x0000018c in procedure __abortutils_MOD_endrun, near line 44 in file /scratch/scratchdirs/u14201/cam30/cam1/models/atm/cam/src/control/abortutils.F90
Offset 0x00000184 in procedure __prescribed_aerosols_MOD_aerint, near line 1290 in file /scratch/scratchdirs/u14201/cam30/cam1/models/atm/cam/src/physics/cam1/prescribed_aerosols.F90

line1290 in the routine 'prescribed_aerosols.F90' is the logic whereby the model is trying to find the bounding months to perform the time interpolation. At 16 Dec 12z evidently it flips from the bounding months: Nov(month=11) - Dec( month=12) to: Dec( month=12) - Jan(month=1). The cycle logic fails.

I am running at T42, the cam3 T42 aerosol data set has the 'time' variable (12 values) all set to missing, but the model probably does not use these values or else it would have failed earlier.

The model has been run (at NCAR) through many Decembers, so I am at a loss as to what is going on?

A difference is that I am running the model in forecast mode, so I am starting the model at the cyclic crossover rather than running through this point in a continuous fashion. Using CAM2 I could run with cyclic SSTs without a problem. I will go look at the code for the SSTs and see how it differs from the aerosol.

Thanks for any help.


New Member
Which version of the code are you running? (ie., which tag?)

You are correct that the "time" variable = "missing" is irrelevant.

Which machine (architecture) are you running on?

I would not be surprised if there is a bug in this part of the code on this particular case since we modified the code to use the same method as other sections of code. Perhaps, starting on this boundary is problematic.



New Member
I am running the intitial distribution of CAM3.0 ( 23 Jun) on the NERSC IBM SP (seaborg).

The problem appears to be in line 1282 of the routine prescribed_aerosols.F90:
if (caldayloc > cdayp .and. .not. (mo_nxt == 1 .and. caldayloc > cdaym)) then

this is not correct if caldayloc is EXACTLY cdaym. In the normal course of affairs with the time step being 20 min (T42), the model days not exactly match the predetermined boundaries of the aerosol monthly data(cdaym, cdayp). In my case I was starting from 16Dec 12 Z exactly, so the error manifested itself. I think changing the above line to:
if (caldayloc > cdayp .and. .not. (mo_nxt == 1 .and. caldayloc >= cdaym)) then

addresses the problem.
This will be a rare situation, but if you can verify the above fix it would probably be good to put it in the release. It cost me a bit of time.



New Member

I read the code the same way you do. Thanks for discovering and even figuring out the problem. I just talked with our programmers and it appears that it will probably be a couple of month till our next release. In the meantime, please include the change that you suggested.