3.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.
3.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
|
-
force_individual
(state, i)[source]
Computes the total force on the i’th turbine
Parameters: |
- state (dolfin.Function) – Current solution state
- i (Integer) – refers to the i’th turbine
|
-
power
(state, turbine_field)[source]
Computes the power field over the domain.
Parameters: |
- state (dolfin.Function) – Current solution state.
- turbine_field (dolfin.Function) – Turbine friction field
|
3.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. |
-
Jt
(state, turbine_field)[source]
Computes the cost of the farm.
Parameters: |
- state (dolfin.Function) – Current solution state
- turbine_field (dolfin.Function) – Turbine friction field
|
-
Jt_individual
(state, i)[source]
Computes the cost of the i’th turbine.
Parameters: |
- state (dolfin.Function) – Current solution state
- i (Integer) – turbine index
|
3.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.