Changes in src/makefile [d1a8707:d8eed02] in flexpart.git
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/makefile
rd1a8707 rd8eed02 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) … … 61 70 62 71 72 # path to gributils used to detect meteodata format 73 VPATH = gributils/ 74 75 63 76 ## OPTIMIZATION LEVEL 64 77 O_LEV = 2 # [0,1,2,3,g,s,fast] … … 68 81 LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff # -fopenmp 69 82 70 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) #-Warray-bounds -fcheck=all # -march=native71 72 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 -Wall -fdump-core $(FUSER) # -ffpe-trap=invalid,overflow,denormal,underflow,zero -Warray-bounds -fcheck=all73 74 LDFLAGS = $(FFLAGS) -L$(LIBPATH1) $(LIBS) #-L$(LIBPATH2)83 FFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -cpp -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV) $(FUSER) #-Warray-bounds -fcheck=all # -march=native 84 85 DBGFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV_DBG) -g3 -ggdb3 -cpp -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV_DBG) -fbacktrace -Wall -fdump-core $(FUSER) # -ffpe-trap=invalid,overflow,denormal,underflow,zero -Warray-bounds -fcheck=all 86 87 LDFLAGS = $(FFLAGS) -L$(LIBPATH1) -Wl,-rpath,$(LIBPATH1) $(LIBS) #-L$(LIBPATH2) 75 88 LDDEBUG = $(DBGFLAGS) -L$(LIBPATH1) $(LIBS) #-L$(LIBPATH2) 76 89 … … 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 = \ … … 154 143 ew.o readreleases.o \ 155 144 readdepo.o get_vdep_prob.o \ 156 get_wetscav.o \145 get_wetscav.o readwind_gfs.o \ 157 146 psim.o outgrid_init.o \ 158 outgrid_init_nest.o \147 outgrid_init_nest.o calcmatrix.o \ 159 148 photo_O1D.o readlanduse.o \ 160 149 interpol_wind.o readoutgrid.o \ 161 150 interpol_all.o readpaths.o \ 162 getrb.o \163 getrc.o \151 getrb.o obukhov.o \ 152 getrc.o convmix.o \ 164 153 getvdep.o readspecies.o \ 165 interpol_misslev.o \166 scalev.o \167 pbl_profile.o readOHfield.o \168 juldate.o \154 interpol_misslev.o richardson.o \ 155 scalev.o verttransform_ecmwf.o \ 156 pbl_profile.o readOHfield.o \ 157 juldate.o verttransform_gfs.o \ 169 158 interpol_vdep.o interpol_rain.o \ 170 159 hanna.o wetdepokernel.o \ 171 160 calcpar.o wetdepo.o \ 172 161 hanna_short.o windalign.o \ 173 hanna1.o 174 162 hanna1.o gridcheck_ecmwf.o \ 163 gridcheck_gfs.o gridcheck_nests.o \ 175 164 readwind_nests.o calcpar_nests.o \ 176 165 verttransform_nests.o interpol_all_nests.o \ 177 166 interpol_wind_nests.o interpol_misslev_nests.o \ 178 167 interpol_vdep_nests.o interpol_rain_nests.o \ 179 readageclasses.o \168 readageclasses.o detectformat.o \ 180 169 calcfluxes.o fluxoutput.o \ 181 170 qvsat.o skplin.o \ … … 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 … … 366 319 mpi_mod.o: com_mod.o par_mod.o unc_mod.o 367 320 netcdf_output_mod.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o 368 obukhov.o: par_mod.o 369 obukhov_gfs.o: par_mod.o 321 obukhov.o: par_mod.o class_gribfile_mod.o 370 322 ohreaction.o: com_mod.o oh_mod.o par_mod.o 371 323 openouttraj.o: com_mod.o par_mod.o point_mod.o … … 374 326 outgrid_init.o: com_mod.o flux_mod.o oh_mod.o outg_mod.o par_mod.o unc_mod.o 375 327 outgrid_init_nest.o: com_mod.o outg_mod.o par_mod.o unc_mod.o 376 par_mod.o : $(wind_mod)377 328 part0.o: par_mod.o 378 329 partdep.o: par_mod.o … … 402 353 readreleases.o: com_mod.o par_mod.o point_mod.o xmass_mod.o 403 354 readspecies.o: com_mod.o par_mod.o 404 readwind .o: com_mod.o par_mod.o355 readwind_ecmwf.o: com_mod.o par_mod.o 405 356 readwind_emos.o: com_mod.o par_mod.o 406 357 readwind_gfs.o: com_mod.o par_mod.o 407 358 readwind_gfs_emos.o: com_mod.o par_mod.o 408 readwind_ mpi.o: com_mod.o mpi_mod.o par_mod.o359 readwind_ecmwf_mpi.o: com_mod.o mpi_mod.o par_mod.o 409 360 readwind_nests.o: com_mod.o par_mod.o 410 361 readwind_nests_emos.o: com_mod.o par_mod.o … … 415 366 releaseparticles_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \ 416 367 random_mod.o xmass_mod.o 417 richardson.o: par_mod.o 418 richardson_gfs.o: par_mod.o 368 richardson.o: par_mod.o class_gribfile_mod.o 419 369 scalev.o: par_mod.o 420 370 shift_field.o: par_mod.o … … 423 373 par_mod.o point_mod.o unc_mod.o xmass_mod.o 424 374 timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o oh_mod.o outg_mod.o \ 425 par_mod.o point_mod.o unc_mod.o xmass_mod.o 375 par_mod.o point_mod.o unc_mod.o xmass_mod.o netcdf_output_mod.o 426 376 unc_mod.o: par_mod.o 427 verttransform .o: cmapf_mod.o com_mod.o par_mod.o377 verttransform_ecmwf.o: cmapf_mod.o com_mod.o par_mod.o 428 378 verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o 429 379 verttransform_nests.o: com_mod.o par_mod.o
Note: See TracChangeset
for help on using the changeset viewer.