/[MITgcm]/MITgcm_contrib/mlosch/optim_m1qn3/testbed/offline_driver.F
ViewVC logotype

Contents of /MITgcm_contrib/mlosch/optim_m1qn3/testbed/offline_driver.F

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


Revision 1.2 - (show annotations) (download)
Wed May 2 20:14:06 2012 UTC (12 years ago) by mlosch
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +3 -3 lines
change a parameter nsim to be the same as in driver.F

1 C $Header: /u/gcmpack/MITgcm_contrib/mlosch/optim_m1qn3/testbed/offline_driver.F,v 1.1 2012/05/02 12:27:42 mlosch Exp $
2 C $Name: $
3 program offline_driver
4 implicit none
5 integer k
6 integer optimcycle
7 integer maxiter
8 parameter (maxiter = 10)
9
10 c parameters to be used in m1qn3
11 integer reverse
12 integer n, nnn
13 parameter (n = 7)
14 integer impres,io,imode(3),omode,niter,nsim,iz(5),indic
15 double precision x(n),f,g(n),dxmin,df1,epsg
16 character*3 normtype
17 c work arrays
18 integer ndz, mupdate
19 parameter (mupdate = 7)
20 parameter (ndz=3*n + mupdate*(2*n + 1))
21 double precision dz(ndz), dz2(ndz)
22 c extra dummy variables
23 integer nn,i
24 parameter (nn = 1)
25 integer izs(nn)
26 real rzs(nn)
27 double precision dzs(nn)
28
29 c m1qn3 start
30 #include "m1qn3_common.h"
31 #include "m1qn3a_common.h"
32 #include "mlis3_common.h"
33 c m1qn3 end
34
35 character*(*) fname
36 parameter ( fname = 'output_m1qn3.txt' )
37
38 external simul_rc,euclid,ctonbe,ctcabe
39
40 c if (ndz.gt.1000) stop 'ndz >1000, increase dz'
41 c initialization
42 epsg = 1.d-8
43 impres = 6
44 io=98
45 optimcycle=0
46 normtype = 'two'
47 f = 0.
48 dxmin = 1.d-6
49 df1 = 10.
50 c diagonal scaling mode
51 imode(1) = 0
52 c cold start
53 imode(2) = 0
54 c call simul with indic=1 every imode(3)th iteration
55 imode(3) = 0
56 c set this output variable to check if anything is done to it in m1qn3
57 c value does not alter results
58 omode=-1
59 reverse=1
60 niter = 1000
61 nsim = 1000
62 do k=1,5
63 iz(k)=0
64 enddo
65 indic=4
66 do k=1,n
67 x(k) = 0.
68 g(k) = 0.
69 enddo
70 do k=1,nn
71 izs(k)=0
72 rzs(k)=0.
73 dzs(k)=0.
74 enddo
75 dzs(1) = 100.
76 c restart stuff
77 do k=1,ndz
78 dz(k) = 0.
79 enddo
80 dz(:)=0.
81 c end restart stuff
82 do i=1,n
83 x(i) = 0.
84 enddo
85 f=0.
86
87 open(11,file='count.txt',status='old')
88 read(11,*) optimcycle
89 close(11)
90
91 c first guess of x,f,g
92 if ( optimcycle.eq.0 ) then
93 c cold start
94 print *, 'cold start'
95 imode(2)=0
96 c first guess (izs=-1)
97 call mysimul(indic,n,f,x,g,-1,rzs,dzs)
98 df1 = f*0.1
99 reentry=0
100 open(io,file=fname,status='unknown')
101 else
102 c warm restart
103 imode(2)=1
104 c read restart information
105 call optim_store_m1qn3(ndz,iz,dz,niter,nsim,epsg,df1,
106 I optimcycle,
107 I .false.)
108 open(99,file='model_out',status='old',form='unformatted')
109 read(99) indic,nnn
110 read(99) f
111 if ( nnn.ne.n ) stop 'nnn .ne. n'
112 read(99) (g(i),i=1,n)
113 read(99) izs,rzs,dzs
114 close(99)
115 open(99,file='model_in',status='old',form='unformatted')
116 read(99) indic,nnn
117 read(99) (x(i),i=1,nnn)
118 read(99) izs,rzs,dzs
119 close(99)
120 df1 = -2.e23
121 open(io,file=fname,status='old',position='append')
122 endif
123
124 reverse=1
125 call m1qn3_offline
126 & (simul_rc,euclid,ctonbe,ctcabe,n,x,f,g,dxmin,df1,
127 & epsg,normtype,impres,io,imode,omode,niter,nsim,
128 & iz,dz,ndz,reverse,indic,izs,rzs,dzs)
129 close(io)
130 c write restart information
131 call optim_store_m1qn3(ndz,iz,dz,niter,nsim,epsg,df1,
132 I optimcycle,
133 I .true.)
134
135 open(99,file='model_in',status='unknown',form='unformatted')
136 write(99) indic,n
137 write(99) (x(i),i=1,n)
138 write(99) izs,rzs,dzs
139 close(99)
140
141
142 if ( reverse .le. 0 ) then
143 print *, 'stoptheloop'
144 print *, 'ml-offline_driver: niter = ',niter
145 print *, 'ml-offline_driver: nsim = ',nsim
146 print *, 'ml-offline_driver: omode = ',omode
147 endif
148 stop 'NORMAL END'
149
150 end
151

  ViewVC Help
Powered by ViewVC 1.1.22