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 4626 for branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limdiahsb.F90 – NEMO

Ignore:
Timestamp:
2014-05-02T12:11:34+02:00 (10 years ago)
Author:
gm
Message:

dev_r4028_CNRS_LIM3_MV2014 : minor corrections on LIM3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limdiahsb.F90

    r4345 r4626  
    3434   !!PUBLIC   lim_diahsb_rst   ! routine called by ice_init.F90 
    3535 
    36    REAL(dp) ::   frc_sal, frc_vol   ! global forcing trends 
    37    REAL(dp) ::   bg_grme            ! global ice growth+melt trends 
     36   REAL(wp) ::   frc_sal, frc_vol   ! global forcing trends 
     37   REAL(wp) ::   bg_grme            ! global ice growth+melt trends 
    3838   REAL(wp) ::   epsi06 = 1.e-6_wp  ! small number 
    3939   REAL(wp) ::   epsi03 = 1.e-3_wp  ! small number 
     
    4444 
    4545   !!---------------------------------------------------------------------- 
    46    !! NEMO/OPA 3.4 , NEMO Consortium (2012) 
     46   !! NEMO/OPA 3.6 , NEMO Consortium (2014) 
    4747   !! $Id: limdiahsb.F90 3294 2012-10-18 16:44:18Z rblod $ 
    4848   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    4949   !!---------------------------------------------------------------------- 
    50  
    5150CONTAINS 
    5251 
     
    5857      !!  
    5958      !!--------------------------------------------------------------------------- 
    60       !! 
    61       REAL(dp)   ::   zbg_ivo, zbg_svo, zbg_are, zbg_sal ,zbg_tem ,zbg_ihc ,zbg_shc 
    62       REAL(dp)   ::   zbg_sfx, zbg_sfx_bri, zbg_sfx_thd, zbg_sfx_res, zbg_sfx_mec  
    63       REAL(dp)   ::   zbg_emp, zbg_emp_bog, zbg_emp_lag, zbg_emp_sig, zbg_emp_dyg, zbg_emp_bom, zbg_emp_sum, zbg_emp_res  
    64       REAL(dp)   ::   z_frc_vol, z_frc_sal, z_bg_grme  
    65       REAL(dp)   ::   z1_area                     !    -     - 
    66       REAL(dp)   ::   zinda, zindb 
     59      REAL(wp)   ::   zbg_ivo, zbg_svo, zbg_are, zbg_sal ,zbg_tem ,zbg_ihc ,zbg_shc 
     60      REAL(wp)   ::   zbg_sfx, zbg_sfx_bri, zbg_sfx_thd, zbg_sfx_res, zbg_sfx_mec  
     61      REAL(wp)   ::   zbg_emp, zbg_emp_bog, zbg_emp_lag, zbg_emp_sig, zbg_emp_dyg, zbg_emp_bom, zbg_emp_sum, zbg_emp_res  
     62      REAL(wp)   ::   z_frc_vol, z_frc_sal, z_bg_grme  
     63      REAL(wp)   ::   z1_area, zcoef                     
     64      REAL(wp)   ::   zinda, zindb 
    6765      !!--------------------------------------------------------------------------- 
    6866      IF( nn_timing == 1 )   CALL timing_start('lim_diahsb') 
     
    7068      IF( numit == nstart ) CALL lim_diahsb_init  
    7169 
    72       ! 1/area 
    73       z1_area = 1.d0 / MAX( glob_sum( area(:,:) * tms(:,:) ), epsi06 ) 
    74  
    75       zinda = MAX( 0.d0 , SIGN( 1.d0 , glob_sum( area(:,:) * tms(:,:) ) - epsi06 ) ) 
     70      z1_area = 1._wp / MAX( glob_sum( area(:,:) * tms(:,:) ), epsi06 ) 
     71 
     72      zinda = MAX( 0._wp , SIGN( 1._wp , glob_sum( area(:,:) * tms(:,:) ) - epsi06 ) ) 
    7673      ! ----------------------- ! 
    7774      ! 1 -  Content variations ! 
     
    8077      zbg_svo = glob_sum( vt_s(:,:) * area(:,:) * tms(:,:) ) ! volume snow 
    8178      zbg_are = glob_sum( at_i(:,:) * area(:,:) * tms(:,:) ) ! area 
    82       zbg_sal = glob_sum( SUM( smv_i(:,:,:), dim=3 ) * area(:,:) * tms(:,:) )       ! mean salt content 
     79      zbg_sal = glob_sum( SUM( smv_i(:,:,:), dim=3 )      * area(:,:) * tms(:,:) )  ! mean salt content 
    8380      zbg_tem = glob_sum( ( tm_i(:,:) - rtt ) * vt_i(:,:) * area(:,:) * tms(:,:) )  ! mean temp content 
    8481 
     
    8986      zbg_shc = glob_sum( et_s(:,:) * 1.e-11 ) ! snow heat content [10^9*1.e-11 J] 
    9087 
    91       zbg_emp     = zinda * glob_sum(         emp(:,:) * area(:,:) * tms(:,:) ) * z1_area         * r1_rau0 * rday 
    92       zbg_emp_bog = zinda * glob_sum( diag_bot_gr(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    93       zbg_emp_lag = zinda * glob_sum( diag_lat_gr(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    94       zbg_emp_sig = zinda * glob_sum( diag_sni_gr(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    95       zbg_emp_dyg = zinda * glob_sum( diag_dyn_gr(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    96       zbg_emp_bom = zinda * glob_sum( diag_bot_me(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    97       zbg_emp_sum = zinda * glob_sum( diag_sur_me(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    98       zbg_emp_res = zinda * glob_sum( diag_res_pr(:,:) * area(:,:) * tms(:,:) ) * z1_area * rhoic * r1_rau0 * rday 
    99  
    100       zbg_sfx     = zinda * glob_sum(     sfx(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    101       zbg_sfx_bri = zinda * glob_sum( sfx_bri(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    102       zbg_sfx_thd = zinda * glob_sum( sfx_thd(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    103       zbg_sfx_res = zinda * glob_sum( sfx_res(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    104       zbg_sfx_mec = zinda * glob_sum( sfx_mec(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
     88      zcoef = zinda * z1_area * r1_rau0 * rday 
     89      zbg_emp     =  glob_sum(         emp(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     90       
     91      zcoef = zinda * z1_area * rhoic * r1_rau0 * rday 
     92      zbg_emp_bog = glob_sum( diag_bot_gr(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     93      zbg_emp_lag = glob_sum( diag_lat_gr(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     94      zbg_emp_sig = glob_sum( diag_sni_gr(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     95      zbg_emp_dyg = glob_sum( diag_dyn_gr(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     96      zbg_emp_bom = glob_sum( diag_bot_me(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     97      zbg_emp_sum = glob_sum( diag_sur_me(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     98      zbg_emp_res = glob_sum( diag_res_pr(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     99 
     100      zcoef = zinda * z1_area * r1_rau0 * rday 
     101      zbg_sfx     = glob_sum(     sfx(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     102      zbg_sfx_bri = glob_sum( sfx_bri(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     103      zbg_sfx_thd = glob_sum( sfx_thd(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     104      zbg_sfx_res = glob_sum( sfx_res(:,:) * area(:,:) * tms(:,:) ) * zcoef 
     105      zbg_sfx_mec = glob_sum( sfx_mec(:,:) * area(:,:) * tms(:,:) ) * zcoef 
    105106       
    106107      ! --------------------------------------------- ! 
     
    109110      z_frc_vol = r1_rau0 * glob_sum( - emp(:,:) * area(:,:) * tms(:,:) ) ! volume fluxes 
    110111      z_frc_sal = r1_rau0 * glob_sum(   sfx(:,:) * area(:,:) * tms(:,:) ) ! salt fluxes 
    111       z_bg_grme = glob_sum( ( diag_bot_gr(:,:) + diag_lat_gr(:,:) + diag_sni_gr(:,:) + diag_dyn_gr(:,:) + & 
    112                           &    diag_bot_me(:,:) + diag_sur_me(:,:) + diag_res_pr(:,:) ) * area(:,:) * tms(:,:) ) ! volume fluxes 
    113       ! 
    114       frc_vol  = frc_vol  + z_frc_vol  * rdt_ice 
    115       frc_sal  = frc_sal  + z_frc_sal  * rdt_ice 
    116       bg_grme  = bg_grme  + z_bg_grme  * rdt_ice 
     112      z_bg_grme = glob_sum(  (  diag_bot_gr(:,:) + diag_lat_gr(:,:) + diag_sni_gr(:,:) + diag_dyn_gr(:,:)     & 
     113         &                    + diag_bot_me(:,:) + diag_sur_me(:,:) + diag_res_pr(:,:)                    )   & 
     114         &                 * area(:,:) * tms(:,:) ) ! volume fluxes 
     115      ! 
     116      frc_vol  = frc_vol + z_frc_vol * rdt_ice 
     117      frc_sal  = frc_sal + z_frc_sal * rdt_ice 
     118      bg_grme  = bg_grme + z_bg_grme * rdt_ice 
    117119       
    118120      ! difference 
     
    123125      ! 3 - Diagnostics writing ! 
    124126      ! ----------------------- ! 
    125       zindb = MAX( 0.d0 , SIGN( 1.d0 , zbg_ivo - epsi06 ) ) 
     127      zindb = MAX( 0.d0 , SIGN( 1._wp , zbg_ivo - epsi06 ) ) 
    126128      ! 
    127129      CALL iom_put( 'ibgvoltot' , zbg_ivo * rhoic * r1_rau0 * 1.e-9        )   ! ice volume (km3 equivalent liquid)          
     
    156158      ! 
    157159      IF( nn_timing == 1 )   CALL timing_stop('lim_diahsb') 
    158 ! 
     160      ! 
    159161   END SUBROUTINE lim_diahsb 
    160162 
     
    190192      ! 2 - initial conservation variables ! 
    191193      ! ---------------------------------- ! 
    192       !frc_vol = 0.d0                                           ! volume       trend due to forcing 
    193       !frc_sal = 0.d0                                           ! salt content   -    -   -    -          
    194       !bg_grme = 0.d0                                           ! ice growth + melt volume trend 
    195       ! 
    196194      CALL lim_diahsb_rst( nstart, 'READ' )  !* read or initialize all required files 
    197195      ! 
    198196   END SUBROUTINE lim_diahsb_init 
     197 
    199198 
    200199   SUBROUTINE lim_diahsb_rst( kt, cdrw ) 
     
    226225           IF(lwp) WRITE(numout,*) ' lim_diahsb at initial state ' 
    227226           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    228            frc_vol  = 0.d0                                            
    229            frc_sal  = 0.d0                                                   
    230            bg_grme  = 0.d0                                         
     227           frc_vol  = 0._wp                                            
     228           frc_sal  = 0._wp                                                   
     229           bg_grme  = 0._wp                                         
    231230       ENDIF    
    232231 
Note: See TracChangeset for help on using the changeset viewer.