Changeset 2785 for trunk/LMDZ.GENERIC
- Timestamp:
- Aug 3, 2022, 5:07:41 PM (2 years ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/README
r2784 r2785 1729 1729 - remove top level obsolete "patch_large_domains" directory 1730 1730 - remove unused "watercaptag" field in the physics. 1731 1732 == 03/08/2022 == LT + EM 1733 Further seperation between dynamics and physics concerning tracers: 1734 Tracer names are extracted from traceur.def via initracer.F90 and no 1735 longer transfered from the dynamics to the physics -
trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phystd/callphysiq_mod.F90
r1576 r2785 70 70 llm, & ! nlayer 71 71 nqtot, & ! nq 72 tname, & ! nametrac73 72 debut_split, & ! firstcall 74 73 lafin_split, & ! lastcall -
trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phystd/newstart.F
r2354 r2785 285 285 ! Initialize global tracer indexes (stored in tracer.h) 286 286 ! ... this has to be done before phyetat0 287 call initracer(ngridmx,nqtot,tname) 287 ! and requires that "datadir" be correctly initialized 288 call getin_p("datadir",datadir) 289 call initracer(ngridmx,nqtot) 288 290 289 291 ! Initialize dimphy module (klon,klev,..) -
trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phystd/start2archive.F
r2354 r2785 236 236 237 237 ! Initialize tracer names, indexes and properties 238 CALL initracer(ngridmx,nqtot ,tname)238 CALL initracer(ngridmx,nqtot) 239 239 240 240 CALL phyetat0(.true.,ngridmx,llm,fichnom,0,Lmodif,nsoilmx,nqtot, -
trunk/LMDZ.GENERIC/libf/phystd/dyn1d/kcm1d.F90
r2635 r2785 210 210 endif 211 211 212 call initracer(1,nq ,nametrac)212 call initracer(1,nq) 213 213 214 214 endif -
trunk/LMDZ.GENERIC/libf/phystd/dyn1d/rcm1d.F
r2784 r2785 693 693 & form="formatted",iostat=ierr) 694 694 if (ierr .eq. 0) then 695 read(91,*) ,qsurf(iq)695 read(91,*)qsurf(iq) 696 696 do ilayer=1,nlayer 697 697 read(91,*)q(ilayer,iq) … … 929 929 #ifndef MESOSCALE 930 930 if(tracer.and.photochem) then 931 call initracer(1,nq ,tname)931 call initracer(1,nq) 932 932 allocate(nametmp(nq)) 933 933 nametmp(1:nq)=tname(1:nq) … … 1005 1005 1006 1006 CALL physiq (1,llm,nq, 1007 . tname,1008 1007 , firstcall,lastcall, 1009 1008 , day,time,dtphys, -
trunk/LMDZ.GENERIC/libf/phystd/initracer.F90
r2784 r2785 1 SUBROUTINE initracer(ngrid,nq ,nametrac)1 SUBROUTINE initracer(ngrid,nq) 2 2 3 3 use surfdat_h, ONLY: dryness … … 24 24 ! Ehouarn Millour (oct. 2008) identify tracers by their names 25 25 ! Y Jaziri & J. Vatant d'Ollone (2020) : Modern traceur.def 26 ! L Teinturier (2022): Tracer names are now read here instead of 27 ! inside interfaces 26 28 !======================================================================= 27 29 28 30 integer,intent(in) :: ngrid,nq 29 character(len=30),intent(in) :: nametrac(nq) ! name of the tracer from dynamics30 31 31 32 character(len=500) :: tracline ! to read traceur.def lines 32 33 ! character(len=30) :: txt ! to store some text 34 integer :: blank !to store the index of 1st blank when reading tracers names 33 35 integer iq,ig,count,ierr 34 36 … … 158 160 159 161 160 ! Initialization: copy tracer names from dynamics 161 do iq=1,nq 162 noms(iq)=nametrac(iq) 163 write(*,*)"initracer: iq=",iq,"noms(iq)=",trim(noms(iq)) 162 ! Initialization: Read tracers names from traceur.def 163 do iq=1,nq 164 if (is_master) read(407,'(A)') tracline 165 call bcast(tracline) 166 blank = index(tracline,' ') ! Find position of 1st blank in tracline 167 noms(iq) = tracline(1:blank) !ensure that in Modern-trac case, noms is actually the name and not all properties 164 168 enddo 165 166 169 167 170 ! Identify tracers by their names: (and set corresponding values of mmol) … … 442 445 endif 443 446 444 ! Get data of tracers 447 ! Get data of tracers. Need to rewind traceur.def first 448 if (is_master) then 449 rewind(407) 450 do 451 read(407,'(A)') tracline 452 if (index(tracline,"#") .ne. 1) then 453 exit 454 endif 455 enddo 456 endif 445 457 do iq=1,nqtot 446 458 if (is_master) read(407,'(A)') tracline -
trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90
r2784 r2785 6 6 7 7 subroutine physiq(ngrid,nlayer,nq, & 8 nametrac, &9 8 firstcall,lastcall, & 10 9 pday,ptime,ptimestep, & … … 151 150 ! nlayer Number of vertical layers. 152 151 ! nq Number of advected fields. 153 ! nametrac Name of corresponding advected fields.154 152 ! 155 153 ! firstcall True at the first call. … … 221 219 integer,intent(in) :: nlayer ! Number of atmospheric layers. 222 220 integer,intent(in) :: nq ! Number of tracers. 223 character*30,intent(in) :: nametrac(nq) ! Names of the tracers taken from dynamics.224 221 225 222 logical,intent(in) :: firstcall ! Signals first call to physics. … … 508 505 IF (.NOT.ALLOCATED(noms)) ALLOCATE(noms(nq)) ! (because noms is an argument of physdem1 whether or not tracer is on) 509 506 if (tracer) then 510 call initracer(ngrid,nq ,nametrac)507 call initracer(ngrid,nq) 511 508 if(photochem) then 512 509 call ini_conc_mod(ngrid,nlayer) -
trunk/LMDZ.GENERIC/libf/phystd/tracer_h.F90
r2725 r2785 7 7 integer, save :: nesp ! number of species in the chemistry 8 8 integer, save :: ngt ! number of generic tracers 9 !$OMP THREADPRIVATE(nqtot,nesp )9 !$OMP THREADPRIVATE(nqtot,nesp,ngt) 10 10 11 11 logical :: moderntracdef=.false. ! Standard or modern traceur.def … … 41 41 !$OMP THREADPRIVATE(is_recomb,is_recomb_qset,is_recomb_qotf) 42 42 integer, save, allocatable :: is_condensable(:) ! 1 if tracer is generic, else 0 (added LT) 43 !$OMP THREADPRIVATE(is_condensable) !also added by LT 43 44 44 45 ! Lists of constants for condensable tracers … … 50 51 integer, save, allocatable :: constants_RLVTT_generic(:) ! Latent heat of vaporization (J/kg) 51 52 integer, save, allocatable :: constants_metallicity_coeff(:) ! Coefficient to take into account the metallicity 53 !$OMP THREADPRIVATE(constants_mass,constants_delta_vapH,constants_Tref) 54 !$OMP THREADPRIVATE(constants_Pref,constants_epsi_generic) 55 !$OMP THREADPRIVATE(constants_RLVTT_generic,constants_metallicity_coeff) 52 56 53 !$OMP THREADPRIVATE(is_condensable) !also added by LT54 57 ! tracer indexes: these are initialized in initracer and should be 0 if the 55 58 ! corresponding tracer does not exist
Note: See TracChangeset
for help on using the changeset viewer.