/[MITgcm]/MITgcm/model/src/load_grid_spacing.F
ViewVC logotype

Annotation of /MITgcm/model/src/load_grid_spacing.F

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


Revision 1.8 - (hide annotations) (download)
Mon Dec 12 19:00:10 2011 UTC (12 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63g, checkpoint64, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.7: +36 -6 lines
- move delX,delY to new header file (SET_GRID.h) and adjust length to 1rst
  face dimensions.
- move default setting of latBandClimRelax from ini_cartesian_grid.F
  and ini_cylinder_grid.F to load_grid_spacing.F

1 jmc 1.8 C $Header: /u/gcmpack/MITgcm/model/src/load_grid_spacing.F,v 1.7 2010/12/27 23:26:39 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4 jmc 1.8 #include "PACKAGES_CONFIG.h"
5 jmc 1.1 #include "CPP_OPTIONS.h"
6 jmc 1.8 #ifdef ALLOW_EXCH2
7     # include "W2_OPTIONS.h"
8     #endif /* ALLOW_EXCH2 */
9 jmc 1.1
10     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
11     CBOP
12     C !ROUTINE: LOAD_GRID_SPACING
13     C !INTERFACE:
14     SUBROUTINE LOAD_GRID_SPACING( myThid )
15    
16     C !DESCRIPTION:
17 jmc 1.2 C load grid-spacing (vector array) delX, delY, delR or delRc from file.
18    
19 jmc 1.1 C !USES:
20     IMPLICIT NONE
21     #include "SIZE.h"
22     #include "EEPARAMS.h"
23     #include "PARAMS.h"
24 jmc 1.8 #ifdef ALLOW_EXCH2
25     # include "W2_EXCH2_SIZE.h"
26     # include "W2_EXCH2_TOPOLOGY.h"
27     #endif /* ALLOW_EXCH2 */
28 jmc 1.3 #include "GRID.h"
29 jmc 1.8 #include "SET_GRID.h"
30 jmc 1.1
31     C !INPUT/OUTPUT PARAMETERS:
32 jmc 1.2 C myThid :: my Thread Id. number
33 jmc 1.1 INTEGER myThid
34     CEOP
35    
36 jmc 1.4 C !FUNCTIONS:
37     INTEGER ILNBLNK
38     EXTERNAL ILNBLNK
39    
40 jmc 1.1 C !LOCAL VARIABLES:
41 jmc 1.3 C msgBuf :: Informational/error message buffer
42 jmc 1.8 C delYsum :: delY full-domain sum
43 jmc 1.4 INTEGER iLen
44 jmc 1.7 INTEGER i, j, n
45 jmc 1.8 INTEGER gridNx, gridNy
46 jmc 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
47 jmc 1.8 _RL delYsum
48 jmc 1.1
49 jmc 1.2 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
50    
51 jmc 1.8 #ifdef ALLOW_EXCH2
52     gridNx = exch2_mydNx(1)
53     gridNy = exch2_mydNy(1)
54     #else /* ALLOW_EXCH2 */
55     gridNx = Nx
56     gridNy = Ny
57     #endif /* ALLOW_EXCH2 */
58    
59 jmc 1.2 _BEGIN_MASTER( myThid )
60    
61 jmc 1.3 C-- X coordinate
62 jmc 1.1 IF ( delXFile .NE. ' ' ) THEN
63     iLen = ILNBLNK(delXFile)
64 jmc 1.8 CALL READ_GLVEC_RL( delXFile, ' ', delX, gridNx, 1, myThid )
65 jmc 1.1 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
66     & ' delX loaded from file: ', delXFile(1:iLen)
67     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
68 jmc 1.2 & SQUEEZE_RIGHT , myThid )
69 jmc 1.1 ENDIF
70    
71 jmc 1.3 C-- Y coordinate
72 jmc 1.1 IF ( delYFile .NE. ' ' ) THEN
73     iLen = ILNBLNK(delYFile)
74 jmc 1.8 CALL READ_GLVEC_RL( delYFile, ' ', delY, gridNy, 1, myThid )
75 jmc 1.1 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
76     & ' delY loaded from file: ', delYFile(1:iLen)
77     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
78 jmc 1.2 & SQUEEZE_RIGHT , myThid )
79     ENDIF
80    
81 jmc 1.3 C-- vertical coordinate "R"
82 jmc 1.2 IF ( delRFile .NE. ' ' ) THEN
83     iLen = ILNBLNK(delRFile)
84 jmc 1.4 CALL READ_GLVEC_RL( delRFile, ' ', delR, Nr, 1, myThid )
85 jmc 1.2 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
86     & ' delR loaded from file: ', delRFile(1:iLen)
87     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
88     & SQUEEZE_RIGHT , myThid )
89     ENDIF
90    
91     IF ( delRcFile .NE. ' ' ) THEN
92     iLen = ILNBLNK(delRcFile)
93 jmc 1.4 CALL READ_GLVEC_RL( delRcFile, ' ', delRc, Nr+1, 1, myThid )
94 jmc 1.2 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
95     & ' delRc loaded from file: ', delRcFile(1:iLen)
96     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
97     & SQUEEZE_RIGHT , myThid )
98 jmc 1.1 ENDIF
99    
100 jmc 1.3 C-- hybrid sigma vertical coordinate coefficient
101     IF ( hybSigmFile .NE. ' ' ) THEN
102     iLen = ILNBLNK(hybSigmFile)
103 jmc 1.6 CALL READ_GLVEC_RS( hybSigmFile,' ',aHybSigmF,Nr+1, 1,myThid )
104     CALL READ_GLVEC_RS( hybSigmFile,' ',bHybSigmF,Nr+1, 2,myThid )
105 jmc 1.3 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
106     & ' a&b_HybSigmF loaded from file: ', hybSigmFile(1:iLen)
107     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
108     & SQUEEZE_RIGHT , myThid )
109     ENDIF
110    
111 jmc 1.7 C-- Check horizontal grid-spacing
112     IF ( .NOT.usingCurvilinearGrid ) THEN
113     C Note: To avoid multiple copies of the same code in several horiz.grid
114     C initialisation S/R, check horiz.grid spacing here, after
115     C loading delX,delY (and before calling any of these S/R).
116    
117     C-- Check delX grid-spacing:
118     n = 0
119 jmc 1.8 DO i=1,gridNx
120 jmc 1.7 C- check that delX has been set
121     IF ( delX(i).EQ.UNSET_RL ) THEN
122     n = n+1
123     WRITE(msgBuf,'(2A,I5)') 'S/R LOAD_GRID_SPACING:',
124     & ' No value for delX at i =', i
125     CALL PRINT_ERROR( msgBuf, myThid )
126     ENDIF
127     C- check that delX is > 0
128     IF ( delX(i).LE.0. ) THEN
129     n = n+1
130     WRITE(msgBuf,'(2A,I5,A,1PE16.8,A)') 'S/R LOAD_GRID_SPACING:',
131     & ' delX(i=', i, ')=', delX(i), ' : MUST BE >0'
132     CALL PRINT_ERROR( msgBuf, myThid )
133     ENDIF
134     ENDDO
135     IF ( n.GE.1 ) THEN
136     WRITE(msgBuf,'(2A,I5,A)') 'S/R LOAD_GRID_SPACING:',
137     & ' found', n, ' invalid delX values'
138     CALL PRINT_ERROR( msgBuf, myThid )
139     STOP 'ABNORMAL END: S/R LOAD_GRID_SPACING'
140     ENDIF
141    
142     C-- Check delY grid-spacing:
143     n = 0
144 jmc 1.8 DO j=1,gridNy
145 jmc 1.7 C- check that delY has been set
146     IF ( delY(j).EQ.UNSET_RL ) THEN
147     n = n+1
148     WRITE(msgBuf,'(2A,I5)') 'S/R LOAD_GRID_SPACING:',
149     & ' No value for delY at j =', j
150     CALL PRINT_ERROR( msgBuf, myThid )
151     ENDIF
152     C- check that delY is > 0
153     IF ( delY(j).LE.0. ) THEN
154     n = n+1
155     WRITE(msgBuf,'(2A,I5,A,1PE16.8,A)') 'S/R LOAD_GRID_SPACING:',
156     & ' delY(j=', j, ')=', delY(j), ' : MUST BE >0'
157     CALL PRINT_ERROR( msgBuf, myThid )
158     ENDIF
159     ENDDO
160     IF ( n.GE.1 ) THEN
161     WRITE(msgBuf,'(2A,I5,A)') 'S/R LOAD_GRID_SPACING:',
162     & ' found', n, ' invalid delY values'
163     CALL PRINT_ERROR( msgBuf, myThid )
164     STOP 'ABNORMAL END: S/R LOAD_GRID_SPACING'
165     ENDIF
166     C-- end of grid-spacing check (not usingCurvilinearGrid)
167     ENDIF
168    
169 jmc 1.8 C-- Set default (=whole domain) for where relaxation to climatology applies
170     IF ( usingCartesianGrid .OR. usingSphericalPolarGrid ) THEN
171     delYsum = 0.
172     DO j=1,gridNy
173     delYsum = delYsum + delY(j)
174     ENDDO
175     IF ( latBandClimRelax.EQ.UNSET_RL ) THEN
176     latBandClimRelax = delYsum*3. _d 0
177     ENDIF
178     ENDIF
179    
180 jmc 1.2 _END_MASTER(myThid)
181 jmc 1.1 C-- Everyone else must wait for the parameters to be loaded
182     _BARRIER
183    
184     RETURN
185     END

  ViewVC Help
Powered by ViewVC 1.1.22