[MITgcm-devel] smoothing package for dimensional controls

Matthew Mazloff mmazloff at ucsd.edu
Mon Jul 18 19:36:47 EDT 2011


Hi Gael,

For the record, you are right; the smoothing correlation operator of  
Weaver and Courtier 2001 requires non-dim controls.  We smooth to  
apply a correlation, but we want to leave the variance alone. If your  
prior is non-uniform and you smooth the dimensional controls you will  
effectively be smoothing your prior, and more importantly your  
normalization will not allow you to conserve variance.  Probably all  
that is what you already tried to tell me, it just took me awhile to  
start to get it

Thanks
Matt





On May 18, 2011, at 6:29 PM, Gael Forget wrote:

> Hi Matt,
>
>> I don't agree that the important smoothing correlation operator of  
>> Weaver and Courtier 2001 requires non-dim controls.  Just let S be  
>> a diagonal identity matrix instead of the diagonal uncertainty and  
>> all is ok...the important part, that the correlation matrix B is  
>> represented by a diagonal matrix times a smoother (B^(0.5) = A  
>> L^(0.5) W^(-0.5) ) remains...or am I missing something...
> I agree with your thought exp. The l.h.s. factor S is the one that  
> sets the
> error variance of the dimensional dx. You can set it to one, sure.
>
> But I was questioning what you did on the r.h.s. as part of B^(0.5),  
> rather than
> what is done on its l.h.s. of it. Now I am unsure (I would need to  
> redo the
> maths) but my recollection was that one cannot mess with the r.h.s.  
> if one
> wants to ensure that the error variance of dx be the one spec. by S^2.
> May be I am mistaken though.
>
> Gael
>
>> Regardless, I can move the ALLOW_DIMENSIONAL_CONTROL stuff outside  
>> of ALLOW_SMOOTH_CORREL...but would it be ok to leave the  
>> smooth_correl2Dw.F the way it is....or do you object to that?  Or  
>> am I missing a better way to do this...
>>
>> Sorry for causing trouble -- and perhaps missing something key -- I  
>> can call you if you want to discuss the best way to implement this
>>
>> Thanks
>> Matt
>>
>>
>> On May 18, 2011, at 5:17 PM, Gael Forget wrote:
>>
>>>
>>> Hi Matt,
>>>
>>> I guess I was not fast enough to object, but I am not excited by  
>>> what you did.
>>>
>>> To smooth dimensional controls I would much prefer you added calls  
>>> to
>>> smooth_diff2d / 3d.F outside of the ifdef ALLOW_SMOOTH_CORREL3D/2D.
>>>
>>> To make my reasons more clear I shall summarize the difference  
>>> between the
>>> smoothing and correlation components of pkg/smooth. I reckon I  
>>> should have
>>> documented this stuff in MITgcm-manual already, so I tried to  
>>> write the
>>> following as a draft for the MITgcm-manual.
>>>
>>> ---
>>>
>>> The very smoothing boils down to a call to smooth_diff3d / 2d.F
>>> which can of course happen outside of ALLOW_SMOOTH_CORREL3D/2D.
>>> The smoothing is done by time integrating diffusion equation with  
>>> diffusion coeffs
>>> matching a smoothing spatial scale (typically specified through  
>>> data.smooth).
>>>
>>> The covariance construct of Weaver and Courtier 2001 (se their Eq. 
>>> 52&15)
>>> is more elaborate than that. In matrix form, it reads as
>>>    dx = S B^(0.5) du
>>> where dx is the dimensional control vector adjustment,
>>> du is the nondimensional one, S is the diagonal uncertainty
>>> matrix (i.e. the scaling factor), and B is the correlation matrix
>>>    B^(0.5) = A L^(0.5) W^(-0.5)
>>> where W is the diagonal matrix of grid cell volumes, L is the  
>>> smoother,
>>> and A is the diagonal normalization matrix. A must be computed
>>> so that B=B^(T.5) B^(0.5) has ones on the diagonal. Hence
>>> B does qualify as a correlation matrix, and B^(T.5) S^(2) B^(0.5)  
>>> does
>>> qualify as a covariance matrix. This is what is done within ifdef
>>> ALLOW_SMOOTH_CORREL3D / 2D (assuming I did not put bugs or typos).
>>>
>>> ---
>>>
>>> So, coming back to your checkin, Matt,  I would rather not have  
>>> CPP brackets
>>> within ALLOW_SMOOTH_CORREL3D / 2D that would break this defining  
>>> property of B.
>>> Such as adding S^(-1) on the r.h.s. of B^(0.5) …
>>>
>>> Outside of ALLOW_SMOOTH_CORREL3D / 2D such self-consistency does not
>>> matter much, and there is a number of preconditioner options  
>>> (combinations of
>>> ALLOW_NONDIMENSIONAL_CONTROL_IO, CTRL_PACK_PRECISE,
>>> CTRL_DELZNORM, CTRL_SMOOTH, etc?).
>>>
>>> My guess is that adding some smooth_diffXd.F to that mix would fit  
>>> your usage. Would it?
>>>
>>> Cheers,
>>> Gael
>>>
>>>
>>>
>>>
>>>
>>> <ATT00001.txt>
>>
>> _______________________________________________
>> MITgcm-devel mailing list
>> MITgcm-devel at mitgcm.org
>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>
> <ATT00001.txt>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-devel/attachments/20110718/25f86c90/attachment.htm>


More information about the MITgcm-devel mailing list