/[MITgcm]/MITgcm/pkg/ctrl/ctrl_set_unpack_xyz.F
ViewVC logotype

Contents of /MITgcm/pkg/ctrl/ctrl_set_unpack_xyz.F

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


Revision 1.2 - (show annotations) (download)
Sat Jul 13 02:47:32 2002 UTC (21 years, 10 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint47e_post, checkpoint46l_post, checkpoint46g_pre, checkpoint47c_post, checkpoint50c_post, c49_ctrl, checkpoint46f_post, checkpoint48e_post, checkpoint50c_pre, checkpoint46b_post, checkpoint48i_post, checkpoint46l_pre, checkpoint50, checkpoint50d_post, checkpoint50b_pre, checkpoint48b_post, checkpoint48c_pre, checkpoint47d_pre, checkpoint47a_post, checkpoint48d_pre, checkpoint47i_post, checkpoint47d_post, checkpoint46d_pre, checkpoint48d_post, checkpoint48f_post, checkpoint46j_pre, checkpoint48h_post, checkpoint46a_post, checkpoint47g_post, checkpoint46j_post, checkpoint46k_post, checkpoint48a_post, checkpoint50f_post, checkpoint50a_post, checkpoint50f_pre, checkpoint47j_post, branch-exfmods-tag, checkpoint46e_pre, checkpoint48c_post, checkpoint46b_pre, checkpoint46c_pre, checkpoint46, checkpoint47b_post, checkpoint46h_pre, checkpoint46m_post, checkpoint46a_pre, checkpoint50g_post, checkpoint46g_post, checkpoint50h_post, checkpoint50e_pre, checkpoint50i_post, checkpoint47f_post, checkpoint50e_post, checkpoint46i_post, checkpoint46c_post, checkpoint50d_pre, checkpoint46e_post, checkpoint47, checkpoint48, checkpoint49, checkpoint46h_post, checkpoint48g_post, checkpoint47h_post, checkpoint46d_post, checkpoint50b_post
Branch point for: branch-exfmods-curt
Changes since 1.1: +198 -0 lines
Merging new ctrl package from release1_p5:
o new ctrl package
  - adopted from ECCO environment to enable optimization
  - added Eliassen Palm fluxes to controls

1
2 #include "CTRL_CPPOPTIONS.h"
3
4
5 subroutine ctrl_set_unpack_xyz(
6 & cunit, ivartype, fname, masktype,
7 & weightfld, nwetglobal, mythid)
8
9 c ==================================================================
10 c SUBROUTINE ctrl_set_unpack_xyz
11 c ==================================================================
12 c
13 c o Unpack the control vector such that the land points are filled
14 c in.
15 c
16 c ==================================================================
17
18 implicit none
19
20 c == global variables ==
21
22 #include "EEPARAMS.h"
23 #include "SIZE.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26
27 #include "ctrl.h"
28 #include "cost.h"
29
30 #ifdef ALLOW_ECCO_OPTIMIZATION
31 #include "optim.h"
32 #endif
33
34 c == routine arguments ==
35
36 integer cunit
37 integer ivartype
38 character*( 80) fname
39 character* (5) masktype
40 _RL weightfld( nr,nsx,nsy )
41 integer nwetglobal(nr)
42 integer mythid
43
44 c == local variables ==
45
46 #ifndef ALLOW_ECCO_OPTIMIZATION
47 integer optimcycle
48 #endif
49
50 integer bi,bj
51 integer ip,jp
52 integer i,j,k
53 integer ii
54 integer il
55 integer irec
56 integer itlo,ithi
57 integer jtlo,jthi
58 integer jmin,jmax
59 integer imin,imax
60
61 integer cbuffindex
62
63 _RL cbuff ( snx*nsx*npx*sny*nsy*npy )
64 _RL globmsk ( snx,nsx,npx,sny,nsy,npy,nr )
65 _RL globfld3d( snx,nsx,npx,sny,nsy,npy,nr )
66
67 character*(128) cfile
68
69 integer filenvartype
70 integer filenvarlength
71 character*(10) fileExpId
72 integer fileOptimCycle
73 integer filencbuffindex
74 _RL fileDummy
75 integer fileIg
76 integer fileJg
77 integer fileI
78 integer fileJ
79 integer filensx
80 integer filensy
81 integer filek
82 integer filencvarindex(maxcvars)
83 integer filencvarrecs(maxcvars)
84 integer filencvarxmax(maxcvars)
85 integer filencvarymax(maxcvars)
86 integer filencvarnrmax(maxcvars)
87 character*( 1) filencvargrd(maxcvars)
88
89 c == external ==
90
91 integer ilnblnk
92 external ilnblnk
93
94 cc == end of interface ==
95
96 jtlo = 1
97 jthi = nsy
98 itlo = 1
99 ithi = nsx
100 jmin = 1
101 jmax = sny
102 imin = 1
103 imax = snx
104
105 c Initialise temporary file
106 do k = 1,nr
107 do jp = 1,nPy
108 do bj = jtlo,jthi
109 do j = jmin,jmax
110 do ip = 1,nPx
111 do bi = itlo,ithi
112 do i = imin,imax
113 globfld3d(i,bi,ip,j,bj,jp,k) = 0. _d 0
114 globmsk (i,bi,ip,j,bj,jp,k) = 0. _d 0
115 enddo
116 enddo
117 enddo
118 enddo
119 enddo
120 enddo
121 enddo
122
123 #ifndef ALLOW_ECCO_OPTIMIZATION
124 optimcycle = 0
125 #endif
126
127 c-- Only the master thread will do I/O.
128 _BEGIN_MASTER( mythid )
129
130 call MDSREADFIELD_3D_GL(
131 & masktype, ctrlprec, 'RL',
132 & Nr, globmsk, 1, mythid)
133
134 do irec = 1, ncvarrecs(ivartype)
135 read(cunit) filencvarindex(ivartype)
136 if (filencvarindex(ivartype) .NE. ncvarindex(ivartype))
137 & then
138 print *, 'ctrl_set_unpack_xyz:WARNING: wrong ncvarindex ',
139 & filencvarindex(ivartype), ncvarindex(ivartype)
140 STOP 'in S/R ctrl_unpack'
141 endif
142 read(cunit) filej
143 read(cunit) filei
144 do k = 1, Nr
145 cbuffindex = nwetglobal(k)
146 if ( cbuffindex .gt. 0 ) then
147 read(cunit) filencbuffindex
148 if (filencbuffindex .NE. cbuffindex) then
149 print *, 'WARNING: wrong cbuffindex ',
150 & filencbuffindex, cbuffindex
151 STOP 'in S/R ctrl_unpack'
152 endif
153 read(cunit) filek
154 if (filek .NE. k) then
155 print *, 'WARNING: wrong k ',
156 & filek, k
157 STOP 'in S/R ctrl_unpack'
158 endif
159 read(cunit) (cbuff(ii), ii=1,cbuffindex)
160 endif
161 cbuffindex = 0
162 do jp = 1,nPy
163 do bj = jtlo,jthi
164 do j = jmin,jmax
165 do ip = 1,nPx
166 do bi = itlo,ithi
167 do i = imin,imax
168 if ( globmsk(i,bi,ip,j,bj,jp,k) .ne. 0. ) then
169 cbuffindex = cbuffindex + 1
170 globfld3d(i,bi,ip,j,bj,jp,k) = cbuff(cbuffindex)
171 #ifdef ALLOW_NONDIMENSIONAL_CONTROL_IO
172 globfld3d(i,bi,ip,j,bj,jp,k) =
173 & globfld3d(i,bi,ip,j,bj,jp,k)/
174 & sqrt(weightfld(k,bi,bj))
175 #endif
176 else
177 globfld3d(i,bi,ip,j,bj,jp,k) = 0. _d 0
178 endif
179 enddo
180 enddo
181 enddo
182 enddo
183 enddo
184 enddo
185 c
186 enddo
187
188 call MDSWRITEFIELD_3D_GL( fname, ctrlprec, 'RL',
189 & Nr, globfld3d,
190 & irec, optimcycle, mythid)
191
192 enddo
193
194 _END_MASTER( mythid )
195
196 return
197 end
198

  ViewVC Help
Powered by ViewVC 1.1.22