Changeset 6225 for branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90
- Timestamp:
- 2016-01-08T10:35:19+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90
r4688 r6225 18 18 USE sbc_oce ! Surface boundary condition: ocean fields 19 19 USE ice ! LIM variables 20 USE par_ice ! LIM parameters21 20 USE thd_ice ! LIM thermodynamics 22 21 USE limvar ! LIM variables … … 30 29 31 30 PUBLIC lim_thd_sal ! called by limthd module 32 PUBLIC lim_thd_sal_init ! called by iceini module31 PUBLIC lim_thd_sal_init ! called by sbc_lim_init 33 32 34 33 !!---------------------------------------------------------------------- … … 46 45 !! 47 46 !! ** Method : 3 possibilities 48 !! -> n um_sal = 1 -> Sice = cst [ice salinity constant in both time & space]49 !! -> n um_sal = 2 -> Sice = S(z,t) [Vancoppenolle et al. 2005]50 !! -> n um_sal = 3 -> Sice = S(z) [multiyear ice]47 !! -> nn_icesal = 1 -> Sice = cst [ice salinity constant in both time & space] 48 !! -> nn_icesal = 2 -> Sice = S(z,t) [Vancoppenolle et al. 2005] 49 !! -> nn_icesal = 3 -> Sice = S(z) [multiyear ice] 51 50 !!--------------------------------------------------------------------- 52 51 INTEGER, INTENT(in) :: kideb, kiut ! thickness category index … … 60 59 !--------------------------------------------------------- 61 60 DO ji = kideb, kiut 62 sm_i_ b(ji) = sm_i_b(ji) + dsm_i_se_1d(ji) + dsm_i_si_1d(ji)61 sm_i_1d(ji) = sm_i_1d(ji) + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 63 62 END DO 64 63 … … 66 65 ! 1) Constant salinity, constant in time | 67 66 !------------------------------------------------------------------------------| 68 !!gm comment: if n um_sal = 1 s_i_new, s_i_b and sm_i_b can be set to bulk_sal one for all in the initialisation phase !!69 !!gm ===>>> simplification of almost all test on n um_sal value70 IF( n um_sal == 1 ) THEN71 s_i_ b (kideb:kiut,1:nlay_i) = bulk_sal72 sm_i_ b (kideb:kiut) = bulk_sal73 s_i_new(kideb:kiut) = bulk_sal67 !!gm comment: if nn_icesal = 1 s_i_new, s_i_1d and sm_i_1d can be set to rn_icesal one for all in the initialisation phase !! 68 !!gm ===>>> simplification of almost all test on nn_icesal value 69 IF( nn_icesal == 1 ) THEN 70 s_i_1d (kideb:kiut,1:nlay_i) = rn_icesal 71 sm_i_1d(kideb:kiut) = rn_icesal 72 s_i_new(kideb:kiut) = rn_icesal 74 73 ENDIF 75 74 … … 77 76 ! Module 2 : Constant salinity varying in time | 78 77 !------------------------------------------------------------------------------| 79 IF( n um_sal == 2 ) THEN78 IF( nn_icesal == 2 ) THEN 80 79 81 80 DO ji = kideb, kiut … … 83 82 ! Switches 84 83 !---------- 85 iflush = MAX( 0._wp , SIGN( 1._wp , t_su_ b(ji) - rtt ) )! =1 if summer86 igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_ b(ji) - t_su_b(ji) ) ) ! =1 if t_su < t_bo84 iflush = MAX( 0._wp , SIGN( 1._wp , t_su_1d(ji) - rt0 ) ) ! =1 if summer 85 igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_1d(ji) - t_su_1d(ji) ) ) ! =1 if t_su < t_bo 87 86 88 87 !--------------------- … … 90 89 !--------------------- 91 90 ! drainage by gravity drainage 92 dsm_i_gd_1d(ji) = - igravdr * MAX( sm_i_ b(ji) - sal_G , 0._wp ) / time_G* rdt_ice91 dsm_i_gd_1d(ji) = - igravdr * MAX( sm_i_1d(ji) - rn_sal_gd , 0._wp ) / rn_time_gd * rdt_ice 93 92 ! drainage by flushing 94 dsm_i_fl_1d(ji) = - iflush * MAX( sm_i_ b(ji) - sal_F , 0._wp ) / time_F* rdt_ice93 dsm_i_fl_1d(ji) = - iflush * MAX( sm_i_1d(ji) - rn_sal_fl , 0._wp ) / rn_time_fl * rdt_ice 95 94 96 95 !----------------- … … 99 98 ! only drainage terms ( gravity drainage and flushing ) 100 99 ! snow ice / bottom sources are added in lim_thd_ent to conserve energy 101 sm_i_ b(ji) = sm_i_b(ji) + dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji)100 sm_i_1d(ji) = sm_i_1d(ji) + dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) 102 101 103 102 !---------------------------- 104 103 ! Salt flux - brine drainage 105 104 !---------------------------- 106 sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_ b(ji) * ht_i_b(ji) * ( dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) ) * r1_rdtice105 sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * ht_i_1d(ji) * ( dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) ) * r1_rdtice 107 106 108 107 END DO … … 116 115 ! Module 3 : Profile of salinity, constant in time | 117 116 !------------------------------------------------------------------------------| 118 IF( n um_sal == 3 ) CALL lim_var_salprof1d( kideb, kiut )117 IF( nn_icesal == 3 ) CALL lim_var_salprof1d( kideb, kiut ) 119 118 120 119 ! … … 134 133 !!------------------------------------------------------------------- 135 134 INTEGER :: ios ! Local integer output status for namelist read 136 NAMELIST/namicesal/ n um_sal, bulk_sal, sal_G, time_G, sal_F, time_F, &137 & s_i_max, s_i_min, s_i_0, s_i_1135 NAMELIST/namicesal/ nn_icesal, rn_icesal, rn_sal_gd, rn_time_gd, rn_sal_fl, rn_time_fl, & 136 & rn_simax, rn_simin 138 137 !!------------------------------------------------------------------- 139 138 ! … … 151 150 WRITE(numout,*) 'lim_thd_sal_init : Ice parameters for salinity ' 152 151 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 153 WRITE(numout,*) ' switch for salinity num_sal : ', num_sal 154 WRITE(numout,*) ' bulk salinity value if num_sal = 1 : ', bulk_sal 155 WRITE(numout,*) ' restoring salinity for GD : ', sal_G 156 WRITE(numout,*) ' restoring time for GD : ', time_G 157 WRITE(numout,*) ' restoring salinity for flushing : ', sal_F 158 WRITE(numout,*) ' restoring time for flushing : ', time_F 159 WRITE(numout,*) ' Maximum tolerated ice salinity : ', s_i_max 160 WRITE(numout,*) ' Minimum tolerated ice salinity : ', s_i_min 161 WRITE(numout,*) ' 1st salinity for salinity profile : ', s_i_0 162 WRITE(numout,*) ' 2nd salinity for salinity profile : ', s_i_1 152 WRITE(numout,*) ' switch for salinity nn_icesal = ', nn_icesal 153 WRITE(numout,*) ' bulk salinity value if nn_icesal = 1 = ', rn_icesal 154 WRITE(numout,*) ' restoring salinity for GD = ', rn_sal_gd 155 WRITE(numout,*) ' restoring time for GD = ', rn_time_gd 156 WRITE(numout,*) ' restoring salinity for flushing = ', rn_sal_fl 157 WRITE(numout,*) ' restoring time for flushing = ', rn_time_fl 158 WRITE(numout,*) ' Maximum tolerated ice salinity = ', rn_simax 159 WRITE(numout,*) ' Minimum tolerated ice salinity = ', rn_simin 163 160 ENDIF 164 161 !
Note: See TracChangeset
for help on using the changeset viewer.