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

Cycling dates in chem_surfvals_nl fails when data is yearly

raeder

Member
I'm running a standard CAM, but trying to use cyclical dates for the chemistry:
&chem_surfvals_nl
 flbc_type              = 'CYCLICAL'
 flbc_cycle_yr          = 2014
 flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_1750-2015_CMIP6_GlobAnnAvg_c180926.nc'
 
There are 266 dates (yearly) in that file.
The last is 20150702.
It fails in mo_flbc.F90 because it finds the first year (2014)
then searches for the next date which has a different year,
but then subtracts 1 from that index (~ line 297),
which yields the index of the first date.The indices need to differ by at least 2,
so it seems to be assuming that, after the first date,
there will be multiple dates with the same year.
Is that necessary for the rest of the interpolation(?)
algorithm?

Even if it didn't subtract 1, it would still fail in my case.

    case( 'CYCLICAL' )
       yr = flbc_timing%cycle_yr
       do n = 1,ntimes
          if( yr == dates(n)/10000 ) then
             exit
          end if
       end do
       tim_ndx(1) = n

       do n = tim_ndx(1),ntimes
          if( yr /= dates(n)/10000 ) then
             exit
          end if
       end do
       tim_ndx(2) = n - 1
       if( (tim_ndx(2) - tim_ndx(1)) < 2 ) then
          write(iulog,*) 'flbc_inti: cyclical lb conds require at least two time points'
          write(iulog,*) '   tim_ndx = ',tim_ndx(1),tim_ndx(2),' dates = ',dates(n-1),dates(n),' ntimes = ',ntimes
          call endrun
       end if

1:    tim_ndx =          265         265  dates =     20140702  20150702    ntimes =          266If yearly data is not usable, there should be a note in the namelist html page about that.Thanks for any insight.Kevin
 

raeder

Member
I 'fixed' the problem by changing       tim_ndx(2) = n - 1
       if( (tim_ndx(2) - tim_ndx(1)) < 2 ) then
to       tim_ndx(2) = n
       if( (tim_ndx(2) - tim_ndx(1)) < 1 ) then

CAM ran, but I didn't analyse the output to see whether this degrades any physics.Then I searched through the files in  /glade/p/cesmdata/cseg/inputdata/atm/waccm/lbI found that LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nchas monthly data and the right variables.   It also enables CAM to run in CYCLICAL mode.So I'll use this instead of the code fix.I consider this issue resolved (if not perfectly fixed).
 
Top