- 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
- Location:
- src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
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.