[MITgcm-devel] code changes
Matthew Mazloff
mmazloff at ucsd.edu
Thu Mar 10 14:12:37 EST 2011
Hello,
The ordering for obcs controls is T / S / normal vel / tangential
vel. This is consistent throughout the code
-Matt
On Mar 10, 2011, at 9:22 AM, Holly Dail wrote:
>>> Hate to open other cans of worms, but there is some inconsistency
>>> in the code re. the ordering of obcs control fields. I believe
>>> the code pieces I'm using assume the 3rd field is vvel and 4th
>>> field is uvel (i.e. they are packed T/S/V/U -- see for example
>>> ctrl_getobcss.F where OBSu is modified when iobcs is 4), while
>>> code like cost_obcsvol.F assumes they are packed T/S/U/V (which is
>>> more logical, but this code is never called from any other S/R).
>>> I can't figure out right now which order they are packed into the
>>> control files. I'm mostly concerned as to whether its all
>>> consistent, rather than whether its illogical.
>> I can only recommend to avoid code within #ifdef
>> ALLOW_CTRL_OBCS_BALANCE. The code does not look right to me. I
>> think Jake tried to balance both normal and tangential
>> xx_velocities (why?) and might have mixed up things? Plus, there
>> are definitely hfac's missing in this computation, so leave it
>> alone. The ordering is T/S/U/V for the obcs and this is also true
>> for the ctrl-fields.
>> For balanced flow even with optimized boundary flow you can
>> (probably) use the "forward" flags OBCSuseBalance with all the new
>> features checked in by Jean-Michel. I am currently using an older
>> hacked version which does effectively what Jean-Michel implemented
>> more generally, and this gives fine results (in terms of balancing).
>
> I'm attaching the relevant bits from ctrl_getobcss.F in which I
> believe the ordering is T/S/V/U:
>
> else if (iobcs .EQ. 4) then
> OBSu(i,k,bi,bj) = OBSu (i,k,bi,bj)
> & + obcssfac *xx_obcss0(i,k,bi,bj,iobcs)
> & + (1. _d 0 - obcssfac)*xx_obcss1(i,k,bi,bj,iobcs)
> OBSu(i,k,bi,bj) = OBSu(i,k,bi,bj)
> & *maskW(i,j,k,bi,bj)
> else if (iobcs .EQ. 3) then
> OBSv(i,k,bi,bj) = OBSv (i,k,bi,bj)
> & + obcssfac *xx_obcss0(i,k,bi,bj,iobcs)
> & + (1. _d 0 - obcssfac)*xx_obcss1(i,k,bi,bj,iobcs)
> OBSv(i,k,bi,bj) = OBSv(i,k,bi,bj)
> & *maskS(i,j+jp1,k,bi,bj)
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel
More information about the MITgcm-devel
mailing list