Actual source code: daapp_impl.h
1: #ifndef PETSCDAAPPIMPL_H
2: #define PETSCDAAPPIMPL_H
4: #include "petscmat.h"
5: #include "petscda.h"
6: #include "dagridctx.h"
8: typedef struct _p_DA_APPLICATION* DA_APPLICATION;
9: typedef struct _p_TAOAPPLICATION* TAO_APPLICATION;
12: #define PETSCDAAPPMAXGRIDS 20
13: #define MAX_DAAP_MONITORS 10
15: struct _p_DA_APPLICATION {
17: PETSCHEADER(int);
19: GridCtx grid[PETSCDAAPPMAXGRIDS];
21: int ndamax; /* Max number of levels */
22: int nda; /* Number of levels in current application */
23: int currentlevel; /* The current level being solved */
25: PetscTruth IsComplementarity;
26: MatStructure kspflag;
27: char HessianMatrixType[20];
28:
29: /* Function Gradient Evaluation over entire DA */
30: int (*computedafunction)(TAO_APPLICATION,DA,Vec,double*,void*);
31: int (*computedagradient)(TAO_APPLICATION,DA,Vec,Vec,void*);
32: int (*computedafunctiongradient)(TAO_APPLICATION,DA,Vec,double*,Vec,void*);
33: void *usrdafctx;
34: void *usrdagctx;
35: void *usrdafgctx;
37: /* Hessian Evaluation over entire DA */
38: int (*computedahessian)(TAO_APPLICATION,DA,Vec,Mat,void*);
39: void *usrdahctx;
41: /* Evaluate bounds over entire DA */
42: void* bounddactx;
43: int (*computedabounds)(TAO_APPLICATION,DA,Vec,Vec,void*);
45: /* User monitors before and after each Optimization Solve */
46: int nbeforemonitors;
47: void *beforemonitorctx[MAX_DAAP_MONITORS];
48: int (*beforemonitor[MAX_DAAP_MONITORS])(TAO_APPLICATION,DA,int,void*);
50: int naftermonitors;
51: void *aftermonitorctx[MAX_DAAP_MONITORS];
52: int (*aftermonitor[MAX_DAAP_MONITORS])(TAO_APPLICATION,DA,int,void*);
54: };
56: //#include "taodaapplication.h"
58: #endif