Changeset 3657 for trunk/LMDZ.TITAN/libf/muphytitan
- Timestamp:
- Feb 27, 2025, 2:53:07 PM (4 months ago)
- Location:
- trunk/LMDZ.TITAN/libf/muphytitan
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.TITAN/libf/muphytitan/mm_globals.f90
r3496 r3657 724 724 ENDIF 725 725 ! Reads species properties configuration file 726 err = cfg_read_config(cp,TRIM(spcfile)) ; IF (err /= 0) RETURN 726 !err = cfg_read_config(cp,TRIM(spcfile)) ; IF (err /= 0) RETURN 727 err = cfg_read_config(cp,TRIM(spcfile)) 728 IF (err /= 0) THEN 729 write(*,*) err !return error message (EMoi24) 730 RETURN 731 ENDIF 727 732 err = cfg_get_value(cp,"used_species",species) 728 733 IF (err /= 0) THEN … … 836 841 ENDIF 837 842 838 ! compute m3 thresholds from user-defined thresholds.839 mm_m3as_min = mm_m0as_min*mm_alpha_s(3._mm_wp) * mm_rcs_min**3._mm_wp840 mm_m3af_min = mm_m0af_min*mm_alpha_f(3._mm_wp) * mm_rcf_min**3._mm_wp841 mm_m3cld_min = mm_m0n_min * (4._mm_wp * mm_pi / 3._mm_wp) * mm_drad_min**3._mm_wp842 843 843 ! clouds control flags 844 844 IF (mm_w_clouds) THEN … … 875 875 END SUBROUTINE printw 876 876 END FUNCTION mm_global_init_0 877 878 SUBROUTINE mm_global_init_calc 879 ! compute m3 thresholds from user-defined thresholds. 880 ! -- we operate here on global variables 881 mm_m3as_min = mm_m0as_min*mm_alpha_s(3._mm_wp) * mm_rcs_min**3._mm_wp 882 mm_m3af_min = mm_m0af_min*mm_alpha_f(3._mm_wp) * mm_rcf_min**3._mm_wp 883 mm_m3cld_min = mm_m0n_min * (4._mm_wp * mm_pi / 3._mm_wp) * mm_drad_min**3._mm_wp 884 END SUBROUTINE mm_global_init_calc 877 885 878 886 FUNCTION mm_global_init_1(cfg) RESULT(err) … … 980 988 err = mm_check_opt(cfg_get_value(cfg,"haze_coagulation",mm_w_haze_coag),mm_w_haze_coag,zwhc,wlog=mm_log) 981 989 err = mm_check_opt(cfg_get_value(cfg,"clouds_sedimentation",mm_w_cloud_sed),mm_w_cloud_sed,zwcs,wlog=mm_log) 982 err = mm_check_opt(cfg_get_value(cfg,"clouds_nuc l_cond",mm_w_cloud_nucond),mm_w_cloud_nucond,zwcn,wlog=mm_log)990 err = mm_check_opt(cfg_get_value(cfg,"clouds_nuc_cond",mm_w_cloud_nucond),mm_w_cloud_nucond,zwcn,wlog=mm_log) 983 991 err = mm_check_opt(cfg_get_value(cfg,"wsed_m0",mm_wsed_m0),mm_wsed_m0,zwstom0,wlog=mm_log) 984 992 err = mm_check_opt(cfg_get_value(cfg,"wsed_m3",mm_wsed_m3),mm_wsed_m3,zwstom3,wlog=mm_log) -
trunk/LMDZ.TITAN/libf/muphytitan/mmp_gcm.f90
r3090 r3657 43 43 USE CFGPARSE 44 44 USE DATASETS 45 USE CALLKEYS_MOD 45 46 IMPLICIT NONE 46 47 … … 87 88 !! Internal microphysic configuration file. 88 89 90 TYPE(error) :: err 91 INTEGER :: i 92 TYPE(cfgparser) :: cparser 93 CHARACTER(len=st_slen) :: opt_file 94 CHARACTER(len=st_slen), DIMENSION(:), ALLOCATABLE :: species 95 REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE :: tmp 96 LOGICAL :: wdebug 97 98 ! for mesoscale, initialized in inifis_mod (EMoi) 99 #ifndef MESOSCALE 89 100 INTEGER :: coag_choice 90 101 REAL(kind=mm_wp) :: fiad_max,fiad_min,df,rm,rho_aer 91 102 LOGICAL :: w_h_prod,w_h_sed,w_h_coag,w_c_sed,w_c_nucond, & 92 103 no_fiadero,fwsed_m0,fwsed_m3 93 TYPE(error) :: err 94 INTEGER :: i 95 TYPE(cfgparser) :: cparser 96 CHARACTER(len=st_slen) :: spcpath,pssfile,mqfile,opt_file 97 CHARACTER(len=st_slen), DIMENSION(:), ALLOCATABLE :: species 98 REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE :: tmp 104 CHARACTER(len=st_slen) :: spcpath,pssfile,mqfile 99 105 REAL(kind=mm_wp) :: m0as_min,rcs_min,m0af_min,rcf_min,m0n_min 100 LOGICAL :: wdebug101 106 102 107 w_h_prod = .true. … … 117 122 rcf_min = 1e-9_mm_wp 118 123 m0n_min = 1e-10_mm_wp 124 #endif 119 125 120 126 WRITE(*,'(a)') "##### MMP_GCM SPEAKING #####" … … 129 135 ENDIF 130 136 137 ! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi) 138 #ifndef MESOSCALE 131 139 ! YAMMS internal parameters: 132 140 err = mm_check_opt(cfg_get_value(cparser,"rm",rm),rm,50e-9_mm_wp,mm_log) … … 139 147 err = mm_check_opt(cfg_get_value(cparser,"haze_coagulation",w_h_coag) ,w_h_coag ,.true. ,mm_log) 140 148 err = mm_check_opt(cfg_get_value(cparser,"clouds_sedimentation",w_c_sed) ,w_c_sed ,clouds ,mm_log) 141 err = mm_check_opt(cfg_get_value(cparser,"clouds_nuc l_cond",w_c_nucond) ,w_c_nucond ,clouds ,mm_log)149 err = mm_check_opt(cfg_get_value(cparser,"clouds_nuc_cond",w_c_nucond) ,w_c_nucond ,clouds ,mm_log) 142 150 err = mm_check_opt(cfg_get_value(cparser,"wsed_m0",fwsed_m0) ,fwsed_m0 ,.true. ,mm_log) 143 151 err = mm_check_opt(cfg_get_value(cparser,"wsed_m3",fwsed_m3) ,fwsed_m3 ,.false. ,mm_log) … … 159 167 IF (err/=0) call abort_program(err) 160 168 ENDIF 169 #endif 170 171 ! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi) 172 #ifndef MESOSCALE 173 ! YAMMS initialization. 174 ! NB: in MESOSCALE this is done in inifis EMoi 175 err = mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0, & 176 air_rad,air_mmol,coag_choice,clouds,spcpath, & 177 w_h_prod,w_h_sed,w_h_coag,w_c_nucond, & 178 w_c_sed,fwsed_m0,fwsed_m3, & 179 no_fiadero,fiad_min,fiad_max, & 180 m0as_min,rcs_min,m0af_min,rcf_min,m0n_min,wdebug) 181 IF (err /= 0) call abort_program(err) 182 #endif 161 183 162 184 ! Setup alpha function: THEY ARE REQUIRED IN YAMMS global initialization ! … … 170 192 IF (err /= 0) call abort_program(error("alpha_s: "//TRIM(err%msg),-1)) 171 193 172 ! YAMMS initialization. 173 err = mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0, & 174 air_rad,air_mmol,coag_choice,clouds,spcpath, & 175 w_h_prod,w_h_sed,w_h_coag,w_c_nucond, & 176 w_c_sed,fwsed_m0,fwsed_m3, & 177 no_fiadero,fiad_min,fiad_max, & 178 m0as_min,rcs_min,m0af_min,rcf_min,m0n_min,wdebug) 179 IF (err /= 0) call abort_program(err) 180 194 ! perform threshold computations once global variables + settings collected 195 CALL mm_global_init_calc 196 197 ! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi) 198 #ifndef MESOSCALE 181 199 ! Extra initialization (needed for YAMMS method interfaces) 182 200 err = mm_check_opt(cfg_get_value(cparser, "transfert_probability", mmp_w_ps2s), mmp_w_ps2s, wlog=mm_log) … … 184 202 err = mm_check_opt(cfg_get_value(cparser, "electric_charging" , mmp_w_qe ), mmp_w_qe, wlog=mm_log) 185 203 IF (err/=0) call abort_program(err) 204 #endif 186 205 187 206 ! initialize transfert probabilities look-up tables 188 207 IF (mm_w_haze_coag .AND. mmp_w_ps2s) THEN 208 ! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi) 209 #ifndef MESOSCALE 189 210 err = mm_check_opt(cfg_get_value(cparser, "ps2s_file", pssfile), pssfile) 190 211 IF (err /= 0) call abort_program(err) 212 #endif 191 213 192 214 IF (.NOT.read_dset(pssfile,'p_m0_co',mmp_pco0p)) THEN … … 203 225 ENDIF 204 226 ENDIF 227 205 228 ! initialize mean electric correction look-up tables 206 229 IF (mm_w_haze_coag .AND. mmp_w_qe) THEN 230 ! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi) 231 #ifndef MESOSCALE 207 232 err = mm_check_opt(cfg_get_value(cparser, "mq_file", mqfile), mqfile) 208 233 IF (err /= 0) call abort_program(err) 234 #endif 209 235 210 236 IF (.NOT.read_dset(mqfile,'qbsf0',mmp_qbsf0)) THEN … … 245 271 ! dump parameters ... 246 272 WRITE(*,'(a)') "========= MUPHYS PARAMETERS ===========" 247 WRITE(*,'(a,L2)') "transfert_probability: ", mmp_w_ps2s248 WRITE(*,'(a,L2)') "electric_charging : ", mmp_w_qe273 !WRITE(*,'(a,L2)') "transfert_probability: ", mmp_w_ps2s 274 !WRITE(*,'(a,L2)') "electric_charging : ", mmp_w_qe 249 275 call mm_dump_parameters() 250 276 IF (clouds) THEN
Note: See TracChangeset
for help on using the changeset viewer.