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

Annotation 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 - (hide annotations) (download)
Mon May 7 12:09:27 2012 UTC (13 years, 2 months ago) by mlosch
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +6 -6 lines
cosmetic changes

1 mlosch 1.2 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 mlosch 1.1 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 mlosch 1.2 write(fmt,'(A,I4,A)') '(A,I4,I8,',n,'E12.4)'
81 mlosch 1.1 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 mlosch 1.2 write(fmt,'(A,I4,A)') '(A,',n+1,'E12.4)'
84 mlosch 1.1 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 mlosch 1.2 write(fmt,'(A,I4,A)') '(A,I4,I8,',n,'E12.4)'
103 mlosch 1.1 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 mlosch 1.2 write(fmt,'(A,I4,A)') '(A,',n+1,'E12.4)'
106 mlosch 1.1 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