Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

CAM3 failure to time interpolate aerosol data

boyle5@llnl_gov

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.
Jim
 

aconley

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.

Andrew
 

boyle5@llnl_gov

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.

--Jim
 

aconley

New Member
Jim,

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.

Thanks,

Andrew
 
Top