/[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.7 - (hide 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 jmc 1.7 C $Header: /u/gcmpack/MITgcm/model/src/load_grid_spacing.F,v 1.6 2010/12/27 14:07:59 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4 jmc 1.2 c #include "PACKAGES_CONFIG.h"
5 jmc 1.1 #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 jmc 1.2 C load grid-spacing (vector array) delX, delY, delR or delRc from file.
15    
16 jmc 1.1 C !USES:
17     IMPLICIT NONE
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21 jmc 1.3 #include "GRID.h"
22 jmc 1.1
23     C !INPUT/OUTPUT PARAMETERS:
24 jmc 1.2 C myThid :: my Thread Id. number
25 jmc 1.1 INTEGER myThid
26     CEOP
27    
28 jmc 1.4 C !FUNCTIONS:
29     INTEGER ILNBLNK
30     EXTERNAL ILNBLNK
31    
32 jmc 1.1 C !LOCAL VARIABLES:
33 jmc 1.3 C msgBuf :: Informational/error message buffer
34 jmc 1.4 INTEGER iLen
35 jmc 1.7 INTEGER i, j, n
36 jmc 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
37    
38 jmc 1.2 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
39    
40     _BEGIN_MASTER( myThid )
41    
42 jmc 1.3 C-- X coordinate
43 jmc 1.1 IF ( delXFile .NE. ' ' ) THEN
44     iLen = ILNBLNK(delXFile)
45 jmc 1.4 CALL READ_GLVEC_RL( delXFile, ' ', delX, Nx, 1, myThid )
46 jmc 1.1 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
47     & ' delX loaded from file: ', delXFile(1:iLen)
48     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
49 jmc 1.2 & SQUEEZE_RIGHT , myThid )
50 jmc 1.1 ENDIF
51    
52 jmc 1.3 C-- Y coordinate
53 jmc 1.1 IF ( delYFile .NE. ' ' ) THEN
54     iLen = ILNBLNK(delYFile)
55 jmc 1.4 CALL READ_GLVEC_RL( delYFile, ' ', delY, Ny, 1, myThid )
56 jmc 1.1 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
57     & ' delY loaded from file: ', delYFile(1:iLen)
58     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
59 jmc 1.2 & SQUEEZE_RIGHT , myThid )
60     ENDIF
61    
62 jmc 1.3 C-- vertical coordinate "R"
63 jmc 1.2 IF ( delRFile .NE. ' ' ) THEN
64     iLen = ILNBLNK(delRFile)
65 jmc 1.4 CALL READ_GLVEC_RL( delRFile, ' ', delR, Nr, 1, myThid )
66 jmc 1.2 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 jmc 1.4 CALL READ_GLVEC_RL( delRcFile, ' ', delRc, Nr+1, 1, myThid )
75 jmc 1.2 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 jmc 1.1 ENDIF
80    
81 jmc 1.3 C-- hybrid sigma vertical coordinate coefficient
82     IF ( hybSigmFile .NE. ' ' ) THEN
83     iLen = ILNBLNK(hybSigmFile)
84 jmc 1.6 CALL READ_GLVEC_RS( hybSigmFile,' ',aHybSigmF,Nr+1, 1,myThid )
85     CALL READ_GLVEC_RS( hybSigmFile,' ',bHybSigmF,Nr+1, 2,myThid )
86 jmc 1.3 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 jmc 1.7 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 jmc 1.2 _END_MASTER(myThid)
151 jmc 1.1 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