source: flexpart.git/src/makefile @ f9ce123

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

Added new parameter ohnconst for OH fields. Updated SPECIES files

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