/[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.5 - (hide annotations) (download)
Thu Dec 6 16:36:13 2001 UTC (22 years, 6 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint47e_post, checkpoint44e_post, checkpoint46l_post, checkpoint46g_pre, checkpoint47c_post, checkpoint50c_post, checkpoint46f_post, checkpoint48e_post, checkpoint50c_pre, checkpoint44f_post, checkpoint46b_post, checkpoint43a-release1mods, checkpoint48i_post, checkpoint46l_pre, chkpt44d_post, checkpoint51, checkpoint50, checkpoint50d_post, checkpoint50b_pre, checkpoint44e_pre, checkpoint48b_post, checkpoint51d_post, checkpoint48c_pre, checkpoint47d_pre, checkpoint47a_post, checkpoint48d_pre, checkpoint47i_post, checkpoint47d_post, checkpoint46d_pre, checkpoint48d_post, release1-branch_tutorials, checkpoint48f_post, checkpoint45d_post, checkpoint46j_pre, chkpt44a_post, checkpoint44h_pre, checkpoint48h_post, checkpoint51b_pre, checkpoint46a_post, checkpoint47g_post, checkpoint46j_post, checkpoint46k_post, chkpt44c_pre, checkpoint48a_post, checkpoint45a_post, checkpoint50f_post, checkpoint50a_post, checkpoint50f_pre, checkpoint47j_post, branch-exfmods-tag, checkpoint44g_post, checkpoint46e_pre, checkpoint48c_post, checkpoint45b_post, checkpoint46b_pre, release1-branch-end, release1_final_v1, checkpoint51b_post, checkpoint51c_post, checkpoint46c_pre, checkpoint46, checkpoint47b_post, checkpoint44b_post, checkpoint46h_pre, checkpoint46m_post, checkpoint46a_pre, checkpoint50g_post, checkpoint45c_post, checkpoint44h_post, checkpoint46g_post, checkpoint50h_post, checkpoint50e_pre, checkpoint50i_post, checkpoint47f_post, checkpoint50e_post, chkpt44a_pre, checkpoint46i_post, checkpoint46c_post, checkpoint50d_pre, checkpoint46e_post, checkpoint44b_pre, checkpoint47, checkpoint44, checkpoint45, checkpoint48, checkpoint49, checkpoint46h_post, chkpt44c_post, checkpoint48g_post, checkpoint47h_post, checkpoint44f_pre, checkpoint46d_post, checkpoint50b_post, release1-branch_branchpoint, checkpoint51a_post
Branch point for: branch-exfmods-curt, release1_final, release1-branch
Changes since 1.4: +42 -3 lines
Added fix for overlaps of DXV,DYU and DXF,DYF.
 o no expts are affected since these grid factors are not
   used in the vector-invariant case
 o they are used by the deformation based dissipation operator

1 adcroft 1.5 C $Header: /u/gcmpack/models/MITgcmUV/model/src/ini_curvilinear_grid.F,v 1.4 2001/11/28 16:45:16 adcroft Exp $
2 cnh 1.3 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 adcroft 1.4 CALL MDSREADFIELD('LONC.bin',readBinaryPrec,'RS',1,XC, 1,myThid)
80     CALL MDSREADFIELD('LATC.bin',readBinaryPrec,'RS',1,YC, 1,myThid)
81 adcroft 1.2 _EXCH_XY_R4(XC,myThid)
82     _EXCH_XY_R4(YC,myThid)
83    
84 adcroft 1.4 CALL MDSREADFIELD('DXF.bin',readBinaryPrec,'RS',1,DXF, 1,myThid)
85     CALL MDSREADFIELD('DYF.bin',readBinaryPrec,'RS',1,DYF, 1,myThid)
86 adcroft 1.2 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 adcroft 1.5 cs! fix overlaps:
91     DO bj = myByLo(myThid), myByHi(myThid)
92     DO bi = myBxLo(myThid), myBxHi(myThid)
93     DO j=1,sNy
94     DO i=1,Olx
95     DXF(1-i,j,bi,bj)=DXF(i,j,bi,bj)
96     DXF(sNx+i,j,bi,bj)=DXF(sNx+1-i,j,bi,bj)
97     DYF(1-i,j,bi,bj)=DYF(i,j,bi,bj)
98     DYF(sNx+i,j,bi,bj)=DYF(sNx+1-i,j,bi,bj)
99     ENDDO
100     ENDDO
101     DO j=1,Oly
102     DO i=1,sNx
103     DXF(i,1-j,bi,bj)=DXF(i,j,bi,bj)
104     DXF(i,sNy+j,bi,bj)=DXF(i,sNy+1-j,bi,bj)
105     DYF(i,1-j,bi,bj)=DYF(i,j,bi,bj)
106     DYF(i,sNy+j,bi,bj)=DYF(i,sNy+1-j,bi,bj)
107     ENDDO
108     ENDDO
109     ENDDO
110     ENDDO
111     cs
112 adcroft 1.2
113 adcroft 1.4 CALL MDSREADFIELD('RA.bin',readBinaryPrec,'RS',1,RA, 1,myThid)
114 adcroft 1.2 _EXCH_XY_R4(RA,myThid )
115    
116     C- Corner quantities
117     C *********** this are not degbugged ************
118 adcroft 1.4 CALL MDSREADFIELD('LONG.bin',readBinaryPrec,'RS',1,XG, 1,myThid)
119     CALL MDSREADFIELD('LATG.bin',readBinaryPrec,'RS',1,YG, 1,myThid)
120 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
121     bi=3
122     bj=1
123     YG(1,sNy+1,bj,1)=YG(1,1,bi,1)
124     bj=bj+2
125     YG(1,sNy+1,bj,1)=YG(1,1,bi,1)
126     bj=bj+2
127     YG(1,sNy+1,bj,1)=YG(1,1,bi,1)
128     bi=6
129     bj=2
130     YG(sNx+1,1,bj,1)=YG(1,1,bi,1)
131     bj=bj+2
132     YG(sNx+1,1,bj,1)=YG(1,1,bi,1)
133     bj=bj+2
134     YG(sNx+1,1,bj,1)=YG(1,1,bi,1)
135     cs- end block
136     CALL EXCH_Z_XY_RS(XG,myThid)
137     CALL EXCH_Z_XY_RS(YG,myThid)
138    
139 adcroft 1.4 CALL MDSREADFIELD('DXV.bin',readBinaryPrec,'RS',1,DXV, 1,myThid)
140     CALL MDSREADFIELD('DYU.bin',readBinaryPrec,'RS',1,DYU, 1,myThid)
141 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
142     C !!! _EXCH_ZUV_XY_R4(DXV, DYU, unSigned, myThid)
143     cs! this is not correct <= need paired exchange for dxv,dyu
144     CALL EXCH_Z_XY_RS(DXV,myThid)
145     CALL EXCH_Z_XY_RS(DYU,myThid)
146     DO bj = myByLo(myThid), myByHi(myThid)
147     DO bi = myBxLo(myThid), myBxHi(myThid)
148     DXV(sNx+1,1,bi,bj)=DXV(1,1,bi,bj)
149     DXV(1,sNy+1,bi,bj)=DXV(1,1,bi,bj)
150     DYU(sNx+1,1,bi,bj)=DYU(1,1,bi,bj)
151     DYU(1,sNy+1,bi,bj)=DYU(1,1,bi,bj)
152 adcroft 1.5 cs! fix overlaps:
153     DO j=1,sNy
154     DO i=1,Olx
155     DXV(1-i,j,bi,bj)=DXV(1+i,j,bi,bj)
156     DXV(sNx+i,j,bi,bj)=DXV(sNx-i,j,bi,bj)
157     DYU(1-i,j,bi,bj)=DYU(1+i,j,bi,bj)
158     DYU(sNx+i,j,bi,bj)=DYU(sNx-i,j,bi,bj)
159     ENDDO
160     ENDDO
161     DO j=1,Oly
162     DO i=1,sNx
163     DXV(i,1-j,bi,bj)=DXV(i,1+j,bi,bj)
164     DXV(i,sNy+j,bi,bj)=DXV(i,sNy-j,bi,bj)
165     DYU(i,1-j,bi,bj)=DYU(i,1+j,bi,bj)
166     DYU(i,sNy+j,bi,bj)=DYU(i,sNy-j,bi,bj)
167     ENDDO
168     ENDDO
169 adcroft 1.2 ENDDO
170     ENDDO
171     cs- end block
172     C !!! _EXCH_ZUV_XY_R4(DXV, DYU, unSigned, myThid)
173     cs! this is not correct <= need paired exchange for dxv,dyu
174 adcroft 1.5 cs CALL EXCH_Z_XY_RS(DXV,myThid)
175     cs CALL EXCH_Z_XY_RS(DYU,myThid)
176 adcroft 1.2
177 adcroft 1.4 CALL MDSREADFIELD('RAZ.bin',readBinaryPrec,'RS',1,RAZ, 1,myThid)
178 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
179     CALL EXCH_Z_XY_RS(RAZ , myThid )
180     DO bj = myByLo(myThid), myByHi(myThid)
181     DO bi = myBxLo(myThid), myBxHi(myThid)
182     RAZ(sNx+1,1,bi,bj)=RAZ(1,1,bi,bj)
183     RAZ(1,sNy+1,bi,bj)=RAZ(1,1,bi,bj)
184     ENDDO
185     ENDDO
186     cs- end block
187     CALL EXCH_Z_XY_RS(RAZ,myThid)
188    
189     C- Staggered (u,v pairs) quantities
190 adcroft 1.4 CALL MDSREADFIELD('DXC.bin',readBinaryPrec,'RS',1,DXC, 1,myThid)
191     CALL MDSREADFIELD('DYC.bin',readBinaryPrec,'RS',1,DYC, 1,myThid)
192 adcroft 1.2 CALL EXCH_UV_XY_RS(DXC,DYC,.FALSE.,myThid)
193    
194 adcroft 1.4 CALL MDSREADFIELD('RAW.bin',readBinaryPrec,'RS',1,RAW, 1,myThid)
195     CALL MDSREADFIELD('RAS.bin',readBinaryPrec,'RS',1,RAS, 1,myThid)
196 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
197     DO bj = myByLo(myThid), myByHi(myThid)
198     DO bi = myBxLo(myThid), myBxHi(myThid)
199     DO J = 1,sNy
200     c RAW(sNx+1,J,bi,bj)=RAW(1,J,bi,bj)
201     c RAS(J,sNy+1,bi,bj)=RAS(J,1,bi,bj)
202     ENDDO
203     ENDDO
204     ENDDO
205     cs- end block
206     CALL EXCH_UV_XY_RS(RAW,RAS,.FALSE.,myThid)
207    
208 adcroft 1.4 CALL MDSREADFIELD('DXG.bin',readBinaryPrec,'RS',1,DXG, 1,myThid)
209     CALL MDSREADFIELD('DYG.bin',readBinaryPrec,'RS',1,DYG, 1,myThid)
210 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
211     DO bj = myByLo(myThid), myByHi(myThid)
212     DO bi = myBxLo(myThid), myBxHi(myThid)
213     DO J = 1,sNy
214     c DYG(sNx+1,J,bi,bj)=DYG(1,J,bi,bj)
215     c DXG(J,sNy+1,bi,bj)=DXG(J,1,bi,bj)
216     ENDDO
217     ENDDO
218     ENDDO
219     cs- end block
220     CALL EXCH_UV_XY_RS(DYG,DXG,.FALSE.,myThid)
221    
222     c write(10) XC
223     c write(10) YC
224     c write(10) DXF
225     c write(10) DYF
226     c write(10) RA
227     c write(10) XG
228     c write(10) YG
229     c write(10) DXV
230     c write(10) DYU
231     c write(10) RAZ
232     c write(10) DXC
233     c write(10) DYC
234     c write(10) RAW
235     c write(10) RAS
236     c write(10) DXG
237     c write(10) DYG
238    
239     RETURN
240     END

  ViewVC Help
Powered by ViewVC 1.1.22