- Timestamp:
- Apr 12, 2024, 4:48:27 PM (8 months ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/changelog.txt
r3291 r3299 1896 1896 - improvement of parameterization of sea ice albedo vs sea ice thickness in hydrol+photolysis_online 1897 1897 (when ok_slab_ocean activated) 1898 1899 == 12/04/2024 == AB + EM 1900 - add some auxiliary functions in module tracer_h.F90: 1901 is_known_tracer(tname) returns ".true." if "tname" is a known tracer 1902 tracer_index(tname) returns the tracer index of tracer "tname" 1903 - add the possibility of "volcanic outgasing" as point sources. 1904 controled by a "callvolcano" flag (default .false.) 1905 details about source location and injection details (frequency, length) 1906 need be provided in a "volcano.def" ASCII file read at runtime. 1907 (see routine "read_volcano" in volcano.F90) -
trunk/LMDZ.GENERIC/libf/phystd/callkeys_mod.F90
r3283 r3299 6 6 logical,save :: calladj,calltherm,co2cond,callsoil 7 7 !$OMP THREADPRIVATE(calladj,calltherm,co2cond,callsoil) 8 9 ! do we have volcanoes (injecting tracers in atmosphere) ? 10 logical,save :: callvolcano 11 !$OMP THREADPRIVATE(callvolcano) 12 8 13 logical,save :: season,diurnal,tlocked,rings_shadow,lwrite 9 14 !$OMP THREADPRIVATE(season,diurnal,tlocked,rings_shadow,lwrite) -
trunk/LMDZ.GENERIC/libf/phystd/inifis_mod.F90
r3279 r3299 503 503 ! ": ok_slab_heat_transp = ",ok_slab_heat_transp 504 504 505 ! Volcanoes (as point sources of tracers) 506 if (is_master) write(*,*) trim(rname)//": Erupt volcano ?" 507 callvolcano=.false. ! default value 508 call getin_p("callvolcano",callvolcano) 509 if (is_master) write(*,*) trim(rname)//": callvolcano = ",callvolcano 510 511 ! Sanity check: volcano requires tracers 512 if (callvolcano.and.(.not.tracer)) then 513 call abort_physic(rname,& 514 " Error: volcano option requires using tracers",1) 515 endif 516 505 517 ! Photochemistry and chemistry in the thermosphere 506 518 -
trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90
r3294 r3299 66 66 ok_slab_ocean, photochem, rings_shadow, rmean, & 67 67 season, sedimentation,generic_condensation, & 68 specOLR, callthermos, &68 specOLR, callthermos, callvolcano, & 69 69 startphy_file, testradtimes, tlocked, & 70 70 tracer, UseTurbDiff, water, watercond, & … … 77 77 use phys_state_var_mod 78 78 use callcorrk_mod, only: callcorrk 79 use conduction_mod 79 use conduction_mod, only: conduction 80 use volcano_mod, only: volcano 80 81 use pindex_mod, only: pindex 81 82 use vdifc_mod, only: vdifc … … 358 359 REAL,allocatable,save :: zdqschim(:,:) ! Calchim_asis routine 359 360 !$OMP THREADPRIVATE(zdqchim,zdqschim) 361 real zdqvolc(ngrid,nlayer,nq) ! injection by volcanoes (kg/kg_of_air/s) 360 362 361 363 REAL array_zero1(ngrid) … … 1481 1483 if (tracer) then 1482 1484 1485 ! ----------------------------------------------------- 1486 ! VI.0. Volcanoes injecting tracers in the atmosphere 1487 ! ----------------------------------------------------- 1488 if (callvolcano) then 1489 call volcano(ngrid,nlayer,pplev,pu,pv,pt,zzlev,zdqvolc,nq,massarea,& 1490 zday,ptimestep) 1491 pdq(1:ngrid,1:nlayer,1:nq) = pdq(1:ngrid,1:nlayer,1:nq) + & 1492 zdqvolc(1:ngrid,1:nlayer,1:nq) 1493 endif 1494 1483 1495 ! --------------------- 1484 1496 ! VI.1. Water and ice -
trunk/LMDZ.GENERIC/libf/phystd/tracer_h.F90
r3101 r3299 115 115 !$OMP igcm_c2h3,igcm_c2h4,igcm_c2h6,igcm_ch2co,igcm_ch3co,igcm_hcaer) 116 116 117 contains 118 119 ! some basic auxiliary functions for tracers 120 121 logical function is_known_tracer(tracer_name) 122 ! checks if tracer_name is a know tracer 123 ! returns .true. if yes and .false. otherwise 124 implicit none 125 character(len=*),intent(in) :: tracer_name 126 integer :: iq 127 ! initialization 128 is_known_tracer=.false. 129 do iq=1,nqtot 130 if( trim(tracer_name) == trim(noms(iq)) ) then 131 is_known_tracer=.true. 132 exit 133 endif 134 enddo 135 end function is_known_tracer 136 137 integer function tracer_index(tracer_name) 138 ! gets the index of the tracer tracer_name 139 ! returns index or 0 if unknown tracer 140 implicit none 141 character(len=*),intent(in) :: tracer_name 142 integer :: iq 143 ! initialization 144 tracer_index=0 145 do iq=1,nqtot 146 if( trim(tracer_name) == trim(noms(iq)) ) then 147 tracer_index=iq 148 exit 149 endif 150 enddo 151 end function tracer_index 152 117 153 end module tracer_h 118 154
Note: See TracChangeset
for help on using the changeset viewer.