petsc-3.14.6 2021-03-30
Report Typos and Errors


Sets the routine for evaluating the integral term in one or more cost functions


#include "petscts.h"  
PetscErrorCode TSSetCostIntegrand(TS ts,PetscInt numcost,Vec costintegral,PetscErrorCode (*rf)(TS,PetscReal,Vec,Vec,void*),
                                                          PetscErrorCode (*drduf)(TS,PetscReal,Vec,Vec*,void*),
                                                          PetscErrorCode (*drdpf)(TS,PetscReal,Vec,Vec*,void*),
                                                          PetscBool fwd,void *ctx)
Logically Collective on TS

Input Parameters

ts - the TS context obtained from TSCreate()
numcost - number of gradients to be computed, this is the number of cost functions
costintegral - vector that stores the integral values
rf - routine for evaluating the integrand function
drduf - function that computes the gradients of the r's with respect to u
drdpf - function that computes the gradients of the r's with respect to p, can be NULL if parametric sensitivity is not desired (mu=NULL)
fwd - flag indicating whether to evaluate cost integral in the forward run or the adjoint run
ctx - [optional] user-defined context for private data for the function evaluation routine (may be NULL)

Calling sequence of rf

  PetscErrorCode rf(TS ts,PetscReal t,Vec U,Vec F,void *ctx);

Calling sequence of drduf

  PetscErroCode drduf(TS ts,PetscReal t,Vec U,Vec *dRdU,void *ctx);

Calling sequence of drdpf

  PetscErroCode drdpf(TS ts,PetscReal t,Vec U,Vec *dRdP,void *ctx);


For optimization there is usually a single cost function (numcost = 1). For sensitivities there may be multiple cost functions

See Also

TSSetRHSJacobianP(), TSGetCostGradients(), TSSetCostGradients()




Index of all Sensitivity routines
Table of Contents for all manual pages
Index of all manual pages