/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_check.F
ViewVC logotype

Contents of /MITgcm/pkg/generic_advdiff/gad_check.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.8 - (show annotations) (download)
Fri Apr 4 20:29:08 2014 UTC (10 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64w, checkpoint64v, checkpoint65, checkpoint65a
Changes since 1.7: +7 -7 lines
- Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage
  which are specific to TAF/TAMC).

1 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_check.F,v 1.7 2013/03/25 19:26:59 heimbach Exp $
2 C $Name: $
3
4 #include "GAD_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: GAD_CHECK
8 C !INTERFACE:
9 SUBROUTINE GAD_CHECK( myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE GAD_CHECK
14 C | o Check consistency with model configuration
15 C *==========================================================*
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21
22 C === Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "GAD.h"
27
28 C !INPUT/OUTPUT PARAMETERS:
29 C === Routine arguments ===
30 C myThid :: my Thread Id number
31 INTEGER myThid
32
33 #ifdef ALLOW_GENERIC_ADVDIFF
34 C !LOCAL VARIABLES:
35 C === Local variables ===
36 C msgBuf :: Informational/error message buffer
37 CHARACTER*(MAX_LEN_MBUF) msgBuf
38 INTEGER minOlSize, n
39 CEOP
40
41 _BEGIN_MASTER(myThid)
42
43 WRITE(msgBuf,'(A)') 'GAD_CHECK: #define ALLOW_GENERIC_ADVDIFF'
44 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
45 & SQUEEZE_RIGHT , myThid )
46
47 C-- Print out some kee parameters :
48 C (better chance to know why it is stopping if print first & check after)
49
50 C-- Check Options:
51 #ifdef DISABLE_MULTIDIM_ADVECTION
52 c IF ( useMultiDimAdvec ) THEN
53 IF ( useMultiDimAdvec .OR.
54 & tempSOM_Advection .OR. saltSOM_Advection
55 & ) THEN
56 WRITE(msgBuf,'(2A)') 'GAD_CHECK: ',
57 & 'trying to use Multi-Dim. Advection code that is not compiled'
58 CALL PRINT_ERROR( msgBuf , myThid )
59 WRITE(msgBuf,'(2A)') 'GAD_CHECK: ',
60 & 'Re-compile with: #undef DISABLE_MULTIDIM_ADVECTION'
61 CALL PRINT_ERROR( msgBuf , myThid)
62 STOP 'ABNORMAL END: S/R GAD_CHECK'
63 ENDIF
64 #endif /* DISABLE_MULTIDIM_ADVECTION */
65
66 #ifndef GAD_ALLOW_TS_SOM_ADV
67 IF ( tempAdvScheme.EQ.ENUM_SOM_PRATHER
68 & .OR.saltAdvScheme.EQ.ENUM_SOM_PRATHER
69 & .OR.tempAdvScheme.EQ.ENUM_SOM_LIMITER
70 & .OR.saltAdvScheme.EQ.ENUM_SOM_LIMITER ) THEN
71 WRITE(msgBuf,'(2A)') 'GAD_CHECK: ',
72 & 'trying to use 2nd.Order-Moment Advection that is not compiled'
73 WRITE(msgBuf,'(2A)') 'GAD_CHECK: ',
74 & 'Re-compile with: #define GAD_ALLOW_TS_SOM_ADV'
75 CALL PRINT_ERROR( msgBuf , myThid)
76 STOP 'ABNORMAL END: S/R GAD_CHECK'
77 ENDIF
78 #endif /* ndef GAD_ALLOW_TS_SOM_ADV */
79
80 C-- Check parameters:
81
82 C- Check internal wave dynamics stability regarding active tracer time-stepping
83 IF ( .NOT.staggerTimeStep ) THEN
84 IF ( tempIsActiveTr .AND.
85 & .NOT.(AdamsBashforthGt.OR.AdamsBashforth_T)
86 & .OR. saltIsActiveTr .AND.
87 & .NOT.(AdamsBashforthGs.OR.AdamsBashforth_S)
88 & ) THEN
89 C- issue a warning in Error msg file:
90 WRITE(msgBuf,'(2A)') '** WARNING ** GAD_CHECK: ',
91 & 'potentially unstable time-stepping (Internal Wave)'
92 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
93 & SQUEEZE_RIGHT , myThid)
94 WRITE(msgBuf,'(2A)') '** WARNING ** GAD_CHECK: ',
95 & 'need "staggerTimeStep=.TRUE." in "data", nml PARM01'
96 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
97 & SQUEEZE_RIGHT , myThid)
98 ENDIF
99 ENDIF
100
101 C-- Check size of overlap region
102 C-- Note: checking minimum size of overlap due to tracer limitations moved here;
103 C previously done in GAD_INIT_FIXED, PTRACERS_INIT_FIXED and GMREDI_CHECK;
104 C for mom limitations, done in CONFIG_CHECK, but can move to MOM_INIT_FIXED
105
106 minOlSize = MAX( GAD_OlMinSize(1)+GAD_OlMinSize(2),
107 & GAD_OlMinSize(2)+GAD_OlMinSize(3),
108 & GAD_OlMinSize(1)*GAD_OlMinSize(3) )
109 IF ( OLx.LT.minOlSize .OR. OLy.LT.minOlSize ) THEN
110 WRITE(msgBuf,'(A,2I3,A)') 'GAD_CHECK: Overlap Size OLx,OLy=',
111 & OLx, OLy,' too small'
112 CALL PRINT_ERROR( msgBuf, myThid )
113 WRITE(msgBuf,'(2A)') 'GAD_CHECK: ',
114 & 'One tracer (T,S,pTrac, ...) advection scheme'
115 CALL PRINT_ERROR( msgBuf, myThid )
116 WRITE(msgBuf,'(2A,I3,A,3I2,A)') 'GAD_CHECK: ',
117 & 'needs at least OLx,OLy=', minOlSize,
118 & ' (OlMinSize=', (GAD_OlMinSize(n),n=1,3), ')'
119 CALL PRINT_ERROR( msgBuf, myThid )
120 STOP 'ABNORMAL END: S/R GAD_CHECK'
121 ENDIF
122
123 C Check compatibility with adjoint
124 #ifdef ALLOW_AUTODIFF
125 IF ( tempAdvScheme.EQ.ENUM_OS7MP .OR.
126 & saltAdvScheme.EQ.ENUM_OS7MP ) THEN
127 WRITE(msgBuf,'(A,I3,A)') 'GAD_CHECK: advection scheme OS7MP ',
128 & ENUM_OS7MP,
129 & ' not yet implemented for adjoint'
130 CALL PRINT_ERROR( msgBuf, myThid )
131 STOP 'ABNORMAL END: S/R GAD_CHECK'
132 ENDIF
133 #endif /* ALLOW_AUTODIFF */
134
135 _END_MASTER(myThid)
136
137 #endif /* ALLOW_GENERIC_ADVDIFF */
138 RETURN
139 END

  ViewVC Help
Powered by ViewVC 1.1.22