- Timestamp:
- 2014-05-12T22:46:18+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
r4337 r4634 30 30 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 31 31 USE wrk_nemo ! work arrays 32 USE cpl_oasis3, ONLY : lk_cpl 32 33 33 34 IMPLICIT NONE … … 38 39 !! * Module variables 39 40 REAL(wp) :: & !!! ** init namelist (namiceini) ** 40 ttest = 2.0 , & ! threshold water temperature for initial sea ice 41 hninn = 0.5 , & ! initial snow thickness in the north 42 hnins = 0.1 , & ! initial snow thickness in the south 43 hginn = 2.5 , & ! initial ice thickness in the north 44 hgins = 1.0 , & ! initial ice thickness in the south 45 aginn = 0.7 , & ! initial leads area in the north 46 agins = 0.7 , & ! initial leads area in the south 47 sinn = 6.301 , & ! initial salinity 48 sins = 6.301 49 41 thres_sst = 2.0 , & ! threshold water temperature for initial sea ice 42 hts_ini_n = 0.5 , & ! initial snow thickness in the north 43 hts_ini_s = 0.1 , & ! initial snow thickness in the south 44 hti_ini_n = 2.5 , & ! initial ice thickness in the north 45 hti_ini_s = 1.0 , & ! initial ice thickness in the south 46 ati_ini_n = 0.7 , & ! initial leads area in the north 47 ati_ini_s = 0.7 , & ! initial leads area in the south 48 smi_ini_n = 6.301 , & ! initial salinity 49 smi_ini_s = 6.301 , & ! initial salinity 50 tmi_ini_n = 270. , & ! initial temperature 51 tmi_ini_s = 270. ! initial temperature 52 53 LOGICAL :: ln_limini = .TRUE. 50 54 !!---------------------------------------------------------------------- 51 55 !! LIM 3.0, UCL-LOCEAN-IPSL (2008) … … 90 94 INTEGER :: i_hemis, i_fill, jl0 91 95 REAL(wp) :: ztest_1, ztest_2, ztest_3, ztest_4, ztests, zsigma, zarg, zA, zV, zA_cons, zV_cons, zconv 92 REAL(wp), POINTER, DIMENSION(:) :: zh m_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini93 REAL(wp), POINTER, DIMENSION(:,:) :: zh t_i_ini, za_i_ini, zv_i_ini94 REAL(wp), POINTER, DIMENSION(:,:) :: z idto! ice indicator96 REAL(wp), POINTER, DIMENSION(:) :: zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini 97 REAL(wp), POINTER, DIMENSION(:,:) :: zh_i_ini, za_i_ini, zv_i_ini 98 REAL(wp), POINTER, DIMENSION(:,:) :: zswitch ! ice indicator 95 99 INTEGER, POINTER, DIMENSION(:,:) :: zhemis ! hemispheric index 96 100 !-------------------------------------------------------------------- 97 101 98 CALL wrk_alloc( jpi, jpj, z idto)102 CALL wrk_alloc( jpi, jpj, zswitch ) 99 103 CALL wrk_alloc( jpi, jpj, zhemis ) 100 CALL wrk_alloc( jpl, 2, zht_i_ini, za_i_ini, zv_i_ini ) 101 CALL wrk_alloc( 2, zhm_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini ) 102 103 epsi20 = 1.0e-20 104 CALL wrk_alloc( jpl, 2, zh_i_ini, za_i_ini, zv_i_ini ) 105 CALL wrk_alloc( 2, zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 106 107 epsi20 = 1.e-20_wp 108 104 109 IF(lwp) WRITE(numout,*) 105 110 IF(lwp) WRITE(numout,*) 'lim_istate : Ice initialization ' … … 112 117 CALL lim_istate_init ! reading the initials parameters of the ice 113 118 114 !!gm in lim2 the initialisation if only done if required in the namelist : 115 !!gm IF( .NOT. ln_limini ) THEN 116 !!gm this should be added in lim3 namelist... 119 # if defined key_coupled 120 albege(:,:) = 0.8 * tms(:,:) 121 # endif 122 123 ! surface temperature 124 DO jl = 1, jpl ! loop over categories 125 t_su (:,:,jl) = rtt * tms(:,:) 126 tn_ice(:,:,jl) = rtt * tms(:,:) 127 END DO 128 ! Basal temperature is set to the freezing point of seawater in Kelvin 129 t_bo(:,:) = ( tfreez( tsn(:,:,1,jp_sal) ) + rt0 ) * tms(:,:) 130 131 IF( ln_limini ) THEN 117 132 118 133 !-------------------------------------------------------------------- 119 134 ! 2) Basal temperature, ice mask and hemispheric index 120 135 !-------------------------------------------------------------------- 121 122 ! Basal temperature is set to the freezing point of seawater in Celsius 123 t_bo(:,:) = tfreez( tsn(:,:,1,jp_sal) ) * tmask(:,:,1) ! freezing/melting point of sea water [Celcius] 124 125 DO jj = 1, jpj ! ice if sst <= t-freez + ttest 136 ! ice if sst <= t-freez + thres_sst 137 DO jj = 1, jpj 126 138 DO ji = 1, jpi 127 IF( tsn(ji,jj,1,jp_tem) - t_bo(ji,jj) >= ttest ) THEN ; zidto(ji,jj) = 0._wp! no ice128 ELSE ; zidto(ji,jj) = 1._wp! ice139 IF( ( tsn(ji,jj,1,jp_tem) - ( t_bo(ji,jj) - rt0 ) ) * tms(ji,jj) >= thres_sst ) THEN ; zswitch(ji,jj) = 0._wp * tms(ji,jj) ! no ice 140 ELSE ; zswitch(ji,jj) = 1._wp * tms(ji,jj) ! ice 129 141 ENDIF 130 142 END DO 131 143 END DO 132 144 133 t_bo(:,:) = t_bo(:,:) + rt0 ! conversion to Kelvin134 145 135 146 ! Hemispheric index … … 153 164 ! 3.1) Hemisphere-dependent arrays 154 165 !----------------------------- 155 ! assign initial thickness, concentration, snow depth and salinity to 156 ! an hemisphere-dependent array 157 zhm_i_ini(1) = hginn ; zhm_i_ini(2) = hgins ! ice thickness 158 zat_i_ini(1) = aginn ; zat_i_ini(2) = agins ! ice concentration 159 zvt_i_ini(:) = zhm_i_ini(:) * zat_i_ini(:) ! ice volume 160 zhm_s_ini(1) = hninn ; zhm_s_ini(2) = hnins ! snow depth 161 zsm_i_ini(1) = sinn ; zsm_i_ini(2) = sins ! bulk ice salinity 166 ! assign initial thickness, concentration, snow depth and salinity to an hemisphere-dependent array 167 zht_i_ini(1) = hti_ini_n ; zht_i_ini(2) = hti_ini_s ! ice thickness 168 zht_s_ini(1) = hts_ini_n ; zht_s_ini(2) = hts_ini_s ! snow depth 169 zat_i_ini(1) = ati_ini_n ; zat_i_ini(2) = ati_ini_s ! ice concentration 170 zsm_i_ini(1) = smi_ini_n ; zsm_i_ini(2) = smi_ini_s ! bulk ice salinity 171 ztm_i_ini(1) = tmi_ini_n ; ztm_i_ini(2) = tmi_ini_s ! temperature (ice and snow) 172 173 zvt_i_ini(:) = zht_i_ini(:) * zat_i_ini(:) ! ice volume 162 174 163 175 !--------------------------------------------------------------------- … … 183 195 ! *** 1 category to fill 184 196 IF ( i_fill .EQ. 1 ) THEN 185 zh t_i_ini(1,i_hemis) = zhm_i_ini(i_hemis)186 za_i_ini(1,i_hemis) 187 zh t_i_ini(2:jpl,i_hemis) = 0._wp188 za_i_ini(2:jpl,i_hemis) 197 zh_i_ini(1,i_hemis) = zht_i_ini(i_hemis) 198 za_i_ini(1,i_hemis) = zat_i_ini(i_hemis) 199 zh_i_ini(2:jpl,i_hemis) = 0._wp 200 za_i_ini(2:jpl,i_hemis) = 0._wp 189 201 ELSE 190 202 191 ! *** >1 categores to fill192 !--- Ice thicknesses in the i_fill - 1 first categories203 ! *** >1 categores to fill 204 !--- Ice thicknesses in the i_fill - 1 first categories 193 205 DO jl = 1, i_fill - 1 194 zh t_i_ini(jl,i_hemis) = 0.5 * ( hi_max(jl) + hi_max(jl-1) )206 zh_i_ini(jl,i_hemis) = 0.5 * ( hi_max(jl) + hi_max(jl-1) ) 195 207 END DO 196 197 !--- jl0: most likely index where cc will be maximum208 209 !--- jl0: most likely index where cc will be maximum 198 210 DO jl = 1, jpl 199 IF ( ( zh m_i_ini(i_hemis) .GT. hi_max(jl-1) ) .AND. &200 ( zhm_i_ini(i_hemis) .LE. hi_max(jl) ) ) THEN211 IF ( ( zht_i_ini(i_hemis) .GT. hi_max(jl-1) ) .AND. & 212 ( zht_i_ini(i_hemis) .LE. hi_max(jl) ) ) THEN 201 213 jl0 = jl 202 214 ENDIF 203 215 END DO 204 216 jl0 = MIN(jl0, i_fill) 205 206 !--- Concentrations217 218 !--- Concentrations 207 219 za_i_ini(jl0,i_hemis) = zat_i_ini(i_hemis) / SQRT(REAL(jpl)) 208 220 DO jl = 1, i_fill - 1 209 221 IF ( jl .NE. jl0 ) THEN 210 zsigma = 0.5 * zh m_i_ini(i_hemis)211 zarg = ( zh t_i_ini(jl,i_hemis) - zhm_i_ini(i_hemis) ) / zsigma222 zsigma = 0.5 * zht_i_ini(i_hemis) 223 zarg = ( zh_i_ini(jl,i_hemis) - zht_i_ini(i_hemis) ) / zsigma 212 224 za_i_ini(jl,i_hemis) = za_i_ini(jl0,i_hemis) * EXP(-zarg**2) 213 225 ENDIF 214 END DO 215 226 END DO 227 216 228 zA = 0. ! sum of the areas in the jpl categories 217 229 DO jl = 1, i_fill - 1 … … 221 233 IF ( i_fill .LT. jpl ) za_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 222 234 223 !--- Ice thickness in the last category235 !--- Ice thickness in the last category 224 236 zV = 0. ! sum of the volumes of the N-1 categories 225 237 DO jl = 1, i_fill - 1 226 zV = zV + za_i_ini(jl,i_hemis)*zh t_i_ini(jl,i_hemis)238 zV = zV + za_i_ini(jl,i_hemis)*zh_i_ini(jl,i_hemis) 227 239 END DO 228 zh t_i_ini(i_fill,i_hemis) = ( zvt_i_ini(i_hemis) - zV ) / za_i_ini(i_fill,i_hemis)229 IF ( i_fill .LT. jpl ) zh t_i_ini(i_fill+1:jpl, i_hemis) = 0._wp230 231 !--- volumes232 zv_i_ini(:,i_hemis) = za_i_ini(:,i_hemis) * zh t_i_ini(:,i_hemis)240 zh_i_ini(i_fill,i_hemis) = ( zvt_i_ini(i_hemis) - zV ) / za_i_ini(i_fill,i_hemis) 241 IF ( i_fill .LT. jpl ) zh_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 242 243 !--- volumes 244 zv_i_ini(:,i_hemis) = za_i_ini(:,i_hemis) * zh_i_ini(:,i_hemis) 233 245 IF ( i_fill .LT. jpl ) zv_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 234 246 … … 262 274 263 275 ! Test 3: thickness of the last category is in-bounds ? 264 IF ( zh t_i_ini(i_fill, i_hemis) .GT. hi_max(i_fill-1) ) THEN276 IF ( zh_i_ini(i_fill, i_hemis) .GT. hi_max(i_fill-1) ) THEN 265 277 ztest_3 = 1 266 278 ELSE 267 279 ! this write is useful 268 IF(lwp) WRITE(numout,*) ' * TEST 3 THICKNESS OF THE LAST CATEGORY OUT OF BOUNDS *** zh t_i_ini(i_fill,i_hemis) = ', &269 zh t_i_ini(i_fill,i_hemis), ' hi_max(jpl-1) = ', hi_max(i_fill-1)280 IF(lwp) WRITE(numout,*) ' * TEST 3 THICKNESS OF THE LAST CATEGORY OUT OF BOUNDS *** zh_i_ini(i_fill,i_hemis) = ', & 281 zh_i_ini(i_fill,i_hemis), ' hi_max(jpl-1) = ', hi_max(i_fill-1) 270 282 ztest_3 = 0 271 283 ENDIF … … 291 303 IF ( ztests .NE. 4 ) THEN 292 304 WRITE(numout,*) 293 WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' 294 WRITE(numout,*), ' !!!! RED ALERT !!! ' 295 WRITE(numout,*), ' !!!! BIIIIP BIIIP BIIIIP BIIIIP !!!' 305 WRITE(numout,*), ' !!!! ALERT !!! ' 296 306 WRITE(numout,*), ' !!!! Something is wrong in the LIM3 initialization procedure ' 297 WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! '298 307 WRITE(numout,*) 299 308 WRITE(numout,*), ' *** ztests is not equal to 4 ' 300 309 WRITE(numout,*), ' *** ztest_i (i=1,4) = ', ztest_1, ztest_2, ztest_3, ztest_4 301 310 WRITE(numout,*), ' zat_i_ini : ', zat_i_ini(i_hemis) 302 WRITE(numout,*), ' zh m_i_ini : ', zhm_i_ini(i_hemis)311 WRITE(numout,*), ' zht_i_ini : ', zht_i_ini(i_hemis) 303 312 ENDIF ! ztests .NE. 4 304 313 ENDIF … … 314 323 DO jj = 1, jpj 315 324 DO ji = 1, jpi 316 a_i(ji,jj,jl) = z idto(ji,jj) * za_i_ini (jl,zhemis(ji,jj)) ! concentration317 ht_i(ji,jj,jl) = z idto(ji,jj) * zht_i_ini(jl,zhemis(ji,jj)) ! ice thickness318 ht_s(ji,jj,jl) = ht_i(ji,jj,jl) * ( zh m_s_ini( zhemis(ji,jj) ) / zhm_i_ini( zhemis(ji,jj) ) ) ! snow depth319 sm_i(ji,jj,jl) = z idto(ji,jj) * zsm_i_ini(zhemis(ji,jj)) + ( 1._wp - zidto(ji,jj) ) * s_i_min ! salinity320 o_i(ji,jj,jl) = z idto(ji,jj) * 1._wp + ( 1._wp - zidto(ji,jj) ) ! age321 t_su(ji,jj,jl) = z idto(ji,jj) * 270.0 + ( 1._wp - zidto(ji,jj) ) * 270.0! surf temp325 a_i(ji,jj,jl) = zswitch(ji,jj) * za_i_ini (jl,zhemis(ji,jj)) ! concentration 326 ht_i(ji,jj,jl) = zswitch(ji,jj) * zh_i_ini(jl,zhemis(ji,jj)) ! ice thickness 327 ht_s(ji,jj,jl) = ht_i(ji,jj,jl) * ( zht_s_ini( zhemis(ji,jj) ) / zht_i_ini( zhemis(ji,jj) ) ) ! snow depth 328 sm_i(ji,jj,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min ! salinity 329 o_i(ji,jj,jl) = zswitch(ji,jj) * 1._wp + ( 1._wp - zswitch(ji,jj) ) ! age 330 t_su(ji,jj,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt ! surf temp 322 331 323 332 ! This case below should not be used if (ht_s/ht_i) is ok in namelist … … 343 352 DO jj = 1, jpj 344 353 DO ji = 1, jpi 345 t_s(ji,jj,jk,jl) = z idto(ji,jj) * 270.0 + ( 1._wp - zidto(ji,jj) ) * rtt354 t_s(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 346 355 ! Snow energy of melting 347 e_s(ji,jj,jk,jl) = z idto(ji,jj) * rhosn * ( cpic * ( rtt - t_s(ji,jj,jk,jl) ) + lfus )356 e_s(ji,jj,jk,jl) = zswitch(ji,jj) * rhosn * ( cpic * ( rtt - t_s(ji,jj,jk,jl) ) + lfus ) 348 357 ! Change dimensions 349 358 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) / unit_fac 350 ! Multiply by volume, so that heat content in 10^9Joules359 ! Multiply by volume, so that heat content in Joules 351 360 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * area(ji,jj) * v_s(ji,jj,jl) / nlay_s 352 361 END DO ! ji … … 360 369 DO jj = 1, jpj 361 370 DO ji = 1, jpi 362 t_i(ji,jj,jk,jl) = z idto(ji,jj) * 270.00 + ( 1._wp - zidto(ji,jj) ) * rtt363 s_i(ji,jj,jk,jl) = z idto(ji,jj) * zsm_i_ini(zhemis(ji,jj)) + ( 1._wp - zidto(ji,jj) ) * s_i_min371 t_i(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 372 s_i(ji,jj,jk,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min 364 373 ztmelts = - tmut * s_i(ji,jj,jk,jl) + rtt !Melting temperature in K 365 374 366 375 ! heat content per unit volume 367 e_i(ji,jj,jk,jl) = z idto(ji,jj) * rhoic * ( cpic * ( ztmelts - t_i(ji,jj,jk,jl) ) &376 e_i(ji,jj,jk,jl) = zswitch(ji,jj) * rhoic * ( cpic * ( ztmelts - t_i(ji,jj,jk,jl) ) & 368 377 + lfus * ( 1._wp - (ztmelts-rtt) / MIN((t_i(ji,jj,jk,jl)-rtt),-epsi20) ) & 369 378 - rcp * ( ztmelts - rtt ) ) … … 372 381 e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) / unit_fac 373 382 374 ! Mutliply by ice volume, and divide by number of layers 375 ! to get heat content in 10^9 J 383 ! Mutliply by ice volume, and divide by number of layers to get heat content in J 376 384 e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * area(ji,jj) * v_i(ji,jj,jl) / nlay_i 377 385 END DO ! ji … … 380 388 END DO ! jk 381 389 382 !-------------------------------------------------------------------- 383 ! 4) Global ice variables for output diagnostics | 384 !-------------------------------------------------------------------- 385 fsbbq (:,:) = 0._wp 386 u_ice (:,:) = 0._wp 387 v_ice (:,:) = 0._wp 388 stress1_i(:,:) = 0._wp 389 stress2_i(:,:) = 0._wp 390 stress12_i(:,:) = 0._wp 391 392 # if defined key_coupled 393 albege(:,:) = 0.8 * tms(:,:) 394 # endif 395 396 !-------------------------------------------------------------------- 397 ! 5) Moments for advection 398 !-------------------------------------------------------------------- 399 400 sxopw (:,:) = 0._wp 401 syopw (:,:) = 0._wp 402 sxxopw(:,:) = 0._wp 403 syyopw(:,:) = 0._wp 404 sxyopw(:,:) = 0._wp 405 406 sxice (:,:,:) = 0._wp ; sxsn (:,:,:) = 0._wp ; sxa (:,:,:) = 0._wp 407 syice (:,:,:) = 0._wp ; sysn (:,:,:) = 0._wp ; sya (:,:,:) = 0._wp 408 sxxice(:,:,:) = 0._wp ; sxxsn(:,:,:) = 0._wp ; sxxa (:,:,:) = 0._wp 409 syyice(:,:,:) = 0._wp ; syysn(:,:,:) = 0._wp ; syya (:,:,:) = 0._wp 410 sxyice(:,:,:) = 0._wp ; sxysn(:,:,:) = 0._wp ; sxya (:,:,:) = 0._wp 411 412 sxc0 (:,:,:) = 0._wp ; sxe (:,:,:,:)= 0._wp 413 syc0 (:,:,:) = 0._wp ; sye (:,:,:,:)= 0._wp 414 sxxc0 (:,:,:) = 0._wp ; sxxe (:,:,:,:)= 0._wp 415 syyc0 (:,:,:) = 0._wp ; syye (:,:,:,:)= 0._wp 416 sxyc0 (:,:,:) = 0._wp ; sxye (:,:,:,:)= 0._wp 417 418 sxsal (:,:,:) = 0._wp 419 sysal (:,:,:) = 0._wp 420 sxxsal (:,:,:) = 0._wp 421 syysal (:,:,:) = 0._wp 422 sxysal (:,:,:) = 0._wp 423 424 sxage (:,:,:) = 0._wp 425 syage (:,:,:) = 0._wp 426 sxxage (:,:,:) = 0._wp 427 syyage (:,:,:) = 0._wp 428 sxyage (:,:,:) = 0._wp 429 430 !-------------------------------------------------------------------- 431 ! 6) Lateral boundary conditions | 432 !-------------------------------------------------------------------- 433 390 tn_ice (:,:,:) = t_su (:,:,:) 391 392 !-------------------------------------------------------------------- 393 ! 4) Lateral boundary conditions | 394 !-------------------------------------------------------------------- 434 395 DO jl = 1, jpl 435 396 … … 445 406 CALL lbc_lnk( o_i(:,:,jl) , 'T', 1. ) 446 407 CALL lbc_lnk( t_su(:,:,jl) , 'T', 1. ) 408 CALL lbc_lnk( tn_ice(:,:,jl) , 'T', 1. ) 447 409 DO jk = 1, nlay_s 448 410 CALL lbc_lnk(t_s(:,:,jk,jl), 'T', 1. ) … … 454 416 END DO 455 417 ! 456 a_i(:,:,jl) = tms(:,:) * a_i(:,:,jl)418 ! a_i(:,:,jl) = tms(:,:) * a_i(:,:,jl) 457 419 END DO 420 421 ELSE 422 ! if ln_limini=false 423 a_i (:,:,:) = 0._wp 424 v_i (:,:,:) = 0._wp 425 v_s (:,:,:) = 0._wp 426 smv_i(:,:,:) = 0._wp 427 oa_i (:,:,:) = 0._wp 428 ht_i (:,:,:) = 0._wp 429 ht_s (:,:,:) = 0._wp 430 sm_i (:,:,:) = 0._wp 431 o_i (:,:,:) = 0._wp 432 433 e_i(:,:,:,:) = 0._wp 434 e_s(:,:,:,:) = 0._wp 435 436 DO jl = 1, jpl 437 DO jk = 1, nlay_i 438 t_i(:,:,jk,jl) = rtt * tms(:,:) 439 END DO 440 DO jk = 1, nlay_s 441 t_s(:,:,jk,jl) = rtt * tms(:,:) 442 END DO 443 END DO 444 445 ENDIF ! ln_limini 458 446 459 447 at_i (:,:) = 0.0_wp … … 461 449 at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 462 450 END DO 463 464 451 CALL lbc_lnk( at_i , 'T', 1. ) 465 at_i(:,:) = tms(:,:) * at_i(:,:) ! put 0 over land 452 ! at_i(:,:) = tms(:,:) * at_i(:,:) 466 453 ! 467 CALL lbc_lnk( fsbbq , 'T', 1. ) 468 ! 469 !-------------------------------------------------------------------- 470 ! 6) ???? | 471 !-------------------------------------------------------------------- 472 tn_ice (:,:,:) = t_su (:,:,:) 473 474 CALL wrk_dealloc( jpi, jpj, zidto ) 454 !-------------------------------------------------------------------- 455 ! 5) Global ice variables for output diagnostics | 456 !-------------------------------------------------------------------- 457 u_ice (:,:) = 0._wp 458 v_ice (:,:) = 0._wp 459 stress1_i(:,:) = 0._wp 460 stress2_i(:,:) = 0._wp 461 stress12_i(:,:) = 0._wp 462 463 !-------------------------------------------------------------------- 464 ! 6) Moments for advection 465 !-------------------------------------------------------------------- 466 467 sxopw (:,:) = 0._wp 468 syopw (:,:) = 0._wp 469 sxxopw(:,:) = 0._wp 470 syyopw(:,:) = 0._wp 471 sxyopw(:,:) = 0._wp 472 473 sxice (:,:,:) = 0._wp ; sxsn (:,:,:) = 0._wp ; sxa (:,:,:) = 0._wp 474 syice (:,:,:) = 0._wp ; sysn (:,:,:) = 0._wp ; sya (:,:,:) = 0._wp 475 sxxice(:,:,:) = 0._wp ; sxxsn(:,:,:) = 0._wp ; sxxa (:,:,:) = 0._wp 476 syyice(:,:,:) = 0._wp ; syysn(:,:,:) = 0._wp ; syya (:,:,:) = 0._wp 477 sxyice(:,:,:) = 0._wp ; sxysn(:,:,:) = 0._wp ; sxya (:,:,:) = 0._wp 478 479 sxc0 (:,:,:) = 0._wp ; sxe (:,:,:,:)= 0._wp 480 syc0 (:,:,:) = 0._wp ; sye (:,:,:,:)= 0._wp 481 sxxc0 (:,:,:) = 0._wp ; sxxe (:,:,:,:)= 0._wp 482 syyc0 (:,:,:) = 0._wp ; syye (:,:,:,:)= 0._wp 483 sxyc0 (:,:,:) = 0._wp ; sxye (:,:,:,:)= 0._wp 484 485 sxsal (:,:,:) = 0._wp 486 sysal (:,:,:) = 0._wp 487 sxxsal (:,:,:) = 0._wp 488 syysal (:,:,:) = 0._wp 489 sxysal (:,:,:) = 0._wp 490 491 sxage (:,:,:) = 0._wp 492 syage (:,:,:) = 0._wp 493 sxxage (:,:,:) = 0._wp 494 syyage (:,:,:) = 0._wp 495 sxyage (:,:,:) = 0._wp 496 497 498 CALL wrk_dealloc( jpi, jpj, zswitch ) 475 499 CALL wrk_dealloc( jpi, jpj, zhemis ) 476 CALL wrk_dealloc( jpl, 2, zh t_i_ini, za_i_ini, zv_i_ini )477 CALL wrk_dealloc( 2, zh m_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini )500 CALL wrk_dealloc( jpl, 2, zh_i_ini, za_i_ini, zv_i_ini ) 501 CALL wrk_dealloc( 2, zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 478 502 479 503 END SUBROUTINE lim_istate … … 495 519 !! 8.5 ! 07-11 (M. Vancoppenolle) rewritten initialization 496 520 !!----------------------------------------------------------------------------- 497 NAMELIST/namiceini/ ttest, hninn, hnins, hginn, hgins, aginn, agins, sinn, sins 521 NAMELIST/namiceini/ ln_limini, thres_sst, hts_ini_n, hts_ini_s, hti_ini_n, hti_ini_s, & 522 & ati_ini_n, ati_ini_s, smi_ini_n, smi_ini_s, tmi_ini_n, tmi_ini_s 498 523 !!----------------------------------------------------------------------------- 499 524 … … 508 533 WRITE(numout,*) 'lim_istate_init : ice parameters inititialisation ' 509 534 WRITE(numout,*) '~~~~~~~~~~~~~~~' 510 WRITE(numout,*) ' threshold water temp. for initial sea-ice ttest = ', ttest 511 WRITE(numout,*) ' initial snow thickness in the north hninn = ', hninn 512 WRITE(numout,*) ' initial snow thickness in the south hnins = ', hnins 513 WRITE(numout,*) ' initial ice thickness in the north hginn = ', hginn 514 WRITE(numout,*) ' initial ice thickness in the south hgins = ', hgins 515 WRITE(numout,*) ' initial ice concentr. in the north aginn = ', aginn 516 WRITE(numout,*) ' initial ice concentr. in the north agins = ', agins 517 WRITE(numout,*) ' initial ice salinity in the north sinn = ', sinn 518 WRITE(numout,*) ' initial ice salinity in the south sins = ', sins 535 WRITE(numout,*) ' initialization with ice (T) or not (F) ln_limini = ', ln_limini 536 WRITE(numout,*) ' threshold water temp. for initial sea-ice thres_sst = ', thres_sst 537 WRITE(numout,*) ' initial snow thickness in the north hts_ini_n = ', hts_ini_n 538 WRITE(numout,*) ' initial snow thickness in the south hts_ini_s = ', hts_ini_s 539 WRITE(numout,*) ' initial ice thickness in the north hti_ini_n = ', hti_ini_n 540 WRITE(numout,*) ' initial ice thickness in the south hti_ini_s = ', hti_ini_s 541 WRITE(numout,*) ' initial ice concentr. in the north ati_ini_n = ', ati_ini_n 542 WRITE(numout,*) ' initial ice concentr. in the north ati_ini_s = ', ati_ini_s 543 WRITE(numout,*) ' initial ice salinity in the north smi_ini_n = ', smi_ini_n 544 WRITE(numout,*) ' initial ice salinity in the south smi_ini_s = ', smi_ini_s 545 WRITE(numout,*) ' initial ice/snw temp in the north tmi_ini_n = ', tmi_ini_n 546 WRITE(numout,*) ' initial ice/snw temp in the south tmi_ini_s = ', tmi_ini_s 519 547 ENDIF 520 548
Note: See TracChangeset
for help on using the changeset viewer.