Changeset 61e07ba in flexpart.git
- Timestamp:
- Aug 11, 2017, 12:01:12 PM (7 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- 6ecb30a
- Parents:
- b5127f9
- Location:
- src
- Files:
-
- 9 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/makefile
r6985a98 r61e07ba 12 12 # 'make -j ecmwf gcc=4.9', 13 13 # also set environment variable LD_LIBRARY_PATH to point to compiler libraries 14 # 15 # Makefile was modified to produce unified executable for both ECMWF and GFS meteo data formats 16 # gributils were included to detect format of meteo data 17 # 18 # Cpp directives USE_MPIINPLACE were added to three source files. The effect of these directives 19 # are to enable the MPI_IN_PLACE option only if compiled with a -DUSE_MPIINPLACE directive. 20 # Otherwise, a safer option (which requires the allocation of another array) is used by default. 21 # In makefile added the -x f95-cpp-input flag for compiling of cpp directives. 14 22 # 15 23 # USAGE 16 # Compile serial FLEXPART (ECMWF)17 # make [-j] ecmwf18 # 19 # Compile parallel FLEXPART (ECMWF)20 # make [-j] ecmwf-mpi24 # Compile serial FLEXPART 25 # make [-j] serial 26 # 27 # Compile parallel FLEXPART 28 # make [-j] mpi 21 29 # 22 # Compile for debugging parallel FLEXPART (ECMWF) 23 # make [-j] ecmwf-mpi-dbg 24 # 25 # Compile serial FLEXPART (GFS) 26 # make [-j] gfs 27 # 28 # Compile parallel FLEXPART (GFS) 29 # make [-j] gfs-mpi 30 # Compile for debugging parallel FLEXPART 31 # make [-j] mpi-dbg 30 32 # 31 33 ################################################################################ 32 34 33 35 ## PROGRAMS 34 FLEXPART-ECMWF-MPI = FP_ecmwf_MPI 35 FLEXPART-ECMWF-MPI-DBG = DBG_FP_ecmwf_MPI 36 FLEXPART-ECMWF = FP_ecmwf_gfortran 37 FLEXPART-GFS = FP_gfs_gfortran 38 FLEXPART-GFS-MPI = FP_gfs_MPI 36 # Unified executable names 37 # The same executable is used for both ECMWF and GFS metdata 38 39 # Parallel processing executable 40 FLEXPART-MPI = FLEXPART_MPI 41 42 # Parallel processing executable with debugging info 43 FLEXPART-MPI-DBG = DBG_FLEXPART_MPI 44 45 # Serial processing executable 46 FLEXPART-SERIAL = FLEXPART 47 39 48 40 49 ifeq ($(gcc), 4.9) … … 59 68 LIBPATH1 = /xnilu_wrk/flex_wrk/bin64/grib_api/lib 60 69 endif 70 71 72 # path to gributils used to detect meteodata format 73 VPATH = gributils/ 61 74 62 75 … … 82 95 xmass_mod.o flux_mod.o \ 83 96 point_mod.o outg_mod.o \ 84 mean_mod.o random_mod.o 97 mean_mod.o random_mod.o \ 98 class_gribfile_mod.o 85 99 86 100 MPI_MODOBJS = \ … … 99 113 redist.o \ 100 114 concoutput_surf.o concoutput_surf_nest.o \ 101 getfields.o 115 getfields.o \ 116 readwind_ecmwf.o 102 117 103 118 ## For MPI version … … 112 127 redist_mpi.o \ 113 128 concoutput_surf_mpi.o concoutput_surf_nest_mpi.o \ 114 getfields_mpi.o 115 116 ### WINDFIELDS 117 ## For ECMWF (serial) version: 118 OBJECTS_ECMWF = \ 119 calcpar.o readwind.o \ 120 richardson.o verttransform.o \ 121 obukhov.o gridcheck.o \ 122 convmix.o calcmatrix.o \ 123 ecmwf_mod.o 124 125 126 ## For ECMWF MPI version: 127 OBJECTS_ECMWF_MPI = \ 128 gridcheck.o readwind_mpi.o \ 129 calcpar.o \ 130 richardson.o verttransform.o \ 131 obukhov.o \ 132 convmix.o calcmatrix.o \ 133 ecmwf_mod.o 134 135 ## For GFS (serial) version: 136 OBJECTS_GFS = \ 137 calcpar_gfs.o readwind_gfs.o \ 138 richardson_gfs.o verttransform_gfs.o \ 139 obukhov_gfs.o gridcheck_gfs.o \ 140 convmix_gfs.o calcmatrix_gfs.o \ 141 gfs_mod.o 129 getfields_mpi.o \ 130 readwind_ecmwf_mpi.o 142 131 143 132 OBJECTS = \ … … 201 190 %.o: %.mod 202 191 203 ecmwf: $(FLEXPART-ECMWF) 204 ecmwf: FC := $(F90) 205 206 ecmwf-mpi: $(FLEXPART-ECMWF-MPI) 207 ecmwf-mpi: FC := $(MPIF90) 208 209 ecmwf-mpi-dbg: $(FLEXPART-ECMWF-MPI-DBG) 210 ecmwf-mpi-dbg: FFLAGS := $(DBGFLAGS) 211 ecmwf-mpi-dbg: LDFLAGS:= $(LDDEBUG) 212 ecmwf-mpi-dbg: FC := $(MPIF90) 213 214 gfs: $(FLEXPART-GFS) 215 gfs: FC := $(F90) 216 217 gfs-mpi: $(FLEXPART-GFS-MPI) 218 gfs-mpi: FC := $(MPIF90) 219 220 #all: $(FLEXPART-ECMWF) 221 #all: $(FLEXPART-ECMWF-MPI) 222 223 ## This allows for switching between ECMWF/GFS without editing source code. 224 wind_mod = ecmwf_mod.o # default wind 225 # ifeq ($(MAKECMDGOALS),ecmwf) 226 # wind_mod = ecmwf_mod.o 227 # endif 228 # ifeq ($(MAKECMDGOALS),ecmwf-mpi) 229 # wind_mod = ecmwf_mod.o 230 # endif 231 # ifeq ($(MAKECMDGOALS),ecmwf-mpi-dbg) 232 # wind_mod = ecmwf_mod.o 233 # endif 234 235 ifeq ($(MAKECMDGOALS),gfs) 236 wind_mod = gfs_mod.o 237 endif 238 ifeq ($(MAKECMDGOALS),gfs-mpi) 239 wind_mod = gfs_mod.o 240 endif 241 242 $(FLEXPART-ECMWF): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_ECMWF) 243 +$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_ECMWF) $(LDFLAGS) 244 245 $(FLEXPART-ECMWF-MPI): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) $(OBJECTS_ECMWF_MPI) 192 # serial executable 193 serial: $(FLEXPART-SERIAL) 194 serial: FC := $(F90) 195 196 # parallel processing executable 197 mpi: $(FLEXPART-MPI) 198 mpi: FC := $(MPIF90) 199 200 # parallel processing with debugging info 201 mpi-dbg: $(FLEXPART-MPI-DBG) 202 mpi-dbg: FFLAGS := $(DBGFLAGS) 203 mpi-dbg: LDFLAGS:= $(LDDEBUG) 204 mpi-dbg: FC := $(MPIF90) 205 206 $(FLEXPART-SERIAL): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) 207 +$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(LDFLAGS) 208 209 $(FLEXPART-MPI): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) 246 210 +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \ 247 $(OBJECTS_ECMWF_MPI) $(LDFLAGS) 248 # +$(FC) -o $@ *.o $(LDFLAGS) 249 250 $(FLEXPART-ECMWF-MPI-DBG): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \ 251 $(OBJECTS_ECMWF_MPI) 211 $(LDFLAGS) 212 213 $(FLEXPART-MPI-DBG): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) 252 214 +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \ 253 $(OBJECTS_ECMWF_MPI) $(LDFLAGS) 254 255 $(FLEXPART-GFS): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_GFS) 256 +$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(OBJECTS_GFS) $(LDFLAGS) 257 258 $(FLEXPART-GFS-MPI): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) $(OBJECTS_GFS) 259 +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \ 260 $(OBJECTS_GFS) $(LDFLAGS) 215 $(LDFLAGS) 261 216 262 217 %.o: %.f90 … … 267 222 268 223 cleanall: 269 \rm -f *.o *.mod $(FLEXPART- ECMWF-MPI) $(FLEXPART-ECMWF-MPI-DBG) $(FLEXPART-ECMWF) \270 $(FLEXPART-GFS-MPI) $(FLEXPART-GFS) 224 \rm -f *.o *.mod $(FLEXPART-MPI) $(FLEXPART-MPI-DBG) $(FLEXPART-SERIAL) 225 271 226 272 227 .SUFFIXES = $(SUFFIXES) .f90 … … 282 237 random_mod.o 283 238 calcfluxes.o: com_mod.o flux_mod.o outg_mod.o par_mod.o 284 calcmatrix.o: com_mod.o conv_mod.o par_mod.o 285 calcmatrix_gfs.o: com_mod.o conv_mod.o par_mod.o 286 calcpar.o: com_mod.o par_mod.o 287 calcpar_gfs.o: com_mod.o par_mod.o 239 calcmatrix.o: com_mod.o conv_mod.o par_mod.o class_gribfile_mod.o 240 calcpar.o: com_mod.o par_mod.o class_gribfile_mod.o 288 241 calcpar_nests.o: com_mod.o par_mod.o 289 242 calcpv.o: com_mod.o par_mod.o … … 311 264 conv_mod.o: par_mod.o 312 265 convect43c.o: conv_mod.o par_mod.o 313 convmix.o: com_mod.o conv_mod.o flux_mod.o par_mod.o 314 convmix_gfs.o: com_mod.o conv_mod.o par_mod.o 266 convmix.o: com_mod.o conv_mod.o flux_mod.o par_mod.o class_gribfile_mod.o 315 267 coordtrafo.o: com_mod.o par_mod.o point_mod.o 268 detectformat.o: com_mod.o par_mod.o class_gribfile_mod.o 316 269 distance.o: par_mod.o 317 270 distance2.o: par_mod.o … … 319 272 drydepokernel_nest.o: com_mod.o par_mod.o unc_mod.o 320 273 erf.o: par_mod.o 321 FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o netcdf_output_mod.o 274 FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o netcdf_output_mod.o class_gribfile_mod.o 322 275 FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o par_mod.o point_mod.o \ 323 random_mod.o netcdf_output_mod.o 276 random_mod.o netcdf_output_mod.o class_gribfile_mod.o 324 277 fluxoutput.o: com_mod.o flux_mod.o outg_mod.o par_mod.o 325 278 get_settling.o: com_mod.o par_mod.o 326 getfields.o: com_mod.o par_mod.o 327 getfields_mpi.o: com_mod.o par_mod.o mpi_mod.o 279 getfields.o: com_mod.o par_mod.o class_gribfile_mod.o 280 getfields_mpi.o: com_mod.o par_mod.o mpi_mod.o class_gribfile_mod.o 328 281 gethourlyOH.o: com_mod.o oh_mod.o par_mod.o 329 282 getrb.o: par_mod.o … … 331 284 getvdep.o: com_mod.o par_mod.o 332 285 getvdep_nests.o: com_mod.o par_mod.o 333 gridcheck .o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o286 gridcheck_ecmwf.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o 334 287 gridcheck_emos.o: com_mod.o conv_mod.o par_mod.o 335 288 gridcheck_fnl.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o … … 374 327 outgrid_init.o: com_mod.o flux_mod.o oh_mod.o outg_mod.o par_mod.o unc_mod.o 375 328 outgrid_init_nest.o: com_mod.o outg_mod.o par_mod.o unc_mod.o 376 par_mod.o : $(wind_mod)329 par_mod.o : 377 330 part0.o: par_mod.o 378 331 partdep.o: par_mod.o … … 402 355 readreleases.o: com_mod.o par_mod.o point_mod.o xmass_mod.o 403 356 readspecies.o: com_mod.o par_mod.o 404 readwind .o: com_mod.o par_mod.o357 readwind_ecmwf.o: com_mod.o par_mod.o 405 358 readwind_emos.o: com_mod.o par_mod.o 406 359 readwind_gfs.o: com_mod.o par_mod.o 407 360 readwind_gfs_emos.o: com_mod.o par_mod.o 408 readwind_ mpi.o: com_mod.o mpi_mod.o par_mod.o361 readwind_ecmwf_mpi.o: com_mod.o mpi_mod.o par_mod.o 409 362 readwind_nests.o: com_mod.o par_mod.o 410 363 readwind_nests_emos.o: com_mod.o par_mod.o … … 415 368 releaseparticles_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \ 416 369 random_mod.o xmass_mod.o 417 richardson.o: par_mod.o 418 richardson_gfs.o: par_mod.o 370 richardson.o: par_mod.o class_gribfile_mod.o 419 371 scalev.o: par_mod.o 420 372 shift_field.o: par_mod.o … … 425 377 par_mod.o point_mod.o unc_mod.o xmass_mod.o netcdf_output_mod.o 426 378 unc_mod.o: par_mod.o 427 verttransform .o: cmapf_mod.o com_mod.o par_mod.o379 verttransform_ecmwf.o: cmapf_mod.o com_mod.o par_mod.o 428 380 verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o 429 381 verttransform_nests.o: com_mod.o par_mod.o -
src/par_mod.f90
r6985a98 r61e07ba 37 37 38 38 module par_mod 39 40 !************************************************************************41 ! wind_mod: is gfs_mod.f90 for target gfs, ecmwf_mod.f90 for target ecmwf42 !************************************************************************43 use wind_mod44 39 45 40 implicit none … … 146 141 !********************************************* 147 142 148 ! Moved to ecmwf_mod.f90 (for ECMWF) / gfs_mod.f90 (for GFS) 143 ! integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !ECMWF new 144 integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !ECMWF new 145 146 ! INTEGER,PARAMETER :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !NCEP data 147 148 ! !integer,parameter :: nxshift=359 ! for ECMWF 149 ! integer,parameter :: nxshift=0 ! for GFS 150 ! integer,parameter :: nxmax=15,nymax=15,nuvzmax=140,nwzmax=140,nzmax=140 151 integer,parameter :: nxshift=359 ! for ECMWF 152 ! integer,parameter :: nxshift=0 ! for GFS 153 154 !********************************************* 155 ! Maximum dimensions of the nested input grids 156 !********************************************* 157 158 integer,parameter :: maxnests=0,nxmaxn=451,nymaxn=226 159 160 ! nxmax,nymax maximum dimension of wind fields in x and y 161 ! direction, respectively 162 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z 163 ! direction (for fields on eta levels) 164 ! nzmax maximum dimension of wind fields in z direction 165 ! for the transformed Cartesian coordinates 166 ! nxshift for global grids (in x), the grid can be shifted by 167 ! nxshift grid points, in order to accomodate nested 168 ! grids, and output grids overlapping the domain "boundary" 169 ! nxshift must not be negative; "normal" setting would be 0 170 149 171 150 172 integer,parameter :: nconvlevmax = nuvzmax-1
Note: See TracChangeset
for help on using the changeset viewer.