- Timestamp:
- 2014-05-02T12:11:34+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limdiahsb.F90
r4345 r4626 34 34 !!PUBLIC lim_diahsb_rst ! routine called by ice_init.F90 35 35 36 REAL( dp) :: frc_sal, frc_vol ! global forcing trends37 REAL( dp) :: bg_grme ! global ice growth+melt trends36 REAL(wp) :: frc_sal, frc_vol ! global forcing trends 37 REAL(wp) :: bg_grme ! global ice growth+melt trends 38 38 REAL(wp) :: epsi06 = 1.e-6_wp ! small number 39 39 REAL(wp) :: epsi03 = 1.e-3_wp ! small number … … 44 44 45 45 !!---------------------------------------------------------------------- 46 !! NEMO/OPA 3. 4 , NEMO Consortium (2012)46 !! NEMO/OPA 3.6 , NEMO Consortium (2014) 47 47 !! $Id: limdiahsb.F90 3294 2012-10-18 16:44:18Z rblod $ 48 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 49 49 !!---------------------------------------------------------------------- 50 51 50 CONTAINS 52 51 … … 58 57 !! 59 58 !!--------------------------------------------------------------------------- 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 67 65 !!--------------------------------------------------------------------------- 68 66 IF( nn_timing == 1 ) CALL timing_start('lim_diahsb') … … 70 68 IF( numit == nstart ) CALL lim_diahsb_init 71 69 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 ) ) 76 73 ! ----------------------- ! 77 74 ! 1 - Content variations ! … … 80 77 zbg_svo = glob_sum( vt_s(:,:) * area(:,:) * tms(:,:) ) ! volume snow 81 78 zbg_are = glob_sum( at_i(:,:) * area(:,:) * tms(:,:) ) ! area 82 zbg_sal = glob_sum( SUM( smv_i(:,:,:), dim=3 ) * area(:,:) * tms(:,:) )! mean salt content79 zbg_sal = glob_sum( SUM( smv_i(:,:,:), dim=3 ) * area(:,:) * tms(:,:) ) ! mean salt content 83 80 zbg_tem = glob_sum( ( tm_i(:,:) - rtt ) * vt_i(:,:) * area(:,:) * tms(:,:) ) ! mean temp content 84 81 … … 89 86 zbg_shc = glob_sum( et_s(:,:) * 1.e-11 ) ! snow heat content [10^9*1.e-11 J] 90 87 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 105 106 106 107 ! --------------------------------------------- ! … … 109 110 z_frc_vol = r1_rau0 * glob_sum( - emp(:,:) * area(:,:) * tms(:,:) ) ! volume fluxes 110 111 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 117 119 118 120 ! difference … … 123 125 ! 3 - Diagnostics writing ! 124 126 ! ----------------------- ! 125 zindb = MAX( 0.d0 , SIGN( 1. d0, zbg_ivo - epsi06 ) )127 zindb = MAX( 0.d0 , SIGN( 1._wp , zbg_ivo - epsi06 ) ) 126 128 ! 127 129 CALL iom_put( 'ibgvoltot' , zbg_ivo * rhoic * r1_rau0 * 1.e-9 ) ! ice volume (km3 equivalent liquid) … … 156 158 ! 157 159 IF( nn_timing == 1 ) CALL timing_stop('lim_diahsb') 158 !160 ! 159 161 END SUBROUTINE lim_diahsb 160 162 … … 190 192 ! 2 - initial conservation variables ! 191 193 ! ---------------------------------- ! 192 !frc_vol = 0.d0 ! volume trend due to forcing193 !frc_sal = 0.d0 ! salt content - - - -194 !bg_grme = 0.d0 ! ice growth + melt volume trend195 !196 194 CALL lim_diahsb_rst( nstart, 'READ' ) !* read or initialize all required files 197 195 ! 198 196 END SUBROUTINE lim_diahsb_init 197 199 198 200 199 SUBROUTINE lim_diahsb_rst( kt, cdrw ) … … 226 225 IF(lwp) WRITE(numout,*) ' lim_diahsb at initial state ' 227 226 IF(lwp) WRITE(numout,*) '~~~~~~~' 228 frc_vol = 0. d0229 frc_sal = 0. d0230 bg_grme = 0. d0227 frc_vol = 0._wp 228 frc_sal = 0._wp 229 bg_grme = 0._wp 231 230 ENDIF 232 231
Note: See TracChangeset
for help on using the changeset viewer.