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 8564 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90 – NEMO

Ignore:
Timestamp:
2017-09-27T11:11:01+02:00 (7 years ago)
Author:
clem
Message:

change variable names

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90

    r8563 r8564  
    1212   !!                        - t_s (jpi,jpj,jpl) 
    1313   !!                        - e_i (jpi,jpj,nlay_i,jpl) 
    14    !!                        - smv_i(jpi,jpj,jpl) 
    15    !!                        - oa_i (jpi,jpj,jpl) 
     14   !!                        - sv_i(jpi,jpj,jpl) 
     15   !!                        - oa_i(jpi,jpj,jpl) 
    1616   !!                 VEQV : equivalent variables sometimes used in the model 
    1717   !!                        - h_i(jpi,jpj,jpl) 
     
    2626   !!                        - et_s(jpi,jpj)  !total snow heat content 
    2727   !!                        - et_i(jpi,jpj)  !total ice thermal content  
    28    !!                        - smt_i(jpi,jpj) !mean ice salinity 
     28   !!                        - sm_i(jpi,jpj) !mean ice salinity 
    2929   !!                        - tm_i (jpi,jpj) !mean ice temperature 
    3030   !!====================================================================== 
     
    117117         ! 
    118118         !                          ! mean ice/snow thickness 
    119          htm_i(:,:) = vt_i(:,:) * z1_at_i(:,:) 
    120          htm_s(:,:) = vt_s(:,:) * z1_at_i(:,:) 
     119         hm_i(:,:) = vt_i(:,:) * z1_at_i(:,:) 
     120         hm_s(:,:) = vt_s(:,:) * z1_at_i(:,:) 
    121121         !          
    122122         !                          ! mean temperature (K), salinity and age 
     
    125125         om_i (:,:) = SUM( oa_i(:,:,:)              , dim=3 ) * z1_at_i(:,:) 
    126126         ! 
    127          tm_i (:,:) = 0._wp 
    128          smt_i(:,:) = 0._wp 
     127         tm_i(:,:) = 0._wp 
     128         sm_i(:,:) = 0._wp 
    129129         DO jl = 1, jpl 
    130130            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 
    137135         ! 
    138136         DEALLOCATE( z1_at_i , z1_vt_i ) 
     
    152150      REAL(wp) ::   ze_i             ! local scalars 
    153151      REAL(wp) ::   ze_s, ztmelts, zbbb, zccc       !   -      - 
    154       REAL(wp) ::   zhmax, z1_zhmax, zsm_i          !   -      - 
     152      REAL(wp) ::   zhmax, z1_zhmax                 !   -      - 
    155153      REAL(wp) ::   zlay_i, zlay_s                  !   -      - 
    156154      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z1_a_i, z1_v_i 
     
    189187 
    190188      IF( nn_icesal == 2 ) THEN                    !--- salinity (with a minimum value imposed everywhere) 
    191          WHERE( v_i(:,:,:) > epsi20 )   ;   sm_i(:,:,:) = MAX( rn_simin , MIN( rn_simax, smv_i(:,:,:) * z1_v_i(:,:,:) ) ) 
    192          ELSEWHERE                      ;   sm_i(:,:,:) = rn_simin 
     189         WHERE( v_i(:,:,:) > epsi20 )   ;   s_i(:,:,:) = MAX( rn_simin , MIN( rn_simax, sv_i(:,:,:) * z1_v_i(:,:,:) ) ) 
     190         ELSEWHERE                      ;   s_i(:,:,:) = rn_simin 
    193191         END WHERE 
    194192      ENDIF 
     
    206204                  IF ( v_i(ji,jj,jl) > epsi20 ) THEN     !--- icy area  
    207205                     ! 
    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] 
    210208                     ! Conversion q(S,T) -> T (second order equation) 
    211209                     zbbb             = ( rcp - cpic ) * ztmelts + ze_i * r1_rhoic - lfus 
     
    253251      !!------------------------------------------------------------------- 
    254252      ! 
    255       v_i  (:,:,:) = h_i(:,:,:) * a_i(:,:,:) 
    256       v_s  (:,:,:) = h_s(:,:,:) * a_i(:,:,:) 
    257       smv_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(:,:,:) 
    258256      ! 
    259257   END SUBROUTINE ice_var_eqv2glo 
     
    290288      CASE( 1 )       !  constant salinity in time and space  ! 
    291289         !            !---------------------------------------! 
    292          s_i (:,:,:,:) = rn_icesal 
    293          sm_i(:,:,:)   = rn_icesal 
     290         sz_i(:,:,:,:) = rn_icesal 
     291         s_i(:,:,:)   = rn_icesal 
    294292         ! 
    295293         !            !---------------------------------------------! 
     
    301299         DO jl = 1, jpl 
    302300            DO jk = 1, nlay_i 
    303                s_i(:,:,jk,jl)  = sm_i(:,:,jl) 
     301               sz_i(:,:,jk,jl)  = s_i(:,:,jl) 
    304302            END DO 
    305303         END DO 
    306304         !                                      ! Slope of the linear profile  
    307          WHERE( h_i(:,:,:) > epsi20 )   ;   z_slope_s(:,:,:) = 2._wp * sm_i(:,:,:) / h_i(:,:,:) 
     305         WHERE( h_i(:,:,:) > epsi20 )   ;   z_slope_s(:,:,:) = 2._wp * s_i(:,:,:) / h_i(:,:,:) 
    308306         ELSEWHERE                       ;   z_slope_s(:,:,:) = 0._wp 
    309307         END WHERE 
     
    313311            DO jj = 1, jpj 
    314312               DO ji = 1, jpi 
    315                   zalpha(ji,jj,jl) = MAX(  0._wp , MIN( ( zsi1 - sm_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 )  ) 
    316314                  !                             ! force a constant profile when SSS too low (Baltic Sea) 
    317                   IF( 2._wp * sm_i(ji,jj,jl) >= sss_m(ji,jj) )   zalpha(ji,jj,jl) = 0._wp   
     315                  IF( 2._wp * s_i(ji,jj,jl) >= sss_m(ji,jj) )   zalpha(ji,jj,jl) = 0._wp   
    318316               END DO 
    319317            END DO 
     
    327325                     !                          ! linear profile with 0 surface value 
    328326                     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) ) * sm_i(ji,jj,jl)     ! weighting the profile 
    330                      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 ) ) 
    331329                  END DO 
    332330               END DO 
     
    340338         !            !-------------------------------------------!                                   (mean = 2.30) 
    341339         ! 
    342          sm_i(:,:,:) = 2.30_wp 
     340         s_i(:,:,:) = 2.30_wp 
    343341!!gm Remark: if we keep the case 3, then compute an store one for all time-step 
    344342!!           a array  S_prof(1:nlay_i) containing the calculation and just do: 
    345343!         DO jk = 1, nlay_i 
    346 !            s_i(:,:,jk,:) = S_prof(jk) 
     344!            sz_i(:,:,jk,:) = S_prof(jk) 
    347345!         END DO 
    348346!!gm end 
     
    351349            DO jk = 1, nlay_i 
    352350               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)) )  ) 
    354352            END DO 
    355353         END DO 
     
    380378      CASE( 1 )       !  constant salinity in time and space  ! 
    381379         !            !---------------------------------------! 
    382          s_i_1d(1:nidx,:) = rn_icesal 
     380         sz_i_1d(1:nidx,:) = rn_icesal 
    383381         ! 
    384382         !            !---------------------------------------------! 
     
    389387         ! 
    390388         !                                      ! Slope of the linear profile  
    391          WHERE( h_i_1d(1:nidx) > epsi20 )   ;   z_slope_s(1:nidx) = 2._wp * sm_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) 
    392390         ELSEWHERE                           ;   z_slope_s(1:nidx) = 0._wp 
    393391         END WHERE 
     
    395393         z1_dS = 1._wp / ( zsi1 - zsi0 ) 
    396394         DO ji = 1, nidx 
    397             zalpha(ji) = MAX(  0._wp , MIN(  ( zsi1 - sm_i_1d(ji) ) * z1_dS , 1._wp  )  ) 
     395            zalpha(ji) = MAX(  0._wp , MIN(  ( zsi1 - s_i_1d(ji) ) * z1_dS , 1._wp  )  ) 
    398396            !                             ! force a constant profile when SSS too low (Baltic Sea) 
    399             IF( 2._wp * sm_i_1d(ji) >= sss_1d(ji) )   zalpha(ji) = 0._wp 
     397            IF( 2._wp * s_i_1d(ji) >= sss_1d(ji) )   zalpha(ji) = 0._wp 
    400398         END DO 
    401399         ! 
     
    405403               !                          ! linear profile with 0 surface value 
    406404               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) ) * sm_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 ) ) 
    409407            END DO 
    410408         END DO 
     
    416414         !            !-------------------------------------------!                                   (mean = 2.30) 
    417415         ! 
    418          sm_i_1d(1:nidx) = 2.30_wp 
     416         s_i_1d(1:nidx) = 2.30_wp 
    419417         ! 
    420418!!gm cf remark in ice_var_salprof routine, CASE( 3 ) 
     
    423421            zsal =  1.6_wp * ( 1._wp - COS( rpi * zargtemp**( 0.407_wp / ( 0.573_wp + zargtemp ) ) ) ) 
    424422            DO ji = 1, nidx 
    425                s_i_1d(ji,jk) = zsal 
     423               sz_i_1d(ji,jk) = zsal 
    426424            END DO 
    427425         END DO 
     
    452450         ! 
    453451         WHERE( a_i(:,:,jl) < epsi10 .OR. v_i(:,:,jl) < epsi10 .OR. h_i(:,:,jl) < epsi10 )   ;   zswitch(:,:) = 0._wp 
    454          ELSEWHERE                                                                            ;   zswitch(:,:) = 1._wp 
     452         ELSEWHERE                                                                           ;   zswitch(:,:) = 1._wp 
    455453         END WHERE 
    456454          
     
    469467            DO ji = 1 , jpi 
    470468               ! update exchanges with ocean 
    471                sfx_res(ji,jj)  = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * smv_i(ji,jj,jl)   * rhoic * r1_rdtice 
    472                wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i  (ji,jj,jl)   * rhoic * r1_rdtice 
    473                wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s  (ji,jj,jl)   * rhosn * r1_rdtice 
    474                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 
     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 
    475473               !----------------------------------------------------------------- 
    476474               ! Zap snow energy  
     
    482480               ! zap ice and snow volume, add water and salt to ocean 
    483481               !----------------------------------------------------------------- 
    484                ato_i(ji,jj)    = a_i  (ji,jj,jl) * ( 1._wp - zswitch(ji,jj) ) + ato_i(ji,jj) 
    485                a_i  (ji,jj,jl) = a_i  (ji,jj,jl) * zswitch(ji,jj) 
    486                v_i  (ji,jj,jl) = v_i  (ji,jj,jl) * zswitch(ji,jj) 
    487                v_s  (ji,jj,jl) = v_s  (ji,jj,jl) * zswitch(ji,jj) 
    488                t_su (ji,jj,jl) = t_su (ji,jj,jl) * zswitch(ji,jj) + t_bo(ji,jj) * ( 1._wp - zswitch(ji,jj) ) 
    489                oa_i (ji,jj,jl) = oa_i (ji,jj,jl) * zswitch(ji,jj) 
    490                smv_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) 
    491489 
    492490               h_i (ji,jj,jl) = h_i (ji,jj,jl) * zswitch(ji,jj) 
     
    685683         DO jk = 1, nlay_i 
    686684            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 ) 
    688686            END WHERE 
    689687         END DO 
Note: See TracChangeset for help on using the changeset viewer.