forked from altMITgcm/MITgcm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cpl_read_params.F
119 lines (102 loc) · 4.21 KB
/
cpl_read_params.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
C $Header: /u/gcmpack/MITgcm/pkg/atm_ocn_coupler/cpl_read_params.F,v 1.6 2016/01/06 00:32:44 jmc Exp $
C $Name: $
#include "CPP_OPTIONS.h"
CBOP 0
C !ROUTINE: CPL_READ_PARAMS
C !INTERFACE:
SUBROUTINE CPL_READ_PARAMS( msgUnit )
C !DESCRIPTION:
C *==========================================================*
C | SUBROUTINE CPL_READ_PARAMS
C | o Read coupler and mapping parameters
C *==========================================================*
C !USES:
IMPLICIT NONE
C == Global variables ==
#include "CPL_PARAMS.h"
C !INPUT/OUTPUT PARAMETERS:
C msgUnit :: log-file I/O unit
INTEGER msgUnit
C !LOCAL VARIABLES:
INTEGER ioUnit
LOGICAL fileExist
CEOP
NAMELIST /COUPLER_PARAMS/
& cpl_sequential,
& cpl_exchange_RunOff,
& cpl_exchange1W_sIce, cpl_exchange2W_sIce,
& cpl_exchange_SaltPl, cpl_exchange_DIC,
& runOffMapSize, runOffMapFile
C-- Default values for Coupler parameters
cpl_sequential = 0
C default coupling-exch selector value: fit a simple warm
C aqua-planet (no land, no seaice, no CO2/DIC coupling)
cpl_exchange_RunOff = 0
cpl_exchange1W_sIce = 0
cpl_exchange2W_sIce = 0
cpl_exchange_SaltPl = 0
cpl_exchange_DIC = 0
runOffMapSize = 0
runOffMapFile = ' '
C- other parameters:
cplErrorCount = 0
fileExist = .FALSE.
C-- Read-in parameter file:
INQUIRE( FILE='data.cpl', EXIST=fileExist )
IF ( fileExist ) THEN
WRITE(msgUnit,'(2A)') 'CPL_READ_PARAMS: ',
& 'Reading parameter file "data.cpl"'
ioUnit = 88
OPEN( ioUnit, FILE='data.cpl',STATUS='old')
READ( ioUnit, COUPLER_PARAMS )
CLOSE(ioUnit )
ELSE
cplErrorCount = 1
WRITE(msgUnit,'(2A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& 'parameter file "data.cpl" not found'
WRITE(msgUnit,'(2A,I4,A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
ENDIF
C-- Check parameter consistency:
IF ( cpl_exchange2W_sIce.EQ.3 .AND. cpl_sequential.EQ.0 ) THEN
cplErrorCount = cplErrorCount + 1
WRITE(msgUnit,'(2A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& 'needs "cpl_sequential=1" to use: cpl_exchange2W_sIce=3'
WRITE(msgUnit,'(2A,I4,A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
ENDIF
IF ( cpl_exchange2W_sIce.EQ.1 .AND. cpl_sequential.EQ.1 ) THEN
cplErrorCount = cplErrorCount + 1
WRITE(msgUnit,'(2A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& 'needs "cpl_sequential=0" to use: cpl_exchange2W_sIce=1'
WRITE(msgUnit,'(2A,I4,A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
ENDIF
C-- Print summary of Coupler parameters value
IF ( cplErrorCount.EQ.0 ) THEN
WRITE(msgUnit,'(2A)') 'CPL_READ_PARAMS: ',
& '------ Coupler parameter Summary: -----------------'
C- main coupling time-stepping selector:
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_sequential = ', cpl_sequential
C- cpl_exchange field selector:
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange_RunOff =', cpl_exchange_RunOff
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange1W_sIce =', cpl_exchange1W_sIce
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange2W_sIce =', cpl_exchange2W_sIce
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange_SaltPl =', cpl_exchange_SaltPl
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange_DIC =', cpl_exchange_DIC
C- run-off mapping parameters:
WRITE(msgUnit,'(2A,I8)') 'CPL_READ_PARAMS: ',
& ' runOffMapSize=', runOffMapSize
WRITE(msgUnit,'(3A)') 'CPL_READ_PARAMS: ',
& ' runOffMapFile=', runOffMapFile
WRITE(msgUnit,'(2A)') 'CPL_READ_PARAMS: ',
& '------ End of Coupler parameter Summary ------------'
ENDIF
RETURN
END