/[MITgcm]/MITgcm/optim/optim_main.F
ViewVC logotype

Annotation of /MITgcm/optim/optim_main.F

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


Revision 1.1.2.1 - (hide annotations) (download)
Tue Feb 5 20:34:35 2002 UTC (22 years, 2 months ago) by heimbach
Branch: ecco-branch
CVS Tags: ecco_c50_e32, ecco_c50_e33, ecco_c50_e30, ecco_c50_e31, ecco_c51_e34d, ecco_c51_e34e, ecco_c51_e34f, ecco_c51_e34g, ecco_c51_e34a, ecco_c51_e34b, ecco_c51_e34c, icebear5, icebear4, icebear3, icebear2, ecco_c50_e29, ecco_c50_e28, ecco_c44_e19, ecco_c44_e18, ecco_c44_e17, ecco_c44_e16, ecco_c50_e33a, ecco_c51_e34, ecco_ice2, ecco_ice1, ecco_c44_e25, ecco_c44_e22, ecco_c44_e23, ecco_c44_e20, ecco_c44_e21, ecco_c44_e26, ecco_c44_e27, ecco_c44_e24, ecco-branch-mod1, ecco-branch-mod2, ecco-branch-mod3, ecco-branch-mod4, ecco-branch-mod5
Branch point for: c24_e25_ice, icebear
Changes since 1.1: +155 -0 lines
o Updating adjoint/makefile to ECCO code
o Adding optim and lsopt for line search optimization.
o Adding verif. experiments for ECCO
Code will be tagged ecco-branch-mod1.

1 heimbach 1.1.2.1
2     c ==================================================================
3     c
4     c prgopti.F: Routines for doing an off-line optimization after the
5     c ECCO forward and adjoint model have been run.
6     c
7     c main - Driver routine.
8     c opti - Mid-level routine to do the spin up and spin down.
9     c optimum - Routine that calls the minimization.
10     c
11     c Documentation:
12     c
13     c The collection of these routines originated mainly from Ralf
14     c Giering. Patrick Heimbach improved and corrected considerable
15     c parts of the original code. Christian Eckert contributed the
16     c interface to the ECCO release of the MITgcmUV in order to get
17     c the offline version going.
18     c
19     c How to use the off-line optimization.
20     c
21     c Doing an off-line optimization means that one alternately
22     c calls the adjoint model and the optimization routines.
23     c
24     c The adjoint model yields at iteration i the cost function
25     c value and the gradient of the cost function with respect to
26     c the control variables. The optimization routines then use
27     c this information to reduce the cost function and give a
28     c new estimate of the control variables which can then be used
29     c in the next cycle to yield a new cost function and the
30     c corresponding gradient.
31     c
32     c started: Ralf Giering (lsoptv1)
33     c
34     c Patrick Heimbach heimbach@mit.edu 28-Feb-2000
35     c
36     c - Corrected and restructured the original lsoptv1
37     c code.
38     c
39     c Christian Eckert eckert@mit.edu 15-Feb-2000
40     c
41     c - Off-line capability and some cosmetic changes
42     c of the optimization wrapper.
43     c
44     c changed:
45     c
46     c ==================================================================
47    
48    
49     program optim_main
50    
51     c ==================================================================
52     c PROGRAM optim_main
53     c ==================================================================
54     c
55     c o Driver routine for the ECCO optimization package.
56     c
57     c started: Christian Eckert eckert@mit.edu 15-Feb-2000
58     c
59     c changed: Christian Eckert eckert@mit.edu 10-Mar-2000
60     c
61     c - Added ECCO layout.
62     c
63     c ==================================================================
64     c SUBROUTINE
65     c ==================================================================
66    
67     implicit none
68    
69     c == global variables ==
70    
71     #include "blas1.h"
72    
73     c == routine arguments ==
74    
75     c == local variables ==
76    
77     integer nn
78    
79     c == end of interface ==
80    
81     c-- Headline.
82     print*
83     print*,' =================================================='
84     print*,' Large Scale Optimization with off-line capability.'
85     print*,' =================================================='
86     print*
87     print*,' Version 2.1.0'
88     print*
89    
90     c-- Get the number of control variables.
91     call optim_numbmod( nn )
92    
93     cph(
94     print *, 'pathei: vor optim_sub'
95     cph)
96     c-- Call the subroutine.
97     call optim_sub( nn )
98    
99     c-- Succesful termination.
100     print*
101     print*,' ======================================'
102     print*,' Large Scale Optimization run finished.'
103     print*,' ======================================'
104     print*
105    
106     end
107    
108     CStartOfInterface
109     INTEGER FUNCTION IFNBLNK( string )
110     C /==========================================================\
111     C | FUNCTION IFNBLNK |
112     C | o Find first non-blank in character string. |
113     C \==========================================================/
114     IMPLICIT NONE
115     C
116     CHARACTER*(*) string
117     CEndOfInterface
118     C
119     INTEGER L, LS
120     C
121     LS = LEN(string)
122     IFNBLNK = 0
123     DO 10 L = 1, LS
124     IF ( string(L:L) .EQ. ' ' ) GOTO 10
125     IFNBLNK = L
126     GOTO 11
127     10 CONTINUE
128     11 CONTINUE
129     C
130     RETURN
131     END
132    
133     CStartOfInterface
134     INTEGER FUNCTION ILNBLNK( string )
135     C /==========================================================\
136     C | FUNCTION ILNBLNK |
137     C | o Find last non-blank in character string. |
138     C \==========================================================/
139     IMPLICIT NONE
140     CHARACTER*(*) string
141     CEndOfInterface
142     INTEGER L, LS
143     C
144     LS = LEN(string)
145     ILNBLNK = LS
146     DO 10 L = LS, 1, -1
147     IF ( string(L:L) .EQ. ' ' ) GOTO 10
148     ILNBLNK = L
149     GOTO 11
150     10 CONTINUE
151     11 CONTINUE
152     C
153     RETURN
154     END
155    

  ViewVC Help
Powered by ViewVC 1.1.22