[MITgcm-devel] smoothing package for dimensional controls

Matthew Mazloff mmazloff at ucsd.edu
Wed May 18 21:27:31 EDT 2011


Hi Gael,

Let me look into just adding calls to smooth_diff2d / 3d.F outside of  
the ifdef ALLOW_SMOOTH_CORREL3D/2D...that may actually work well...

I'll get back to you

thanks
-Matt


On May 18, 2011, at 5:54 PM, Matthew Mazloff wrote:

> Hi Gael
>
> 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...
>
> 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>
>
> <ATT00001.txt>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-devel/attachments/20110518/4eb8acb1/attachment.htm>


More information about the MITgcm-devel mailing list