Changeset 4083


Ignore:
Timestamp:
10/22/18 16:10:24 (6 years ago)
Author:
omamce
Message:

O.M. : add lbc_mask to nemo.py

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TOOLS/MOSAIX/nemo.py

    r3740 r4083  
    2222 
    2323def lbc (ptab, nperio=6, cd_type='T', psgn=1.0) : 
     24    # Set periodicity on input fields 
    2425    """ 
    2526    ptab      : Input array 
     
    9192 
    9293    return ptab 
     94 
     95 
     96def lbc_mask (ptab, nperio=6, cd_type='T', psgn=1.0) : 
     97    # Mask fields on duplicate points 
     98    """ 
     99    ptab      : Input array 
     100      rank 2 at least : patb[...., lat, lon] 
     101    nperio    : Type of periodicity 
     102      1, 4, 6 : Cyclic on i dimension (generaly longitudes) 
     103      2       : Obsolete (was symmetric condition at southern boundary ?) 
     104      3, 4    : North fold T-point pivot (legacy ORCA2) 
     105      5, 6    : North fold F-point pivot (ORCA1, ORCA025, ORCA2 with new grid for paleo) 
     106    cd_type   : Grid specification : T, U, V or F 
     107    psgn      : For change of sign for vector components 
     108     
     109    See NEMO documentation for further details 
     110    """ 
    93111         
     112    jpi = ptab.shape[-1] 
     113    # 
     114    zero = 0 
     115     
     116    # 
     117    #> East-West boundary conditions 
     118    # -------------------------------- 
     119 
     120    if nperio in [1, 4, 6] : 
     121        # ... cyclic 
     122        ptab [...,:,  0] = zero 
     123        ptab [...,:, -1] = zero 
     124    
     125    # 
     126    #> North-South boundary conditions 
     127    # ---------------------------------- 
     128    if nperio in [3, 4] :  # North fold T-point pivot      
     129        if cd_type in [ 'T', 'W' ] : # T-, W-point 
     130            ptab[..., -1, 1:       ] = zero 
     131            ptab[..., -1, 0        ] = zero  
     132            ptab[..., -2, jpi//2:  ] = zero 
     133                       
     134        if cd_type == 'U' : 
     135            ptab[..., -1, 0:-1     ] = zero   
     136            ptab[..., -1,  0       ] = zero 
     137            ptab[..., -1, -1       ] = zero  
     138            ptab[..., -2, jpi//2-1:] = zero 
     139             
     140        if cd_type == 'V' :  
     141            ptab[..., -2, 1:       ] = zero 
     142            ptab[..., -1, 1:       ] = zero    
     143            ptab[..., -1, 0        ] = zero 
     144             
     145        if cd_type == 'F' : 
     146            ptab[..., -2, 0:-1     ] = zero 
     147            ptab[..., -1, 0:-1     ] = zero 
     148            ptab[..., -1,  0       ] =zero 
     149            ptab[..., -1, -1       ] = zero 
     150       
     151    if nperio in [5, 6] :            #  North fold F-point pivot   
     152        if cd_type in ['T', 'W']  : 
     153            ptab[..., -1, 0:       ] = zero 
     154                 
     155        if cd_type == 'U' : 
     156            ptab[..., -1, 0:-1     ] = zero        
     157            ptab[..., -1, -1       ] = zero 
     158              
     159        if cd_type == 'V' : 
     160            ptab[..., -1, 0:       ] = zero 
     161            ptab[..., -2, jpi/2:   ] = zero 
     162                              
     163        if cd_type == 'F' : 
     164            ptab[..., -1, 0:-1     ] = zero 
     165            ptab[..., -1, -1       ] = zero 
     166            ptab[..., -2, jpi//2:-1] = zero 
     167 
     168    return ptab 
    94169## =========================================================================== 
    95170## 
Note: See TracChangeset for help on using the changeset viewer.