source: flexpart.git/src/makefile @ d8eed02

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

Minor edits

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