/[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.2 - (hide 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 heimbach 1.2 C $Header: /u/gcmpack/models/MITgcmUV/pkg/ctrl/ctrl_map_ini.F,v 1.1 2001/03/25 22:33:55 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.1
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 heimbach 1.2 #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 heimbach 1.1
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 heimbach 1.2 #endif
178     #ifdef ALLOW_TR10_CONTROL
179     _EXCH_XYZ_R8( tr1, mythid )
180     _EXCH_XYZ_R8( gTr1Nm1, mythid )
181 heimbach 1.1 #endif
182    
183     return
184     end
185    

  ViewVC Help
Powered by ViewVC 1.1.22