xref: /petsc/src/tao/unconstrained/tutorials/rosenbrock4.c (revision d756bedd70a89ca052be956bccd75c5761cb2ab4)
1ec9796c4SHansol Suh static char help[] = "This example demonstrates the use of different performance portable backends in user-defined callbacks in Tao.\n";
2ec9796c4SHansol Suh 
3ec9796c4SHansol Suh #include "rosenbrock4.h"
4ec9796c4SHansol Suh 
main(int argc,char ** argv)5ec9796c4SHansol Suh int main(int argc, char **argv)
6ec9796c4SHansol Suh {
7ec9796c4SHansol Suh   PetscFunctionBeginUser;
8c8025a54SPierre Jolivet   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
9ec9796c4SHansol Suh   PetscCall(RosenbrockMain());
10ec9796c4SHansol Suh   PetscCall(PetscFinalize());
11ec9796c4SHansol Suh   return 0;
12ec9796c4SHansol Suh }
13ec9796c4SHansol Suh 
14ec9796c4SHansol Suh /*TEST
15ec9796c4SHansol Suh 
16ec9796c4SHansol Suh   build:
17ec9796c4SHansol Suh     requires: !complex !__float128 !single !defined(PETSC_USE_64BIT_INDICES)
18ec9796c4SHansol Suh 
19ec9796c4SHansol Suh   test:
20ec9796c4SHansol Suh     suffix: 1
21ec9796c4SHansol Suh     nsize: {{1 2 3}}
22ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type nls -tao_gatol 1.e-4
23ec9796c4SHansol Suh     output_file: output/rosenbrock1_1.out
24ec9796c4SHansol Suh 
25ec9796c4SHansol Suh   test:
26ec9796c4SHansol Suh     suffix: 2
27ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type lmvm -tao_gatol 1.e-3
28ec9796c4SHansol Suh     output_file: output/rosenbrock1_2.out
29ec9796c4SHansol Suh 
30ec9796c4SHansol Suh   test:
31ec9796c4SHansol Suh     suffix: 3
32ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type ntr -tao_gatol 1.e-4
33ec9796c4SHansol Suh     output_file: output/rosenbrock1_3.out
34ec9796c4SHansol Suh 
35ec9796c4SHansol Suh   test:
36ec9796c4SHansol Suh     suffix: 4
37ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type ntr -tao_mf_hessian -tao_ntr_pc_type none -tao_gatol 1.e-4
38ec9796c4SHansol Suh     output_file: output/rosenbrock1_4.out
39ec9796c4SHansol Suh 
40ec9796c4SHansol Suh   test:
41ec9796c4SHansol Suh     suffix: 5
42ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bntr -tao_gatol 1.e-4
43ec9796c4SHansol Suh     output_file: output/rosenbrock1_5.out
44ec9796c4SHansol Suh 
45ec9796c4SHansol Suh   test:
46ec9796c4SHansol Suh     suffix: 6
47ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bntl -tao_gatol 1.e-4
48ec9796c4SHansol Suh     output_file: output/rosenbrock1_6.out
49ec9796c4SHansol Suh 
50ec9796c4SHansol Suh   test:
51ec9796c4SHansol Suh     suffix: 7
52ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bnls -tao_gatol 1.e-4
53ec9796c4SHansol Suh     output_file: output/rosenbrock1_7.out
54ec9796c4SHansol Suh 
55ec9796c4SHansol Suh   test:
56ec9796c4SHansol Suh     suffix: 8
57*a336c150SZach Atkins     args: -tao_monitor_short -tao_type bntr -tao_bnk_max_cg_its 3 -tao_gatol 1.e-4 -tao_bnk_cg_tao_monitor_short
58ec9796c4SHansol Suh     output_file: output/rosenbrock1_8.out
59ec9796c4SHansol Suh 
60ec9796c4SHansol Suh   test:
61ec9796c4SHansol Suh     suffix: 9
62*a336c150SZach Atkins     args: -tao_monitor_short -tao_type bntl -tao_bnk_max_cg_its 3 -tao_gatol 1.e-4 -tao_bnk_cg_tao_monitor_short
63ec9796c4SHansol Suh     output_file: output/rosenbrock1_9.out
64ec9796c4SHansol Suh 
65ec9796c4SHansol Suh   test:
66ec9796c4SHansol Suh     suffix: 10
67*a336c150SZach Atkins     args: -tao_monitor_short -tao_type bnls -tao_bnk_max_cg_its 3 -tao_gatol 1.e-4 -tao_bnk_cg_tao_monitor_short
68ec9796c4SHansol Suh     output_file: output/rosenbrock1_10.out
69ec9796c4SHansol Suh 
70ec9796c4SHansol Suh   test:
71ec9796c4SHansol Suh     suffix: 11
72ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmbroyden
73ec9796c4SHansol Suh     output_file: output/rosenbrock1_11.out
74ec9796c4SHansol Suh 
75ec9796c4SHansol Suh   test:
76ec9796c4SHansol Suh     suffix: 12
77ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmbadbroyden
78ec9796c4SHansol Suh     output_file: output/rosenbrock1_12.out
79ec9796c4SHansol Suh 
80ec9796c4SHansol Suh   test:
81ec9796c4SHansol Suh     suffix: 13
82ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmsymbroyden
83ec9796c4SHansol Suh     output_file: output/rosenbrock1_13.out
84ec9796c4SHansol Suh 
85ec9796c4SHansol Suh   test:
86ec9796c4SHansol Suh     suffix: 14
87ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmbfgs
88ec9796c4SHansol Suh     output_file: output/rosenbrock1_14.out
89ec9796c4SHansol Suh 
90ec9796c4SHansol Suh   test:
91ec9796c4SHansol Suh     suffix: 15
92ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmdfp
93ec9796c4SHansol Suh     output_file: output/rosenbrock1_15.out
94ec9796c4SHansol Suh 
95ec9796c4SHansol Suh   test:
96ec9796c4SHansol Suh     suffix: 16
97ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmsr1
98ec9796c4SHansol Suh     output_file: output/rosenbrock1_16.out
99ec9796c4SHansol Suh 
100ec9796c4SHansol Suh   test:
101ec9796c4SHansol Suh     suffix: 17
102ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type bqnls
103ec9796c4SHansol Suh     output_file: output/rosenbrock1_17.out
104ec9796c4SHansol Suh 
105ec9796c4SHansol Suh   test:
106ec9796c4SHansol Suh     suffix: 18
107ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type blmvm
108ec9796c4SHansol Suh     output_file: output/rosenbrock1_18.out
109ec9796c4SHansol Suh 
110ec9796c4SHansol Suh   test:
111ec9796c4SHansol Suh     suffix: 19
112ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type bqnktr -tao_bqnk_mat_type lmvmsr1
113ec9796c4SHansol Suh     output_file: output/rosenbrock1_19.out
114ec9796c4SHansol Suh 
115ec9796c4SHansol Suh   test:
116ec9796c4SHansol Suh     suffix: 20
117ec9796c4SHansol Suh     args: -tao_monitor -tao_gatol 1e-4 -tao_type blmvm -tao_ls_monitor
118ec9796c4SHansol Suh     output_file: output/rosenbrock1_20.out
119ec9796c4SHansol Suh 
120ec9796c4SHansol Suh   test:
121ec9796c4SHansol Suh     suffix: 21
122ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmsymbadbroyden
123ec9796c4SHansol Suh     output_file: output/rosenbrock1_21.out
124ec9796c4SHansol Suh 
125ec9796c4SHansol Suh   test:
126ec9796c4SHansol Suh     suffix: 22
127ec9796c4SHansol Suh     args: -tao_max_it 1 -tao_converged_reason
128ec9796c4SHansol Suh     output_file: output/rosenbrock1_22.out
129ec9796c4SHansol Suh 
130ec9796c4SHansol Suh   test:
131ec9796c4SHansol Suh     suffix: 23
132ec9796c4SHansol Suh     args: -tao_max_funcs 0 -tao_converged_reason
133ec9796c4SHansol Suh     output_file: output/rosenbrock1_23.out
134ec9796c4SHansol Suh 
135ec9796c4SHansol Suh   test:
136ec9796c4SHansol Suh     suffix: 24
137ec9796c4SHansol Suh     args: -tao_gatol 10 -tao_converged_reason
138ec9796c4SHansol Suh     output_file: output/rosenbrock1_24.out
139ec9796c4SHansol Suh 
140ec9796c4SHansol Suh   test:
141ec9796c4SHansol Suh     suffix: 25
142ec9796c4SHansol Suh     args: -tao_grtol 10 -tao_converged_reason
143ec9796c4SHansol Suh     output_file: output/rosenbrock1_25.out
144ec9796c4SHansol Suh 
145ec9796c4SHansol Suh   test:
146ec9796c4SHansol Suh     suffix: 26
147ec9796c4SHansol Suh     args: -tao_gttol 10 -tao_converged_reason
148ec9796c4SHansol Suh     output_file: output/rosenbrock1_26.out
149ec9796c4SHansol Suh 
150ec9796c4SHansol Suh   test:
151ec9796c4SHansol Suh     suffix: 27
152ec9796c4SHansol Suh     args: -tao_steptol 10 -tao_converged_reason
153ec9796c4SHansol Suh     output_file: output/rosenbrock1_27.out
154ec9796c4SHansol Suh 
155ec9796c4SHansol Suh   test:
156ec9796c4SHansol Suh     suffix: 28
157ec9796c4SHansol Suh     args: -tao_fmin 10 -tao_converged_reason
158ec9796c4SHansol Suh     output_file: output/rosenbrock1_28.out
159ec9796c4SHansol Suh 
160ec9796c4SHansol Suh   test:
161ec9796c4SHansol Suh     suffix: test_dbfgs
162ec9796c4SHansol Suh     nsize: {{1 2 3}}
163ec9796c4SHansol Suh     output_file: output/rosenbrock1_14.out
1647833cfa3SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdbfgs -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lbfgs_type {{inplace reorder}} -tao_bqnk_mat_lbfgs_recursive {{0 1}}
165ec9796c4SHansol Suh 
166ec9796c4SHansol Suh   test:
167ec9796c4SHansol Suh     suffix: test_ddfp
168ec9796c4SHansol Suh     nsize: {{1 2 3}}
169ec9796c4SHansol Suh     output_file: output/rosenbrock1_14.out
1707833cfa3SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmddfp -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_ldfp_type {{inplace reorder}} -tao_bqnk_mat_ldfp_recursive {{0 1}}
171ec9796c4SHansol Suh 
172ec9796c4SHansol Suh   test:
173ec9796c4SHansol Suh     suffix: test_dqn_1
174ec9796c4SHansol Suh     nsize: 1
175ec9796c4SHansol Suh     output_file: output/rosenbrock1_29.out
176ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lqn_type {{inplace reorder}}
177ec9796c4SHansol Suh 
178ec9796c4SHansol Suh   test:
179ec9796c4SHansol Suh     suffix: test_dqn_2
180ec9796c4SHansol Suh     nsize: 2
181ec9796c4SHansol Suh     output_file: output/rosenbrock1_30.out
182ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lqn_type {{inplace reorder}}
183ec9796c4SHansol Suh 
184ec9796c4SHansol Suh   test:
185ec9796c4SHansol Suh     suffix: test_dqn_3
186ec9796c4SHansol Suh     nsize: 3
187ec9796c4SHansol Suh     output_file: output/rosenbrock1_31.out
188ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lqn_type {{inplace reorder}}
189ec9796c4SHansol Suh 
190ec9796c4SHansol Suh   test:
191ec9796c4SHansol Suh     suffix: test_dqn_diag
192ec9796c4SHansol Suh     output_file: output/rosenbrock1_32.out
193ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type diagonal -tao_bqnk_mat_lqn_type {{inplace reorder}}
194ec9796c4SHansol Suh 
195ec9796c4SHansol Suh   # test with a large update rejection tolerance to test that portion of code
196ec9796c4SHansol Suh   test:
197ec9796c4SHansol Suh     suffix: bfgs_rejects
198ec9796c4SHansol Suh     output_file: output/rosenbrock4_bfgs_rejects.out
19909fb3ddcSToby Isaac     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type blmvm -tao_view -n 10 -bs 10 -alpha 8.0 -tao_blmvm_mat_lmvm_eps 1.2 -tao_blmvm_mat_type lmvmbfgs -tao_blmvm_mat_lmvm_scale_type scalar -tao_blmvm_mat_lmvm_mult_algorithm {{recursive dense}}
200ec9796c4SHansol Suh 
201ec9796c4SHansol Suh   test:
202ec9796c4SHansol Suh     suffix: dbfgs_rejects
203ec9796c4SHansol Suh     output_file: output/rosenbrock4_dbfgs_rejects.out
204ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type blmvm -tao_view -n 10 -bs 10 -alpha 8.0 -tao_blmvm_mat_lmvm_eps 0.01 -tao_blmvm_mat_type lmvmdbfgs -tao_blmvm_mat_lmvm_scale_type scalar
205ec9796c4SHansol Suh 
206ec9796c4SHansol Suh TEST*/
207