- Timestamp:
- 2017-09-13T18:46:56+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceistate.F90
r8515 r8518 17 17 !! ice_istate_init : initialization of ice state and namelist read 18 18 !!---------------------------------------------------------------------- 19 USE par_oce ! ocean parameters 19 20 USE phycst ! physical constant 20 21 USE oce ! dynamics and tracers variables 21 22 USE dom_oce ! ocean domain 22 USE sbc_oce , ONLY : sst_m, sss_m 23 USE sbc_ice , ONLY : tn_ice 23 USE sbc_oce , ONLY : sst_m, sss_m, ln_ice_embd 24 USE sbc_ice , ONLY : tn_ice, snwice_mass, snwice_mass_b 24 25 USE eosbn2 ! equation of state 26 USE domvvl ! Variable volume 25 27 USE ice ! sea-ice variables 26 USE par_oce ! ocean parameters27 28 USE icevar ! ice_var_salprof 28 29 ! … … 91 92 !! where there is no ice (clem: I do not know why, is it mandatory?) 92 93 !!-------------------------------------------------------------------- 93 INTEGER :: ji, jj, jk, jl ! dummy loop indices 94 REAL(wp) :: ztmelts, zdh 95 INTEGER :: i_hemis, i_fill, jl0 96 REAL(wp) :: zarg, zV, zconv, zdv 97 REAL(wp), DIMENSION(jpi,jpj) :: zswitch ! ice indicator 98 REAL(wp), DIMENSION(jpi,jpj) :: zht_i_ini, zat_i_ini, zvt_i_ini !data from namelist or nc file 99 REAL(wp), DIMENSION(jpi,jpj) :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file 100 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zh_i_ini, za_i_ini !data by cattegories to fill 101 INTEGER , DIMENSION(4) :: itest 94 INTEGER :: ji, jj, jk, jl ! dummy loop indices 95 REAL(wp) :: ztmelts, zdh 96 INTEGER :: i_hemis, i_fill, jl0 97 REAL(wp) :: zarg, zV, zconv, zdv 98 INTEGER , DIMENSION(4) :: itest 99 REAL(wp), DIMENSION(jpi,jpj) :: z2d 100 REAL(wp), DIMENSION(jpi,jpj) :: zswitch ! ice indicator 101 REAL(wp), DIMENSION(jpi,jpj) :: zht_i_ini, zat_i_ini, zvt_i_ini !data from namelist or nc file 102 REAL(wp), DIMENSION(jpi,jpj) :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file 103 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zh_i_ini, za_i_ini !data by cattegories to fill 102 104 !-------------------------------------------------------------------- 103 105 … … 119 121 CALL eos_fzp( sss_m(:,:), t_bo(:,:) ) 120 122 t_bo(:,:) = ( t_bo(:,:) + rt0 ) * tmask(:,:,1) 121 122 123 123 124 !-------------------------------------------------------------------- … … 377 378 ! Melt pond volume and fraction 378 379 IF ( ln_pnd ) THEN 379 380 380 DO jl = 1, jpl 381 382 381 a_ip_frac(:,:,jl) = 0.2 * zswitch(:,:) 383 382 h_ip (:,:,jl) = 0.05 * zswitch(:,:) 384 383 a_ip(:,:,jl) = a_ip_frac(:,:,jl) * a_i (:,:,jl) 385 384 v_ip(:,:,jl) = h_ip (:,:,jl) * a_ip(:,:,jl) 386 387 END DO 388 385 END DO 389 386 ELSE 390 391 387 a_ip(:,:,:) = 0._wp 392 388 v_ip(:,:,:) = 0._wp 393 389 a_ip_frac(:,:,:) = 0._wp 394 390 h_ip (:,:,:) = 0._wp 395 396 391 ENDIF 397 392 ! END MV MP 2016 … … 437 432 u_ice (:,:) = 0._wp 438 433 v_ice (:,:) = 0._wp 439 stress1_i(:,:) = 0._wp 440 stress2_i(:,:) = 0._wp 441 stress12_i(:,:) = 0._wp 442 443 !-------------------------------------------------------------------- 444 ! 5) Moments for advection 445 !-------------------------------------------------------------------- 446 447 sxopw (:,:) = 0._wp 448 syopw (:,:) = 0._wp 449 sxxopw(:,:) = 0._wp 450 syyopw(:,:) = 0._wp 451 sxyopw(:,:) = 0._wp 452 453 sxice (:,:,:) = 0._wp ; sxsn (:,:,:) = 0._wp ; sxa (:,:,:) = 0._wp 454 syice (:,:,:) = 0._wp ; sysn (:,:,:) = 0._wp ; sya (:,:,:) = 0._wp 455 sxxice(:,:,:) = 0._wp ; sxxsn(:,:,:) = 0._wp ; sxxa (:,:,:) = 0._wp 456 syyice(:,:,:) = 0._wp ; syysn(:,:,:) = 0._wp ; syya (:,:,:) = 0._wp 457 sxyice(:,:,:) = 0._wp ; sxysn(:,:,:) = 0._wp ; sxya (:,:,:) = 0._wp 458 459 sxc0 (:,:,:) = 0._wp ; sxe (:,:,:,:)= 0._wp 460 syc0 (:,:,:) = 0._wp ; sye (:,:,:,:)= 0._wp 461 sxxc0 (:,:,:) = 0._wp ; sxxe (:,:,:,:)= 0._wp 462 syyc0 (:,:,:) = 0._wp ; syye (:,:,:,:)= 0._wp 463 sxyc0 (:,:,:) = 0._wp ; sxye (:,:,:,:)= 0._wp 464 465 sxsal (:,:,:) = 0._wp 466 sysal (:,:,:) = 0._wp 467 sxxsal (:,:,:) = 0._wp 468 syysal (:,:,:) = 0._wp 469 sxysal (:,:,:) = 0._wp 470 471 sxage (:,:,:) = 0._wp 472 syage (:,:,:) = 0._wp 473 sxxage (:,:,:) = 0._wp 474 syyage (:,:,:) = 0._wp 475 sxyage (:,:,:) = 0._wp 476 434 ! 435 !-------------------------------------------------------------------- 436 ! Snow-ice mass (case ice is fully embedded) | 437 !-------------------------------------------------------------------- 438 snwice_mass (:,:) = tmask(:,:,1) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) ) ! snow+ice mass 439 snwice_mass_b(:,:) = snwice_mass(:,:) 440 ! 441 IF( ln_ice_embd ) THEN ! embedded sea-ice: deplete the initial ssh below sea-ice area 442 443 sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 444 sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 445 446 IF( .NOT.ln_linssh ) THEN 447 448 WHERE( ht_0(:,:) > 0 ) ; z2d(:,:) = 1._wp + sshn(:,:)*tmask(:,:,1) / ht_0(:,:) 449 ELSEWHERE ; z2d(:,:) = 1._wp ; END WHERE 450 451 DO jk = 1,jpkm1 ! adjust initial vertical scale factors 452 e3t_n(:,:,jk) = e3t_0(:,:,jk) * z2d(:,:) 453 e3t_b(:,:,jk) = e3t_n(:,:,jk) 454 e3t_a(:,:,jk) = e3t_n(:,:,jk) 455 END DO 456 457 ! Reconstruction of all vertical scale factors at now and before time-steps 458 ! ========================================================================= 459 ! Horizontal scale factor interpolations 460 ! -------------------------------------- 461 CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 462 CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 463 CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 464 CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 465 CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 466 ! Vertical scale factor interpolations 467 ! ------------------------------------ 468 CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W' ) 469 CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 470 CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 471 CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 472 CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 473 ! t- and w- points depth 474 ! ---------------------- 475 !!gm not sure of that.... 476 gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 477 gdepw_n(:,:,1) = 0.0_wp 478 gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 479 DO jk = 2, jpk 480 gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk ) 481 gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 482 gde3w_n(:,:,jk) = gdept_n(:,:,jk ) - sshn (:,:) 483 END DO 484 ENDIF 485 ENDIF 486 477 487 !------------------------------------ 478 488 ! 6) store fields at before time-step … … 488 498 u_ice_b(:,:) = u_ice(:,:) 489 499 v_ice_b(:,:) = v_ice(:,:) 490 491 ! MV MP 2016492 IF ( nn_pnd_scheme > 0 ) THEN493 sxap (:,:,:) = 0._wp ; sxvp (:,:,:) = 0._wp494 syap (:,:,:) = 0._wp ; syvp (:,:,:) = 0._wp495 sxxap (:,:,:) = 0._wp ; sxxvp (:,:,:) = 0._wp496 syyap (:,:,:) = 0._wp ; syyvp (:,:,:) = 0._wp497 sxyap (:,:,:) = 0._wp ; sxyvp (:,:,:) = 0._wp498 ENDIF499 ! END MV MP 2016500 500 501 501 !!!clem
Note: See TracChangeset
for help on using the changeset viewer.