Changeset 2372 for CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO
- Timestamp:
- 11/27/14 17:45:52 (10 years ago)
- Location:
- CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO
- Files:
-
- 15 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/cpl_oasis3.F90
r2302 r2372 290 290 IF ( llaction ) THEN 291 291 292 kinfo = OASIS_Rcv293 292 pdata(nldi:nlei, nldj:nlej,jc) = exfld(:,:) 294 293 … … 308 307 WRITE(numout,*) '****************' 309 308 ENDIF 309 310 ! Ideally we would not reuse kinfo, but define a separate variable 311 ! for use as the return code from this routine to avoid confusion 312 ! with the return code previously obtained from the coupler. 313 kinfo = OASIS_Rcv 310 314 311 315 ELSE -
CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/limistate.F90
r2251 r2372 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) 31 30 USE wrk_nemo ! work arrays 31 USE cpl_oasis3, ONLY : lk_cpl 32 32 33 33 IMPLICIT NONE … … 38 38 !! * Module variables 39 39 ! !!** 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 40 REAL(wp) :: thres_sst ! threshold water temperature for initial sea ice 41 REAL(wp) :: hts_ini_n ! initial snow thickness in the north 42 REAL(wp) :: hts_ini_s ! initial snow thickness in the south 43 REAL(wp) :: hti_ini_n ! initial ice thickness in the north 44 REAL(wp) :: hti_ini_s ! initial ice thickness in the south 45 REAL(wp) :: ati_ini_n ! initial leads area in the north 46 REAL(wp) :: ati_ini_s ! initial leads area in the south 47 REAL(wp) :: smi_ini_n ! initial salinity 48 REAL(wp) :: smi_ini_s ! initial salinity 49 REAL(wp) :: tmi_ini_n ! initial temperature 50 REAL(wp) :: tmi_ini_s ! initial temperature 51 52 LOGICAL :: ln_limini ! initialization or not 50 53 !!---------------------------------------------------------------------- 51 54 !! LIM 3.0, UCL-LOCEAN-IPSL (2008) 52 !! $Id: limistate.F90 4 335 2013-12-17 14:40:19Z clem$55 !! $Id: limistate.F90 4765 2014-09-16 12:55:11Z rblod $ 53 56 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 54 57 !!---------------------------------------------------------------------- … … 90 93 INTEGER :: i_hemis, i_fill, jl0 91 94 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 indicator95 REAL(wp), POINTER, DIMENSION(:) :: zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini 96 REAL(wp), POINTER, DIMENSION(:,:) :: zh_i_ini, za_i_ini, zv_i_ini 97 REAL(wp), POINTER, DIMENSION(:,:) :: zswitch ! ice indicator 95 98 INTEGER, POINTER, DIMENSION(:,:) :: zhemis ! hemispheric index 96 99 !-------------------------------------------------------------------- 97 100 98 CALL wrk_alloc( jpi, jpj, z idto)101 CALL wrk_alloc( jpi, jpj, zswitch ) 99 102 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 103 CALL wrk_alloc( jpl, 2, zh_i_ini, za_i_ini, zv_i_ini ) 104 CALL wrk_alloc( 2, zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 105 106 epsi20 = 1.e-20_wp 107 104 108 IF(lwp) WRITE(numout,*) 105 109 IF(lwp) WRITE(numout,*) 'lim_istate : Ice initialization ' … … 112 116 CALL lim_istate_init ! reading the initials parameters of the ice 113 117 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... 118 ! surface temperature 119 DO jl = 1, jpl ! loop over categories 120 t_su (:,:,jl) = rtt * tms(:,:) 121 tn_ice(:,:,jl) = rtt * tms(:,:) 122 END DO 123 ! Basal temperature is set to the freezing point of seawater in Kelvin 124 t_bo(:,:) = ( tfreez( tsn(:,:,1,jp_sal) ) + rt0 ) * tms(:,:) 125 126 IF( ln_limini ) THEN 117 127 118 128 !-------------------------------------------------------------------- 119 129 ! 2) Basal temperature, ice mask and hemispheric index 120 130 !-------------------------------------------------------------------- 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 131 ! ice if sst <= t-freez + thres_sst 132 DO jj = 1, jpj 126 133 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 134 IF( ( tsn(ji,jj,1,jp_tem) - ( t_bo(ji,jj) - rt0 ) ) * tms(ji,jj) >= thres_sst ) THEN 135 zswitch(ji,jj) = 0._wp * tms(ji,jj) ! no ice 136 ELSE 137 zswitch(ji,jj) = 1._wp * tms(ji,jj) ! ice 129 138 ENDIF 130 139 END DO 131 140 END DO 132 141 133 t_bo(:,:) = t_bo(:,:) + rt0 ! conversion to Kelvin134 142 135 143 ! Hemispheric index … … 153 161 ! 3.1) Hemisphere-dependent arrays 154 162 !----------------------------- 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 163 ! assign initial thickness, concentration, snow depth and salinity to an hemisphere-dependent array 164 zht_i_ini(1) = hti_ini_n ; zht_i_ini(2) = hti_ini_s ! ice thickness 165 zht_s_ini(1) = hts_ini_n ; zht_s_ini(2) = hts_ini_s ! snow depth 166 zat_i_ini(1) = ati_ini_n ; zat_i_ini(2) = ati_ini_s ! ice concentration 167 zsm_i_ini(1) = smi_ini_n ; zsm_i_ini(2) = smi_ini_s ! bulk ice salinity 168 ztm_i_ini(1) = tmi_ini_n ; ztm_i_ini(2) = tmi_ini_s ! temperature (ice and snow) 169 170 zvt_i_ini(:) = zht_i_ini(:) * zat_i_ini(:) ! ice volume 162 171 163 172 !--------------------------------------------------------------------- … … 183 192 ! *** 1 category to fill 184 193 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) 194 zh_i_ini(1,i_hemis) = zht_i_ini(i_hemis) 195 za_i_ini(1,i_hemis) = zat_i_ini(i_hemis) 196 zh_i_ini(2:jpl,i_hemis) = 0._wp 197 za_i_ini(2:jpl,i_hemis) = 0._wp 189 198 ELSE 190 199 191 ! *** >1 categores to fill192 !--- Ice thicknesses in the i_fill - 1 first categories200 ! *** >1 categores to fill 201 !--- Ice thicknesses in the i_fill - 1 first categories 193 202 DO jl = 1, i_fill - 1 194 zh t_i_ini(jl,i_hemis) = 0.5 * ( hi_max(jl) + hi_max(jl-1) )203 zh_i_ini(jl,i_hemis) = 0.5 * ( hi_max(jl) + hi_max(jl-1) ) 195 204 END DO 196 197 !--- jl0: most likely index where cc will be maximum205 206 !--- jl0: most likely index where cc will be maximum 198 207 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) ) ) THEN208 IF ( ( zht_i_ini(i_hemis) .GT. hi_max(jl-1) ) .AND. & 209 ( zht_i_ini(i_hemis) .LE. hi_max(jl) ) ) THEN 201 210 jl0 = jl 202 211 ENDIF 203 212 END DO 204 213 jl0 = MIN(jl0, i_fill) 205 206 !--- Concentrations214 215 !--- Concentrations 207 216 za_i_ini(jl0,i_hemis) = zat_i_ini(i_hemis) / SQRT(REAL(jpl)) 208 217 DO jl = 1, i_fill - 1 209 218 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) ) / zsigma219 zsigma = 0.5 * zht_i_ini(i_hemis) 220 zarg = ( zh_i_ini(jl,i_hemis) - zht_i_ini(i_hemis) ) / zsigma 212 221 za_i_ini(jl,i_hemis) = za_i_ini(jl0,i_hemis) * EXP(-zarg**2) 213 222 ENDIF 214 END DO 215 223 END DO 224 216 225 zA = 0. ! sum of the areas in the jpl categories 217 226 DO jl = 1, i_fill - 1 … … 221 230 IF ( i_fill .LT. jpl ) za_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 222 231 223 !--- Ice thickness in the last category232 !--- Ice thickness in the last category 224 233 zV = 0. ! sum of the volumes of the N-1 categories 225 234 DO jl = 1, i_fill - 1 226 zV = zV + za_i_ini(jl,i_hemis)*zh t_i_ini(jl,i_hemis)235 zV = zV + za_i_ini(jl,i_hemis)*zh_i_ini(jl,i_hemis) 227 236 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)237 zh_i_ini(i_fill,i_hemis) = ( zvt_i_ini(i_hemis) - zV ) / za_i_ini(i_fill,i_hemis) 238 IF ( i_fill .LT. jpl ) zh_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 239 240 !--- volumes 241 zv_i_ini(:,i_hemis) = za_i_ini(:,i_hemis) * zh_i_ini(:,i_hemis) 233 242 IF ( i_fill .LT. jpl ) zv_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 234 243 … … 262 271 263 272 ! 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) ) THEN273 IF ( zh_i_ini(i_fill, i_hemis) .GT. hi_max(i_fill-1) ) THEN 265 274 ztest_3 = 1 266 275 ELSE 267 276 ! 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)277 IF(lwp) WRITE(numout,*) ' * TEST 3 THICKNESS OF THE LAST CATEGORY OUT OF BOUNDS *** zh_i_ini(i_fill,i_hemis) = ', & 278 zh_i_ini(i_fill,i_hemis), ' hi_max(jpl-1) = ', hi_max(i_fill-1) 270 279 ztest_3 = 0 271 280 ENDIF … … 291 300 IF ( ztests .NE. 4 ) THEN 292 301 WRITE(numout,*) 293 WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' 294 WRITE(numout,*), ' !!!! RED ALERT !!! ' 295 WRITE(numout,*), ' !!!! BIIIIP BIIIP BIIIIP BIIIIP !!!' 302 WRITE(numout,*), ' !!!! ALERT !!! ' 296 303 WRITE(numout,*), ' !!!! Something is wrong in the LIM3 initialization procedure ' 297 WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! '298 304 WRITE(numout,*) 299 305 WRITE(numout,*), ' *** ztests is not equal to 4 ' 300 306 WRITE(numout,*), ' *** ztest_i (i=1,4) = ', ztest_1, ztest_2, ztest_3, ztest_4 301 307 WRITE(numout,*), ' zat_i_ini : ', zat_i_ini(i_hemis) 302 WRITE(numout,*), ' zh m_i_ini : ', zhm_i_ini(i_hemis)308 WRITE(numout,*), ' zht_i_ini : ', zht_i_ini(i_hemis) 303 309 ENDIF ! ztests .NE. 4 304 310 ENDIF … … 314 320 DO jj = 1, jpj 315 321 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 temp322 a_i(ji,jj,jl) = zswitch(ji,jj) * za_i_ini (jl,zhemis(ji,jj)) ! concentration 323 ht_i(ji,jj,jl) = zswitch(ji,jj) * zh_i_ini(jl,zhemis(ji,jj)) ! ice thickness 324 ht_s(ji,jj,jl) = ht_i(ji,jj,jl) * ( zht_s_ini( zhemis(ji,jj) ) / zht_i_ini( zhemis(ji,jj) ) ) ! snow depth 325 sm_i(ji,jj,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min ! salinity 326 o_i(ji,jj,jl) = zswitch(ji,jj) * 1._wp + ( 1._wp - zswitch(ji,jj) ) ! age 327 t_su(ji,jj,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt ! surf temp 322 328 323 329 ! This case below should not be used if (ht_s/ht_i) is ok in namelist … … 343 349 DO jj = 1, jpj 344 350 DO ji = 1, jpi 345 t_s(ji,jj,jk,jl) = z idto(ji,jj) * 270.0 + ( 1._wp - zidto(ji,jj) ) * rtt351 t_s(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 346 352 ! 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 )353 e_s(ji,jj,jk,jl) = zswitch(ji,jj) * rhosn * ( cpic * ( rtt - t_s(ji,jj,jk,jl) ) + lfus ) 348 354 ! Change dimensions 349 355 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) / unit_fac 350 ! Multiply by volume, so that heat content in 10^9Joules356 ! Multiply by volume, so that heat content in Joules 351 357 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * area(ji,jj) * v_s(ji,jj,jl) / nlay_s 352 358 END DO ! ji … … 360 366 DO jj = 1, jpj 361 367 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_min368 t_i(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 369 s_i(ji,jj,jk,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min 364 370 ztmelts = - tmut * s_i(ji,jj,jk,jl) + rtt !Melting temperature in K 365 371 366 372 ! 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) ) &373 e_i(ji,jj,jk,jl) = zswitch(ji,jj) * rhoic * ( cpic * ( ztmelts - t_i(ji,jj,jk,jl) ) & 368 374 + lfus * ( 1._wp - (ztmelts-rtt) / MIN((t_i(ji,jj,jk,jl)-rtt),-epsi20) ) & 369 375 - rcp * ( ztmelts - rtt ) ) … … 372 378 e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) / unit_fac 373 379 374 ! Mutliply by ice volume, and divide by number of layers 375 ! to get heat content in 10^9 J 380 ! Mutliply by ice volume, and divide by number of layers to get heat content in J 376 381 e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * area(ji,jj) * v_i(ji,jj,jl) / nlay_i 377 382 END DO ! ji … … 380 385 END DO ! jk 381 386 387 tn_ice (:,:,:) = t_su (:,:,:) 388 389 ELSE 390 ! if ln_limini=false 391 a_i (:,:,:) = 0._wp 392 v_i (:,:,:) = 0._wp 393 v_s (:,:,:) = 0._wp 394 smv_i(:,:,:) = 0._wp 395 oa_i (:,:,:) = 0._wp 396 ht_i (:,:,:) = 0._wp 397 ht_s (:,:,:) = 0._wp 398 sm_i (:,:,:) = 0._wp 399 o_i (:,:,:) = 0._wp 400 401 e_i(:,:,:,:) = 0._wp 402 e_s(:,:,:,:) = 0._wp 403 404 DO jl = 1, jpl 405 DO jk = 1, nlay_i 406 t_i(:,:,jk,jl) = rtt * tms(:,:) 407 END DO 408 DO jk = 1, nlay_s 409 t_s(:,:,jk,jl) = rtt * tms(:,:) 410 END DO 411 END DO 412 413 ENDIF ! ln_limini 414 415 at_i (:,:) = 0.0_wp 416 DO jl = 1, jpl 417 at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 418 END DO 419 ! 382 420 !-------------------------------------------------------------------- 383 421 ! 4) Global ice variables for output diagnostics | 384 422 !-------------------------------------------------------------------- 385 fsbbq (:,:) = 0._wp386 423 u_ice (:,:) = 0._wp 387 424 v_ice (:,:) = 0._wp … … 390 427 stress12_i(:,:) = 0._wp 391 428 392 393 429 !-------------------------------------------------------------------- 394 430 ! 5) Moments for advection … … 425 461 sxyage (:,:,:) = 0._wp 426 462 427 !-------------------------------------------------------------------- 428 ! 6) Lateral boundary conditions | 429 !-------------------------------------------------------------------- 430 431 DO jl = 1, jpl 432 433 CALL lbc_lnk( a_i(:,:,jl) , 'T', 1. ) 434 CALL lbc_lnk( v_i(:,:,jl) , 'T', 1. ) 435 CALL lbc_lnk( v_s(:,:,jl) , 'T', 1. ) 436 CALL lbc_lnk( smv_i(:,:,jl), 'T', 1. ) 437 CALL lbc_lnk( oa_i(:,:,jl) , 'T', 1. ) 438 439 CALL lbc_lnk( ht_i(:,:,jl) , 'T', 1. ) 440 CALL lbc_lnk( ht_s(:,:,jl) , 'T', 1. ) 441 CALL lbc_lnk( sm_i(:,:,jl) , 'T', 1. ) 442 CALL lbc_lnk( o_i(:,:,jl) , 'T', 1. ) 443 CALL lbc_lnk( t_su(:,:,jl) , 'T', 1. ) 444 DO jk = 1, nlay_s 445 CALL lbc_lnk(t_s(:,:,jk,jl), 'T', 1. ) 446 CALL lbc_lnk(e_s(:,:,jk,jl), 'T', 1. ) 447 END DO 448 DO jk = 1, nlay_i 449 CALL lbc_lnk(t_i(:,:,jk,jl), 'T', 1. ) 450 CALL lbc_lnk(e_i(:,:,jk,jl), 'T', 1. ) 451 END DO 452 ! 453 a_i(:,:,jl) = tms(:,:) * a_i(:,:,jl) 454 END DO 455 456 at_i (:,:) = 0.0_wp 457 DO jl = 1, jpl 458 at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 459 END DO 460 461 CALL lbc_lnk( at_i , 'T', 1. ) 462 at_i(:,:) = tms(:,:) * at_i(:,:) ! put 0 over land 463 ! 464 CALL lbc_lnk( fsbbq , 'T', 1. ) 465 ! 466 !-------------------------------------------------------------------- 467 ! 6) ???? | 468 !-------------------------------------------------------------------- 469 tn_ice (:,:,:) = t_su (:,:,:) 470 471 CALL wrk_dealloc( jpi, jpj, zidto ) 463 464 CALL wrk_dealloc( jpi, jpj, zswitch ) 472 465 CALL wrk_dealloc( jpi, jpj, zhemis ) 473 CALL wrk_dealloc( jpl, 2, zh t_i_ini, za_i_ini, zv_i_ini )474 CALL wrk_dealloc( 2, zh m_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini )466 CALL wrk_dealloc( jpl, 2, zh_i_ini, za_i_ini, zv_i_ini ) 467 CALL wrk_dealloc( 2, zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 475 468 476 469 END SUBROUTINE lim_istate … … 492 485 !! 8.5 ! 07-11 (M. Vancoppenolle) rewritten initialization 493 486 !!----------------------------------------------------------------------------- 494 NAMELIST/namiceini/ ttest, hninn, hnins, hginn, hgins, aginn, agins, sinn, sins495 !487 NAMELIST/namiceini/ ln_limini, thres_sst, hts_ini_n, hts_ini_s, hti_ini_n, hti_ini_s, & 488 & ati_ini_n, ati_ini_s, smi_ini_n, smi_ini_s, tmi_ini_n, tmi_ini_s 496 489 INTEGER :: ios ! Local integer output status for namelist read 497 490 !!----------------------------------------------------------------------------- … … 513 506 WRITE(numout,*) 'lim_istate_init : ice parameters inititialisation ' 514 507 WRITE(numout,*) '~~~~~~~~~~~~~~~' 515 WRITE(numout,*) ' threshold water temp. for initial sea-ice ttest = ', ttest 516 WRITE(numout,*) ' initial snow thickness in the north hninn = ', hninn 517 WRITE(numout,*) ' initial snow thickness in the south hnins = ', hnins 518 WRITE(numout,*) ' initial ice thickness in the north hginn = ', hginn 519 WRITE(numout,*) ' initial ice thickness in the south hgins = ', hgins 520 WRITE(numout,*) ' initial ice concentr. in the north aginn = ', aginn 521 WRITE(numout,*) ' initial ice concentr. in the north agins = ', agins 522 WRITE(numout,*) ' initial ice salinity in the north sinn = ', sinn 523 WRITE(numout,*) ' initial ice salinity in the south sins = ', sins 508 WRITE(numout,*) ' initialization with ice (T) or not (F) ln_limini = ', ln_limini 509 WRITE(numout,*) ' threshold water temp. for initial sea-ice thres_sst = ', thres_sst 510 WRITE(numout,*) ' initial snow thickness in the north hts_ini_n = ', hts_ini_n 511 WRITE(numout,*) ' initial snow thickness in the south hts_ini_s = ', hts_ini_s 512 WRITE(numout,*) ' initial ice thickness in the north hti_ini_n = ', hti_ini_n 513 WRITE(numout,*) ' initial ice thickness in the south hti_ini_s = ', hti_ini_s 514 WRITE(numout,*) ' initial ice concentr. in the north ati_ini_n = ', ati_ini_n 515 WRITE(numout,*) ' initial ice concentr. in the north ati_ini_s = ', ati_ini_s 516 WRITE(numout,*) ' initial ice salinity in the north smi_ini_n = ', smi_ini_n 517 WRITE(numout,*) ' initial ice salinity in the south smi_ini_s = ', smi_ini_s 518 WRITE(numout,*) ' initial ice/snw temp in the north tmi_ini_n = ', tmi_ini_n 519 WRITE(numout,*) ' initial ice/snw temp in the south tmi_ini_s = ', tmi_ini_s 524 520 ENDIF 525 521 -
CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/sbccpl.F90
r2251 r2372 1379 1379 END SELECT 1380 1380 CASE( 'mixed oce-ice' ) 1381 ztmp1(:,:) = ( tsn(:,:,1, 1) + rt0 ) * zfr_l(:,:)1381 ztmp1(:,:) = ( tsn(:,:,1,jp_tem) + rt0 ) * zfr_l(:,:) 1382 1382 DO jl=1,jpl 1383 1383 ztmp1(:,:) = ztmp1(:,:) + tn_ice(:,:,jl) * a_i(:,:,jl) -
CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/sbcmod.F90
r2251 r2372 187 187 fmmflx(:,:) = 0.0_wp ! freezing-melting array initialisation 188 188 189 taum(:,:) = 0.0_wp ! Initialise taum for use in gls in case of reduced restart 190 189 191 ! ! restartability 190 192 IF( MOD( nitend - nit000 + 1, nn_fsbc) /= 0 .OR. &
Note: See TracChangeset
for help on using the changeset viewer.