Skip to content
Snippets Groups Projects
Commit 8437bc59 authored by Peters, Wouter's avatar Peters, Wouter
Browse files

started to add diagnostic filter output to optimizer class

parent 7a8aa878
Branches
No related tags found
No related merge requests found
......@@ -114,10 +114,50 @@ class Optimizer(object):
return None
def WriteDiagnostics(self,DaCycle, StateVector):
"""
Open a NetCDF file and write diagnostic output from optimization process:
- calculated residuals
- model-data mismatches
- HPH^T
- prior ensemble of samples
- posterior ensemble of samples
- prior ensemble of fluxes
- posterior ensemble of fluxes
"""
from da.tools.io import CT_CDF, std_savedict
outdir = DaCycle['dir.output']
filename = os.path.join(outdir,'optimizer.%s.nc'% DaCycle['time.start'].strftime('%Y%m%d') )
f = CT_CDF(filename,'create')
dimparams = f.AddParamsDim(self.nparams)
dimmembers = f.AddMembersDim(self.nmembers)
dimlag = f.AddLagDim(self.nlag, unlimited=False)
dimobs = f.AddObsDim(self.nobs)
dimstate = f.file.create_dimension('nstate',self.nparams*self.nlag)
dimstate = ('nstate',)
data = self.x
savedict = std_savedict.copy()
savedict['name'] = "statevector"
savedict['long_name'] = "statevector"
savedict['units'] = "unitless"
savedict['dims'] = dimstate
savedict['values'] = data.tolist()
savedict['comment'] = 'blablabla'
dummy = f.AddData(savedict)
return None
def SerialMinimumLeastSquares(self):
""" Make minimum least squares solution by looping over obs"""
import numpy as np
import numpy .linalg as la
import numpy.linalg as la
tvalue=1.97591
for n in range(self.nobs):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment