## NAME

integrate - expression integration (rheolef-7.2)

## SYNOPSIS

template
<typename Expression>

Value integrate (geo domain, Expression, integrate_option
iopt);

## DESCRIPTION

This overloaded function is able to return either a scalar constant, a field(2) or a bilinear form(2), depending upon its arguments.

1. |
When the expression involves both | ||

2. |
When the expression involves either a | ||

3. |
When the expression involves neither a |

The general call involves three arguments:

1. |
the geo(2) domain of integration |
|||

2. |
the expression to integrate |
|||

3. |

Here is the overloaded synopsis:

Float integrate
(geo domain, Expression, integrate_option iopt);

field integrate (geo domain, Expression, integrate_option
iopt);

form integrate (geo domain, Expression, integrate_option
iopt);

## OMITTED ARGUMENTS

Some argument could be omitted when the expression involves a test(2) function:

• |
when the domain of integration is omitted, then it is taken as those of the test(2) function |

The reduced synopsis is:

field integrate
(Expression, integrate_option iopt);

form integrate (Expression, integrate_option iopt);

• |
when the
integrate_option(3) is omitted, then a Gauss
quadrature formula is considered such that it integrates
exactly |

The reduced synopsis is:

field integrate
(geo domain, Expression);

form integrate (geo domain, Expression);

Both arguments could be omitted an the synopsis becomes:

field integrate
(Expression);

form integrate (Expression);

## INTEGRATION OVER A SUBDOMAIN

Let
`omega` be a finite element mesh of a geometric
domain, as described by the geo(2) class. A subdomain
is defined by indexation, e.g.
`omega[’left’]` and, when a
test(2) function is involved, the `omega`
could be omitted, and only the string
`’left’` has to be present e.g.

test v (Xh);

field lh = integrate (’left’, 2*v);

is equivalent to

field lh = integrate (omega[’left’], 2*v);

## MEASURE OF A DOMAIN

Finally, when
only the domain argument is provided, the `integrate`
function returns its measure:

Float integrate (geo domain);

## EXAMPLES

The computation of the measure of a domain:

Float
meas_omega = integrate (omega);

Float meas_left = integrate (omega[’left’]);

The integral of a function:

Float f (const
point& x) { return exp(x[0]+x[1]); }

...

integrate_option iopt;

iopt.set_order (3);

Float int_f = integrate (omega, f, iopt);

The function can be replaced by any expression combining functions, class-functions and field(2).

The right-hand-side involved by the variational formulation

space Xh
(omega, ’P1’);

test v (Xh);

field lh = integrate (f*v);

For a bilinear form:

trial u (Xh);

form m = integrate (u*v);

form a = integrate (dot(grad(u),grad(v)));

The expression can also combine functions, class-functions and field(2).

## IMPLEMENTATION

This documentation has been generated from file main/lib/integrate.h

## AUTHOR

Pierre Saramito
<Pierre.Saramito *[AT]* imag.fr>

## COPYRIGHT

Copyright (C)
2000-2018 Pierre Saramito <Pierre.Saramito *[AT]* imag.fr>
GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>;. This is free
software: you are free to change and redistribute it. There
is NO WARRANTY, to the extent permitted by law.