source: flexpart.git/src/makefile @ 02095e3

10.4.1_peseiGFS_025bugfixes+enhancementsdevrelease-10release-10.4.1scaling-bugunivie
Last change on this file since 02095e3 was fe32dca, checked in by Espen Sollum ATMOS <eso@…>, 6 years ago

Renamed lnokernel, corrected default setting.

  • Property mode set to 100644
File size: 14.9 KB
Line 
1SHELL = /bin/bash
2################################################################################
3#  DESCRIPTION
4#    Makefile for FLEXPART. Standard (serial) and parallel (MPI) version
5#
6#    Dependencies are resolved in this makefile, so parallel make is
7#    possible ("make -j")
8#
9#    At NILU we have installed gcc-4.9.1 and libraries under user /homevip/flexpart
10#    ("ROOT_DIR")
11#    To use gfortran version 4.9, add "gcc=4.9" to the make command, e.g.
12#       'make -j ecmwf gcc=4.9',
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.
22#
23#  USAGE
24#    Compile serial FLEXPART
25#      make [-j] serial
26#
27#    Compile parallel FLEXPART
28#      make [-j] mpi
29#     
30#    Compile for debugging parallel FLEXPART
31#      make [-j] mpi-dbg
32#
33################################################################################
34
35## PROGRAMS
36# Unified executable names
37# The same executable is used for both ECMWF and GFS metdata
38
39# Parallel processing executable
40FLEXPART-MPI = FLEXPART_MPI
41
42# Parallel processing executable with debugging info
43FLEXPART-MPI-DBG = DBG_FLEXPART_MPI
44
45# Serial processing executable
46FLEXPART-SERIAL = FLEXPART
47
48
49ifeq ($(gcc), 4.9)
50# Compiled libraries under user ~flexpart, gfortran v4.9
51        ROOT_DIR = /homevip/flexpart/
52
53        F90       = ${ROOT_DIR}/gcc-4.9.1/bin/gfortran
54        MPIF90    = ${ROOT_DIR}/bin/mpifort
55
56        INCPATH1  = ${ROOT_DIR}/gcc-4.9.1/include       
57        INCPATH2  = ${ROOT_DIR}/include
58        LIBPATH1 = ${ROOT_DIR}/lib
59
60else ifeq ($(gcc), 5.4)
61# Compiled libraries under user ~flexpart, gfortran v5.4
62        ROOT_DIR = /homevip/flexpart/
63
64        F90       = /usr/bin/gfortran
65        MPIF90    = /usr/bin/mpifort
66
67        INCPATH1  = ${ROOT_DIR}/gcc-5.4.0/include       
68        INCPATH2  = /usr/include
69        LIBPATH1 = ${ROOT_DIR}/gcc-5.4.0/lib
70
71else
72# Default: System libraries at NILU, gfortran v4.6
73        F90       = /usr/bin/gfortran
74        MPIF90    = /usr/bin/mpif90.openmpi
75
76        INCPATH1 = /xnilu_wrk/projects/FLEXPART/flex_wrk/bin64/grib_api/include
77        INCPATH2 = /usr/include
78        LIBPATH1 = /xnilu_wrk/projects/FLEXPART/flex_wrk/bin64/grib_api/lib
79endif
80
81
82# path to gributils used to detect meteodata format
83VPATH = gributils/
84
85
86## OPTIMIZATION LEVEL
87O_LEV = 2 # [0,1,2,3,g,s,fast]
88O_LEV_DBG = g # [0,g]
89
90## LIBRARIES
91LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff # -fopenmp
92
93FFLAGS   = -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
94
95DBGFLAGS = -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
96
97LDFLAGS  = $(FFLAGS) -L$(LIBPATH1) -Wl,-rpath,$(LIBPATH1) $(LIBS) #-L$(LIBPATH2)
98LDDEBUG  = $(DBGFLAGS) -L$(LIBPATH1) $(LIBS) #-L$(LIBPATH2)
99
100MODOBJS = \
101par_mod.o               com_mod.o \
102conv_mod.o              hanna_mod.o \
103interpol_mod.o          cmapf_mod.o \
104unc_mod.o               oh_mod.o \
105xmass_mod.o             flux_mod.o \
106point_mod.o             outg_mod.o \
107mean_mod.o              random_mod.o \
108class_gribfile_mod.o
109
110MPI_MODOBJS = \
111mpi_mod.o
112
113## Serial versions (MPI version with same functionality and name '_mpi.f90' exists)
114OBJECTS_SERIAL = \
115        releaseparticles.o      partoutput.o \
116        conccalc.o \
117        init_domainfill.o       concoutput.o  \
118        timemanager.o FLEXPART.o        \
119        readpartpositions.o \
120        partoutput_short.o              \
121        concoutput_nest.o       \
122        boundcond_domainfill.o  \
123        redist.o                \
124        concoutput_surf.o       concoutput_surf_nest.o  \
125        getfields.o \
126        readwind_ecmwf.o
127
128## For MPI version
129OBJECTS_MPI = releaseparticles_mpi.o partoutput_mpi.o \
130        conccalc_mpi.o \
131        init_domainfill_mpi.o concoutput_mpi.o  \
132        timemanager_mpi.o FLEXPART_MPI.o        \
133        readpartpositions_mpi.o         \
134        partoutput_short_mpi.o          \
135        concoutput_nest_mpi.o           \
136        boundcond_domainfill_mpi.o      \
137        redist_mpi.o            \
138        concoutput_surf_mpi.o   concoutput_surf_nest_mpi.o      \
139        getfields_mpi.o \
140        readwind_ecmwf_mpi.o
141
142OBJECTS = \
143advance.o               initialize.o            \
144writeheader.o           writeheader_txt.o       \
145writeprecip.o \
146writeheader_surf.o      assignland.o\
147part0.o                 gethourlyOH.o\
148caldate.o               partdep.o \
149coordtrafo.o            psih.o \
150raerod.o                readcommand.o   \
151drydepokernel.o         readreceptors.o \
152erf.o                   readavailable.o \
153ew.o                    readreleases.o  \
154readdepo.o              get_vdep_prob.o   \
155get_wetscav.o           readwind_gfs.o \
156psim.o                  outgrid_init.o  \
157outgrid_init_nest.o     calcmatrix.o \
158photo_O1D.o             readlanduse.o \
159interpol_wind.o         readoutgrid.o \
160interpol_all.o          readpaths.o \
161getrb.o                 obukhov.o \
162getrc.o                 convmix.o \
163getvdep.o               readspecies.o \
164interpol_misslev.o      richardson.o \
165scalev.o                verttransform_ecmwf.o \
166pbl_profile.o           readOHfield.o \
167juldate.o               verttransform_gfs.o \
168interpol_vdep.o         interpol_rain.o \
169hanna.o                 wetdepokernel.o \
170calcpar.o               wetdepo.o \
171hanna_short.o           windalign.o \
172hanna1.o                gridcheck_ecmwf.o \
173gridcheck_gfs.o         gridcheck_nests.o \
174readwind_nests.o        calcpar_nests.o \
175verttransform_nests.o   interpol_all_nests.o \
176interpol_wind_nests.o   interpol_misslev_nests.o \
177interpol_vdep_nests.o   interpol_rain_nests.o \
178readageclasses.o        detectformat.o  \
179calcfluxes.o            fluxoutput.o \
180qvsat.o                 skplin.o \
181convect43c.o            \
182sort2.o                 distance.o \
183centerofmass.o          plumetraj.o \
184openouttraj.o           calcpv.o \
185calcpv_nests.o          distance2.o \
186clustering.o            interpol_wind_short.o \
187interpol_wind_short_nests.o shift_field_0.o \
188shift_field.o             \
189openreceptors.o         \
190readoutgrid_nest.o \
191writeheader_nest.o writeheader_nest_surf.o \
192wetdepokernel_nest.o \
193drydepokernel_nest.o    zenithangle.o \
194ohreaction.o            getvdep_nests.o \
195initial_cond_calc.o     initial_cond_output.o \
196dynamic_viscosity.o     get_settling.o  \
197initialize_cbl_vel.o    re_initialize_particle.o \
198cbl.o                   netcdf_output_mod.o
199
200%.o: %.mod
201
202# serial executable
203serial: $(FLEXPART-SERIAL)
204serial: FC := $(F90)
205
206# parallel processing executable
207mpi: $(FLEXPART-MPI)
208mpi: FC := $(MPIF90)
209
210# parallel processing with debugging info
211mpi-dbg: $(FLEXPART-MPI-DBG)
212mpi-dbg: FFLAGS := $(DBGFLAGS)
213mpi-dbg: LDFLAGS:= $(LDDEBUG)
214mpi-dbg: FC := $(MPIF90)
215
216$(FLEXPART-SERIAL): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL)
217        +$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(LDFLAGS)
218
219$(FLEXPART-MPI): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI)
220        +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
221        $(LDFLAGS)
222
223$(FLEXPART-MPI-DBG): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI)
224        +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
225        $(LDFLAGS)
226
227%.o: %.f90
228        +$(FC) -c $(FFLAGS) $<
229
230clean:
231        \rm -f *.o *.mod
232
233cleanall:
234        \rm -f *.o *.mod $(FLEXPART-MPI) $(FLEXPART-MPI-DBG) $(FLEXPART-SERIAL)
235
236
237.SUFFIXES = $(SUFFIXES) .f90
238
239## DEPENDENCIES
240get_vdep_prob.o: cmapf_mod.o com_mod.o hanna_mod.o interpol_mod.o par_mod.o \
241        point_mod.o random_mod.o
242advance.o: cmapf_mod.o com_mod.o hanna_mod.o interpol_mod.o par_mod.o \
243        point_mod.o random_mod.o
244assignland.o: com_mod.o par_mod.o
245boundcond_domainfill.o: com_mod.o par_mod.o point_mod.o random_mod.o
246boundcond_domainfill_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \
247        random_mod.o
248calcfluxes.o: com_mod.o flux_mod.o outg_mod.o par_mod.o
249calcmatrix.o: com_mod.o conv_mod.o par_mod.o class_gribfile_mod.o
250calcpar.o: com_mod.o par_mod.o class_gribfile_mod.o
251calcpar_nests.o: com_mod.o par_mod.o
252calcpv.o: com_mod.o par_mod.o
253calcpv_nests.o: com_mod.o par_mod.o
254caldate.o: par_mod.o
255cbl.o: com_mod.o par_mod.o
256centerofmass.o: par_mod.o
257clustering.o: par_mod.o
258cmapf_mod.o: par_mod.o
259com_mod.o: par_mod.o
260conccalc.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
261conccalc_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o unc_mod.o
262concoutput.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o
263concoutput_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o point_mod.o \
264        unc_mod.o mean_mod.o
265concoutput_nest.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o
266concoutput_nest_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o point_mod.o \
267        unc_mod.o mean_mod.o
268concoutput_surf.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o
269concoutput_surf_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o point_mod.o \
270        unc_mod.o mean_mod.o
271concoutput_surf_nest.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o
272concoutput_surf_nest_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o \
273        point_mod.o unc_mod.o mean_mod.o
274conv_mod.o: par_mod.o
275convect43c.o: conv_mod.o par_mod.o
276convmix.o: com_mod.o conv_mod.o flux_mod.o par_mod.o class_gribfile_mod.o
277coordtrafo.o: com_mod.o par_mod.o point_mod.o
278detectformat.o: com_mod.o par_mod.o class_gribfile_mod.o
279distance.o: par_mod.o
280distance2.o: par_mod.o
281drydepokernel.o: com_mod.o par_mod.o unc_mod.o
282drydepokernel_nest.o: com_mod.o par_mod.o unc_mod.o
283erf.o: par_mod.o
284FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o netcdf_output_mod.o class_gribfile_mod.o
285FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o par_mod.o point_mod.o \
286        random_mod.o netcdf_output_mod.o class_gribfile_mod.o
287fluxoutput.o: com_mod.o flux_mod.o outg_mod.o par_mod.o
288get_settling.o: com_mod.o par_mod.o
289getfields.o: com_mod.o par_mod.o class_gribfile_mod.o
290getfields_mpi.o: com_mod.o par_mod.o mpi_mod.o class_gribfile_mod.o
291gethourlyOH.o: com_mod.o oh_mod.o par_mod.o
292getrb.o: par_mod.o
293getrc.o: com_mod.o par_mod.o
294getvdep.o: com_mod.o par_mod.o
295getvdep_nests.o: com_mod.o par_mod.o
296gridcheck_ecmwf.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o
297gridcheck_emos.o: com_mod.o conv_mod.o par_mod.o
298gridcheck_fnl.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o
299gridcheck_gfs.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o
300gridcheck_gfs_emos.o: com_mod.o conv_mod.o par_mod.o
301gridcheck_nests.o: com_mod.o par_mod.o
302gridcheck_nests_emos.o: com_mod.o par_mod.o
303gridcheck_orig_ecmwf.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o
304hanna.o: com_mod.o hanna_mod.o par_mod.o
305hanna1.o: com_mod.o hanna_mod.o par_mod.o
306hanna_short.o: com_mod.o hanna_mod.o par_mod.o
307init_domainfill.o: com_mod.o par_mod.o point_mod.o random_mod.o
308init_domainfill_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \
309        random_mod.o
310initial_cond_calc.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
311initial_cond_output.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o
312initialize.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o random_mod.o
313initialize_cbl_vel.o: com_mod.o par_mod.o random_mod.o
314interpol_all.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
315interpol_all_nests.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
316interpol_misslev.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
317interpol_misslev_nests.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
318interpol_mod.o: par_mod.o
319interpol_rain.o: par_mod.o
320interpol_rain_nests.o: par_mod.o
321interpol_vdep.o: com_mod.o interpol_mod.o par_mod.o
322interpol_vdep_nests.o: com_mod.o interpol_mod.o par_mod.o
323interpol_wind.o: com_mod.o interpol_mod.o par_mod.o
324interpol_wind_nests.o: com_mod.o interpol_mod.o par_mod.o
325interpol_wind_short.o: com_mod.o interpol_mod.o par_mod.o
326interpol_wind_short_nests.o: com_mod.o interpol_mod.o par_mod.o
327juldate.o: par_mod.o
328mean_mod.o: par_mod.o
329mpi_mod.o: com_mod.o par_mod.o unc_mod.o
330netcdf_output_mod.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o
331obukhov.o: par_mod.o class_gribfile_mod.o
332ohreaction.o: com_mod.o oh_mod.o par_mod.o
333openouttraj.o: com_mod.o par_mod.o point_mod.o
334openreceptors.o: com_mod.o par_mod.o
335outg_mod.o: par_mod.o
336outgrid_init.o: com_mod.o flux_mod.o oh_mod.o outg_mod.o par_mod.o unc_mod.o
337outgrid_init_nest.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
338part0.o: par_mod.o
339partdep.o: par_mod.o
340partoutput.o: com_mod.o par_mod.o
341partoutput_mpi.o: com_mod.o mpi_mod.o par_mod.o
342partoutput_short.o: com_mod.o par_mod.o
343partoutput_short_mpi.o: com_mod.o mpi_mod.o par_mod.o
344pbl_profile.o: par_mod.o
345plumetraj.o: com_mod.o par_mod.o point_mod.o mean_mod.o
346psih.o: par_mod.o
347psim.o: par_mod.o
348raerod.o: par_mod.o
349re_initialize_particle.o: com_mod.o par_mod.o
350readageclasses.o: com_mod.o par_mod.o
351readavailable.o: com_mod.o par_mod.o
352readcommand.o: com_mod.o par_mod.o
353readdepo.o: com_mod.o par_mod.o
354readlanduse.o: com_mod.o par_mod.o
355#readlanduse_int1.o: com_mod.o par_mod.o
356readOHfield.o: com_mod.o oh_mod.o par_mod.o
357readoutgrid.o: com_mod.o outg_mod.o par_mod.o
358readoutgrid_nest.o: com_mod.o outg_mod.o par_mod.o
359readpartpositions.o: com_mod.o par_mod.o random_mod.o
360readpartpositions_mpi.o: com_mod.o mpi_mod.o par_mod.o random_mod.o
361readpaths.o: com_mod.o par_mod.o
362readreceptors.o: com_mod.o par_mod.o
363readreleases.o: com_mod.o par_mod.o point_mod.o xmass_mod.o
364readspecies.o: com_mod.o par_mod.o
365readwind_ecmwf.o: com_mod.o par_mod.o
366readwind_emos.o: com_mod.o par_mod.o
367readwind_gfs.o: com_mod.o par_mod.o
368readwind_gfs_emos.o: com_mod.o par_mod.o
369readwind_ecmwf_mpi.o: com_mod.o mpi_mod.o par_mod.o
370readwind_nests.o: com_mod.o par_mod.o
371readwind_nests_emos.o: com_mod.o par_mod.o
372redist.o: com_mod.o conv_mod.o par_mod.o random_mod.o
373redist_mpi.o: com_mod.o conv_mod.o mpi_mod.o par_mod.o random_mod.o
374releaseparticles.o: com_mod.o par_mod.o point_mod.o random_mod.o \
375        xmass_mod.o
376releaseparticles_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \
377        random_mod.o xmass_mod.o
378richardson.o: par_mod.o class_gribfile_mod.o
379scalev.o: par_mod.o
380shift_field.o: par_mod.o
381shift_field_0.o: par_mod.o
382timemanager.o: com_mod.o flux_mod.o netcdf_output_mod.o oh_mod.o outg_mod.o \
383        par_mod.o point_mod.o unc_mod.o xmass_mod.o
384timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o oh_mod.o outg_mod.o \
385        par_mod.o point_mod.o unc_mod.o xmass_mod.o netcdf_output_mod.o
386unc_mod.o: par_mod.o
387verttransform_ecmwf.o: cmapf_mod.o com_mod.o par_mod.o
388verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o
389verttransform_nests.o: com_mod.o par_mod.o
390get_wetscav.o: com_mod.o par_mod.o point_mod.o
391wetdepo.o: com_mod.o par_mod.o point_mod.o
392wetdepokernel.o: com_mod.o par_mod.o unc_mod.o
393wetdepokernel_nest.o: com_mod.o par_mod.o unc_mod.o
394writeheader.o: com_mod.o outg_mod.o par_mod.o point_mod.o
395writeprecip.o: com_mod.o par_mod.o point_mod.o
396writeheader_nest.o: com_mod.o outg_mod.o par_mod.o point_mod.o
397writeheader_nest_surf.o: com_mod.o outg_mod.o par_mod.o point_mod.o
398writeheader_surf.o: com_mod.o outg_mod.o par_mod.o point_mod.o
399writeheader_txt.o: com_mod.o outg_mod.o par_mod.o point_mod.o
400zenithangle.o: par_mod.o
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG