Changeset 6b22af9 in flexpart.git
- Timestamp:
- Nov 20, 2015, 5:41:29 PM (8 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- a1f4dd6
- Parents:
- df967a99
- Files:
-
- 2 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
options/COMMAND
r5f42c27 r6b22af9 1 1 &COMMAND 2 2 LDIRECT= 1, 3 IBDATE= 20 140911,3 IBDATE= 20070911, 4 4 IBTIME= 050000, 5 IEDATE= 20 140911,6 IETIME= 230000,5 IEDATE= 20070912, 6 IETIME= 050000, 7 7 LOUTSTEP= 3600, 8 8 LOUTAVER= 3600, -
options/COMMAND.reference
rf9ce123 r6b22af9 106 106 SURF_ONLY IF THIS IS SET TO 1, OUTPUT IS WRITTEN ONLY OUT FOR LOWEST LAYER 107 107 108 26. _ 4X, I1109 0110 CBLFLAG IF THIS IS SET TO 1, USES NEW CONVECTIVE PBL ROUTINES111 112 108 113 109 1. Simulation direction, 1 for forward, -1 for backward in time … … 202 198 but initial conditions are needed on a full 3-D grid 203 199 204 26. CBLFLAG: When set to 1, a skewed rather than Gaussian turbulence in the205 convective PBL is used. If selected, this option requires shorter time206 steps (typically values of CTL= 10 and IFINE= 10), and is therefore more207 computationally demanding. -
options/OUTGRID_NEST
r5f9d14a r6b22af9 7 7 8 8 1. ------.---- 4X,F11.4 9 - 85.0000 GEOGRAFICAL LONGITUDE OF LOWER LEFT CORNER OF OUTPUT GRID9 -74.0000 GEOGRAFICAL LONGITUDE OF LOWER LEFT CORNER OF OUTPUT GRID 10 10 OUTLONLEFT (left boundary of the first grid cell - not its centre) 11 11 12 12 2. ------.---- 4X,F11.4 13 3 0.0000 GEOGRAFICAL LATITUDE OF LOWER LEFT CORNER OF OUTPUT GRID13 37.0000 GEOGRAFICAL LATITUDE OF LOWER LEFT CORNER OF OUTPUT GRID 14 14 OUTLATLOWER (lower boundary of the first grid cell - not its centre) 15 15 16 16 3. ----- 4X,I5 17 220 NUMBER OF GRID POINTS IN X DIRECTION (= No. of cells + 1)17 1000 NUMBER OF GRID POINTS IN X DIRECTION (= No. of cells + 1) 18 18 NUMXGRID 19 19 20 20 4. ----- 4X,I5 21 120 NUMBER OF GRID POINTS IN Y DIRECTION (= No. of cells + 1)21 200 NUMBER OF GRID POINTS IN Y DIRECTION (= No. of cells + 1) 22 22 NUMYGRID 23 23 24 24 5. ------.----- 4X,F12.5 25 0. 25000 GRID DISTANCE IN X DIRECTION25 0.01000 GRID DISTANCE IN X DIRECTION 26 26 DXOUTLON 27 27 28 28 6. ------.----- 4X,F12.5 29 0. 25000 GRID DISTANCE IN Y DIRECTION29 0.01000 GRID DISTANCE IN Y DIRECTION 30 30 DYOUTLAT -
options/RELEASES
r5f9d14a r6b22af9 4 4 / 5 5 &RELEASE 6 IDATE1= 20 140911,6 IDATE1= 20070911, 7 7 ITIME1= 070000, 8 IDATE2= 20 140911,8 IDATE2= 20070911, 9 9 ITIME2= 080000, 10 LON1= -75.250 , 11 LON2= -75.250 , 12 LAT1= 38.000 , 13 LAT2= 38.000 , 14 Z1= 1500.000000 , 15 Z2= 3000.000000 , 10 LON1= -75.255 , 11 LON2= -75.255 , 12 LAT1= 38.005 , 13 LAT2= 38.005 , 14 ! Z1= 1500.000000 , 15 ! Z2= 2500.000000 , 16 Z1= 2500.000000 , 17 Z2= 2500.000000 , 16 18 ZKIND= 1, 17 19 MASS= 2.0000E8 , 18 PARTS= 200000020 PARTS= 10000000 19 21 COMMENT="TEST1 ", 20 22 / 21 &RELEASE 22 IDATE1= 20140911, 23 ITIME1= 070000, 24 IDATE2= 20140911, 25 ITIME2= 080000, 26 LON1= -79.250 , 27 LON2= -79.250 , 28 LAT1= 38.100 , 29 LAT2= 38.100 , 30 Z1= 100.000000 , 31 Z2= 1000.000000 , 32 ZKIND= 1, 33 MASS= 2.0000E8 , 34 PARTS= 2000000 35 COMMENT="TEST2 ", 36 / 23 ! &RELEASE 24 ! IDATE1= 20100911, 25 ! ITIME1= 070000, 26 ! IDATE2= 20100911, 27 ! ITIME2= 080000, 28 ! LON1= -79.250 , 29 ! LON2= -79.250 , 30 ! LAT1= 38.100 , 31 ! LAT2= 38.100 , 32 ! Z1= 1500.000000 , 33 ! Z2= 2500.000000 , 34 ! ZKIND= 1, 35 ! MASS= 2.0000E8 , 36 ! PARTS= 2000000 37 ! COMMENT="TEST2 ", 38 ! / 39 40 41 42 43 44 -
options/SPECIES/SPECIES_108
r0f20c31 r6b22af9 11 11 0.9 In-cloud scavenging - Ai 12 12 0.1 In-cloud scavenging - Bi 13 -9.9Dry deposition (gases) - D14 15 16 1.9E+03 Dry deposition (particles) - rho17 4.0E-07 Dry deposition (particles) - dquer18 3.0E-01 Dry deposition (particles) - dsig13 2.0 Dry deposition (gases) - D 14 1.0E+05 Dry deposition (gases) - Henrys const. 15 0.0 Dry deposition (gases) - f0 (reactivity) 16 -1.9E+03 Dry deposition (particles) - rho 17 -4.0E-07 Dry deposition (particles) - dquer 18 -3.0E-01 Dry deposition (particles) - dsig 19 19 -9.99 Alternative: dry deposition velocity 20 20 64.00 molweight 21 1.35E-14 OH Reaction rate - C [cm^3/molecule/sec]21 -1.35E-14 OH Reaction rate - C [cm^3/molecule/sec] 22 22 120.0 OH Reaction rate - D [K] 23 23 2.0 OH Reaction rate - N (no unit) -
src/com_mod.f90
r43225d1 r6b22af9 732 732 integer :: count_clock, count_clock0, count_rate, count_max 733 733 real :: tins 734 logical, parameter :: nmlout=. false.734 logical, parameter :: nmlout=.true. 735 735 736 736 ! These variables are used to avoid having separate versions of -
src/concoutput.f90
rb069789 r6b22af9 118 118 ! This fixes a bug where the dates file kept growing across multiple runs 119 119 120 ! If 'dates' file exists , make a backup120 ! If 'dates' file exists in output directory, make a backup 121 121 inquire(file=path(2)(1:length(2))//'dates', exist=ldates_file) 122 122 if (ldates_file.and.init) then … … 129 129 if (ierr.ne.0) exit 130 130 write(unit=unittmp, fmt='(a)', iostat=ierr, advance='yes') trim(dates_char) 131 ! if (ierr.ne.0) write(*,*) "Write error, ", ierr132 131 end do 133 132 close(unit=unitdates) -
src/makefile
radf46ae r6b22af9 39 39 40 40 ifeq ($(gcc), 4.9) 41 # Compiled libraries under user user ~flexpart, gfortran v4.941 # Compiled libraries under users ~flexpart (or ~espen), gfortran v4.9 42 42 ROOT_DIR = /homevip/flexpart/ 43 43 # ROOT_DIR = /homevip/espen/ … … 70 70 LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff -llapack # -fopenmp # -llapack 71 71 72 FFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV) -mtune=native$(FUSER) # -march=native72 FFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV) $(FUSER) # -march=native 73 73 74 74 DBGFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV_DBG) -g3 -ggdb3 -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV_DBG) -fbacktrace -Warray-bounds -Wall -fcheck=all $(FUSER) # -ffpe-trap=invalid,overflow,denormal,underflow,zero -fdump-core … … 420 420 timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o oh_mod.o outg_mod.o \ 421 421 par_mod.o point_mod.o unc_mod.o xmass_mod.o 422 verttransform.o: cmapf_mod.o com_mod.o par_mod.o 422 verttransform.o: cmapf_mod.o com_mod.o par_mod.o 423 423 verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o 424 424 verttransform_nests.o: com_mod.o par_mod.o -
src/mpi_mod.f90
rf55fdce r6b22af9 105 105 ! If setting this to .false., numwfmem must be set to 3 106 106 !=============================================================================== 107 logical :: lmp_sync=. true.107 logical :: lmp_sync=.false. 108 108 !=============================================================================== 109 109 … … 119 119 logical, parameter :: mp_dbg_out = .false. 120 120 logical, parameter :: mp_time_barrier=.true. 121 logical, parameter :: mp_measure_time=. false.121 logical, parameter :: mp_measure_time=.true. 122 122 logical, parameter :: mp_exact_numpart=.true. 123 123 … … 214 214 lmp_sync=.true. ! :DBG: eso fix this... 215 215 end if 216 ! TODO: Add warnings for unimplemented flexpart features 216 217 ! TODO: Add more warnings for unimplemented flexpart features 217 218 218 219 ! Set ID of process that calls getfield/readwind. … … 434 435 ! Distribute particle variables from pid0 to all processes. 435 436 ! Called from timemanager 436 ! 437 ! *NOT IN USE* at the moment, but can be useful for debugging 437 438 ! 438 439 !*********************************************************************** … … 588 589 ! concentrations/writing output grids. * 589 590 ! * 590 ! Currently not in use, as each process calculates concentrations*591 ! separately .*591 ! Currently *not in use*, as each process calculates concentrations * 592 ! separately, but can be useful for debugging * 592 593 ! * 593 594 ! To use this routine (together with mpif_tm_send_vars) to transfer data * … … 595 596 ! (in timemanager_mpi.f90) * 596 597 ! * 597 ! if (lroot) tot_numpart=numpart ! root stores total numpart *598 ! if (lroot) tot_numpart=numpart ! root stores total numpart * 598 599 ! call mpif_tm_send_dims * 599 600 ! if (numpart>1) then * … … 605 606 ! * 606 607 ! if (numpart>0) then * 607 ! if (lroot) numpart = tot_numpart *608 ! if (lroot) numpart = tot_numpart * 608 609 ! call mpif_tm_collect_vars * 609 610 ! end if * 610 611 ! * 611 ! Then a section that begins with "if (lroot) ..." will behave like*612 ! serial flexpart*612 ! Then a section that begins with "if (lroot) ..." will behave like * 613 ! serial flexpart * 613 614 ! * 614 615 !******************************************************************************* … … 2066 2067 2067 2068 2069 subroutine set_fields_synthetic() 2070 !******************************************************************************* 2071 ! DESCRIPTION 2072 ! Set all meteorological fields to synthetic (usually constant/homogeneous) 2073 ! values. 2074 ! Used for validation and error-checking 2075 ! 2076 ! NOTE 2077 ! This version uses asynchronious communications. 2078 ! 2079 ! VARIABLES 2080 ! 2081 ! 2082 ! TODO 2083 ! 2084 !******************************************************************************* 2085 use com_mod 2086 2087 implicit none 2088 2089 integer, parameter :: li=1, ui=3 ! wfmem indices (i.e, operate on entire field) 2090 2091 2092 ! Variables transferred at initialization only 2093 !********************************************* 2094 ! readclouds=readclouds_ 2095 oro(:,:)=0.0 2096 excessoro(:,:)=0.0 2097 lsm(:,:)=0.0 2098 xlanduse(:,:,:)=0.0 2099 ! wftime 2100 ! numbwf 2101 ! nmixz 2102 ! height 2103 2104 ! Time-varying fields: 2105 uu(:,:,:,li:ui) = 10.0 2106 vv(:,:,:,li:ui) = 0.0 2107 uupol(:,:,:,li:ui) = 10.0 ! TODO check if ok 2108 vvpol(:,:,:,li:ui)=0.0 2109 ww(:,:,:,li:ui)=0. 2110 tt(:,:,:,li:ui)=300. 2111 rho(:,:,:,li:ui)=1.3 2112 drhodz(:,:,:,li:ui)=.0 2113 tth(:,:,:,li:ui)=0.0 2114 qvh(:,:,:,li:ui)=1.0 2115 qv(:,:,:,li:ui)=1.0 2116 2117 pv(:,:,:,li:ui)=1.0 2118 clouds(:,:,:,li:ui)=0.0 2119 2120 clwc(:,:,:,li:ui)=0.0 2121 ciwc(:,:,:,li:ui)=0.0 2122 2123 ! 2D fields 2124 2125 cloudsh(:,:,li:ui)=0.0 2126 vdep(:,:,:,li:ui)=0.0 2127 ps(:,:,:,li:ui)=1.0e5 2128 sd(:,:,:,li:ui)=0.0 2129 tcc(:,:,:,li:ui)=0.0 2130 tt2(:,:,:,li:ui)=300. 2131 td2(:,:,:,li:ui)=250. 2132 lsprec(:,:,:,li:ui)=0.0 2133 convprec(:,:,:,li:ui)=0.0 2134 ustar(:,:,:,li:ui)=1.0 2135 wstar(:,:,:,li:ui)=1.0 2136 hmix(:,:,:,li:ui)=10000. 2137 tropopause(:,:,:,li:ui)=10000. 2138 oli(:,:,:,li:ui)=0.01 2139 z0=1.0 2140 2141 end subroutine set_fields_synthetic 2142 2068 2143 end module mpi_mod -
src/outgrid_init.f90
r8a65cb0 r6b22af9 205 205 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc' 206 206 if (ldirect.gt.0) then 207 allocate(wetgridunc(0:numxgrid-1,0:numygrid-1,maxspec, &207 allocate(wetgridunc(0:numxgrid-1,0:numygrid-1,maxspec, & 208 208 maxpointspec_act,nclassunc,maxageclass),stat=stat) 209 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc'209 if (stat.ne.0) write(*,*)'ERROR: could not allocate wetgridunc' 210 210 allocate(drygridunc(0:numxgrid-1,0:numygrid-1,maxspec, & 211 211 maxpointspec_act,nclassunc,maxageclass),stat=stat) 212 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc'212 if (stat.ne.0) write(*,*)'ERROR: could not allocate drygridunc' 213 213 endif 214 214 -
src/par_mod.f90
radf46ae r6b22af9 210 210 !************************************************** 211 211 212 integer,parameter :: maxpart= 60000000212 integer,parameter :: maxpart=40000000 213 213 ! integer,parameter :: maxpart=60000000 214 214 ! integer,parameter :: maxpart=120000000 215 integer,parameter :: maxspec= 6215 integer,parameter :: maxspec=1 216 216 217 217 ! maxpart Maximum number of particles … … 226 226 ! --------- 227 227 integer,parameter :: maxwf=50000, maxtable=1000, numclass=13, ni=11 228 integer,parameter :: numwfmem=2 ! Serial version/MPI with 2 fields229 !integer,parameter :: numwfmem=3 ! MPI with 3 fields228 !integer,parameter :: numwfmem=2 ! Serial version/MPI with 2 fields 229 integer,parameter :: numwfmem=3 ! MPI with 3 fields 230 230 231 231 ! maxwf maximum number of wind fields to be used for simulation … … 254 254 !********************************* 255 255 256 integer,parameter :: maxrand=120000000 257 ! integer,parameter :: maxrand=2000000 258 ! integer,parameter :: maxrand=20 259 256 ! integer,parameter :: maxrand=120000000 257 integer,parameter :: maxrand=200000000 258 ! 260 259 ! maxrand number of random numbers used 261 260 -
src/pathnames
r5f9d14a r6b22af9 1 1 ../options/ 2 ../out put/2 ../out_clwc_leo/ 3 3 / 4 /xnilu_wrk/flex_wrk/ WIND_FIELDS/AVAILABLE_ECMWF_OPER_fields_global4 /xnilu_wrk/flex_wrk/zhg/ECMWF_CLWC/Availables 5 5 ============================================ 6 6 7 ../options_nikos_backwards/ 8 /xnilu_wrk/flex_wrk/WIND_FIELDS/AVAILABLE_ECMWF_OPER_fields_global 9 /xnilu_wrk/flex_wrk/WIND_FIELDS/NCEP/2010_data_05/AVAILABLE 10 11 12 -
src/timemanager_mpi.f90
rf55fdce r6b22af9 218 218 call mpif_gf_send_vars(memstat) 219 219 call mpif_gf_send_vars_nest(memstat) 220 ! Version 2 (lmp_sync=.false. ) is also used whenever 2 new fields are read (in which221 ! case async send/recv is impossible.220 ! Version 2 (lmp_sync=.false., see below) is also used whenever 2 new fields are 221 ! read (as at first time step), in which case async send/recv is impossible. 222 222 else if (.not.lmp_sync.and.lmp_use_reader.and.memstat.ge.32) then 223 223 call mpif_gf_send_vars(memstat) … … 233 233 ! READER PROCESS: 234 234 if (memstat.gt.0..and.memstat.lt.32.and.lmp_use_reader.and.lmpreader) then 235 if (mp_dev_mode) write(*,*) 'Reader process: calling mpif_gf_send_vars_async' 235 236 call mpif_gf_send_vars_async(memstat) 236 237 end if … … 249 250 ! at next time step. Issue receive request anyway, cancel at mpif_gf_request 250 251 if (memstat.gt.0.and.lmp_use_reader.and..not.lmpreader) then 252 if (mp_dev_mode) write(*,*) 'Receiving process: calling mpif_gf_send_vars_async. PID: ', mp_pid 251 253 call mpif_gf_recv_vars_async(memstat) 252 254 end if … … 256 258 if (mp_measure_time.and..not.(lmpreader.and.lmp_use_reader)) call mpif_mtime('getfields',1) 257 259 260 ! For validation and tests: call the function below to set all fields to simple 261 ! homogeneous values 262 if (mp_dev_mode) call set_fields_synthetic 258 263 259 264 !*******************************************************************************
Note: See TracChangeset
for help on using the changeset viewer.