Changeset 8564
- Timestamp:
- 2017-09-27T11:11:01+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8563 r8564 106 106 !! v_i | - | Ice volume per unit area | m | 107 107 !! v_s | - | Snow volume per unit area | m | 108 !! s mv_i | - | Sea ice salt content | ppt.m |108 !! sv_i | - | Sea ice salt content | ppt.m | 109 109 !! oa_i ! - ! Sea ice areal age content | s | 110 110 !! e_i ! - ! Ice enthalpy | J/m2 | … … 118 118 !!-------------|-------------|---------------------------------|-------| 119 119 !! | 120 !! h_i | h_i_1d| Ice thickness | m |121 !! h_s ! h_s_1d| Snow depth | m |122 !! s m_i ! sm_i_1d| Sea ice bulk salinity ! ppt |123 !! s _i ! s_i_1d| Sea ice salinity profile ! ppt |120 !! h_i | h_i_1d | Ice thickness | m | 121 !! h_s ! h_s_1d | Snow depth | m | 122 !! s_i ! s_i_1d | Sea ice bulk salinity ! ppt | 123 !! sz_i ! sz_i_1d | Sea ice salinity profile ! ppt | 124 124 !! o_i ! - | Sea ice Age ! s | 125 125 !! t_i ! t_i_1d | Sea ice temperature ! K | … … 143 143 !! vt_i | - | Total ice vol. per unit area | m | 144 144 !! vt_s | - | Total snow vol. per unit ar. | m | 145 !! sm t_i| - | Mean sea ice salinity | ppt |145 !! sm_i | - | Mean sea ice salinity | ppt | 146 146 !! tm_i | - | Mean sea ice temperature | K | 147 147 !! et_i ! - ! Total ice enthalpy | J/m2 | … … 312 312 !!---------------------------------------------------------------------- 313 313 !! Variables defined for each ice category 314 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_i !: Ice thickness (m)314 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_i !: Ice thickness (m) 315 315 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i !: Ice fractional areas (concentration) 316 316 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_i !: Ice volume per unit area (m) 317 317 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_s !: Snow volume per unit area(m) 318 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_s !: Snow thickness (m)318 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_s !: Snow thickness (m) 319 319 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_su !: Sea-Ice Surface Temperature (K) 320 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: s m_i!: Sea-Ice Bulk salinity (ppt)321 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: s mv_i !: Sea-Ice Bulk salinity times volume per area (ppt.m)320 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: s_i !: Sea-Ice Bulk salinity (ppt) 321 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sv_i !: Sea-Ice Bulk salinity times volume per area (ppt.m) 322 322 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age (s) 323 323 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area (s) … … 332 332 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_i !: mean ice temperature over all categories 333 333 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: bvm_i !: brine volume averaged over all categories 334 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sm t_i!: mean sea ice salinity averaged over all categories [PSU]334 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sm_i !: mean sea ice salinity averaged over all categories [PSU] 335 335 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_su !: mean surface temperature over all categories 336 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: h tm_i!: mean ice thickness over all categories337 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: h tm_s!: mean snow thickness over all categories336 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hm_i !: mean ice thickness over all categories 337 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hm_s !: mean snow thickness over all categories 338 338 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: om_i !: mean ice age over all categories 339 339 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tau_icebfr !: ice friction with bathy (landfast param activated) 340 340 341 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: t_s !: Snow temperatures [K] 342 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_s !: Snow ... 343 344 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: t_i !: ice temperatures [K] 345 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_i !: ice thermal contents [J/m2] 346 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: s_i !: ice salinities [PSU] 341 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: t_s !: Snow temperatures [K] 342 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_s !: Snow enthalpy [J/m2] 343 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: t_i !: ice temperatures [K] 344 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_i !: ice enthalpy [J/m2] 345 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: sz_i !: ice salinity [PSU] 347 346 348 347 ! MV MP 2016 … … 376 375 !!---------------------------------------------------------------------- 377 376 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: v_s_b, v_i_b, h_s_b, h_i_b !: snow and ice volumes/thickness 378 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i_b, s mv_i_b, oa_i_b !:377 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i_b, sv_i_b, oa_i_b !: 379 378 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_s_b !: snow heat content 380 379 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e_i_b !: ice temperatures … … 398 397 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_ei !: transport of ice enthalpy (W/m2) 399 398 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_es !: transport of snw enthalpy (W/m2) 400 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_s mv!: transport of salt content399 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_sv !: transport of salt content 401 400 ! 402 401 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_heat !: snw/ice heat content variation [W/m2] 403 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_s mvi!: ice salt content variation []402 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_sice !: ice salt content variation [] 404 403 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vice !: ice volume variation [m/s] 405 404 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vsnw !: snw volume variation [m/s] … … 465 464 & h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) , & 466 465 & v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , t_su (jpi,jpj,jpl) , & 467 & s m_i (jpi,jpj,jpl) , smv_i (jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , &466 & s_i (jpi,jpj,jpl) , sv_i (jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , & 468 467 & oa_i (jpi,jpj,jpl) , bv_i (jpi,jpj,jpl) , STAT=ierr(ii) ) 469 468 ii = ii + 1 … … 471 470 & vt_i (jpi,jpj) , vt_s (jpi,jpj) , at_i (jpi,jpj) , ato_i(jpi,jpj) , & 472 471 & et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i (jpi,jpj) , bvm_i(jpi,jpj) , & 473 & sm t_i(jpi,jpj) , tm_su(jpi,jpj) , htm_i(jpi,jpj) , htm_s(jpi,jpj) , &472 & sm_i (jpi,jpj) , tm_su(jpi,jpj) , hm_i(jpi,jpj) , hm_s(jpi,jpj) , & 474 473 & om_i (jpi,jpj) , tau_icebfr(jpi,jpj) , STAT=ierr(ii) ) 475 474 ii = ii + 1 476 475 ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) 477 476 ii = ii + 1 478 ALLOCATE( t_i(jpi,jpj,nlay_i,jpl) , e_i(jpi,jpj,nlay_i,jpl) , s _i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) )477 ALLOCATE( t_i(jpi,jpj,nlay_i,jpl) , e_i(jpi,jpj,nlay_i,jpl) , sz_i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) ) 479 478 480 479 ! MV MP 2016 … … 513 512 ii = ii + 1 514 513 ALLOCATE( v_s_b (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl) , h_i_b(jpi,jpj,jpl) , & 515 & a_i_b (jpi,jpj,jpl) , s mv_i_b(jpi,jpj,jpl) , e_i_b (jpi,jpj,nlay_i,jpl) , e_s_b (jpi,jpj,nlay_s,jpl) , &514 & a_i_b (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b (jpi,jpj,nlay_i,jpl) , e_s_b (jpi,jpj,nlay_s,jpl) , & 516 515 & oa_i_b (jpi,jpj,jpl) , STAT=ierr(ii) ) 517 516 ii = ii + 1 … … 525 524 ii = ii + 1 526 525 ALLOCATE( diag_trp_vi(jpi,jpj) , diag_trp_vs (jpi,jpj) , diag_trp_ei(jpi,jpj), & 527 & diag_trp_es(jpi,jpj) , diag_trp_s mv(jpi,jpj) , diag_heat (jpi,jpj), &528 & diag_s mvi(jpi,jpj) , diag_vice (jpi,jpj) , diag_vsnw (jpi,jpj), STAT=ierr(ii) )526 & diag_trp_es(jpi,jpj) , diag_trp_sv (jpi,jpj) , diag_heat (jpi,jpj), & 527 & diag_sice (jpi,jpj) , diag_vice (jpi,jpj) , diag_vsnw (jpi,jpj), STAT=ierr(ii) ) 529 528 530 529 ! * SIMIP diagnostics -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice1D.F90
r8563 r8564 115 115 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_i_bott !: Ice bottom accretion/ablation [m] 116 116 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_snowice !: Snow ice formation [m of ice] 117 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: s m_i_1d !: Ice bulk salinity [ppt]117 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: s_i_1d !: Ice bulk salinity [ppt] 118 118 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: s_i_new !: Salinity of new ice at the bottom 119 119 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: a_ip_1d !: … … 121 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: v_i_1d !: 122 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: v_s_1d !: 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: s mv_i_1d !:123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: sv_i_1d !: 124 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: oa_i_1d !: 125 125 126 126 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_s_1d !: corresponding to the 2D var t_s 127 127 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_i_1d !: corresponding to the 2D var t_i 128 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: s _i_1d!: profiled ice salinity128 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sz_i_1d !: profiled ice salinity 129 129 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e_i_1d !: Ice enthalpy per unit volume 130 130 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e_s_1d !: Snow enthalpy per unit volume … … 149 149 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: v_s_2d 150 150 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: oa_i_2d 151 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: s mv_i_2d151 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sv_i_2d 152 152 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: a_ip_2d 153 153 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: v_ip_2d … … 202 202 & h_i_1d (jpij) , h_ib_1d (jpij) , h_s_1d (jpij) , fc_su (jpij) , fc_bo_i(jpij) , & 203 203 & dh_s_tot (jpij) , dh_i_surf (jpij) , dh_i_sub(jpij) , & 204 & dh_i_bott(jpij) , dh_snowice(jpij) , s m_i_1d (jpij) , s_i_new(jpij) , &204 & dh_i_bott(jpij) , dh_snowice(jpij) , s_i_1d (jpij) , s_i_new(jpij) , & 205 205 & a_ip_1d (jpij) , v_ip_1d (jpij) , v_i_1d (jpij) , v_s_1d (jpij) , & 206 & s mv_i_1d (jpij) , oa_i_1d (jpij) , STAT=ierr(ii) )207 ! 208 ii = ii + 1 209 ALLOCATE( t_s_1d (jpij,nlay_s) , t_i_1d (jpij,nlay_i) , s _i_1d(jpij,nlay_i) , &206 & sv_i_1d (jpij) , oa_i_1d (jpij) , STAT=ierr(ii) ) 207 ! 208 ii = ii + 1 209 ALLOCATE( t_s_1d (jpij,nlay_s) , t_i_1d (jpij,nlay_i) , sz_i_1d(jpij,nlay_i) , & 210 210 & e_i_1d (jpij,nlay_i) , e_s_1d (jpij,nlay_s) , & 211 211 & eh_i_old(jpij,0:nlay_i+1) , h_i_old(jpij,0:nlay_i+1) , STAT=ierr(ii) ) … … 219 219 ii = ii + 1 220 220 ALLOCATE( a_i_2d(jpij,jpl) , a_ib_2d(jpij,jpl) , h_i_2d(jpij,jpl) , h_ib_2d(jpij,jpl) , & 221 & v_i_2d(jpij,jpl) ,v_s_2d(jpij,jpl) ,oa_i_2d(jpij,jpl) ,s mv_i_2d(jpij,jpl) , &221 & v_i_2d(jpij,jpl) ,v_s_2d(jpij,jpl) ,oa_i_2d(jpij,jpl) ,sv_i_2d(jpij,jpl) , & 222 222 & a_ip_2d(jpij,jpl) ,v_ip_2d(jpij,jpl) ,t_su_2d(jpij,jpl) , & 223 223 & STAT=ierr(ii) ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icecor.F90
r8563 r8564 91 91 DO jj = 1, jpj 92 92 DO ji = 1, jpi 93 zsal = s mv_i(ji,jj,jl)94 s mv_i(ji,jj,jl) = MIN( MAX( rn_simin*v_i(ji,jj,jl) , smv_i(ji,jj,jl) ) , rn_simax*v_i(ji,jj,jl) )95 sfx_res(ji,jj) = sfx_res(ji,jj) - ( s mv_i(ji,jj,jl) - zsal ) * zzc ! associated salt flux93 zsal = sv_i(ji,jj,jl) 94 sv_i(ji,jj,jl) = MIN( MAX( rn_simin*v_i(ji,jj,jl) , sv_i(ji,jj,jl) ) , rn_simax*v_i(ji,jj,jl) ) 95 sfx_res(ji,jj) = sfx_res(ji,jj) - ( sv_i(ji,jj,jl) - zsal ) * zzc ! associated salt flux 96 96 END DO 97 97 END DO … … 140 140 & + SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) ) ) * r1_rdtice 141 141 ! ! salt, volume 142 diag_s mvi(ji,jj) = SUM( smv_i(ji,jj,:) - smv_i_b(ji,jj,:) ) * rhoic * r1_rdtice143 diag_vice(ji,jj) = SUM( v_i (ji,jj,:) - v_i_b(ji,jj,:) ) * rhoic * r1_rdtice144 diag_vsnw(ji,jj) = SUM( v_s (ji,jj,:) - v_s_b(ji,jj,:) ) * rhosn * r1_rdtice142 diag_sice(ji,jj) = SUM( sv_i(ji,jj,:) - sv_i_b(ji,jj,:) ) * rhoic * r1_rdtice 143 diag_vice(ji,jj) = SUM( v_i (ji,jj,:) - v_i_b (ji,jj,:) ) * rhoic * r1_rdtice 144 diag_vsnw(ji,jj) = SUM( v_s (ji,jj,:) - v_s_b (ji,jj,:) ) * rhosn * r1_rdtice 145 145 END DO 146 146 END DO … … 161 161 & + SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) ) ) * r1_rdtice 162 162 ! ! salt, volume 163 diag_s mvi(ji,jj) = diag_smvi(ji,jj) + SUM( smv_i(ji,jj,:) - smv_i_b(ji,jj,:) ) * rhoic * r1_rdtice164 diag_vice(ji,jj) = diag_vice(ji,jj) + SUM( v_i (ji,jj,:) - v_i_b(ji,jj,:) ) * rhoic * r1_rdtice165 diag_vsnw(ji,jj) = diag_vsnw(ji,jj) + SUM( v_s (ji,jj,:) - v_s_b(ji,jj,:) ) * rhosn * r1_rdtice163 diag_sice(ji,jj) = diag_sice(ji,jj) + SUM( sv_i(ji,jj,:) - sv_i_b(ji,jj,:) ) * rhoic * r1_rdtice 164 diag_vice(ji,jj) = diag_vice(ji,jj) + SUM( v_i (ji,jj,:) - v_i_b (ji,jj,:) ) * rhoic * r1_rdtice 165 diag_vsnw(ji,jj) = diag_vsnw(ji,jj) + SUM( v_s (ji,jj,:) - v_s_b (ji,jj,:) ) * rhosn * r1_rdtice 166 166 END DO 167 167 END DO -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icectl.F90
r8563 r8564 93 93 pdiag_v = glob_sum( SUM( v_i * rhoic + v_s * rhosn, dim=3 ) * e1e2t * zconv ) 94 94 95 pdiag_s = glob_sum( SUM( s mv_i * rhoic , dim=3 ) * e1e2t * zconv )95 pdiag_s = glob_sum( SUM( sv_i * rhoic , dim=3 ) * e1e2t * zconv ) 96 96 97 97 pdiag_t = glob_sum( ( SUM( SUM( e_i(:,:,1:nlay_i,:), dim=4 ), dim=3 ) & … … 120 120 & - pdiag_v ) * r1_rdtice - zfv ) * rday 121 121 122 zs = ( ( glob_sum( SUM( s mv_i * rhoic , dim=3 ) * e1e2t ) * zconv &122 zs = ( ( glob_sum( SUM( sv_i * rhoic , dim=3 ) * e1e2t ) * zconv & 123 123 & - pdiag_s ) * r1_rdtice + zfs ) * rday 124 124 … … 183 183 184 184 ! salt flux 185 zsfx = glob_sum( ( sfx + diag_s mvi) * e1e2t ) * zconv * rday185 zsfx = glob_sum( ( sfx + diag_sice ) * e1e2t ) * zconv * rday 186 186 187 187 ! heat flux … … 304 304 DO jj = 1, jpj 305 305 DO ji = 1, jpi 306 IF( s m_i(ji,jj,jl) < 0.1 .AND. a_i(ji,jj,jl) > 0._wp ) THEN306 IF( s_i(ji,jj,jl) < 0.1 .AND. a_i(ji,jj,jl) > 0._wp ) THEN 307 307 ! CALL ice_prt(kt,ji,jj,1, ' ALERTE 7 : Very fresh ice ' ) 308 308 ! WRITE(numout,*) ' sst : ', sst_m(ji,jj) … … 379 379 DO jj = 1, jpj 380 380 DO ji = 1, jpi 381 ztmelts = -tmut * s _i(ji,jj,jk,jl) + rt0381 ztmelts = -tmut * sz_i(ji,jj,jk,jl) + rt0 382 382 IF( t_i(ji,jj,jk,jl) >= ztmelts .AND. v_i(ji,jj,jl) > 1.e-10 & 383 383 & .AND. a_i(ji,jj,jl) > 0._wp ) THEN … … 386 386 !WRITE(numout,*) ' t_i : ', t_i(ji,jj,jk,jl) 387 387 !WRITE(numout,*) ' e_i : ', e_i(ji,jj,jk,jl) 388 !WRITE(numout,*) ' s _i : ', s_i(ji,jj,jk,jl)388 !WRITE(numout,*) ' sz_i: ', sz_i(ji,jj,jk,jl) 389 389 !WRITE(numout,*) ' ztmelts : ', ztmelts 390 390 inb_alp(ialert_id) = inb_alp(ialert_id) + 1 … … 478 478 WRITE(numout,*) ' t_snow : ', t_s(ji,jj,1,jl) 479 479 WRITE(numout,*) ' t_i : ', t_i(ji,jj,1:nlay_i,jl) 480 WRITE(numout,*) ' s m_i : ', sm_i(ji,jj,jl)481 WRITE(numout,*) ' s mv_i : ', smv_i(ji,jj,jl)480 WRITE(numout,*) ' s_i : ', s_i(ji,jj,jl) 481 WRITE(numout,*) ' sv_i : ', sv_i(ji,jj,jl) 482 482 WRITE(numout,*) 483 483 END DO … … 523 523 WRITE(numout,*) ' t_i : ', t_i(ji,jj,1:nlay_i,jl) 524 524 WRITE(numout,*) ' t_su : ', t_su(ji,jj,jl) , ' t_s : ', t_s(ji,jj,1,jl) 525 WRITE(numout,*) ' s m_i : ', sm_i(ji,jj,jl), ' o_i : ', o_i(ji,jj,jl)525 WRITE(numout,*) ' s_i : ', s_i(ji,jj,jl) , ' o_i : ', o_i(ji,jj,jl) 526 526 WRITE(numout,*) ' a_i : ', a_i(ji,jj,jl) , ' a_i_b : ', a_i_b(ji,jj,jl) 527 527 WRITE(numout,*) ' v_i : ', v_i(ji,jj,jl) , ' v_i_b : ', v_i_b(ji,jj,jl) … … 530 530 WRITE(numout,*) ' e_i2 : ', e_i(ji,jj,2,jl) , ' ei2_b : ', e_i_b(ji,jj,2,jl) 531 531 WRITE(numout,*) ' e_snow : ', e_s(ji,jj,1,jl) , ' e_snow_b : ', e_s_b(ji,jj,1,jl) 532 WRITE(numout,*) ' s mv_i : ', smv_i(ji,jj,jl) , ' smv_i_b : ', smv_i_b(ji,jj,jl)532 WRITE(numout,*) ' sv_i : ', sv_i(ji,jj,jl) , ' sv_i_b : ', sv_i_b(ji,jj,jl) 533 533 WRITE(numout,*) ' oa_i : ', oa_i(ji,jj,jl) , ' oa_i_b : ', oa_i_b(ji,jj,jl) 534 534 END DO !jl … … 630 630 CALL prt_ctl_info(' - Category : ', ivar1=jl) 631 631 CALL prt_ctl_info(' ~~~~~~~~~~') 632 CALL prt_ctl(tab2d_1=h_i (:,:,jl) , clinfo1= ' h_i : ')633 CALL prt_ctl(tab2d_1=h_s (:,:,jl) , clinfo1= ' h_s : ')632 CALL prt_ctl(tab2d_1=h_i (:,:,jl) , clinfo1= ' h_i : ') 633 CALL prt_ctl(tab2d_1=h_s (:,:,jl) , clinfo1= ' h_s : ') 634 634 CALL prt_ctl(tab2d_1=t_su (:,:,jl) , clinfo1= ' t_su : ') 635 635 CALL prt_ctl(tab2d_1=t_s (:,:,1,jl) , clinfo1= ' t_snow : ') 636 CALL prt_ctl(tab2d_1=s m_i (:,:,jl) , clinfo1= ' sm_i: ')636 CALL prt_ctl(tab2d_1=s_i (:,:,jl) , clinfo1= ' s_i : ') 637 637 CALL prt_ctl(tab2d_1=o_i (:,:,jl) , clinfo1= ' o_i : ') 638 638 CALL prt_ctl(tab2d_1=a_i (:,:,jl) , clinfo1= ' a_i : ') … … 641 641 CALL prt_ctl(tab2d_1=e_i (:,:,1,jl) , clinfo1= ' e_i1 : ') 642 642 CALL prt_ctl(tab2d_1=e_s (:,:,1,jl) , clinfo1= ' e_snow : ') 643 CALL prt_ctl(tab2d_1=s mv_i (:,:,jl) , clinfo1= ' smv_i: ')643 CALL prt_ctl(tab2d_1=sv_i (:,:,jl) , clinfo1= ' sv_i : ') 644 644 CALL prt_ctl(tab2d_1=oa_i (:,:,jl) , clinfo1= ' oa_i : ') 645 645 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedia.F90
r8562 r8564 88 88 zbg_svol = glob_sum( vt_s(:,:) * e1e2t(:,:) ) * 1.e-9 ! snow volume (km3) 89 89 zbg_area = glob_sum( at_i(:,:) * e1e2t(:,:) ) * 1.e-6 ! area (km2) 90 zbg_isal = glob_sum( SUM( s mv_i(:,:,:), dim=3 ) * e1e2t(:,:) ) * 1.e-9 ! salt content (pss*km3)90 zbg_isal = glob_sum( SUM( sv_i(:,:,:), dim=3 ) * e1e2t(:,:) ) * 1.e-9 ! salt content (pss*km3) 91 91 zbg_item = glob_sum( et_i * e1e2t(:,:) ) * 1.e-20 ! heat content (1.e20 J) 92 92 zbg_stem = glob_sum( et_s * e1e2t(:,:) ) * 1.e-20 ! heat content (1.e20 J) … … 111 111 ! ----------------------- ! 112 112 zdiff_vol = r1_rau0 * glob_sum( ( rhoic*vt_i(:,:) + rhosn*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater trend (km3) 113 zdiff_sal = r1_rau0 * glob_sum( ( rhoic* SUM( s mv_i(:,:,:), dim=3 ) - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! salt content trend (km3*pss)113 zdiff_sal = r1_rau0 * glob_sum( ( rhoic* SUM( sv_i(:,:,:), dim=3 ) - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! salt content trend (km3*pss) 114 114 zdiff_tem = glob_sum( ( et_i(:,:) + et_s(:,:) - tem_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-20 ! heat content trend (1.e20 J) 115 115 ! + SUM( qevap_ice * a_i_b, dim=3 ) !! clem: I think this term should not be there (but needs a check) … … 249 249 vol_loc_ini(:,:) = rhoic * vt_i(:,:) + rhosn * vt_s(:,:) ! ice/snow volume (kg/m2) 250 250 tem_loc_ini(:,:) = et_i(:,:) + et_s(:,:) ! ice/snow heat content (J) 251 sal_loc_ini(:,:) = rhoic * SUM( s mv_i(:,:,:), dim=3 )! ice salt content (pss*kg/m2)251 sal_loc_ini(:,:) = rhoic * SUM( sv_i(:,:,:), dim=3 ) ! ice salt content (pss*kg/m2) 252 252 ENDIF 253 253 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv.F90
r8562 r8564 89 89 ! !-----------------------! 90 90 CALL ice_dyn_adv_umx( nn_UMx, kt, u_ice, v_ice, & 91 & ato_i, v_i, v_s, s mv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i )91 & ato_i, v_i, v_s, sv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i ) 92 92 ! !-----------------------! 93 93 CASE( np_advPRA ) ! PRATHER scheme ! 94 94 ! !-----------------------! 95 95 CALL ice_dyn_adv_pra( kt, u_ice, v_ice, & 96 & ato_i, v_i, v_s, s mv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i )96 & ato_i, v_i, v_s, sv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i ) 97 97 END SELECT 98 98 … … 100 100 ! diagnostics 101 101 !------------ 102 diag_trp_ei (:,:) = SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b(:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_rdtice103 diag_trp_es (:,:) = SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b(:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_rdtice104 diag_trp_s mv(:,:) = SUM( smv_i(:,:,:) - smv_i_b(:,:,:) , dim=3 ) * r1_rdtice105 diag_trp_vi (:,:) = SUM( v_i (:,:,:) - v_i_b(:,:,:) , dim=3 ) * r1_rdtice106 diag_trp_vs (:,:) = SUM( v_s (:,:,:) - v_s_b(:,:,:) , dim=3 ) * r1_rdtice102 diag_trp_ei(:,:) = SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_rdtice 103 diag_trp_es(:,:) = SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_rdtice 104 diag_trp_sv(:,:) = SUM( sv_i(:,:,:) - sv_i_b(:,:,:) , dim=3 ) * r1_rdtice 105 diag_trp_vi(:,:) = SUM( v_i (:,:,:) - v_i_b (:,:,:) , dim=3 ) * r1_rdtice 106 diag_trp_vs(:,:) = SUM( v_s (:,:,:) - v_s_b (:,:,:) , dim=3 ) * r1_rdtice 107 107 IF( iom_use('icetrp') ) CALL iom_put( "icetrp" , diag_trp_vi ) ! ice volume transport 108 108 IF( iom_use('snwtrp') ) CALL iom_put( "snwtrp" , diag_trp_vs ) ! snw volume transport 109 IF( iom_use('saltrp') ) CALL iom_put( "saltrp" , diag_trp_s mv * rhoic )! salt content transport109 IF( iom_use('saltrp') ) CALL iom_put( "saltrp" , diag_trp_sv * rhoic ) ! salt content transport 110 110 IF( iom_use('deitrp') ) CALL iom_put( "deitrp" , diag_trp_ei ) ! advected ice enthalpy (W/m2) 111 111 IF( iom_use('destrp') ) CALL iom_put( "destrp" , diag_trp_es ) ! advected snw enthalpy (W/m2) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_pra.F90
r8534 r8564 41 41 42 42 SUBROUTINE ice_dyn_adv_pra( kt, pu_ice, pv_ice, & 43 & pato_i, pv_i, pv_s, ps mv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i )43 & pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i ) 44 44 !!---------------------------------------------------------------------- 45 45 !! ** routine ice_dyn_adv_pra ** … … 59 59 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: pv_i ! ice volume 60 60 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: pv_s ! snw volume 61 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: ps mv_i! salt content61 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: psv_i ! salt content 62 62 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: poa_i ! age content 63 63 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: pa_i ! ice concentration … … 99 99 z0opw(:,:,1) = pato_i(:,:) * e1e2t(:,:) ! Open water area 100 100 DO jl = 1, jpl 101 z0snw(:,:,jl) = pv_s 102 z0ice(:,:,jl) = pv_i 103 z0ai (:,:,jl) = pa_i 104 z0smi(:,:,jl) = ps mv_i(:,:, jl) * e1e2t(:,:) ! Salt content105 z0oi (:,:,jl) = poa_i 106 z0es (:,:,jl) = pe_s 101 z0snw(:,:,jl) = pv_s (:,:, jl) * e1e2t(:,:) ! Snow volume 102 z0ice(:,:,jl) = pv_i (:,:, jl) * e1e2t(:,:) ! Ice volume 103 z0ai (:,:,jl) = pa_i (:,:, jl) * e1e2t(:,:) ! Ice area 104 z0smi(:,:,jl) = psv_i(:,:, jl) * e1e2t(:,:) ! Salt content 105 z0oi (:,:,jl) = poa_i(:,:, jl) * e1e2t(:,:) ! Age content 106 z0es (:,:,jl) = pe_s (:,:,1,jl) * e1e2t(:,:) ! Snow heat content 107 107 DO jk = 1, nlay_i 108 108 z0ei(:,:,jk,jl) = pe_i(:,:,jk,jl) * e1e2t(:,:) ! Ice heat content … … 227 227 pato_i(:,:) = z0opw(:,:,1) * r1_e1e2t(:,:) 228 228 DO jl = 1, jpl 229 pv_i 230 pv_s 231 ps mv_i(:,:, jl) = z0smi(:,:,jl) * r1_e1e2t(:,:)232 poa_i 233 pa_i 234 pe_s 229 pv_i (:,:, jl) = z0ice(:,:,jl) * r1_e1e2t(:,:) 230 pv_s (:,:, jl) = z0snw(:,:,jl) * r1_e1e2t(:,:) 231 psv_i(:,:, jl) = z0smi(:,:,jl) * r1_e1e2t(:,:) 232 poa_i(:,:, jl) = z0oi (:,:,jl) * r1_e1e2t(:,:) 233 pa_i (:,:, jl) = z0ai (:,:,jl) * r1_e1e2t(:,:) 234 pe_s (:,:,1,jl) = z0es (:,:,jl) * r1_e1e2t(:,:) 235 235 DO jk = 1, nlay_i 236 236 pe_i(:,:,jk,jl) = z0ei(:,:,jk,jl) * r1_e1e2t(:,:) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_umx.F90
r8534 r8564 44 44 45 45 SUBROUTINE ice_dyn_adv_umx( k_order, kt, pu_ice, pv_ice, & 46 & pato_i, pv_i, pv_s, ps mv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i )46 & pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i ) 47 47 !!---------------------------------------------------------------------- 48 48 !! *** ROUTINE ice_dyn_adv_umx *** … … 61 61 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: pv_i ! ice volume 62 62 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: pv_s ! snw volume 63 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: ps mv_i! salt content63 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: psv_i ! salt content 64 64 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: poa_i ! age content 65 65 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: pa_i ! ice concentration … … 117 117 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pa_i(:,:,jl) ) ! Ice area 118 118 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pv_i(:,:,jl) ) ! Ice volume 119 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, ps mv_i(:,:,jl) )! Salt content120 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, poa_i (:,:,jl) )! Age content119 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, psv_i(:,:,jl) ) ! Salt content 120 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, poa_i(:,:,jl) ) ! Age content 121 121 DO jk = 1, nlay_i 122 122 CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pe_i(:,:,jk,jl) ) ! Ice heat content -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rdgrft.F90
r8556 r8564 252 252 !!CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d(1:nidx,1:jpl), a_i(:,:,:) ) 253 253 !!CALL tab_3d_2d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i (:,:,:) ) 254 CALL tab_3d_2d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s(:,:,:) )255 CALL tab_3d_2d( nidx, idxice(1:nidx), s mv_i_2d(1:nidx,1:jpl), smv_i(:,:,:) )256 CALL tab_3d_2d( nidx, idxice(1:nidx), oa_i_2d (1:nidx,1:jpl), oa_i(:,:,:) )254 CALL tab_3d_2d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s (:,:,:) ) 255 CALL tab_3d_2d( nidx, idxice(1:nidx), sv_i_2d(1:nidx,1:jpl), sv_i(:,:,:) ) 256 CALL tab_3d_2d( nidx, idxice(1:nidx), oa_i_2d(1:nidx,1:jpl), oa_i(:,:,:) ) 257 257 IF ( nn_pnd_scheme > 0 ) THEN 258 258 CALL tab_3d_2d( nidx, idxice(1:nidx), a_ip_2d(1:nidx,1:jpl), a_ip(:,:,:) ) … … 317 317 !----------- 318 318 CALL tab_1d_2d( nidx, idxice(1:nidx), ato_i_1d(1:nidx), ato_i(:,:) ) 319 CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i(:,:,:) )320 CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i(:,:,:) )321 CALL tab_2d_3d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s(:,:,:) )322 CALL tab_2d_3d( nidx, idxice(1:nidx), s mv_i_2d(1:nidx,1:jpl), smv_i(:,:,:) )323 CALL tab_2d_3d( nidx, idxice(1:nidx), oa_i_2d (1:nidx,1:jpl), oa_i(:,:,:) )319 CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i (:,:,:) ) 320 CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i (:,:,:) ) 321 CALL tab_2d_3d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s (:,:,:) ) 322 CALL tab_2d_3d( nidx, idxice(1:nidx), sv_i_2d(1:nidx,1:jpl), sv_i(:,:,:) ) 323 CALL tab_2d_3d( nidx, idxice(1:nidx), oa_i_2d(1:nidx,1:jpl), oa_i(:,:,:) ) 324 324 IF ( nn_pnd_scheme > 0 ) THEN 325 325 CALL tab_2d_3d( nidx, idxice(1:nidx), a_ip_2d(1:nidx,1:jpl), a_ip(:,:,:) ) … … 603 603 DO jl1 = 1, jpl 604 604 605 CALL tab_2d_1d( nidx, idxice(1:nidx), s m_i_1d(1:nidx), sm_i(:,:,jl1) )605 CALL tab_2d_1d( nidx, idxice(1:nidx), s_i_1d(1:nidx), s_i(:,:,jl1) ) 606 606 607 607 DO ji = 1, nidx … … 636 636 ! 2.4) Compute ridging ice and new ridges (vi, vs, sm, oi, es, ei) 637 637 !--------------------------------------------------------------- 638 virdg1 = v_i_2d 639 virdg2(ji) = v_i_2d 640 vsrdg(ji) = v_s_2d 641 sirdg1 = s mv_i_2d(ji,jl1) * afrdg642 sirdg2(ji) = s mv_i_2d(ji,jl1) * afrdg + vsw * sss_1d(ji)643 oirdg1 = oa_i_2d 644 oirdg2(ji) = oa_i_2d 645 esrdg(ji) = ze_s_2d 646 647 virft(ji) = v_i_2d 648 vsrft(ji) = v_s_2d 649 sirft(ji) = s mv_i_2d(ji,jl1) * afrft650 oirft1 = oa_i_2d 651 oirft2(ji) = oa_i_2d 652 esrft(ji) = ze_s_2d 638 virdg1 = v_i_2d (ji,jl1) * afrdg 639 virdg2(ji) = v_i_2d (ji,jl1) * afrdg * ( 1. + rn_porordg ) 640 vsrdg(ji) = v_s_2d (ji,jl1) * afrdg 641 sirdg1 = sv_i_2d(ji,jl1) * afrdg 642 sirdg2(ji) = sv_i_2d(ji,jl1) * afrdg + vsw * sss_1d(ji) 643 oirdg1 = oa_i_2d(ji,jl1) * afrdg 644 oirdg2(ji) = oa_i_2d(ji,jl1) * afrdg * hi_hrdg(ji,jl1) 645 esrdg(ji) = ze_s_2d(ji,1,jl1) * afrdg 646 647 virft(ji) = v_i_2d (ji,jl1) * afrft 648 vsrft(ji) = v_s_2d (ji,jl1) * afrft 649 sirft(ji) = sv_i_2d(ji,jl1) * afrft 650 oirft1 = oa_i_2d(ji,jl1) * afrft 651 oirft2(ji) = oa_i_2d(ji,jl1) * afrft * hi_hrft 652 esrft(ji) = ze_s_2d(ji,1,jl1) * afrft 653 653 654 654 !MV MP 2016 … … 689 689 !------------------------------------------ 690 690 IF( nn_icesal /= 2 ) THEN 691 sirdg2(ji) = sirdg2(ji) - vsw * ( sss_1d(ji) - sm_i_1d(ji) ) ! ridge salinity = sm_i692 sfx_bri_1d(ji) = sfx_bri_1d(ji) + sss_1d(ji) 693 & - s m_i_1d(ji) * vsw * rhoic * r1_rdtice ! and get sm_i from the ocean691 sirdg2(ji) = sirdg2(ji) - vsw * ( sss_1d(ji) - s_i_1d(ji) ) ! ridge salinity = s_i 692 sfx_bri_1d(ji) = sfx_bri_1d(ji) + sss_1d(ji) * vsw * rhoic * r1_rdtice & ! put back sss_m into the ocean 693 & - s_i_1d(ji) * vsw * rhoic * r1_rdtice ! and get s_i from the ocean 694 694 ENDIF 695 695 … … 698 698 ! 2.6) update jl1 (removing ridged/rafted area) 699 699 !------------------------------------------ 700 a_i_2d (ji,jl1) = a_i_2d(ji,jl1) - airdg1 - airft1701 v_i_2d (ji,jl1) = v_i_2d(ji,jl1) - virdg1 - virft(ji)702 v_s_2d (ji,jl1) = v_s_2d(ji,jl1) - vsrdg(ji) - vsrft(ji)703 s mv_i_2d(ji,jl1) = smv_i_2d(ji,jl1) - sirdg1 - sirft(ji)704 oa_i_2d (ji,jl1) = oa_i_2d(ji,jl1) - oirdg1 - oirft1700 a_i_2d (ji,jl1) = a_i_2d (ji,jl1) - airdg1 - airft1 701 v_i_2d (ji,jl1) = v_i_2d (ji,jl1) - virdg1 - virft(ji) 702 v_s_2d (ji,jl1) = v_s_2d (ji,jl1) - vsrdg(ji) - vsrft(ji) 703 sv_i_2d(ji,jl1) = sv_i_2d(ji,jl1) - sirdg1 - sirft(ji) 704 oa_i_2d(ji,jl1) = oa_i_2d(ji,jl1) - oirdg1 - oirft1 705 705 ! MV MP 2016 706 706 IF ( nn_pnd_scheme > 0 ) THEN … … 761 761 ENDIF 762 762 ! 763 a_i_2d (ji,jl2) = a_i_2d(ji,jl2) + ( airdg2(ji) * farea + airft2(ji) * zswitch(ji) )764 oa_i_2d (ji,jl2) = oa_i_2d(ji,jl2) + ( oirdg2(ji) * farea + oirft2(ji) * zswitch(ji) )765 v_i_2d (ji,jl2) = v_i_2d(ji,jl2) + ( virdg2(ji) * fvol(ji) + virft (ji) * zswitch(ji) )766 s mv_i_2d(ji,jl2) = smv_i_2d(ji,jl2) + ( sirdg2(ji) * fvol(ji) + sirft (ji) * zswitch(ji) )767 v_s_2d (ji,jl2) = v_s_2d(ji,jl2) + ( vsrdg (ji) * rn_fsnwrdg * fvol(ji) + &763 a_i_2d (ji,jl2) = a_i_2d (ji,jl2) + ( airdg2(ji) * farea + airft2(ji) * zswitch(ji) ) 764 oa_i_2d(ji,jl2) = oa_i_2d(ji,jl2) + ( oirdg2(ji) * farea + oirft2(ji) * zswitch(ji) ) 765 v_i_2d (ji,jl2) = v_i_2d (ji,jl2) + ( virdg2(ji) * fvol(ji) + virft (ji) * zswitch(ji) ) 766 sv_i_2d(ji,jl2) = sv_i_2d(ji,jl2) + ( sirdg2(ji) * fvol(ji) + sirft (ji) * zswitch(ji) ) 767 v_s_2d (ji,jl2) = v_s_2d (ji,jl2) + ( vsrdg (ji) * rn_fsnwrdg * fvol(ji) + & 768 768 & vsrft (ji) * rn_fsnwrft * zswitch(ji) ) 769 769 ! MV MP 2016 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceistate.F90
r8563 r8564 88 88 !! 6) store before fields 89 89 !! 90 !! ** Notes : o_i, t_su, t_s, t_i, s _i must be filled everywhere, even90 !! ** Notes : o_i, t_su, t_s, t_i, sz_i must be filled everywhere, even 91 91 !! where there is no ice (clem: I do not know why, is it mandatory?) 92 92 !!-------------------------------------------------------------------- … … 284 284 DO jj = 1, jpj 285 285 DO ji = 1, jpi 286 a_i(ji,jj,jl) 286 a_i(ji,jj,jl) = zswitch(ji,jj) * za_i_ini(ji,jj,jl) ! concentration 287 287 h_i(ji,jj,jl) = zswitch(ji,jj) * zh_i_ini(ji,jj,jl) ! ice thickness 288 s m_i(ji,jj,jl) = zswitch(ji,jj) * zsm_i_ini(ji,jj) ! salinity289 o_i(ji,jj,jl) 290 t_su(ji,jj,jl) 288 s_i(ji,jj,jl) = zswitch(ji,jj) * zsm_i_ini(ji,jj) ! salinity 289 o_i(ji,jj,jl) = 0._wp ! age (0 day) 290 t_su(ji,jj,jl) = zswitch(ji,jj) * zts_u_ini(ji,jj) + ( 1._wp - zswitch(ji,jj) ) * rt0 ! surf temp 291 291 292 292 IF( zht_i_ini(ji,jj) > 0._wp )THEN … … 305 305 306 306 ! ice volume, salt content, age content 307 v_i (ji,jj,jl)= h_i(ji,jj,jl) * a_i(ji,jj,jl) ! ice volume308 v_s (ji,jj,jl)= h_s(ji,jj,jl) * a_i(ji,jj,jl) ! snow volume309 s mv_i(ji,jj,jl) = MIN( sm_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl) ! salt content310 oa_i(ji,jj,jl) 307 v_i (ji,jj,jl) = h_i(ji,jj,jl) * a_i(ji,jj,jl) ! ice volume 308 v_s (ji,jj,jl) = h_s(ji,jj,jl) * a_i(ji,jj,jl) ! snow volume 309 sv_i(ji,jj,jl) = MIN( s_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl) ! salt content 310 oa_i(ji,jj,jl) = o_i(ji,jj,jl) * a_i(ji,jj,jl) ! age content 311 311 END DO 312 312 END DO … … 316 316 IF( nn_icesal == 1 .OR. nn_icesal == 3 ) THEN 317 317 CALL ice_var_salprof 318 s mv_i = sm_i * v_i318 sv_i = s_i * v_i 319 319 ENDIF 320 320 … … 340 340 DO jj = 1, jpj 341 341 DO ji = 1, jpi 342 t_i (ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(ji,jj) + ( 1._wp - zswitch(ji,jj) ) * rt0343 s _i(ji,jj,jk,jl) = zswitch(ji,jj) * zsm_i_ini(ji,jj) + ( 1._wp - zswitch(ji,jj) ) * rn_simin344 ztmelts = - tmut * s _i(ji,jj,jk,jl) + rt0 !Melting temperature in K342 t_i (ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(ji,jj) + ( 1._wp - zswitch(ji,jj) ) * rt0 343 sz_i(ji,jj,jk,jl) = zswitch(ji,jj) * zsm_i_ini(ji,jj) + ( 1._wp - zswitch(ji,jj) ) * rn_simin 344 ztmelts = - tmut * sz_i(ji,jj,jk,jl) + rt0 !Melting temperature in K 345 345 346 346 ! heat content per unit volume … … 379 379 v_i (:,:,:) = 0._wp 380 380 v_s (:,:,:) = 0._wp 381 s mv_i(:,:,:) = 0._wp381 sv_i (:,:,:) = 0._wp 382 382 oa_i (:,:,:) = 0._wp 383 383 h_i (:,:,:) = 0._wp 384 384 h_s (:,:,:) = 0._wp 385 s m_i(:,:,:) = 0._wp385 s_i (:,:,:) = 0._wp 386 386 o_i (:,:,:) = 0._wp 387 387 … … 475 475 v_s_b (:,:,:) = v_s (:,:,:) 476 476 e_s_b (:,:,:,:) = e_s (:,:,:,:) 477 s mv_i_b(:,:,:) = smv_i(:,:,:)477 sv_i_b (:,:,:) = sv_i (:,:,:) 478 478 oa_i_b (:,:,:) = oa_i (:,:,:) 479 479 u_ice_b(:,:) = u_ice(:,:) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90
r8563 r8564 392 392 !!------------------------------------------------------------------ 393 393 394 CALL tab_3d_2d( nidx, idxice(1:nidx), h_i_2d (1:nidx,1:jpl), h_i 395 CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i)396 CALL tab_3d_2d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i)397 CALL tab_3d_2d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s)398 CALL tab_3d_2d( nidx, idxice(1:nidx), oa_i_2d (1:nidx,1:jpl), oa_i)399 CALL tab_3d_2d( nidx, idxice(1:nidx), s mv_i_2d(1:nidx,1:jpl), smv_i)400 CALL tab_3d_2d( nidx, idxice(1:nidx), a_ip_2d (1:nidx,1:jpl), a_ip)401 CALL tab_3d_2d( nidx, idxice(1:nidx), v_ip_2d (1:nidx,1:jpl), v_ip)402 CALL tab_3d_2d( nidx, idxice(1:nidx), t_su_2d (1:nidx,1:jpl), t_su)394 CALL tab_3d_2d( nidx, idxice(1:nidx), h_i_2d (1:nidx,1:jpl), h_i ) 395 CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i ) 396 CALL tab_3d_2d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i ) 397 CALL tab_3d_2d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s ) 398 CALL tab_3d_2d( nidx, idxice(1:nidx), oa_i_2d(1:nidx,1:jpl), oa_i ) 399 CALL tab_3d_2d( nidx, idxice(1:nidx), sv_i_2d(1:nidx,1:jpl), sv_i ) 400 CALL tab_3d_2d( nidx, idxice(1:nidx), a_ip_2d(1:nidx,1:jpl), a_ip ) 401 CALL tab_3d_2d( nidx, idxice(1:nidx), v_ip_2d(1:nidx,1:jpl), v_ip ) 402 CALL tab_3d_2d( nidx, idxice(1:nidx), t_su_2d(1:nidx,1:jpl), t_su ) 403 403 404 404 !---------------------------------------------------------------------------------------------- … … 443 443 ! 444 444 ! ! Ice age 445 ztrans 446 oa_i_2d(ji,jl1) 447 oa_i_2d(ji,jl2) 448 ! 449 ztrans = smv_i_2d(ji,jl1) * zworkv(ji)! Ice salinity450 ! 451 s mv_i_2d(ji,jl1) = smv_i_2d(ji,jl1) - ztrans452 s mv_i_2d(ji,jl2) = smv_i_2d(ji,jl2) + ztrans445 ztrans = oa_i_2d(ji,jl1) * pdaice(ji,jl) !!clem: should be * zworka(ji) but it does not work ???? 446 oa_i_2d(ji,jl1) = oa_i_2d(ji,jl1) - ztrans 447 oa_i_2d(ji,jl2) = oa_i_2d(ji,jl2) + ztrans 448 ! 449 ztrans = sv_i_2d(ji,jl1) * zworkv(ji) ! Ice salinity 450 ! 451 sv_i_2d(ji,jl1) = sv_i_2d(ji,jl1) - ztrans 452 sv_i_2d(ji,jl2) = sv_i_2d(ji,jl2) + ztrans 453 453 ! 454 454 ! ! Surface temperature … … 526 526 ! 527 527 CALL tab_2d_3d( nidx, idxice(1:nidx), h_i_2d (1:nidx,1:jpl), h_i ) 528 CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i)529 CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i)530 CALL tab_2d_3d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s)531 CALL tab_2d_3d( nidx, idxice(1:nidx), oa_i_2d (1:nidx,1:jpl), oa_i)532 CALL tab_2d_3d( nidx, idxice(1:nidx), s mv_i_2d(1:nidx,1:jpl), smv_i )533 CALL tab_2d_3d( nidx, idxice(1:nidx), a_ip_2d (1:nidx,1:jpl), a_ip)534 CALL tab_2d_3d( nidx, idxice(1:nidx), v_ip_2d (1:nidx,1:jpl), v_ip)535 CALL tab_2d_3d( nidx, idxice(1:nidx), t_su_2d (1:nidx,1:jpl), t_su)528 CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i ) 529 CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i ) 530 CALL tab_2d_3d( nidx, idxice(1:nidx), v_s_2d (1:nidx,1:jpl), v_s ) 531 CALL tab_2d_3d( nidx, idxice(1:nidx), oa_i_2d(1:nidx,1:jpl), oa_i ) 532 CALL tab_2d_3d( nidx, idxice(1:nidx), sv_i_2d(1:nidx,1:jpl), sv_i ) 533 CALL tab_2d_3d( nidx, idxice(1:nidx), a_ip_2d(1:nidx,1:jpl), a_ip ) 534 CALL tab_2d_3d( nidx, idxice(1:nidx), v_ip_2d(1:nidx,1:jpl), v_ip ) 535 CALL tab_2d_3d( nidx, idxice(1:nidx), t_su_2d(1:nidx,1:jpl), t_su ) 536 536 ! 537 537 END SUBROUTINE ice_itd_shiftice -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerst.F90
r8536 r8564 133 133 z2d(:,:) = v_s(:,:,jl) 134 134 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) ! v_s 135 znam = 's mv_i'//'_htc'//zchar136 z2d(:,:) = s mv_i(:,:,jl)137 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) ! s mv_i135 znam = 'sv_i'//'_htc'//zchar 136 z2d(:,:) = sv_i(:,:,jl) 137 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) ! sv_i 138 138 znam = 'oa_i'//'_htc'//zchar 139 139 z2d(:,:) = oa_i(:,:,jl) … … 234 234 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 235 235 v_s(:,:,jl) = z2d(:,:) 236 znam = 's mv_i'//'_htc'//zchar237 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 238 s mv_i(:,:,jl) = z2d(:,:)236 znam = 'sv_i'//'_htc'//zchar 237 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 238 sv_i(:,:,jl) = z2d(:,:) 239 239 znam = 'oa_i'//'_htc'//zchar 240 240 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r8563 r8564 350 350 !!---------------------------------------------------------------------- 351 351 ! 352 a_i_b (:,:,:) = a_i(:,:,:) ! ice area353 v_i_b (:,:,:) = v_i(:,:,:) ! ice volume354 v_s_b (:,:,:) = v_s(:,:,:) ! snow volume355 s mv_i_b(:,:,:) = smv_i(:,:,:) ! salt content356 oa_i_b (:,:,:) = oa_i(:,:,:) ! areal age content357 e_s_b (:,:,:,:) = e_s(:,:,:,:) ! snow thermal energy358 e_i_b (:,:,:,:) = e_i(:,:,:,:) ! ice thermal energy352 a_i_b (:,:,:) = a_i (:,:,:) ! ice area 353 v_i_b (:,:,:) = v_i (:,:,:) ! ice volume 354 v_s_b (:,:,:) = v_s (:,:,:) ! snow volume 355 sv_i_b(:,:,:) = sv_i(:,:,:) ! salt content 356 oa_i_b(:,:,:) = oa_i(:,:,:) ! areal age content 357 e_s_b (:,:,:,:) = e_s (:,:,:,:) ! snow thermal energy 358 e_i_b (:,:,:,:) = e_i (:,:,:,:) ! ice thermal energy 359 359 WHERE( a_i_b(:,:,:) >= epsi20 ) 360 360 h_i_b(:,:,:) = v_i_b (:,:,:) / a_i_b(:,:,:) ! ice thickness … … 414 414 afx_tot(:,:) = 0._wp ; 415 415 ! 416 diag_heat(:,:) = 0._wp ; diag_s mvi(:,:) = 0._wp416 diag_heat(:,:) = 0._wp ; diag_sice(:,:) = 0._wp 417 417 diag_vice(:,:) = 0._wp ; diag_vsnw(:,:) = 0._wp 418 418 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r8563 r8564 295 295 DO jk = 1, nlay_i 296 296 DO ji = 1, nidx 297 ztmelts = -tmut * s _i_1d(ji,jk)297 ztmelts = -tmut * sz_i_1d(ji,jk) 298 298 ! Conversion q(S,T) -> T (second order equation) 299 299 zbbb = ( rcp - cpic ) * ztmelts + e_i_1d(ji,jk) * r1_rhoic - lfus … … 365 365 CALL tab_2d_1d( nidx, idxice(1:nidx), h_s_1d(1:nidx), h_s(:,:,kl) ) 366 366 CALL tab_2d_1d( nidx, idxice(1:nidx), t_su_1d(1:nidx), t_su(:,:,kl) ) 367 CALL tab_2d_1d( nidx, idxice(1:nidx), s m_i_1d(1:nidx), sm_i(:,:,kl) )367 CALL tab_2d_1d( nidx, idxice(1:nidx), s_i_1d(1:nidx), s_i(:,:,kl) ) 368 368 DO jk = 1, nlay_s 369 369 CALL tab_2d_1d( nidx, idxice(1:nidx), t_s_1d(1:nidx,jk), t_s(:,:,jk,kl) ) … … 373 373 CALL tab_2d_1d( nidx, idxice(1:nidx), t_i_1d(1:nidx,jk), t_i(:,:,jk,kl) ) 374 374 CALL tab_2d_1d( nidx, idxice(1:nidx), e_i_1d(1:nidx,jk), e_i(:,:,jk,kl) ) 375 CALL tab_2d_1d( nidx, idxice(1:nidx), s _i_1d(1:nidx,jk), s_i(:,:,jk,kl) )375 CALL tab_2d_1d( nidx, idxice(1:nidx), sz_i_1d(1:nidx,jk), sz_i(:,:,jk,kl) ) 376 376 END DO 377 377 ! … … 454 454 ! 455 455 ! Change thickness to volume (replaces routine ice_var_eqv2glo) 456 v_i_1d(1:nidx) 457 v_s_1d(1:nidx) 458 s mv_i_1d(1:nidx) = sm_i_1d(1:nidx) * v_i_1d(1:nidx)456 v_i_1d(1:nidx) = h_i_1d(1:nidx) * a_i_1d(1:nidx) 457 v_s_1d(1:nidx) = h_s_1d(1:nidx) * a_i_1d(1:nidx) 458 sv_i_1d(1:nidx) = s_i_1d(1:nidx) * v_i_1d(1:nidx) 459 459 460 460 CALL tab_1d_2d( nidx, idxice(1:nidx), at_i_1d(1:nidx), at_i ) … … 463 463 CALL tab_1d_2d( nidx, idxice(1:nidx), h_s_1d(1:nidx), h_s(:,:,kl) ) 464 464 CALL tab_1d_2d( nidx, idxice(1:nidx), t_su_1d(1:nidx), t_su(:,:,kl) ) 465 CALL tab_1d_2d( nidx, idxice(1:nidx), s m_i_1d(1:nidx), sm_i(:,:,kl) )465 CALL tab_1d_2d( nidx, idxice(1:nidx), s_i_1d(1:nidx), s_i(:,:,kl) ) 466 466 DO jk = 1, nlay_s 467 467 CALL tab_1d_2d( nidx, idxice(1:nidx), t_s_1d(1:nidx,jk), t_s(:,:,jk,kl) ) … … 471 471 CALL tab_1d_2d( nidx, idxice(1:nidx), t_i_1d(1:nidx,jk), t_i(:,:,jk,kl) ) 472 472 CALL tab_1d_2d( nidx, idxice(1:nidx), e_i_1d(1:nidx,jk), e_i(:,:,jk,kl) ) 473 CALL tab_1d_2d( nidx, idxice(1:nidx), s _i_1d(1:nidx,jk), s_i(:,:,jk,kl) )473 CALL tab_1d_2d( nidx, idxice(1:nidx), sz_i_1d(1:nidx,jk), sz_i(:,:,jk,kl) ) 474 474 END DO 475 475 ! … … 520 520 CALL tab_1d_2d( nidx, idxice(1:nidx), diag_fc_su_1d(1:nidx), diag_fc_su ) 521 521 ! extensive variables 522 CALL tab_1d_2d( nidx, idxice(1:nidx), v_i_1d (1:nidx), v_i(:,:,kl) )523 CALL tab_1d_2d( nidx, idxice(1:nidx), v_s_1d (1:nidx), v_s(:,:,kl) )524 CALL tab_1d_2d( nidx, idxice(1:nidx), s mv_i_1d(1:nidx), smv_i(:,:,kl) )522 CALL tab_1d_2d( nidx, idxice(1:nidx), v_i_1d (1:nidx), v_i (:,:,kl) ) 523 CALL tab_1d_2d( nidx, idxice(1:nidx), v_s_1d (1:nidx), v_s (:,:,kl) ) 524 CALL tab_1d_2d( nidx, idxice(1:nidx), sv_i_1d(1:nidx), sv_i(:,:,kl) ) 525 525 ! 526 526 END SELECT -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_da.F90
r8563 r8564 135 135 136 136 ! Contribution to salt flux 137 sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic * h_i_1d(ji) * zda * s m_i_1d(ji) * r1_rdtice137 sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic * h_i_1d(ji) * zda * s_i_1d(ji) * r1_rdtice 138 138 139 139 ! Contribution to heat flux into the ocean [W.m-2], (<0) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_dh.F90
r8563 r8564 288 288 DO jk = 1, nlay_i 289 289 DO ji = 1, nidx 290 ztmelts = - tmut * s _i_1d(ji,jk) ! Melting point of layer k [C]290 ztmelts = - tmut * sz_i_1d(ji,jk) ! Melting point of layer k [C] 291 291 292 292 IF( t_i_1d(ji,jk) >= (ztmelts+rt0) ) THEN !!! Internal melting … … 306 306 hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_rdtice 307 307 308 ! Contribution to salt flux (clem: using s m_i_1d and not s_i_1d(jk) is ok)309 sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s m_i_1d(ji) * r1_rdtice308 ! Contribution to salt flux (clem: using s_i_1d and not sz_i_1d(jk) is ok) 309 sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice 310 310 311 311 ! Contribution to mass flux … … 332 332 zQm = zfmdt * zEw ! Energy of the melt water sent to the ocean [J/m2, <0] 333 333 334 ! Contribution to salt flux >0 (clem: using s m_i_1d and not s_i_1d(jk) is ok)335 sfx_sum_1d(ji) = sfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s m_i_1d(ji) * r1_rdtice334 ! Contribution to salt flux >0 (clem: using s_i_1d and not sz_i_1d(jk) is ok) 335 sfx_sum_1d(ji) = sfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice 336 336 337 337 ! Contribution to heat flux [W.m-2], < 0 … … 353 353 ! Salt flux > 0 (clem2016: flux is sent to the ocean for simplicity but salt should remain in the ice except if all ice is melted. 354 354 ! It must be corrected at some point) 355 sfx_sub_1d(ji) = sfx_sub_1d(ji) - rhoic * a_i_1d(ji) * zdum * s m_i_1d(ji) * r1_rdtice355 sfx_sub_1d(ji) = sfx_sub_1d(ji) - rhoic * a_i_1d(ji) * zdum * s_i_1d(ji) * r1_rdtice 356 356 ! Heat flux [W.m-2], < 0 357 357 hfx_sub_1d(ji) = hfx_sub_1d(ji) + zdum * e_i_1d(ji,jk) * a_i_1d(ji) * r1_rdtice … … 423 423 424 424 s_i_new(ji) = zswitch_sal * zfracs * sss_1d(ji) & ! New ice salinity 425 + ( 1. - zswitch_sal ) * s m_i_1d(ji)425 + ( 1. - zswitch_sal ) * s_i_1d(ji) 426 426 ! New ice growth 427 427 ztmelts = - tmut * s_i_new(ji) ! New ice melting point (C) … … 483 483 IF( zf_tt(ji) > 0._wp .AND. jk > icount(ji,jk) ) THEN ! do not calculate where layer has already disappeared by surface melting 484 484 485 ztmelts = - tmut * s _i_1d(ji,jk) ! Melting point of layer jk (C)485 ztmelts = - tmut * sz_i_1d(ji,jk) ! Melting point of layer jk (C) 486 486 487 487 IF( t_i_1d(ji,jk) >= (ztmelts+rt0) ) THEN !!! Internal melting … … 500 500 hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_rdtice 501 501 502 ! Contribution to salt flux (clem: using s m_i_1d and not s_i_1d(jk) is ok)503 sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s m_i_1d(ji) * r1_rdtice502 ! Contribution to salt flux (clem: using s_i_1d and not sz_i_1d(jk) is ok) 503 sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice 504 504 505 505 ! Contribution to mass flux … … 533 533 hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 534 534 535 ! Contribution to salt flux (clem: using s m_i_1d and not s_i_1d(jk) is ok)536 sfx_bom_1d(ji) = sfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s m_i_1d(ji) * r1_rdtice535 ! Contribution to salt flux (clem: using s_i_1d and not sz_i_1d(jk) is ok) 536 sfx_bom_1d(ji) = sfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice 537 537 538 538 ! Total heat flux used in this process [W.m-2], >0 … … 613 613 IF( nn_icesal == 1 .OR. nn_icesal == 3 ) THEN 614 614 sfx_bri_1d(ji) = sfx_bri_1d(ji) - sss_1d (ji) * a_i_1d(ji) * zfmdt * r1_rdtice & ! put back sss_m into the ocean 615 & - s m_i_1d(ji)* a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_rdtice ! and get rn_icesal from the ocean615 & - s_i_1d(ji) * a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_rdtice ! and get rn_icesal from the ocean 616 616 ENDIF 617 617 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_do.F90
r8563 r8564 239 239 IF ( nidx > 0 ) THEN 240 240 241 CALL tab_2d_1d( nidx, idxice(1:nidx), at_i_1d (1:nidx) , at_i)242 CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i(:,:,:) )243 CALL tab_3d_2d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i(:,:,:) )244 CALL tab_3d_2d( nidx, idxice(1:nidx), s mv_i_2d(1:nidx,1:jpl), smv_i(:,:,:) )241 CALL tab_2d_1d( nidx, idxice(1:nidx), at_i_1d(1:nidx) , at_i ) 242 CALL tab_3d_2d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i (:,:,:) ) 243 CALL tab_3d_2d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i (:,:,:) ) 244 CALL tab_3d_2d( nidx, idxice(1:nidx), sv_i_2d(1:nidx,1:jpl), sv_i(:,:,:) ) 245 245 DO jl = 1, jpl 246 246 DO jk = 1, nlay_i … … 441 441 DO jl = 1, jpl 442 442 DO ji = 1, nidx 443 s mv_i_2d(ji,jl) = smv_i_2d(ji,jl) + zs_newice(ji) * ( v_i_2d(ji,jl) - zv_b(ji,jl) )443 sv_i_2d(ji,jl) = sv_i_2d(ji,jl) + zs_newice(ji) * ( v_i_2d(ji,jl) - zv_b(ji,jl) ) 444 444 END DO 445 445 END DO … … 456 456 ! 7) Change 2D vectors to 1D vectors 457 457 !------------------------------------------------------------------------------! 458 CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i(:,:,:) )459 CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i(:,:,:) )460 CALL tab_2d_3d( nidx, idxice(1:nidx), s mv_i_2d(1:nidx,1:jpl), smv_i(:,:,:) )458 CALL tab_2d_3d( nidx, idxice(1:nidx), a_i_2d (1:nidx,1:jpl), a_i (:,:,:) ) 459 CALL tab_2d_3d( nidx, idxice(1:nidx), v_i_2d (1:nidx,1:jpl), v_i (:,:,:) ) 460 CALL tab_2d_3d( nidx, idxice(1:nidx), sv_i_2d(1:nidx,1:jpl), sv_i(:,:,:) ) 461 461 DO jl = 1, jpl 462 462 DO jk = 1, nlay_i -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_sal.F90
r8563 r8564 58 58 INTEGER :: ji, jk ! dummy loop indices 59 59 REAL(wp) :: iflush, igravdr ! local scalars 60 REAL(wp) :: zs_sni, zs m_i_gd, zsm_i_fl, zsm_i_si, zsm_i_bg ! local scalars60 REAL(wp) :: zs_sni, zs_i_gd, zs_i_fl, zs_i_si, zs_i_bg ! local scalars 61 61 REAL(wp) :: z1_time_gd, z1_time_fl 62 62 !!--------------------------------------------------------------------- … … 77 77 IF( h_i_1d(ji) > 0._wp ) THEN 78 78 zs_sni = sss_1d(ji) * ( rhoic - rhosn ) * r1_rhoic ! Salinity of snow ice 79 zs m_i_si = ( zs_sni - sm_i_1d(ji) ) * dh_snowice(ji) / h_i_1d(ji) ! snow-ice80 zs m_i_bg = ( s_i_new(ji) - sm_i_1d(ji) ) * MAX( 0._wp, dh_i_bott(ji) ) / h_i_1d(ji) ! bottom growth79 zs_i_si = ( zs_sni - s_i_1d(ji) ) * dh_snowice(ji) / h_i_1d(ji) ! snow-ice 80 zs_i_bg = ( s_i_new(ji) - s_i_1d(ji) ) * MAX( 0._wp, dh_i_bott(ji) ) / h_i_1d(ji) ! bottom growth 81 81 ! Update salinity (nb: salt flux already included in icethd_dh) 82 s m_i_1d(ji) = sm_i_1d(ji) + zsm_i_bg + zsm_i_si82 s_i_1d(ji) = s_i_1d(ji) + zs_i_bg + zs_i_si 83 83 ENDIF 84 84 … … 90 90 igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_1d(ji) - t_su_1d(ji) ) ) ! =1 if t_su < t_bo 91 91 92 zs m_i_gd = - igravdr * MAX( sm_i_1d(ji) - rn_sal_gd , 0._wp ) * z1_time_gd ! gravity drainage93 zs m_i_fl = - iflush * MAX( sm_i_1d(ji) - rn_sal_fl , 0._wp ) * z1_time_fl ! flushing92 zs_i_gd = - igravdr * MAX( s_i_1d(ji) - rn_sal_gd , 0._wp ) * z1_time_gd ! gravity drainage 93 zs_i_fl = - iflush * MAX( s_i_1d(ji) - rn_sal_fl , 0._wp ) * z1_time_fl ! flushing 94 94 95 95 ! Update salinity 96 s m_i_1d(ji) = sm_i_1d(ji) + zsm_i_fl + zsm_i_gd96 s_i_1d(ji) = s_i_1d(ji) + zs_i_fl + zs_i_gd 97 97 98 98 ! Salt flux 99 sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * h_i_1d(ji) * ( zs m_i_fl + zsm_i_gd ) * r1_rdtice99 sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * h_i_1d(ji) * ( zs_i_fl + zs_i_gd ) * r1_rdtice 100 100 ENDIF 101 101 END DO -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_zdf.F90
r8563 r8564 79 79 !! surface temperature : t_su_1d 80 80 !! ice/snow temperatures : t_i_1d, t_s_1d 81 !! ice salinities : s _i_1d81 !! ice salinities : sz_i_1d 82 82 !! number of layers in the ice/snow: nlay_i, nlay_s 83 83 !! total ice/snow thickness : h_i_1d, h_s_1d … … 237 237 ! 238 238 DO ji = 1, nidx 239 ztcond_i(ji,0) = rcdic + zbeta * s _i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 )240 ztcond_i(ji,nlay_i) = rcdic + zbeta * s _i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rt0 )239 ztcond_i(ji,0) = rcdic + zbeta * sz_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) 240 ztcond_i(ji,nlay_i) = rcdic + zbeta * sz_i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rt0 ) 241 241 END DO 242 242 DO jk = 1, nlay_i-1 243 243 DO ji = 1, nidx 244 ztcond_i(ji,jk) = rcdic + zbeta * 0.5_wp * ( s _i_1d(ji,jk) + s_i_1d(ji,jk+1) ) / &244 ztcond_i(ji,jk) = rcdic + zbeta * 0.5_wp * ( sz_i_1d(ji,jk) + sz_i_1d(ji,jk+1) ) / & 245 245 & MIN( -epsi10, 0.5_wp * (t_i_1d(ji,jk) + t_i_1d(ji,jk+1)) - rt0 ) 246 246 END DO … … 250 250 ! 251 251 DO ji = 1, nidx 252 ztcond_i(ji,0) = rcdic + 0.09_wp * s _i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) &252 ztcond_i(ji,0) = rcdic + 0.09_wp * sz_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) & 253 253 & - 0.011_wp * ( t_i_1d(ji,1) - rt0 ) 254 ztcond_i(ji,nlay_i) = rcdic + 0.09_wp * s _i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rt0 ) &254 ztcond_i(ji,nlay_i) = rcdic + 0.09_wp * sz_i_1d(ji,nlay_i) / MIN( -epsi10, t_bo_1d(ji) - rt0 ) & 255 255 & - 0.011_wp * ( t_bo_1d(ji) - rt0 ) 256 256 END DO 257 257 DO jk = 1, nlay_i-1 258 258 DO ji = 1, nidx 259 ztcond_i(ji,jk) = rcdic + 0.09_wp * 0.5_wp * ( s _i_1d(ji,jk) + s_i_1d(ji,jk+1) ) / &259 ztcond_i(ji,jk) = rcdic + 0.09_wp * 0.5_wp * ( sz_i_1d(ji,jk) + sz_i_1d(ji,jk+1) ) / & 260 260 & MIN( -epsi10, 0.5_wp * (t_i_1d(ji,jk) + t_i_1d(ji,jk+1)) - rt0 ) & 261 261 & - 0.011_wp * ( 0.5_wp * (t_i_1d(ji,jk) + t_i_1d(ji,jk+1)) - rt0 ) … … 320 320 DO jk = 1, nlay_i 321 321 DO ji = 1, nidx 322 zcpi = cpic + zgamma * s _i_1d(ji,jk) / MAX( ( t_i_1d(ji,jk) - rt0 ) * ( ztiold(ji,jk) - rt0 ), epsi10 )322 zcpi = cpic + zgamma * sz_i_1d(ji,jk) / MAX( ( t_i_1d(ji,jk) - rt0 ) * ( ztiold(ji,jk) - rt0 ), epsi10 ) 323 323 zeta_i(ji,jk) = rdt_ice * r1_rhoic * z1_h_i(ji) / MAX( epsi10, zcpi ) 324 324 END DO … … 556 556 DO jk = 1, nlay_i 557 557 DO ji = 1, nidx 558 ztmelt_i = -tmut * s _i_1d(ji,jk) + rt0558 ztmelt_i = -tmut * sz_i_1d(ji,jk) + rt0 559 559 t_i_1d(ji,jk) = MAX( MIN( t_i_1d(ji,jk), ztmelt_i ), rt0 - 100._wp ) 560 560 zdti_max = MAX( zdti_max, ABS( t_i_1d(ji,jk) - ztib(ji,jk) ) ) … … 646 646 DO jk = 1, nlay_i ! Sea ice energy of melting 647 647 DO ji = 1, nidx 648 ztmelts = - tmut * s _i_1d(ji,jk)648 ztmelts = - tmut * sz_i_1d(ji,jk) 649 649 t_i_1d(ji,jk) = MIN( t_i_1d(ji,jk), ztmelts + rt0 ) ! Force t_i_1d to be lower than melting point 650 650 ! (sometimes dif scheme produces abnormally high temperatures) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceupdate.F90
r8563 r8564 249 249 250 250 IF ( iom_use( "vfxthin" ) ) THEN ! ice production for open water + thin ice (<20cm) => comparable to observations 251 WHERE( h tm_i(:,:) < 0.2 .AND. htm_i(:,:) > 0. ) ; z2d = wfx_bog252 ELSEWHERE 251 WHERE( hm_i(:,:) < 0.2 .AND. hm_i(:,:) > 0. ) ; z2d = wfx_bog 252 ELSEWHERE ; z2d = 0._wp 253 253 END WHERE 254 254 CALL iom_put( "vfxthin", ( wfx_opw + z2d ) ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90
r8563 r8564 12 12 !! - t_s (jpi,jpj,jpl) 13 13 !! - e_i (jpi,jpj,nlay_i,jpl) 14 !! - s mv_i(jpi,jpj,jpl)15 !! - oa_i 14 !! - sv_i(jpi,jpj,jpl) 15 !! - oa_i(jpi,jpj,jpl) 16 16 !! VEQV : equivalent variables sometimes used in the model 17 17 !! - h_i(jpi,jpj,jpl) … … 26 26 !! - et_s(jpi,jpj) !total snow heat content 27 27 !! - et_i(jpi,jpj) !total ice thermal content 28 !! - sm t_i(jpi,jpj) !mean ice salinity28 !! - sm_i(jpi,jpj) !mean ice salinity 29 29 !! - tm_i (jpi,jpj) !mean ice temperature 30 30 !!====================================================================== … … 117 117 ! 118 118 ! ! mean ice/snow thickness 119 h tm_i(:,:) = vt_i(:,:) * z1_at_i(:,:)120 h tm_s(:,:) = vt_s(:,:) * z1_at_i(:,:)119 hm_i(:,:) = vt_i(:,:) * z1_at_i(:,:) 120 hm_s(:,:) = vt_s(:,:) * z1_at_i(:,:) 121 121 ! 122 122 ! ! mean temperature (K), salinity and age … … 125 125 om_i (:,:) = SUM( oa_i(:,:,:) , dim=3 ) * z1_at_i(:,:) 126 126 ! 127 tm_i 128 sm t_i(:,:) = 0._wp127 tm_i(:,:) = 0._wp 128 sm_i(:,:) = 0._wp 129 129 DO jl = 1, jpl 130 130 DO jk = 1, nlay_i 131 tm_i (:,:) = tm_i (:,:) + r1_nlay_i * t_i(:,:,jk,jl) * v_i(:,:,jl) * z1_vt_i(:,:) 132 smt_i(:,:) = smt_i(:,:) + r1_nlay_i * s_i(:,:,jk,jl) * v_i(:,:,jl) * z1_vt_i(:,:) 133 END DO 134 END DO 135 ! 136 !!gm QUESTION 1 : why salinity is named smt_i and not just sm_i ? since the 4D field is named s_i. (NB for temp: tm_i, t_i) 131 tm_i(:,:) = tm_i(:,:) + r1_nlay_i * t_i (:,:,jk,jl) * v_i(:,:,jl) * z1_vt_i(:,:) 132 sm_i(:,:) = sm_i(:,:) + r1_nlay_i * sz_i(:,:,jk,jl) * v_i(:,:,jl) * z1_vt_i(:,:) 133 END DO 134 END DO 137 135 ! 138 136 DEALLOCATE( z1_at_i , z1_vt_i ) … … 152 150 REAL(wp) :: ze_i ! local scalars 153 151 REAL(wp) :: ze_s, ztmelts, zbbb, zccc ! - - 154 REAL(wp) :: zhmax, z1_zhmax , zsm_i! - -152 REAL(wp) :: zhmax, z1_zhmax ! - - 155 153 REAL(wp) :: zlay_i, zlay_s ! - - 156 154 REAL(wp), DIMENSION(jpi,jpj,jpl) :: z1_a_i, z1_v_i … … 189 187 190 188 IF( nn_icesal == 2 ) THEN !--- salinity (with a minimum value imposed everywhere) 191 WHERE( v_i(:,:,:) > epsi20 ) ; s m_i(:,:,:) = MAX( rn_simin , MIN( rn_simax, smv_i(:,:,:) * z1_v_i(:,:,:) ) )192 ELSEWHERE ; s m_i(:,:,:) = rn_simin189 WHERE( v_i(:,:,:) > epsi20 ) ; s_i(:,:,:) = MAX( rn_simin , MIN( rn_simax, sv_i(:,:,:) * z1_v_i(:,:,:) ) ) 190 ELSEWHERE ; s_i(:,:,:) = rn_simin 193 191 END WHERE 194 192 ENDIF … … 206 204 IF ( v_i(ji,jj,jl) > epsi20 ) THEN !--- icy area 207 205 ! 208 ze_i = e_i (ji,jj,jk,jl) * z1_v_i(ji,jj,jl) * zlay_i ! Energy of melting e(S,T) [J.m-3]209 ztmelts = - s _i(ji,jj,jk,jl) * tmut ! Ice layer melt temperature [C]206 ze_i = e_i (ji,jj,jk,jl) * z1_v_i(ji,jj,jl) * zlay_i ! Energy of melting e(S,T) [J.m-3] 207 ztmelts = - sz_i(ji,jj,jk,jl) * tmut ! Ice layer melt temperature [C] 210 208 ! Conversion q(S,T) -> T (second order equation) 211 209 zbbb = ( rcp - cpic ) * ztmelts + ze_i * r1_rhoic - lfus … … 253 251 !!------------------------------------------------------------------- 254 252 ! 255 v_i 256 v_s 257 s mv_i(:,:,:) = sm_i(:,:,:) * v_i(:,:,:)253 v_i (:,:,:) = h_i(:,:,:) * a_i(:,:,:) 254 v_s (:,:,:) = h_s(:,:,:) * a_i(:,:,:) 255 sv_i(:,:,:) = s_i(:,:,:) * v_i(:,:,:) 258 256 ! 259 257 END SUBROUTINE ice_var_eqv2glo … … 290 288 CASE( 1 ) ! constant salinity in time and space ! 291 289 ! !---------------------------------------! 292 s _i(:,:,:,:) = rn_icesal293 s m_i(:,:,:) = rn_icesal290 sz_i(:,:,:,:) = rn_icesal 291 s_i(:,:,:) = rn_icesal 294 292 ! 295 293 ! !---------------------------------------------! … … 301 299 DO jl = 1, jpl 302 300 DO jk = 1, nlay_i 303 s _i(:,:,jk,jl) = sm_i(:,:,jl)301 sz_i(:,:,jk,jl) = s_i(:,:,jl) 304 302 END DO 305 303 END DO 306 304 ! ! Slope of the linear profile 307 WHERE( h_i(:,:,:) > epsi20 ) ; z_slope_s(:,:,:) = 2._wp * s m_i(:,:,:) / h_i(:,:,:)305 WHERE( h_i(:,:,:) > epsi20 ) ; z_slope_s(:,:,:) = 2._wp * s_i(:,:,:) / h_i(:,:,:) 308 306 ELSEWHERE ; z_slope_s(:,:,:) = 0._wp 309 307 END WHERE … … 313 311 DO jj = 1, jpj 314 312 DO ji = 1, jpi 315 zalpha(ji,jj,jl) = MAX( 0._wp , MIN( ( zsi1 - s m_i(ji,jj,jl) ) * z1_dS , 1._wp ) )313 zalpha(ji,jj,jl) = MAX( 0._wp , MIN( ( zsi1 - s_i(ji,jj,jl) ) * z1_dS , 1._wp ) ) 316 314 ! ! force a constant profile when SSS too low (Baltic Sea) 317 IF( 2._wp * s m_i(ji,jj,jl) >= sss_m(ji,jj) ) zalpha(ji,jj,jl) = 0._wp315 IF( 2._wp * s_i(ji,jj,jl) >= sss_m(ji,jj) ) zalpha(ji,jj,jl) = 0._wp 318 316 END DO 319 317 END DO … … 327 325 ! ! linear profile with 0 surface value 328 326 zs0 = z_slope_s(ji,jj,jl) * ( REAL(jk,wp) - 0.5_wp ) * h_i(ji,jj,jl) * r1_nlay_i 329 zs = zalpha(ji,jj,jl) * zs0 + ( 1._wp - zalpha(ji,jj,jl) ) * s m_i(ji,jj,jl) ! weighting the profile330 s _i(ji,jj,jk,jl) = MIN( rn_simax, MAX( zs, rn_simin ) )327 zs = zalpha(ji,jj,jl) * zs0 + ( 1._wp - zalpha(ji,jj,jl) ) * s_i(ji,jj,jl) ! weighting the profile 328 sz_i(ji,jj,jk,jl) = MIN( rn_simax, MAX( zs, rn_simin ) ) 331 329 END DO 332 330 END DO … … 340 338 ! !-------------------------------------------! (mean = 2.30) 341 339 ! 342 s m_i(:,:,:) = 2.30_wp340 s_i(:,:,:) = 2.30_wp 343 341 !!gm Remark: if we keep the case 3, then compute an store one for all time-step 344 342 !! a array S_prof(1:nlay_i) containing the calculation and just do: 345 343 ! DO jk = 1, nlay_i 346 ! s _i(:,:,jk,:) = S_prof(jk)344 ! sz_i(:,:,jk,:) = S_prof(jk) 347 345 ! END DO 348 346 !!gm end … … 351 349 DO jk = 1, nlay_i 352 350 zargtemp = ( REAL(jk,wp) - 0.5_wp ) * r1_nlay_i 353 s _i(:,:,jk,jl) = 1.6_wp * ( 1._wp - COS( rpi * zargtemp**(0.407_wp/(0.573_wp+zargtemp)) ) )351 sz_i(:,:,jk,jl) = 1.6_wp * ( 1._wp - COS( rpi * zargtemp**(0.407_wp/(0.573_wp+zargtemp)) ) ) 354 352 END DO 355 353 END DO … … 380 378 CASE( 1 ) ! constant salinity in time and space ! 381 379 ! !---------------------------------------! 382 s _i_1d(1:nidx,:) = rn_icesal380 sz_i_1d(1:nidx,:) = rn_icesal 383 381 ! 384 382 ! !---------------------------------------------! … … 389 387 ! 390 388 ! ! Slope of the linear profile 391 WHERE( h_i_1d(1:nidx) > epsi20 ) ; z_slope_s(1:nidx) = 2._wp * s m_i_1d(1:nidx) / h_i_1d(1:nidx)389 WHERE( h_i_1d(1:nidx) > epsi20 ) ; z_slope_s(1:nidx) = 2._wp * s_i_1d(1:nidx) / h_i_1d(1:nidx) 392 390 ELSEWHERE ; z_slope_s(1:nidx) = 0._wp 393 391 END WHERE … … 395 393 z1_dS = 1._wp / ( zsi1 - zsi0 ) 396 394 DO ji = 1, nidx 397 zalpha(ji) = MAX( 0._wp , MIN( ( zsi1 - s m_i_1d(ji) ) * z1_dS , 1._wp ) )395 zalpha(ji) = MAX( 0._wp , MIN( ( zsi1 - s_i_1d(ji) ) * z1_dS , 1._wp ) ) 398 396 ! ! force a constant profile when SSS too low (Baltic Sea) 399 IF( 2._wp * s m_i_1d(ji) >= sss_1d(ji) ) zalpha(ji) = 0._wp397 IF( 2._wp * s_i_1d(ji) >= sss_1d(ji) ) zalpha(ji) = 0._wp 400 398 END DO 401 399 ! … … 405 403 ! ! linear profile with 0 surface value 406 404 zs0 = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * h_i_1d(ji) * r1_nlay_i 407 zs = zalpha(ji) * zs0 + ( 1._wp - zalpha(ji) ) * s m_i_1d(ji)408 s _i_1d(ji,jk) = MIN( rn_simax , MAX( zs , rn_simin ) )405 zs = zalpha(ji) * zs0 + ( 1._wp - zalpha(ji) ) * s_i_1d(ji) 406 sz_i_1d(ji,jk) = MIN( rn_simax , MAX( zs , rn_simin ) ) 409 407 END DO 410 408 END DO … … 416 414 ! !-------------------------------------------! (mean = 2.30) 417 415 ! 418 s m_i_1d(1:nidx) = 2.30_wp416 s_i_1d(1:nidx) = 2.30_wp 419 417 ! 420 418 !!gm cf remark in ice_var_salprof routine, CASE( 3 ) … … 423 421 zsal = 1.6_wp * ( 1._wp - COS( rpi * zargtemp**( 0.407_wp / ( 0.573_wp + zargtemp ) ) ) ) 424 422 DO ji = 1, nidx 425 s _i_1d(ji,jk) = zsal423 sz_i_1d(ji,jk) = zsal 426 424 END DO 427 425 END DO … … 452 450 ! 453 451 WHERE( a_i(:,:,jl) < epsi10 .OR. v_i(:,:,jl) < epsi10 .OR. h_i(:,:,jl) < epsi10 ) ; zswitch(:,:) = 0._wp 454 ELSEWHERE 452 ELSEWHERE ; zswitch(:,:) = 1._wp 455 453 END WHERE 456 454 … … 469 467 DO ji = 1 , jpi 470 468 ! update exchanges with ocean 471 sfx_res(ji,jj) = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * s mv_i(ji,jj,jl) * rhoic * r1_rdtice472 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i 473 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s 474 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s 469 sfx_res(ji,jj) = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl) * rhoic * r1_rdtice 470 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl) * rhoic * r1_rdtice 471 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl) * rhosn * r1_rdtice 472 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s (ji,jj,1,jl) * r1_rdtice ! W.m-2 <0 475 473 !----------------------------------------------------------------- 476 474 ! Zap snow energy … … 482 480 ! zap ice and snow volume, add water and salt to ocean 483 481 !----------------------------------------------------------------- 484 ato_i(ji,jj) = a_i 485 a_i (ji,jj,jl) = a_i 486 v_i (ji,jj,jl) = v_i 487 v_s (ji,jj,jl) = v_s 488 t_su (ji,jj,jl) = t_su 489 oa_i (ji,jj,jl) = oa_i 490 s mv_i(ji,jj,jl) = smv_i(ji,jj,jl) * zswitch(ji,jj)482 ato_i(ji,jj) = a_i (ji,jj,jl) * ( 1._wp - zswitch(ji,jj) ) + ato_i(ji,jj) 483 a_i (ji,jj,jl) = a_i (ji,jj,jl) * zswitch(ji,jj) 484 v_i (ji,jj,jl) = v_i (ji,jj,jl) * zswitch(ji,jj) 485 v_s (ji,jj,jl) = v_s (ji,jj,jl) * zswitch(ji,jj) 486 t_su (ji,jj,jl) = t_su(ji,jj,jl) * zswitch(ji,jj) + t_bo(ji,jj) * ( 1._wp - zswitch(ji,jj) ) 487 oa_i (ji,jj,jl) = oa_i(ji,jj,jl) * zswitch(ji,jj) 488 sv_i (ji,jj,jl) = sv_i(ji,jj,jl) * zswitch(ji,jj) 491 489 492 490 h_i (ji,jj,jl) = h_i (ji,jj,jl) * zswitch(ji,jj) … … 685 683 DO jk = 1, nlay_i 686 684 WHERE( t_i(:,:,jk,jl) < rt0 - epsi10 ) 687 bv_i(:,:,jl) = bv_i(:,:,jl) - tmut * s _i(:,:,jk,jl) * r1_nlay_i / ( t_i(:,:,jk,jl) - rt0 )685 bv_i(:,:,jl) = bv_i(:,:,jl) - tmut * sz_i(:,:,jk,jl) * r1_nlay_i / ( t_i(:,:,jk,jl) - rt0 ) 688 686 END WHERE 689 687 END DO -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icewri.F90
r8563 r8564 121 121 CALL iom_put( "iceconc" , at_i * zswi ) ! ice concentration 122 122 CALL iom_put( "icevolu" , vt_i * zswi ) ! ice volume = mean ice thickness over the cell 123 CALL iom_put( "icethick" , h tm_i* zswi ) ! ice thickness123 CALL iom_put( "icethick" , hm_i * zswi ) ! ice thickness 124 124 CALL iom_put( "icehc" , et_i * zswi ) ! ice total heat content 125 125 CALL iom_put( "isnowhc" , et_s * zswi ) ! snow total heat content 126 126 CALL iom_put( "ibrinv" , bvm_i * zswi * 100. ) ! brine volume 127 CALL iom_put( "micesalt" , sm t_i* zswi ) ! mean ice salinity128 CALL iom_put( "snowvol" , vt_s 127 CALL iom_put( "micesalt" , sm_i * zswi ) ! mean ice salinity 128 CALL iom_put( "snowvol" , vt_s * zswi ) ! snow volume 129 129 130 130 IF ( ln_pnd ) THEN … … 136 136 ! Output category-dependent fields 137 137 !---------------------------------- 138 IF ( iom_use('iceconc_cat' ) ) CALL iom_put( "iceconc_cat" , a_i 138 IF ( iom_use('iceconc_cat' ) ) CALL iom_put( "iceconc_cat" , a_i * zswi2 ) ! area for categories 139 139 IF ( iom_use('icethic_cat' ) ) CALL iom_put( "icethic_cat" , h_i * zswi2 ) ! thickness for categories 140 140 IF ( iom_use('snowthic_cat') ) CALL iom_put( "snowthic_cat" , h_s * zswi2 ) ! snow depth for categories 141 IF ( iom_use('salinity_cat') ) CALL iom_put( "salinity_cat" , s m_i * zswi2 ) ! salinity for categories141 IF ( iom_use('salinity_cat') ) CALL iom_put( "salinity_cat" , s_i * zswi2 ) ! salinity for categories 142 142 IF ( iom_use('icetemp_cat' ) ) CALL iom_put( "icetemp_cat", ( SUM( t_i(:,:,:,:), dim=3 ) * r1_nlay_i - rt0 ) * zswi2 ) ! ice temperature 143 143 IF ( iom_use('snwtemp_cat' ) ) CALL iom_put( "snwtemp_cat", ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zswi2 ) ! snow temperature … … 159 159 IF ( iom_use( "icepres" ) ) CALL iom_put( "icepres" , zswi(:,:) ) ! Ice presence (1 or 0) 160 160 IF ( iom_use( "icemass" ) ) CALL iom_put( "icemass" , rhoic * vt_i(:,:) * zswi(:,:) ) ! Ice mass per cell area 161 IF ( iom_use( "icethic" ) ) CALL iom_put( "icethic" , h tm_i(:,:) * zamask(:,:) + ( 1. - zamask(:,:) ) * zmiss_val ) ! Ice thickness161 IF ( iom_use( "icethic" ) ) CALL iom_put( "icethic" , hm_i(:,:) * zamask(:,:) + ( 1. - zamask(:,:) ) * zmiss_val ) ! Ice thickness 162 162 IF ( iom_use( "snomass" ) ) CALL iom_put( "snomass" , rhosn * vt_s(:,:) * zswi(:,:) + zmiss(:,:) ) ! Snow mass per cell area 163 IF ( iom_use( "snothic" ) ) CALL iom_put( "snothic" , h tm_s(:,:) * zamask(:,:) + ( 1. - zamask(:,:) ) * zmiss_val ) ! Snow thickness163 IF ( iom_use( "snothic" ) ) CALL iom_put( "snothic" , hm_s(:,:) * zamask(:,:) + ( 1. - zamask(:,:) ) * zmiss_val ) ! Snow thickness 164 164 165 165 IF ( iom_use( "iceconc_cat_mv" ) ) CALL iom_put( "iceconc_cat_mv" , a_i(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) ) ! Area for categories … … 171 171 IF ( iom_use( "icebotK" ) ) CALL iom_put( "icebotK" , t_bo(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice bottom temperature 172 172 IF ( iom_use( "iceage" ) ) CALL iom_put( "iceage" , om_i(:,:) * zamask15(:,:) + ( 1. - zamask15(:,:) ) * zmiss_val ) ! Ice age 173 IF ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass" , SUM( s mv_i, DIM = 3 ) * rhoic * 1.0e-3 * zswi(:,:) ) ! Mass of salt in sea ice per cell area174 IF ( iom_use( "icesal" ) ) CALL iom_put( "icesal" , sm t_i(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice salinity173 IF ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass" , SUM( sv_i, DIM = 3 ) * rhoic * 1.0e-3 * zswi(:,:) ) ! Mass of salt in sea ice per cell area 174 IF ( iom_use( "icesal" ) ) CALL iom_put( "icesal" , sm_i(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice salinity 175 175 176 176 IF ( iom_use( "icefb" ) ) THEN 177 zfb(:,:) = ( zrho1 * h tm_i(:,:) - zrho2 * htm_s(:,:) )177 zfb(:,:) = ( zrho1 * hm_i(:,:) - zrho2 * hm_s(:,:) ) 178 178 WHERE( zfb < 0._wp ) ; zfb = 0._wp ; END WHERE 179 179 CALL iom_put( "icefb" , zfb(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice freeboard … … 356 356 CALL histend( kid, snc4set ) ! end of the file definition 357 357 358 CALL histwrite( kid, "sithic", kt, h tm_i, jpi*jpj, (/1/) )359 CALL histwrite( kid, "siconc", kt, at_i , jpi*jpj, (/1/) )360 CALL histwrite( kid, "sitemp", kt, tm_i - rt0 , jpi*jpj, (/1/) )358 CALL histwrite( kid, "sithic", kt, hm_i , jpi*jpj, (/1/) ) 359 CALL histwrite( kid, "siconc", kt, at_i , jpi*jpj, (/1/) ) 360 CALL histwrite( kid, "sitemp", kt, tm_i - rt0 , jpi*jpj, (/1/) ) 361 361 CALL histwrite( kid, "sivelu", kt, u_ice , jpi*jpj, (/1/) ) 362 362 CALL histwrite( kid, "sivelv", kt, v_ice , jpi*jpj, (/1/) ) … … 366 366 CALL histwrite( kid, "sinflx", kt, qns , jpi*jpj, (/1/) ) 367 367 CALL histwrite( kid, "isnowpre", kt, sprecip , jpi*jpj, (/1/) ) 368 CALL histwrite( kid, "sisali", kt, sm t_i, jpi*jpj, (/1/) )368 CALL histwrite( kid, "sisali", kt, sm_i , jpi*jpj, (/1/) ) 369 369 CALL histwrite( kid, "sivolu", kt, vt_i , jpi*jpj, (/1/) ) 370 370 CALL histwrite( kid, "sidive", kt, divu_i*1.0e8 , jpi*jpj, (/1/) ) … … 389 389 CALL histwrite( kid, "sithicat", kt, h_i , jpi*jpj*jpl, (/1/) ) 390 390 CALL histwrite( kid, "siconcat", kt, a_i , jpi*jpj*jpl, (/1/) ) 391 CALL histwrite( kid, "sisalcat", kt, s m_i, jpi*jpj*jpl, (/1/) )391 CALL histwrite( kid, "sisalcat", kt, s_i , jpi*jpj*jpl, (/1/) ) 392 392 CALL histwrite( kid, "sitemcat", kt, tm_i - rt0 , jpi*jpj*jpl, (/1/) ) 393 393 CALL histwrite( kid, "snthicat", kt, h_s , jpi*jpj*jpl, (/1/) ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90
r8531 r8564 180 180 CALL lim_mp_topo & ! topographic melt ponds 181 181 & (at_i, a_i, & 182 & vt_i, v_i, v_s, t_i, s _i, a_ip_frac, &182 & vt_i, v_i, v_s, t_i, sz_i, a_ip_frac, & 183 183 & h_ip, t_su) 184 184 … … 1229 1229 !OLI_CODE 1230 1230 !OLI_CODE CALL compute_mp_topo(at_i, a_i, & 1231 !OLI_CODE vt_i, v_i, v_s, rhosn_glo, t_i, s _i, a_ip_frac, &1231 !OLI_CODE vt_i, v_i, v_s, rhosn_glo, t_i, sz_i, a_ip_frac, & 1232 1232 !OLI_CODE h_ip, h_il, t_su, tatm_ice, diag_sur_me*rdt_ice, & 1233 1233 !OLI_CODE fsurf, fwoc) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/NST_SRC/agrif_lim3_interp.F90
r8226 r8564 163 163 jm = 1 164 164 DO jl = 1, jpl 165 ptab(i1:i2,j1:j2,jm ) = a_i_b 166 ptab(i1:i2,j1:j2,jm+1) = v_i_b 167 ptab(i1:i2,j1:j2,jm+2) = v_s_b 168 ptab(i1:i2,j1:j2,jm+3) = s mv_i_b(i1:i2,j1:j2,jl)169 ptab(i1:i2,j1:j2,jm+4) = oa_i_b 165 ptab(i1:i2,j1:j2,jm ) = a_i_b (i1:i2,j1:j2,jl) 166 ptab(i1:i2,j1:j2,jm+1) = v_i_b (i1:i2,j1:j2,jl) 167 ptab(i1:i2,j1:j2,jm+2) = v_s_b (i1:i2,j1:j2,jl) 168 ptab(i1:i2,j1:j2,jm+3) = sv_i_b(i1:i2,j1:j2,jl) 169 ptab(i1:i2,j1:j2,jm+4) = oa_i_b(i1:i2,j1:j2,jl) 170 170 jm = jm + 5 171 171 DO jk = 1, nlay_s … … 191 191 DO jj = j1, j2 192 192 DO ji = i1, i2 193 a_i 194 v_i 195 v_s 196 s mv_i(ji,jj,jl) = ptab(ji,jj,jm+3) * tmask(ji,jj,1)197 oa_i 193 a_i (ji,jj,jl) = ptab(ji,jj,jm ) * tmask(ji,jj,1) 194 v_i (ji,jj,jl) = ptab(ji,jj,jm+1) * tmask(ji,jj,1) 195 v_s (ji,jj,jl) = ptab(ji,jj,jm+2) * tmask(ji,jj,1) 196 sv_i(ji,jj,jl) = ptab(ji,jj,jm+3) * tmask(ji,jj,1) 197 oa_i(ji,jj,jl) = ptab(ji,jj,jm+4) * tmask(ji,jj,1) 198 198 ENDDO 199 199 ENDDO … … 224 224 ztab(:,:,jm+1) = v_i (:,:,jl) 225 225 ztab(:,:,jm+2) = v_s (:,:,jl) 226 ztab(:,:,jm+3) = s mv_i(:,:,jl)227 ztab(:,:,jm+4) = oa_i 226 ztab(:,:,jm+3) = sv_i(:,:,jl) 227 ztab(:,:,jm+4) = oa_i(:,:,jl) 228 228 jm = jm + 5 229 229 DO jk = 1, nlay_s … … 324 324 DO jj = j1, j2 325 325 DO ji = i1, i2 326 a_i 327 v_i 328 v_s 329 s mv_i(ji,jj,jl) = ztab(ji,jj,jm+3) * tmask(ji,jj,1)326 a_i (ji,jj,jl) = ztab(ji,jj,jm ) * tmask(ji,jj,1) 327 v_i (ji,jj,jl) = ztab(ji,jj,jm+1) * tmask(ji,jj,1) 328 v_s (ji,jj,jl) = ztab(ji,jj,jm+2) * tmask(ji,jj,1) 329 sv_i(ji,jj,jl) = ztab(ji,jj,jm+3) * tmask(ji,jj,1) 330 330 oa_i (ji,jj,jl) = ztab(ji,jj,jm+4) * tmask(ji,jj,1) 331 331 ENDDO -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/NST_SRC/agrif_lim3_update.F90
r8226 r8564 97 97 jm = 1 98 98 DO jl = 1, jpl 99 ptab(i1:i2,j1:j2,jm ) = a_i 100 ptab(i1:i2,j1:j2,jm+1) = v_i 101 ptab(i1:i2,j1:j2,jm+2) = v_s 102 ptab(i1:i2,j1:j2,jm+3) = s mv_i(i1:i2,j1:j2,jl)99 ptab(i1:i2,j1:j2,jm ) = a_i (i1:i2,j1:j2,jl) 100 ptab(i1:i2,j1:j2,jm+1) = v_i (i1:i2,j1:j2,jl) 101 ptab(i1:i2,j1:j2,jm+2) = v_s (i1:i2,j1:j2,jl) 102 ptab(i1:i2,j1:j2,jm+3) = sv_i(i1:i2,j1:j2,jl) 103 103 ptab(i1:i2,j1:j2,jm+4) = oa_i (i1:i2,j1:j2,jl) 104 104 jm = jm + 5 … … 123 123 DO ji = i1, i2 124 124 IF( ptab(ji,jj,jm) /= Agrif_SpecialValueFineGrid ) THEN 125 a_i 126 v_i 127 v_s 128 s mv_i(ji,jj,jl) = ptab(ji,jj,jm+3) * tmask(ji,jj,1)129 oa_i 125 a_i (ji,jj,jl) = ptab(ji,jj,jm ) * tmask(ji,jj,1) 126 v_i (ji,jj,jl) = ptab(ji,jj,jm+1) * tmask(ji,jj,1) 127 v_s (ji,jj,jl) = ptab(ji,jj,jm+2) * tmask(ji,jj,1) 128 sv_i(ji,jj,jl) = ptab(ji,jj,jm+3) * tmask(ji,jj,1) 129 oa_i(ji,jj,jl) = ptab(ji,jj,jm+4) * tmask(ji,jj,1) 130 130 ENDIF 131 131 ENDDO -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r8313 r8564 36 36 USE lib_mpp ! MPP library 37 37 #if defined key_lim3 38 USE ice, ONLY: h tm_i, at_i, at_i_b38 USE ice, ONLY: hm_i, at_i, at_i_b 39 39 #endif 40 40 USE sbc_oce ! Surface boundary condition variables. … … 835 835 #if defined key_lim3 836 836 zofrld (:,:) = 1._wp - at_i(:,:) 837 zohicif(:,:) = h tm_i(:,:)837 zohicif(:,:) = hm_i(:,:) 838 838 ! 839 839 at_i (:,:) = 1. - MIN( MAX( 1.-at_i (:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) … … 844 844 ! 845 845 ! Nudge sea ice depth to bring it up to a required minimum depth 846 WHERE( zseaicendg(:,:) > 0.0_wp .AND. h tm_i(:,:) < zhicifmin )847 zhicifinc(:,:) = (zhicifmin - h tm_i(:,:)) * zincwgt846 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hm_i(:,:) < zhicifmin ) 847 zhicifinc(:,:) = (zhicifmin - hm_i(:,:)) * zincwgt 848 848 ELSEWHERE 849 849 zhicifinc(:,:) = 0.0_wp … … 851 851 ! 852 852 ! nudge ice depth 853 h tm_i (:,:) = htm_i (:,:) + zhicifinc(:,:)853 hm_i (:,:) = hm_i (:,:) + zhicifinc(:,:) 854 854 ! 855 855 ! seaice salinity balancing (to add) … … 884 884 #if defined key_lim3 885 885 zofrld (:,:) = 1._wp - at_i(:,:) 886 zohicif(:,:) = h tm_i(:,:)886 zohicif(:,:) = hm_i(:,:) 887 887 ! 888 888 ! Initialize the now fields the background + increment … … 894 894 ! 895 895 ! Nudge sea ice depth to bring it up to a required minimum depth 896 WHERE( zseaicendg(:,:) > 0.0_wp .AND. h tm_i(:,:) < zhicifmin )897 zhicifinc(:,:) = (zhicifmin - h tm_i(:,:)) * zincwgt896 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hm_i(:,:) < zhicifmin ) 897 zhicifinc(:,:) = (zhicifmin - hm_i(:,:)) * zincwgt 898 898 ELSEWHERE 899 899 zhicifinc(:,:) = 0.0_wp … … 901 901 ! 902 902 ! nudge ice depth 903 h tm_i (:,:) = htm_i (:,:) + zhicifinc(:,:)903 hm_i (:,:) = hm_i (:,:) + zhicifinc(:,:) 904 904 ! 905 905 ! seaice salinity balancing (to add) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice.F90
r8563 r8564 174 174 ! 175 175 ! Ice salinity, age, temperature 176 s m_i(ji,jj,jl) = rswitch * rn_ice_sal(ib_bdy) + ( 1.0 - rswitch ) * rn_simin176 s_i (ji,jj,jl) = rswitch * rn_ice_sal(ib_bdy) + ( 1.0 - rswitch ) * rn_simin 177 177 oa_i(ji,jj,jl) = rswitch * rn_ice_age(ib_bdy) * a_i(ji,jj,jl) 178 178 t_su(ji,jj,jl) = rswitch * rn_ice_tem(ib_bdy) + ( 1.0 - rswitch ) * rn_ice_tem(ib_bdy) … … 181 181 END DO 182 182 DO jk = 1, nlay_i 183 t_i (ji,jj,jk,jl) = rswitch * rn_ice_tem(ib_bdy) + ( 1.0 - rswitch ) * rt0184 s _i(ji,jj,jk,jl) = rswitch * rn_ice_sal(ib_bdy) + ( 1.0 - rswitch ) * rn_simin183 t_i (ji,jj,jk,jl) = rswitch * rn_ice_tem(ib_bdy) + ( 1.0 - rswitch ) * rt0 184 sz_i(ji,jj,jk,jl) = rswitch * rn_ice_sal(ib_bdy) + ( 1.0 - rswitch ) * rn_simin 185 185 END DO 186 186 ! … … 188 188 ! 189 189 ! Ice salinity, age, temperature 190 s m_i(ji,jj,jl) = rswitch * sm_i(ii,ij,jl) + ( 1.0 - rswitch ) * rn_simin190 s_i (ji,jj,jl) = rswitch * s_i (ii,ij,jl) + ( 1.0 - rswitch ) * rn_simin 191 191 oa_i(ji,jj,jl) = rswitch * oa_i(ii,ij,jl) 192 192 t_su(ji,jj,jl) = rswitch * t_su(ii,ij,jl) + ( 1.0 - rswitch ) * rt0 … … 195 195 END DO 196 196 DO jk = 1, nlay_i 197 t_i (ji,jj,jk,jl) = rswitch * t_i(ii,ij,jk,jl) + ( 1.0 - rswitch ) * rt0198 s _i(ji,jj,jk,jl) = rswitch * s_i(ii,ij,jk,jl) + ( 1.0 - rswitch ) * rn_simin197 t_i (ji,jj,jk,jl) = rswitch * t_i (ii,ij,jk,jl) + ( 1.0 - rswitch ) * rt0 198 sz_i(ji,jj,jk,jl) = rswitch * sz_i(ii,ij,jk,jl) + ( 1.0 - rswitch ) * rn_simin 199 199 END DO 200 200 ! … … 202 202 ! 203 203 IF( nn_icesal == 1 ) THEN ! constant salinity : overwrite rn_icesal 204 s m_i(ji,jj ,jl) = rn_icesal205 s _i(ji,jj,:,jl) = rn_icesal204 s_i (ji,jj ,jl) = rn_icesal 205 sz_i(ji,jj,:,jl) = rn_icesal 206 206 ENDIF 207 207 ! 208 208 ! contents 209 s mv_i(ji,jj,jl) = MIN( sm_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl)209 sv_i(ji,jj,jl) = MIN( s_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl) 210 210 DO jk = 1, nlay_s 211 211 ! Snow energy of melting … … 215 215 END DO 216 216 DO jk = 1, nlay_i 217 ztmelts = - tmut * s _i(ji,jj,jk,jl) + rt0 !Melting temperature in K217 ztmelts = - tmut * sz_i(ji,jj,jk,jl) + rt0 !Melting temperature in K 218 218 ! heat content per unit volume 219 219 e_i(ji,jj,jk,jl) = rswitch * rhoic * & … … 227 227 END DO 228 228 ! 229 CALL lbc_bdy_lnk( 230 CALL lbc_bdy_lnk( 231 CALL lbc_bdy_lnk( 232 CALL lbc_bdy_lnk( 233 CALL lbc_bdy_lnk( 234 ! 235 CALL lbc_bdy_lnk( s mv_i(:,:,jl), 'T', 1., ib_bdy )236 CALL lbc_bdy_lnk( s m_i(:,:,jl), 'T', 1., ib_bdy )237 CALL lbc_bdy_lnk( 238 CALL lbc_bdy_lnk( 229 CALL lbc_bdy_lnk( a_i(:,:,jl), 'T', 1., ib_bdy ) 230 CALL lbc_bdy_lnk( h_i(:,:,jl), 'T', 1., ib_bdy ) 231 CALL lbc_bdy_lnk( h_s(:,:,jl), 'T', 1., ib_bdy ) 232 CALL lbc_bdy_lnk( v_i(:,:,jl), 'T', 1., ib_bdy ) 233 CALL lbc_bdy_lnk( v_s(:,:,jl), 'T', 1., ib_bdy ) 234 ! 235 CALL lbc_bdy_lnk( sv_i(:,:,jl), 'T', 1., ib_bdy ) 236 CALL lbc_bdy_lnk( s_i(:,:,jl), 'T', 1., ib_bdy ) 237 CALL lbc_bdy_lnk( oa_i(:,:,jl), 'T', 1., ib_bdy ) 238 CALL lbc_bdy_lnk( t_su(:,:,jl), 'T', 1., ib_bdy ) 239 239 DO jk = 1, nlay_s 240 240 CALL lbc_bdy_lnk(t_s(:,:,jk,jl), 'T', 1., ib_bdy ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
r8306 r8564 22 22 USE sbc_oce ! ocean surface boundary conditions 23 23 #if defined key_lim3 24 USE ice, ONLY: u_ice, v_ice, h tm_i! LIM-3 variables24 USE ice, ONLY: u_ice, v_ice, hm_i ! LIM-3 variables 25 25 #endif 26 26 … … 81 81 CALL lbc_lnk_icb( tt_e, 'T', +1._wp, 1, 1 ) 82 82 #if defined key_lim3 83 hicth(:,:) = 0._wp ; hicth(1:jpi,1:jpj) = h tm_i(:,:)83 hicth(:,:) = 0._wp ; hicth(1:jpi,1:jpj) = hm_i (:,:) 84 84 ui_e(:,:) = 0._wp ; ui_e(1:jpi, 1:jpj) = u_ice(:,:) 85 85 vi_e(:,:) = 0._wp ; vi_e(1:jpi, 1:jpj) = v_ice(:,:)
Note: See TracChangeset
for help on using the changeset viewer.