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

Annotation of /MITgcm/pkg/ctrl/ctrl_map_ini.F

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


Revision 1.4 - (hide annotations) (download)
Mon Aug 13 23:28:41 2001 UTC (22 years, 9 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint40pre7, checkpoint40pre9, checkpoint40pre8, checkpoint42, checkpoint40, checkpoint41
Changes since 1.3: +7 -7 lines
Modification for adjoint.

1 heimbach 1.4 C $Header: /u/gcmpack/models/MITgcmUV/pkg/ctrl/ctrl_map_ini.F,v 1.3 2001/08/13 18:10:26 heimbach Exp $
2 heimbach 1.1
3     #include "CTRL_CPPOPTIONS.h"
4    
5    
6     subroutine ctrl_map_ini(
7     I mythid
8     & )
9    
10     c ==================================================================
11     c SUBROUTINE ctrl_map_ini
12     c ==================================================================
13     c
14     c o Add the temperature and salinity parts of the control vector to
15     c the model state and update the tile edges. The control vector is
16     c defined in the header file "ctrl.h".
17     c
18     c started: Christian Eckert eckert@mit.edu 30-Jun-1999
19     c
20     c changed: Christian Eckert eckert@mit.edu 23-Feb-2000
21     c
22     c - Restructured the code in order to create a package
23     c for the MITgcmUV.
24     c
25     c ==================================================================
26     c SUBROUTINE ctrl_map_ini
27     c ==================================================================
28    
29     implicit none
30    
31     c == global variables ==
32    
33     #include "EEPARAMS.h"
34     #include "SIZE.h"
35     #include "DYNVARS.h"
36 heimbach 1.2 #include "TR1.h"
37 heimbach 1.1
38     #include "ctrl.h"
39     #include "ctrl_dummy.h"
40 heimbach 1.2 #include "optim.h"
41 heimbach 1.1
42     c == routine arguments ==
43    
44     integer mythid
45    
46     c == local variables ==
47    
48     _RL fac
49     integer bi,bj
50     integer i,j,k
51     integer itlo,ithi
52     integer jtlo,jthi
53     integer jmin,jmax
54     integer imin,imax
55     integer il
56    
57     logical equal
58     logical doglobalread
59     logical ladinit
60    
61     character*( 80) fnametheta
62     character*( 80) fnamesalt
63 heimbach 1.2 character*( 80) fnametr1
64 heimbach 1.3 character*( 80) fnamediffkr
65     character*( 80) fnamekapgm
66 heimbach 1.1
67     c == external ==
68    
69     integer ilnblnk
70     external ilnblnk
71    
72     c == end of interface ==
73    
74     jtlo = mybylo(mythid)
75     jthi = mybyhi(mythid)
76     itlo = mybxlo(mythid)
77     ithi = mybxhi(mythid)
78     jmin = 1-oly
79     jmax = sny+oly
80     imin = 1-olx
81     imax = snx+olx
82    
83     doglobalread = .false.
84     ladinit = .false.
85    
86     equal = .true.
87    
88     if ( equal ) then
89     fac = 1. _d 0
90     else
91     fac = 0. _d 0
92     endif
93    
94     #ifdef ALLOW_THETA0_CONTROL
95     c-- Temperature field.
96     il=ilnblnk( xx_theta_file )
97     write(fnametheta(1:80),'(2a,i10.10)')
98     & xx_theta_file(1:il),'.',optimcycle
99     call active_read_xyz( fnametheta, tmpfld3d, 1,
100     & doglobalread, ladinit, optimcycle,
101     & mythid, xx_theta_dummy )
102    
103     do bj = jtlo,jthi
104     do bi = itlo,ithi
105     do k = 1,nr
106     do j = jmin,jmax
107     do i = imin,imax
108     theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
109     & fac*tmpfld3d(i,j,k,bi,bj)
110 heimbach 1.4 cph gtNm1(i,j,k,bi,bj) = gtNm1(i,j,k,bi,bj) +
111     cph & fac*tmpfld3d(i,j,k,bi,bj)
112 heimbach 1.1 enddo
113     enddo
114     enddo
115     enddo
116     enddo
117     #endif
118    
119     #ifdef ALLOW_SALT0_CONTROL
120     c-- Temperature field.
121     il=ilnblnk( xx_salt_file )
122     write(fnamesalt(1:80),'(2a,i10.10)')
123     & xx_salt_file(1:il),'.',optimcycle
124     call active_read_xyz( fnamesalt, tmpfld3d, 1,
125     & doglobalread, ladinit, optimcycle,
126     & mythid, xx_salt_dummy )
127    
128     do bj = jtlo,jthi
129     do bi = itlo,ithi
130     do k = 1,nr
131     do j = jmin,jmax
132     do i = imin,imax
133     salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
134     & fac*tmpfld3d(i,j,k,bi,bj)
135 heimbach 1.4 cph gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +
136     cph & fac*tmpfld3d(i,j,k,bi,bj)
137 heimbach 1.1 enddo
138     enddo
139     enddo
140     enddo
141     enddo
142     #endif
143    
144 heimbach 1.2 #ifdef ALLOW_TR10_CONTROL
145     c-- Temperature field.
146     il=ilnblnk( xx_tr1_file )
147     write(fnametr1(1:80),'(2a,i10.10)')
148     & xx_tr1_file(1:il),'.',optimcycle
149     call active_read_xyz( fnametr1, tmpfld3d, 1,
150     & doglobalread, ladinit, optimcycle,
151     & mythid, xx_tr1_dummy )
152    
153     do bj = jtlo,jthi
154     do bi = itlo,ithi
155     do k = 1,nr
156     do j = jmin,jmax
157     do i = imin,imax
158     tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +
159     & fac*tmpfld3d(i,j,k,bi,bj)
160 heimbach 1.4 cph gtr1Nm1(i,j,k,bi,bj) = gtr1Nm1(i,j,k,bi,bj) +
161     cph & fac*tmpfld3d(i,j,k,bi,bj)
162 heimbach 1.2 enddo
163     enddo
164     enddo
165     enddo
166     enddo
167     #endif
168    
169 heimbach 1.3 #ifdef ALLOW_DIFFKR_CONTROL
170     c-- diffkr.
171     il=ilnblnk( xx_diffkr_file )
172     write(fnamediffkr(1:80),'(2a,i10.10)')
173     & xx_diffkr_file(1:il),'.',optimcycle
174     call active_read_xyz( fnamediffkr, tmpfld3d, 1,
175     & doglobalread, ladinit, optimcycle,
176     & mythid, xx_diffkr_dummy )
177     do bj = jtlo,jthi
178     do bi = itlo,ithi
179     do k = 1,nr
180     do j = jmin,jmax
181     do i = imin,imax
182     diffkr(i,j,k,bi,bj) = diffkr(i,j,k,bi,bj) +
183     & tmpfld3d(i,j,k,bi,bj)
184     enddo
185     enddo
186     enddo
187     enddo
188     enddo
189     #endif
190    
191     #ifdef ALLOW_KAPGM_CONTROL
192     c-- kapgm.
193     il=ilnblnk( xx_kapgm_file )
194     write(fnamekapgm(1:80),'(2a,i10.10)')
195     & xx_kapgm_file(1:il),'.',optimcycle
196     call active_read_xyz( fnamekapgm, tmpfld3d, 1,
197     & doglobalread, ladinit, optimcycle,
198     & mythid, xx_kapgm_dummy )
199     do bj = jtlo,jthi
200     do bi = itlo,ithi
201     do k = 1,nr
202     do j = jmin,jmax
203     do i = imin,imax
204     kapgm(i,j,k,bi,bj) = kapgm(i,j,k,bi,bj) +
205     & tmpfld3d(i,j,k,bi,bj)
206     enddo
207     enddo
208     enddo
209     enddo
210     enddo
211     #endif
212    
213 heimbach 1.1
214     c-- Update the tile edges.
215    
216     #ifdef ALLOW_THETA0_CONTROL
217     _EXCH_XYZ_R8( theta, mythid )
218     _EXCH_XYZ_R8( gtNm1, mythid )
219     #endif
220     #ifdef ALLOW_SALT0_CONTROL
221     _EXCH_XYZ_R8( salt, mythid )
222     _EXCH_XYZ_R8( gsNm1, mythid )
223 heimbach 1.2 #endif
224     #ifdef ALLOW_TR10_CONTROL
225 heimbach 1.3 _EXCH_XYZ_R8( tr1, mythid )
226 heimbach 1.2 _EXCH_XYZ_R8( gTr1Nm1, mythid )
227 heimbach 1.1 #endif
228 heimbach 1.3 #ifdef ALLOW_DIFFKR_CONTROL
229     _EXCH_XYZ_R8( diffkr, mythid)
230     #endif
231     #ifdef ALLOW_KAPGM_CONTROL
232     _EXCH_XYZ_R8( kapgm, mythid)
233     #endif
234    
235 heimbach 1.1
236     return
237     end
238    

  ViewVC Help
Powered by ViewVC 1.1.22