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

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

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


Revision 1.2 - (show annotations) (download)
Mon May 7 12:09:27 2012 UTC (12 years ago) by mlosch
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +6 -6 lines
cosmetic changes

1 C $Header: /u/gcmpack/MITgcm_contrib/mlosch/optim_m1qn3/testbed/driver.F,v 1.1 2012/05/02 12:27:42 mlosch Exp $
2 C $Name: $
3 program driver
4 implicit none
5 integer i,k
6 integer iiter, maxiter
7 parameter (maxiter = 10)
8 logical testrestart
9
10 c parameters to be used in m1qn3
11 integer reverse
12 integer n
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 arraydz
18 integer ndz, mupdate
19 parameter (mupdate = 7)
20 parameter (ndz=3*n + mupdate*(2*n + 1))
21 double precision dz(ndz)
22 c extra dummy variables
23 character*(80) fmt
24 integer nn
25 parameter (nn = 1)
26 integer izs(nn)
27 real rzs(nn)
28 double precision dzs(nn)
29
30 external simul_rc,euclid,ctonbe,ctcabe
31
32 c initialization
33 testrestart=.false.
34 normtype = 'two'
35 f = 0.
36 dxmin = 1.d-6
37 df1 = 10.
38 epsg = 1.d-8
39 impres = 6
40 io=99
41 c diagonal scaling mode
42 imode(1) = 0
43 c cold start
44 imode(2) = 0
45 c call simul with indic=1 every imode(3)th iteration
46 imode(3) = 0
47 omode=1
48 reverse=1
49 niter = 1000
50 nsim = 1000
51 do i=1,5
52 iz(i)=0
53 enddo
54 indic=4
55 do i=1,n
56 x(i) = 0.
57 g(i) = 0.
58 enddo
59 do i=1,nn
60 izs(i)=0
61 rzs(i)=0.
62 dzs(i)=0.
63 enddo
64 dzs(1) = 100.
65 open(io,file='output_m1qn3_driver.txt',status='unknown')
66 c first guess of x,f,g (izs=-1)
67 call mysimul(indic,n,f,x,g,-1,rzs,dzs)
68 print *, 'ml-driver x = ', (x(i),i=1,n)
69 print *, 'ml-driver f = ', f
70 print *, 'ml-driver g = ', (g(i),i=1,n)
71 df1 = f*0.1
72 iiter = 0
73 if ( testrestart ) then
74 niter=1
75 do iiter=1,niter
76
77 call m1qn3 (simul_rc,euclid,ctonbe,ctcabe,n,x,f,g,dxmin,df1,
78 & epsg,normtype,impres,io,imode,omode,niter,nsim,
79 & iz,dz,ndz,reverse,indic,izs,rzs,dzs)
80 write(fmt,'(A,I4,A)') '(A,I4,I8,',n,'E12.4)'
81 write(*,fmt) 'ml-driver iter = ',iiter,reverse, (1.-x(i),i=1,n)
82 call mysimul(indic,n,f,x,g,izs,rzs,dzs)
83 write(fmt,'(A,I4,A)') '(A,',n+1,'E12.4)'
84 write(*,fmt) 'ml-driver f = ', f, (g(i),i=1,n)
85 c print *, 'ml-driver: niter = ', niter, nsim
86 if ( reverse .lt. 0 ) goto 100
87
88 enddo
89 100 continue
90 reverse = 1
91 imode(2)=1
92 niter = 2
93 nsim=5000
94 iiter=iiter-1
95 endif
96 c
97 do while ( reverse.eq.1 )
98 iiter=iiter+1
99 call m1qn3 (simul_rc,euclid,ctonbe,ctcabe,n,x,f,g,dxmin,df1,
100 & epsg,normtype,impres,io,imode,omode,niter,nsim,
101 & iz,dz,ndz,reverse,indic,izs,rzs,dzs)
102 write(fmt,'(A,I4,A)') '(A,I4,I8,',n,'E12.4)'
103 write(*,fmt) 'ml-driver iter = ',iiter,reverse, (1.-x(i),i=1,n)
104 call mysimul(indic,n,f,x,g,izs,rzs,dzs)
105 write(fmt,'(A,I4,A)') '(A,',n+1,'E12.4)'
106 write(*,fmt) 'ml-driver f = ', f, (g(i),i=1,n)
107 c print *, 'ml-driver niter =', niter, nsim
108 enddo
109 close(io)
110
111 print *, 'ml-driver: niter = ',niter
112 print *, 'ml-driver: nsim = ',nsim
113 print *, 'ml-driver: omode = ',omode
114
115 stop 'NORMAL END'
116 end

  ViewVC Help
Powered by ViewVC 1.1.22