Changeset 5034 for branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
- Timestamp:
- 2015-01-15T14:48:42+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
r4624 r5034 6 6 !! History : 2.0 ! 2004-01 (C. Ethe, G. Madec) Original code 7 7 !! 4.0 ! 2011-02 (G. Madec) dynamical allocation 8 !! - ! 201 2 (C. Rousset) add par_oce (for jp_sal)...bug?8 !! - ! 2014 (C. Rousset) add N/S initializations 9 9 !!---------------------------------------------------------------------- 10 10 #if defined key_lim3 … … 26 26 USE dom_ice ! sea-ice domain 27 27 USE in_out_manager ! I/O manager 28 USE lbclnk ! lateral boundary condition - MPP exchanges29 28 USE lib_mpp ! MPP library 30 29 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) … … 36 35 PUBLIC lim_istate ! routine called by lim_init.F90 37 36 38 !! * Module variables39 37 ! !!** init namelist (namiceini) ** 40 REAL(wp) :: ttest ! threshold water temperature for initial sea ice 41 REAL(wp) :: hninn ! initial snow thickness in the north 42 REAL(wp) :: hnins ! initial snow thickness in the south 43 REAL(wp) :: hginn ! initial ice thickness in the north 44 REAL(wp) :: hgins ! initial ice thickness in the south 45 REAL(wp) :: aginn ! initial leads area in the north 46 REAL(wp) :: agins ! initial leads area in the south 47 REAL(wp) :: sinn ! initial salinity 48 REAL(wp) :: sins 49 38 REAL(wp) :: thres_sst ! threshold water temperature for initial sea ice 39 REAL(wp) :: hts_ini_n ! initial snow thickness in the north 40 REAL(wp) :: hts_ini_s ! initial snow thickness in the south 41 REAL(wp) :: hti_ini_n ! initial ice thickness in the north 42 REAL(wp) :: hti_ini_s ! initial ice thickness in the south 43 REAL(wp) :: ati_ini_n ! initial leads area in the north 44 REAL(wp) :: ati_ini_s ! initial leads area in the south 45 REAL(wp) :: smi_ini_n ! initial salinity 46 REAL(wp) :: smi_ini_s ! initial salinity 47 REAL(wp) :: tmi_ini_n ! initial temperature 48 REAL(wp) :: tmi_ini_s ! initial temperature 49 50 LOGICAL :: ln_limini ! initialization or not 50 51 !!---------------------------------------------------------------------- 51 52 !! LIM 3.0, UCL-LOCEAN-IPSL (2008) … … 53 54 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 54 55 !!---------------------------------------------------------------------- 55 56 56 CONTAINS 57 57 … … 77 77 !! 78 78 !! ** Notes : o_i, t_su, t_s, t_i, s_i must be filled everywhere, even 79 !! where there is no ice (clem: I do not know why but it is mandatory)79 !! where there is no ice (clem: I do not know why, is it mandatory?) 80 80 !! 81 81 !! History : … … 90 90 INTEGER :: i_hemis, i_fill, jl0 91 91 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 indicator92 REAL(wp), POINTER, DIMENSION(:) :: zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini 93 REAL(wp), POINTER, DIMENSION(:,:) :: zh_i_ini, za_i_ini, zv_i_ini 94 REAL(wp), POINTER, DIMENSION(:,:) :: zswitch ! ice indicator 95 95 INTEGER, POINTER, DIMENSION(:,:) :: zhemis ! hemispheric index 96 96 !-------------------------------------------------------------------- 97 97 98 CALL wrk_alloc( jpi, jpj, z idto)98 CALL wrk_alloc( jpi, jpj, zswitch ) 99 99 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 100 CALL wrk_alloc( jpl, 2, zh_i_ini, za_i_ini, zv_i_ini ) 101 CALL wrk_alloc( 2, zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 102 103 epsi20 = 1.e-20_wp 104 104 105 IF(lwp) WRITE(numout,*) 105 106 IF(lwp) WRITE(numout,*) 'lim_istate : Ice initialization ' … … 112 113 CALL lim_istate_init ! reading the initials parameters of the ice 113 114 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... 115 ! surface temperature 116 DO jl = 1, jpl ! loop over categories 117 t_su (:,:,jl) = rtt * tms(:,:) 118 tn_ice(:,:,jl) = rtt * tms(:,:) 119 END DO 120 121 ! basal temperature (considered at freezing point) 122 t_bo(:,:) = ( eos_fzp( tsn(:,:,1,jp_sal) ) + rt0 ) * tms(:,:) 123 124 IF( ln_limini ) THEN 117 125 118 126 !-------------------------------------------------------------------- 119 127 ! 2) Basal temperature, ice mask and hemispheric index 120 128 !-------------------------------------------------------------------- 121 122 ! Basal temperature is set to the freezing point of seawater in Celsius123 t_bo(:,:) = tfreez( tsn(:,:,1,jp_sal) ) * tmask(:,:,1) ! freezing/melting point of sea water [Celcius]124 129 125 130 DO jj = 1, jpj ! ice if sst <= t-freez + ttest 126 131 DO ji = 1, jpi 127 IF( tsn(ji,jj,1,jp_tem) - t_bo(ji,jj) >= ttest ) THEN ; zidto(ji,jj) = 0._wp ! no ice 128 ELSE ; zidto(ji,jj) = 1._wp ! ice 132 IF( ( tsn(ji,jj,1,jp_tem) - ( t_bo(ji,jj) - rt0 ) ) * tms(ji,jj) >= thres_sst ) THEN 133 zswitch(ji,jj) = 0._wp * tms(ji,jj) ! no ice 134 ELSE 135 zswitch(ji,jj) = 1._wp * tms(ji,jj) ! ice 129 136 ENDIF 130 137 END DO 131 138 END DO 132 139 133 t_bo(:,:) = t_bo(:,:) + rt0 ! conversion to Kelvin134 140 135 141 ! Hemispheric index 136 ! MV 2011 new initialization137 142 DO jj = 1, jpj 138 143 DO ji = 1, jpi … … 144 149 END DO 145 150 END DO 146 ! END MV 2011 new initialization147 151 148 152 !-------------------------------------------------------------------- … … 153 157 ! 3.1) Hemisphere-dependent arrays 154 158 !----------------------------- 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 159 ! assign initial thickness, concentration, snow depth and salinity to an hemisphere-dependent array 160 zht_i_ini(1) = hti_ini_n ; zht_i_ini(2) = hti_ini_s ! ice thickness 161 zht_s_ini(1) = hts_ini_n ; zht_s_ini(2) = hts_ini_s ! snow depth 162 zat_i_ini(1) = ati_ini_n ; zat_i_ini(2) = ati_ini_s ! ice concentration 163 zsm_i_ini(1) = smi_ini_n ; zsm_i_ini(2) = smi_ini_s ! bulk ice salinity 164 ztm_i_ini(1) = tmi_ini_n ; ztm_i_ini(2) = tmi_ini_s ! temperature (ice and snow) 165 166 zvt_i_ini(:) = zht_i_ini(:) * zat_i_ini(:) ! ice volume 162 167 163 168 !--------------------------------------------------------------------- … … 183 188 ! *** 1 category to fill 184 189 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) 190 zh_i_ini(1,i_hemis) = zht_i_ini(i_hemis) 191 za_i_ini(1,i_hemis) = zat_i_ini(i_hemis) 192 zh_i_ini(2:jpl,i_hemis) = 0._wp 193 za_i_ini(2:jpl,i_hemis) = 0._wp 189 194 ELSE 190 195 191 ! *** >1 categores to fill192 !--- Ice thicknesses in the i_fill - 1 first categories196 ! *** >1 categores to fill 197 !--- Ice thicknesses in the i_fill - 1 first categories 193 198 DO jl = 1, i_fill - 1 194 zh t_i_ini(jl,i_hemis) = 0.5 * ( hi_max(jl) + hi_max(jl-1) )199 zh_i_ini(jl,i_hemis) = 0.5 * ( hi_max(jl) + hi_max(jl-1) ) 195 200 END DO 196 197 !--- jl0: most likely index where cc will be maximum201 202 !--- jl0: most likely index where cc will be maximum 198 203 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) ) ) THEN204 IF ( ( zht_i_ini(i_hemis) .GT. hi_max(jl-1) ) .AND. & 205 ( zht_i_ini(i_hemis) .LE. hi_max(jl) ) ) THEN 201 206 jl0 = jl 202 207 ENDIF 203 208 END DO 204 209 jl0 = MIN(jl0, i_fill) 205 206 !--- Concentrations210 211 !--- Concentrations 207 212 za_i_ini(jl0,i_hemis) = zat_i_ini(i_hemis) / SQRT(REAL(jpl)) 208 213 DO jl = 1, i_fill - 1 209 214 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) ) / zsigma215 zsigma = 0.5 * zht_i_ini(i_hemis) 216 zarg = ( zh_i_ini(jl,i_hemis) - zht_i_ini(i_hemis) ) / zsigma 212 217 za_i_ini(jl,i_hemis) = za_i_ini(jl0,i_hemis) * EXP(-zarg**2) 213 218 ENDIF 214 END DO 215 219 END DO 220 216 221 zA = 0. ! sum of the areas in the jpl categories 217 222 DO jl = 1, i_fill - 1 … … 221 226 IF ( i_fill .LT. jpl ) za_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 222 227 223 !--- Ice thickness in the last category228 !--- Ice thickness in the last category 224 229 zV = 0. ! sum of the volumes of the N-1 categories 225 230 DO jl = 1, i_fill - 1 226 zV = zV + za_i_ini(jl,i_hemis)*zh t_i_ini(jl,i_hemis)231 zV = zV + za_i_ini(jl,i_hemis)*zh_i_ini(jl,i_hemis) 227 232 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)233 zh_i_ini(i_fill,i_hemis) = ( zvt_i_ini(i_hemis) - zV ) / za_i_ini(i_fill,i_hemis) 234 IF ( i_fill .LT. jpl ) zh_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 235 236 !--- volumes 237 zv_i_ini(:,i_hemis) = za_i_ini(:,i_hemis) * zh_i_ini(:,i_hemis) 233 238 IF ( i_fill .LT. jpl ) zv_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 234 239 … … 262 267 263 268 ! 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) ) THEN269 IF ( zh_i_ini(i_fill, i_hemis) .GT. hi_max(i_fill-1) ) THEN 265 270 ztest_3 = 1 266 271 ELSE 267 272 ! 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)273 IF(lwp) WRITE(numout,*) ' * TEST 3 THICKNESS OF THE LAST CATEGORY OUT OF BOUNDS *** zh_i_ini(i_fill,i_hemis) = ', & 274 zh_i_ini(i_fill,i_hemis), ' hi_max(jpl-1) = ', hi_max(i_fill-1) 270 275 ztest_3 = 0 271 276 ENDIF … … 288 293 289 294 IF(lwp) THEN 290 WRITE(numout,*) ,' ztests : ', ztests295 WRITE(numout,*) ' ztests : ', ztests 291 296 IF ( ztests .NE. 4 ) THEN 292 297 WRITE(numout,*) 293 WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' 294 WRITE(numout,*), ' !!!! RED ALERT !!! ' 295 WRITE(numout,*), ' !!!! BIIIIP BIIIP BIIIIP BIIIIP !!!' 296 WRITE(numout,*), ' !!!! Something is wrong in the LIM3 initialization procedure ' 297 WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' 298 WRITE(numout,*) ' !!!! ALERT !!! ' 299 WRITE(numout,*) ' !!!! Something is wrong in the LIM3 initialization procedure ' 298 300 WRITE(numout,*) 299 WRITE(numout,*) ,' *** ztests is not equal to 4 '300 WRITE(numout,*) ,' *** ztest_i (i=1,4) = ', ztest_1, ztest_2, ztest_3, ztest_4301 WRITE(numout,*) ,' zat_i_ini : ', zat_i_ini(i_hemis)302 WRITE(numout,*) , ' zhm_i_ini : ', zhm_i_ini(i_hemis)301 WRITE(numout,*) ' *** ztests is not equal to 4 ' 302 WRITE(numout,*) ' *** ztest_i (i=1,4) = ', ztest_1, ztest_2, ztest_3, ztest_4 303 WRITE(numout,*) ' zat_i_ini : ', zat_i_ini(i_hemis) 304 WRITE(numout,*) ' zht_i_ini : ', zht_i_ini(i_hemis) 303 305 ENDIF ! ztests .NE. 4 304 306 ENDIF … … 314 316 DO jj = 1, jpj 315 317 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 temp318 a_i(ji,jj,jl) = zswitch(ji,jj) * za_i_ini (jl,zhemis(ji,jj)) ! concentration 319 ht_i(ji,jj,jl) = zswitch(ji,jj) * zh_i_ini(jl,zhemis(ji,jj)) ! ice thickness 320 ht_s(ji,jj,jl) = ht_i(ji,jj,jl) * ( zht_s_ini( zhemis(ji,jj) ) / zht_i_ini( zhemis(ji,jj) ) ) ! snow depth 321 sm_i(ji,jj,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min ! salinity 322 o_i(ji,jj,jl) = zswitch(ji,jj) * 1._wp + ( 1._wp - zswitch(ji,jj) ) ! age 323 t_su(ji,jj,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt ! surf temp 322 324 323 325 ! This case below should not be used if (ht_s/ht_i) is ok in namelist … … 343 345 DO jj = 1, jpj 344 346 DO ji = 1, jpi 345 t_s(ji,jj,jk,jl) = z idto(ji,jj) * 270.0 + ( 1._wp - zidto(ji,jj) ) * rtt347 t_s(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 346 348 ! 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 )349 e_s(ji,jj,jk,jl) = zswitch(ji,jj) * rhosn * ( cpic * ( rtt - t_s(ji,jj,jk,jl) ) + lfus ) 348 350 ! Change dimensions 349 351 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) / unit_fac 350 ! Multiply by volume, so that heat content in 10^9Joules352 ! Multiply by volume, so that heat content in Joules 351 353 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * area(ji,jj) * v_s(ji,jj,jl) / nlay_s 352 354 END DO ! ji … … 360 362 DO jj = 1, jpj 361 363 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_min364 t_i(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 365 s_i(ji,jj,jk,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min 364 366 ztmelts = - tmut * s_i(ji,jj,jk,jl) + rtt !Melting temperature in K 365 367 366 368 ! 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) ) &369 e_i(ji,jj,jk,jl) = zswitch(ji,jj) * rhoic * ( cpic * ( ztmelts - t_i(ji,jj,jk,jl) ) & 368 370 + lfus * ( 1._wp - (ztmelts-rtt) / MIN((t_i(ji,jj,jk,jl)-rtt),-epsi20) ) & 369 371 - rcp * ( ztmelts - rtt ) ) … … 372 374 e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) / unit_fac 373 375 374 ! Mutliply by ice volume, and divide by number of layers 375 ! to get heat content in 10^9 J 376 ! Mutliply by ice volume, and divide by number of layers to get heat content in J 376 377 e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * area(ji,jj) * v_i(ji,jj,jl) / nlay_i 377 378 END DO ! ji … … 380 381 END DO ! jk 381 382 383 tn_ice (:,:,:) = t_su (:,:,:) 384 385 ELSE 386 ! if ln_limini=false 387 a_i (:,:,:) = 0._wp 388 v_i (:,:,:) = 0._wp 389 v_s (:,:,:) = 0._wp 390 smv_i(:,:,:) = 0._wp 391 oa_i (:,:,:) = 0._wp 392 ht_i (:,:,:) = 0._wp 393 ht_s (:,:,:) = 0._wp 394 sm_i (:,:,:) = 0._wp 395 o_i (:,:,:) = 0._wp 396 397 e_i(:,:,:,:) = 0._wp 398 e_s(:,:,:,:) = 0._wp 399 400 DO jl = 1, jpl 401 DO jk = 1, nlay_i 402 t_i(:,:,jk,jl) = rtt * tms(:,:) 403 END DO 404 DO jk = 1, nlay_s 405 t_s(:,:,jk,jl) = rtt * tms(:,:) 406 END DO 407 END DO 408 409 ENDIF ! ln_limini 410 411 at_i (:,:) = 0.0_wp 412 DO jl = 1, jpl 413 at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 414 END DO 415 ! 382 416 !-------------------------------------------------------------------- 383 417 ! 4) Global ice variables for output diagnostics | 384 418 !-------------------------------------------------------------------- 385 fsbbq (:,:) = 0._wp386 419 u_ice (:,:) = 0._wp 387 420 v_ice (:,:) = 0._wp … … 390 423 stress12_i(:,:) = 0._wp 391 424 392 # if defined key_coupled393 albege(:,:) = 0.8 * tms(:,:)394 # endif395 396 425 !-------------------------------------------------------------------- 397 426 ! 5) Moments for advection … … 428 457 sxyage (:,:,:) = 0._wp 429 458 430 !-------------------------------------------------------------------- 431 ! 6) Lateral boundary conditions | 432 !-------------------------------------------------------------------- 433 434 DO jl = 1, jpl 435 436 CALL lbc_lnk( a_i(:,:,jl) , 'T', 1. ) 437 CALL lbc_lnk( v_i(:,:,jl) , 'T', 1. ) 438 CALL lbc_lnk( v_s(:,:,jl) , 'T', 1. ) 439 CALL lbc_lnk( smv_i(:,:,jl), 'T', 1. ) 440 CALL lbc_lnk( oa_i(:,:,jl) , 'T', 1. ) 441 442 CALL lbc_lnk( ht_i(:,:,jl) , 'T', 1. ) 443 CALL lbc_lnk( ht_s(:,:,jl) , 'T', 1. ) 444 CALL lbc_lnk( sm_i(:,:,jl) , 'T', 1. ) 445 CALL lbc_lnk( o_i(:,:,jl) , 'T', 1. ) 446 CALL lbc_lnk( t_su(:,:,jl) , 'T', 1. ) 447 DO jk = 1, nlay_s 448 CALL lbc_lnk(t_s(:,:,jk,jl), 'T', 1. ) 449 CALL lbc_lnk(e_s(:,:,jk,jl), 'T', 1. ) 450 END DO 451 DO jk = 1, nlay_i 452 CALL lbc_lnk(t_i(:,:,jk,jl), 'T', 1. ) 453 CALL lbc_lnk(e_i(:,:,jk,jl), 'T', 1. ) 454 END DO 455 ! 456 a_i(:,:,jl) = tms(:,:) * a_i(:,:,jl) 457 END DO 458 459 at_i (:,:) = 0.0_wp 460 DO jl = 1, jpl 461 at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 462 END DO 463 464 CALL lbc_lnk( at_i , 'T', 1. ) 465 at_i(:,:) = tms(:,:) * at_i(:,:) ! put 0 over land 466 ! 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 ) 459 460 CALL wrk_dealloc( jpi, jpj, zswitch ) 475 461 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 )462 CALL wrk_dealloc( jpl, 2, zh_i_ini, za_i_ini, zv_i_ini ) 463 CALL wrk_dealloc( 2, zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 478 464 479 465 END SUBROUTINE lim_istate … … 495 481 !! 8.5 ! 07-11 (M. Vancoppenolle) rewritten initialization 496 482 !!----------------------------------------------------------------------------- 497 NAMELIST/namiceini/ ttest, hninn, hnins, hginn, hgins, aginn, agins, sinn, sins498 !483 NAMELIST/namiceini/ ln_limini, thres_sst, hts_ini_n, hts_ini_s, hti_ini_n, hti_ini_s, & 484 & ati_ini_n, ati_ini_s, smi_ini_n, smi_ini_s, tmi_ini_n, tmi_ini_s 499 485 INTEGER :: ios ! Local integer output status for namelist read 500 486 !!----------------------------------------------------------------------------- … … 516 502 WRITE(numout,*) 'lim_istate_init : ice parameters inititialisation ' 517 503 WRITE(numout,*) '~~~~~~~~~~~~~~~' 518 WRITE(numout,*) ' threshold water temp. for initial sea-ice ttest = ', ttest 519 WRITE(numout,*) ' initial snow thickness in the north hninn = ', hninn 520 WRITE(numout,*) ' initial snow thickness in the south hnins = ', hnins 521 WRITE(numout,*) ' initial ice thickness in the north hginn = ', hginn 522 WRITE(numout,*) ' initial ice thickness in the south hgins = ', hgins 523 WRITE(numout,*) ' initial ice concentr. in the north aginn = ', aginn 524 WRITE(numout,*) ' initial ice concentr. in the north agins = ', agins 525 WRITE(numout,*) ' initial ice salinity in the north sinn = ', sinn 526 WRITE(numout,*) ' initial ice salinity in the south sins = ', sins 504 WRITE(numout,*) ' initialization with ice (T) or not (F) ln_limini = ', ln_limini 505 WRITE(numout,*) ' threshold water temp. for initial sea-ice thres_sst = ', thres_sst 506 WRITE(numout,*) ' initial snow thickness in the north hts_ini_n = ', hts_ini_n 507 WRITE(numout,*) ' initial snow thickness in the south hts_ini_s = ', hts_ini_s 508 WRITE(numout,*) ' initial ice thickness in the north hti_ini_n = ', hti_ini_n 509 WRITE(numout,*) ' initial ice thickness in the south hti_ini_s = ', hti_ini_s 510 WRITE(numout,*) ' initial ice concentr. in the north ati_ini_n = ', ati_ini_n 511 WRITE(numout,*) ' initial ice concentr. in the north ati_ini_s = ', ati_ini_s 512 WRITE(numout,*) ' initial ice salinity in the north smi_ini_n = ', smi_ini_n 513 WRITE(numout,*) ' initial ice salinity in the south smi_ini_s = ', smi_ini_s 514 WRITE(numout,*) ' initial ice/snw temp in the north tmi_ini_n = ', tmi_ini_n 515 WRITE(numout,*) ' initial ice/snw temp in the south tmi_ini_s = ', tmi_ini_s 527 516 ENDIF 528 517
Note: See TracChangeset
for help on using the changeset viewer.