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

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

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


Revision 1.2 - (show annotations) (download)
Fri Jul 13 13:40:17 2001 UTC (22 years, 10 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint40pre3, checkpoint40pre2, checkpoint40pre4, checkpoint40pre5
Changes since 1.1: +33 -1 lines
o Added prototype routines to handle optimization
o Extended control vector to add passive tracer

1 C $Header: /u/gcmpack/models/MITgcmUV/pkg/ctrl/ctrl_map_ini.F,v 1.1 2001/03/25 22:33:55 heimbach Exp $
2
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 #include "TR1.h"
37
38 #include "ctrl.h"
39 #include "ctrl_dummy.h"
40 #include "optim.h"
41
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 character*( 80) fnametr1
64
65 c == external ==
66
67 integer ilnblnk
68 external ilnblnk
69
70 c == end of interface ==
71
72 jtlo = mybylo(mythid)
73 jthi = mybyhi(mythid)
74 itlo = mybxlo(mythid)
75 ithi = mybxhi(mythid)
76 jmin = 1-oly
77 jmax = sny+oly
78 imin = 1-olx
79 imax = snx+olx
80
81 doglobalread = .false.
82 ladinit = .false.
83
84 equal = .true.
85
86 if ( equal ) then
87 fac = 1. _d 0
88 else
89 fac = 0. _d 0
90 endif
91
92 #ifdef ALLOW_THETA0_CONTROL
93 c-- Temperature field.
94 il=ilnblnk( xx_theta_file )
95 write(fnametheta(1:80),'(2a,i10.10)')
96 & xx_theta_file(1:il),'.',optimcycle
97 call active_read_xyz( fnametheta, tmpfld3d, 1,
98 & doglobalread, ladinit, optimcycle,
99 & mythid, xx_theta_dummy )
100
101 do bj = jtlo,jthi
102 do bi = itlo,ithi
103 do k = 1,nr
104 do j = jmin,jmax
105 do i = imin,imax
106 theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
107 & fac*tmpfld3d(i,j,k,bi,bj)
108 gtNm1(i,j,k,bi,bj) = gtNm1(i,j,k,bi,bj) +
109 & fac*tmpfld3d(i,j,k,bi,bj)
110 enddo
111 enddo
112 enddo
113 enddo
114 enddo
115 #endif
116
117 #ifdef ALLOW_SALT0_CONTROL
118 c-- Temperature field.
119 il=ilnblnk( xx_salt_file )
120 write(fnamesalt(1:80),'(2a,i10.10)')
121 & xx_salt_file(1:il),'.',optimcycle
122 call active_read_xyz( fnamesalt, tmpfld3d, 1,
123 & doglobalread, ladinit, optimcycle,
124 & mythid, xx_salt_dummy )
125
126 do bj = jtlo,jthi
127 do bi = itlo,ithi
128 do k = 1,nr
129 do j = jmin,jmax
130 do i = imin,imax
131 salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
132 & fac*tmpfld3d(i,j,k,bi,bj)
133 gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +
134 & fac*tmpfld3d(i,j,k,bi,bj)
135 enddo
136 enddo
137 enddo
138 enddo
139 enddo
140 #endif
141
142 #ifdef ALLOW_TR10_CONTROL
143 c-- Temperature field.
144 il=ilnblnk( xx_tr1_file )
145 write(fnametr1(1:80),'(2a,i10.10)')
146 & xx_tr1_file(1:il),'.',optimcycle
147 call active_read_xyz( fnametr1, tmpfld3d, 1,
148 & doglobalread, ladinit, optimcycle,
149 & mythid, xx_tr1_dummy )
150
151 do bj = jtlo,jthi
152 do bi = itlo,ithi
153 do k = 1,nr
154 do j = jmin,jmax
155 do i = imin,imax
156 tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +
157 & fac*tmpfld3d(i,j,k,bi,bj)
158 gsNm1(i,j,k,bi,bj) = gsNm1(i,j,k,bi,bj) +
159 & fac*tmpfld3d(i,j,k,bi,bj)
160 enddo
161 enddo
162 enddo
163 enddo
164 enddo
165 #endif
166
167
168 c-- Update the tile edges.
169
170 #ifdef ALLOW_THETA0_CONTROL
171 _EXCH_XYZ_R8( theta, mythid )
172 _EXCH_XYZ_R8( gtNm1, mythid )
173 #endif
174 #ifdef ALLOW_SALT0_CONTROL
175 _EXCH_XYZ_R8( salt, mythid )
176 _EXCH_XYZ_R8( gsNm1, mythid )
177 #endif
178 #ifdef ALLOW_TR10_CONTROL
179 _EXCH_XYZ_R8( tr1, mythid )
180 _EXCH_XYZ_R8( gTr1Nm1, mythid )
181 #endif
182
183 return
184 end
185

  ViewVC Help
Powered by ViewVC 1.1.22