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

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

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


Revision 1.7 - (show annotations) (download)
Mon Dec 27 23:26:39 2010 UTC (13 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint63, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.6: +60 -1 lines
check for valid horizontal grid spacing: stop if unset or if =0 or less

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

  ViewVC Help
Powered by ViewVC 1.1.22