Actual source code: ex1.c
1: const char help[] = "Basic TaoTerm usage";
3: #include <petsctao.h>
5: int main(int argc, char **argv)
6: {
7: TaoTerm term;
8: PetscViewer viewer;
9: PetscBool view_detail = PETSC_TRUE;
10: PetscBool dup_type = PETSC_FALSE;
11: PetscBool flg;
13: PetscFunctionBeginUser;
14: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
16: PetscCall(PetscOptionsGetBool(NULL, NULL, "-view_detail", &view_detail, &flg));
17: PetscCall(PetscOptionsGetBool(NULL, NULL, "-duplicate_type", &dup_type, &flg));
18: PetscCall(PetscViewerCreate(PETSC_COMM_WORLD, &viewer));
19: PetscCall(PetscViewerSetType(viewer, PETSCVIEWERASCII));
20: PetscCall(PetscViewerSetUp(viewer));
21: PetscCall(PetscViewerSetFromOptions(viewer));
22: if (view_detail) PetscCall(PetscViewerPushFormat(viewer, PETSC_VIEWER_ASCII_INFO_DETAIL));
23: else PetscCall(PetscViewerPushFormat(viewer, PETSC_VIEWER_ASCII_INFO));
25: PetscCall(TaoTermCreate(PETSC_COMM_WORLD, &term));
26: PetscCall(TaoTermSetSolutionSizes(term, PETSC_DECIDE, 10, 1));
27: PetscCall(TaoTermSetParametersSizes(term, PETSC_DECIDE, 7, 1));
28: PetscCall(PetscObjectSetName((PetscObject)term, "example TaoTerm"));
29: PetscCall(TaoTermSetFromOptions(term));
30: PetscCall(TaoTermSetUp(term));
31: if (dup_type) {
32: TaoTermType ttype, ttype2;
33: TaoTerm term2;
34: PetscBool is_same;
36: PetscCall(TaoTermDuplicate(term, TAOTERM_DUPLICATE_TYPE, &term2));
37: PetscCall(TaoTermGetType(term, &ttype));
38: PetscCall(TaoTermGetType(term2, &ttype2));
39: PetscCall(PetscStrcmp(ttype, ttype2, &is_same));
40: PetscCheck(is_same, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "TaoTermDuplicate not duplicating type correctly");
41: PetscCall(TaoTermDestroy(&term2));
42: }
43: PetscCall(TaoTermView(term, viewer));
44: PetscCall(PetscViewerPopFormat(viewer));
45: PetscCall(TaoTermDestroy(&term));
46: PetscCall(PetscViewerDestroy(&viewer));
47: PetscCall(PetscFinalize());
48: return 0;
49: }
51: /*TEST
53: test:
54: suffix: 0
56: test:
57: suffix: 0_from_options
58: output_file: output/ex1_0.out
59: args: -tao_term_type shell
61: test:
62: suffix: 1
63: args: -tao_term_type callbacks
65: test:
66: suffix: 1_ascii
67: args: -tao_term_type callbacks -view_detail 0
69: test:
70: suffix: 2
71: args: -tao_term_type sum -tao_term_sum_number_terms 2 -term_0_tao_term_type halfl2squared -term_1_tao_term_type l1 -tao_term_sum_term_0_scale 0.5 -tao_term_sum_term_0_mask objective,gradient,hessian
73: test:
74: suffix: 2_ascii
75: args: -tao_term_type sum -tao_term_sum_number_terms 2 -term_0_tao_term_type halfl2squared -term_1_tao_term_type l1 -tao_term_sum_term_0_scale 0.5 -tao_term_sum_term_0_mask objective,gradient,hessian
76: args: -view_detail 0
78: test:
79: suffix: duplicate_type
80: output_file: output/ex1_0.out
81: args: -tao_term_type shell -duplicate_type 1
83: TEST*/