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 8156 – NEMO

Changeset 8156


Ignore:
Timestamp:
2017-06-08T18:13:32+02:00 (7 years ago)
Author:
vancop
Message:

SIMIP outputs, phase 2, commit #4

Location:
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3
Files:
5 edited

Legend:

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

    r8152 r8156  
    108108   !! v_s         |      -      |    Snow volume per unit area    | m     | 
    109109   !! smv_i       |      -      |    Sea ice salt content         | ppt.m | 
    110    !! oa_i        !      -      !    Sea ice areal age content    | day   | 
     110   !! oa_i        !      -      !    Sea ice areal age content    |    | 
    111111   !! e_i         !      -      !    Ice enthalpy                 | J/m2  |  
    112112   !!      -      ! q_i_1d      !    Ice enthalpy per unit vol.   | J/m3  |  
     
    123123   !! sm_i        ! sm_i_1d     |    Sea ice bulk salinity        ! ppt   | 
    124124   !! s_i         ! s_i_1d      |    Sea ice salinity profile     ! ppt   | 
    125    !! o_i         !      -      |    Sea ice Age                  ! days  | 
     125   !! o_i         !      -      |    Sea ice Age                  ! s     | 
    126126   !! t_i         ! t_i_1d      |    Sea ice temperature          ! K     | 
    127127   !! t_s         ! t_s_1d      |    Snow temperature             ! K     | 
     
    322322   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   smv_i   !: Sea-Ice Bulk salinity times volume per area (ppt.m) 
    323323   !                                                                  !  this is an extensive variable that has to be transported 
    324    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   o_i     !: Sea-Ice Age (days) 
    325    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   oa_i    !: Sea-Ice Age times ice area (days) 
     324   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   o_i     !: Sea-Ice Age (s) 
     325   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   oa_i    !: Sea-Ice Age times ice area (s)    
    326326 
    327327   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   bv_i    !: brine volume 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r6696 r8156  
    309309               ht_s(ji,jj,jl)  = ht_i(ji,jj,jl) * ( zht_s_ini( zhemis(ji,jj) ) / zht_i_ini( zhemis(ji,jj) ) )  ! snow depth 
    310310               sm_i(ji,jj,jl)  = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj))     ! salinity 
    311                o_i(ji,jj,jl)   = zswitch(ji,jj) * 1._wp                        ! age (1 day) 
     311               o_i(ji,jj,jl)   = zswitch(ji,jj) * 0._wp                        ! age (0 day) 
    312312               t_su(ji,jj,jl)  = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rt0 ! surf temp 
    313313 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90

    r8152 r8156  
    675675      END DO 
    676676 
    677       CALL lbc_lnk_multi( diag_sig1   , 'T',  1., diag_sig2   , 'T',  1., & 
    678                  &        diag_dssh_dx, 'U', -1., diag_dssh_dy, 'V', -1., & 
    679                  &        diag_corstrx, 'U', -1., diag_corstry, 'V', -1., &  
    680                  &        diag_intstrx, 'U', -1., diag_intstry, 'V', -1.  & 
    681                  &        diag_utau_oi, 'U', -1., diag_vtau_oi, 'V', -1.    ) 
     677      CALL lbc_lnk_multi(   diag_sig1   , 'T',  1., diag_sig2   , 'T',  1.,   & 
     678                 &          diag_dssh_dx, 'U', -1., diag_dssh_dy, 'V', -1.,   & 
     679                 &          diag_corstrx, 'U', -1., diag_corstry, 'V', -1.,   &  
     680                 &          diag_intstrx, 'U', -1., diag_intstry, 'V', -1.    ) 
     681 
     682      CALL lbc_lnk_multi(   diag_utau_oi, 'U', -1., diag_vtau_oi, 'V', -1.    ) 
    682683 
    683684      ! 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90

    r7506 r8156  
    156156      ! ------------------------------------------------- 
    157157      DO jl  = 1, jpl 
    158          oa_i(:,:,jl) = oa_i(:,:,jl) + a_i(:,:,jl) * rdt_ice / rday   ! ice natural aging 
     158         oa_i(:,:,jl) = oa_i(:,:,jl) + a_i(:,:,jl) * rdt_ice          ! ice natural aging 
    159159         afx_thd(:,:) = afx_thd(:,:) + ( a_i(:,:,jl) - a_i_b(:,:,jl) ) * r1_rdtice 
    160160      END DO 
  • branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r8152 r8156  
    5454      ! 
    5555      INTEGER  ::  ii, ji, jj, jk, jl  ! dummy loop indices 
    56       REAL(wp) ::  z1_365 
    5756      REAL(wp) ::  z2da, z2db, ztmp, zrho1, zrho2 
    5857      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zswi2 
    5958      REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, zswi    ! 2D workspace 
     59      REAL(wp), POINTER, DIMENSION(:,:)   ::  zfb          ! ice freeboard 
     60      REAL(wp), POINTER, DIMENSION(:,:)   ::  zamask, zamask15 ! 15% concentration mask 
    6061 
    6162      ! Global ice diagnostics (SIMIP) 
     
    8990      CALL wrk_alloc( jpi, jpj, jpl, zswi2 ) 
    9091      CALL wrk_alloc( jpi, jpj     , z2d, zswi ) 
     92      CALL wrk_alloc( jpi, jpj     , zfb, zamask, zamask15 ) 
    9193 
    9294      !----------------------------- 
    9395      ! Mean category values 
    9496      !----------------------------- 
    95       z1_365 = 1._wp / 365._wp 
    9697 
    9798      ! brine volume 
     
    102103         DO ji = 1, jpi 
    103104            zswi(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice 
     105         END DO 
     106      END DO 
     107      DO jj = 1, jpj 
     108         DO ji = 1, jpi 
     109            zamask(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.05 ) )   ! 1 if 5% ice, 0 if less - required to mask thickness and snow depth 
     110            zamask15(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.15 ) ) ! 1 if 15% ice, 0 if less 
    104111         END DO 
    105112      END DO 
     
    142149      ENDIF 
    143150      ! 
    144       IF ( iom_use( "miceage" ) )       CALL iom_put( "miceage"     , om_i * zswi * z1_365  )  ! mean ice age 
     151      IF ( iom_use( "miceage" ) )       CALL iom_put( "miceage"     , om_i * zswi * zamask15 )  ! mean ice age 
    145152      IF ( iom_use( "micet" ) )         CALL iom_put( "micet"       , ( tm_i  - rt0 ) * zswi )  ! ice mean    temperature 
    146153      IF ( iom_use( "icest" ) )         CALL iom_put( "icest"       , ( tm_su - rt0 ) * zswi )  ! ice surface temperature 
     
    239246      IF ( iom_use( "snwtemp_cat"  ) )  CALL iom_put( "snwtemp_cat", ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zswi2 ) 
    240247      ! ice age 
    241       IF ( iom_use( "iceage_cat"   ) )  CALL iom_put( "iceage_cat" , o_i * zswi2 * z1_365 ) 
     248      IF ( iom_use( "iceage_cat"   ) )  CALL iom_put( "iceage_cat" , o_i * zswi2 )  
    242249      ! brine volume 
    243250      IF ( iom_use( "brinevol_cat" ) )  CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 ) 
     
    248255      zrho1 = ( rau0 - rhoic ) / rau0; zrho2 = rhosn / rau0 
    249256 
    250       IF  ( iom_use( "icethic"  ) ) CALL iom_put( "icethic"     , htm_i * zswi               )          ! Ice thickness  
     257      IF  ( iom_use( "icethic"  ) ) CALL iom_put( "icethic"     , htm_i * zamask             )          ! Ice thickness  
    251258      IF  ( iom_use( "icepres"  ) ) CALL iom_put( "icepres"     , zswi                       )          ! Ice presence (1 or 0)  
    252       IF  ( iom_use( "snowthic" ) ) CALL iom_put( "snowthic"    , htm_s * zswi               )          ! Snow thickness        
     259      IF  ( iom_use( "snowthic" ) ) CALL iom_put( "snowthic"    , htm_s * zamask             )          ! Snow thickness        
    253260      IF  ( iom_use( "icemass"  ) ) CALL iom_put( "icemass"     , rhoic * vt_i(:,:) * zswi   )          ! Ice mass per cell area  
    254261      IF  ( iom_use( "snomass"  ) ) CALL iom_put( "snomass"     , rhosn * vt_s(:,:) * zswi   )          ! Snow mass per cell area 
    255262      IF  ( iom_use( "icesnt"   ) ) CALL iom_put( "icesnt"      , ( tm_si - rt0 ) * zswi     )          ! Snow-ice interface temperature 
    256263      IF  ( iom_use( "icebot"   ) ) CALL iom_put( "icebot"      , ( t_bo  - rt0 ) * zswi     )          ! Ice bottom temperature 
    257       IF  ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass"    , SUM( smv_i, DIM = 3 ) * rhoic / 1000. * zswi )         ! Mass of salt in sea ice per cell area 
    258       IF  ( iom_use( "icefb"    ) ) CALL iom_put( "icefb"       , ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi )   ! Ice freeboard 
    259  
     264      IF  ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass"    , SUM( smv_i, DIM = 3 ) * rhoic * 1.0e-3 * zswi )   ! Mass of salt in sea ice per cell area 
     265      IF  ( iom_use( "icefb"    ) ) THEN 
     266         zfb(:,:) = ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi(:,:)                              
     267         WHERE( zfb < 0._wp ) ;   zfb = 0._wp ;   END WHERE 
     268                                    CALL iom_put( "icefb"       , zfb                        )          ! Ice freeboard 
     269      ENDIF 
    260270      IF  ( iom_use( "dmithd"   ) ) CALL iom_put( "dmithd"      , - wfx_bog - wfx_bom - wfx_sum   &     ! Sea-ice mass change from thermodynamics 
    261271              &                     - wfx_sni - wfx_opw - wfx_res ) 
     
    571581      CALL wrk_dealloc( jpi, jpj, jpl, zswi2 ) 
    572582      CALL wrk_dealloc( jpi, jpj     , z2d, zswi ) 
     583      CALL wrk_dealloc( jpi, jpj     , zfb, zamask, zamask15 ) 
    573584 
    574585      IF( nn_timing == 1 )  CALL timing_stop('limwri') 
Note: See TracChangeset for help on using the changeset viewer.