source: flexpart.git/src/makefile @ 8a65cb0

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

Added code, makefile for dev branch

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