- Timestamp:
- 2015-02-02T11:28:50+01:00 (9 years ago)
- Location:
- branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r5047 r5048 165 165 REAL(wp), PUBLIC :: r1_rdtice !: = 1. / rdt_ice 166 166 167 ! !!** ice-dynamic namelist (namicedyn) ** 167 ! Clem je sais pas ou les mettre 168 INTEGER , PUBLIC :: nn_hibnd !: thickness category boundaries: tanh function (1), or h^(-alpha) function (2) 169 REAL(wp), PUBLIC :: rn_hibnd !: mean thickness of the domain (used to compute category boundaries, nn_hibnd = 2 only) 170 171 ! !!** ice-dynamics namelist (namicedyn) ** 168 172 INTEGER , PUBLIC :: nevp !: number of iterations for subcycling 169 173 REAL(wp), PUBLIC :: cw !: drag coefficient for oceanic stress … … 191 195 ! ! 3 - salinity profile, constant in time 192 196 INTEGER , PUBLIC :: thcon_i_swi !: thermal conductivity: =0 Untersteiner (1964) ; =1 Pringle et al (2007) 197 INTEGER , PUBLIC :: nn_monocat !: virtual ITD mono-category parameterizations (1) or not (0) 193 198 194 199 ! !!** ice-mechanical redistribution namelist (namiceitdme) … … 260 265 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wfx_res !: residual component of wfx_ice [kg/m2] 261 266 267 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: afx_tot !: ice concentration tendency (total) [s-1] 268 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: afx_thd !: ice concentration tendency (thermodynamics) [s-1] 269 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: afx_dyn !: ice concentration tendency (dynamics) [s-1] 270 262 271 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_bog !: salt flux due to ice growth/melt [PSU/m2/s] 263 272 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx_bom !: salt flux due to ice growth/melt [PSU/m2/s] … … 290 299 291 300 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ftr_ice !: transmitted solar radiation under ice 301 302 ! lateral melting (mono-category) 303 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dh_i_melt !: net melting (m) 292 304 293 305 ! temporary arrays for dummy version of the code … … 436 448 & wfx_bog(jpi,jpj) , wfx_dyn(jpi,jpj) , wfx_bom(jpi,jpj) , wfx_sum(jpi,jpj) , & 437 449 & wfx_res(jpi,jpj) , wfx_sni(jpi,jpj) , wfx_opw(jpi,jpj) , wfx_spr(jpi,jpj) , qlead (jpi,jpj) , & 438 & fhtur (jpi,jpj) , ftr_ice(jpi,jpj,jpl) , & 450 & afx_tot(jpi,jpj) , afx_thd(jpi,jpj), afx_dyn(jpi,jpj) , & 451 & fhtur (jpi,jpj) , ftr_ice(jpi,jpj,jpl) , dh_i_melt(jpi,jpj,jpl) , & 439 452 & sfx_res(jpi,jpj) , sfx_bri(jpi,jpj) , sfx_dyn(jpi,jpj) , & 440 453 & sfx_bog(jpi,jpj) , sfx_bom(jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) , & -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
r5047 r5048 172 172 !! limistate (only) and is changed to 99 m in ice_init 173 173 !!------------------------------------------------------------------ 174 INTEGER :: jl ! dummy loop index 175 REAL(wp) :: zc1, zc2, zc3, zx1 ! local scalars 174 INTEGER :: jl ! dummy loop index 175 REAL(wp) :: zc1, zc2, zc3, zx1 ! local scalars 176 REAL(wp) :: zhmax, znum, zden, zalpha ! 176 177 !!------------------------------------------------------------------ 177 178 … … 189 190 !- Thickness categories boundaries 190 191 !---------------------------------- 192 193 ! Clem - je sais pas encore dans quelle namelist les mettre, ca depend des chgts liés à bdy 194 nn_hibnd = 2 ! thickness category boundaries: tanh function (1) h^(-alpha) (2) 195 rn_himean = 2.5 ! mean thickness of the domain (used to compute category boundaries, nn_hibnd = 2 only) 196 191 197 hi_max(:) = 0._wp 192 198 193 zc1 = 3._wp / REAL( jpl, wp ) 194 zc2 = 10._wp * zc1 195 zc3 = 3._wp 196 197 DO jl = 1, jpl 198 zx1 = REAL( jl-1, wp ) / REAL( jpl, wp ) 199 hi_max(jl) = hi_max(jl-1) + zc1 + zc2 * (1._wp + TANH( zc3 * (zx1 - 1._wp ) ) ) 200 END DO 199 SELECT CASE ( nn_hbnd ) 200 !---------------------- 201 CASE (1) ! tanh function (CICE) 202 !---------------------- 203 204 zc1 = 3._wp / REAL( jpl, wp ) 205 zc2 = 10._wp * zc1 206 zc3 = 3._wp 207 208 DO jl = 1, jpl 209 zx1 = REAL( jl-1, wp ) / REAL( jpl, wp ) 210 hi_max(jl) = hi_max(jl-1) + zc1 + zc2 * (1._wp + TANH( zc3 * (zx1 - 1._wp ) ) ) 211 END DO 212 213 !---------------------- 214 CASE (2) ! h^(-alpha) function 215 !---------------------- 216 217 zalpha = 0.05 ! exponent of the transform function 218 219 zhmax = 3.*rn_himean 220 221 DO jl = 1, jpl 222 znum = jpl * ( zhmax+1 )**zalpha 223 zden = ( jpl - jl ) * ( zhmax+1 )**zalpha + jl 224 hi_max(jl) = ( znum / zden )**(1./zalpha) - 1 225 END DO 226 227 END SELECT 228 229 ! mv- would be nice if we could put the instruction hi_max(jpl) = 99 here 201 230 202 231 IF(lwp) WRITE(numout,*) ' Thickness category boundaries ' -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
r4990 r5048 93 93 CALL lim_thd_lac 94 94 CALL lim_var_glo2eqv ! only for info 95 96 ! MV: Could put lateral melting here, would be better I think ??? 97 95 98 96 99 IF(ln_ctl) THEN ! Control print -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r5047 r5048 83 83 !! 84 84 INTEGER :: ji, jj, jk, jl ! dummy loop indices 85 INTEGER :: nbpb ! nb of icy pts for thermo. cal. 85 INTEGER :: nbpb ! nb of icy pts for vertical thermo calculations 86 INTEGER :: nbplm ! nb of icy pts for lateral melting calculations (mono-cat) 86 87 INTEGER :: ii, ij ! temporary dummy loop index 87 88 REAL(wp) :: zfric_umin = 0._wp ! lower bound for the friction velocity (cice value=5.e-04) … … 434 435 CALL tab_1d_2d( nbpb, hfx_res , npb, hfx_res_1d(1:nbpb) , jpi, jpj ) 435 436 CALL tab_1d_2d( nbpb, hfx_err_rem , npb, hfx_err_rem_1d(1:nbpb) , jpi, jpj ) 437 438 IF ( ( ( nn_monocat .EQ. 1 ) .OR. ( nn_monocat .EQ. 4 ) ) .AND. ( jpl == 1 ) ) THEN 439 CALL tab_1d_2d( nbpb, dh_i_melt(:,:,jl) , npb, dh_i_melt_1d(1:nbpb) , jpi, jpj ) 440 ENDIF 436 441 ! 437 442 CALL tab_1d_2d( nbpb, qns_ice(:,:,jl), npb, qns_ice_1d(1:nbpb) , jpi, jpj) … … 471 476 !---------------------------------- 472 477 CALL lim_var_eqv2glo 478 479 !---------------------------------- 480 ! 5.X) Lateral melting 481 !---------------------------------- 482 !!! declare dh_i_melt (ok), dh_i_melt_1d (ok), nbplm (ok), nplm (ok), zda(ok) 483 484 IF ( ( ( nn_monocat .EQ. 1 ) .OR. ( nn_monocat .EQ. 4 ) ) .AND. ( jpl == 1 ) ) THEN 485 486 WRITE(numout,*) ' Lateral melting ON ' 487 488 ! select points where lateral melting occurs 489 jl = 1 490 491 nbplm = 0 492 DO jj = 1, jpj 493 DO ji = 1, jpi 494 IF ( ( dh_i_melt(ji,jj,jl) .LT.-epsi10 ) .AND. & 495 & ( ht_i(ji,jj,jl) - dh_i_melt(ji,jj,jl) .GT. epsi10 ) .AND. & 496 & ( ht_i(ji,jj,jl) .GT. epsi10 ) ) THEN 497 nbplm = nbplm + 1 498 nplm(nbplm) = (jj - 1) * jpi + ji 499 ENDIF 500 END DO 501 END DO 502 503 IF( nbplm > 0 ) THEN ! If there is no net melting, do nothing 504 505 ! Move to 1D arrays 506 !------------------------- 507 508 CALL tab_2d_1d( nbplm, a_i_1d (1:nbplm), a_i(:,:,jl) , jpi, jpj, nplm(1:nbplm) ) 509 CALL tab_2d_1d( nbplm, ht_i_1d (1:nbplm), ht_i(:,:,jl) , jpi, jpj, nplm(1:nbplm) ) 510 CALL tab_2d_1d( nbplm, dh_i_melt_1d(1:nbplm), dh_i_melt(:,:,jl) , jpi, jpj, nplm(1:nbplm) ) 511 512 ! Compute lateral melting (dA = A/2h dh ) 513 DO ji = 1, nbplm 514 zda = a_i_1d(ji) * dh_i_melt_1d(ji) / ( 2._wp * ht_i_1d(ji) ) 515 a_i_1d(ji) = a_i_1d(ji) + zda 516 END DO 517 518 ! Move back to 2D arrays 519 !------------------------- 520 CALL tab_1d_2d( nbplm, a_i (:,:,jl) , nplm, a_i_1d (1:nbplm) , jpi, jpj ) 521 at_i(:,:) = a_i(:,:,jl) 522 523 ENDIF 524 525 ENDIF 473 526 474 527 !-------------------------------------------- … … 563 616 !!------------------------------------------------------------------- 564 617 INTEGER :: ios ! Local integer output status for namelist read 565 NAMELIST/namicethd/ hiccrit, fraz_swi, maxfrazb, vfrazb, Cfrazb, &618 NAMELIST/namicethd/ hiccrit, fraz_swi, maxfrazb, vfrazb, Cfrazb, & 566 619 & hiclim, parsub, betas, & 567 & kappa_i, nconv_i_thd, maxer_i_thd, thcon_i_swi 620 & kappa_i, nconv_i_thd, maxer_i_thd, thcon_i_swi, & 621 & nn_monocat 568 622 !!------------------------------------------------------------------- 569 623 ! … … 582 636 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namicethd in configuration namelist', lwp ) 583 637 IF(lwm) WRITE ( numoni, namicethd ) 638 ! 639 IF ( ( jpl > 1 ) .AND. ( nn_monocat == 1 ) ) THEN 640 nn_monocat = 0 641 WRITE(numout, *) ' nn_monocat must be 0 in multi-category case ' 642 ENDIF 584 643 585 644 IF( lk_cpl .AND. parsub /= 0.0 ) CALL ctl_stop( 'In coupled mode, use parsub = 0. or send dqla' ) … … 597 656 WRITE(numout,*)' switch for snow sublimation (=1) or not (=0) parsub = ', parsub 598 657 WRITE(numout,*)' coefficient for ice-lead partition of snowfall betas = ', betas 599 WRITE(numout,*)' extinction radiation parameter in sea ice (1.0)kappa_i = ', kappa_i658 WRITE(numout,*)' extinction radiation parameter in sea ice kappa_i = ', kappa_i 600 659 WRITE(numout,*)' maximal n. of iter. for heat diffusion computation nconv_i_thd = ', nconv_i_thd 601 660 WRITE(numout,*)' maximal err. on T for heat diffusion computation maxer_i_thd = ', maxer_i_thd 602 661 WRITE(numout,*)' switch for comp. of thermal conductivity in the ice thcon_i_swi = ', thcon_i_swi 603 662 WRITE(numout,*)' check heat conservation in the ice/snow con_i = ', con_i 663 WRITE(numout,*)' virtual ITD mono-category parameterizations (1) or not nn_monocat = ', nn_monocat 604 664 ENDIF 605 665 ! -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
r5047 r5048 688 688 END DO 689 689 END DO 690 691 ! 692 !------------------------------------------------------------- 693 ! Net melting (input for thin ice melting, mono-category case) 694 !------------------------------------------------------------- 695 ! 696 IF ( ( ( nn_monocat .EQ. 1 ) .OR. ( nn_monocat .EQ. 4 ) ) .AND. ( jpl == 1 ) ) THEN 697 DO ji = kideb, kiut 698 dh_i_melt_1d(ji) = MIN( dh_i_surf(ji) + dh_i_bott(ji) + dh_snowice(ji), 0._wp ) 699 END DO 700 ENDIF 690 701 691 702 CALL wrk_dealloc( jpij, zh_s, zqprec, zq_su, zq_bo, zf_tt, zq_rema ) -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
r5047 r5048 100 100 INTEGER :: nconv ! number of iterations in iterative procedure 101 101 INTEGER :: minnumeqmin, maxnumeqmax 102 102 103 INTEGER, POINTER, DIMENSION(:) :: numeqmin ! reference number of top equation 103 104 INTEGER, POINTER, DIMENSION(:) :: numeqmax ! reference number of bottom equation 104 105 INTEGER, POINTER, DIMENSION(:) :: isnow ! switch for presence (1) or absence (0) of snow 106 105 107 REAL(wp) :: zg1s = 2._wp ! for the tridiagonal system 106 108 REAL(wp) :: zg1 = 2._wp ! … … 113 115 REAL(wp) :: zerritmax ! current maximal error on temperature 114 116 REAL(wp) :: zhsu 115 REAL(wp), POINTER, DIMENSION(:) :: ztfs ! ice melting point 116 REAL(wp), POINTER, DIMENSION(:) :: ztsub ! old surface temperature (before the iterative procedure ) 117 REAL(wp), POINTER, DIMENSION(:) :: ztsubit ! surface temperature at previous iteration 118 REAL(wp), POINTER, DIMENSION(:) :: zh_i ! ice layer thickness 119 REAL(wp), POINTER, DIMENSION(:) :: zh_s ! snow layer thickness 120 REAL(wp), POINTER, DIMENSION(:) :: zfsw ! solar radiation absorbed at the surface 121 REAL(wp), POINTER, DIMENSION(:) :: zf ! surface flux function 122 REAL(wp), POINTER, DIMENSION(:) :: dzf ! derivative of the surface flux function 123 REAL(wp), POINTER, DIMENSION(:) :: zerrit ! current error on temperature 124 REAL(wp), POINTER, DIMENSION(:) :: zdifcase ! case of the equation resolution (1->4) 125 REAL(wp), POINTER, DIMENSION(:) :: zftrice ! solar radiation transmitted through the ice 126 REAL(wp), POINTER, DIMENSION(:) :: zihic 127 REAL(wp), POINTER, DIMENSION(:,:) :: ztcond_i ! Ice thermal conductivity 128 REAL(wp), POINTER, DIMENSION(:,:) :: zradtr_i ! Radiation transmitted through the ice 129 REAL(wp), POINTER, DIMENSION(:,:) :: zradab_i ! Radiation absorbed in the ice 130 REAL(wp), POINTER, DIMENSION(:,:) :: zkappa_i ! Kappa factor in the ice 131 REAL(wp), POINTER, DIMENSION(:,:) :: ztib ! Old temperature in the ice 132 REAL(wp), POINTER, DIMENSION(:,:) :: zeta_i ! Eta factor in the ice 133 REAL(wp), POINTER, DIMENSION(:,:) :: ztitemp ! Temporary temperature in the ice to check the convergence 134 REAL(wp), POINTER, DIMENSION(:,:) :: zspeche_i ! Ice specific heat 135 REAL(wp), POINTER, DIMENSION(:,:) :: z_i ! Vertical cotes of the layers in the ice 136 REAL(wp), POINTER, DIMENSION(:,:) :: zradtr_s ! Radiation transmited through the snow 137 REAL(wp), POINTER, DIMENSION(:,:) :: zradab_s ! Radiation absorbed in the snow 138 REAL(wp), POINTER, DIMENSION(:,:) :: zkappa_s ! Kappa factor in the snow 139 REAL(wp), POINTER, DIMENSION(:,:) :: zeta_s ! Eta factor in the snow 140 REAL(wp), POINTER, DIMENSION(:,:) :: ztstemp ! Temporary temperature in the snow to check the convergence 141 REAL(wp), POINTER, DIMENSION(:,:) :: ztsb ! Temporary temperature in the snow 142 REAL(wp), POINTER, DIMENSION(:,:) :: z_s ! Vertical cotes of the layers in the snow 143 REAL(wp), POINTER, DIMENSION(:,:) :: zswiterm ! Independent term 144 REAL(wp), POINTER, DIMENSION(:,:) :: zswitbis ! temporary independent term 145 REAL(wp), POINTER, DIMENSION(:,:) :: zdiagbis 146 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrid ! tridiagonal system terms 117 118 REAL(wp), POINTER, DIMENSION(:) :: ztfs ! ice melting point 119 REAL(wp), POINTER, DIMENSION(:) :: ztsub ! old surface temperature (before the iterative procedure ) 120 REAL(wp), POINTER, DIMENSION(:) :: ztsubit ! surface temperature at previous iteration 121 REAL(wp), POINTER, DIMENSION(:) :: zh_i ! ice layer thickness 122 REAL(wp), POINTER, DIMENSION(:) :: zh_s ! snow layer thickness 123 REAL(wp), POINTER, DIMENSION(:) :: zfsw ! solar radiation absorbed at the surface 124 REAL(wp), POINTER, DIMENSION(:) :: zf ! surface flux function 125 REAL(wp), POINTER, DIMENSION(:) :: dzf ! derivative of the surface flux function 126 REAL(wp), POINTER, DIMENSION(:) :: zerrit ! current error on temperature 127 REAL(wp), POINTER, DIMENSION(:) :: zdifcase ! case of the equation resolution (1->4) 128 REAL(wp), POINTER, DIMENSION(:) :: zftrice ! solar radiation transmitted through the ice 129 REAL(wp), POINTER, DIMENSION(:) :: zihic 130 131 REAL(wp), POINTER, DIMENSION(:,:) :: ztcond_i ! Ice thermal conductivity 132 REAL(wp), POINTER, DIMENSION(:,:) :: zradtr_i ! Radiation transmitted through the ice 133 REAL(wp), POINTER, DIMENSION(:,:) :: zradab_i ! Radiation absorbed in the ice 134 REAL(wp), POINTER, DIMENSION(:,:) :: zkappa_i ! Kappa factor in the ice 135 REAL(wp), POINTER, DIMENSION(:,:) :: ztib ! Old temperature in the ice 136 REAL(wp), POINTER, DIMENSION(:,:) :: zeta_i ! Eta factor in the ice 137 REAL(wp), POINTER, DIMENSION(:,:) :: ztitemp ! Temporary temperature in the ice to check the convergence 138 REAL(wp), POINTER, DIMENSION(:,:) :: zspeche_i ! Ice specific heat 139 REAL(wp), POINTER, DIMENSION(:,:) :: z_i ! Vertical cotes of the layers in the ice 140 REAL(wp), POINTER, DIMENSION(:,:) :: zradtr_s ! Radiation transmited through the snow 141 REAL(wp), POINTER, DIMENSION(:,:) :: zradab_s ! Radiation absorbed in the snow 142 REAL(wp), POINTER, DIMENSION(:,:) :: zkappa_s ! Kappa factor in the snow 143 REAL(wp), POINTER, DIMENSION(:,:) :: zeta_s ! Eta factor in the snow 144 REAL(wp), POINTER, DIMENSION(:,:) :: ztstemp ! Temporary temperature in the snow to check the convergence 145 REAL(wp), POINTER, DIMENSION(:,:) :: ztsb ! Temporary temperature in the snow 146 REAL(wp), POINTER, DIMENSION(:,:) :: z_s ! Vertical cotes of the layers in the snow 147 REAL(wp), POINTER, DIMENSION(:,:) :: zindterm ! 'Ind'ependent term 148 REAL(wp), POINTER, DIMENSION(:,:) :: zindtbis ! Temporary 'ind'ependent term 149 REAL(wp), POINTER, DIMENSION(:,:) :: zdiagbis ! Temporary 'dia'gonal term 150 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrid ! Tridiagonal system terms 151 147 152 ! diag errors on heat 148 REAL(wp), POINTER, DIMENSION(:) :: zdq, zq_ini, zhfx_err 153 REAL(wp), POINTER, DIMENSION(:) :: zdq, zq_ini, zhfx_err 154 155 ! Mono-category 156 REAL(wp) :: zepsilon ! determines thres. above which computation of G(h) is done 157 REAL(wp) :: zratio_s ! dummy factor 158 REAL(wp) :: zratio_i ! dummy factor 159 REAL(wp) :: zh_thres ! thickness thres. for G(h) computation 160 REAL(wp) :: zhe ! dummy factor 161 REAL(wp) :: zswitch ! dummy switch 162 REAL(wp) :: zkimean ! mean sea ice thermal conductivity 163 REAL(wp) :: zfac ! dummy factor 164 REAL(wp) :: zihe ! dummy factor 165 REAL(wp) :: zheshth ! dummy factor 166 167 REAL(wp), POINTER, DIMENSION(:) :: zghe ! G(he), th. conduct enhancement factor, mono-cat 168 149 169 !!------------------------------------------------------------------ 150 170 ! 151 171 CALL wrk_alloc( jpij, numeqmin, numeqmax, isnow ) 152 172 CALL wrk_alloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 153 CALL wrk_alloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic )173 CALL wrk_alloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zghe ) 154 174 CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 155 175 CALL wrk_alloc( jpij, nlay_s+1, zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0) 156 CALL wrk_alloc( jpij, nlay_i+3, z switerm, zswitbis, zdiagbis )176 CALL wrk_alloc( jpij, nlay_i+3, zindterm, zindtbis, zdiagbis ) 157 177 CALL wrk_alloc( jpij, nlay_i+3, 3, ztrid ) 158 178 … … 200 220 ! 201 221 !------------------------------------------------------------------------------| 202 ! 2) Radiation s|222 ! 2) Radiation | 203 223 !------------------------------------------------------------------------------| 204 224 ! … … 213 233 ! zftrice = io.qsr_ice is below the surface 214 234 ! ftr_ice = io.qsr_ice.exp(-k(h_i)) transmitted below the ice 235 ! fr1_i0_1d = i0 for a thin ice cover, fr1_i0_2d = i0 for a thick ice cover 215 236 zhsu = 0.1_wp ! threshold for the computation of i0 216 !fr1_i0_1d = i0 for a thin ice surface217 !fr1_i0_2d = i0 for a thick ice surface218 237 DO ji = kideb , kiut 219 238 ! switches … … 339 358 END DO 340 359 ENDIF 341 ! 342 !------------------------------------------------------------------------------| 343 ! 5) kappa factors | 344 !------------------------------------------------------------------------------| 345 ! 360 361 ! 362 !------------------------------------------------------------------------------| 363 ! 6) G(he) - enhancement of thermal conductivity in mono-category case | 364 !------------------------------------------------------------------------------| 365 ! 366 ! Computation of effective thermal conductivity G(h) 367 ! Used in mono-category case only to simulate an ITD implicitly 368 ! Fichefet and Morales Maqueda, JGR 1997 369 370 zghe(:) = 0._wp 371 372 SELECT CASE ( nn_monocat ) 373 374 CASE (0,2,4) 375 376 zghe(kideb:kiut) = 1._wp 377 378 CASE (1,3) ! LIM3 379 380 zepsilon = 0.1 381 zh_thres = EXP( 1._wp ) * zepsilon / 2. 382 383 DO ji = kideb, kiut 384 385 ! Mean sea ice thermal conductivity 386 zkimean = SUM( ztcond_i(ji,0:nlay_i) ) / REAL(nlay_i+1,wp) 387 388 ! Effective thickness he (zhe) 389 zfac = 1._wp / ( rcdsn + zkimean ) 390 zratio_s = rcdsn * zfac 391 zratio_i = zkimean * zfac 392 zhe = zratio_s * ht_i_1d(ji) + zratio_i * ht_s_1d(ji) 393 394 ! G(he) 395 zswitch = MAX( 0._wp , SIGN( 1._wp , zhe - zh_thres ) ) ! =0 if zhe < zh_thres, if > 396 zghe(ji) = ( 1.0 - zswitch ) + zswitch * ( 0.5 + 0.5 * LOG( 2.*zhe / zepsilon ) ) 397 398 ! Impose G(he) < 2. 399 zghe(ji) = MIN( zghe(ji), 2.0 ) 400 401 END DO 402 403 END SELECT 404 405 ! 406 !------------------------------------------------------------------------------| 407 ! 7) kappa factors | 408 !------------------------------------------------------------------------------| 409 ! 410 !--- Snow 346 411 DO ji = kideb, kiut 347 348 !-- Snow kappa factors 349 zkappa_s(ji,0) = rcdsn / MAX(epsi10,zh_s(ji)) 350 zkappa_s(ji,nlay_s) = rcdsn / MAX(epsi10,zh_s(ji)) 412 zfac = 1. / MAX( epsi10 , zh_s(ji) ) 413 zkappa_s(ji,0) = zghe(ji) * rcdsn * zfac 414 zkappa_s(ji,nlay_s) = zghe(ji) * rcdsn * zfac 351 415 END DO 352 416 353 417 DO jk = 1, nlay_s-1 354 418 DO ji = kideb , kiut 355 zkappa_s(ji,jk) = 2.0 * rcdsn / &356 MAX(epsi10,2.0*zh_s(ji))357 358 END DO 359 419 zkappa_s(ji,jk) = zghe(ji) * 2.0 * rcdsn / MAX( epsi10, 2.0*zh_s(ji) ) 420 END DO 421 END DO 422 423 !--- Ice 360 424 DO jk = 1, nlay_i-1 361 425 DO ji = kideb , kiut 362 !-- Ice kappa factors 363 zkappa_i(ji,jk) = 2.0*ztcond_i(ji,jk)/ & 364 MAX(epsi10,2.0*zh_i(ji)) 365 END DO 366 END DO 367 368 DO ji = kideb , kiut 369 zkappa_i(ji,0) = ztcond_i(ji,0)/MAX(epsi10,zh_i(ji)) 370 zkappa_i(ji,nlay_i) = ztcond_i(ji,nlay_i) / MAX(epsi10,zh_i(ji)) 371 !-- Interface 372 zkappa_s(ji,nlay_s) = 2.0*rcdsn*ztcond_i(ji,0)/MAX(epsi10, & 373 (ztcond_i(ji,0)*zh_s(ji) + rcdsn*zh_i(ji))) 374 zkappa_i(ji,0) = zkappa_s(ji,nlay_s)*REAL( isnow(ji) ) & 375 + zkappa_i(ji,0)*REAL( 1 - isnow(ji) ) 376 END DO 377 ! 378 !------------------------------------------------------------------------------| 379 ! 6) Sea ice specific heat, eta factors | 426 zkappa_i(ji,jk) = zghe(ji) * 2.0 * ztcond_i(ji,jk) / MAX( epsi10 , 2.0*zh_i(ji) ) 427 END DO 428 END DO 429 430 !--- Snow-ice interface 431 DO ji = kideb , kiut 432 zfac = 1./ MAX( epsi10 , zh_i(ji) ) 433 zkappa_i(ji,0) = zghe(ji) * ztcond_i(ji,0) * zfac 434 zkappa_i(ji,nlay_i) = zghe(ji) * ztcond_i(ji,nlay_i) * zfac 435 zkappa_s(ji,nlay_s) = zghe(ji) * zghe(ji) * 2.0 * rcdsn * ztcond_i(ji,0) / & 436 & MAX( epsi10, ( zghe(ji) * ztcond_i(ji,0) * zh_s(ji) + zghe(ji) * rcdsn * zh_i(ji) ) ) 437 zkappa_i(ji,0) = zkappa_s(ji,nlay_s)*REAL( isnow(ji), wp ) + zkappa_i(ji,0)*REAL( 1 - isnow(ji), wp ) 438 END DO 439 440 ! 441 !------------------------------------------------------------------------------| 442 ! 8) Sea ice specific heat, eta factors | 380 443 !------------------------------------------------------------------------------| 381 444 ! … … 383 446 DO ji = kideb , kiut 384 447 ztitemp(ji,jk) = t_i_1d(ji,jk) 385 zspeche_i(ji,jk) = cpic + zgamma*s_i_1d(ji,jk)/ & 386 MAX((t_i_1d(ji,jk)-rtt)*(ztib(ji,jk)-rtt),epsi10) 387 zeta_i(ji,jk) = rdt_ice / MAX(rhoic*zspeche_i(ji,jk)*zh_i(ji), & 388 epsi10) 448 zspeche_i(ji,jk) = cpic + zgamma*s_i_1d(ji,jk)/ MAX( (t_i_1d(ji,jk)-rtt)*(ztib(ji,jk)-rtt) , epsi10 ) 449 zeta_i(ji,jk) = rdt_ice / MAX( rhoic*zspeche_i(ji,jk)*zh_i(ji), epsi10 ) 389 450 END DO 390 451 END DO … … 396 457 END DO 397 458 END DO 398 ! 399 !------------------------------------------------------------------------------| 400 ! 7) surface flux computation | 459 460 ! 461 !------------------------------------------------------------------------------| 462 ! 9) surface flux computation | 401 463 !------------------------------------------------------------------------------| 402 464 ! … … 418 480 ! 419 481 !------------------------------------------------------------------------------| 420 ! 8) tridiagonal system terms|482 ! 10) tridiagonal system terms | 421 483 !------------------------------------------------------------------------------| 422 484 ! … … 433 495 ztrid(ji,numeq,2) = 0. 434 496 ztrid(ji,numeq,3) = 0. 435 z switerm(ji,numeq)= 0.436 z switbis(ji,numeq)= 0.497 zindterm(ji,numeq)= 0. 498 zindtbis(ji,numeq)= 0. 437 499 zdiagbis(ji,numeq)= 0. 438 500 ENDDO … … 446 508 zkappa_i(ji,jk)) 447 509 ztrid(ji,numeq,3) = - zeta_i(ji,jk)*zkappa_i(ji,jk) 448 z switerm(ji,numeq) = ztib(ji,jk) + zeta_i(ji,jk)* &510 zindterm(ji,numeq) = ztib(ji,jk) + zeta_i(ji,jk)* & 449 511 zradab_i(ji,jk) 450 512 END DO … … 458 520 + zkappa_i(ji,nlay_i-1) ) 459 521 ztrid(ji,numeq,3) = 0.0 460 z switerm(ji,numeq) = ztib(ji,nlay_i) + zeta_i(ji,nlay_i)* &522 zindterm(ji,numeq) = ztib(ji,nlay_i) + zeta_i(ji,nlay_i)* & 461 523 ( zradab_i(ji,nlay_i) + zkappa_i(ji,nlay_i)*zg1 & 462 524 * t_bo_1d(ji) ) … … 478 540 zkappa_s(ji,jk) ) 479 541 ztrid(ji,numeq,3) = - zeta_s(ji,jk)*zkappa_s(ji,jk) 480 z switerm(ji,numeq) = ztsb(ji,jk) + zeta_s(ji,jk)* &542 zindterm(ji,numeq) = ztsb(ji,jk) + zeta_s(ji,jk)* & 481 543 zradab_s(ji,jk) 482 544 END DO … … 485 547 IF ( nlay_i.eq.1 ) THEN 486 548 ztrid(ji,nlay_s+2,3) = 0.0 487 z switerm(ji,nlay_s+2) = zswiterm(ji,nlay_s+2) + zkappa_i(ji,1)* &549 zindterm(ji,nlay_s+2) = zindterm(ji,nlay_s+2) + zkappa_i(ji,1)* & 488 550 t_bo_1d(ji) 489 551 ENDIF … … 502 564 ztrid(ji,1,2) = dzf(ji) - zg1s*zkappa_s(ji,0) 503 565 ztrid(ji,1,3) = zg1s*zkappa_s(ji,0) 504 z switerm(ji,1) = dzf(ji)*t_su_1d(ji) - zf(ji)566 zindterm(ji,1) = dzf(ji)*t_su_1d(ji) - zf(ji) 505 567 506 568 !!first layer of snow equation … … 508 570 ztrid(ji,2,2) = 1.0 + zeta_s(ji,1)*(zkappa_s(ji,1) + zkappa_s(ji,0)*zg1s) 509 571 ztrid(ji,2,3) = - zeta_s(ji,1)* zkappa_s(ji,1) 510 z switerm(ji,2) = ztsb(ji,1) + zeta_s(ji,1)*zradab_s(ji,1)572 zindterm(ji,2) = ztsb(ji,1) + zeta_s(ji,1)*zradab_s(ji,1) 511 573 512 574 ELSE … … 525 587 zkappa_s(ji,0) * zg1s ) 526 588 ztrid(ji,2,3) = - zeta_s(ji,1)*zkappa_s(ji,1) 527 z switerm(ji,2) = ztsb(ji,1) + zeta_s(ji,1) * &589 zindterm(ji,2) = ztsb(ji,1) + zeta_s(ji,1) * & 528 590 ( zradab_s(ji,1) + & 529 591 zkappa_s(ji,0) * zg1s * t_su_1d(ji) ) … … 549 611 ztrid(ji,numeqmin(ji),2) = dzf(ji) - zkappa_i(ji,0)*zg1 550 612 ztrid(ji,numeqmin(ji),3) = zkappa_i(ji,0)*zg1 551 z switerm(ji,numeqmin(ji)) = dzf(ji)*t_su_1d(ji) - zf(ji)613 zindterm(ji,numeqmin(ji)) = dzf(ji)*t_su_1d(ji) - zf(ji) 552 614 553 615 !!first layer of ice equation … … 556 618 + zkappa_i(ji,0) * zg1 ) 557 619 ztrid(ji,numeqmin(ji)+1,3) = - zeta_i(ji,1)*zkappa_i(ji,1) 558 z switerm(ji,numeqmin(ji)+1)= ztib(ji,1) + zeta_i(ji,1)*zradab_i(ji,1)620 zindterm(ji,numeqmin(ji)+1)= ztib(ji,1) + zeta_i(ji,1)*zradab_i(ji,1) 559 621 560 622 !!case of only one layer in the ice (surface & ice equations are altered) … … 569 631 ztrid(ji,numeqmin(ji)+1,3) = 0.0 570 632 571 z switerm(ji,numeqmin(ji)+1) = ztib(ji,1) + zeta_i(ji,1)* &633 zindterm(ji,numeqmin(ji)+1) = ztib(ji,1) + zeta_i(ji,1)* & 572 634 ( zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_1d(ji) ) 573 635 ENDIF … … 589 651 zg1) 590 652 ztrid(ji,numeqmin(ji),3) = - zeta_i(ji,1) * zkappa_i(ji,1) 591 z switerm(ji,numeqmin(ji)) = ztib(ji,1) + zeta_i(ji,1)*( zradab_i(ji,1) + &653 zindterm(ji,numeqmin(ji)) = ztib(ji,1) + zeta_i(ji,1)*( zradab_i(ji,1) + & 592 654 zkappa_i(ji,0) * zg1 * t_su_1d(ji) ) 593 655 … … 598 660 zkappa_i(ji,1)) 599 661 ztrid(ji,numeqmin(ji),3) = 0.0 600 z switerm(ji,numeqmin(ji)) = ztib(ji,1) + zeta_i(ji,1)* &662 zindterm(ji,numeqmin(ji)) = ztib(ji,1) + zeta_i(ji,1)* & 601 663 (zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_1d(ji)) & 602 664 + t_su_1d(ji)*zeta_i(ji,1)*zkappa_i(ji,0)*2.0 … … 610 672 ! 611 673 !------------------------------------------------------------------------------| 612 ! 9) tridiagonal system solving|674 ! 11) tridiagonal system solving | 613 675 !------------------------------------------------------------------------------| 614 676 ! … … 622 684 623 685 DO ji = kideb , kiut 624 z switbis(ji,numeqmin(ji)) = zswiterm(ji,numeqmin(ji))686 zindtbis(ji,numeqmin(ji)) = zindterm(ji,numeqmin(ji)) 625 687 zdiagbis(ji,numeqmin(ji)) = ztrid(ji,numeqmin(ji),2) 626 688 minnumeqmin = MIN(numeqmin(ji),minnumeqmin) … … 633 695 zdiagbis(ji,numeq) = ztrid(ji,numeq,2) - ztrid(ji,numeq,1)* & 634 696 ztrid(ji,numeq-1,3)/zdiagbis(ji,numeq-1) 635 z switbis(ji,numeq) = zswiterm(ji,numeq) - ztrid(ji,numeq,1)* &636 z switbis(ji,numeq-1)/zdiagbis(ji,numeq-1)697 zindtbis(ji,numeq) = zindterm(ji,numeq) - ztrid(ji,numeq,1)* & 698 zindtbis(ji,numeq-1)/zdiagbis(ji,numeq-1) 637 699 END DO 638 700 END DO … … 640 702 DO ji = kideb , kiut 641 703 ! ice temperatures 642 t_i_1d(ji,nlay_i) = z switbis(ji,numeqmax(ji))/zdiagbis(ji,numeqmax(ji))704 t_i_1d(ji,nlay_i) = zindtbis(ji,numeqmax(ji))/zdiagbis(ji,numeqmax(ji)) 643 705 END DO 644 706 … … 646 708 DO ji = kideb , kiut 647 709 jk = numeq - nlay_s - 1 648 t_i_1d(ji,jk) = (z switbis(ji,numeq) - ztrid(ji,numeq,3)* &710 t_i_1d(ji,jk) = (zindtbis(ji,numeq) - ztrid(ji,numeq,3)* & 649 711 t_i_1d(ji,jk+1))/zdiagbis(ji,numeq) 650 712 END DO … … 654 716 ! snow temperatures 655 717 IF (ht_s_1d(ji).GT.0._wp) & 656 t_s_1d(ji,nlay_s) = (z switbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) &718 t_s_1d(ji,nlay_s) = (zindtbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) & 657 719 * t_i_1d(ji,1))/zdiagbis(ji,nlay_s+1) & 658 720 * MAX(0.0,SIGN(1.0,ht_s_1d(ji))) … … 662 724 ztsubit(ji) = t_su_1d(ji) 663 725 IF( t_su_1d(ji) < ztfs(ji) ) & 664 t_su_1d(ji) = ( z switbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3)* ( REAL( isnow(ji) )*t_s_1d(ji,1) &726 t_su_1d(ji) = ( zindtbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3)* ( REAL( isnow(ji) )*t_s_1d(ji,1) & 665 727 & + REAL( 1 - isnow(ji) )*t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji)) 666 728 END DO 667 729 ! 668 730 !-------------------------------------------------------------------------- 669 ! 1 0) Has the scheme converged ?, end of the iterative procedure |731 ! 12) Has the scheme converged ?, end of the iterative procedure | 670 732 !-------------------------------------------------------------------------- 671 733 ! … … 709 771 ! 710 772 !-------------------------------------------------------------------------! 711 ! 1 1) Fluxes at the interfaces !773 ! 13) Fluxes at the interfaces ! 712 774 !-------------------------------------------------------------------------! 713 775 DO ji = kideb, kiut … … 771 833 CALL wrk_dealloc( jpij, numeqmin, numeqmax, isnow ) 772 834 CALL wrk_dealloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 773 CALL wrk_dealloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic )835 CALL wrk_dealloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zghe ) 774 836 CALL wrk_dealloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, & 775 837 & ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 776 838 CALL wrk_dealloc( jpij, nlay_s+1, zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart = 0 ) 777 CALL wrk_dealloc( jpij, nlay_i+3, z switerm, zswitbis, zdiagbis )839 CALL wrk_dealloc( jpij, nlay_i+3, zindterm, zindtbis, zdiagbis ) 778 840 CALL wrk_dealloc( jpij, nlay_i+3, 3, ztrid ) 779 841 CALL wrk_dealloc( jpij, zdq, zq_ini, zhfx_err ) -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
r4990 r5048 420 420 END DO 421 421 ! ------------------------------------------------- 422 423 !-------------------------------------- 424 ! Impose a_i < amax in mono-category 425 !-------------------------------------- 426 ! 427 IF ( ( nn_monocat == 2 ) .AND. ( jpl == 1 ) ) THEN ! simple conservative piling, comparable with LIM2 428 DO jj = 1, jpj 429 DO ji = 1, jpi 430 a_i(ji,jj,1) = MIN( a_i(ji,jj,1), amax ) 431 END DO 432 END DO 433 ENDIF 422 434 423 435 ! --- diags --- -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r4990 r5048 200 200 201 201 ztmp = rday / rhoic 202 CALL iom_put( "vfxres" , wfx_res * ztmp ) ! daily prod./melting due to limupdate 203 CALL iom_put( "vfxopw" , wfx_opw * ztmp ) ! daily lateral thermodynamic ice production 204 CALL iom_put( "vfxsni" , wfx_sni * ztmp ) ! daily snowice ice production 205 CALL iom_put( "vfxbog" , wfx_bog * ztmp ) ! daily bottom thermodynamic ice production 206 CALL iom_put( "vfxdyn" , wfx_dyn * ztmp ) ! daily dynamic ice production (rid/raft) 207 CALL iom_put( "vfxsum" , wfx_sum * ztmp ) ! surface melt 208 CALL iom_put( "vfxbom" , wfx_bom * ztmp ) ! bottom melt 209 CALL iom_put( "vfxice" , wfx_ice * ztmp ) ! total ice growth/melt 210 CALL iom_put( "vfxsnw" , wfx_snw * ztmp ) ! total snw growth/melt 211 CALL iom_put( "vfxsub" , wfx_sub * ztmp ) ! sublimation (snow) 212 CALL iom_put( "vfxspr" , wfx_spr * ztmp ) ! precip (snow) 202 CALL iom_put( "vfxres" , wfx_res * ztmp ) ! daily prod./melting due to limupdate 203 CALL iom_put( "vfxopw" , wfx_opw * ztmp ) ! daily lateral thermodynamic ice production 204 CALL iom_put( "vfxsni" , wfx_sni * ztmp ) ! daily snowice ice production 205 CALL iom_put( "vfxbog" , wfx_bog * ztmp ) ! daily bottom thermodynamic ice production 206 CALL iom_put( "vfxdyn" , wfx_dyn * ztmp ) ! daily dynamic ice production (rid/raft) 207 CALL iom_put( "vfxsum" , wfx_sum * ztmp ) ! surface melt 208 CALL iom_put( "vfxbom" , wfx_bom * ztmp ) ! bottom melt 209 CALL iom_put( "vfxice" , wfx_ice * ztmp ) ! total ice growth/melt 210 CALL iom_put( "vfxsnw" , wfx_snw * ztmp ) ! total snw growth/melt 211 CALL iom_put( "vfxsub" , wfx_sub * ztmp ) ! sublimation (snow) 212 CALL iom_put( "vfxspr" , wfx_spr * ztmp ) ! precip (snow) 213 214 CALL iom_put( "afxtot" , afx_tot ) ! concentration tendency (total) 215 CALL iom_put( "afxdyn" , afx_dyn ) ! concentration tendency (dynamics) 216 CALL iom_put( "afxthd" , afx_thd ) ! concentration tendency (thermo) 213 217 214 218 CALL iom_put ('hfxthd', hfx_thd(:,:) ) ! … … 216 220 CALL iom_put ('hfxres', hfx_res(:,:) ) ! 217 221 CALL iom_put ('hfxout', hfx_out(:,:) ) ! 218 CALL iom_put ('hfxin' , hfx_in(:,:) ) !222 CALL iom_put ('hfxin' , hfx_in(:,:) ) ! 219 223 CALL iom_put ('hfxsnw', hfx_snw(:,:) ) ! 220 224 CALL iom_put ('hfxsub', hfx_sub(:,:) ) ! -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/par_ice.F90
r4873 r5048 12 12 13 13 ! !!! ice thermodynamics 14 INTEGER, PUBLIC, PARAMETER :: nlay_i = 5!: number of ice layers14 INTEGER, PUBLIC, PARAMETER :: nlay_i = 2 !: number of ice layers 15 15 INTEGER, PUBLIC, PARAMETER :: nlay_s = 1 !: number of snow layers 16 16 -
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90
r5047 r5048 35 35 !: are the variables corresponding to 2d vectors 36 36 37 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: npb !: number of points where computations has to be done 38 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: npac !: correspondance between points (lateral accretion) 37 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: npb !: address vector for 1d vertical thermo computations 38 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: nplm !: address vector for mono-category lateral melting 39 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: npac !: address vector for new ice formation 39 40 40 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: qlead_1d … … 109 110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_i_bott !: Ice bottom accretion/ablation [m] 110 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_snowice !: Snow ice formation [m of ice] 112 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_i_melt_1d !: Net melting [m], for mono-cat lateral melting 111 113 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: sm_i_1d !: Ice bulk salinity [ppt] 112 114 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: s_i_new !: Salinity of new ice at the bottom … … 138 140 !!---------------------------------------------------------------------! 139 141 140 ALLOCATE( npb (jpij) , np ac (jpij),&142 ALLOCATE( npb (jpij) , nplm (jpij) , npac (jpij), & 141 143 ! ! 142 144 & qlead_1d (jpij) , ftr_ice_1d (jpij) , & … … 165 167 & ht_s_1d (jpij) , fc_su (jpij) , fc_bo_i (jpij) , & 166 168 & dh_s_tot (jpij) , dh_i_surf(jpij) , dh_i_bott(jpij) , & 167 & dh_snowice(jpij) , sm_i_1d (jpij) , s_i_new (jpij) , & 169 & dh_snowice(jpij) , dh_i_melt_1d(jpij) , & 170 & sm_i_1d (jpij) , s_i_new (jpij) , & 168 171 & t_s_1d(jpij,nlay_s), & 169 172 & t_i_1d(jpij,nlay_i+1), s_i_1d(jpij,nlay_i+1) , &
Note: See TracChangeset
for help on using the changeset viewer.