source: flexpart.git/src/makefile @ b5d0e7e

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

Makefile modification

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