forked from altMITgcm/MITgcm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gchem_check.F
102 lines (84 loc) · 2.97 KB
/
gchem_check.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
C $Header: /u/gcmpack/MITgcm/pkg/gchem/gchem_check.F,v 1.7 2014/05/21 19:31:23 jmc Exp $
C $Name: $
#include "GCHEM_OPTIONS.h"
SUBROUTINE GCHEM_CHECK( myThid )
C *==========================================================*
C | SUBROUTINE GCHEM_CHECK
C | o Validate basic package setup and inter-package
C | dependencies.
C *==========================================================*
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GCHEM.h"
C === Routine arguments ===
C myThid :: Number of this instance
INTEGER myThid
#ifdef ALLOW_GCHEM
C === Local variables ===
C msgBuf :: Informational/error message buffer
CHARACTER*(MAX_LEN_MBUF) msgBuf
_BEGIN_MASTER(myThid)
WRITE(msgBuf,'(A)') 'GCHEM_CHECK: #define ALLOW_GCHEM'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
#ifdef GCHEM_SEPARATE_FORCING
IF ( useCFC ) THEN
WRITE(msgBuf,'(A)') 'GCHEM_SEPARATE_FORCING not coded for CFC'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
#else /* GCHEM_SEPARATE_FORCING */
IF ( useDIC ) THEN
WRITE(msgBuf,'(A)') 'GCHEM_SEPARATE_FORCING needed to use DIC'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
IF ( useDARWIN ) THEN
WRITE(msgBuf,'(A)') 'GCHEM_SEPARATE_FORCING needed for DARWIN'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
#endif /* GCHEM_SEPARATE_FORCING */
C GCHEM needs passive tracer package
IF ( .NOT.usePTRACERS) THEN
WRITE(msgBuf,'(A)') 'usePTRACERS has to be .TRUE. for GCHEM'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
C GCHEM cannot (yet!) run cfc and dic together
IF ( useDIC .AND. useCFC ) THEN
WRITE(msgBuf,'(A)') 'useDIC and useCFC cannot both be .TRUE.'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
C GCHEM cannot run darwin and dic together
IF ( useDARWIN .AND. useDIC ) THEN
WRITE(msgBuf,'(A)') 'useDARWIN and useDIC cannot both be .TRUE.'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
C GCHEM cannot run darwin and cfc together
IF ( useDARWIN .AND. useCFC ) THEN
WRITE(msgBuf,'(A)') 'useDARWIN and useCFC cannot both be .TRUE.'
CALL PRINT_ERROR( msgBuf , myThid )
STOP 'ABNORMAL END: S/R GCHEM_CHECK'
ENDIF
_END_MASTER(myThid)
#ifdef ALLOW_CFC
C run checks specific to CFC
IF ( useCFC ) THEN
CALL CFC_CHECK( myThid )
ENDIF
#endif
#ifdef ALLOW_DARWIN
C run checks specific to darwin
IF ( useDARWIN ) THEN
CALL DARWIN_CHECK( myThid )
ENDIF
#endif
#endif /* ALLOW_GCHEM */
RETURN
END