2.6. Functionals¶
Initialises the various functionals. All functionals should overload the Prototype, as this allows them to be combined (added, subtracted and scaled). Functionals are grouped by type; Power / Cost / Environment etc.
2.6.1. Power Functionals¶
- class opentidalfarm.functionals.power_functionals.PowerFunctional(problem, cut_in_speed=None, cut_out_speed=None, eps=1e-10)[source]¶
Implements a power functional of the form:
\[J(u, m) = \int \rho c_t ||sq(u)||^{1.5}~ dx,\]where \(c_t\) is the friction due to the turbines, and \(sq(u)\) is the squared velocity that takes into account the cut-in/out behaviour of the turbines, i.e.
\[\begin{split}sq(u) = \begin{cases} eps \|u\|^2 & \text{if } \|u\| < {cut\_in\_speed} \\ (cut\_out\_speed)^2 & \text{if } \|u\| > {cut\_out\_speed} \\ \|u\|^2 & \text{else.} \end{cases}\end{split}\]- Parameters:
problem (Instance of the problem class.) – The problem for which the functional is being computed.
cut_in_speed (float) – The turbine’s cut in speed (Default: None).
cut_out_speed (float) – The turbine’s cut out speed (Default: None).
eps – The turbine’s cut in speed slope (Default: 1e-10).
- Jt(state, turbine_field)[source]¶
Computes the power output of the farm.
- Parameters:
state (dolfin.Function) – Current solution state
turbine_field (dolfin.Function) – Turbine friction field
- Jt_individual(state, i)[source]¶
Computes the power output of the i’th turbine.
- Parameters:
state (dolfin.Function) – Current solution state
i (Integer) – refers to the i’th turbine
- force(state, turbine_field)[source]¶
Computes the force field over turbine field
- Parameters:
state (dolfin.Function) – Current solution state.
turbine_field (dolfin.Function) – Turbine friction field
2.6.2. Cost Functionals¶
- class opentidalfarm.functionals.cost_functionals.CostFunctional(problem)[source]¶
Implements a cost functional of the form:
\[J(u, m) = \int c_t~ dx,\]where \(c_t\) is the friction due to the turbines.
- Parameters:
problem (Instance of the problem class.) – The problem for which the functional is being computed.
2.6.3. Prototype Functional¶
Functional objects are overloads of the prototype functional. This allows functionals to be combined and scaled. The initialisation and ‘Jt’ methods should be overloaded.