[MITgcm-devel] gentim2d controls - nonperiodic forcing

Jean-Michel Campin jmc at ocean.mit.edu
Fri Feb 7 10:36:48 EST 2014


Hi Dan,

The standard way that MITgcm follows is to assume that 
a record in file is some time-average value and is centered
on the middle of the the time interval which starts and ends
at record-spacing multiple.

This is not what you would like to have:
> t=0 days --> count0 = 1, count1 = 2, fac=1
> t=0.25 days --> count0=1, count1=2, fac=0.75
> t=1 days --> count0=2, count1=3, fac=1
> t=10 days --> count0=10, count1=11, fac=0
where a record in file would be centered on an exact multiple
of the record-spacing.

But regarding this convention, I don't think that we currently treat 
differently periodic and non-periodic time series.

> and to get_periodic_interval to implement the following *only
> when exter_forcing_cycle = 0*, would this impact anyone?
So, I think it would be more confusing to treat non-periodic time-series 
in a different way that we do for periodic time-series.

The way to work around this would be to define a "time-offset"
that you could set to half the record-spacing, a little bit like
what is done in rbcs_fields_load.F:
       locTime = myTime - rbcsForcingOffset
       CALL GET_PERIODIC_INTERVAL(
     O                   intimeP, intime0, intime1, bWght, aWght,
     I                   rbcsForcingCycle, rbcsForcingPeriod,
     I                   deltaTclock, locTime, myThid )

I think that with pkg/cal, you can already provide an offset.

Cheers,
Jean-Michel

On Fri, Feb 07, 2014 at 11:17:39AM +0000, Daniel Goldberg wrote:
> Hi,
> 
> I was wondering if anyone uses the gentim2d control for NON-periodic
> time-dependent cases, and/or whether there are thoughts on the following:
> 
> the S/R ctrl_get_gen_rec uses the S/R get_periodic_interval to determine
> the indices of the time-dependence between which to interpolate, and the
> interpolation weights (called count0, count1, and fac within
> ctrl_get_gen_rec).
> 
> 1) get_periodic_interval has a case for a non-periodic time-record sequence
> (line 100) if externForcingCycle is set to zero -- but ctrl_get_gen_rec
> ensures that this is never called! (i am not using ALLOW_CAL)
> 
> 2) if this is modified to allow get_periodic_interval to be called, this
> returns a given count0, count1, and fac according to the
> get_periodic_interval algorithm in the nonperiodic case. But I am unsure if
> the result is what should be done.
> 
> For example, if the period of gentim2d as set in data.ctrl
> (xx_gentim2d_period) is 1 day, and the simulation is 10 days, an
> appropriate-seeming way to define time-dependent forcing would be to have
> 11 fields, applied at t=0 days, 1 days, 2 days, ... I think currently they
> are defined at 0.5 days, 1.5 days, etc.. and I am unsure how the
> interpolation should be done at t=0.25 days.
> 
> So for example, in the scheme i propose and the above example, count0 could
> take on values from 0 to 10, and count1 from 1 to 11, and at
> 
> t=0 days --> count0 = 1, count1 = 2, fac=1
> t=0.25 days --> count0=1, count1=2, fac=0.75
> t=1 days --> count0=2, count1=3, fac=1
> t=10 days --> count0=10, count1=11, fac=0
> 
> This is not, I believe, the way things are defined now, but I could be
> wrong. Assuming I am not, and changes were made to ctrl_get_gen_rec to
> address (1), and to get_periodic_interval to implement the following *only
> when exter_forcing_cycle = 0*, would this impact anyone?
> 
> Thanks
> Dan
> 
> -- 
> 
> Daniel Goldberg, PhD
> Lecturer in Glaciology
> School of Geosciences, University of Edinburgh
> Geography Building, Drummond Street, Edinburgh EH8 9XP
> 
> 
> em: D <dgoldber at mit.edu>an.Goldberg at ed.ac.uk
> web: http://ocean.mit.edu/~dgoldberg

> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel




More information about the MITgcm-devel mailing list