[MITgcm-devel] other problem in recent check-in
Dimitris Menemenlis
menemenlis at sbcglobal.net
Tue Jan 29 13:15:42 EST 2008
Martin, exf_getffieldrec.F prior to Saturday's check-in had a problem in
determining interpolation records and corresponding weights when the forcing
field startdate was not start January 1, hour zero. For example, some of the
the NCEP and ECMWF forcing fields that we use start at hour 3 or hour 6. So
during the first 3 to 6 hours of each year, the forcing fields would have been
wrong, not just that they were obtained from the end of the current year instead
of the end of the previous year but also the interpolation weights were wrong so
that we could end up with daytime forcing at night, etc.
Saturday's check-in fixed the above problem but it assumed that each year was
exactly divisible by the forcing field period, which is the case, for example,
if the forcing field period is six hours or one day. Saturday's check-in did
not, however, deal correctly with the special case when forcing field period is
greater than one day, for example, monthly forcing fields with leap years, etc.
Last night's check-in does not change the forcing field records nor does it
change the forcing field weights away from year-end transitions but it does
change the weights that are computed during transition from one year to the next
for forcing field periods greater than one day. So yes last night's check-in is
expected to affect your results if yearlyfields=true and if you are using
monthly forcing fields.
The best way to find out for sure whether exf_getffieldrec.F does what you think
it should do is to run your code with "#define EXF_VERBOSE" in EXF_OPTIONS.h and
with "debuglevel=1" in data and then to look at a few exf_GetFFieldsRec and
MDS_READ_FIELD output diagnostics to make sure that the file reading flags
(first and changed), the forcing files read-in, the record numbers (count0 and
count1), and the interpolation factor (fac) are what you expect them to be.
The test that I ran (manually) is checked in as instructions in
MITgcm/verification/lab_sea/README and also reproduced below:
cd MITgcm/verification/lab_sea/build
\rm *
\cp ../code/* .
sed 's/undef EXF_V/define EXF_V/' \
../../../pkg/exf/EXF_OPTIONS.h > EXF_OPTIONS.h
../../../tools/genmake2
make depend
make -j
cd ../run
\rm *
\cp ../input/* .
\mv v10m.labsea1979 v10m.labsea_1979
\mv u10m.labsea1979 u10m.labsea_1979
\mv flo.labsea1979 flo.labsea_1979
\mv prate.labsea1979 prate.labsea_1979
\mv tair.labsea1979 tair.labsea_1979
\mv fsh.labsea1979 fsh.labsea_1979
\mv qa.labsea1979 qa.labsea_1979
\mv SSS_monthly.labsea1979 SSS_monthly.labsea_1979
\ln -sf v10m.labsea_1979 v10m.labsea_1978
\ln -sf u10m.labsea_1979 u10m.labsea_1978
\ln -sf flo.labsea_1979 flo.labsea_1978
\ln -sf prate.labsea_1979 prate.labsea_1978
\ln -sf tair.labsea_1979 tair.labsea_1978
\ln -sf fsh.labsea_1979 fsh.labsea_1978
\ln -sf qa.labsea_1979 qa.labsea_1978
\ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1978
\ln -sf v10m.labsea_1979 v10m.labsea_1980
\ln -sf u10m.labsea_1979 u10m.labsea_1980
\ln -sf flo.labsea_1979 flo.labsea_1980
\ln -sf prate.labsea_1979 prate.labsea_1980
\ln -sf tair.labsea_1979 tair.labsea_1980
\ln -sf fsh.labsea_1979 fsh.labsea_1980
\ln -sf qa.labsea_1979 qa.labsea_1980
\ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1980
\mv data.exf_YearlyFields data.exf
\mv data_YearlyFields data
sed 's/tics = .TRUE./tics = .FALSE./' ../input/data.pkg > data.pkg
../build/mitgcmuv >& output.txt &
More information about the MITgcm-devel
mailing list