source: flexpart.git/src/makefile

bugfixes+enhancementsrelease-10.4.1scaling-bug
Last change on this file was f0a2e58, checked in by Ignacio Pisso <Ignacio.Pisso@…>, 4 years ago

fix makefile to compile with eccodes. make ncf build the default

  • Property mode set to 100644
File size: 16.6 KB
Line 
1# SPDX-FileCopyrightText: FLEXPART 1998-2019, see flexpart_license.txt
2# SPDX-License-Identifier: GPL-3.0-or-later
3
4SHELL = /bin/bash
5
6##############################################################
7#  DESCRIPTION
8#    Makefile for FLEXPART.
9#    Standard (serial) and parallel (MPI) version
10#
11#    Dependencies are resolved in this makefile,
12#    so parallel make is possible ("make -j")
13#
14#    NILU has installed gcc-4.9.1 and libraries under
15#    user /homevip/flexpart ("ROOT_DIR"). You may adapt that
16#    for your needs; also set environment variable
17#    LD_LIBRARY_PATH to point to compiler libraries if not in
18#    the standard location
19#    There are different definitions of paths included below
20#    You have to comment them in or out according to your
21#    environment, or adapt them!
22#    If you have a system with grib_api instead of eccodes
23#    library, you will have comment in/out the corresponding 2 lines!
24#
25#    cpp directives USE_MPIINPLACE were added to three 
26#    source files. The effect of these directives is to enable
27#    the MPI_IN_PLACE option only if compiled with a
28#    -DUSE_MPIINPLACE directive. Otherwise, a safer option
29#    (which requires the allocation of another array) is used by default.
30#    -x f95-cpp-input added  for compiling of cpp directives.
31#
32#  USAGE
33#    Compile serial FLEXPART
34#      make [-j] serial
35#    or simply
36#      make [-j]
37#
38#    Compile parallel FLEXPART
39#      make [-j] mpi
40#     
41#    Compile for debugging parallel FLEXPART
42#      make [-j] mpi-dbg
43#
44#  NETCDF OUTPUT
45#    To add support for output in netCDF format, append `ncf=yes` to the
46#    `make` command (now the default)
47#    To remove the dependency  append `ncf=no` (or any string different from "yes")
48################################################################################
49
50## PROGRAMS
51# Unified executable names
52# The same executable is used for both ECMWF and GFS metdata
53
54# Parallel processing executable
55FLEXPART-MPI = FLEXPART_MPI
56
57# Parallel processing executable with debugging info
58FLEXPART-MPI-DBG = DBG_FLEXPART_MPI
59
60# Serial processing executable
61FLEXPART-SERIAL = FLEXPART
62
63ncf=yes
64
65# the following is for NILU only
66
67#ifeq ($(gcc), 4.9)
68## Compiled libraries under user ~flexpart, gfortran v4.9
69#       ROOT_DIR = /homevip/flexpart/
70#
71#       F90       = ${ROOT_DIR}/gcc-4.9.1/bin/gfortran
72#       MPIF90    = ${ROOT_DIR}/bin/mpifort
73#
74#       INCPATH1  = ${ROOT_DIR}/gcc-4.9.1/include       
75#       INCPATH2  = ${ROOT_DIR}/include
76#       LIBPATH1  = ${ROOT_DIR}/lib
77#else
78## Compiled libraries under user ~flexpart, gfortran v5.4
79#       ROOT_DIR = /homevip/flexpart/
80#
81#       F90       = /usr/bin/gfortran
82#       MPIF90    = /usr/bin/mpifort
83#
84#       INCPATH1  = ${ROOT_DIR}/gcc-5.4.0/include       
85#       INCPATH2  = /usr/include
86#       LIBPATH1  = ${ROOT_DIR}/gcc-5.4.0/lib
87#endif
88
89# the following works on a Debian stretch machine
90
91        F90       = gfortran
92        MPIF90    = mpifort
93
94        INCPATH1  = /usr/include/
95        INCPATH2  = ./
96        LIBPATH1  = /usr/lib/
97
98        INCPATH2  = /opt/eccodes/include/
99#       INCPATH2  = ./
100        LIBPATH2  = /opt/eccodes/lib/
101
102# the following works on a Debian buster (and probably newer) machine
103#       F90       = gfortran
104#       MPIF90    = mpifort
105#
106#       INCPATH1  = /usr/lib/x86_64-linux-gnu/fortran/gfortran-mod-15
107#       INCPATH2  = /usr/include
108#       LIBPATH1  = /usr/lib/x86_64-linux-gnu/
109
110### Enable netCDF output?
111ifeq ($(ncf), yes)
112        NCOPT = -DUSE_NCF -lnetcdff     
113else
114        NCOPT = -UUSE_NCF
115endif
116
117
118
119# path to gributils used to detect meteodata format
120VPATH = gributils/
121
122
123## OPTIMIZATION LEVEL
124O_LEV = 2 # [0,1,2,3,g,s,fast] # 0 may give trouble; then use -mcmdoel=large
125O_LEV_DBG = 0 # [0,g] # use g only for debugging
126
127## LIBRARIES
128#LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper $(NCOPT)
129LIBS = -leccodes_f90 -leccodes -lm -ljasper $(NCOPT)
130
131FFLAGS   = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -cpp -m64 -mcmodel=medium \
132           -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 \
133           -flto=jobserver -O$(O_LEV) $(NCOPT) $(FUSER)  #-Warray-bounds -fcheck=all # -march=native
134
135DBGFLAGS = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV_DBG) -g3 -ggdb3 -cpp \
136           -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4  \
137           -fmessage-length=0 -flto=jobserver -O$(O_LEV_DBG) $(NCOPT) \
138           -fbacktrace   -Wall  -fdump-core $(FUSER) -fcheck=all #\
139            #  -ffpe-trap=invalid,overflow,denormal,underflow,zero
140
141LDFLAGS  = $(FFLAGS) -L$(LIBPATH1) -L$(LIBPATH2) -Wl,-rpath,$(LIBPATH1) $(LIBS)
142LDDEBUG  = $(DBGFLAGS) -L$(LIBPATH1) $(LIBS)
143
144MODOBJS = \
145par_mod.o               com_mod.o \
146conv_mod.o              hanna_mod.o \
147interpol_mod.o          cmapf_mod.o \
148unc_mod.o               oh_mod.o \
149xmass_mod.o             flux_mod.o \
150point_mod.o             outg_mod.o \
151mean_mod.o              random_mod.o \
152class_gribfile_mod.o
153
154MPI_MODOBJS = \
155mpi_mod.o
156
157## Serial versions (MPI version with same functionality and name '_mpi.f90' exists)
158OBJECTS_SERIAL = \
159        releaseparticles.o      partoutput.o \
160        partoutput_average.o \
161        conccalc.o \
162        init_domainfill.o       concoutput.o  \
163        timemanager.o FLEXPART.o        \
164        readpartpositions.o \
165        partoutput_short.o              \
166        concoutput_nest.o       \
167        boundcond_domainfill.o  \
168        redist.o                \
169        concoutput_surf.o       concoutput_surf_nest.o  \
170        concoutput_inversion_nest.o     \
171        concoutput_inversion.o \
172        getfields.o \
173        readwind_ecmwf.o
174
175## For MPI version
176OBJECTS_MPI = releaseparticles_mpi.o partoutput_mpi.o \
177        partoutput_average_mpi.o conccalc_mpi.o \
178        init_domainfill_mpi.o concoutput_mpi.o  \
179        timemanager_mpi.o FLEXPART_MPI.o        \
180        readpartpositions_mpi.o         \
181        partoutput_short_mpi.o          \
182        concoutput_nest_mpi.o           \
183        boundcond_domainfill_mpi.o      \
184        redist_mpi.o            \
185        concoutput_surf_mpi.o   concoutput_surf_nest_mpi.o      \
186        getfields_mpi.o \
187        readwind_ecmwf_mpi.o
188
189ifeq ($(ncf), yes)
190        OBJECTS_NCF = netcdf_output_mod.o
191endif
192
193OBJECTS = \
194advance.o               initialize.o            \
195writeheader.o           writeheader_txt.o       \
196partpos_average.o       writeprecip.o \
197writeheader_surf.o      assignland.o\
198part0.o                 gethourlyOH.o\
199caldate.o               partdep.o \
200coordtrafo.o            psih.o \
201raerod.o                readcommand.o   \
202drydepokernel.o         readreceptors.o \
203erf.o                   readavailable.o \
204ew.o                    readreleases.o  \
205readdepo.o              get_vdep_prob.o   \
206get_wetscav.o           readwind_gfs.o \
207psim.o                  outgrid_init.o  \
208outgrid_init_nest.o     calcmatrix.o \
209photo_O1D.o             readlanduse.o \
210interpol_wind.o         readoutgrid.o \
211interpol_all.o          readpaths.o \
212getrb.o                 obukhov.o \
213getrc.o                 convmix.o \
214getvdep.o               readspecies.o \
215interpol_misslev.o      richardson.o \
216scalev.o                verttransform_ecmwf.o \
217pbl_profile.o           readOHfield.o \
218juldate.o               verttransform_gfs.o \
219interpol_vdep.o         interpol_rain.o \
220hanna.o                 wetdepokernel.o \
221calcpar.o               wetdepo.o \
222hanna_short.o           windalign.o \
223hanna1.o                gridcheck_ecmwf.o \
224gridcheck_gfs.o         gridcheck_nests.o \
225readwind_nests.o        calcpar_nests.o \
226verttransform_nests.o   interpol_all_nests.o \
227interpol_wind_nests.o   interpol_misslev_nests.o \
228interpol_vdep_nests.o   interpol_rain_nests.o \
229readageclasses.o        detectformat.o  \
230calcfluxes.o            fluxoutput.o \
231qvsat.o                 skplin.o \
232convect43c.o            \
233sort2.o                 distance.o \
234centerofmass.o          plumetraj.o \
235openouttraj.o           calcpv.o \
236calcpv_nests.o          distance2.o \
237clustering.o            interpol_wind_short.o \
238interpol_wind_short_nests.o shift_field_0.o \
239shift_field.o             \
240openreceptors.o         \
241readoutgrid_nest.o \
242writeheader_nest.o writeheader_nest_surf.o \
243wetdepokernel_nest.o \
244drydepokernel_nest.o    zenithangle.o \
245ohreaction.o            getvdep_nests.o \
246initial_cond_calc.o     initial_cond_output.o initial_cond_output_inversion.o \
247dynamic_viscosity.o     get_settling.o  \
248initialize_cbl_vel.o    re_initialize_particle.o \
249cbl.o
250
251ifeq ($(ncf), yes)
252        OBJECTS := $(OBJECTS) $(OBJECTS_NCF)
253endif
254
255%.o: %.mod
256
257# serial executable
258serial: $(FLEXPART-SERIAL)
259serial: FC := $(F90)
260
261# parallel processing executable
262mpi: $(FLEXPART-MPI)
263mpi: FC := $(MPIF90)
264
265# parallel processing with debugging info
266mpi-dbg: $(FLEXPART-MPI-DBG)
267mpi-dbg: FFLAGS := $(DBGFLAGS)
268mpi-dbg: LDFLAGS:= $(LDDEBUG)
269mpi-dbg: FC := $(MPIF90)
270
271$(FLEXPART-SERIAL): $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL)
272        +$(FC) -o $@ $(MODOBJS) $(OBJECTS) $(OBJECTS_SERIAL) $(LDFLAGS)
273
274$(FLEXPART-MPI): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI)
275        +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
276        $(LDFLAGS)
277
278$(FLEXPART-MPI-DBG): $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI)
279        +$(FC) -o $@ $(MODOBJS) $(MPI_MODOBJS) $(OBJECTS) $(OBJECTS_MPI) \
280        $(LDFLAGS)
281
282%.o: %.f90
283        +$(FC) -c $(FFLAGS) $<
284
285clean:
286        \rm -f *.o *.mod
287
288cleanall:
289        \rm -f *.o *.mod $(FLEXPART-MPI) $(FLEXPART-MPI-DBG) $(FLEXPART-SERIAL)
290
291
292.SUFFIXES = $(SUFFIXES) .f90
293
294## DEPENDENCIES
295advance.o: cmapf_mod.o com_mod.o hanna_mod.o interpol_mod.o par_mod.o \
296        point_mod.o random_mod.o
297assignland.o: com_mod.o par_mod.o
298boundcond_domainfill.o: com_mod.o par_mod.o point_mod.o random_mod.o
299boundcond_domainfill_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \
300        random_mod.o
301calcfluxes.o: com_mod.o flux_mod.o outg_mod.o par_mod.o
302calcmatrix.o: com_mod.o conv_mod.o par_mod.o class_gribfile_mod.o
303calcpar.o: com_mod.o par_mod.o class_gribfile_mod.o
304calcpar_nests.o: com_mod.o par_mod.o
305calcpv.o: com_mod.o par_mod.o
306calcpv_nests.o: com_mod.o par_mod.o
307caldate.o: par_mod.o
308cbl.o: com_mod.o par_mod.o
309centerofmass.o: par_mod.o
310clustering.o: par_mod.o
311cmapf_mod.o: par_mod.o
312com_mod.o: par_mod.o
313conccalc.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
314conccalc_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o unc_mod.o
315concoutput.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o
316concoutput_inversion.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o \
317        unc_mod.o
318concoutput_inversion_nest.o: com_mod.o mean_mod.o outg_mod.o par_mod.o \
319        point_mod.o unc_mod.o
320concoutput_mpi.o: com_mod.o mean_mod.o mpi_mod.o outg_mod.o par_mod.o \
321        point_mod.o unc_mod.o
322concoutput_nest.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o \
323        unc_mod.o
324concoutput_nest_mpi.o: com_mod.o mean_mod.o mpi_mod.o outg_mod.o par_mod.o \
325        point_mod.o unc_mod.o
326concoutput_surf.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o \
327        unc_mod.o
328concoutput_surf_mpi.o: com_mod.o mean_mod.o mpi_mod.o outg_mod.o par_mod.o \
329        point_mod.o unc_mod.o
330concoutput_surf_nest.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o \
331        unc_mod.o
332concoutput_surf_nest_mpi.o: com_mod.o mean_mod.o mpi_mod.o outg_mod.o \
333        par_mod.o point_mod.o unc_mod.o
334conv_mod.o: par_mod.o
335convect43c.o: conv_mod.o par_mod.o
336convmix.o: com_mod.o conv_mod.o flux_mod.o par_mod.o class_gribfile_mod.o
337coordtrafo.o: com_mod.o par_mod.o point_mod.o
338detectformat.o: com_mod.o par_mod.o class_gribfile_mod.o
339distance.o: par_mod.o
340distance2.o: par_mod.o
341drydepokernel.o: com_mod.o par_mod.o unc_mod.o
342drydepokernel_nest.o: com_mod.o par_mod.o unc_mod.o
343erf.o: par_mod.o
344ifeq ($(ncf), yes)
345        FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o netcdf_output_mod.o class_gribfile_mod.o \
346        random_mod.o
347        FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o netcdf_output_mod.o par_mod.o \
348        point_mod.o random_mod.o class_gribfile_mod.o
349        netcdf_output_mod.o: com_mod.o mean_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o
350        timemanager.o: com_mod.o flux_mod.o netcdf_output_mod.o oh_mod.o outg_mod.o \
351        par_mod.o point_mod.o unc_mod.o xmass_mod.o
352        timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o netcdf_output_mod.o \
353        oh_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o xmass_mod.o
354else       
355        FLEXPART.o: com_mod.o conv_mod.o par_mod.o point_mod.o random_mod.o  class_gribfile_mod.o random_mod.o
356        FLEXPART_MPI.o: com_mod.o conv_mod.o mpi_mod.o par_mod.o point_mod.o random_mod.o class_gribfile_mod.o
357        timemanager.o: com_mod.o flux_mod.o oh_mod.o outg_mod.o \
358        par_mod.o point_mod.o unc_mod.o xmass_mod.o
359        timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o \
360        oh_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o xmass_mod.o
361endif
362fluxoutput.o: com_mod.o flux_mod.o outg_mod.o par_mod.o
363get_settling.o: com_mod.o par_mod.o
364get_vdep_prob.o: com_mod.o interpol_mod.o par_mod.o point_mod.o
365get_wetscav.o: com_mod.o par_mod.o point_mod.o
366getfields.o: com_mod.o par_mod.o class_gribfile_mod.o
367getfields_mpi.o: com_mod.o mpi_mod.o par_mod.o class_gribfile_mod.o
368gethourlyOH.o: com_mod.o oh_mod.o par_mod.o
369getrb.o: par_mod.o
370getrc.o: com_mod.o par_mod.o
371getvdep.o: com_mod.o par_mod.o
372getvdep_nests.o: com_mod.o par_mod.o
373grib2check.o: com_mod.o par_mod.o
374gridcheck_ecmwf.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o
375gridcheck_gfs.o: cmapf_mod.o com_mod.o conv_mod.o par_mod.o
376gridcheck_nests.o: com_mod.o par_mod.o
377hanna.o: com_mod.o hanna_mod.o par_mod.o
378hanna1.o: com_mod.o hanna_mod.o par_mod.o
379hanna_short.o: com_mod.o hanna_mod.o par_mod.o
380init_domainfill.o: com_mod.o par_mod.o point_mod.o random_mod.o
381init_domainfill_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o random_mod.o
382initial_cond_calc.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
383initial_cond_output.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o
384initial_cond_output_inversion.o: com_mod.o outg_mod.o par_mod.o point_mod.o \
385        unc_mod.o
386initialize.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o random_mod.o
387initialize_cbl_vel.o: com_mod.o par_mod.o random_mod.o
388interpol_all.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
389interpol_all_nests.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
390interpol_misslev.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
391interpol_misslev_nests.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o
392interpol_mod.o: par_mod.o
393interpol_rain.o: par_mod.o
394interpol_rain_nests.o: par_mod.o
395interpol_vdep.o: com_mod.o interpol_mod.o par_mod.o
396interpol_vdep_nests.o: com_mod.o interpol_mod.o par_mod.o
397interpol_wind.o: com_mod.o interpol_mod.o par_mod.o
398interpol_wind_nests.o: com_mod.o interpol_mod.o par_mod.o
399interpol_wind_short.o: com_mod.o interpol_mod.o par_mod.o
400interpol_wind_short_nests.o: com_mod.o interpol_mod.o par_mod.o
401juldate.o: par_mod.o
402mean_mod.o: par_mod.o
403mpi_mod.o: com_mod.o par_mod.o unc_mod.o
404obukhov.o: par_mod.o class_gribfile_mod.o
405ohreaction.o: com_mod.o oh_mod.o par_mod.o
406openouttraj.o: com_mod.o par_mod.o point_mod.o
407openreceptors.o: com_mod.o par_mod.o
408outg_mod.o: par_mod.o
409outgrid_init.o: com_mod.o flux_mod.o oh_mod.o outg_mod.o par_mod.o unc_mod.o
410outgrid_init_nest.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
411part0.o: par_mod.o
412partdep.o: com_mod.o par_mod.o
413partoutput.o: com_mod.o par_mod.o
414partoutput_average.o: com_mod.o par_mod.o
415partoutput_average_mpi.o: com_mod.o mpi_mod.o par_mod.o
416partoutput_mpi.o: com_mod.o mpi_mod.o par_mod.o
417partoutput_short.o: com_mod.o par_mod.o
418partoutput_short_mpi.o: com_mod.o mpi_mod.o par_mod.o
419partpos_average.o: com_mod.o par_mod.o
420pbl_profile.o: par_mod.o
421plumetraj.o: com_mod.o mean_mod.o par_mod.o point_mod.o
422psih.o: par_mod.o
423psim.o: par_mod.o
424raerod.o: par_mod.o
425re_initialize_particle.o: com_mod.o par_mod.o
426readageclasses.o: com_mod.o par_mod.o
427readavailable.o: com_mod.o par_mod.o
428readcommand.o: com_mod.o par_mod.o
429readdepo.o: com_mod.o par_mod.o
430readlanduse.o: com_mod.o par_mod.o
431readOHfield.o: com_mod.o oh_mod.o par_mod.o
432readoutgrid.o: com_mod.o outg_mod.o par_mod.o
433readoutgrid_nest.o: com_mod.o outg_mod.o par_mod.o
434readpartpositions.o: com_mod.o par_mod.o random_mod.o
435readpartpositions_mpi.o: com_mod.o mpi_mod.o par_mod.o random_mod.o
436readpaths.o: com_mod.o par_mod.o
437readreceptors.o: com_mod.o par_mod.o
438readreleases.o: com_mod.o par_mod.o point_mod.o xmass_mod.o
439readspecies.o: com_mod.o par_mod.o
440readwind_ecmwf.o: com_mod.o par_mod.o
441readwind_ecmwf_mpi.o: com_mod.o mpi_mod.o par_mod.o
442readwind_emos.o: com_mod.o par_mod.o
443readwind_gfs.o: com_mod.o par_mod.o
444readwind_nests.o: com_mod.o par_mod.o
445redist.o: com_mod.o conv_mod.o par_mod.o random_mod.o
446redist_mpi.o: com_mod.o conv_mod.o mpi_mod.o par_mod.o random_mod.o
447releaseparticles.o: com_mod.o par_mod.o point_mod.o random_mod.o xmass_mod.o
448releaseparticles_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o \
449        random_mod.o xmass_mod.o
450richardson.o: par_mod.o class_gribfile_mod.o
451scalev.o: par_mod.o
452shift_field.o: par_mod.o
453shift_field_0.o: par_mod.o
454unc_mod.o: par_mod.o
455verttransform_ecmwf.o: cmapf_mod.o com_mod.o par_mod.o
456verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o
457verttransform_nests.o: com_mod.o par_mod.o
458wetdepo.o: com_mod.o par_mod.o point_mod.o
459wetdepokernel.o: com_mod.o par_mod.o unc_mod.o
460wetdepokernel_nest.o: com_mod.o par_mod.o unc_mod.o
461writeheader.o: com_mod.o outg_mod.o par_mod.o point_mod.o
462writeheader_nest.o: com_mod.o outg_mod.o par_mod.o point_mod.o
463writeheader_nest_surf.o: com_mod.o outg_mod.o par_mod.o point_mod.o
464writeheader_surf.o: com_mod.o outg_mod.o par_mod.o point_mod.o
465writeheader_txt.o: com_mod.o outg_mod.o par_mod.o point_mod.o
466writeprecip.o: com_mod.o par_mod.o point_mod.o
467zenithangle.o: par_mod.o
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG