forked from altMITgcm/MITgcm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gchem_readparms.F
164 lines (139 loc) · 4.52 KB
/
gchem_readparms.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
C $Header: /u/gcmpack/MITgcm/pkg/gchem/gchem_readparms.F,v 1.21 2016/05/23 13:09:31 jmc Exp $
C $Name: $
#include "GCHEM_OPTIONS.h"
CBOP
C !ROUTINE: GCHEM_READPARMS
C !INTERFACE: ==========================================================
SUBROUTINE GCHEM_READPARMS( myThid )
C !DESCRIPTION:
C Initialize GCHEM parameters, read in data.gchem
C !USES: ===============================================================
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GCHEM.h"
C !INPUT PARAMETERS: ===================================================
C myThid :: thread number
INTEGER myThid
C !OUTPUT PARAMETERS: ==================================================
C none
#ifdef ALLOW_GCHEM
C !LOCAL VARIABLES: ====================================================
C tIter0 :: retired parameter
C iTracer :: loop indices
C iUnit :: unit number for I/O
C msgBuf :: message buffer
INTEGER tIter0
INTEGER iUnit
CHARACTER*(MAX_LEN_MBUF) msgBuf
CEOP
C- Sub-package on/off flags: not fully implemented, requires
C to test the flag before any corresponding pkg S/R call
NAMELIST /GCHEM_PARM01/
& nsubtime,
& useCFC,
& useDIC,
& useBLING,
& useDARWIN,
& Filename1,
& Filename2,
& Filename3,
& Filename4,
& Filename5,
& gchem_int1, gchem_int2, gchem_int3,
& gchem_int4, gchem_int5,
& gchem_rl1, gchem_rl2, gchem_rl3,
& gchem_rl4, gchem_rl5,
& gchem_ForcingPeriod, gchem_ForcingCycle,
& tIter0
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
IF ( .NOT.useGCHEM ) THEN
C- pkg GCHEM is not used
_BEGIN_MASTER(myThid)
C- Track pkg activation status:
C print a (weak) warning if data.gchem is found
CALL PACKAGES_UNUSED_MSG( 'useGCHEM', ' ', ' ' )
_END_MASTER(myThid)
RETURN
ENDIF
_BEGIN_MASTER(myThid)
C Set defaults values for parameters in GCHEM.h
useCFC = .FALSE.
useDIC = .FALSE.
useBLING = .FALSE.
useDARWIN = .FALSE.
tIter0 = UNSET_I
nsubtime=1
Filename1=' '
Filename2=' '
Filename3=' '
Filename4=' '
Filename5=' '
gchem_int1=0
gchem_int2=0
gchem_int3=0
gchem_int4=0
gchem_int5=0
gchem_rl1=0. _d 0
gchem_rl2=0. _d 0
gchem_rl3=0. _d 0
gchem_rl4=0. _d 0
gchem_rl5=0. _d 0
c default periodic forcing to same as for physics
gchem_ForcingPeriod=externForcingPeriod
gchem_ForcingCycle=externForcingCycle
C Open and read the data.gchem file
WRITE(msgBuf,'(A)') ' GCHEM_READPARMS: opening data.gchem'
CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
CALL OPEN_COPY_DATA_FILE(
I 'data.gchem', 'GCHEM_PARM01',
O iUnit,
I myThid )
READ(UNIT=iUnit,NML=GCHEM_PARM01)
WRITE(msgBuf,'(A)')
& ' GCHEM_READPARMS: finished reading data.gchem'
CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
C Close the open data file
CLOSE(iUnit)
C- Check for retired parameters:
IF ( tIter0 .NE. UNSET_I ) THEN
c nRetired = nRetired+1
WRITE(msgBuf,'(A,A)')
& 'S/R GCHEM_READPARMS: Paramater "tIter0" is',
& ' no longer allowed in file "data.gchem"'
CALL PRINT_ERROR( msgBuf , myThid)
WRITE(msgBuf,'(A,A)')
& 'S/R GCHEM_READPARMS: "tIter0" has been moved to',
& ' PTRACERS_Iter0 in file "data.ptracers".'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R GCHEM_READPARMS'
ENDIF
_END_MASTER(myThid)
C Everyone else must wait for the parameters to be loaded
_BARRIER
#ifdef ALLOW_CFC
IF ( useCFC ) THEN
CALL CFC_READPARMS(myThid)
ENDIF
#endif
#ifdef ALLOW_DIC
IF ( useDIC ) THEN
CALL DIC_READPARMS(myThid)
ENDIF
#endif
#ifdef ALLOW_BLING
IF ( useBLING ) THEN
CALL BLING_READPARMS(myThid)
ENDIF
#endif
#ifdef ALLOW_DARWIN
IF ( useDARWIN ) THEN
CALL DARWIN_READPARMS(myThid)
ENDIF
#endif
#endif /* ALLOW_GCHEM */
RETURN
END