Changeset 5918 for LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
- Timestamp:
- Dec 8, 2025, 5:23:42 PM (4 weeks ago)
- File:
-
- 1 edited
-
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90 (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5912 r5918 1 1 2 ! $Id: physiq_mod.F90 5 842 2025-09-25 15:09:22Z rkazeroni$2 ! $Id: physiq_mod.F90 5913 2025-12-04 16:00:50Z fairhead $ 3 3 ! 4 4 !#define IO_DEBUG … … 31 31 USE change_srf_frac_mod 32 32 USE conf_phys_m, ONLY: conf_phys 33 USE carbon_cycle_mod, ONLY : infocfields_init, RCO2_glo, carbon_cycle_rad 33 USE carbon_cycle_mod, ONLY : infocfields_init, RCO2_glo, carbon_cycle_rad ! PC 34 34 35 USE CFMIP_point_locations ! IM stations CFMIP 35 36 USE clouds_bigauss_mod, ONLY: clouds_bigauss … … 143 144 #endif 144 145 146 USE ch4n2o_correction_mod, ONLY: ch4n2o_init, ch4n2o_compute, & ! PC 147 & ok_CH4_eff_ppb, ok_N2O_eff_ppb, ghg_year, ghg_mode ! PC 145 148 USE phys_local_var_mod, ONLY: d_q_emiss 146 149 USE strataer_local_var_mod, ONLY: strataer_init,flag_emit,flh2o,ok_qemiss,flag_verbose_strataer, & … … 1675 1678 WRITE(lunout,*) 'Call to infocfields from physiq' 1676 1679 CALL infocfields_init 1680 1681 !--PC:reads keys once: broadcasts config to all ranks 1682 CALL ch4n2o_init() ! reads getin_p, broadcasts configuration 1683 1677 1684 1678 1685 !AI 08 2023 … … 2176 2183 IF (phys_tstep*REAL(radpas).GT.21600..AND.iflag_cycle_diurne.GE.1) THEN 2177 2184 WRITE(lunout,*)'Nbre d appels au rayonnement insuffisant' 2185 WRITE(lunout,*)'phys_tstep =', phys_tstep, radpas, iflag_cycle_diurne 2178 2186 WRITE(lunout,*)"Au minimum 4 appels par jour si cycle diurne" 2179 2187 abort_message='Nbre d appels au rayonnement insuffisant' … … 3310 3318 do i=1,klon ! 3311 3319 t_env(i,k)=t_seri(i,k) ! 3312 q_env(i,k)=q_seri(i,k) 3320 q_env(i,k)=q_seri(i,k) ! 3313 3321 #ifdef ISO 3314 3322 do ixt=1,ntraciso … … 3525 3533 (d_deltat_vdf, d_deltaq_vdf, dsig0, dsig0, ddens0, ddens0, wkoccur1, 'vdf', abortphy & 3526 3534 #ifdef ISO 3527 ,d_deltaxt_vdf &3528 #endif 3529 )3535 ,d_deltaxt_vdf & 3536 #endif 3537 ) 3530 3538 ELSE 3531 3539 d_deltat_vdf(:,:) = 0. … … 3552 3560 'vdf',abortphy,flag_inhib_tend,itap,0 & 3553 3561 #ifdef ISO 3554 & ,d_xt_vdf,dxtl0,dxti0 &3562 & ,d_xt_vdf,dxtl0,dxti0 & 3555 3563 #endif 3556 & )3564 & ) 3557 3565 ENDIF 3558 3566 CALL prt_enerbil('vdf',itap) … … 3928 3936 ,d_deltaxt_ajs_cv & 3929 3937 #endif 3930 ) 3938 ) 3931 3939 ENDIF ! (iflag_adjwk == 2 .AND. OK_bug_ajs_cv) 3932 3940 ENDIF ! (iflag_adjwk >= 1) … … 5043 5051 , d_t_ajsb, d_q_ajsb & 5044 5052 #ifdef ISO 5045 & ,xt_seri,d_xt_ajsb &5053 & ,xt_seri,d_xt_ajsb & 5046 5054 #endif 5047 & )5055 & ) 5048 5056 ELSE IF (iflag_thermals>0) THEN 5049 5057 ! Calling adjustment above the top of thermal plumes … … 5051 5059 , d_t_ajsb, d_q_ajsb & 5052 5060 #ifdef ISO 5053 & ,xt_seri,d_xt_ajsb &5061 & ,xt_seri,d_xt_ajsb & 5054 5062 #endif 5055 & )5063 & ) 5056 5064 ENDIF 5057 5065 … … 5061 5069 'ajsb',abortphy,flag_inhib_tend,itap,0 & 5062 5070 #ifdef ISO 5063 & ,d_xt_ajsb,dxtl0,dxti0 &5071 & ,d_xt_ajsb,dxtl0,dxti0 & 5064 5072 #endif 5065 & )5073 & ) 5066 5074 CALL prt_enerbil('ajsb',itap) 5067 5075 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) … … 5302 5310 'lsc',abortphy,flag_inhib_tend,itap,0 & 5303 5311 #ifdef ISO 5304 & ,d_xt_lsc,d_xtl_lsc,d_xti_lsc &5312 & ,d_xt_lsc,d_xtl_lsc,d_xti_lsc & 5305 5313 #endif 5306 5314 & ) … … 6136 6144 ! 6137 6145 RCO2 = RCO2_act 6146 ! RCH4 = RCH4_act 6147 ! RN2O = RN2O_act 6148 #ifdef CPP_RRTM 6149 ! PC 6150 ! Only attempt to compute effective values if at least one 6151 ! gas is actually routed as "effective" 6152 IF (ok_CH4_eff_ppb .OR. ok_N2O_eff_ppb) THEN 6153 ! ghg_year is provided by the driver (libIGCM); the transfer 6154 ! functions currently ignore it and use it only for logging 6155 CALL ch4n2o_compute(ghg_year, CH4_ppb, N2O_ppb, CH4_eff_ppb, N2O_eff_ppb) 6156 END IF 6157 6158 ! CH4: choose which mass mixing ratio to feed RRTM 6159 ! if "ok_CH4_eff_ppb" = .TRUE., we convert the effective 6160 ! concentration (ppb) into a mass mixing ratio 6161 ! Otherwise we use the "actual" RCH4_act 6162 IF (ok_CH4_eff_ppb) THEN 6163 RCH4 = CH4_eff_ppb * 1.0E-09 * RMCH4 / RMD 6164 !RCH4_eff = CH4_eff_ppb * 1.0E-09 * RMCH4 / RMD 6165 ELSE 6166 RCH4 = RCH4_act 6167 END IF 6168 6169 ! N2O: choose which mass mixing ratio to feed RRTM 6170 ! if "ok_N2O_eff_ppb" = .TRUE., we convert the effective 6171 ! concentration (ppb) into a mass mixing ratio 6172 ! Othewise we use the "actual" RN2O_act 6173 IF (ok_N2O_eff_ppb) THEN 6174 RN2O = N2O_eff_ppb * 1.0E-09 * RMN2O / RMD 6175 !RN2O_eff = N2O_eff_ppb * 1.0E-09 * RMN2O / RMD 6176 ELSE 6177 RN2O = RN2O_act 6178 END IF 6179 ! PC 6180 #else 6181 IF (ok_CH4_eff_ppb .OR. ok_N2O_eff_ppb .OR. & 6182 TRIM(ghg_mode) /= "identity") THEN 6183 6184 abort_message = 'CH4/N2O effective mapping (ghg_mode=' // & 6185 TRIM(ghg_mode) // ') is only supported ' // & 6186 ' for RRTM (CPP_RRTM). Please recompile ' // & 6187 ' with -rrtm or set ok_CH4_eff_ppb=n, ' // & 6188 'ok_N2O_eff_ppb=n and ghg_mode="identity".' 6189 CALL abort_physic(modname,abort_message, 1) 6190 ENDIF 6191 6192 ! In all cases we feed the unmodified "actual" mixing ratios 6193 ! to the radiation scheme when not using RRTM. 6138 6194 RCH4 = RCH4_act 6139 6195 RN2O = RN2O_act 6196 #endif 6197 6198 6140 6199 RCFC11 = RCFC11_act 6141 6200 RCFC12 = RCFC12_act
Note: See TracChangeset
for help on using the changeset viewer.
