New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 7506 for branches/2016 – NEMO

Changeset 7506 for branches/2016


Ignore:
Timestamp:
2016-12-15T20:41:18+01:00 (7 years ago)
Author:
vancop
Message:

Commit a first set of modifications

Location:
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r6963 r7506  
    320320   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   o_i     !: Sea-Ice Age (days) 
    321321   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   oa_i    !: Sea-Ice Age times ice area (days) 
     322 
    322323   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   bv_i    !: brine volume 
    323324 
     
    406407   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_vice     !: ice volume variation   [m/s]  
    407408   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_vsnw     !: snw volume variation   [m/s]  
     409 
     410   ! 
     411   !!-------------------------------------------------------------------------- 
     412   !! * SIMIP extra diagnostics 
     413   !!-------------------------------------------------------------------------- 
     414   ! Extra sea ice diagnostics to address the data request 
     415   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   t_si          !: Temperature at Snow-ice interface (K)  
     416   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   tm_si         !: mean temperature at the snow-ice interface (K)  
     417   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dmi_dyn  !: Change in ice mass due to ice dynamics (kg/m2/s) 
     418   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dms_mel  !: Change in snow mass due to melting (kg/m2/s) 
     419   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dms_dyn  !: Change in snow mass due to ice dynamics (kg/m2/s) 
     420   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dmtx_dyn !: X-component of total snow + ice mass transport (kg/m2/s) 
     421   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dmty_dyn !: X-component of total snow + ice mass transport (kg/m2/s) 
     422   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_fc_bo    !: Bottom conduction flux (W/m2) 
     423   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_fc_su    !: Surface conduction flux (W/m2) 
     424   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_utau_oi  !: X-direction ocean-ice stress 
     425   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_vtau_oi  !: Y-direction ocean-ice stress   
     426   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dssh_dx  !: X-direction sea-surface tilt term (N/m2) 
     427   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_dssh_dy  !: X-direction sea-surface tilt term (N/m2) 
     428   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_corstrx  !: X-direction coriolis stress (N/m2) 
     429   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_corstry  !: Y-direction coriolis stress (N/m2) 
     430   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_intstrx  !: X-direction internal stress (N/m2) 
     431   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   diag_intstry  !: Y-direction internal stress (N/m2) 
     432 
    408433   ! 
    409434   !!---------------------------------------------------------------------- 
     
    420445      INTEGER :: ice_alloc 
    421446      ! 
    422       INTEGER :: ierr(17), ii 
     447      INTEGER :: ierr(18), ii 
    423448      !!----------------------------------------------------------------- 
    424449 
     
    463488         &      et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i (jpi,jpj) , bvm_i(jpi,jpj) ,     & 
    464489         &      smt_i(jpi,jpj) , tm_su(jpi,jpj) , htm_i(jpi,jpj) , htm_s(jpi,jpj) ,     & 
    465          &      om_i (jpi,jpj)                              , STAT=ierr(ii) ) 
     490         &      om_i (jpi,jpj) , STAT=ierr(ii) ) 
    466491      ii = ii + 1 
    467492      ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) 
     
    502527         &      diag_smvi  (jpi,jpj), diag_vice   (jpi,jpj), diag_vsnw  (jpi,jpj), STAT=ierr(ii) ) 
    503528 
     529      ! * SIMIP data request diagnostics 
     530      ii = ii + 1 
     531      ALLOCATE( t_si (jpi,jpj,jpl)    , tm_si(jpi,jpj)        ,    &  
     532                diag_dmi_dyn(jpi,jpj)                         ,    & 
     533                diag_dms_mel(jpi,jpj) , diag_dms_dyn(jpi,jpj) ,    & 
     534                diag_dmtx_dyn(jpi,jpj), diag_dmty_dyn(jpi,jpj),    & 
     535                diag_fc_bo(jpi,jpj)   , diag_fc_su(jpi,jpj)   ,    & 
     536                diag_utau_oi(jpi,jpj) , diag_vtau_oi(jpi,jpj) ,    & 
     537                diag_dssh_dx(jpi,jpj) , diag_dssh_dy(jpi,jpj) ,    & 
     538                diag_corstrx(jpi,jpj) , diag_corstry(jpi,jpj) ,    & 
     539                diag_intstrx(jpi,jpj) , diag_intstry(jpi,jpj) ,    & 
     540                STAT = ierr(ii) ) 
     541 
    504542      ice_alloc = MAXVAL( ierr(:) ) 
    505543      IF( ice_alloc /= 0 )   CALL ctl_warn('ice_alloc_2: failed to allocate arrays.') 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r6963 r7506  
    669669               &                              + rhosn * vsrft(ij) * ( 1._wp - rn_fsnowrft ) ) * r1_rdtice  ! fresh water source for ocean 
    670670 
     671            ! SIMIP diagnostic 
     672            diag_dms_dyn(ji,jj) = diag_dms_dyn(ji,jj) - ( rhosn * vsrdg(ij) * ( 1._wp - rn_fsnowrdg )   &  
     673               &                                      - rhosn * vsrft(ij) * ( 1._wp - rn_fsnowrft ) ) * r1_rdtice 
     674            diag_dmi_dyn(ji,jj) = diag_dmi_dyn(ji,jj) + vsw (ij) * rhoic * r1_rdtice  
     675 
    671676            hfx_dyn(ji,jj) = hfx_dyn(ji,jj) + ( - esrdg(ij) * ( 1._wp - rn_fsnowrdg )         &  
    672677               &                                - esrft(ij) * ( 1._wp - rn_fsnowrft ) ) * r1_rdtice        ! heat sink for ocean (<0, W.m-2) 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90

    r6964 r7506  
    124124      REAL(wp) ::   zm1, zm2, zm3, zmassU, zmassV                            ! ice/snow mass 
    125125      REAL(wp) ::   zdelta, zp_delf, zds2, zdt, zdt2, zdiv, zdiv2            ! temporary scalars 
    126       REAL(wp) ::   zTauO, zTauE, zCor                                       ! temporary scalars 
     126      REAL(wp) ::   zTauO, zTauE                                             ! temporary scalars 
    127127 
    128128      REAL(wp) ::   zsig1, zsig2                                             ! internal ice stress 
     
    148148                                                                             !   ocean surface (ssh_m) if ice is not embedded 
    149149                                                                             !   ice top surface if ice is embedded    
     150      REAL(wp), POINTER, DIMENSION(:,:) ::   zCor                            ! Coriolis stress array (SIMIP) 
    150151      REAL(wp), POINTER, DIMENSION(:,:) ::   zswitchU, zswitchV              ! dummy arrays 
    151152      REAL(wp), POINTER, DIMENSION(:,:) ::   zmaskU, zmaskV                  ! mask for ice presence 
     
    162163      CALL wrk_alloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 
    163164      CALL wrk_alloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 
     165      CALL wrk_alloc( jpi,jpj, zCor) 
    164166 
    165167#if  defined key_lim2 && ! defined key_lim2_vp 
     
    325327         END DO 
    326328      END DO 
     329 
    327330      CALL lbc_lnk( zmf, 'T', 1. ) 
    328331      ! 
     
    445448 
    446449                  ! Coriolis at V-points (energy conserving formulation) 
    447                   zCor  = - 0.25_wp * r1_e2v(ji,jj) *  & 
     450                  zCor(ji,jj)  = - 0.25_wp * r1_e2v(ji,jj) *  & 
    448451                     &    ( zmf(ji,jj  ) * ( e2u(ji,jj  ) * u_ice(ji,jj  ) + e2u(ji-1,jj  ) * u_ice(ji-1,jj  ) )  & 
    449452                     &    + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 
    450453 
    451454                  ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 
    452                   zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 
     455                  zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor(ji,jj) + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 
    453456                   
    454457                  ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 
     
    460463            END DO 
    461464            CALL lbc_lnk( v_ice, 'V', -1. ) 
     465 
     466            ! SIMIP diag 
     467            IF ( jter .EQ. nn_nevp ) THEN 
     468               diag_corstry(:,:) = zCor(:,:)  
     469            ENDIF 
    462470             
    463471#if defined key_agrif && defined key_lim2 
     
    476484 
    477485                  ! Coriolis at U-points (energy conserving formulation) 
    478                   zCor  =   0.25_wp * r1_e1u(ji,jj) *  & 
     486                  zCor(ji,jj)  =   0.25_wp * r1_e1u(ji,jj) *  & 
    479487                     &    ( zmf(ji  ,jj) * ( e1v(ji  ,jj) * v_ice(ji  ,jj) + e1v(ji  ,jj-1) * v_ice(ji  ,jj-1) )  & 
    480488                     &    + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 
    481489                   
    482490                  ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 
    483                   zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 
     491                  zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor(ji,jj) + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 
    484492 
    485493                  ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 
     
    491499            END DO 
    492500            CALL lbc_lnk( u_ice, 'U', -1. ) 
     501            IF ( jter .EQ. nn_nevp ) THEN 
     502               diag_corstrx(:,:) = zCor(:,:)  
     503            ENDIF 
    493504             
    494505#if defined key_agrif && defined key_lim2 
     
    509520 
    510521                  ! Coriolis at U-points (energy conserving formulation) 
    511                   zCor  =   0.25_wp * r1_e1u(ji,jj) *  & 
     522                  zCor(ji,jj)  =   0.25_wp * r1_e1u(ji,jj) *  & 
    512523                     &    ( zmf(ji  ,jj) * ( e1v(ji  ,jj) * v_ice(ji  ,jj) + e1v(ji  ,jj-1) * v_ice(ji  ,jj-1) )  & 
    513524                     &    + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 
    514525                   
    515526                  ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 
    516                   zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 
     527                  zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor(ji,jj) + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 
    517528 
    518529                  ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 
     
    540551 
    541552                  ! Coriolis at V-points (energy conserving formulation) 
    542                   zCor  = - 0.25_wp * r1_e2v(ji,jj) *  & 
     553                  zCor(ji,jj)  = - 0.25_wp * r1_e2v(ji,jj) *  & 
    543554                     &    ( zmf(ji,jj  ) * ( e2u(ji,jj  ) * u_ice(ji,jj  ) + e2u(ji-1,jj  ) * u_ice(ji-1,jj  ) )  & 
    544555                     &    + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 
    545556 
    546557                  ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 
    547                   zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 
     558                  zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor(ji,jj) + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 
    548559                   
    549560                  ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 
     
    564575 
    565576         ENDIF 
    566           
     577 
    567578         IF(ln_ctl) THEN   ! Convergence test 
    568579            DO jj = k_j1+1, k_jpj-1 
     
    627638      stress2_i (:,:) = zs2 (:,:) 
    628639      stress12_i(:,:) = zs12(:,:) 
     640 
     641      ! SIMIP diagnostic internal stress 
     642      diag_dssh_dx(:,:) = zspgU(:,:) 
     643      diag_dssh_dy(:,:) = zspgV(:,:) 
     644      CALL lbc_lnk( diag_dssh_dx, 'U', -1. ) 
     645      CALL lbc_lnk( diag_dssh_dy, 'V', -1. ) 
     646 
     647      diag_intstrx(:,:) = zfU(:,:) 
     648      diag_intstry(:,:) = zfV(:,:) 
     649      CALL lbc_lnk( diag_intstrx, 'U', -1. ) 
     650      CALL lbc_lnk( diag_intstry, 'V', -1. ) 
    629651 
    630652      ! 
     
    670692      CALL wrk_dealloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 
    671693      CALL wrk_dealloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 
     694      CALL wrk_dealloc( jpi,jpj, zCor ) 
    672695 
    673696   END SUBROUTINE lim_rhg 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r6963 r7506  
    277277      !                                      !==  every ocean time-step  ==! 
    278278      ! 
     279      ! SIMIP diags 
     280      diag_utau_oi(:,:) = 0._wp 
     281      diag_vtau_oi(:,:) = 0._wp 
    279282      DO jj = 2, jpjm1                                !* update the stress WITHOUT a ice-ocean rotation angle 
    280283         DO ji = fs_2, fs_jpim1   ! Vect. Opt. 
     
    287290            utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 
    288291            vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 
     292 
     293            diag_utau_oi(ji,jj) = - zutau_ice 
     294            diag_vtau_oi(ji,jj) = - zvtau_ice 
    289295         END DO 
    290296      END DO 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r6399 r7506  
    502502          
    503503         CALL tab_2d_1d( nbpb, t_su_1d     (1:nbpb), t_su(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     504         CALL tab_2d_1d( nbpb, t_si_1d     (1:nbpb), t_si(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) ! MV SIMIP 2016 
    504505         CALL tab_2d_1d( nbpb, sm_i_1d     (1:nbpb), sm_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    505506         DO jk = 1, nlay_s 
     
    560561         CALL tab_2d_1d( nbpb, hfx_err_rem_1d (1:nbpb), hfx_err_rem , jpi, jpj, npb(1:nbpb) ) 
    561562 
     563         ! SIMIP diagnostics 
     564         CALL tab_2d_1d( nbpb, diag_dms_mel_1d (1:nbpb), diag_dms_mel, jpi, jpj, npb(1:nbpb) ) 
     565         CALL tab_2d_1d( nbpb, diag_fc_bo_1d   (1:nbpb), diag_fc_bo  , jpi, jpj, npb(1:nbpb) ) 
     566         CALL tab_2d_1d( nbpb, diag_fc_su_1d   (1:nbpb), diag_fc_su  , jpi, jpj, npb(1:nbpb) ) 
     567 
    562568      CASE( 2 ) 
    563569 
     
    567573         CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_1d     (1:nbpb)   , jpi, jpj ) 
    568574         CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_1d    (1:nbpb)   , jpi, jpj ) 
     575         CALL tab_1d_2d( nbpb, t_si(:,:,jl)  , npb, t_si_1d    (1:nbpb)   , jpi, jpj ) ! MV 2016 
    569576         CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_1d    (1:nbpb)   , jpi, jpj ) 
    570577         DO jk = 1, nlay_s 
     
    613620         CALL tab_1d_2d( nbpb, qns_ice(:,:,jl), npb, qns_ice_1d(1:nbpb) , jpi, jpj) 
    614621         CALL tab_1d_2d( nbpb, ftr_ice(:,:,jl), npb, ftr_ice_1d(1:nbpb) , jpi, jpj ) 
    615          !          
     622 
     623         ! SIMIP diagnostics          
     624         CALL tab_1d_2d( nbpb, diag_dms_mel   , npb, diag_dms_mel_1d(1:nbpb) , jpi, jpj ) 
     625         CALL tab_1d_2d( nbpb, diag_fc_bo     , npb, diag_fc_bo_1d(1:nbpb)   , jpi, jpj ) 
     626         CALL tab_1d_2d( nbpb, diag_fc_su     , npb, diag_fc_su_1d(1:nbpb)   , jpi, jpj ) 
    616627      END SELECT 
    617628 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r6469 r7506  
    175175            ! Contribution to mass flux 
    176176            wfx_snw_1d(ji) = wfx_snw_1d(ji) + rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
     177            ! SIMIP snow melt diagnostic 
     178            diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) - rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice  
    177179            ! updates 
    178180            ht_s_1d(ji)   = 0._wp 
     
    239241         ! snow melting only = water into the ocean (then without snow precip), >0 
    240242         wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice     
     243         ! SIMIP snow melt diagnostic 
     244         diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) + rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice  
    241245         ! updates available heat + precipitations after melting 
    242246         zq_su     (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,1) * zqprec(ji) )       
     
    261265            ! snow melting only = water into the ocean (then without snow precip) 
    262266            wfx_snw_1d(ji)   = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
     267            ! SIMIP snow melt diagnostic 
     268            diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) + rhosn * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice  
    263269            ! updates available heat + thickness 
    264270            zq_su (ji)  = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * q_s_1d(ji,jk) ) 
     
    613619         ! Contribution to mass flux 
    614620         wfx_snw_1d(ji)  =  wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 
     621         ! SIMIP snow melt diagnostic 
     622         diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) + rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice  
    615623         !     
    616624         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r5512 r7506  
    697697               &             ( isnow(ji) * t_s_1d(ji,1) + ( 1._wp - isnow(ji) ) * t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji))   
    698698         END DO 
     699 
    699700         ! 
    700701         !-------------------------------------------------------------------------- 
     
    733734 
    734735      END DO  ! End of the do while iterative procedure 
     736 
     737      ! MV SIMIP 2016 
     738      !--- Snow-ice interfacial temperature (diagnostic SIMIP) 
     739      DO ji = kideb, kiut 
     740         zfac        = 1. / MAX( epsi10 , rcdsn * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) ) 
     741         t_si_1d(ji) = ( rcdsn          * zh_i(ji) * t_s_1d(ji,1) + & 
     742        &                ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) * zfac 
     743      END DO 
     744 
     745      WHERE( zh_s .LT. epsi10) ; t_si_1d(:) = t_su_1d(:) ; END WHERE 
     746      ! END MV SIMIP 2016 
    735747 
    736748      IF( ln_icectl .AND. lwp ) THEN 
     
    751763         fc_bo_i(ji)     =  - zkappa_i(ji,nlay_i) * ( zg1*(t_bo_1d(ji) - t_i_1d(ji,nlay_i)) ) 
    752764      END DO 
     765 
     766      ! MV SIMIP 2016 
     767      !--- Conduction fluxes (positive downwards) 
     768      diag_fc_bo_1d(:)   = diag_fc_bo_1d(:) + fc_bo_i(:) * a_i_1d(:) /  at_i_1d(:) 
     769      diag_fc_su_1d(:)   = diag_fc_su_1d(:) + fc_su(:) * a_i_1d(:) /  at_i_1d(:) 
     770      ! END MV SIMIP 2016 
    753771 
    754772      ! --- computes sea ice energy of melting compulsory for limthd_dh --- ! 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r6476 r7506  
    189189                  &                                       sxxopw(:,:)  , syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
    190190               DO jl = 1, jpl 
     191                  ! SIMIP mass transport diags 
     192                  diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
    191193                  CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
    192                      &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
    193                   CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   & 
    194194                     &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
    195195                  CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
    196196                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
    197                   CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   & 
     197                  diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
     198 
     199                  diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
     200                  CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume 
     201                     &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     202                  CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume 
    198203                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     204                  diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
     205                  ! END SIMIP mass transport diags 
     206 
     207!                 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
     208!                    &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     209!                 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   & 
     210!                    &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     211!                 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
     212!                    &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     213!                 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   & 
     214!                    &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
    199215                  CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl),   &    !--- ice salinity --- 
    200216                     &                                       sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
     
    230246                  &                                       sxxopw(:,:)  , syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
    231247               DO jl = 1, jpl 
     248                  diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
    232249                  CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
    233250                     &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
    234                   CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   & 
    235                      &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     251                  CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
     252                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     253                  diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
     254 
     255                  diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
    236256                  CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
    237257                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
    238258                  CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   & 
    239259                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     260                  diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 
     261 
     262!                 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
     263!                    &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     264!                 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl),   & 
     265!                    &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     266!                 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
     267!                    &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     268!                 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl),   & 
     269!                    &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     270 
    240271                  CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl),   &    !--- ice salinity --- 
    241272                     &                                       sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
     
    266297         ENDIF 
    267298 
     299         ! SIMIP diags 
     300         diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) / ( rdt_ice * zusnit ) 
     301         diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) / ( rdt_ice * zusnit ) 
     302 
    268303         !------------------------------------------- 
    269304         ! Recover the properties from their contents 
     
    409444               diag_trp_vs (ji,jj) = SUM(   v_s(ji,jj,:) -  zvsold(ji,jj,:) ) * r1_rdtice 
    410445               diag_trp_smv(ji,jj) = SUM( smv_i(ji,jj,:) - zsmvold(ji,jj,:) ) * r1_rdtice 
     446 
     447               ! SIMIP diagnostics 
     448               diag_dms_dyn(ji,jj) = rhosn * diag_trp_vs(ji,jj) 
     449               diag_dmi_dyn(ji,jj) = rhoic * diag_trp_vi(ji,jj) 
    411450            END DO 
    412451         END DO 
     
    453492                        hfx_res(ji,jj) = hfx_res(ji,jj) + ( e_s(ji,jj,1,jl) - zes ) * r1_rdtice ! W.m-2 <0 
    454493                        hfx_res(ji,jj) = hfx_res(ji,jj) + ( SUM( e_i(ji,jj,1:nlay_i,jl) ) - zei ) * r1_rdtice ! W.m-2 <0 
     494 
     495                        ! SIMIP diagnostic 
     496                        diag_dms_dyn(ji,jj) = diag_dms_dyn(ji,jj) + ( v_s(ji,jj,jl) - zvs ) * rhosn * r1_rdtice 
    455497 
    456498                     ENDIF 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90

    r6311 r7506  
    180180      ! necessary calls (at least for coupling) 
    181181      CALL lim_var_glo2eqv 
     182 
     183      ! MV SIMIP 2016 small patch to clean ice age outputs 
     184      WHERE( ( a_i < 5.0e-3 ) .AND. ( ht_i < 1.5 * rn_himin ) ); oa_i(:,:,:) = a_i(:,:,:); END WHERE 
     185 
    182186      CALL lim_var_agg(2) 
    183187 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r6963 r7506  
    116116         tm_i(:,:)  = 0._wp 
    117117         tm_su(:,:) = 0._wp 
     118         tm_si(:,:) = 0._wp ! MV SIMIP 2016 
    118119         om_i (:,:) = 0._wp 
    119120         DO jl = 1, jpl 
     
    123124                  rswitch      = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi10 ) ) 
    124125                  tm_su(ji,jj) = tm_su(ji,jj) + rswitch * ( t_su(ji,jj,jl) - rt0 ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi10 ) 
    125                   om_i (ji,jj) = om_i (ji,jj) + rswitch *   oa_i(ji,jj,jl)                         / MAX( at_i(ji,jj) , epsi10 ) 
     126                  tm_si(ji,jj) = tm_si(ji,jj) + rswitch * ( t_si(ji,jj,jl) - rt0 ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi10 ) 
     127                  om_i (ji,jj) = om_i (ji,jj) + rswitch *   oa_i(ji,jj,jl)                         / MAX( at_i(ji,jj) , epsi06 ) 
    126128               END DO 
    127129            END DO 
     
    141143         tm_i  = tm_i  + rt0 
    142144         tm_su = tm_su + rt0 
     145         tm_si = tm_si + rt0 
    143146         ! 
    144147      ENDIF 
     
    596599               wfx_snw(ji,jj)  = wfx_snw(ji,jj) - ( v_s(ji,jj,jl)   - zvs  ) * rhosn * r1_rdtice 
    597600               hfx_res(ji,jj)  = hfx_res(ji,jj) + ( e_s(ji,jj,1,jl) - zes ) * r1_rdtice ! W.m-2 <0 
     601 
     602               ! SIMIP snow melt diagnostic 
     603               diag_dms_mel_1d(ji) = diag_dms_mel(ji,jj) + ( v_s(ji,jj,jl) - zvs  ) * rhosn * r1_rdtice 
     604 
    598605            END DO 
    599606         END DO 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r6965 r7506  
    5454      INTEGER  ::  ji, jj, jk, jl  ! dummy loop indices 
    5555      REAL(wp) ::  z1_365 
    56       REAL(wp) ::  z2da, z2db, ztmp 
     56      REAL(wp) ::  z2da, z2db, ztmp, zrho1, zrho2 
     57      REAL(wp) ::  zdiag_area_nh, zdiag_extt_nh, zdiag_area_sh, zdiag_extt_sh, zdiag_volu_nh, zdiag_volu_sh 
     58       
    5759      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zswi2 
    5860      REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, zswi    ! 2D workspace 
     61 
    5962      !!------------------------------------------------------------------- 
    6063 
     
    7578      DO jj = 1, jpj 
    7679         DO ji = 1, jpi 
    77             zswi(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) 
     80            zswi(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice 
    7881         END DO 
    7982      END DO 
     
    130133      CALL iom_put( "isnowhc"     , et_s  * zswi        )        ! snow total heat content 
    131134      CALL iom_put( "ibrinv"      , bvm_i * zswi * 100. )        ! brine volume 
    132       CALL iom_put( "utau_ice"    , utau_ice            )        ! wind stress over ice along i-axis at I-point 
    133       CALL iom_put( "vtau_ice"    , vtau_ice            )        ! wind stress over ice along j-axis at I-point 
     135      CALL iom_put( "utau_ice"    , utau_ice*zswi       )        ! wind stress over ice along i-axis at I-point 
     136      CALL iom_put( "vtau_ice"    , vtau_ice*zswi       )        ! wind stress over ice along j-axis at I-point 
    134137      CALL iom_put( "snowpre"     , sprecip * 86400.    )        ! snow precipitation  
    135138      CALL iom_put( "micesalt"    , smt_i   * zswi      )        ! mean ice salinity 
     
    180183      CALL iom_put( "vfxsub_err" , wfx_err_sub * ztmp   )        ! "excess" of sublimation sent to ocean       
    181184  
    182       CALL iom_put( "afxtot"     , afx_tot * rday       )        ! concentration tendency (total) 
    183       CALL iom_put( "afxdyn"     , afx_dyn * rday       )        ! concentration tendency (dynamics) 
    184       CALL iom_put( "afxthd"     , afx_thd * rday       )        ! concentration tendency (thermo) 
     185      CALL iom_put( "afxtot"     , afx_tot              )        ! concentration tendency (total) 
     186      CALL iom_put( "afxdyn"     , afx_dyn              )        ! concentration tendency (dynamics) 
     187      CALL iom_put( "afxthd"     , afx_thd              )        ! concentration tendency (thermo) 
    185188 
    186189      CALL iom_put ('hfxthd'     , hfx_thd(:,:)         )   !   
     
    203206      CALL iom_put ('hfxspr'     , hfx_spr(:,:)         )   ! Heat content of snow precip  
    204207 
    205        
     208      !-------------------------------- 
     209      ! Add-ons for SIMIP 
     210      !-------------------------------- 
     211      zrho1 = ( rau0 - rhoic ) / rau0; zrho2 = rhosn / rau0 
     212 
     213      CALL iom_put( "icethic"     , htm_i * zswi               )          ! ice thickness                  (SIMIP 2016) 
     214      CALL iom_put( "icepres"     , zswi                       )          ! ice presence (1 or 0)          (SIMIP 2016) 
     215      CALL iom_put( "snowthic"    , htm_s * zswi               )          ! snow thickness                 (SIMIP 2016) 
     216      CALL iom_put( "icemass"     , rhoic * vt_i(:,:) * zswi   )          ! ice mass per cell area         (SIMIP 2016) 
     217      CALL iom_put( "snomass"     , rhosn * vt_s(:,:) * zswi   )          ! snow mass per cell area        (SIMIP 2016) 
     218      CALL iom_put( "icesnt"      , ( tm_si - rt0 ) * zswi     )          ! snow-ice interface temperature (SIMIP 2016) 
     219      CALL iom_put( "icebot"      , ( t_bo  - rt0 ) * zswi     )          ! ice bottom temperature         (SIMIP 2016) 
     220      CALL iom_put( "icesmass"    , smt_i * vt_i * rhoic / 1000. * zswi ) ! mass of salt in sea ice per cell area (SIMIP 2016) 
     221      CALL iom_put( "icefb"       , ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi ) ! mass of salt in sea ice per cell area (SIMIP 2016) 
     222 
     223      CALL iom_put( "wfxsum"      ,   wfx_sum                  )          ! Freshwater flux from sea-ice surface 
     224      CALL iom_put( "dmithd"      , - wfx_bog - wfx_bom - wfx_sum   &     ! Sea-ice mass change from thermodynamics 
     225              &                     - wfx_sni - wfx_opw - wfx_res ) 
     226      CALL iom_put( "dmidyn"      ,   diag_dmi_dyn             )          ! Sea-ice mass change from dynamics 
     227      CALL iom_put( "dmiopw"      , - wfx_opw                  )          ! Sea-ice mass change through growth in open water 
     228      CALL iom_put( "dmibog"      , - wfx_bog                  )          ! Sea-ice mass change through basal growth 
     229      CALL iom_put( "dmisni"      , - wfx_sni                  )          ! Sea-ice mass change through snow-to-ice conversion 
     230      CALL iom_put( "dmisum"      , - wfx_sum                  )          ! Sea-ice mass change through surface melting 
     231      CALL iom_put( "dmibom"      , - wfx_bom                  )          ! Sea-ice mass change through bottom melting 
     232      CALL iom_put( "dmtsub"      , - wfx_sub                  )          ! Sea-ice mass change through evaporation and sublimation 
     233      CALL iom_put( "dmsspr"      , - wfx_spr                  )          ! snow mass change through snow fall 
     234      CALL iom_put( "dmsssi"      ,   wfx_sni*rhosn/rhoic      )          ! snow mass change through snow-to-ice conversion 
     235 
     236      CALL iom_put( "dmsmel"      ,   diag_dms_mel             )          ! snow mass change through melt 
     237      CALL iom_put( "dmsdyn"      ,   diag_dms_dyn             )          ! snow mass change through dynamics 
     238 
     239      CALL iom_put( "hfxconbo"    ,   diag_fc_bo               )          ! bottom conduction flux 
     240      CALL iom_put( "hfxconsu"    ,   diag_fc_su               )          ! surface conduction flux 
     241 
     242      CALL iom_put( "wfxtot"      ,   -wfx_ice                 )          ! total freshwater flux from sea ice 
     243 
     244      CALL iom_put( "dmtxdyn"     ,   diag_dmtx_dyn            )          ! X-component of sea-ice mass transport 
     245      CALL iom_put( "dmtydyn"     ,   diag_dmty_dyn            )          ! Y-component of sea-ice mass transport 
     246 
     247      CALL iom_put( "utau_oce"    ,   diag_utau_oi*zswi        )          ! X-component of ocean stress on sea ice 
     248      CALL iom_put( "vtau_oce"    ,   diag_vtau_oi*zswi        )          ! Y-component of ocean stress on sea ice 
     249 
     250      CALL iom_put( "dssh_dx"     ,   diag_dssh_dx*zswi        )          ! Sea-surface tilt term in force balance (x-component) 
     251      CALL iom_put( "dssh_dy"     ,   diag_dssh_dy*zswi        )          ! Sea-surface tilt term in force balance (y-component) 
     252 
     253      CALL iom_put( "corstrx"     ,   diag_corstrx*zswi        )          ! Coriolis force term in force balance (x-component) 
     254      CALL iom_put( "corstry"     ,   diag_corstry*zswi        )          ! Coriolis force term in force balance (y-component) 
     255 
     256      CALL iom_put( "intstrx"     ,   diag_intstrx*zswi        )          ! Internal force term in force balance (x-component) 
     257      CALL iom_put( "intstry"     ,   diag_intstry*zswi        )          ! Internal force term in force balance (y-component) 
     258 
     259      !-------------------------------- 
     260      ! Global ice diagnostics 
     261      !-------------------------------- 
     262 
     263      IF ( iom_use ( "NH_icearea" ) .OR. ( iom_use( "NH_icevolu" ) ) THEN             ! NH ice area  
     264 
     265           WHERE( fcor > 0 ); zswi(:,:) = 1.;  
     266           ELSEWHERE        ; zswi(:,:) = 0. 
     267           END WHERE  
     268 
     269           IF ( iom_use ( "NH_icearea" ) THEN 
     270              zdiag_area_nh = glob_sum( at_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 
     271              CALL iom_put( "NH_icearea", zdiag_area_nh ) 
     272           ENDIF 
     273           IF ( iom_use ( "NH_icevolu" ) THEN 
     274              zdiag_volu_nh = glob_sum( vt_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 
     275              CALL iom_put( "NH_icevolu", zdiag_volu_nh ) 
     276           ENDIF 
     277 
     278      ENDIF  
     279 
     280      IF ( iom_use ( "NH_iceextt" ) ) THEN                                            ! NH ice extt  
     281 
     282           WHERE( fcor > 0 .AND. at_i > 0.15 ); zswi(:,:) = 1.;  
     283           ELSEWHERE                          ; zswi(:,:) = 0. 
     284           END WHERE  
     285 
     286           zdiag_extt_nh = glob_sum( zswi(:,:) * e12t(:,:) ) / 1.0e12 
     287           CALL iom_put( "NH_iceextt", zdiag_extt_nh ) 
     288 
     289      ENDIF  
     290 
     291      IF ( iom_use ( "SH_icearea" ) .OR. ( iom_use( "SH_icevolu" ) ) THEN             ! SH ice area  / volume 
     292 
     293           WHERE( fcor < 0 ); zswi(:,:) = 1.;  
     294           ELSEWHERE        ; zswi(:,:) = 0. 
     295           END WHERE  
     296 
     297           IF ( iom_use ( "SH_icearea" ) THEN 
     298              zdiag_area_sh = glob_sum( at_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 
     299              CALL iom_put( "SH_icearea", zdiag_area_sh ) 
     300           ENDIF 
     301           IF ( iom_use ( "SH_icevolu" ) THEN 
     302              zdiag_volu_sh = glob_sum( vt_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 
     303              CALL iom_put( "SH_icevolu", zdiag_volu_sh ) 
     304           ENDIF 
     305 
     306      ENDIF  
     307 
     308      IF ( iom_use ( "SH_iceextt" ) ) THEN                                            ! SH ice extt  
     309 
     310           WHERE( fcor < 0 .AND. at_i > 0.15 ); zswi(:,:) = 1.;  
     311           ELSEWHERE                          ; zswi(:,:) = 0. 
     312           END WHERE  
     313 
     314           zdiag_extt_sh = glob_sum( zswi(:,:) * e12t(:,:) )/ 1.0e12 
     315 
     316           CALL iom_put( "SH_iceextt", zdiag_extt_sh ) 
     317 
     318      ENDIF  
     319 
    206320      !-------------------------------- 
    207321      ! Output values for each category 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r6399 r7506  
    104104 
    105105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_su_1d       !: <==> the 2D  t_su 
     106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_si_1d       !: <==> the 2D  t_si MV SIMIP 2016 
    106107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_i_1d        !: <==> the 2D  a_i 
    107108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_i_1d       !: <==> the 2D  ht_s 
     
    128129   INTEGER , PUBLIC ::   jiindex_1d   ! 1D index of debugging point 
    129130 
     131   ! Extra SIMIP data request diagnostics 
     132   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   diag_dms_mel_1d    !: <==> the 2D  diag_dms_mel 
     133   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   diag_fc_bo_1d      !: <==> the 2D  diag_fc_bo 
     134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   diag_fc_su_1d      !: <==> the 2D  diag_fc_su 
     135 
    130136   !!---------------------------------------------------------------------- 
    131137   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     
    140146      !!---------------------------------------------------------------------! 
    141147      INTEGER ::   thd_ice_alloc   ! return value 
    142       INTEGER ::   ierr(3) 
     148      INTEGER ::   ierr(4) 
    143149      !!---------------------------------------------------------------------! 
    144150 
     
    165171         &      dsm_i_si_1d(jpij) , hicol_1d    (jpij)                     , STAT=ierr(2) ) 
    166172      ! 
    167       ALLOCATE( t_su_1d   (jpij) , a_i_1d   (jpij) , ht_i_1d  (jpij) ,    &    
     173      ALLOCATE( t_su_1d   (jpij) , t_si_1d  (jpij) , a_i_1d   (jpij) , ht_i_1d  (jpij) ,    &    
    168174         &      ht_s_1d   (jpij) , fc_su    (jpij) , fc_bo_i  (jpij) ,    &     
    169175         &      dh_s_tot  (jpij) , dh_i_surf(jpij) , dh_i_sub (jpij) ,    &     
     
    172178         &      q_i_1d(jpij,nlay_i+1) , q_s_1d(jpij,nlay_s) ,                        & 
    173179         &      qh_i_old(jpij,0:nlay_i+1), h_i_old(jpij,0:nlay_i+1) , STAT=ierr(3)) 
    174       ! 
     180      ! Extra SIMIP diagnostics 
     181      ALLOCATE( diag_dms_mel_1d(jpij)                               ,                &  
     182         &      diag_fc_bo_1d(jpij)      , diag_fc_su_1d(jpij)      ,                & 
     183         &      STAT=ierr(4) ) 
     184 
    175185      thd_ice_alloc = MAXVAL( ierr ) 
    176186 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r6963 r7506  
    611611      diag_heat(:,:) = 0._wp ;   diag_smvi(:,:) = 0._wp ; 
    612612      diag_vice(:,:) = 0._wp ;   diag_vsnw(:,:) = 0._wp ; 
     613 
     614      ! SIMIP diagnostics 
     615      diag_dms_mel(:,:)  = 0._wp ; diag_dms_dyn(:,:)  = 0._wp 
     616      diag_dmtx_dyn(:,:) = 0._wp ; diag_dmty_dyn(:,:) = 0._wp 
     617      diag_fc_bo(:,:)    = 0._wp ; diag_fc_su(:,:)    = 0._wp 
    613618       
    614619   END SUBROUTINE sbc_lim_diag0 
Note: See TracChangeset for help on using the changeset viewer.