diff --git a/da/cosmo/base_optimizer.py b/da/cosmo/base_optimizer.py
index 595299a35549c440ac48f73621e94445f13f7101..a2788037722267484d60cbbb250b569688dcaac4 100755
--- a/da/cosmo/base_optimizer.py
+++ b/da/cosmo/base_optimizer.py
@@ -50,7 +50,7 @@ class Optimizer(object):
         self.nlag = dims[0]
         self.nmembers = dims[1]
 #        self.nparams = dims[2]
-        self.nparams = 22
+        self.nparams = 23
         self.nobs = dims[3]
         self.create_matrices()
 
diff --git a/da/cosmo/observationoperator.py b/da/cosmo/observationoperator.py
index a29805ddb7bd8442e33ded832f969bfd8e0e43e8..d6f21d4723d5400c4bacc51e7b815897985ad6af 100755
--- a/da/cosmo/observationoperator.py
+++ b/da/cosmo/observationoperator.py
@@ -124,44 +124,42 @@ 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')))
-#            if dthh=='00' or dthh=='03' or dthh=='06' or dthh=='09' or dthh=='12' or dthh=='15' or dthh=='18' or dthh=='21':
- #               cdo.merge(input = os.path.join(dacycle['da.bg.input'], 'ensemble', "ct_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bg.input'], 'ensemble', "ct_%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/"):
-            os.rename("/scratch/snx3000/parsenov/ctdas/"+absolute_start_time+"_"+str(starth+lag*168)+"_"+str(endh+lag*168), "/scratch/snx3000/parsenov/ctdas/non_opt_"+dacycle['time.start'].strftime('%Y%m%d%H')+"_"+str(starth+lag*168)+"_"+str(endh+lag*168))
-
-        os.system('python run_chain.py ctdas '+absolute_start_time+' '+str(starth+lag*168)+' '+str(endh+lag*168)+' -j meteo icbc emissions biofluxes int2lm post_int2lm cosmo')
-        os.chdir(dacycle['dir.da_run'])
-
-        args = [
-            (dacycle, hstart, hstop, self.forecast_nmembers)
-            for dacycle, (hstart, hstop), self.forecast_nmembers
-            in zip(repeat(dacycle),
-                [(starth+168*lag,endh+168*lag-1)],
-                repeat(self.forecast_nmembers))
-        ]
-
-        with Pool(3) as pool:
-            pool.starmap(self.extract_model_data, args)
-
+#        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/"):
+  #          os.rename("/scratch/snx3000/parsenov/ctdas/"+absolute_start_time+"_"+str(starth+lag*168)+"_"+str(endh+lag*168), "/scratch/snx3000/parsenov/ctdas/non_opt_"+dacycle['time.start'].strftime('%Y%m%d%H')+"_"+str(starth+lag*168)+"_"+str(endh+lag*168))
+#
+ #       os.system('python run_chain.py ctdas '+absolute_start_time+' '+str(starth+lag*168)+' '+str(endh+lag*168)+' -j meteo icbc emissions biofluxes int2lm post_int2lm cosmo')
+  #      os.chdir(dacycle['dir.da_run'])
+#
+ #       args = [
+  #          (dacycle, hstart, hstop, self.forecast_nmembers)
+   #         for dacycle, (hstart, hstop), self.forecast_nmembers
+    #        in zip(repeat(dacycle),
+     #           [(starth+168*lag,endh+168*lag-1)],
+      #          repeat(self.forecast_nmembers))
+       # ]
+#
+ #       with Pool(3) as pool:
+  #          pool.starmap(self.extract_model_data, args)
+#
         for i in range(0,self.forecast_nmembers):
             idx = str(i).zfill(3)
             cosmo_file = os.path.join('/store/empa/em05/parsenov/cosmo_data/model_'+idx+'_%s.nc' % dacycle['time.sample.stamp'])
@@ -224,7 +222,7 @@ class ObservationOperator(object):
             for s,ss in enumerate(sites):
                 site_height.main(cosmo_out, str(ens), ss, time_stamp)
 
-            cdo.intlevel("860", input = cosmo_out+"CO2_60lev_"+ens+"_lhw_"+time_stamp+".nc", output = cosmo_out+"/modelled_"+ens+"_lhw_"+time_stamp+".nc")
+            cdo.intlevel("860", input = cosmo_out+"CO2_60lev_"+ens+"_lhw_"+time_stamp+".nc", output = cosmo_out+"modelled_"+ens+"_lhw_"+time_stamp+".nc")
             cdo.intlevel("797", input = cosmo_out+"CO2_60lev_"+ens+"_brm_"+time_stamp+".nc", output = cosmo_out+"modelled_"+ens+"_brm_"+time_stamp+".nc")
             cdo.intlevel("3580", input = cosmo_out+"CO2_60lev_"+ens+"_jfj_"+time_stamp+".nc", output = cosmo_out+"modelled_"+ens+"_jfj_"+time_stamp+".nc")
             cdo.intlevel("1205", input = cosmo_out+"CO2_60lev_"+ens+"_ssl_"+time_stamp+".nc", output = cosmo_out+"modelled_"+ens+"_ssl_"+time_stamp+".nc")
diff --git a/da/cosmo/statevector.py b/da/cosmo/statevector.py
index f472ad345496fd16f0d3f40f758641785a7a5794..230c5d48650966e647b0aa5fa5bbfa696b97be21 100644
--- a/da/cosmo/statevector.py
+++ b/da/cosmo/statevector.py
@@ -292,18 +292,24 @@ class StateVector(object):
 
         # Create members 1:nmembers and add to ensemble_members list
         for member in range(1, self.nmembers):
-            rands = np.random.uniform(low=-1., high=1., size=self.nparams-1)
-            rands_bg = np.random.uniform(low=-0.05, high=0.05, size=1)
-#            if (member==1):
- #               rands = np.array([1.836451,1.91572,1.719371,1.947495,1.788597,1.109507,0.9401712,2,0.003201536,1.2276,0])-1.
-  #          elif (member==2):
-   #             rands = np.array([2,0.04773442,1.809479,1.136452,2,0.8753765,1.488298,2,1.908293,0.02784704,0])-1.
-    #        elif (member==3):
-     #           rands = np.array([0.9136019,1.386204,2,0.1250395,1.815127,2,0.3002012,1.666945,0,0,0])-1.
-
+#            rands = np.random.uniform(low=-1., high=1., size=self.nparams-1)
+ #           rands_bg = np.random.uniform(low=-0.05, high=0.05, size=1)
+            if member==1 and lag==0:
+                rands = np.array([0.9251788, 0.9034393, 0.336998, 0.9244774, -0.05096465, 1.039527, 0.8610526, -0.6545241, -0.151757, 0.6358872, -1, 0.4625102, 0.1186881, 0.6585811, 1.080793, 0.7087865, 0.1603414, 0.7908162, 0.9887264, -0.5482104, 0.8389163, -1, 0.02753718 ])
+            elif member==2 and lag==0:
+                rands = np.array([0.6557752, -0.1970569, 0.04818814, -0.688437, -0.7006997, -0.1784677, 0.2049817, 0.2842229, -0.656664, -0.4288206, -1, -0.4610326, 0.7538341, -0.4886873, -0.715229, 0.3835333, -0.8013363, 0.1057041, 0.4560323, 0.4176753, -0.2784889, -1, -0.04719913])
+            elif member==3 and lag==0:
+                rands = np.array([0.01135811, -0.01033817, 0.8016006, 0.2941527, -0.3657097, 0.1622472, -0.14451, -0.9826015, -0.3264703, 0.5378729, -1, 0.936269, 0.2612394, 0.8938854, 0.3610448, 1.104215, -0.1021504, 0.2102389, 0.803875, -0.4403061, -0.8015866, -1, -0.04969293])
+
+            if member==1 and lag==1:
+                rands = np.array([0.5848618, -0.263966, -0.8484242, -0.4811731, 0.008701986, -0.5143792, 0.196903, 0.9151311, -0.3057676, 1.025769, -1, 0.6145338, -0.109208, 0.9366637, -0.3343047, -0.5159711, -0.7831933, -0.114835, -0.1131854, -0.9170142, 0.01517715, -1, 0.04161017])
+            if member==2 and lag==1:
+                rands = np.array([0.2462473, -0.4267351, -0.7604715, 0.3000261, 0.690653, 0.5368793, 0.617731, 0.1198399, -0.5313886, 0.1087431, -1, 0.6121695, -0.02330998, -0.03271778, 0.2461925, -0.00954848, 0.1422206, -0.3688108, -0.357688, -0.474921, -0.8561779, -1, 0.02497981])
+            if member==3 and lag==1:
+                rands = np.array([0.6437422, -0.6527606, 0.4303354, 0.5737818, 0.4010006, 0.8635789, -0.6543487, 0.4480304, 0.4105155, 0.7875805, -1, -0.7137064, 0.1760372, 0.7394882, -0.4832366, 0.6765335, 0.4377979, -0.09937549, -0.75212, -0.9841197, 0.0008806029, -1, 0.02755764])
             newmember = EnsembleMember(member)
-#            newmember.param_values = np.concatenate([np.dot(C, rands[0:self.nparams/2]),np.dot(C, rands[self.nparams/2:self.nparams])]) + newmean
-            newmember.param_values = (np.hstack((np.dot(C, rands[0:11]),np.dot(C, rands[11:22]), rands_bg)) + newmean).ravel()
+ #           newmember.param_values = (np.hstack((np.dot(C, rands[0:11]),np.dot(C, rands[11:22]), rands_bg)) + newmean).ravel()
+            newmember.param_values = rands+1.
             newmember.param_values[10] = 0.
             newmember.param_values[21] = 0.
             newmember.param_values[newmember.param_values<0.] = 0.