:orphan:
# TSSetCostIntegrand
Sets the routine for evaluating the integral term in one or more cost functions 
## Synopsis
```
#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


## 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`
```none
PetscErrorCode rf(TS ts, PetscReal t, Vec U, Vec F, oid *ctx)
```


## Calling sequence of `drduf`
```none
PetscErroCode drduf(TS ts, PetscReal t, Vec U, Vec *dRdU, void *ctx)
```


## Calling sequence of `drdpf`
```none
PetscErroCode drdpf(TS ts, PetscReal t, Vec U, Vec *dRdP, void *ctx)
```




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


## See Also
 [](ch_ts), `TS`, `TSSetRHSJacobianP()`, `TSGetCostGradients()`, `TSSetCostGradients()`

## Level
deprecated

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/interface/sensitivity/tssen.c.html#TSSetCostIntegrand">src/ts/interface/sensitivity/tssen.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ts/interface/sensitivity/tssen.c)


[Index of all Sensitivity routines](index.md)  
[Table of Contents for all manual pages](/manualpages/index.md)  
[Index of all manual pages](/manualpages/singleindex.md)  
