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.