diff --git a/ENDA.py b/ENDA.py index 6852981adf2ded9a9840d38ef32bbb53f088d7bf..1b07e81196ecd65c18af87816f11dcc0d5a4485a 100644 --- a/ENDA.py +++ b/ENDA.py @@ -136,7 +136,7 @@ def eakf(xb,o,var_o,xcoord,ocoord,dist,\ # Store innovation wrt to ensemble mean if return_covariances_increments_and_innovations: - innovations_mean[i] = o[i]-yp[i].mean() + innovations_mean[i] = o[i]-yp[i,:].mean() # Determine analysis increments in observation space # weight_p is a scalar @@ -295,12 +295,12 @@ class cycle: backgrounds = np.zeros((ncycles,state_vector_length,nens)) + np.nan analyses = np.zeros((ncycles,state_vector_length,nens)) + np.nan model_equivalents = np.zeros((ncycles,nobs,nens)) + np.nan - if cbl_settings['do_parameter_estimation'] and cbl_settings['return_covariances_increments_and_innovations']: - increments = np.zeros((ncycles,nobs,npar)) + np.nan + if cbl_settings['return_covariances_increments_and_innovations']: cov_py = np.zeros((ncycles,nobs,npar)) + np.nan cov_pp = np.zeros((ncycles,nobs,npar)) + np.nan cov_yy = np.zeros((ncycles,nobs)) + np.nan innov = np.zeros((ncycles,nobs)) + np.nan + increments = np.zeros((ncycles,nobs,npar)) + np.nan # Turn inflation coefficients into an array inflation_coefficients_rtps = np.ones(state_vector_length)*inflation_rtps_alpha @@ -473,7 +473,7 @@ class cycle: self.zt = nr.zt self.nens = nens self.initial_perturbed_parameters = model.initial_perturbed_parameters - if cbl_settings['do_parameter_estimation'] and cbl_settings['return_covariances_increments_and_innovations']: + if cbl_settings['return_covariances_increments_and_innovations']: self.cov_py = cov_py self.cov_pp = cov_pp self.cov_yy = cov_yy @@ -505,13 +505,15 @@ class experiment: self.truths = deepcopy(exp.truths) self.observations = deepcopy(exp.observations) self.obs_coordinates = deepcopy(exp.obs_coordinates) + self.obs_error_sdev_generate = np.ones(self.nobs)*self.obs_error_sdev_generate + self.obs_error_sdev_assimilate = np.ones(self.nobs)*self.obs_error_sdev_assimilate if not self.do_parameter_estimation: self.nr.do_parameter_estimation = False # Get CBL settings from file - assert os.path.isfile(self.cbl_settings_file),\ - f'CBL settings file {self.cbl_settings_file} does not exist' - with open(self.cbl_settings_file, 'r') as fp: + assert os.path.isfile(self.path+self.cbl_settings_file),\ + f'CBL settings file {self.path+self.cbl_settings_file} does not exist' + with open(self.path+self.cbl_settings_file, 'r') as fp: self.cbl_settings = dict(json.load(fp)) # Propagate parameter estimation settings to CBL model