Skip to content

Commit 67069a4

Browse files
authored
Merge pull request #4 from ilijana88/MQ-GCM2.0
MQ-GCM2.0
2 parents 10b8525 + b969b21 commit 67069a4

22 files changed

+15610
-0
lines changed

.DS_Store

8 KB
Binary file not shown.

MQ-GCM/0README

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Folder MQGCM_FINAL: MQGCM files, including new config file (make.config) and the new parameter file (input.params).
2+
3+
Instructions:
4+
5+
(A) Substitute all of the q-gcm source code with the updated files from here.
6+
7+
(B) In make.config: (i) Choose NCOPT and MOI options (if wanted). (ii) If MOI is activated, choose DLAT option; otherwise (for dry model), uncheck the DLAT option. (iii) Choose TMPF (temperature feedback) and PCOU (partial coupling) options, as necessary.
8+
9+
(C) Compile the code using Makefile.
10+
11+
(D) Start from initial conditions in the corresponding lastday.nc files (In the folder LASTDAY, for dry (DQGCM) and moist (MQGCM) model versions).

MQ-GCM/Makefile_MQGCM

+268
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
#
2+
# Q-GCM Makefile v1.5.0
3+
# =====================
4+
#
5+
# This Makefile contains the dependencies within the code,
6+
# and the instructions for building the data modules, the main
7+
# model and the various related utility/testing programs.
8+
#
9+
# Model configuration options applied by the preprocessor
10+
# are now included via "make.config", which should be
11+
# linked to a file specifying the configuration required
12+
#
13+
# Machine-specific details are now included via "make.macro", which
14+
# should be linked to a file appropriate to the system being used,
15+
# including details of the compiler and its flags, and the locations
16+
# of the required software libraries: LAPACK/BLAS and netCDF
17+
18+
include make.config
19+
20+
include make.macro
21+
22+
# Order of dependencies: source file (+ any other *.f/*.F files or code segments
23+
# incorporated via an INCLUDE statement), then this Makefile, the make.config
24+
# file and the system-specific make.macro, parameters.mod, then any other
25+
# modules referenced, then the netcdf.inc file (if relevant), then source
26+
# code of any routines called by the (sub)programs in the source file.
27+
# It might be desirable to (eventually) automate this using the "makedepend" utility
28+
29+
MAKEFILE = Makefile make.config make.macro
30+
31+
MODS = parameters.mod atconst.mod occonst.mod athomog.mod ochomog.mod \
32+
atstate.mod ocstate.mod intrfac.mod radiate.mod timinfo.mod \
33+
monitor.mod qgasubs.mod atisubs.mod omlsubs.mod \
34+
qgosubs.mod ocisubs.mod conhoms.mod vorsubs.mod xfosubs.mod amlsubs.mod\
35+
valsubs.mod nc_subs.mod hra_out.mod radsubs.mod topsubs.mod intsubs.mod \
36+
eigmode.mod areasubs.mod covaria.mod mondiag.mod qocdiag.mod timavge.mod
37+
38+
SRCS = parameters_data.F q-gcm.F atconst_data.F occonst_data.F \
39+
athomog_data.F ochomog_data.F atstate_data.F ocstate_data.F \
40+
intrfac_data.F radiate_data.F timinfo_data.F monitor_data.F \
41+
nc_subs.F hra_out.F areasubs_diag.F covaria_diag.F monitor_diag.F \
42+
qocdiag.F timavge.F conhoms.F vorsubs.F \
43+
xfosubs.F valsubs.F radsubs.f intsubs.f fftsubs.f \
44+
omlsubs.F qgosubs.F ocisubs.F topsubs.F \
45+
amlsubs.F qgasubs.F atisubs.F eigmode.f ${LAPSRC}
46+
47+
OBJS = parameters_data.o q-gcm.o atconst_data.o occonst_data.o \
48+
athomog_data.o ochomog_data.o atstate_data.o ocstate_data.o \
49+
intrfac_data.o radiate_data.o timinfo_data.o monitor_data.o \
50+
nc_subs.o hra_out.o areasubs_diag.o covaria_diag.o monitor_diag.o \
51+
qocdiag.o timavge.o conhoms.o vorsubs.o \
52+
xfosubs.o valsubs.o radsubs.o intsubs.o fftsubs.o \
53+
omlsubs.o qgosubs.o ocisubs.o topsubs.o \
54+
amlsubs.o qgasubs.o atisubs.o eigmode.o ${LAPOBJ}
55+
56+
q-gcm: ${MODS} ${OBJS}
57+
${FC} ${FFLAGS} -o q-gcm ${OBJS} ${LAPACK} ${NCLINK}
58+
59+
# Modules:
60+
# ========
61+
parameters.mod: parameters_data.F ${MAKEFILE}
62+
${FC} ${FFLAGS} -c parameters_data.F
63+
# Need to permit 80 character lines to allow for explanatory inline comments
64+
# Add this to the FFLAGS for each compiler, as the
65+
# option syntax for this varies between compilers
66+
67+
# Data (storage) modules:
68+
# -----------------------
69+
# Make these first as they have fewest dependencies,
70+
# but many of the program modules depend on them
71+
72+
atconst.mod: atconst_data.F ${MAKEFILE} parameters.mod
73+
${FC} ${FFLAGS} ${QGOPTS} -c atconst_data.F
74+
75+
occonst.mod: occonst_data.F ${MAKEFILE} parameters.mod
76+
${FC} ${FFLAGS} ${QGOPTS} -c occonst_data.F
77+
78+
athomog.mod: athomog_data.F ${MAKEFILE} parameters.mod
79+
${FC} ${FFLAGS} ${QGOPTS} -c athomog_data.F
80+
81+
ochomog.mod: ochomog_data.F ${MAKEFILE} parameters.mod
82+
${FC} ${FFLAGS} ${QGOPTS} -c ochomog_data.F
83+
84+
atstate.mod: atstate_data.F ${MAKEFILE} parameters.mod
85+
${FC} ${FFLAGS} ${QGOPTS} -c atstate_data.F
86+
87+
ocstate.mod: ocstate_data.F ${MAKEFILE} parameters.mod
88+
${FC} ${FFLAGS} ${QGOPTS} -c ocstate_data.F
89+
90+
intrfac.mod: intrfac_data.F ${MAKEFILE} parameters.mod
91+
${FC} ${FFLAGS} ${QGOPTS} -c intrfac_data.F
92+
93+
radiate.mod: radiate_data.F ${MAKEFILE} parameters.mod
94+
${FC} ${FFLAGS} -c radiate_data.F
95+
96+
timinfo.mod: timinfo_data.F ${MAKEFILE}
97+
${FC} ${FFLAGS} ${QGOPTS} -c timinfo_data.F
98+
99+
monitor.mod: monitor_data.F ${MAKEFILE} parameters.mod
100+
${FC} ${FFLAGS} -c monitor_data.F
101+
102+
# (Mainly) program modules:
103+
# -------------------------
104+
105+
qgasubs.mod: qgasubs.F ${MAKEFILE} parameters.mod \
106+
atconst.mod athomog.mod atstate.mod
107+
${FC} ${FFLAGS} ${QGOPTS} -c qgasubs.F
108+
109+
atisubs.mod: atisubs.F ${MAKEFILE} parameters.mod \
110+
atconst.mod athomog.mod atstate.mod monitor.mod intsubs.mod
111+
${FC} ${FFLAGS} ${QGOPTS} -c atisubs.F
112+
113+
omlsubs.mod: omlsubs.F ${MAKEFILE} parameters.mod \
114+
occonst.mod ochomog.mod ocstate.mod intrfac.mod \
115+
radiate.mod monitor.mod intsubs.mod
116+
${FC} ${FFLAGS} ${QGOPTS} -c omlsubs.F
117+
118+
qgosubs.mod: qgosubs.F ${MAKEFILE} parameters.mod \
119+
occonst.mod ochomog.mod ocstate.mod
120+
${FC} ${FFLAGS} ${QGOPTS} -c qgosubs.F
121+
122+
ocisubs.mod: ocisubs.F ${MAKEFILE} parameters.mod \
123+
occonst.mod ochomog.mod ocstate.mod monitor.mod intsubs.mod
124+
${FC} ${FFLAGS} ${QGOPTS} -c ocisubs.F
125+
126+
conhoms.mod: conhoms.F ${MAKEFILE} parameters.mod \
127+
atconst.mod occonst.mod athomog.mod ochomog.mod \
128+
atstate.mod ocstate.mod monitor.mod intsubs.mod
129+
${FC} ${FFLAGS} ${QGOPTS} -c conhoms.F
130+
131+
vorsubs.mod: vorsubs.F ${MAKEFILE} parameters.mod \
132+
atconst.mod occonst.mod
133+
${FC} ${FFLAGS} ${QGOPTS} -c vorsubs.F
134+
135+
xfosubs.mod: xfosubs.F ${MAKEFILE} parameters.mod \
136+
atconst.mod occonst.mod athomog.mod ochomog.mod atstate.mod \
137+
ocstate.mod intrfac.mod radiate.mod monitor.mod
138+
${FC} ${FFLAGS} ${QGOPTS} -c xfosubs.F
139+
140+
amlsubs.mod: amlsubs.F ${MAKEFILE} parameters.mod \
141+
atconst.mod athomog.mod atstate.mod intrfac.mod \
142+
radiate.mod monitor.mod intsubs.mod xfosubs.mod
143+
${FC} ${FFLAGS} ${QGOPTS} -c amlsubs.F
144+
145+
valsubs.mod: valsubs.F ${MAKEFILE} parameters.mod \
146+
atstate.mod occonst.mod ocstate.mod intrfac.mod
147+
${FC} ${FFLAGS} ${QGOPTS} -c valsubs.F
148+
149+
radsubs.mod: radsubs.f ${MAKEFILE} parameters.mod \
150+
atconst.mod occonst.mod intrfac.mod radiate.mod xfosubs.mod
151+
${FC} ${FFLAGS} -c radsubs.f
152+
153+
intsubs.mod: intsubs.f ${MAKEFILE}
154+
${FC} ${FFLAGS} -c intsubs.f
155+
156+
eigmode.mod: eigmode.f ${MAKEFILE} parameters.mod
157+
${FC} ${FFLAGS} -c eigmode.f
158+
159+
nc_subs.mod: nc_subs.F ${MAKEFILE} parameters.mod \
160+
atconst.mod occonst.mod timinfo.mod \
161+
atstate.mod ocstate.mod intrfac.mod ${NCDINC}
162+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c nc_subs.F
163+
164+
hra_out.mod: hra_out.F ${MAKEFILE} parameters.mod \
165+
atconst.mod timinfo.mod \
166+
atstate.mod nc_subs.mod intrfac.mod ${NCDINC}
167+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c hra_out.F
168+
169+
topsubs.mod: topsubs.F ${MAKEFILE} parameters.mod \
170+
atconst.mod occonst.mod intsubs.mod nc_subs.mod ${NCDINC}
171+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c topsubs.F
172+
173+
areasubs.mod: areasubs_diag.F ${MAKEFILE} parameters.mod \
174+
atconst.mod occonst.mod timinfo.mod intrfac.mod \
175+
nc_subs.mod ${NCDINC}
176+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c areasubs_diag.F
177+
178+
covaria.mod: covaria_diag.F ${MAKEFILE} parameters.mod \
179+
atstate.mod ocstate.mod intrfac.mod nc_subs.mod ${NCDINC}
180+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c covaria_diag.F
181+
182+
mondiag.mod: monitor_diag.F ${MAKEFILE} parameters.mod \
183+
atconst.mod occonst.mod atstate.mod ocstate.mod \
184+
intrfac.mod radiate.mod timinfo.mod monitor.mod \
185+
nc_subs.mod ${NCDINC}
186+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c monitor_diag.F
187+
188+
qocdiag.mod: qocdiag.F ${MAKEFILE} parameters.mod \
189+
occonst.mod ocstate.mod timinfo.mod nc_subs.mod ${NCDINC}
190+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c qocdiag.F
191+
192+
timavge.mod: timavge.F ${MAKEFILE} parameters.mod \
193+
atconst.mod occonst.mod atstate.mod ocstate.mod \
194+
intrfac.mod nc_subs.mod ${NCDINC}
195+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c timavge.F
196+
197+
# Object files:
198+
# -------------
199+
# Keep the library routines as objects rather thatn modules for
200+
# ease of swapping between the library and source versions of
201+
# LAPACK/BLAS, and for possible change of FFT package to FFTW
202+
203+
q-gcm.o: q-gcm.F in_param.f out_param.f \
204+
${MAKEFILE} ${MODS} ${NCDINC}
205+
${FC} ${FFLAGS} ${QGOPTS} ${NCINCL} -c q-gcm.F
206+
207+
fftsubs.o: fftsubs.f ${MAKEFILE}
208+
${FC} ${FFLAGS} -c fftsubs.f
209+
210+
lasubs.o: lasubs.f ${MAKEFILE}
211+
${FC} ${FFLAGS} -c -o lasubs.o lasubs.f
212+
# Need to permit 80 character lines when getting LAPACK/BLAS from lasubs.f
213+
# Add this to the FFLAGS for each compiler, as the
214+
# option syntax for this varies between compilers
215+
216+
fullprog.F: ${SRCS}
217+
cat ${SRCS} > fullprog.F
218+
219+
# Compile test programs with compiler options ${TPFLAGS}
220+
# Normally use the default (vanilla) options, by not setting TPFLAGS
221+
# Can also use ${FFLAGS}, which are usually chosen for optimisation
222+
# May sometimes want the ${DEBUGS} options, of course
223+
# Note that when building straight from source files in this way,
224+
# the files need to be ordered consistently with any dependencies
225+
226+
eigtest: eigtest.f in_param.f ${MAKEFILE} parameters_data.F atconst_data.F \
227+
occonst_data.F intrfac_data.F radiate_data.F eigmode.f
228+
${FC} ${TPFLAGS} -o eigtest parameters_data.F atconst_data.F \
229+
occonst_data.F intrfac_data.F radiate_data.F eigmode.f \
230+
eigtest.f ${LAPSRC} ${LAPACK}
231+
232+
radtest: radtest.f in_param.f ${MAKEFILE} parameters_data.F \
233+
atconst_data.F occonst_data.F athomog_data.F ochomog_data.F \
234+
atstate_data.F ocstate_data.F intrfac_data.F monitor_data.F \
235+
radiate_data.F xfosubs.F radsubs.f
236+
${FC} ${TPFLAGS} ${QGOPTS} -o radtest parameters_data.F \
237+
atconst_data.F occonst_data.F athomog_data.F ochomog_data.F \
238+
atstate_data.F ocstate_data.F intrfac_data.F monitor_data.F \
239+
radiate_data.F xfosubs.F radsubs.f radtest.f ${LAPSRC} ${LAPACK}
240+
241+
toptest: toptest.F ${MAKEFILE} parameters_data.F atconst_data.F \
242+
occonst_data.F atstate_data.F ocstate_data.F intrfac_data.F \
243+
timinfo_data.F intsubs.f eigmode.f nc_subs.F ${NCDINC} topsubs.F
244+
${FC} ${TPFLAGS} ${QGOPTS} ${NCINCL} -o toptest parameters_data.F \
245+
atconst_data.F occonst_data.F atstate_data.F ocstate_data.F \
246+
intrfac_data.F timinfo_data.F nc_subs.F intsubs.f \
247+
eigmode.f topsubs.F toptest.F ${LAPSRC} ${LAPACK} ${NCLINK}
248+
249+
xfotest: xfotest.F in_param.f ${MAKEFILE} parameters_data.F \
250+
atconst_data.F occonst_data.F athomog_data.F ochomog_data.F \
251+
atstate_data.F ocstate_data.F intrfac_data.F radiate_data.F \
252+
timinfo_data.F monitor_data.F nc_subs.F eigmode.f \
253+
${NCDINC} xfosubs.F topsubs.F radsubs.f intsubs.f
254+
${FC} ${TPFLAGS} ${QGOPTS} ${NCINCL} -o xfotest parameters_data.F \
255+
atconst_data.F occonst_data.F athomog_data.F ochomog_data.F \
256+
atstate_data.F ocstate_data.F intrfac_data.F radiate_data.F \
257+
timinfo_data.F monitor_data.F nc_subs.F xfosubs.F \
258+
topsubs.F radsubs.f intsubs.f eigmode.f \
259+
xfotest.F ${LAPSRC} ${LAPACK} ${NCLINK}
260+
261+
EXECS = eigtest radtest toptest xfotest q-gcm
262+
INTERMEDIATES = *.mod *.o *.l *.lst *__genmod.* *.list *.chek
263+
264+
clean:
265+
rm -f ${INTERMEDIATES} ${EXECS}
266+
267+
tidy:
268+
rm -f ${INTERMEDIATES}

0 commit comments

Comments
 (0)