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

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

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


Revision 1.3 - (hide annotations) (download)
Wed Sep 26 18:09:15 2001 UTC (22 years, 7 months ago) by cnh
Branch: MAIN
CVS Tags: release1_b1, checkpoint43, ecco-branch-mod1, release1_beta1, checkpoint42, checkpoint41
Branch point for: release1, ecco-branch, release1_coupled
Changes since 1.2: +21 -8 lines
Bringing comments up to data and formatting for document extraction.

1 cnh 1.3 C $Header: /u/gcmpack/models/MITgcmUV/model/src/ini_curvilinear_grid.F,v 1.2 2001/05/29 14:01:37 adcroft Exp $
2     C $Name: $
3 adcroft 1.2
4     #include "CPP_OPTIONS.h"
5    
6 cnh 1.3 CBOP
7     C !ROUTINE: INI_CURVILINEAR_GRID
8     C !INTERFACE:
9 adcroft 1.2 SUBROUTINE INI_CURVILINEAR_GRID( myThid )
10 cnh 1.3 C !DESCRIPTION: \bv
11     C *==========================================================*
12     C | SUBROUTINE INI_CURVILINEAR_GRID
13     C | o Initialise curvilinear coordinate system
14     C *==========================================================*
15     C | Curvilinear grid settings are read from a file rather
16     C | than coded in-line as for cartesian and spherical polar.
17     C | This is more general but you have to create the grid
18     C | yourself.
19     C *==========================================================*
20     C \ev
21    
22     C !USES:
23 adcroft 1.2 IMPLICIT NONE
24     C === Global variables ===
25     #include "SIZE.h"
26     #include "EEPARAMS.h"
27     #include "PARAMS.h"
28     #include "GRID.h"
29    
30 cnh 1.3 C !INPUT/OUTPUT PARAMETERS:
31 adcroft 1.2 C == Routine arguments ==
32     C myThid - Number of this instance of INI_CARTESIAN_GRID
33     INTEGER myThid
34    
35 cnh 1.3 C !LOCAL VARIABLES:
36 adcroft 1.2 C == Local variables ==
37     INTEGER bi,bj
38     INTEGER I,J
39 cnh 1.3 CEOP
40 adcroft 1.2
41     C-- Set everything to zero everywhere
42     DO bj = myByLo(myThid), myByHi(myThid)
43     DO bi = myBxLo(myThid), myBxHi(myThid)
44    
45     DO J=1-Oly,sNy+Oly
46     DO I=1-Olx,sNx+Olx
47     XC(i,j,bi,bj)=0.
48     YC(i,j,bi,bj)=0.
49     XG(i,j,bi,bj)=0.
50     YG(i,j,bi,bj)=0.
51     DXC(i,j,bi,bj)=0.
52     DYC(i,j,bi,bj)=0.
53     DXG(i,j,bi,bj)=0.
54     DYG(i,j,bi,bj)=0.
55     DXF(i,j,bi,bj)=0.
56     DYF(i,j,bi,bj)=0.
57     DXV(i,j,bi,bj)=0.
58     DYU(i,j,bi,bj)=0.
59     RA(i,j,bi,bj)=0.
60     RAZ(i,j,bi,bj)=0.
61     RAW(i,j,bi,bj)=0.
62     RAS(i,j,bi,bj)=0.
63     tanPhiAtU(i,j,bi,bj)=0.
64     tanPhiAtV(i,j,bi,bj)=0.
65     cosFacU(J,bi,bj)=1.
66     cosFacV(J,bi,bj)=1.
67     sqcosFacU(J,bi,bj)=1.
68     sqcosFacV(J,bi,bj)=1.
69     ENDDO
70     ENDDO
71    
72     ENDDO ! bi
73     ENDDO ! bj
74    
75     C Here we make no assumptions about grid symmetry and simply
76     C read the raw grid data from files
77    
78     C- Cell centered quantities
79     CALL MDSREADFIELD('LONC.bin',readBinaryPrec,'RL',1,XC, 1,myThid)
80     CALL MDSREADFIELD('LATC.bin',readBinaryPrec,'RL',1,YC, 1,myThid)
81     _EXCH_XY_R4(XC,myThid)
82     _EXCH_XY_R4(YC,myThid)
83    
84     CALL MDSREADFIELD('DXF.bin',readBinaryPrec,'RL',1,DXF, 1,myThid)
85     CALL MDSREADFIELD('DYF.bin',readBinaryPrec,'RL',1,DYF, 1,myThid)
86     C !!! _EXCH_OUV_XY_R4(DXF, DYF, unSigned, myThid )
87     cs! this is not correct! <= need paired exchange for DXF,DYF
88     _EXCH_XY_R4(DXF,myThid)
89     _EXCH_XY_R4(DYF,myThid)
90    
91     CALL MDSREADFIELD('RA.bin',readBinaryPrec,'RL',1,RA, 1,myThid)
92     _EXCH_XY_R4(RA,myThid )
93    
94     C- Corner quantities
95     C *********** this are not degbugged ************
96     CALL MDSREADFIELD('LONG.bin',readBinaryPrec,'RL',1,XG, 1,myThid)
97     CALL MDSREADFIELD('LATG.bin',readBinaryPrec,'RL',1,YG, 1,myThid)
98     cs- this block needed by cubed sphere until we write more useful I/O routines
99     bi=3
100     bj=1
101     YG(1,sNy+1,bj,1)=YG(1,1,bi,1)
102     bj=bj+2
103     YG(1,sNy+1,bj,1)=YG(1,1,bi,1)
104     bj=bj+2
105     YG(1,sNy+1,bj,1)=YG(1,1,bi,1)
106     bi=6
107     bj=2
108     YG(sNx+1,1,bj,1)=YG(1,1,bi,1)
109     bj=bj+2
110     YG(sNx+1,1,bj,1)=YG(1,1,bi,1)
111     bj=bj+2
112     YG(sNx+1,1,bj,1)=YG(1,1,bi,1)
113     cs- end block
114     CALL EXCH_Z_XY_RS(XG,myThid)
115     CALL EXCH_Z_XY_RS(YG,myThid)
116    
117     CALL MDSREADFIELD('DXV.bin',readBinaryPrec,'RL',1,DXV, 1,myThid)
118     CALL MDSREADFIELD('DYU.bin',readBinaryPrec,'RL',1,DYU, 1,myThid)
119     cs- this block needed by cubed sphere until we write more useful I/O routines
120     C !!! _EXCH_ZUV_XY_R4(DXV, DYU, unSigned, myThid)
121     cs! this is not correct <= need paired exchange for dxv,dyu
122     CALL EXCH_Z_XY_RS(DXV,myThid)
123     CALL EXCH_Z_XY_RS(DYU,myThid)
124     DO bj = myByLo(myThid), myByHi(myThid)
125     DO bi = myBxLo(myThid), myBxHi(myThid)
126     DXV(sNx+1,1,bi,bj)=DXV(1,1,bi,bj)
127     DXV(1,sNy+1,bi,bj)=DXV(1,1,bi,bj)
128     DYU(sNx+1,1,bi,bj)=DYU(1,1,bi,bj)
129     DYU(1,sNy+1,bi,bj)=DYU(1,1,bi,bj)
130     ENDDO
131     ENDDO
132     cs- end block
133     C !!! _EXCH_ZUV_XY_R4(DXV, DYU, unSigned, myThid)
134     cs! this is not correct <= need paired exchange for dxv,dyu
135     CALL EXCH_Z_XY_RS(DXV,myThid)
136     CALL EXCH_Z_XY_RS(DYU,myThid)
137    
138     CALL MDSREADFIELD('RAZ.bin',readBinaryPrec,'RL',1,RAZ, 1,myThid)
139     cs- this block needed by cubed sphere until we write more useful I/O routines
140     CALL EXCH_Z_XY_RS(RAZ , myThid )
141     DO bj = myByLo(myThid), myByHi(myThid)
142     DO bi = myBxLo(myThid), myBxHi(myThid)
143     RAZ(sNx+1,1,bi,bj)=RAZ(1,1,bi,bj)
144     RAZ(1,sNy+1,bi,bj)=RAZ(1,1,bi,bj)
145     ENDDO
146     ENDDO
147     cs- end block
148     CALL EXCH_Z_XY_RS(RAZ,myThid)
149    
150     C- Staggered (u,v pairs) quantities
151     CALL MDSREADFIELD('DXC.bin',readBinaryPrec,'RL',1,DXC, 1,myThid)
152     CALL MDSREADFIELD('DYC.bin',readBinaryPrec,'RL',1,DYC, 1,myThid)
153     CALL EXCH_UV_XY_RS(DXC,DYC,.FALSE.,myThid)
154    
155     CALL MDSREADFIELD('RAW.bin',readBinaryPrec,'RL',1,RAW, 1,myThid)
156     CALL MDSREADFIELD('RAS.bin',readBinaryPrec,'RL',1,RAS, 1,myThid)
157     cs- this block needed by cubed sphere until we write more useful I/O routines
158     DO bj = myByLo(myThid), myByHi(myThid)
159     DO bi = myBxLo(myThid), myBxHi(myThid)
160     DO J = 1,sNy
161     c RAW(sNx+1,J,bi,bj)=RAW(1,J,bi,bj)
162     c RAS(J,sNy+1,bi,bj)=RAS(J,1,bi,bj)
163     ENDDO
164     ENDDO
165     ENDDO
166     cs- end block
167     CALL EXCH_UV_XY_RS(RAW,RAS,.FALSE.,myThid)
168    
169     CALL MDSREADFIELD('DXG.bin',readBinaryPrec,'RL',1,DXG, 1,myThid)
170     CALL MDSREADFIELD('DYG.bin',readBinaryPrec,'RL',1,DYG, 1,myThid)
171     cs- this block needed by cubed sphere until we write more useful I/O routines
172     DO bj = myByLo(myThid), myByHi(myThid)
173     DO bi = myBxLo(myThid), myBxHi(myThid)
174     DO J = 1,sNy
175     c DYG(sNx+1,J,bi,bj)=DYG(1,J,bi,bj)
176     c DXG(J,sNy+1,bi,bj)=DXG(J,1,bi,bj)
177     ENDDO
178     ENDDO
179     ENDDO
180     cs- end block
181     CALL EXCH_UV_XY_RS(DYG,DXG,.FALSE.,myThid)
182    
183     c write(10) XC
184     c write(10) YC
185     c write(10) DXF
186     c write(10) DYF
187     c write(10) RA
188     c write(10) XG
189     c write(10) YG
190     c write(10) DXV
191     c write(10) DYU
192     c write(10) RAZ
193     c write(10) DXC
194     c write(10) DYC
195     c write(10) RAW
196     c write(10) RAS
197     c write(10) DXG
198     c write(10) DYG
199    
200     RETURN
201     END

  ViewVC Help
Powered by ViewVC 1.1.22