diff --git a/da/cosmo/obs.py b/da/cosmo/obs.py index cd7376b5d208b068f236c25e5eae62135acdb5ea..5fc01c9fe70016fa3fa8aca598bb208220150e2a 100755 --- a/da/cosmo/obs.py +++ b/da/cosmo/obs.py @@ -374,7 +374,8 @@ class Obs(Observations): name = name.strip().lower() # print 'PAVLE NAME ',name,error, may_localize, may_reject error = float(error) - may_reject = ("TRUE" in may_reject.upper()) + may_reject = ("FALSE" in may_reject.upper()) +# may_reject = ("TRUE" in may_reject.upper()) may_localize = ("TRUE" in may_localize.upper()) site_categories[name] = {'category': name, 'error': error, 'may_localize': may_localize, 'may_reject': may_reject} diff --git a/da/cosmo/observationoperator.py b/da/cosmo/observationoperator.py index 6ef1d87e456fe3df6b0c7feb5d9c8a2b4bf8b2ae..b25cd984724a9a224c69ac0adce796fc2d38fbee 100755 --- a/da/cosmo/observationoperator.py +++ b/da/cosmo/observationoperator.py @@ -119,19 +119,16 @@ class ObservationOperator(object): # for ncfile in ncfilelist: # infile = os.path.join(ncfile + '.nc') - for dt in rrule.rrule(rrule.HOURLY, dtstart=dacycle['time.start'], until=dacycle['time.start']+timedelta(hours=168)): - for ens in range(0,self.forecast_nmembers): - ens = str(ens).zfill(3) - cdo.expr("CO2_GPP_"+ens+"_F=parametermap*CO2_GPP_F -merge /scratch/snx3000/parsenov/projname/input/parameters."+ens+".nc", input = os.path.join(dacycle['da.bio.input'], 'gpp_%s.nc' % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) - cdo.expr("CO2_RESP_"+ens+"_F=parametermap*CO2_RESP_F -merge /scratch/snx3000/parsenov/projname/input/parameters."+ens+".nc", input = os.path.join(dacycle['da.bio.input'], 'ra_%s.nc' % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) - 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.system('python '+dacycle['da.obsoperator.home']+' ctdas '+dacycle['time.start'].strftime('%Y-%m-%d')+' 0 168 -j meteo icbc emissions biofluxes int2lm post_int2lm') - # here comes COSMO - # os.system('python '+cosmo+' ctdas '+self['time.start'].strftime('%Y-%m-%d')+' 0 672 -j cosmo') - # extract_model_data(self.forecast_nmembers) - sys.exit() + #for dt in rrule.rrule(rrule.HOURLY, dtstart=dacycle['time.start'], until=dacycle['time.start']+timedelta(hours=168)): + # for ens in range(0,self.forecast_nmembers): + # 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 = "/scratch/snx3000/parsenov/projname/input/parameters."+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 = "/scratch/snx3000/parsenov/projname/input/parameters."+ens+".nc", output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H'))) +# 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']) +# os.system('python run_chain.py ctdas '+dacycle['time.start'].strftime('%Y-%m-%d')+' 0 168 -j meteo icbc emissions biofluxes int2lm post_int2lm cosmo') + self.extract_model_data(dacycle,self.forecast_nmembers) for i in range(0,self.forecast_nmembers): idx=str(i+1) @@ -168,12 +165,15 @@ class ObservationOperator(object): self.prepare_run() self.run(dacycle) - def extract_model_data(ens): + def extract_model_data(self,dacycle,ens): files2cat=[] - - time_stamp = self['time.sample.stamp'] - cosmo_out = self['da.cosmo_path']+'/'+ens+'/'+time_stamp+'cosmo/output' + self.dacycle = dacycle +# time_stamp = dacycle['time.sample.stamp'] + cosmo_time_stamp = dacycle['time.start']+timedelta(hours=168) + print(cosmo_time_stamp) + sys.exit() + cosmo_out = "/scratch/snx3000/parsenov/ctdas/2013040100_0_168/cosmo" os.chdir(cosmo_out) for time in tools.iter_hours(starttime, hstart, hstop): diff --git a/da/cosmo/statevector.py b/da/cosmo/statevector.py index e1b699ec102319ad71c67234151dbb191d5143a0..2b2674ba2220538c39a3056ab52ffe668ceffb7d 100755 --- a/da/cosmo/statevector.py +++ b/da/cosmo/statevector.py @@ -289,6 +289,7 @@ class StateVector(object): for member in range(1, self.nmembers): rands = np.random.randn(self.nparams) + rands = np.clip(rands,-1,1) newmember = EnsembleMember(member) newmember.param_values = np.dot(C, rands) + newmean