Changeset 4763 for LMDZ6/trunk
- Timestamp:
- Dec 10, 2023, 10:37:06 PM (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/StratAer/strataer_emiss_mod.F90
r4625 r4763 1 1 MODULE strataer_emiss_mod 2 ! This module contains information about strato microphysic model emission parameters3 2 ! This module contains information about strato microphysic model emission parameters 3 4 4 CONTAINS 5 5 6 6 SUBROUTINE strataer_emiss_init() 7 7 8 8 USE strataer_local_var_mod 9 9 USE ioipsl_getin_p_mod, ONLY : getin_p 10 10 USE print_control_mod, ONLY : lunout 11 11 USE mod_phys_lmdz_para, ONLY : is_master 12 12 13 13 ! Local variables 14 14 INTEGER :: ispec 15 15 16 16 WRITE(lunout,*) 'IN STRATAER_EMISS INIT WELCOME!' 17 17 18 18 IF (flag_emit.EQ.1 .OR. flag_emit.EQ.4) THEN ! Volcano 19 19 CALL getin_p('nErupt',nErupt) !eruption nb 20 20 CALL getin_p('injdur',injdur) !injection duration 21 21 22 22 IF (flag_emit==1) THEN 23 23 CALL getin_p('nAerErupt', nAerErupt) !sulfur aer nb … … 25 25 CALL getin_p('nSpeciesErupt', nSpeciesErupt) !chimical species nb 26 26 ENDIF 27 27 28 28 IF (nErupt.GT.0) THEN 29 29 ALLOCATE(year_emit_vol(nErupt),mth_emit_vol(nErupt),day_emit_vol(nErupt)) … … 37 37 ALLOCATE(m_H2O_emiss_vol(nErupt)) 38 38 ALLOCATE(m_H2O_emiss_vol_daily(nErupt)) 39 ! ALLOCATE(d_q_emiss(klon,klev))39 ! ALLOCATE(d_q_emiss(klon,klev)) 40 40 ALLOCATE(budg_emi(klon,nAerErupt+1)) 41 41 m_H2O_emiss_vol(:)=0. 42 42 m_H2O_emiss_vol_daily(:)=0. 43 ! d_q_emiss(:,:)=0.43 ! d_q_emiss(:,:)=0. 44 44 ELSE 45 45 ALLOCATE(budg_emi(klon,nAerErupt)) … … 48 48 ELSEIF (flag_emit==4) THEN 49 49 ALLOCATE(m_Chlore_emiss_vol(nErupt)) 50 ALLOCATE(id_HCl) 50 ALLOCATE(id_HCl) 51 51 ALLOCATE(m_Brome_emiss_vol(nErupt)) 52 52 ALLOCATE(id_HBr) … … 65 65 'No eruption define in physiq_def (nErupt=0). Add at one eruption or use background condition.',1) 66 66 ENDIF ! fin if nerupt 67 67 68 68 ! injection params (dates, loc, injections params) 69 69 CALL getin_p('year_emit_vol',year_emit_vol) … … 78 78 IF (flag_emit==1) THEN 79 79 CALL getin_p('m_sulf_emiss_vol',m_sulf_emiss_vol) 80 if (ok_qemiss) then81 CALL getin_p('m_H2O_emiss_vol',m_H2O_emiss_vol)82 endif80 if (ok_qemiss) then 81 CALL getin_p('m_H2O_emiss_vol',m_H2O_emiss_vol) 82 endif 83 83 ELSEIF (flag_emit==4) THEN 84 84 CALL getin_p('id_species',id_species) 85 CALL getin_p('m_Chlore_emiss_vol',m_Chlore_emiss_vol) 85 CALL getin_p('m_Chlore_emiss_vol',m_Chlore_emiss_vol) 86 86 CALL getin_p('id_HCl',id_HCl) 87 87 CALL getin_p('m_Brome_emiss_vol',m_Brome_emiss_vol) … … 92 92 CALL getin_p('id_H2O',id_H2O) 93 93 ENDIF 94 94 95 95 ELSEIF (flag_emit == 2) THEN ! SAI 96 96 CALL getin_p('m_aer_emiss_sai',m_aer_emiss_sai) … … 105 105 CALL getin_p('day_emit_sai_start',day_emit_sai_start) 106 106 CALL getin_p('day_emit_sai_end',day_emit_sai_end) 107 107 108 108 ELSEIF (flag_emit == 3) THEN ! SAI between latitudes 109 109 CALL getin_p('m_aer_emiss_sai',m_aer_emiss_sai) … … 114 114 CALL getin_p('xlat_min_sai',xlat_min_sai) 115 115 ENDIF 116 116 117 117 IF (flag_emit == 1) THEN 118 118 DO ispec=1,nAerErupt … … 124 124 m_species_emiss_vol(:,ispec) = m_Chlore_emiss_vol(:) 125 125 ENDIF 126 IF (id_species(ispec) == id_HBr) THEN 126 IF (id_species(ispec) == id_HBr) THEN 127 127 m_species_emiss_vol(:,ispec) = m_Brome_emiss_vol(:) 128 128 ENDIF … … 135 135 ENDDO 136 136 ENDIF 137 137 138 138 !============= Injection ponderation ============= 139 139 IF (flag_emit > 0) THEN … … 141 141 WRITE(lunout,*) 'IN STRATAER INIT : ponde_lonlat_vol',ponde_lonlat_vol 142 142 ENDIF 143 143 144 144 !============= Print params ============= 145 145 IF (is_master) THEN … … 148 148 WRITE(lunout,*) 'IN STRATAER injdur: ',injdur 149 149 WRITE(lunout,*) 'IN STRATAER nAerErupt: ',nAerErupt 150 150 151 151 WRITE(lunout,*) 'IN STRATAER : year_emit_vol',year_emit_vol 152 152 WRITE(lunout,*) 'IN STRATAER : mth_emit_vol',mth_emit_vol … … 195 195 ENDIF 196 196 ENDIF ! if master 197 197 198 198 WRITE(lunout,*) 'IN STRATAER_EMISS END' 199 199 END SUBROUTINE strataer_emiss_init 200 200 201 201 ! Compute the ponderation to applicate in each grid point for all eruptions and init 202 202 ! dlat & dlon variables 203 203 SUBROUTINE strataer_ponde_init() 204 204 205 205 USE regular_lonlat_mod, ONLY: lon_reg, lat_reg 206 206 USE dimphy, ONLY: klon … … 208 208 USE print_control_mod, ONLY : lunout 209 209 USE strataer_local_var_mod 210 210 211 211 INCLUDE "YOMCST.h" !--RPI 212 212 213 213 ! local var 214 214 REAL :: lat_reg_deg,lon_reg_deg ! lat and lon of grid points in degree 215 215 INTEGER :: ieru, i, j 216 216 217 217 ALLOCATE(ponde_lonlat_vol(nErupt)) 218 218 219 219 !Compute lon/lat ponderation for injection 220 220 dlat=180./2./FLOAT(nbp_lat) ! d latitude in degree … … 224 224 WRITE(lunout,*) 'IN STRATAER_INIT xlat_min=',xlat_min_vol,'xlat_max=',xlat_max_vol 225 225 WRITE(lunout,*) 'IN STRATAER_INIT xlon_min=',xlon_min_vol,'xlon_max=',xlon_max_vol 226 226 227 227 DO ieru=1, nErupt 228 228 ponde_lonlat_vol(ieru) = 0 … … 241 241 ENDIF 242 242 ENDDO !ieru 243 243 244 244 WRITE(lunout,*) 'IN STRATAER_PONDE_INIT ponde_lonlat: ', ponde_lonlat_vol 245 245 246 246 END SUBROUTINE strataer_ponde_init 247 247 248 248 END MODULE strataer_emiss_mod
Note: See TracChangeset
for help on using the changeset viewer.