aerrmean = aerrmean + aerr analerr.append(aerr.mean()); analsprd.append(asprd.mean()) if verbose: print nassim,timetruth[nassim],np.sqrt(ferr.mean()),np.sqrt(fsprd.mean()),np.sqrt(aerr.mean()),np.sqrt(asprd.mean()) if covinflate2 > 0: # Hodyss and Campbell inflation. inc = xmean - xmean_b inf_fact = np.sqrt(covinflate1 + \ (asprd/fsprd**2)*((fsprd/ensemble.members) + covinflate2*(2.*inc**2/(ensemble.members-1)))) else: # relaxation to prior spread inflation asprd = np.sqrt(asprd); fsprd = np.sqrt(fsprd) inf_fact = 1.+covinflate1*(fsprd-asprd)/asprd xprime *= inf_fact # run forecast model. ensemble.x = xmean + xprime for n in range(nsteps): ensemble.advance() # print out time mean stats. # error and spread are normalized by observation error. if diverged: print method,len(fcsterr),corrl,covinflate1,covinflate2,oberrstdev,np.nan,np.nan,np.nan,np.nan,neig else: ncount = len(fcstsprd) fcsterr = np.array(fcsterr) fcsterr1 = np.array(fcsterr1) fcstsprd = np.array(fcstsprd) analerr = np.array(analerr) analsprd = np.array(analsprd) fstdev = np.sqrt(fcstsprd.mean())
print(nassim, timetruth[nassim], np.sqrt(ferr.mean()), np.sqrt(fsprd.mean()), np.sqrt(aerr.mean()), np.sqrt(asprd.mean())) if covinflate2 > 0: # Hodyss and Campbell inflation. inc = xmean - xmean_b inf_fact = np.sqrt(covinflate1 + \ (asprd/fsprd**2)*((fsprd/ensemble.members) + covinflate2*(2.*inc**2/(ensemble.members-1)))) else: # relaxation to prior spread inflation asprd = np.sqrt(asprd) fsprd = np.sqrt(fsprd) inf_fact = 1. + covinflate1 * (fsprd - asprd) / asprd xprime *= inf_fact # run forecast model. ensemble.x = xmean + xprime for n in range(nsteps): ensemble.advance() # print out time mean stats. # error and spread are normalized by observation error. if diverged: print(method, len(fcsterr), corrl, covinflate1, covinflate2, oberrstdev, np.nan, np.nan, np.nan, np.nan, neig) else: ncount = len(fcstsprd) fcsterr = np.array(fcsterr) fcsterr1 = np.array(fcsterr1) fcstsprd = np.array(fcstsprd) analerr = np.array(analerr) analsprd = np.array(analsprd)