Changeset 4259 for TOOLS/MOSAIX/nemo.py
- Timestamp:
- 02/07/19 10:04:07 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TOOLS/MOSAIX/nemo.py
r4083 r4259 21 21 __HeadURL = "$HeadURL$" 22 22 23 def lbc (ptab, nperio=6, cd_type='T', psgn=1.0) : 24 # Set periodicity on input fields 23 import sys, numpy as np 24 25 def __guessNperio__ (jpi, nperio) : 25 26 """ 27 Tries to guess the value of nperio 28 """ 29 if nperio == None : 30 if jpi == 182 : nperio = 4 # ORCA2. We choose legacy orca2 31 if jpi == 362 : nperio = 6 # ORCA1. 32 if jpi == 1442 : nperio = 6 # ORCA025. 33 # 34 if nperio == None : 35 sys.exit ('in nemo.lbc : nperio not found, and cannot by guessed' ) 36 else : 37 print ('nperio set as {:d} (deduced from jpi={:d}'.format(nperio, jpi)) 38 39 return nperio 40 41 def lbc (ptab, nperio=None, cd_type='T', psgn=1.0) : 42 """ 43 Set periodicity on input fields 26 44 ptab : Input array 27 rank 2 at least : p atb[...., lat, lon]45 rank 2 at least : ptab[...., lat, lon] 28 46 nperio : Type of periodicity 29 47 1, 4, 6 : Cyclic on i dimension (generaly longitudes) … … 32 50 5, 6 : North fold F-point pivot (ORCA1, ORCA025, ORCA2 with new grid for paleo) 33 51 cd_type : Grid specification : T, U, V or F 34 psgn : For change of sign for vector components 52 psgn : For change of sign for vector components (1 for scalars, -1 for vector components) 35 53 36 54 See NEMO documentation for further details 37 55 """ 38 56 39 jpi = ptab.shape[-1] 57 jpi = ptab.shape[-1] 58 nperio = __guessNperio__ ( jpi, nperio ) 59 psgn = ptab.dtype.type(psgn) 40 60 41 61 # 42 62 #> East-West boundary conditions 43 # ------------------------------ --63 # ------------------------------ 44 64 45 65 if nperio in [1, 4, 6] : … … 50 70 # 51 71 #> North-South boundary conditions 52 # -------------------------------- --53 if nperio in [3, 4] : # North fold T-point pivot 72 # -------------------------------- 73 if nperio in [3, 4] : # North fold T-point pivot 54 74 if cd_type in [ 'T', 'W' ] : # T-, W-point 55 75 ptab[..., -1, 1: ] = psgn * ptab[..., -3, -1:0:-1 ] … … 84 104 if cd_type == 'V' : 85 105 ptab[..., -1, 0: ] = psgn * ptab[..., -3, -1::-1 ] 86 ptab[..., -2, jpi/ 2: ] = psgn * ptab[..., -2, jpi/2-1::-1]106 ptab[..., -2, jpi//2: ] = psgn * ptab[..., -2, jpi//2-1::-1 ] 87 107 88 108 if cd_type == 'F' : … … 94 114 95 115 96 def lbc_mask (ptab, nperio= 6, cd_type='T', psgn=1.0) :97 # Mask fields on duplicate points116 def lbc_mask (ptab, nperio=None, cd_type='T') : 117 # 98 118 """ 119 Mask fields on duplicated points 99 120 ptab : Input array 100 rank 2 at least : p atb[...., lat, lon]121 rank 2 at least : ptab[...., lat, lon] 101 122 nperio : Type of periodicity 102 123 1, 4, 6 : Cyclic on i dimension (generaly longitudes) … … 105 126 5, 6 : North fold F-point pivot (ORCA1, ORCA025, ORCA2 with new grid for paleo) 106 127 cd_type : Grid specification : T, U, V or F 107 psgn : For change of sign for vector components108 128 109 129 See NEMO documentation for further details 110 130 """ 111 112 jpi = ptab.shape[-1]113 #114 zero = 0131 132 jpi = ptab.shape[-1] 133 nperio = __guessNperio__ ( jpi, nperio ) 134 zero = ptab.dtype.type(0) 115 135 116 136 # 117 137 #> East-West boundary conditions 118 # -------------------------------- 119 138 # ------------------------------ 120 139 if nperio in [1, 4, 6] : 121 140 # ... cyclic 122 141 ptab [...,:, 0] = zero 123 142 ptab [...,:, -1] = zero 124 143 144 # 145 #> South (in which nperio cases ?) 146 # -------------------------------- 147 if nperio in [1, 3, 4, 5, 6] : 148 ptab[...,0,:] = zero 149 125 150 # 126 151 #> North-South boundary conditions 127 # -------------------------------- --152 # -------------------------------- 128 153 if nperio in [3, 4] : # North fold T-point pivot 129 154 if cd_type in [ 'T', 'W' ] : # T-, W-point … … 146 171 ptab[..., -2, 0:-1 ] = zero 147 172 ptab[..., -1, 0:-1 ] = zero 148 ptab[..., -1, 0 ] = zero173 ptab[..., -1, 0 ] = zero 149 174 ptab[..., -1, -1 ] = zero 150 175 … … 159 184 if cd_type == 'V' : 160 185 ptab[..., -1, 0: ] = zero 161 ptab[..., -2, jpi/ 2:] = zero186 ptab[..., -2, jpi//2: ] = zero 162 187 163 188 if cd_type == 'F' :
Note: See TracChangeset
for help on using the changeset viewer.