source: LMDZ6/branches/cirrus/libf/phylmd/ecrad/Makefile

Last change on this file was 4773, checked in by idelkadi, 11 months ago
  • Update of Ecrad in LMDZ The same organization of the Ecrad offline version is retained in order to facilitate the updating of Ecrad in LMDZ and the comparison between online and offline results. version 1.6.1 of Ecrad (https://github.com/lguez/ecrad.git)
  • Implementation of the double call of Ecrad in LMDZ


File size: 5.4 KB
Line 
1# ecRad Makefile - read the README file before editing
2
3#############################
4### --- CONFIGURATION --- ###
5#############################
6
7# Use the nf-config utility, if available, to set the NETCDF_INCLUDE
8# and NETCDF_LIB flags
9HAVE_NFCONFIG := $(shell nf-config --version 2> /dev/null)
10ifdef HAVE_NFCONFIG
11$(info *** Using nf-config to obtain NetCDF flags)
12NETCDF_INCLUDE = $(shell nf-config --fflags)
13NETCDF_LIB     = $(shell nf-config --flibs)
14ifeq ($(shell nf-config --has-nc4),yes)
15NETCDF4        = 1
16endif
17else
18$(info *** nf-config not found)
19endif
20
21# make can be invoked using "make PROFILE=<prof>" in which case your
22# local configuration parameters will be obtained from
23# Makefile_include.<prof>
24ifndef PROFILE
25$(info *** No "PROFILE" variable provided, assuming "gfortran")
26PROFILE = gfortran
27endif
28
29# Include a platform-specific makefile that defines FC, FCFLAGS and
30# LIBS
31include Makefile_include.$(PROFILE)
32
33# Check for presence of the NETCDF_INCLUDE and NETCDF_LIB flags
34ifndef NETCDF_INCLUDE
35$(info *** You may need to set NETCDF_INCLUDE manually)
36endif
37ifndef NETCDF_LIB
38$(info *** You may need to set NETCDF_LIB manually)
39endif
40
41# Add single-precision flag if SINGLE_PRECISION=1 was given on the
42# "make" command line
43ifdef SINGLE_PRECISION
44CPPFLAGS += -DPARKIND1_SINGLE
45endif
46
47# If PRINT_ENTRAPMENT_DATA=1 was given on the "make" command line
48# then the SPARTACUS shortwave solver will write data to fort.101 and
49# fort.102
50ifdef PRINT_ENTRAPMENT_DATA
51CPPFLAGS += -DPRINT_ENTRAPMENT_DATA
52endif
53# For backwards compatibility we allow the following as well
54ifdef PRINT_ENCROACHMENT_DATA
55CPPFLAGS += -DPRINT_ENTRAPMENT_DATA
56endif
57# Allow the capability to write NetCDF4/HDF5 files, provided the code
58# is compiled against the NetCDF4 library
59ifdef NETCDF4
60$(info *** Building with NetCDF4/HDF5 support)
61CPPFLAGS += -DNC_NETCDF4
62endif
63
64# Consolidate flags
65export FC
66export FCFLAGS = $(WARNFLAGS) $(BASICFLAGS) $(CPPFLAGS) -I../include \
67        $(OPTFLAGS) $(DEBUGFLAGS) $(NETCDF_INCLUDE) $(OMPFLAG)
68export LIBS    = $(LDFLAGS) -L../lib -lradiation -lutilities \
69        -lifsrrtm -lifsaux $(FCLIBS) $(NETCDF_LIB) $(OMPFLAG)
70
71# Do we include Dr Hook from ECMWF's fiat library?
72ifdef FIATDIR
73# Prepend location of yomhook.mod module file from fiat library, so
74# that it is found in preference to the dummy one in ecRad
75FCFLAGS := -I$(FIATDIR)/module/fiat $(FCFLAGS)
76# Append fiat library (usually shared: libfiat.so)
77LIBS += -L$(FIATDIR)/lib -Wl,-rpath,$(FIATDIR)/lib -lfiat
78else
79# Dummy Dr Hook library
80LIBS += -ldrhook
81endif
82
83
84#############################
85### --- BUILD TARGETS --- ###
86#############################
87
88all: build
89
90help:
91        @echo "Usage:"
92        @echo "  make PROFILE=<prof>"
93        @echo "where <prof> is one of gfortran, pgi, intel or cray (see Makefile_include.<prof>)"
94        @echo "Other possible arguments are:"
95        @echo "  DEBUG=1              Compile with debug settings on and optimizations off"
96        @echo "  SINGLE_PRECISION=1   Compile with single precision"
97        @echo "  FIATDIR=/my/path     Compile with Dr Hook, specifying the directory containing lib/libfiat.so and module/fiat/yomhook.mod"
98        @echo "  test                 Run test cases in test directory"
99        @echo "  clean                Remove all compiled files"
100
101ifndef FIATDIR
102build: directories libifsaux libdummydrhook libutilities libifsrrtm \
103        libradiation driver ifsdriver symlinks
104libradiation libutilities: libdummydrhook
105else
106# Note that if we are using Dr Hook from the fiat library we don't
107# want to create mod/yomhook.mod as this can sometimes be found before
108# the one in the fiat directory leading to an error at link stage
109build: directories libifsaux libutilities libifsrrtm libradiation \
110        driver ifsdriver symlinks
111endif
112
113# git cannot store empty directories so they may need to be created
114directories: mod lib
115mod:
116        mkdir -p mod
117lib:
118        mkdir -p lib
119
120deps: clean-deps
121        cd ifsaux && $(MAKE) deps
122        cd ifsrrtm && $(MAKE) deps
123        cd ifs && $(MAKE) deps
124
125clean-deps:
126        rm -f include/*.intfb.h
127
128libifs: libradiation
129        cd ifs && $(MAKE)
130
131libifsaux:
132        cd ifsaux && $(MAKE)
133
134libdummydrhook: libifsaux
135        cd drhook && $(MAKE) dummy
136
137libutilities: libifsaux
138        cd utilities && $(MAKE)
139
140libifsrrtm: libifsaux
141        cd ifsrrtm && $(MAKE)
142
143libradiation: libifsrrtm libutilities libifsaux
144        cd radiation && $(MAKE)
145
146driver: libifsaux libifsrrtm libutilities libradiation
147        cd driver && $(MAKE) driver
148
149ifsdriver: libifsaux libifsrrtm libutilities libradiation libifs
150        cd driver && $(MAKE) ifs_driver
151
152test_programs: driver
153        cd driver && $(MAKE) test_programs
154
155symlinks: clean-symlinks
156        cd practical && ln -s ../bin/ecrad
157        cd practical && ln -s ../data
158
159test: test_ifs test_i3rc test_ckdmip
160
161test_ifs: driver
162        cd test/ifs && $(MAKE) test
163
164test_i3rc: driver
165        cd test/i3rc && $(MAKE) test
166
167test_ckdmip:
168        cd test/ckdmip && $(MAKE) test
169
170clean: clean-tests clean-toplevel clean-utilities clean-mods clean-symlinks
171
172clean-tests:
173        cd test/ifs && $(MAKE) clean
174        cd test/i3rc && $(MAKE) clean
175        cd test/ckdmip && $(MAKE) clean
176
177clean-toplevel:
178        cd radiation && $(MAKE) clean
179        cd driver && $(MAKE) clean
180
181clean-utilities:
182        cd ifsaux && $(MAKE) clean
183        cd utilities && $(MAKE) clean
184        cd ifsrrtm && $(MAKE) clean
185        cd drhook && $(MAKE) clean
186        cd ifs && $(MAKE) clean
187
188clean-mods:
189        rm -f mod/*.mod
190
191clean-symlinks:
192        rm -f practical/ecrad practical/data
193
194clean-autosaves:
195        rm -f *~ .gitignore~ */*~ */*/*~
196
197.PHONY: all build help deps clean-deps libifsaux libdummydrhook libutilities libifsrrtm \
198        libradiation driver symlinks clean clean-toplevel test test_ifs ifsdriver \
199        test_i3rc clean-tests clean-utilities clean-mods clean-symlinks
Note: See TracBrowser for help on using the repository browser.