Commit 5f42c27a authored by Espen Sollum's avatar Espen Sollum
Browse files

Changed path to OH binaries

parent fb0d416b
......@@ -119,7 +119,7 @@ Performance efficency considerations
As the parallization is based on particles, it follows that if
FLEXPART-MPI is run with no (or just a few) particles, no performance
improvement is possible. In this case, most processing time is spent
in the 'getfields'-routine (ECMWF).
in the 'getfields'-routine.
A) Running without dedicated reader process
----------------------------------------
......
......@@ -11,7 +11,7 @@
LSYNCTIME= 900,
CTL= -5.0000000 ,
IFINE= 4,
IOUT= 1,
IOUT= 9,
IPOUT= 0,
LSUBGRID= 1,
LCONVECTION= 1,
......@@ -27,4 +27,5 @@
LINIT_COND= 0,
SURF_ONLY= 0,
CBLFLAG= 0,
OHFIELDS_PATH= "../../flexin/",
/
********************************************************************************
* *
* Input file for the Lagrangian particle dispersion model FLEXPART *
* Please specify your output grid *
* *
********************************************************************************
-179.0000
-90.0000
360
180
1.000
1.000
400.0
1000.0
2000.0
3000.0
5000.0
7000.0
9000.0
12000.0
15000.0
20000.0
50000.0
********************************************************************************
* *
* Input file for the Lagrangian particle dispersion model FLEXPART *
* Please specify your output grid *
* *
********************************************************************************
1. ------.---- 4X,F11.4
-179.0000 GEOGRAFICAL LONGITUDE OF LOWER LEFT CORNER OF OUTPUT GRID
OUTLONLEFT (left boundary of the first grid cell - not its centre)
2. ------.---- 4X,F11.4
-90.0000 GEOGRAFICAL LATITUDE OF LOWER LEFT CORNER OF OUTPUT GRID
OUTLATLOWER (lower boundary of the first grid cell - not its centre)
3. ----- 4X,I5
720 NUMBER OF GRID POINTS IN X DIRECTION (= No. of cells + 1)
NUMXGRID
4. ----- 4X,I5
360 NUMBER OF GRID POINTS IN Y DIRECTION (= No. of cells + 1)
NUMYGRID
5. ------.--- 4X,F10.3
0.50 GRID DISTANCE IN X DIRECTION
DXOUTLON
6. ------.--- 4X,F10.3
0.50 GRID DISTANCE IN Y DIRECTION
DYOUTLAT
10. -----.- 4X, F7.1
1000.0
LEVEL 1 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
2000.0
LEVEL 2 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
3000.0
LEVEL 3 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
4000.0
LEVEL 4 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
5000.0
LEVEL 5 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
6000.0
LEVEL 6 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
7000.0
LEVEL 7 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
8000.0
LEVEL 8 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
9000.0
LEVEL 9 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
10000.0
LEVEL10 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
11000.0
LEVEL11 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
12000.0
LEVEL12 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
13000.0
LEVEL13 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
14000.0
LEVEL14 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
15000.0
LEVEL15 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
16000.0
LEVEL16 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
17000.0
LEVEL17 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
18000.0
LEVEL18 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
19000.0
LEVEL19 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
20000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
21000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
22000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
23000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
24000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
25000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
26000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
27000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
28000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
29000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
30000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
10. -----.- 4X, F7.1
40000.0
LEVEL20 HEIGHT OF LEVEL (UPPER BOUNDARY)
......@@ -15,7 +15,7 @@
Z2= 3000.000000 ,
ZKIND= 1,
MASS= 2.0000E8 ,
PARTS= 20000000
PARTS= 2000000
COMMENT="TEST1 ",
/
&RELEASE
......@@ -31,6 +31,6 @@
Z2= 1000.000000 ,
ZKIND= 1,
MASS= 2.0000E8 ,
PARTS= 20000000
PARTS= 2000000
COMMENT="TEST2 ",
/
......@@ -2,7 +2,7 @@
* *
* Input file for the Lagrangian particle dispersion model FLEXPART *
* Definition file of chemical species/radionuclides *
* ESO: edited to work with Rona's changes+Henrik *
* This file is on the format required by version 10 (05/2015) *
****************************************************************************
SO2 Tracer name
-999.9 Species half life
......@@ -18,7 +18,7 @@ SO2 Tracer name
3.0E-01 Dry deposition (particles) - dsig
-9.99 Alternative: dry deposition velocity
64.00 molweight
-1.35E-14 OH Reaction rate - C [cm^3/molecule/sec]
1.35E-14 OH Reaction rate - C [cm^3/molecule/sec]
120.0 OH Reaction rate - D [K]
2.0 OH Reaction rate - N (no unit)
-9 number of associated specias (neg. none)
......
......@@ -68,7 +68,7 @@ program flexpart
call gasdev1(idummy,rannumb(maxrand),rannumb(maxrand-1))
! FLEXPART version string
flexversion='Version 10.0pre (2015-03-01)'
flexversion='Version 10.0beta (2015-05-01)'
verbosity=0
! Read the pathnames where input/output files are stored
......
......@@ -76,7 +76,7 @@ program flexpart
call gasdev1(idummy,rannumb(maxrand),rannumb(maxrand-1))
! FLEXPART version string
flexversion='Ver. 10.0pre MPI (2015-03-01)'
flexversion='Ver. 10 Beta MPI (2015-05-01)'
verbosity=0
! Read the pathnames where input/output files are stored
......@@ -336,7 +336,6 @@ program flexpart
!******************************************************************
if (mp_measure_time) call mpif_mtime('iotime',0)
! :DEV: was a bug here (all processes writing)?
if (lroot) then ! MPI: this part root process only
if (lnetcdfout.eq.1) then
......
......@@ -25,12 +25,14 @@ module com_mod
character :: path(numpath+2*maxnests)*120
integer :: length(numpath+2*maxnests)
character(len=256) :: pathfile, flexversion, arg1, arg2
character(len=256) :: ohfields_path
! path path names needed for trajectory model
! length length of path names needed for trajectory model
! pathfile file where pathnames are stored
! flexversion version of flexpart
! arg input arguments from launch at command line
! ohfields_path path to binary files for OH fields
!********************************************************
! Variables defining the general model run specifications
......
......@@ -35,12 +35,12 @@ FLEXPART-GFS-MPI = FP_gfs_MPI
## COMPILERS
#F90 = /usr/bin/gfortran
F90 = ${HOME}/gcc-4.9.1/bin/gfortran
F90 = /usr/bin/gfortran
#F90 = ${HOME}/gcc-4.9.1/bin/gfortran
#MPIF90 = ${HOME}/opt/bin/mpifort
#MPIF90 = mpif90.mpich
#MPIF90 = mpif90.openmpi
MPIF90 = mpifort
MPIF90 = mpif90.openmpi
#MPIF90 = mpifort
## OPTIMIZATION LEVEL
O_LEV = 2 # [0,1,2,3,g,s,fast]
......@@ -50,17 +50,16 @@ O_LEV_DBG = 0 # [0,g]
LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff # -fopenmp # -llapack -lnetcdf
## 1) System libraries at NILU
# INCPATH1 = /usr/include
# INCPATH1 = /xnilu_wrk/flex_wrk/bin64/grib_api/include
# LIBPATH1 = /xnilu_wrk/flex_wrk/bin64/grib_api/lib
# LIBPATH2 = /usr/lib/x86_64-linux-gnu
INCPATH1 = /usr/include
#INCPATH1 = /xnilu_wrk/flex_wrk/bin64/grib_api/include
LIBPATH1 = /xnilu_wrk/flex_wrk/bin64/grib_api/lib
#LIBPATH2 = /usr/lib/x86_64-linux-gnu
## 2) Home-made libraries
INCPATH1 = ${HOME}/include
# INCPATH1 = ${HOME}/include
INCPATH2 = /homevip/flexpart/include/
LIBPATH2 = /homevip/flexpart/lib/
LIBPATH1 = ${HOME}/lib
#LIBPATH2 = ${HOME}/lib
# LIBPATH1 = ${HOME}/lib
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 -fuse-linker-plugin $(FUSER) # -march=native
......@@ -190,6 +189,9 @@ cbl.o netcdf_output_mod.o
%.o: %.mod
ecmwf: $(FLEXPART-ECMWF)
ecmwf: FC := $(F90)
ecmwf-mpi: $(FLEXPART-ECMWF-MPI)
ecmwf-mpi: FC := $(MPIF90)
......@@ -198,9 +200,6 @@ ecmwf-mpi-dbg: FFLAGS := $(DBGFLAGS)
ecmwf-mpi-dbg: LDFLAGS:= $(LDDEBUG)
ecmwf-mpi-dbg: FC := $(MPIF90)
ecmwf: $(FLEXPART-ECMWF)
ecmwf: FC := $(F90)
gfs: $(FLEXPART-GFS)
gfs: FC := $(F90)
gfs-mpi: $(FLEXPART-GFS-MPI)
......@@ -209,6 +208,9 @@ gfs-mpi: FC := $(MPIF90)
#all: $(FLEXPART-ECMWF)
#all: $(FLEXPART-ECMWF-MPI)
$(FLEXPART-ECMWF): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_ECMWF)
+$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_ECMWF) $(LDFLAGS)
$(FLEXPART-ECMWF-MPI): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) $(OBJECTS_ECMWF_MPI)
+$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
$(OBJECTS_ECMWF_MPI) $(LDFLAGS)
......@@ -219,9 +221,6 @@ $(FLEXPART-ECMWF-MPI-DBG): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
+$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
$(OBJECTS_ECMWF_MPI) $(LDFLAGS)
$(FLEXPART-ECMWF): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_ECMWF)
+$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_ECMWF) $(LDFLAGS)
$(FLEXPART-GFS): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_GFS)
+$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_GFS) $(LDFLAGS)
......
......@@ -116,7 +116,7 @@ module mpi_mod
logical, parameter :: mp_dev_mode = .false.
logical, parameter :: mp_dbg_out = .false.
logical, parameter :: mp_time_barrier=.true.
logical, parameter :: mp_measure_time=.true.
logical, parameter :: mp_measure_time=.false.
! for measuring CPU/Wall time
real(sp) :: mp_comm_time_beg, mp_comm_time_end, mp_comm_time_total=0.
......@@ -138,6 +138,8 @@ module mpi_mod
real(dp) :: mp_advance_wtime_beg, mp_advance_wtime_end, mp_advance_wtime_total=0.
real(dp) :: mp_conccalc_time_beg, mp_conccalc_time_end, mp_conccalc_time_total=0.
real(dp) :: mp_total_wtime_beg, mp_total_wtime_end, mp_total_wtime_total=0.
real(dp) :: mp_vt_wtime_beg, mp_vt_wtime_end, mp_vt_wtime_total
real(sp) :: mp_vt_time_beg, mp_vt_time_end, mp_vt_time_total
! dat_lun logical unit number for i/o
integer, private :: dat_lun
......@@ -417,7 +419,6 @@ contains
end if
! redefine numpart as 'numpart per process' throughout the code
!**************************************************************
numpart = numpart_mpi
......@@ -438,10 +439,6 @@ contains
integer :: i
!***********************************************************************
! Time for MPI communications
!****************************
if (mp_measure_time) call mpif_mtime('commtime',0)
......@@ -1733,7 +1730,6 @@ contains
& mp_comm_used, mp_ierr)
end if
if ((WETDEP).and.(ldirect.gt.0)) then
call MPI_Reduce(wetgriduncn, wetgriduncn0, grid_size2d, mp_pp, MPI_SUM, id_root, &
& mp_comm_used, mp_ierr)
......@@ -1853,6 +1849,20 @@ contains
& mp_io_time_beg)
end if
case ('verttransform')
if (imode.eq.0) then
mp_vt_wtime_beg = mpi_wtime()
call cpu_time(mp_vt_time_beg)
else
mp_vt_wtime_end = mpi_wtime()
call cpu_time(mp_vt_time_end)
mp_vt_wtime_total = mp_vt_wtime_total + (mp_vt_wtime_end - &
& mp_vt_wtime_beg)
mp_vt_time_total = mp_vt_time_total + (mp_vt_time_end - &
& mp_vt_time_beg)
end if
case ('readwind')
if (imode.eq.0) then
call cpu_time(mp_readwind_time_beg)
......@@ -1955,6 +1965,10 @@ contains
& mp_wetdepo_time_total
write(*,FMT='(A60,TR1,F9.2)') 'TOTAL WALL TIME FOR CONCCALC:',&
& mp_conccalc_time_total
! write(*,FMT='(A60,TR1,F9.2)') 'TOTAL WALL TIME FOR VERTTRANSFORM:',&
! & mp_vt_wtime_total
! write(*,FMT='(A60,TR1,F9.2)') 'TOTAL CPU TIME FOR VERTTRANSFORM:',&
! & mp_vt_time_total
! NB: the 'flush' function is possibly a gfortran-specific extension
call flush()
end if
......@@ -2020,7 +2034,7 @@ contains
subroutine write_data_dbg(array_in, array_name, tstep, ident)
!***********************************************************************
! Write one-dimensional arrays to disk (for debugging purposes)
! Write one-dimensional arrays to file (for debugging purposes)
!***********************************************************************
implicit none
......
......@@ -67,7 +67,8 @@ subroutine readOHfield
! open netcdf file
write(mm,fmt='(i2.2)') m
thefile=trim(path(1))//'OH_FIELDS/'//'geos-chem.OH.2005'//mm//'01.nc'
! thefile=trim(path(1))//'OH_FIELDS/'//'geos-chem.OH.2005'//mm//'01.nc'
thefile=trim(ohfields_path)//'OH_FIELDS/'//'geos-chem.OH.2005'//mm//'01.nc'
ierr=nf_open(trim(thefile),NF_NOWRITE,nid)
if(ierr.ne.0) then
write(*,*) nf_strerror(ierr)
......@@ -161,7 +162,8 @@ subroutine readOHfield
!********************************
! open netcdf file
thefile=trim(path(1))//'OH_FIELDS/jrate_average.nc'
! thefile=trim(path(1))//'OH_FIELDS/jrate_average.nc'
thefile=trim(ohfields_path)//'OH_FIELDS/jrate_average.nc'
ierr=nf_open(trim(thefile),NF_NOWRITE,nid)
if(ierr.ne.0) then
write(*,*) nf_strerror(ierr)
......
......@@ -110,7 +110,8 @@ subroutine readcommand
linit_cond, &
lnetcdfout, &
surf_only, &
cblflag
cblflag, &
ohfields_path
! Presetting namelist command
ldirect=0
......@@ -142,6 +143,7 @@ subroutine readcommand
lnetcdfout=0
surf_only=0
cblflag=0
ohfields_path="../../flexin/"
! Open the command file and read user options
! Namelist input first: try to read as namelist file
......@@ -231,6 +233,7 @@ subroutine readcommand
read(unitcommand,*) surf_only
if (old) call skplin(3,unitcommand) !added by mc
read(unitcommand,*) cblflag !added by mc
close(unitcommand)
endif ! input format
......
......@@ -384,7 +384,7 @@ subroutine readreleases
if (ohcconst(i).gt.0.) then
OHREA=.true.
write (*,*) 'OHreaction switched on: ',ohcconst(i),i
if (lroot) write (*,*) 'OHreaction switched on: ',ohcconst(i),i
endif
if ((reldiff(i).gt.0.).or.(density(i).gt.0.).or.(dryvel(i).gt.0.)) then
......
......@@ -656,7 +656,7 @@ subroutine timemanager
if (linit_cond.ge.1) call initial_cond_output(itime) ! dump initial cond. field
close(104)
!close(104)
! De-allocate memory and end
!***************************
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment