# 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 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
```none
PetscErrorCode rf(TS ts,PetscReal t,Vec U,Vec F,void *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
 [](chapter_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](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
