/[MITgcm]/MITgcm/pkg/thsice/thsice_check.F
ViewVC logotype

Contents of /MITgcm/pkg/thsice/thsice_check.F

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


Revision 1.10 - (show annotations) (download)
Fri Nov 6 22:32:52 2015 UTC (8 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, HEAD
Changes since 1.9: +3 -3 lines
- skip the stop for missing Atmos BC when thSIce_skipThermo=True

1 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_check.F,v 1.9 2015/07/29 00:48:24 jmc Exp $
2 C $Name: $
3
4 #include "THSICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: THSICE_CHECK
8 C !INTERFACE:
9
10 SUBROUTINE THSICE_CHECK( myThid )
11
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | S/R THSICE_CHECK
15 C | o Check parameters and other package dependences
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 "THSICE_SIZE.h"
27 #include "THSICE_PARAMS.h"
28
29 C !INPUT/OUTPUT PARAMETERS:
30 C myThid :: my Thread Id number
31 INTEGER myThid
32
33 C !LOCAL VARIABLES:
34 C msgBuf :: Informational/error message buffer
35 CHARACTER*(MAX_LEN_MBUF) msgBuf
36 INTEGER errCount
37 CEOP
38
39 _BEGIN_MASTER(myThid)
40 errCount = 0
41
42 WRITE(msgBuf,'(A)') 'THSICE_CHECK: #define THSICE'
43 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
44 & SQUEEZE_RIGHT, myThid )
45
46 C-- Check parameter consistency:
47 IF ( .NOT.( thSIce_skipThermo .OR. useBulkForce .OR. useEXF
48 & .OR. useAIM .OR. useCheapAML .OR. useATM2d ) ) THEN
49 C- need some form of ATM-surface pkg to provide Air-Ice surf fluxes
50 WRITE(msgBuf,'(2A)')
51 & 'THSICE_CHECK: needs some PKG (EXF,Bulk-Force,AIM,CheapAML)'
52 CALL PRINT_ERROR( msgBuf, myThid )
53 WRITE(msgBuf,'(2A)')
54 & 'THSICE_CHECK: to provide Air-Ice surface fluxes for THSICE'
55 CALL PRINT_ERROR( msgBuf, myThid )
56 errCount = errCount + 1
57 ENDIF
58 IF ( thSIceAdvScheme.EQ.0 .AND. thSIce_diffK.NE.0. ) THEN
59 WRITE(msgBuf,'(2A)')
60 & 'THSICE_CHECK: to use thSIce_diffK, needs to select',
61 & ' one advection scheme (thSIceAdvScheme<>0)'
62 CALL PRINT_ERROR( msgBuf, myThid )
63 errCount = errCount + 1
64 ENDIF
65 #ifndef ALLOW_GENERIC_ADVDIFF
66 IF ( thSIceAdvScheme.NE.0 ) THEN
67 WRITE(msgBuf,'(2A)') 'THSICE_CHECK: Need to compile ',
68 & '"generic_advdiff" pkg in order to use thSIceAdvScheme'
69 CALL PRINT_ERROR( msgBuf, myThid )
70 errCount = errCount + 1
71 ENDIF
72 #endif /* ndef ALLOW_GENERIC_ADVDIFF */
73
74 IF ( thSIceBalanceAtmFW.NE.0 ) THEN
75 #ifndef ALLOW_BALANCE_FLUXES
76 WRITE(msgBuf,'(2A)') 'THSICE_CHECK: needs to have ',
77 & 'ALLOW_BALANCE_FLUXES defined to use thSIceBalanceAtmFW'
78 CALL PRINT_ERROR( msgBuf, myThid )
79 errCount = errCount + 1
80 #endif
81 IF ( balanceEmPmR ) THEN
82 WRITE(msgBuf,'(2A)') 'THSICE_CHECK: cannot use',
83 & ' both balanceEmPmR and thSIceBalanceAtmFW'
84 CALL PRINT_ERROR( msgBuf, myThid )
85 errCount = errCount + 1
86 ENDIF
87 ENDIF
88
89 #ifdef ALLOW_AUTODIFF
90 IF ( nitMaxTsf .GT. MaxTsf ) THEN
91 WRITE(msgBuf,'(2A)')
92 & 'THSICE_CHECK: Need to set MaxTsf >= nitMaxTsf for TAF'
93 CALL PRINT_ERROR( msgBuf, myThid )
94 errCount = errCount + 1
95 ENDIF
96 # ifdef ALLOW_DBUG_THSICE
97 WRITE(msgBuf,'(2A)')
98 & 'THSICE_CHECK: cannot compile AD-code with ALLOW_DBUG_THSICE'
99 CALL PRINT_ERROR( msgBuf, myThid )
100 errCount = errCount + 1
101 # endif
102 #endif /* ALLOW_AUTODIFF */
103
104 #ifdef OLD_THSICE_CALL_SEQUENCE
105 WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_CHECK: ',
106 & 'OLD_THSICE_CALL_SEQUENCE code no longer maintained'
107 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
108 & SQUEEZE_RIGHT, myThid )
109 WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_CHECK: ',
110 & 'option and related code will be removed after chkpt-64e'
111 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
112 & SQUEEZE_RIGHT, myThid )
113 #endif /* OLD_THSICE_CALL_SEQUENCE */
114
115 IF ( useAIM .AND. .NOT.( stepFwd_oceMxL .OR. useCoupler )
116 & .AND. tauRelax_MxL.NE. -1. _d 0 ) THEN
117 C- with pkg/aim, usual way to use pkg/thsice is to step-forward Mixed-Layer
118 C (stepFwd_oceMxL=T); otherwise, need to be sure SST are set, e.g. by AIM
119 C when setting tauRelax_MxL=-1 ; add a warning if this is not the case
120 WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_CHECK: ',
121 & 'SST are not stepped forward (stepFwd_oceMx=F)'
122 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
123 & SQUEEZE_RIGHT, myThid )
124 WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_CHECK: ',
125 & 'nor set (from files) by pkg/aim (tauRelax_MxL<>-1)'
126 c & 'nor copied from pkg/aim SST (tauRelax_MxL<>-1.)'
127 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
128 & SQUEEZE_RIGHT, myThid )
129 ENDIF
130
131 IF ( errCount.GE.1 ) THEN
132 WRITE(msgBuf,'(A,I3,A)')
133 & 'THSICE_CHECK: detected', errCount,' fatal error(s)'
134 CALL PRINT_ERROR( msgBuf, myThid )
135 CALL ALL_PROC_DIE( 0 )
136 STOP 'ABNORMAL END: S/R THSICE_CHECK'
137 ENDIF
138
139 _END_MASTER(myThid)
140
141 RETURN
142 END

  ViewVC Help
Powered by ViewVC 1.1.22