diff --git a/da/cosmo/observationoperator.py b/da/cosmo/observationoperator.py index 16d5cc9a9f6ebc65b93a2ec7f383c9ffe5a16a28..4531b4fd466dea2da0403c21188cc9dc714a9402 100755 --- a/da/cosmo/observationoperator.py +++ b/da/cosmo/observationoperator.py @@ -58,7 +58,7 @@ class ObservationOperator(object): def run(self,lag,dacycle,statevector): members = statevector.ensemble_members[lag] - absolute_start_time = str((to_datetime(dacycle['abs.time.start'])).strftime('%Y-%m-%d')) + absolute_start_time = str((to_datetime(dacycle['abs.time.start'])).strftime('%Y%m%d%H')) starth = abs((to_datetime(dacycle['abs.time.start'])-dacycle['time.start']).days)*24 endh = abs((to_datetime(dacycle['abs.time.start'])-dacycle['time.finish']).days)*24 @@ -124,23 +124,23 @@ class ObservationOperator(object): # UNCOMMENT FROM HERE - co2_bg = np.empty(self.forecast_nmembers) - - for dt in rrule.rrule(rrule.HOURLY, dtstart=dacycle['time.start']+timedelta(hours=24*lag*int(dacycle['time.cycle'])), until=dacycle['time.start']+timedelta(hours=(lag+1)*24*int(dacycle['time.cycle']))): - logging.info('Multiplying emissions with parameters for lag %d, date %s' % (lag, dt.strftime('%Y%m%d%H'))) - for ens in range(0,self.forecast_nmembers): - dthh = dt.strftime('%H') - co2_bg[ens] = members[ens].param_values[-1] - ens = str(ens).zfill(3) - cdo.setunit("'kg m-2 s-1' -expr,GPP_"+ens+"_F=CO2_GPP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'gpp_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['restartmap.dir'],"parameters_gpp_lag"+str(lag)+"."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) - cdo.setunit("'kg m-2 s-1' -expr,RESP_"+ens+"_F=CO2_RESP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'ra_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['restartmap.dir'],"parameters_resp_lag"+str(lag)+"."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) - logging.info('Background CO2 params are (%s)' % co2_bg) - if dthh=='00': - ct(dt.strftime('%Y%m%d'), co2_bg) - - cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_%s.nc" % dt.strftime('%Y%m%d%H'))) - cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_%s.nc" % dt.strftime('%Y%m%d%H'))) - +# co2_bg = np.empty(self.forecast_nmembers) +# + # for dt in rrule.rrule(rrule.HOURLY, dtstart=dacycle['time.start']+timedelta(hours=24*lag*int(dacycle['time.cycle'])), until=dacycle['time.start']+timedelta(hours=(lag+1)*24*int(dacycle['time.cycle']))): + # logging.info('Multiplying emissions with parameters for lag %d, date %s' % (lag, dt.strftime('%Y%m%d%H'))) + # for ens in range(0,self.forecast_nmembers): + # dthh = dt.strftime('%H') + # co2_bg[ens] = members[ens].param_values[-1] + # ens = str(ens).zfill(3) + # cdo.setunit("'kg m-2 s-1' -expr,GPP_"+ens+"_F=CO2_GPP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'gpp_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['restartmap.dir'],"parameters_gpp_lag"+str(lag)+"."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) + # cdo.setunit("'kg m-2 s-1' -expr,RESP_"+ens+"_F=CO2_RESP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'ra_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['restartmap.dir'],"parameters_resp_lag"+str(lag)+"."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) + # logging.info('Background CO2 params are (%s)' % co2_bg) + # if dthh=='00': + # ct(dt.strftime('%Y%m%d'), co2_bg) +# + # cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_%s.nc" % dt.strftime('%Y%m%d%H'))) + # cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_%s.nc" % dt.strftime('%Y%m%d%H'))) +# os.chdir(dacycle['da.obsoperator.home']) if os.path.exists("/scratch/snx3000/parsenov/ctdas/"+absolute_start_time+"_"+str(starth+lag*168)+"_"+str(endh+lag*168)+"/cosmo/output/"): diff --git a/template.rc b/template.rc index 759dab909910035f06ec078caabd2e4efa7df130..9567180895c9063881be051d47d72a884732283a 100644 --- a/template.rc +++ b/template.rc @@ -29,19 +29,19 @@ ! The time for which to start and end the data assimilation experiment in format YYYY-MM-DD HH:MM:SS ! the following 3 lines are for initial start -time.start : 2013-04-01 00:00:00 -time.finish : 2013-04-07 23:00:00 -time.end : 2013-04-07 23:00:00 +!time.start : 2013-04-01 00:00:00 +!time.finish : 2013-04-07 23:00:00 +!time.end : 2013-04-07 23:00:00 -!time.start : 2013-04-08 00:00:00 -!time.finish : 2013-04-14 23:00:00 -!time.end : 2013-04-14 23:00:00 +time.start : 2013-04-08 00:00:00 +time.finish : 2013-04-14 23:00:00 +time.end : 2013-04-14 23:00:00 abs.time.start : 2013-04-01 00:00:00 ! Whether to restart the CTDAS system from a previous cycle, or to start the sequence fresh. Valid entries are T/F/True/False/TRUE/FALSE -time.restart : F +time.restart : T da.restart.tstamp : 2013-04-01 00:00:00 ! The length of a cycle is given in days, such that the integer 7 denotes the typically used weekly cycle. Valid entries are integers > 1