- Timestamp:
- 2010-04-30T17:49:04+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/LIM_SRC_2/limtrp_2.F90
r1715 r1855 4 4 !! LIM 2.0 transport ice model : sea-ice advection/diffusion 5 5 !!====================================================================== 6 !! History : LIM ! 2000-01 (LIM) Original code 7 !! 1.0 ! 2001-05 (G. Madec, R. Hordoir) opa norm 8 !! 2.0 ! 2004-01 (G. Madec, C. Ethe) F90, mpp 9 !!---------------------------------------------------------------------- 6 10 #if defined key_lim2 7 11 !!---------------------------------------------------------------------- … … 11 15 !! lim_trp_init_2 : initialization and namelist read 12 16 !!---------------------------------------------------------------------- 13 !! * Modules used14 17 USE phycst 15 18 USE dom_oce … … 26 29 PRIVATE 27 30 28 !! * Routine accessibility 29 PUBLIC lim_trp_2 ! called by sbc_ice_lim_2 30 31 !! * Shared module variables 32 REAL(wp), PUBLIC :: & !: 33 bound = 0.e0 !: boundary condit. (0.0 no-slip, 1.0 free-slip) 34 35 !! * Module variables 36 REAL(wp) :: & ! constant values 37 epsi06 = 1.e-06 , & 38 epsi03 = 1.e-03 , & 39 epsi16 = 1.e-16 , & 40 rzero = 0.e0 , & 41 rone = 1.e0 31 PUBLIC lim_trp_2 ! called by sbc_ice_lim_2 32 33 REAL(wp), PUBLIC :: bound = 0.e0 !: boundary condit. (0.0 no-slip, 1.0 free-slip) 34 35 REAL(wp) :: epsi06 = 1.e-06 ! constant values 36 REAL(wp) :: epsi03 = 1.e-03 ! 37 REAL(wp) :: epsi16 = 1.e-16 ! 38 REAL(wp) :: rzero = 0.e0 ! 39 REAL(wp) :: rone = 1.e0 ! 42 40 43 41 !! * Substitution 44 42 # include "vectopt_loop_substitute.h90" 45 43 !!---------------------------------------------------------------------- 46 !! LIM 2.0, UCL-LOCEAN-IPSL (2005)44 !! NEMO/LIM 3.3, UCL-LOCEAN-IPSL (2010) 47 45 !! $Id$ 48 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt46 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 49 47 !!---------------------------------------------------------------------- 50 48 … … 62 60 !! 63 61 !! ** action : 64 !!65 !! History :66 !! 1.0 ! 00-01 (LIM) Original code67 !! ! 01-05 (G. Madec, R. Hordoir) opa norm68 !! 2.0 ! 04-01 (G. Madec, C. Ethe) F90, mpp69 62 !!--------------------------------------------------------------------- 70 63 INTEGER, INTENT(in) :: kt ! number of iteration 71 72 INTEGER :: ji, jj, jk, & ! dummy loop indices 73 & initad ! number of sub-timestep for the advection 74 75 REAL(wp) :: & 76 zindb , & 77 zacrith, & 78 zindsn , & 79 zindic , & 80 zusvosn, & 81 zusvoic, & 82 zignm , & 83 zindhe , & 84 zvbord , & 85 zcfl , & 86 zusnit , & 87 zrtt, ztsn, ztic1, ztic2 88 89 REAL(wp), DIMENSION(jpi,jpj) :: & ! temporary workspace 90 zui_u , zvi_v , zsm , & 91 zs0ice, zs0sn , zs0a , & 92 zs0c0 , zs0c1 , zs0c2 , & 93 zs0st 64 !! 65 INTEGER :: ji, jj, jk ! dummy loop indices 66 INTEGER :: initad ! number of sub-timestep for the advection 67 REAL(wp) :: zindb , zacrith, zindsn , zignm , zvbord, zrtt, ztic1, zusnit 68 REAL(wp) :: zindic, zusvosn, zusvoic, zindhe, zcfl , ztsn, ztic2 69 REAL(wp), DIMENSION(jpi,jpj) :: zui_u , zs0sn, zs0c0, zs0a , zsm ! 2D workspace 70 REAL(wp), DIMENSION(jpi,jpj) :: zvi_v , zs0st, zs0c1, zs0c2, zs0ice ! - - 94 71 !--------------------------------------------------------------------- 95 72 … … 98 75 zsm(:,:) = area(:,:) 99 76 100 IF( ln_limdyn ) THEN 101 !-------------------------------------! 102 ! Advection of sea ice properties ! 103 !-------------------------------------! 77 ! !-------------------------------------! 78 IF( ln_limdyn ) THEN ! Advection of sea ice properties ! 79 ! !-------------------------------------! 104 80 105 81 ! ice velocities at ocean U- and V-points (zui_u,zvi_v) … … 113 89 END DO 114 90 END DO 115 ! Lateral boundary conditions on zui_u, zvi_v 116 CALL lbc_lnk( zui_u, 'U', -1. ) 117 CALL lbc_lnk( zvi_v, 'V', -1. ) 91 CALL lbc_lnk( zui_u, 'U', -1. ) ; CALL lbc_lnk( zvi_v, 'V', -1. ) ! Lateral boundary conditions 118 92 119 93 ! CFL test for stability … … 123 97 zcfl = MAX( zcfl, MAXVAL( ABS( zvi_v( : ,1:jpjm1) ) * rdt_ice / e2v( : ,1:jpjm1) ) ) 124 98 125 IF (lk_mpp ) CALL mpp_max(zcfl)126 127 IF ( zcfl > 0.5 .AND. lwp ) WRITE(numout,*) 'lim_trp_2 : violation of cfl criterionthe ',nday,'th day, cfl = ',zcfl99 IF( lk_mpp ) CALL mpp_max( zcfl ) 100 101 IF( zcfl > 0.5 .AND. lwp ) WRITE(numout,*) 'lim_trp_2 : CFL violation at the ',nday,'th day, cfl = ',zcfl 128 102 129 103 ! content of properties … … 144 118 zusnit = 1.0 / REAL( initad ) 145 119 146 IF 120 IF( MOD( nday , 2 ) == 0) THEN 147 121 DO jk = 1,initad 148 122 CALL lim_adv_x_2( zusnit, zui_u, rone , zsm, zs0ice, sxice, sxxice, syice, syyice, sxyice ) … … 228 202 ! Up-dating and limitation of sea ice properties after transport ! 229 203 ! -------------------------------------------------------------------! 230 231 ! Up-dating and limitation of sea ice properties after transport.232 204 DO jj = 1, jpj 233 !!!iii zindhe = REAL( MAX( 0, isign(1, jj - njeq ) ) ) !ibug mpp !!bugmpp njeq!234 205 zindhe = MAX( 0.e0, SIGN( 1.e0, fcor(1,jj) ) ) ! = 0 for SH, =1 for NH 235 206 DO ji = 1, jpi 236 237 ! Recover mean values over the grid squares. 207 ! ! Recover mean values over the grid squares. 238 208 zs0sn (ji,jj) = MAX( rzero, zs0sn (ji,jj)/area(ji,jj) ) 239 209 zs0ice(ji,jj) = MAX( rzero, zs0ice(ji,jj)/area(ji,jj) ) … … 243 213 zs0c2 (ji,jj) = MAX( rzero, zs0c2 (ji,jj)/area(ji,jj) ) 244 214 zs0st (ji,jj) = MAX( rzero, zs0st (ji,jj)/area(ji,jj) ) 245 246 ! Recover in situ values. 215 ! ! Recover in situ values. 247 216 zindb = MAX( rzero, SIGN( rone, zs0a(ji,jj) - epsi06 ) ) 248 217 zacrith = 1.0 - ( zindhe * acrit(1) + ( 1.0 - zindhe ) * acrit(2) ) … … 262 231 zrtt = 173.15 * rone 263 232 ztsn = zignm * tbif(ji,jj,1) & 264 233 & + ( 1.0 - zignm ) * MIN( MAX( zrtt, rt0_snow * zusvosn * zs0c0(ji,jj)) , tfu(ji,jj) ) 265 234 ztic1 = MIN( MAX( zrtt, rt0_ice * zusvoic * zs0c1(ji,jj) ) , tfu(ji,jj) ) 266 235 ztic2 = MIN( MAX( zrtt, rt0_ice * zusvoic * zs0c2(ji,jj) ) , tfu(ji,jj) ) 267 236 ! 268 237 tbif(ji,jj,1) = zindsn * ztsn + ( 1.0 - zindsn ) * tfu(ji,jj) 269 238 tbif(ji,jj,2) = zindic * ztic1 + ( 1.0 - zindic ) * tfu(ji,jj) … … 272 241 END DO 273 242 END DO 274 243 ! 275 244 ENDIF 276 245 ! 277 246 END SUBROUTINE lim_trp_2 278 247 … … 288 257 !! 289 258 !! ** input : Namelist namicetrp 290 !!291 !! history :292 !! 2.0 ! 03-08 (C. Ethe) Original code293 259 !!------------------------------------------------------------------- 294 260 NAMELIST/namicetrp/ bound 295 261 !!------------------------------------------------------------------- 296 297 ! Read Namelist namicetrp 298 REWIND ( numnam_ice ) 262 ! 263 REWIND ( numnam_ice ) ! Read Namelist namicetrp 299 264 READ ( numnam_ice , namicetrp ) 300 IF(lwp) THEN 265 IF(lwp) THEN ! control print 301 266 WRITE(numout,*) 302 267 WRITE(numout,*) 'lim_trp_init_2 : Ice parameters for advection ' … … 304 269 WRITE(numout,*) ' boundary conditions (0. no-slip, 1. free-slip) bound = ', bound 305 270 ENDIF 306 271 ! 307 272 END SUBROUTINE lim_trp_init_2 308 273 … … 311 276 !! Default option Empty Module No sea-ice model 312 277 !!---------------------------------------------------------------------- 313 CONTAINS314 SUBROUTINE lim_trp_2 ! Empty routine315 END SUBROUTINE lim_trp_2316 278 #endif 317 279
Note: See TracChangeset
for help on using the changeset viewer.