<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" dtd-version="3.0">
  <front>
    <journal-meta>
<journal-id journal-id-type="publisher">WES</journal-id>
<journal-title-group>
<journal-title>Wind Energy Science</journal-title>
<abbrev-journal-title abbrev-type="publisher">WES</abbrev-journal-title>
<abbrev-journal-title abbrev-type="nlm-ta">Wind Energ. Sci.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">2366-7451</issn>
<publisher><publisher-name>Copernicus Publications</publisher-name>
<publisher-loc>Göttingen, Germany</publisher-loc>
</publisher>
</journal-meta>

    <article-meta>
      <article-id pub-id-type="doi">10.5194/wes-2-115-2017</article-id><title-group><article-title>Optimization of wind plant layouts using an<?xmltex \hack{\newline}?> adjoint approach</article-title>
      </title-group><?xmltex \runningtitle{Adjoint optimization of wind plant layouts}?><?xmltex \runningauthor{R.~N.~King et al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2">
          <name><surname>King</surname><given-names>Ryan N.</given-names></name>
          <email>ryan.king@nrel.gov</email>
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Dykes</surname><given-names>Katherine</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Graf</surname><given-names>Peter</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Hamlington</surname><given-names>Peter E.</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>University of Colorado, Boulder, Colorado, USA</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>National Renewable Energy Laboratory, Golden, Colorado, USA</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Ryan N. King (ryan.king@nrel.gov)</corresp></author-notes><pub-date><day>10</day><month>March</month><year>2017</year></pub-date>
      
      <volume>2</volume>
      <issue>1</issue>
      <fpage>115</fpage><lpage>131</lpage>
      <history>
        <date date-type="received"><day>17</day><month>July</month><year>2016</year></date>
           <date date-type="rev-request"><day>31</day><month>August</month><year>2016</year></date>
           <date date-type="rev-recd"><day>6</day><month>December</month><year>2016</year></date>
           <date date-type="accepted"><day>6</day><month>January</month><year>2017</year></date>
      </history>
      <permissions>
<license license-type="open-access">
<license-p>This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</ext-link></license-p>
</license>
</permissions><self-uri xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017.html">This article is available from https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017.html</self-uri>
<self-uri xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017.pdf</self-uri>


      <abstract>
    <p>Using adjoint optimization and three-dimensional steady-state
Reynolds-averaged Navier–Stokes (RANS) simulations, we present a new
gradient-based approach for optimally siting wind turbines within
utility-scale wind plants. By solving the adjoint equations of the flow
model, the gradients needed for optimization are found at a cost that is
independent of the number of control variables, thereby permitting
optimization of large wind plants with many turbine locations. Moreover,
compared to the common approach of superimposing prescribed wake deficits
onto linearized flow models, the computational efficiency of the adjoint
approach allows the use of higher-fidelity RANS flow models which can capture
nonlinear turbulent flow physics within a wind plant. The steady-state RANS
flow model is implemented in the Python finite-element package
<monospace>FEniCS</monospace> and the derivation and solution of the discrete adjoint
equations are automated within the <monospace>dolfin-adjoint</monospace> framework.
Gradient-based optimization of wind turbine locations is demonstrated for
idealized test cases that reveal new optimization heuristics such as
rotational symmetry, local speedups, and nonlinear wake curvature effects.
Layout optimization is also demonstrated on more complex wind rose shapes,
including a full annual energy production (AEP) layout optimization over 36
inflow directions and 5 wind speed bins.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <title>Introduction</title>
      <p>Optimizing wind turbine locations within a wind plant is a uniquely
challenging problem that combines turbulent flow control with practical
engineering challenges concerning the economical development of renewable
energy. The problem is further complicated by the strong nonlinear coupling
between turbine locations, power production, atmospheric boundary layer
turbulence, and mechanical loads on turbine components. Wind plant
optimization techniques used in industry often rely on heuristic guidelines
and simplified linear flow models that limit computational costs. However,
these approaches neglect important turbulent flow physics and can result in
the underperformance of wind plants relative to their pre-construction
estimates. The reduced power output and increased uncertainty due to
optimization with low-fidelity flow models ultimately increases the levelized
cost of energy (LCOE) and associated project risk for investors.</p>
      <p>Major impediments to improving the LCOE for utility-scale wind plants are the
difficulty of performing the turbine layout optimization using fluid
dynamical models with sufficient fidelity and performing optimization in
high-dimensional design spaces. In order to improve wind plant optimization,
we present <monospace>WindSE</monospace>, a wind plant layout tool that uses a steady-state
three-dimensional (3-D) Reynolds-averaged Navier–Stokes (RANS) flow model and
gradient-based optimization. This gradient-based approach, made possible by
automated adjoint derivations, yields an efficient, high-fidelity, and
high-dimensional wind plant optimization framework. The software is part of
the National Renewable Energy Laboratory Wind-Plant Integrated System Design
and Engineering Model (WISDEM<sup>™</sup>)
<xref ref-type="bibr" rid="bib1.bibx17" id="paren.1"/>, which provides a modular framework for
comprehensive analysis and optimization of wind plant designs. Through the
use of a higher-fidelity 3-D RANS flow model and gradient-based adjoint
optimization, <monospace>WindSE</monospace> is able to provide optimized layouts with
arbitrary topological complexity at relatively low computational cost, while
at the same time more accurately capturing turbulent flow effects present in
real wind plants.</p>
      <p>This paper is organized as follows: background on wind plant flow modeling,
layout optimization, and adjoint optimization techniques is provided in
Sect. 2; a description of the methods used in <monospace>WindSE</monospace> for
implementing the wind plant optimization problem, flow model, turbine
representation, numerics, and optimization algorithm is given in
Sect. 3; a demonstration of the flow model capabilities and optimization
results for idealized and real world test cases with increasingly complex
wind roses, culminating in a full annual energy production (AEP)
optimization, is presented in Sect. 4; and the paper is concluded with a
discussion of the results and implications for wind plant design in Sect. 5.</p>
</sec>
<sec id="Ch1.S2">
  <title>Background</title>
<sec id="Ch1.S2.SS1">
  <title>Wind plant flow modeling</title>
      <p>Utility-scale wind plants in the United States typically involve tens to
hundreds of turbines arranged in semi-regular arrays. The layout topology is
generally an outcome of optimizing the power production or net capacity
factor subject to competing influences from site constraints, the local wind
resource, and construction costs. These constraints include the patchwork of
viable building areas formed by leases and setbacks due to environmental
concerns or physical infrastructure, terrain and soil characteristics like
slope or vegetation, turbine manufacturer spacing requirements, and
continuity requirements imposed by access roads and electrical connections.
This results in a complex design problem, with turbine layouts varying
drastically between different geographic locations and exhibiting complex
topologies.</p>
      <p>The AEP from a wind plant layout has traditionally been, and generally
continues to be, assessed using reduced-order linear flow models. Such models
estimate the relative wind speed across a site based on the linearized
Navier–Stokes equations and treat terrain features as perturbations in
boundary conditions. The underlying governing equations, introduced by
<xref ref-type="bibr" rid="bib1.bibx33" id="text.2"/> and implemented in packages
such as MS3DJH/3R <xref ref-type="bibr" rid="bib1.bibx53" id="paren.3"/>, are based on analytical
perturbation solutions to flow over a low hill. This approach decomposes the
terrain into sinusoidal hills and calculates relative speedup effects over
each hill. Speedup effects from multiple hills are superimposed to obtain
relative velocities over the entire site. The emphasis on relative velocities
is motivated by the need to extrapolate from point measurements at
meteorological towers to velocity fields covering the entire plant.</p>
      <p>A velocity deficit representing the turbine wake is then superimposed on the
background wind resource at each turbine location. The PARK model developed
by <xref ref-type="bibr" rid="bib1.bibx36" id="text.4"/> and the eddy viscosity model developed by
<xref ref-type="bibr" rid="bib1.bibx1" id="text.5"/> are commonly used, and a
comprehensive review of wake modeling can be found in
<xref ref-type="bibr" rid="bib1.bibx14" id="text.6"/>. Such approaches decouple the wind flow
calculation from the wake calculation and use wake models calibrated to a
single turbine in isolation. As a result, the wake model approach neglects
flow curvature, speed-up effects around turbines, and changes to wakes deep
in a plant. This results in known inaccuracies in complex terrain, ad hoc
model adjustments for overlapping wakes from multiple turbines, and systemic
under-predictions of wake losses and over-predictions of power output
<xref ref-type="bibr" rid="bib1.bibx3" id="paren.7"/>. Despite these limitations, linear flow
models and prescribed wake models are commonly used in engineering practice
because they are computationally inexpensive and reasonably accurate in
simple terrain with few turbines.</p>
      <p>Recently, higher-fidelity computational fluid dynamics (CFD) models have been
increasingly applied to the study of wind plant performance. Several RANS
models have been developed for simulating atmospheric flows in wind plants
using actuator disk turbine representations, with a particular emphasis on
modified <inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi></mml:mrow></mml:math></inline-formula> closures
<xref ref-type="bibr" rid="bib1.bibx9 bib1.bibx18 bib1.bibx51 bib1.bibx52" id="paren.8"/>.
These approaches greatly improve upon linearized flow models and, given an
appropriate model for the turbulent eddy viscosity, better capture turbulent
transport effects in the shear layer at the edge of the wake. Large eddy
simulation (LES) is also increasingly being applied to wind plant modeling
<xref ref-type="bibr" rid="bib1.bibx10 bib1.bibx49 bib1.bibx13" id="paren.9"/>,
as well as to some aspects of wind plant optimization. These simulations are
vastly more expensive than RANS approaches, but resolve time-varying
turbulent motions up to the filter cutoff scale. This allows for better
characterization of wake meandering and unsteady loads on turbines. Finally,
wind plant modeling has also been improved through coupling to numerical
weather prediction simulations
<xref ref-type="bibr" rid="bib1.bibx20 bib1.bibx47" id="paren.10"/>. Such simulations are
able to incorporate synoptic-scale weather forcing and interactions between
the surface, wind plant, and full atmospheric boundary layer.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <title>Approaches to wind plant optimization</title>
      <p>To date, wind plant layout optimization has been performed primarily using
linear flow models with analytical wake deficits. The relatively cheap
computational cost of such models allows gradient-free methods to be used in
the optimization process. A number of layout optimization studies have
utilized gradient-free approaches to minimize wake losses
<xref ref-type="bibr" rid="bib1.bibx39" id="paren.11"/>, maximize net present value
<xref ref-type="bibr" rid="bib1.bibx28" id="paren.12"/>, and minimize noise propagation
<xref ref-type="bibr" rid="bib1.bibx40" id="paren.13"/>. Other optimization approaches include particle swarm
optimizations that determine turbine layouts and rotor diameters
<xref ref-type="bibr" rid="bib1.bibx12" id="paren.14"/>, extended pattern searches for multimodal
layout optimization <xref ref-type="bibr" rid="bib1.bibx16" id="paren.15"/>, and even game-theoretic
methods <xref ref-type="bibr" rid="bib1.bibx44" id="paren.16"/>. An exhaustive review of wind plant
optimization efforts has been compiled by
<xref ref-type="bibr" rid="bib1.bibx29" id="text.17"/> that surveys the wide variety of objective
functions, flow models, and constraints that have been studied. Results from
these prior optimizations are, however, heavily influenced by the use of
analytical wake models which do not fully account for nonlinear and turbulent
flow physics. Consequently, significant differences in optimal layouts are
expected when using higher-fidelity flow models.</p>
      <p>Recently, higher-fidelity CFD flow models have been used in a limited range
of wind plant optimization applications. The Technical University of Denmark
has developed TOPFARM <xref ref-type="bibr" rid="bib1.bibx41" id="paren.18"/>, which employs an
improved wake model (the dynamic wake meandering model) as well as a
parabolic Navier–Stokes solver. TOPFARM uses a hybrid optimization approach
that combines sequential linear programming (SLP) with gradient-free genetic
algorithms. The genetic algorithm is used to find the neighborhood of the
global optimum, and then the gradient-based SLP algorithm completes the
optimization. However, the genetic algorithm step penalizes large design
spaces, limiting TOPFARM to relatively small wind plants.
<xref ref-type="bibr" rid="bib1.bibx38" id="text.19"/> used adjoints of a 2-D RANS flow model to optimize
turbine locations and observed that the 2-D nature of the flow solver
resulted in substantial flow curvature.
<xref ref-type="bibr" rid="bib1.bibx46" id="text.20"/> studied the effects of spacing and alignment in
infinite wind plants with turbines arranged in regular gridded turbine
arrays. In their study, a pseudospectral LES was used to model atmospheric
boundary layer turbulence and complex wake interactions, but the optimized
layouts were restricted to grids, as opposed to a more general layout
topology optimization where turbines are free to arrange in non-gridded
configurations. LES results have also been used to tune linear flow models
that were used in optimization of yaw control <xref ref-type="bibr" rid="bib1.bibx23" id="paren.21"/>,
turbine layouts <xref ref-type="bibr" rid="bib1.bibx5" id="paren.22"/>, and coupled layout and yaw
optimization <xref ref-type="bibr" rid="bib1.bibx21" id="paren.23"/>, or in the tuning of RANS models for
wind plant control optimization <xref ref-type="bibr" rid="bib1.bibx32" id="paren.24"/>. Wind plant LES
has also been used to directly perform adjoint optimization of wind plant
controls by adjusting rotor thrust during operation
<xref ref-type="bibr" rid="bib1.bibx27 bib1.bibx26" id="paren.25"/>. These approaches benefit from
high-fidelity CFD and leverage the power of adjoint optimization but have
only been applied for fixed layouts. Finally,
<xref ref-type="bibr" rid="bib1.bibx22" id="text.26"/> performed an adjoint optimization of ocean turbine
layouts using an analysis based on the shallow water equations, with ocean
turbines represented by increased bottom friction.</p>
      <p>In the present study, we use adjoint techniques to enable gradient-based
optimization of wind turbine locations within a plant, subject to realistic
turbulent flow fields. A steady <?xmltex \hack{\mbox\bgroup}?>3-D<?xmltex \hack{\egroup}?> RANS flow solver is employed as a
first-principles model that can predict new turbulent flow physics, rather
than prescribing fixed wake behaviors as in linear flow models. The RANS
model provides an accurate model of a neutral atmospheric boundary layer at
moderate computational cost and without requiring calibration using LES. The
RANS model is also amenable to automatic differentiation and gradient-based
optimization, as explained in the next section. This gradient-based approach
permits the use of high-dimensional control spaces, thereby providing
optimized layouts of arbitrary complexity (i.e., optimized layouts are not
restricted to grids or any other regular arrangement). We further demonstrate
layout optimization for the full plant AEP based on a real site wind rose,
going beyond the uniform speed optimization considered previously
<xref ref-type="bibr" rid="bib1.bibx38" id="paren.27"/>. The resulting optimization framework thus
represents a novel application of adjoint techniques to the optimization of
utility-scale wind plants using a higher-fidelity CFD flow model.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <title>Adjoint techniques for efficiently calculating gradients</title>
      <p>The greater expense of CFD flow models such as RANS and LES compared to
linearized flow models requires the use of an efficient optimization
technique that minimizes the number of flow model evaluations. Gradient-based
optimization methods are promising candidates for CFD-driven wind plant
optimization since they require orders of magnitude fewer function
evaluations than gradient-free techniques. However, finding these gradients
can be challenging when using complex flow models or when there are many
control variables. Calculating such gradients with a finite-difference
approach requires a function evaluation for each control variable, making
this approach prohibitively expensive for optimizing utility-scale plants
with many turbines.</p>
      <p>In the present optimization framework, the necessary gradients are obtained
relatively inexpensively by using adjoint optimization techniques. A
comprehensive review of discrete techniques for calculating gradients of
engineering design problems, including the adjoint approach, can be found in
<xref ref-type="bibr" rid="bib1.bibx45" id="text.28"/>. The adjoint approach allows
one to calculate gradients at a cost that scales with the dimension of the
objective function rather than with the number of design variables. For wind
plant optimizations with scalar objective functions, this means that
gradients can be found at a fixed cost regardless of the number of control
variables.</p>
      <p>Adjoint systems arise naturally from consideration of dynamical systems whose
behavior can be described by differential equations, and they have a rich
history in fluid dynamics and sensitivity analysis. Reviews of adjoint
techniques in various flow control and optimization applications have been
published by  <xref ref-type="bibr" rid="bib1.bibx35" id="text.29"/>, <xref ref-type="bibr" rid="bib1.bibx25" id="text.30"/>, <xref ref-type="bibr" rid="bib1.bibx24" id="text.31"/>, and
<xref ref-type="bibr" rid="bib1.bibx43" id="text.32"/>. At its core, the adjoint approach reverses the
propagation of information in a dynamical system. Given an ordinary or
partial differential equation governing the evolution of a dynamical system
and an objective function measuring a quantity of interest, the adjoint
approach produces a differential equation whose states evolve backward in
time and indicates where a perturbation would maximally influence the
objective function. By reversing the flow of information, the adjoint reveals
what is effectively the optimal open-loop control input.</p>
      <p>The adjoint operator is defined by the bilinear identity <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mfenced close="〉" open="〈"><mml:mi mathvariant="bold">A</mml:mi><mml:mi>u</mml:mi><mml:mo>,</mml:mo><mml:mi>v</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced close="〉" open="〈"><mml:mi>u</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold">B</mml:mi><mml:mi>v</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula>, where operator <inline-formula><mml:math id="M3" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula> is adjoint to operator <inline-formula><mml:math id="M4" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula>.
This holds if <inline-formula><mml:math id="M5" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula> is a continuous differential operator, in which
case <inline-formula><mml:math id="M6" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula> is found through integration by parts, or if <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula>
is a matrix, in which case <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:mi mathvariant="bold">B</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold">A</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">A</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> is the
complex conjugate transpose of <inline-formula><mml:math id="M10" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula>. This bilinear identity reveals
that the adjoint operator is implicitly defined by the forward model, but in
order for the adjoint problem to be well posed, additional constraints are
required. Because the adjoint travels backwards in time, these constraints
are terminal conditions rather than initial conditions, and they come from
the specific objective function under consideration as well as from the
states produced by the forward model. The RANS model considered in this study
is steady state in time and consequently the adjoint system is also
steady state, equivalent to solving a single time step in the dynamical
systems interpretation.</p>
      <p>The following general framework illustrates the computational advantages of
the adjoint approach. Consider a dynamical system with governing equations
that can be expressed in residual form as
<inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>≡</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M12" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula> is a
vector-valued differential equation (e.g., the RANS equations), <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the system state vector (e.g., the flow field velocities),
and <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>m</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is a vector of control variables (e.g., the wind turbine
coordinates). Additionally, consider a scalar objective functional <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:mi>J</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula> that measures a quantity of interest
(e.g., the LCOE). Many engineering problems can be formulated as constrained
optimization problems that seek optimal states and control parameters to
minimize <inline-formula><mml:math id="M16" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>, namely
            <disp-formula id="Ch1.E1" content-type="numbered"><mml:math id="M17" display="block"><mml:mtable class="aligned" rowspacing="0.2ex" columnspacing="1em" displaystyle="true" columnalign="right left right left"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munder><mml:mo movablelimits="false">min⁡</mml:mo><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:munder></mml:mrow></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>J</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>subject to</mml:mtext></mml:mrow></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="script">F</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>h</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>g</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M18" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M19" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula> are additional equality and inequality constraints on the
control parameter <inline-formula><mml:math id="M20" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>, such as upper and lower bounds on a control
input (e.g., wind plant site boundaries). In common engineering problems,
<inline-formula><mml:math id="M21" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula> is a partial differential equation (PDE) that is expensive to
evaluate, and the dimensions of both the control space and state space are
high. Efficiently solving this PDE-constrained optimization problem requires
algorithms that scale well to high dimensions and that minimize the number of
evaluations of <inline-formula><mml:math id="M22" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula>.</p>
      <p>A common approach to solving a PDE-constrained problem is to minimize a
reduced functional <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>≡</mml:mo><mml:mi>J</mml:mi><mml:mfenced open="[" close="]"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula>. This formulation takes
advantage of the fact that the PDE constraint
<inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> implicitly defines the state <inline-formula><mml:math id="M25" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula>
in terms of the control <inline-formula><mml:math id="M26" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>. Minimizing the reduced functional is
equivalent to minimizing the original functional if the governing equations
<inline-formula><mml:math id="M27" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula> produce a unique state <inline-formula><mml:math id="M28" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> for a given set of controls
<inline-formula><mml:math id="M29" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>, and if
<inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mfenced close="]" open="["><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> is assumed to
be continuously invertible so that <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> is continuously
differentiable <xref ref-type="bibr" rid="bib1.bibx31" id="paren.33"/>.</p>
      <p>Gradient-based optimization algorithms can approach second-order convergence
to local minima and can minimize the evaluations of <inline-formula><mml:math id="M32" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula>, but
require the gradient of the objective functional with respect to all of the
control parameters. This gradient, <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:math></inline-formula>, is
given by the chain rule as
            <disp-formula id="Ch1.E2" content-type="numbered"><mml:math id="M34" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>J</mml:mi><mml:mfenced close="]" open="["><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          Since <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:mi>J</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> is generally a user-defined
function, <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and
<inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> are straightforward
to determine analytically. However, <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is expensive to compute for high-dimensional
control and state spaces. A finite-difference approach to calculating this
gradient would require <inline-formula><mml:math id="M39" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> evaluations of <inline-formula><mml:math id="M40" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula>, which is intractable
for many engineering problems.</p>
      <p>In the adjoint approach, <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:math></inline-formula> is eliminated
from Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) by taking the derivative of the PDE constraint
<inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> with respect to <inline-formula><mml:math id="M43" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>,
resulting in the tangent linear system
            <disp-formula id="Ch1.E3" content-type="numbered"><mml:math id="M44" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="script">F</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="script">F</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          Solving for <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E3"/>)
and substituting into Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) then yields
            <disp-formula id="Ch1.E4" content-type="numbered"><mml:math id="M46" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:munder><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mfenced open="[" close="]"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="script">F</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mrow><mml:msup><mml:mi mathvariant="bold">Ψ</mml:mi><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="script">F</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where we have introduced the new <italic>adjoint</italic> variable <inline-formula><mml:math id="M47" display="inline"><mml:mi mathvariant="bold">Ψ</mml:mi></mml:math></inline-formula>. This
variable maps source perturbations in <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>
to sensitivities of <inline-formula><mml:math id="M49" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>. By definition, it is governed by
            <disp-formula id="Ch1.E5" content-type="numbered"><mml:math id="M50" display="block"><mml:mrow><mml:msup><mml:mfenced open="[" close="]"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="script">F</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mi>T</mml:mi></mml:msup><mml:mi mathvariant="bold">Ψ</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mi>T</mml:mi></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          With a solution of the forward model <inline-formula><mml:math id="M51" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula> and the adjoint <inline-formula><mml:math id="M52" display="inline"><mml:mi mathvariant="bold">Ψ</mml:mi></mml:math></inline-formula>,
the derivative of the objective function expressed in Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>)
can then be calculated as
            <disp-formula id="Ch1.E6" content-type="numbered"><mml:math id="M53" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="bold">Ψ</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="script">F</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          Because Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) is independent of <inline-formula><mml:math id="M54" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>, the gradient can be
calculated at a fixed cost regardless of the dimension of <inline-formula><mml:math id="M55" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>. This
enables efficient gradient-based optimization for systems governed by
computationally demanding PDEs. Equation (<xref ref-type="disp-formula" rid="Ch1.E5"/>) provides an intuitive
interpretation of the adjoint as a linear mapping between source perturbation
in the governing equations and changes in the objective function. The adjoint
thus provides the optimal control input and directly encodes the
sensitivities of <inline-formula><mml:math id="M56" display="inline"><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula>. Alternatively, the adjoint can also be
interpreted as a Lagrange multiplier enforcing the PDE constraint
<inline-formula><mml:math id="M57" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula>.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <title>Methodology</title>
      <p>In the present study, wind plant layout optimization is approached as a
PDE-constrained optimization problem using the adjoint theory developed in
the previous section. The wind plant power output is maximized with
gradient-based optimization techniques, subject to a PDE constraint
corresponding to the RANS equations, which are used to predict turbulent flow
within the plant.</p>
<sec id="Ch1.S3.SS1">
  <title>Optimization problem definition</title>
      <p>We seek to maximize steady-state power output from <inline-formula><mml:math id="M58" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> different turbines
experiencing <inline-formula><mml:math id="M59" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> different inflow wind states (each state is defined by a
wind speed and direction) by controlling the 2-D Cartesian positions of the
turbines, <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi mathvariant="normal">…</mml:mi><mml:msub><mml:mi>x</mml:mi><mml:mi>N</mml:mi></mml:msub></mml:mfenced></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi mathvariant="normal">…</mml:mi><mml:msub><mml:mi>y</mml:mi><mml:mi>N</mml:mi></mml:msub></mml:mfenced></mml:mrow></mml:math></inline-formula>. The Reynolds-averaged velocity field <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and pressure field <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>p</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula> are taken to
be the states (collectively denoted <inline-formula><mml:math id="M64" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula>) and the turbine coordinates
are the control variable <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mfenced><mml:mi>T</mml:mi></mml:msup><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. This leads to the following optimization problem:
            <disp-formula id="Ch1.E7" content-type="numbered"><mml:math id="M66" display="block"><mml:mtable class="aligned" rowspacing="0.2ex" columnspacing="1em" displaystyle="true" columnalign="right left right left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munder><mml:mo movablelimits="false">min⁡</mml:mo><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="bold">,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mrow></mml:munder></mml:mrow></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>J</mml:mi><mml:mfenced open="[" close="]"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>-</mml:mo><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>K</mml:mi></mml:msubsup><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>n</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>‖</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>⋅</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>k</mml:mi></mml:msub><mml:msup><mml:mo>‖</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>subject to</mml:mtext></mml:mrow></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mover accent="true"><mml:mi>p</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mtext>AD</mml:mtext><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mtext>AD</mml:mtext><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi>n</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>‖</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold">m</mml:mi></mml:mfenced><mml:mo>⋅</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>k</mml:mi></mml:msub><mml:msup><mml:mo>‖</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mtext>mix</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msup><mml:mfenced open="(" close=")"><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mfenced><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mi>z</mml:mi></mml:mfenced><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext>on</mml:mtext><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mtext>in,top,bottom</mml:mtext></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mtext>lower</mml:mtext></mml:mrow></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mtext>upper</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mtext>lower</mml:mtext></mml:mrow></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mtext>upper</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mfenced close=")" open="("><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>&gt;</mml:mo><mml:msubsup><mml:mi>D</mml:mi><mml:mtext>min</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">…</mml:mi><mml:mi>N</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>i</mml:mi><mml:mo>≠</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mi>J</mml:mi><mml:mfenced close="]" open="["><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> is the negative of
the total power production, <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are weights for each inflow state from
the wind speed distribution and wind rose describing the site climatology,
<inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the turbine rotor area, and <inline-formula><mml:math id="M70" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is the air density. The
PDE constraints are the steady 3-D RANS and continuity equations which govern
the evolution of <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M72" display="inline"><mml:mover accent="true"><mml:mi>p</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>. Boundary conditions
corresponding to the log law are applied on inflow, top, and bottom
boundaries, and outflow boundary conditions are applied on the sides and exit
of the domain as further described in Sect. 3.3. The RANS equations have an
additional body force term <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mtext>AD</mml:mtext><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> that represents the force
imparted on the flow by each wind turbine. The Boussinesq hypothesis is used
to close the deviatoric Reynolds stress term <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> by making use of an
eddy viscosity <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The eddy viscosity is calculated with a mixing length
model <xref ref-type="bibr" rid="bib1.bibx54" id="paren.34"/>, where the mixing length
<inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mtext>mix</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is taken to be one-eighth the vertical distance from the
bottom surface. A mixing length model was chosen because of its simplicity,
differentiability, and familiarity to the wind energy community from use in
traditional wake models <xref ref-type="bibr" rid="bib1.bibx1" id="paren.35"/> and in recent RANS
models developed for real-time wind plant controls
<xref ref-type="bibr" rid="bib1.bibx4" id="paren.36"/>. The power and thrust coefficients for
turbine <inline-formula><mml:math id="M77" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>, denoted <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mtext>p</mml:mtext><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mrow><mml:mtext>t</mml:mtext><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, respectively, are derived
from actuator disk theory and are described in the next section. The
variables <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are geometric smoothing kernels and
normalization constants, respectively, and are also described further in the
next section. The site constraints are imposed as lower, <inline-formula><mml:math id="M82" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mtext>lower</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>
and <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mtext>lower</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and upper, <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mtext>upper</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and
<inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mtext>upper</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, bounds on the turbine <inline-formula><mml:math id="M86" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M87" display="inline"><mml:mi mathvariant="bold-italic">y</mml:mi></mml:math></inline-formula>
locations. An inter-turbine minimum spacing constraint is further enforced
with a minimum spacing <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> of 3 times the rotor diameter (RD)
used in the AEP simulations. The turbines are assumed to always yaw into the
wind and the turbine body force is thus directed into the incoming wind by
the unit vector <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Note that the subscript <inline-formula><mml:math id="M90" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> in the
above system of equations represents one of the <inline-formula><mml:math id="M91" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> different turbines and
the subscript <inline-formula><mml:math id="M92" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> denotes one of the <inline-formula><mml:math id="M93" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> different wind states included in
the analysis. As described in the previous section, a reduced functional
<inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mfenced open="(" close=")"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mi>J</mml:mi><mml:mfenced open="[" close="]"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">m</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> is
used in the adjoint optimization approach.</p>
      <p>We stress that the strength of this approach is not the particular form of
the RANS closure model, but rather its embedding in an adjoint optimization
framework. Different objective functions, turbulence closures, or turbine
representations can be easily implemented in this framework and still benefit
from the adjoint approach.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <title>Wind turbine representation</title>
      <p>Turbines in the simulations are represented as non-rotating actuator disks
using actuator disk theory, as described in standard wind energy texts
<xref ref-type="bibr" rid="bib1.bibx7" id="paren.37"/>. The power, <inline-formula><mml:math id="M95" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula>, and thrust force, <inline-formula><mml:math id="M96" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula>, generated by
an actuator disk are given in terms of a power coefficient, <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, a
thrust coefficient, <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and an upstream reference velocity,
<inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, as

                <disp-formula id="Ch1.E8" content-type="numbered"><mml:math id="M100" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>A</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:msubsup><mml:mi>u</mml:mi><mml:mtext>ref</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>A</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:msubsup><mml:mi>u</mml:mi><mml:mtext>ref</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where power and thrust coefficients are given in terms of an axial induction
factor <inline-formula><mml:math id="M101" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula> as

                <disp-formula id="Ch1.E9" content-type="numbered"><mml:math id="M102" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi>a</mml:mi><mml:msup><mml:mfenced close=")" open="("><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>a</mml:mi></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi>a</mml:mi><mml:mfenced close=")" open="("><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>a</mml:mi></mml:mfenced><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The axial induction factor describes the velocity at the rotor disk,
<inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>rotor</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mfenced close=")" open="("><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>a</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula>, as a fraction of the
upstream reference velocity. The reference velocity is typically taken to be
the far-field upstream velocity for a turbine in isolation, but as discussed
by <xref ref-type="bibr" rid="bib1.bibx50" id="text.38"/>, the determination of <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> for
waked turbines or in complex terrain is more difficult. We adopt the same
approach used by <xref ref-type="bibr" rid="bib1.bibx10" id="text.39"/> and <xref ref-type="bibr" rid="bib1.bibx46" id="text.40"/> and
define modified power and thrust coefficients, <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and
<inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, respectively, that are based on the local rotor disk
velocity <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>rotor</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> rather than <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. These modified
coefficients are

                <disp-formula id="Ch1.E10" content-type="numbered"><mml:math id="M109" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>a</mml:mi></mml:mfenced><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>a</mml:mi></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          resulting in power and thrust given by

                <disp-formula id="Ch1.E11" content-type="numbered"><mml:math id="M110" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>A</mml:mi><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:msubsup><mml:mi>u</mml:mi><mml:mtext>rotor</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>A</mml:mi><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:msubsup><mml:mi>u</mml:mi><mml:mtext>rotor</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          For this study, turbine operating parameters of <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula>,
<inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.34</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> are used for all turbines, consistent with
values used in previous CFD studies
<xref ref-type="bibr" rid="bib1.bibx10 bib1.bibx46 bib1.bibx37" id="paren.41"/>. This
results in modified power and thrust coefficients of <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.81</mml:mn></mml:mrow></mml:math></inline-formula>
and <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msubsup><mml:mi>c</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>.</p>
      <p>Standard actuator disk theory assumes that the rotor disk is uniformly
loaded, but this introduces singularities at the rotor edge. To ensure that
the thrust force and power production are continuously differentiable, as
well as to avoid numerical instabilities, the turbine force and power
production are smoothly distributed across the rotor swept area. This
differentiability with respect to position is crucial for gradient-based
layout optimization, and smoothly distributing rotor forces is common
practice in actuator disk <xref ref-type="bibr" rid="bib1.bibx55" id="paren.42"/> and actuator line
<xref ref-type="bibr" rid="bib1.bibx13" id="paren.43"/> implementations. This is accomplished here
using a geometric smoothing kernel <inline-formula><mml:math id="M116" display="inline"><mml:mi mathvariant="italic">φ</mml:mi></mml:math></inline-formula>. The following multivariate
exponential distribution is used as the smoothing kernel in order to create a
rotor with almost compact support that is still continuously differentiable:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M117" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mi mathvariant="italic">φ</mml:mi><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>;</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mfenced><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E12"><mml:mtd/><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>exp⁡</mml:mi><mml:mfenced close="}" open="{"><mml:mo>-</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow><mml:mi>w</mml:mi></mml:mfrac></mml:mstyle></mml:mfenced><mml:mi mathvariant="italic">γ</mml:mi></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>(</mml:mo><mml:mi>y</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:msup><mml:mi>r</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mi mathvariant="italic">γ</mml:mi></mml:msup></mml:mfenced><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>;</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mfenced></mml:mrow></mml:math></inline-formula> is the distribution
for the <inline-formula><mml:math id="M119" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>th turbine centered on <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mfenced></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M121" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>
is the rotor radius, <inline-formula><mml:math id="M122" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> is the rotor half-width, and <inline-formula><mml:math id="M123" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> controls the
sharpness of the rotor edge. Finally, we also introduce a constant <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>
given by
            <disp-formula id="Ch1.E13" content-type="numbered"><mml:math id="M125" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∞</mml:mi></mml:mrow><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∞</mml:mi></mml:mrow><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∞</mml:mi></mml:mrow><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>;</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mfenced><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>y</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>z</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          which is used to normalize the values of the smoothed actuator disk. Both 1-D
and 2-D prototypes of this smoothing function are shown in
Fig. <xref ref-type="fig" rid="Ch1.F1"/>a and b for <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>=</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">40</mml:mn></mml:mrow></mml:math></inline-formula> m, and
a hub-height slice of the actuator disk representation of a small wind plant
is show in Fig. <xref ref-type="fig" rid="Ch1.F1"/>c.<?xmltex \hack{\newpage}?></p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1" specific-use="star"><caption><p>A continuously differentiable modified exponential distribution is
used to smoothly distribute the turbine forces and power production over the
rotor swept area. The smoothing function is demonstrated for an 80 m rotor
diameter turbine with <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula> for 1-D and 2-D prototypes in panels
<bold>(a)</bold> and <bold>(b)</bold> by taking conditional distributions of
<inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:mi mathvariant="italic">φ</mml:mi><mml:mfenced close=")" open="("><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E12"/>). The edge of the rotor
disk is represented by vertical dashed red lines in panel <bold>(a)</bold>. Panel
<bold>(c)</bold> is a hub-height slice showing how a wind plant is represented as
a summation of smoothed actuator disks.</p></caption>
          <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f01.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS3">
  <title>Simulation setup</title>
      <p>The 3-D computational domain used in the simulations has horizontal
dimensions of 2.4 km <inline-formula><mml:math id="M131" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 2.4 km and a vertical dimension of 640 m
(equivalent to <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:mn mathvariant="normal">30</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> RD, with RD <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula> m), as shown in
Fig. <xref ref-type="fig" rid="Ch1.F2"/>. Dirichlet boundary conditions are used to prescribe
the wind speed and direction on inflow, top, and bottom boundaries,
corresponding to the planes at <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.2</mml:mn></mml:mrow></mml:math></inline-formula> km, <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">640</mml:mn></mml:mrow></mml:math></inline-formula> m, and <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>,
respectively. The inflow velocity profile is specified according to a neutral
logarithmic velocity profile
            <disp-formula id="Ch1.E14" content-type="numbered"><mml:math id="M137" display="block"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>in</mml:mtext></mml:msub><mml:mfenced open="(" close=")"><mml:mi>z</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow><mml:mi mathvariant="italic">κ</mml:mi></mml:mfrac></mml:mstyle><mml:mi>ln⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>z</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M138" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> is the vertical coordinate, <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the roughness height, <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> is
the friction velocity, and <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:mi mathvariant="italic">κ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.4</mml:mn></mml:mrow></mml:math></inline-formula> is the von Kármán constant. The
roughness height is taken to be <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.04</mml:mn></mml:mrow></mml:math></inline-formula> m, corresponding to open and
relatively smooth terrain, and <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> is found by solving for the desired
hub-height velocity. A no-slip boundary condition is used on the bottom
boundary and the velocity along the top boundary is <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mtext>in</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> (640 m)
from Eq. (<xref ref-type="disp-formula" rid="Ch1.E14"/>). On outflow boundaries (i.e., the planes at
<inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.2</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.2</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.2</mml:mn></mml:mrow></mml:math></inline-formula> km), a standard “do-nothing” finite-element
outflow boundary condition <xref ref-type="bibr" rid="bib1.bibx30" id="paren.44"/> is applied. The
initial velocities at all locations in the domain are given by the
logarithmic profile in Eq. (<xref ref-type="disp-formula" rid="Ch1.E14"/>), and the initial relative
pressure is assumed to be <inline-formula><mml:math id="M148" display="inline"><mml:mn mathvariant="normal">0</mml:mn></mml:math></inline-formula> bar everywhere.</p>
      <p>A coarse computational mesh of finite elements is generated for the entire
domain and then further refined within a circle that circumscribes the site
boundaries, as shown in Fig. <xref ref-type="fig" rid="Ch1.F2"/>. For all tests presented here,
the site boundary is assumed to be a square of side 18 RD centered in the
computational domain. This area corresponds to a <inline-formula><mml:math id="M149" display="inline"><mml:mn mathvariant="normal">6</mml:mn></mml:math></inline-formula> RD spacing in streamwise
and spanwise directions if 16 turbines are arranged in a regular grid. The
resolution of the finite elements used in the simulation can be quantified by
the radius of a circle that circumscribes a single tetrahedral element,
termed the circumradius. The mesh is refined such that the turbine rotor
diameter is at least 4 times larger than the
circumradius of the finite elements within the wind plant site boundaries.
The mesh is also stretched by a factor of <inline-formula><mml:math id="M150" display="inline"><mml:mn mathvariant="normal">1.2</mml:mn></mml:math></inline-formula> in the vertical direction in
order to increase resolution near the bottom boundary. This results in a mesh
with approximately 200 000 degrees of freedom.</p>
      <p>To confirm that the domain is sufficiently large for the number of turbines,
we examined the blockage ratio. In wind tunnel studies, the blockage ratio is
typically defined as the ratio of the total tunnel cross-sectional area to
the total rotor disk area. A worst-case blockage scenario would involve all
16 turbines impeding the flow with no overlap between rotors. This worst-case
results in a blockage ratio of 5.2 %, which is well below the threshold
of 10 % blockage that requires a correction in wind tunnel studies of
horizontal-axis wind turbines <xref ref-type="bibr" rid="bib1.bibx11" id="paren.45"/>.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2" specific-use="star"><caption><p>Plan view of the computational mesh at hub height showing additional
refinement around the wind turbine area (left), schematic of the
computational domain showing the turbine locations used to initialize each
optimization (top right), and side view of the mesh showing refinement below
2 rotor diameters (bottom right). The wind plant site constraint is shown as
a red square in the plan view, and horizontal dimensions are normalized by
the rotor diameter <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:mtext>RD</mml:mtext><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula> m.</p></caption>
          <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f02.png"/>

        </fig>

      <p>Simulations are performed for a range of different inflow directions and
inflow speeds, corresponding to both idealized and real-world wind roses and
wind speed distributions. Steady-state solutions are found for each of the
<inline-formula><mml:math id="M152" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> wind states. We assume that the turbines are always yawed into the wind
such that the rotor disk is perpendicular to the inflow direction. The
computational domain and boundary conditions are assumed constant and the
control variables containing the turbine locations are defined in a fixed
reference frame. Different wind directions are modeled by applying a rotation
to the turbine coordinates corresponding to the inflow angle when calculating
actuator disk forces. This rotation is included in the adjoint calculation
and the resulting gradients are with respect to changes in the reference
frame turbine coordinates. A weighted sum of the power production for each
wind state (i.e., speed and direction) is performed based on the site wind
speed distribution and wind rose, and the adjoint gradient is calculated over
the total power output, taking into account the layout rotation. Because the
boundary conditions are part of a well-posed PDE used as an optimization
constraint, this approach of rotating the layout is preferred to explicitly
changing the inflow direction because the PDE constraint in the optimization
is kept constant.</p>
</sec>
<sec id="Ch1.S3.SS4">
  <title>Gradient-based layout optimization process</title>
      <p>Figure <xref ref-type="fig" rid="Ch1.F3"/> shows a schematic of the multi-state optimization
workflow. The layout is optimized over all inflow states simultaneously in a
multilevel optimization process with respect to the total power output rather
than in a sequential optimization process over each inflow separately. The
basic optimization process is the following:
<list list-type="order"><list-item>
      <p>Begin with an initial layout <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mtext mathvariant="bold">m</mml:mtext><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which can be either a gridded or random layout of the <inline-formula><mml:math id="M154" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> turbines.</p></list-item><list-item>
      <p>Perform flow-field simulations for each of the <inline-formula><mml:math id="M155" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> desired wind states (corresponding to different wind speeds and directions obtained from either real or idealized wind roses and speed distributions).</p></list-item><list-item>
      <p>Calculate the negative of the wind plant power, <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, for each of the <inline-formula><mml:math id="M157" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> wind states.</p></list-item><list-item>
      <p>Calculate the objective function by taking a weighted sum <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:mi>J</mml:mi><mml:mo>=</mml:mo><mml:mo>∑</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>J</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> over all <inline-formula><mml:math id="M159" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> wind states, where <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the relative probability of each wind state obtained from either a real
or idealized wind rose and speed distribution.</p></list-item><list-item>
      <p>Compute adjoint simulations for the forward simulations, and calculate the gradient of the reduced functional <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:mtext>d</mml:mtext><mml:mover accent="true"><mml:mi>J</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mtext>d</mml:mtext><mml:mtext mathvariant="bold">m</mml:mtext></mml:mrow></mml:math></inline-formula>.</p></list-item><list-item>
      <p>Use the gradient to perform a gradient-based optimization of the layout to obtain <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mtext mathvariant="bold">m</mml:mtext><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and go to step 2 above.</p></list-item></list>
This process is repeated until the change in the objective function or its
gradient falls below a user-defined threshold, which typically occurs in
30–50 iterations.</p>
      <p>It should be noted that, because the optimization algorithm is
gradient-based, it finds local rather than global minima in the total
objective function <inline-formula><mml:math id="M163" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>. The layout optimization problem can have many local
minima, particularly with just a few inflow wind states. Starting with a
regular gridded layout slightly smaller than the site constraint was
generally observed to produce reasonable results since none of the variables
are initially constrained and a gridded layout is often a “good enough”
guess to be in the radius of convergence to the global optimum. This initial
layout, used for all simulations described in the following, is shown in
Fig. <xref ref-type="fig" rid="Ch1.F2"/>. However, gradient-based methods are still
fundamentally local searches and cannot provide strong assurances of finding
a global minima. We note that with many inflow states (i.e., for large <inline-formula><mml:math id="M164" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula>),
the optimization problem actually becomes more convex and convergence is
achieved in fewer iterations. Additionally, running the optimization from
many different starting configurations generated by random sampling or Latin
hypercube samples can be used to further characterize the robustness of the
minima.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F3" specific-use="star"><caption><p>Schematic of the multilevel optimization process for a wind plant
with <inline-formula><mml:math id="M165" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> wind states (i.e., wind speeds and directions).</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f03.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS5">
  <title>Numerical implementation</title>
      <p>The WindSE flow solver is implemented in a software package called
<monospace>FEniCS</monospace> <xref ref-type="bibr" rid="bib1.bibx42" id="paren.46"/>, which automates the solution of
PDEs using the finite-element method. <monospace>FEniCS</monospace> is written in Python
and can be easily integrated with other Python-based systems engineering
tools like WISDEM. The <monospace>FEniCS</monospace> project is based on the
<monospace>DOLFIN</monospace> problem-solving environment and connects a number of useful
components for the automatic discretization and solution of finite-element
problems. These components include a form language that allows users to
specify equations in variational form using a syntax that closely resembles
their mathematical description, automated compilers that generate finite-element forms for a chosen basis, and just-in-time compilation to C<inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula>
to enhance computational speed. <monospace>FEniCS</monospace> can interface to common HPC
libraries such as PETSc and Trilinos for numerical linear algebra, ParMETIS
and SCOTCH for domain decomposition, and MPI and OpenMP for parallelization.
<monospace>FEniCS</monospace> has been extensively tested and validated on a number of
computational problems in solid and fluid mechanics, eigenvalue problems, and
coupled PDEs <xref ref-type="bibr" rid="bib1.bibx42" id="paren.47"/>.</p>
      <p>The description of finite-element problems as variational forms in
<monospace>FEniCS</monospace> lends itself to highly abstracted algorithmic
differentiation. The software package <monospace>dolfin-adjoint</monospace>
<xref ref-type="bibr" rid="bib1.bibx19" id="paren.48"/> performs a high-level algorithmic
differentiation of a forward problem implemented in <monospace>FEniCS</monospace> and can
derive both discrete adjoint and tangent linear models. The discrete adjoint
and tangent linear models are important in the gradient-based optimization
algorithms that are used in data assimilation, optimal control, and error
estimation. The algorithmic differentiation routines in
<monospace>dolfin-adjoint</monospace> act on the forward problem discrete equations
described in variational form and stored in memory. The corresponding
discrete adjoint equations are derived in <monospace>dolfin-adjoint</monospace> and passed
back to <monospace>FEniCS</monospace> as an additional PDE problem. This approach operates
at a higher level of abstraction than traditional algorithmic
differentiation, which typically treats forward models as a series of
elementary instructions involving native operations in low-level code like
addition and multiplication. This higher level of abstraction gives
<monospace>dolfin-adjoint</monospace> greater flexibility and automation across a wide
range of PDE applications because it avoids differentiating across low-level
code where the mathematical and implementation details have been intermixed.
Moreover, <monospace>dolfin-adjoint</monospace> can be implemented on unsteady and
nonlinear PDEs, and can also be run in parallel. It can directly interface to
the optimization algorithms in SciPy and also contains routines for checking
the correctness of adjoint gradients and checkpointing.</p>
      <p>The 3-D RANS and continuity equations that form the PDE constraint in Eq. (7) are solved
with a nonlinear Newton solver in a coupled fashion using a mixed finite-element space with piecewise linear elements for both the velocity and
pressure fields. To satisfy the Ladyzhenskaya–Babuška–Brezzi (LBB) (or
inf-sup) compatibility condition <xref ref-type="bibr" rid="bib1.bibx6" id="paren.49"/> with equal-order
basis functions, we augment the momentum equation with an additional
pressure-stabilized Petrov–Galerkin term that weights the residual of the
momentum equation by the gradient of the pressure test function. This
pressure-based stabilization alleviates the saddle-point nature of the equal-order finite-element problem <xref ref-type="bibr" rid="bib1.bibx15" id="paren.50"/> but still vanishes for
the exact solution to the momentum equation. Each nonlinear solve is
initialized with the base logarithmic velocity profile and the relative
residual is converged to below <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> with Newton's method. The Newton
solver uses Jacobians derived automatically within <monospace>FEniCS</monospace> and linear
systems are solved directly with the sparse, parallel solver MUMPS
<xref ref-type="bibr" rid="bib1.bibx2" id="paren.51"/>. The choice of equal-order piecewise linear
mixed finite-element spaces differs from previous studies on wind and ocean
turbine layout optimization in <monospace>FEniCS</monospace>
<xref ref-type="bibr" rid="bib1.bibx38 bib1.bibx22" id="paren.52"/> that used Taylor–Hood mixed
finite-element spaces that are piecewise quadratic for the velocity field. The
lower-order representation in this study was necessary when implementing a 3-D
solver to keep the total degrees of freedom sufficiently low so that a direct
linear algebra solver could be used.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4" specific-use="star"><caption><p>Flow past a single turbine obtained using the 3-D RANS flow solver. The
top panel shows the velocity at hub height and the bottom two panels show
profiles of the velocity deficit in horizontal and vertical planes passing
through the center of the wind turbine rotor. Velocity deficits are relative
to the respective profiles 3 RD upstream of the turbine and the velocities
are normalized by the incoming hub-height velocity. Axes are in units of
rotor diameter <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:mtext>RD</mml:mtext><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula> m.</p></caption>
          <?xmltex \igopts{width=369.885827pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f04.png"/>

        </fig>

      <p>The gradients obtained from <monospace>dolfin-adjoint</monospace> are used to optimize
turbine locations with Python's SciPy implementations of the sequential
least-squares programming (SLSQP) or limited-memory Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm with bounds (L-BFGS-B)
algorithms. SLSQP is a gradient-based optimization algorithm that can also
handle constraints <xref ref-type="bibr" rid="bib1.bibx48" id="paren.53"/>. SLSQP minimizes a
quadratic approximation to the objective function at each optimization
iteration, with a linear approximation of the constraints. The L-BFGS-B
algorithm <xref ref-type="bibr" rid="bib1.bibx8" id="paren.54"/> is a limited-memory version of the
popular BFGS algorithm that approximates the inverse Hessian matrix used in
quasi-Newton methods. We use the L-BFGS-B algorithm for simpler test cases
without inter-turbine spacing constraints as in Sect. 4.2 and 4.3. In
Sect. 4.4 we consider a real-world AEP optimization over
a full wind rose and do enforce inter-turbine spacing constraints, which
requires the use of the SLSQP algorithm. Gradients of the objective function
are provided by <monospace>dolfin-adjoint</monospace> and gradients of the minimum turbine
spacing constraint are calculated analytically.</p>
      <p>The forward and adjoint problems are parallelized with MPI and can be run on
a desktop or in a high performance computing environment. The discrete
adjoint calculation is automatically parallelized by <monospace>dolfin-adjoint</monospace>
if the forward model is run in parallel, which drastically simplifies code
development.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F5" specific-use="star"><caption><p>Hub-height velocity fields from the 3-D RANS solver used in
<monospace>WindSE</monospace> show good qualitative agreement with time-averaged LES
velocity fields of similar wind plants reported in the literature
<xref ref-type="bibr" rid="bib1.bibx56" id="paren.55"/>, even in the case of very deep wind plants.
Velocities are normalized by incoming hub-height speed of <inline-formula><mml:math id="M169" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula> m s<inline-formula><mml:math id="M170" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>
and distances are normalized by the <inline-formula><mml:math id="M171" display="inline"><mml:mn mathvariant="normal">80</mml:mn></mml:math></inline-formula> m rotor diameter. </p></caption>
          <?xmltex \igopts{width=455.244094pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f05.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F6" specific-use="star"><caption><p>Optimal layouts (top row) and flow fields (bottom row) for five test
cases with an increasing number of evenly weighted inflow directions. The
wind roses in the upper right corner of each layout plot show the inflow
directions used in the optimization. The blue triangles show the optimized
turbine locations and the red square indicates the site boundaries. The
velocities are normalized by the hub-height inflow velocity, which is
<inline-formula><mml:math id="M172" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula> m s<inline-formula><mml:math id="M173" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> in these simulations. Each of the flow fields are shown for
a wind that blows from the north.</p></caption>
          <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f06.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S4">
  <title>Results</title>
      <p>In the following, we present results for several different layout
optimization cases. First, we provide results for standard test cases of flow
past a single turbine and flow through a very deep wind plant in order to
demonstrate that the RANS flow solver accurately captures wind turbine wakes,
thereby providing confidence that subsequent layout optimizations are
performed according to the correct flow physics. Second, we optimize a
16-turbine wind plant using wind roses with evenly weighted wind directions
and a constant wind speed of 8 m s<inline-formula><mml:math id="M174" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> in order to demonstrate new
layout insights and optimization heuristics when accounting for nonlinear
flow effects with a high-fidelity model. Third, we optimize a 16-turbine wind
plant using unevenly weighted wind roses that exhibit complex directional
preferences, again with a constant wind speed of 8 m s<inline-formula><mml:math id="M175" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. Finally, we
perform a full AEP optimization using data from the M2 meteorological tower
at the National Wind Technology Center (NWTC) to demonstrate the capabilities
of <monospace>WindSE</monospace> when optimizing layouts for conditions that are
representative of real wind plants. In the full AEP optimization, both the
wind direction and wind speed are varied, resulting in approximately 100 total wind states over which the optimization is performed. In all
cases, we assume a turbine with a rotor diameter of <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mtext>RD</mml:mtext><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula> m
operating with fixed power and thrust coefficients (as described in
Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>) and a site constraint that is a square of side 18 RD
centered in the computational domain.</p>

<table-wrap id="Ch1.T1" specific-use="star"><caption><p>Relative efficiency of power production from the test cases compared
to 16 turbines with no wake effects. Results from a “naïve” case with
two parallel turbine rows and no layout optimization are also included to
demonstrate the improvements achieved by the layout optimization.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">  
         <oasis:entry colname="col1">All unwaked</oasis:entry>  
         <oasis:entry colname="col2">Two-dir. naïve</oasis:entry>  
         <oasis:entry colname="col3">Two-dir. opt.</oasis:entry>  
         <oasis:entry colname="col4">Three-dir. opt.</oasis:entry>  
         <oasis:entry colname="col5">Four-dir. opt.</oasis:entry>  
         <oasis:entry colname="col6">Five-dir. opt.</oasis:entry>  
         <oasis:entry colname="col7">Six-dir. opt.</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>  
         <oasis:entry colname="col1">1.0</oasis:entry>  
         <oasis:entry colname="col2">0.833</oasis:entry>  
         <oasis:entry colname="col3">0.9854</oasis:entry>  
         <oasis:entry colname="col4">0.953</oasis:entry>  
         <oasis:entry colname="col5">0.960</oasis:entry>  
         <oasis:entry colname="col6">0.948</oasis:entry>  
         <oasis:entry colname="col7">0.974</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<sec id="Ch1.S4.SS1">
  <title>RANS model testing</title>
      <p>As a test of the qualitative performance of the RANS flow solver,
<monospace>WindSE</monospace> was used to simulate flow fields for both a single turbine
and a deep wind plant. Figure <xref ref-type="fig" rid="Ch1.F4"/> shows vertical and horizontal
velocity profiles in the wake of a single wind turbine. Consistent with
theoretical expectations and previous results, a logarithmic velocity profile
is observed in the undisturbed flow upstream of the turbine, a Gaussian
velocity deficit is observed in the turbine wake, and a gradual wake recovery
is observed with increasing distance downstream from the turbine. Moreover, a
slight speedup around the edges of the wake is observed near the turbine
rotor – such speedups are not captured by traditional linear wake flow
models and appear here due to the use of the higher-fidelity RANS flow
solver, which more accurately captures nonlinear flow physics.
Figure <xref ref-type="fig" rid="Ch1.F5"/> shows the velocity field from a simulation of a wind
plant with 10 turbine rows perpendicular to the incoming wind direction. This
flow field qualitatively agrees with time-averaged LES results reported by <xref ref-type="bibr" rid="bib1.bibx56" id="text.56"/>.</p>
      <p>The results presented in this section are only intended to demonstrate the
qualitative agreement of the RANS solver with prior high-fidelity studies and
analytical wake theory. This demonstrates that the present flow solver
captures a reasonable level of fidelity to introduce the adjoint optimization
framework. A detailed turbulence model verification and validation is beyond
the scope of this study as we are instead focused on the integration of the
model into a flexible and automated adjoint optimization framework. A
comprehensive study on the implementation of more sophisticated turbulence
models within the WindSE framework is left for future research.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <title>Layout optimization for evenly weighted wind roses</title>
      <p>In order to demonstrate many of the characteristics of optimal layouts and
flow fields found using <monospace>WindSE</monospace>, Fig. <xref ref-type="fig" rid="Ch1.F6"/> shows results
obtained for wind roses with an increasing number of evenly weighted inflow
directions. In all cases, the wind speed was assumed constant at
8 m s<inline-formula><mml:math id="M177" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. During the optimization, the turbines are constrained to stay
within an <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mn mathvariant="normal">18</mml:mn><mml:mtext> RD</mml:mtext><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>×</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">18</mml:mn><mml:mtext> RD</mml:mtext></mml:mrow></mml:math></inline-formula> region in the center of the
computational domain (see also Fig. <xref ref-type="fig" rid="Ch1.F2"/>). This region serves as
the site boundary in the present tests. The turbines are initialized on a
regular grid that spans two-thirds of the site constraints (as shown in
Fig. <xref ref-type="fig" rid="Ch1.F2"/>) and no inter-turbine spacing constraint was applied.
Convergence was achieved in approximately 30–50 iterations of the
optimization loop shown in Fig. <xref ref-type="fig" rid="Ch1.F3"/>.</p>
      <p>Figure <xref ref-type="fig" rid="Ch1.F6"/> shows that optimal layouts are symmetric about a
rotation or reflection when the wind directions are evenly weighted. For the
two-direction and six-direction cases shown in Fig. <xref ref-type="fig" rid="Ch1.F6"/>a and e,
the layout is symmetric about a 180<inline-formula><mml:math id="M179" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> rotation and for the
four-direction case shown in Fig. <xref ref-type="fig" rid="Ch1.F6"/>c, the layout is symmetric
about a 90<inline-formula><mml:math id="M180" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> rotation. For odd numbers of inflow directions,
Fig. <xref ref-type="fig" rid="Ch1.F6"/>b and d show that optimal layouts are symmetric about a
horizontal reflection across the north–south axis. The rotational and
reflectional symmetries of the layouts for evenly weighted, uniform speed
wind roses are useful heuristics for checking the flow solver and
optimization results.</p>
      <p>The flow fields shown in Fig. <xref ref-type="fig" rid="Ch1.F6"/> indicate that the RANS solver
captures flow curvature due to nonlinear turbulent transport effects and
pressure increases upwind of the rotor disk. These effects are neglected when
superimposing a wake deficit on a flow field obtained from a linear model, as
is typically done in many industry-standard optimization frameworks. The flow
curvature results in local speedup effects between two turbines, or just
outside a wake, that downwind turbines take advantage of in strongly
directional wind roses. This effect is further demonstrated in
Fig. <xref ref-type="fig" rid="Ch1.F7"/>, which shows nonzero spanwise velocities generated by
the flow curving around the turbines. This curvature is responsible for the
“staggered” appearance of many of the layouts in Fig. <xref ref-type="fig" rid="Ch1.F6"/> where
the optimizer takes advantage of these local speedups. Because the power
production scales with the cube of the wind speed, these small speedups can
have a strong nonlinear effect on the power output. This speedup effect due
to flow curvature is particularly enhanced in 2-D, but is still present in
the 3-D simulations.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F7"><caption><p>Spanwise velocities produced by the optimized layout found in the
five-inflow-direction case shown in Fig. <xref ref-type="fig" rid="Ch1.F6"/>d. The spanwise
velocity is normalized by the hub-height inflow velocity, indicating strong
curvature at the rotor and a slight overall deflection of the flow away from
the center of the wind plant.</p></caption>
          <?xmltex \igopts{width=241.848425pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f07.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F8" specific-use="star"><caption><p>Optimal layout (left) and flow field (right) for the boomerang test
case with the wind rose binned into 36 inflow directions and a uniform
hub-height velocity of 8 m s<inline-formula><mml:math id="M181" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The wind rose is shown in the upper
right corner of the left panel, and the site boundary is shown by a solid red
line. Turbine locations are denoted by blue triangles. The flow field in the
right panel is normalized by the incoming hub-height velocity of
8 m s<inline-formula><mml:math id="M182" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and shows results for an inflow wind from the south.</p></caption>
          <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f08.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F9" specific-use="star"><caption><p>Optimal layout (left) and flow field (right) for the NWTC M2
8 m s<inline-formula><mml:math id="M183" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> test case with the wind rose binned into 36 inflow directions.
The wind rose is shown in the upper right corner of the left panel, and the
site boundary is shown by a solid red line. Turbine locations are denoted by
blue triangles. The flow field in the right panel is normalized by the
incoming hub-height velocity of 8 m s<inline-formula><mml:math id="M184" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and shows results for an
inflow wind from the west.</p></caption>
          <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f09.png"/>

        </fig>

      <p>Flow curvature also affects the propagation and interaction of the turbine
wakes. Wakes near the edge of the plant are slightly deflected away from the
plant center and reflect the overall spreading of the flow streamlines. This
curvature can be observed near the edges of the plant in the cases shown in
Fig. <xref ref-type="fig" rid="Ch1.F6"/>. Such curvature is again not captured by engineering
wake models which prescribe wakes that always travel perpendicular to the
rotor. Additionally, the wakes are pinched, curved, or merged when
encountering speedups around downwind turbines or other wakes. The RANS flow
solver accounts for the effects of other turbines and their wakes on the
expansion and dissipation of wakes beyond what is accounted for in prescribed
wake models. The deflection and curvature of wakes likely has important
ramifications for yaw control strategies that attempt to steer wakes away
from downwind turbines.</p>
      <p>It is emphasized that the results in Fig. <xref ref-type="fig" rid="Ch1.F6"/> show that the
optimizer does not place turbines in straight rows perpendicular to a single
predominant wind direction or in a regularly spaced grid for these
evenly weighted wind rose cases. Instead, the turbines are placed closer
together and staggered to take advantage of local speedups between
laterally placed turbines. This is a different strategy than the maximized
spacing found when optimizing with linear flow models and prescribed wakes,
and is likely sensitive to the number and size of wind direction bins.</p>
      <p>We compared the optimized layout for two inflow directions shown in
Fig. <xref ref-type="fig" rid="Ch1.F6"/>a to a case with two parallel rows of turbines aligned
perpendicular to the inflow directions and with maximal spacing between the
rows as allowed by the site constraints. This “naïve” strategy is often
found when using linear flow models. The optimized layout increases power
production by 18.4 % over the “naïve” layout due to the strongly
directional speedups in this case. We also examined the power production of
the test cases when normalized by the total power available if all turbines
were unwaked, shown in Table <xref ref-type="table" rid="Ch1.T1"/>. The optimized layouts
substantially reduce, but do not entirely eliminate, the wake losses.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F10" specific-use="star"><caption><p>Optimal layout (top left) and flow fields resulting from a full AEP
optimization using data from the M2 mast at NWTC. Differences in both wind
speed and wind direction are accounted for in the optimization, and the wind
rose used is shown in the top right corner of the layout plot. In the top
left panel, the site boundary is shown by a solid red line and turbine
locations are denoted by blue triangles. Flow fields are shown for inflow
winds from the north (top left), east (top right), south (bottom right), and west (bottom left).</p></caption>
          <?xmltex \igopts{width=369.885827pt}?><graphic xlink:href="https://wes.copernicus.org/articles/2/115/2017/wes-2-115-2017-f10.png"/>

        </fig>

</sec>
<sec id="Ch1.S4.SS3">
  <title>Layout optimization with unevenly weighted wind roses</title>
      <p>In the previous section, each inflow direction was given an equal weight
(i.e., <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) in creating the total objective function <inline-formula><mml:math id="M186" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>. However,
real-world wind roses are seldom so simple and typically have several
preferred wind directions, with many other less dominant directions. Here we
demonstrate optimization of a 16-turbine layout using the same computational
domain and setup as in the previous section, but with unevenly weighted wind
roses that have two and three dominant directions. Once again, in both cases
we assume a constant 8 m s<inline-formula><mml:math id="M187" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> wind speed and do not enforce
inter-turbine spacing constraints.</p>
      <p>The first wind rose considered has two prominent wind directions spaced
<inline-formula><mml:math id="M188" display="inline"><mml:mn mathvariant="normal">107</mml:mn></mml:math></inline-formula><inline-formula><mml:math id="M189" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> apart, with a random normal distribution of directions
around the primary axes. The wind rose is binned into 36 directions and is
roughly shaped like a boomerang, as shown in Fig. <xref ref-type="fig" rid="Ch1.F8"/>.
Compared to the initial uniform gridded layout (see Fig. <xref ref-type="fig" rid="Ch1.F2"/>),
the optimized layout shown in Fig. <xref ref-type="fig" rid="Ch1.F8"/> improves power
production by 9.4 %. Despite the uneven weighting of the wind rose, the
resulting flow field in the right panel of Fig. <xref ref-type="fig" rid="Ch1.F8"/> once
again conforms to many of the heuristics outlined in the previous section,
including turbines that take advantage of local speedups between upstream
turbines and slight flow curvature at the edge of the plant.</p>
      <p>The second wind rose considered is given by the directional distribution of
8 m s<inline-formula><mml:math id="M190" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> wind speeds from the M2 mast at NWTC
<xref ref-type="bibr" rid="bib1.bibx34" id="paren.57"/>, as shown in Fig. <xref ref-type="fig" rid="Ch1.F9"/>. The wind rose
is constructed from publicly available data recorded over the 2015 calendar
year. For this wind speed, the wind rose has three prominent directions
roughly aligned with inflow from the north, south, and west, along with many
other much less prominent inflow directions. The wind rose is again binned
into 36 directions (giving <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">36</mml:mn></mml:mrow></mml:math></inline-formula>) and the optimized layout and resulting
flow field are shown in Fig. <xref ref-type="fig" rid="Ch1.F9"/>. Compared to the initial
regular gridded layout shown in Fig. <xref ref-type="fig" rid="Ch1.F2"/>, the power production
of the optimized layout is improved by 7.0 %. Once again, despite the
much more topologically complex nature of the optimized layout shown in
Fig. <xref ref-type="fig" rid="Ch1.F9"/>, heuristics such as local speed-ups, staggered spacing,
and flow curvature are shown to be important in determining the final layout.
It is also emphasized that for such a complex wind rose, the resulting layout
bears little resemblance to a regular grid where the turbines would be spaced
as far from each other as possible.</p>
</sec>
<sec id="Ch1.S4.SS4">
  <title>Layout optimization based on annual energy production</title>
      <p>As a final demonstration of the power and flexibility of <monospace>WindSE</monospace>, we
optimize a 16-turbine wind plant based on the full AEP from real-world site
data. In this case, wind states corresponding to both different wind speeds
and wind directions are considered, instead of simply considering a single
uniform wind speed as in the tests described in the previous two sections.
Data are once again used from the M2 mast at NWTC <xref ref-type="bibr" rid="bib1.bibx34" id="paren.58"/>,
and distributions are formed by binning the data into 36 wind directions and
5 wind speed classes centered on 4, 6, 8, 10, and 12 m s<inline-formula><mml:math id="M192" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, giving a
total of <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">180</mml:mn></mml:mrow></mml:math></inline-formula> possible wind states in the analysis. Wind states that
occurred less than 0.2 % of the time were neglected in the optimization,
reducing the total number of states considered to 99. We further enforce a
minimum inter-turbine spacing <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> of 3 times the rotor
diameter.</p>
      <p>As shown in Fig. <xref ref-type="fig" rid="Ch1.F10"/>, the wind rose for the M2 mast is
predominately distributed along the west-northwest direction, with secondary
influences from the north and south. The highest wind speeds are also
observed for winds from the west-northwest, and so it can be anticipated that
a full AEP optimization will result in a layout that is preferentially suited
for winds that blow from this direction. This is indeed the case, as shown in
the final optimized layout in Fig. <xref ref-type="fig" rid="Ch1.F10"/>. The turbines are loosely
arranged in two north–south rows that result in relatively large separations
between upstream and downstream turbines when the wind is from the
west-northwest. As with other tests for evenly and unevenly weighted wind
roses with uniform wind speeds, the turbines in the full AEP optimization are
staggered with respect to each other in order to take advantage of local
speedups between upwind turbines. The resulting optimized layout improves AEP
by 8.6 % compared to the initial regular gridded layout shown in
Fig. <xref ref-type="fig" rid="Ch1.F2"/>.</p>
      <p>It should be noted that despite the predominant high-speed winds from the
west-northwest, the turbines in the north–south rows shown in
Fig. <xref ref-type="fig" rid="Ch1.F10"/> do not each fall perfectly on the site boundaries. That
is, if only winds from the west-northwest were included in the analysis, one
might naïvely place all turbines along the upstream and downstream site
boundaries in order to maximize the separation between turbines in the
direction of the dominant wind. However, since other wind directions are also
included in the analysis, the final optimal layout is more complicated and
ensures some degree of turbine staggering in the east–west direction to take
advantage of local speedups and minimize wake losses when the wind blows from
the north or south. It is also emphasized that simply by accounting for the
full AEP in the optimization, the optimal layout in Fig. <xref ref-type="fig" rid="Ch1.F10"/> is
substantially different from the optimal layout shown in
Fig. <xref ref-type="fig" rid="Ch1.F9"/>, where only a single uniform wind speed was considered.</p>
</sec>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <title>Summary and conclusions</title>
      <p><monospace>WindSE</monospace> represents a fundamentally new approach to utility-scale wind
plant layout optimization that implements adjoint optimization of turbine
locations in a flexible CFD framework. The steady-state 3-D RANS flow model
advances the fidelity of the fluid dynamics in wind plant optimization
simulations, but also requires gradient-based optimization techniques because
of the expense of solving the RANS PDE constraint. The adjoint optimization
framework in <monospace>WindSE</monospace> provides these gradients, and further enables
efficient, high-dimensional optimization of very large control spaces. This
enables layout optimization with a first-principles flow model without
running expensive LES for tuning purposes. The results presented
in this paper are achieved at a relatively low computational cost as all
optimization results were obtained on a single workstation with a six-core
Intel Xeon processor and 32 GB of memory.</p>
      <p>The results presented in this paper show that the nonlinear flow effects
leading to wake curvature and local speedups are significant when optimizing
over a few prominent wind directions. We find consistent rotational symmetry
in the optimal layouts with evenly weighted inflow directions, suggesting
that evenly weighted wind roses may be useful diagnostic tests for wind plant
optimization. As the wind rose is refined into more bin directions, the
optimizer is able to take advantage of prominent wind directions and increase
energy production. As the number of wind direction and inflow speed
combinations increases, <monospace>WindSE</monospace> is able to perform a full AEP
optimization and achieve sizable gains of almost 9 % compared to initial
gridded layouts. In the full AEP optimization, the optimizer emphasizes the
high speed winds from the west-northwest, since these winds contain the most
energy. However, rather than aligning the turbines into rows perpendicular to
the incoming wind, the turbines are offset within the general row structure.
This is beneficial when the wind is blowing parallel to the row, which is the
most common secondary wind direction. It also allows the turbines to take
advantage of slight speedup effects around the edges of the wake from
upstream turbines. The gradient-based techniques used in this study are
inherently constrained to a local search, however, and further research is
needed to assess what types of initial layouts are needed to draw conclusions
about global optima.</p>
      <p>A number of different future studies utilizing <monospace>WindSE</monospace> can be
imagined. Because the adjoint approach is insensitive to the number of
control variables, coupled optimization of turbine locations, hub height,
rotor diameter, control settings, etc. can be considered. The flow curvature
captured in <monospace>WindSE</monospace> is observed to deflect or modify turbine wakes
and will likely have important implications in yaw control optimization
applications. The high level of abstraction and automation also makes
<monospace>WindSE</monospace> a useful framework for studying the effects of different
turbulence closure models on optimal layouts. We further intend to compare
layouts optimized using <monospace>WindSE</monospace> and linear flow models by testing
both layouts using LES. Additionally, the finite-element method used in
<monospace>WindSE</monospace> is, in principle, also well suited to examining layout
optimization in the presence of terrain-induced complex flows. Finally, the
integration of <monospace>WindSE</monospace> within NREL systems engineering tools will
enable economic analysis and a consideration of LCOE alongside AEP in future
optimization studies.</p>
</sec>

      
      </body>
    <back><notes notes-type="dataavailability">

      <p>Simulations were performed using the WindSE code that will be made available through NREL's
WISDEM software tool <xref ref-type="bibr" rid="bib1.bibx17" id="paren.59"/>, and can be accessed at <uri>https://nwtc.nrel.gov/WISDEM</uri>.
The NWTC wind data used for layout optimizations in Sect. 4.3 and 4.4 are available at <uri>https://www.nrel.gov/midc/nwtc_m2/</uri> <xref ref-type="bibr" rid="bib1.bibx34" id="paren.60"/>.</p>
  </notes><notes notes-type="competinginterests">

      <p>The authors declare that they have no conflict of
interest.</p>
  </notes><ack><title>Acknowledgements</title><p>This work was supported by award UGA-0-41026-70 through the Alliance Partner
University Program in partnership with the National Renewable Energy
Laboratory.
<?xmltex \hack{\newline}?><?xmltex \hack{\newline}?>
Edited by: J. Peinke<?xmltex \hack{\newline}?>
Reviewed by:  three anonymous referees</p></ack><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Ainslie(1988)</label><mixed-citation>Ainslie, J.: Calculating the flowfield in the wake of wind turbines, J.
Wind Eng. Ind. Aerod., 27, 213–224,
<ext-link xlink:href="http://dx.doi.org/10.1016/0167-6105(88)90037-2" ext-link-type="DOI">10.1016/0167-6105(88)90037-2</ext-link>, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Amestoy et al.(2000)</label><mixed-citation>Amestoy, P. R., Duff, I. S., and L'Excellent, J. Y.: Multifrontal parallel
distributed symmetric and unsymmetric solvers, Comput. Method. Appl.
M., 184, 501–520,
<ext-link xlink:href="http://dx.doi.org/10.1016/S0045-7825(99)00242-X" ext-link-type="DOI">10.1016/S0045-7825(99)00242-X</ext-link>, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Barthelmie et al.(2009)</label><mixed-citation>Barthelmie, R. J., Hansen, K., Frandsen, S. T., Rathmann, O., Schepers, J. G.,
Schlez, W., Phillips, J., Rados, K., Zervos, A., Politis, E. S., and
Chaviaropoulos, P. K.: Modelling and measuring flow and wind turbine wakes in
large wind farms offshore, Wind Energy, 12, 431–444, <ext-link xlink:href="http://dx.doi.org/10.1002/we.348" ext-link-type="DOI">10.1002/we.348</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Boersma et al.(2016)</label><mixed-citation>Boersma, S., Gebraad, P., Vali, M., Doekemeijer, B., and van Wingerden, J.: A
control-oriented dynamic wind farm flow model: “WFSim”, J.
Phys. Conf. Ser., 753, 032005,
<ext-link xlink:href="http://dx.doi.org/10.1088/1742-6596/753/3/032005" ext-link-type="DOI">10.1088/1742-6596/753/3/032005</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bokharaie et al.(2016)</label><mixed-citation>Bokharaie, V. S., Bauweraerts, P., and Meyers, J.: Wind-farm layout optimisation using a hybrid Jensen-LES approach, Wind Energ. Sci., 1, 311–325, <ext-link xlink:href="http://dx.doi.org/10.5194/wes-1-311-2016" ext-link-type="DOI">10.5194/wes-1-311-2016</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Brezzi and Fortin(1991)</label><mixed-citation>
Brezzi, F. and Fortin, M. (Eds.): Mixed and Hybrid Finite Element
Methods,  Springer Series in Computational
Mathematics, Springer New York, New York, NY, 15, ISBN 978-1-4612-7824-5, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Burton et al.(2011)</label><mixed-citation>
Burton, T., Sharpe, D., Jenkins, N., and Bossanyi, E.: Wind energy handbook,
John Wiley &amp; Sons, Chichester, West Sussex, 2nd Edn., 2011.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Byrd et al.(1995)</label><mixed-citation>Byrd, R. H., Lu, P., Nocedal, J., and Zhu, C.: A Limited Memory Algorithm
for Bound Constrained Optimization, SIAM J. Sci.
Comput., 16, 1190–1208, <ext-link xlink:href="http://dx.doi.org/10.1137/0916069" ext-link-type="DOI">10.1137/0916069</ext-link>, 1995.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Cabezón et al.(2011)</label><mixed-citation>Cabezón, D., Migoya, E., and Crespo, A.: Comparison of turbulence models
for the computational fluid dynamics simulation of wind turbine wakes in the
atmospheric boundary layer, Wind Energy, 14, 909–921, <ext-link xlink:href="http://dx.doi.org/10.1002/we.516" ext-link-type="DOI">10.1002/we.516</ext-link>,
2011.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Calaf et al.(2010)</label><mixed-citation>Calaf, M., Meneveau, C., and Meyers, J.: Large eddy simulation study of fully
developed wind-turbine array boundary layers, Phys. Fluids, 22,
015110-1–015110-16, <ext-link xlink:href="http://dx.doi.org/10.1063/1.3291077" ext-link-type="DOI">10.1063/1.3291077</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Chen and Liou(2011)</label><mixed-citation>Chen, T. and Liou, L.: Blockage corrections in wind tunnel tests of small
horizontal-axis wind turbines, Exp. Therm. Fluid Sci., 35,
565–569, <ext-link xlink:href="http://dx.doi.org/10.1016/j.expthermflusci.2010.12.005" ext-link-type="DOI">10.1016/j.expthermflusci.2010.12.005</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Chowdhury et al.(2012)</label><mixed-citation>Chowdhury, S., Zhang, J., Messac, A., and Castillo, L.: Unrestricted wind farm
layout optimization (UWFLO): Investigating key factors influencing the
maximum power generation, Renew. Energ., 38, 16–30,
<ext-link xlink:href="http://dx.doi.org/10.1016/j.renene.2011.06.033" ext-link-type="DOI">10.1016/j.renene.2011.06.033</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Churchfield et al.(2012)</label><mixed-citation>Churchfield, M. J., Lee, S., Michalakes, J., and Moriarty, P. J.: A numerical
study of the effects of atmospheric and wake turbulence on wind turbine
dynamics, J. Turbul., 13, 1–32, <ext-link xlink:href="http://dx.doi.org/10.1080/14685248.2012.668191" ext-link-type="DOI">10.1080/14685248.2012.668191</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Crespo et al.(1999)</label><mixed-citation>Crespo, A., Hernández, J., and Frandsen, S.: Survey of modelling methods
for wind turbine wakes and wind farms, Wind Energy, 2, 1–24,
<ext-link xlink:href="http://dx.doi.org/10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7" ext-link-type="DOI">10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7</ext-link>, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Donéa and Huerta(2003)</label><mixed-citation>
Donéa, J. and Huerta, A.: Finite element methods for flow problems, Wiley,
Chichester, Hoboken, NJ, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Du Pont and Cagan(2012)</label><mixed-citation>Du Pont, B. L. and Cagan, J.: An Extended Pattern Search Approach to
Wind Farm Layout Optimization, J. Mech. Design, 134,
081002, <ext-link xlink:href="http://dx.doi.org/10.1115/1.4006997" ext-link-type="DOI">10.1115/1.4006997</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Dykes et al.(2014)</label><mixed-citation>Dykes, K., Ning, A., King, R., Graf, P., Scott, G., and Veers, P. S.:
Sensitivity Analysis of Wind Plant Performance to Key Turbine
Design Parameters: A Systems Engineering Approach, American
Institute of Aeronautics and Astronautics, 1087, 1–25 <ext-link xlink:href="http://dx.doi.org/10.2514/6.2014-1087" ext-link-type="DOI">10.2514/6.2014-1087</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>El Kasmi and Masson(2008)</label><mixed-citation>El Kasmi, A. and Masson, C.: An extended model for turbulent flow through
horizontal-axis wind turbines, J. Wind Eng. Ind.
Aerod., 96, 103–122, <ext-link xlink:href="http://dx.doi.org/10.1016/j.jweia.2007.03.007" ext-link-type="DOI">10.1016/j.jweia.2007.03.007</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Farrell et al.(2013)</label><mixed-citation>Farrell, P. E., Ham, D. A., Funke, S. W., and Rognes, M. E.: Automated
Derivation of the Adjoint of High-Level Transient Finite
Element Programs, SIAM J. Sci. Comput., 35, C369–C393,
<ext-link xlink:href="http://dx.doi.org/10.1137/120873558" ext-link-type="DOI">10.1137/120873558</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Fitch et al.(2012)</label><mixed-citation>Fitch, A. C., Olson, J. B., Lundquist, J. K., Dudhia, J., Gupta, A. K.,
Michalakes, J., and Barstad, I.: Local and Mesoscale Impacts of Wind
Farms as Parameterized in a Mesoscale NWP Model, Mon.
Rev., 140, 3017–3038, <ext-link xlink:href="http://dx.doi.org/10.1175/MWR-D-11-00352.1" ext-link-type="DOI">10.1175/MWR-D-11-00352.1</ext-link>,
2012.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Fleming et al.(2016)</label><mixed-citation>Fleming, P. A., Ning, A., Gebraad, P. M. O., and Dykes, K.: Wind plant system
engineering through optimization of layout and yaw control: Wind plant
system engineering, Wind Energy, 19, 329–344, <ext-link xlink:href="http://dx.doi.org/10.1002/we.1836" ext-link-type="DOI">10.1002/we.1836</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Funke et al.(2014)</label><mixed-citation>Funke, S., Farrell, P., and Piggott, M.: Tidal turbine array optimisation using
the adjoint approach, Renew. Energ., 63, 658–673,
<ext-link xlink:href="http://dx.doi.org/10.1016/j.renene.2013.09.031" ext-link-type="DOI">10.1016/j.renene.2013.09.031</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Gebraad et al.(2016)</label><mixed-citation>Gebraad, P. M. O., Teeuwisse, F. W., van Wingerden, J. W., Fleming, P. A.,
Ruben, S. D., Marden, J. R., and Pao, L. Y.: Wind plant power optimization
through yaw control using a parametric model for wake effects-a CFD
simulation study: Wind plant optimization by yaw control using a parametric
wake model, Wind Energy, 19, 95–114, <ext-link xlink:href="http://dx.doi.org/10.1002/we.1822" ext-link-type="DOI">10.1002/we.1822</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Giannakoglou and Papadimitriou(2008)</label><mixed-citation>Giannakoglou, K. C. and Papadimitriou, D. I.: Adjoint methods for shape
optimization, in: Optimization and computational fluid dynamics,
Springer,  79–108,
<uri>http://link.springer.com/chapter/10.1007/978-3-540-72153-6_4</uri>, last
access: 8 December 2008.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Giles and Pierce(2000)</label><mixed-citation>
Giles, M. B. and Pierce, N. A.: An introduction to the adjoint approach to
design, Flow Turbul. Combust., 65, 393–415,
2000.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Goit et al.(2016)</label><mixed-citation>Goit, J., Munters, W., and Meyers, J.: Optimal Coordinated Control of
Power Extraction in LES of a Wind Farm with Entrance Effects,
Energies, 9, 29, <ext-link xlink:href="http://dx.doi.org/10.3390/en9010029" ext-link-type="DOI">10.3390/en9010029</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Goit and Meyers(2015)</label><mixed-citation>Goit, J. P. and Meyers, J.: Optimal control of energy extraction in wind-farm
boundary layers, J. Fluid Mech., 768, 5–50,
<ext-link xlink:href="http://dx.doi.org/10.1017/jfm.2015.70" ext-link-type="DOI">10.1017/jfm.2015.70</ext-link>,
2015.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>González et al.(2010)</label><mixed-citation>González, J. S., Gonzalez Rodriguez, A. G., Mora, J. C., Santos, J. R., and
Payan, M. B.: Optimization of wind farm turbines layout using an evolutive
algorithm, Renew. Energ., 35, 1671–1681,
<ext-link xlink:href="http://dx.doi.org/10.1016/j.renene.2010.01.010" ext-link-type="DOI">10.1016/j.renene.2010.01.010</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Herbert-Acero et al.(2014)</label><mixed-citation>Herbert-Acero, J., Probst, O., Réthoré, P.-E., Larsen, G., and
Castillo-Villar, K.: A Review of Methodological Approaches for the
Design and Optimization of Wind Farms, Energies, 7, 6930–7016,
<ext-link xlink:href="http://dx.doi.org/10.3390/en7116930" ext-link-type="DOI">10.3390/en7116930</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Heywood et al.(1996)</label><mixed-citation>
Heywood, J. G., Rannacher, R., and Turek, S.: Artificial boundaries and flux
and pressure conditions for the incompressible Navier-Stokes equations,
Int. J. Numer. Meth. Fl., 22, 325–352, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Hinze et al.(2009)</label><mixed-citation>
Hinze, M., Pinnau, R., Ulbrich, M., and Ulbrich, S.: Optimization with PDE
Constraints,   Mathematical Modelling: Theory and
Applications, Springer, 2009, 23, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Iungo et al.(2016)</label><mixed-citation>Iungo, G. V., Viola, F., Ciri, U., Leonardi, S., and Rotea, M.: Reduced order
model for optimization of power production from a wind farm, American
Institute of Aeronautics and Astronautics, 2200, 1–9, <ext-link xlink:href="http://dx.doi.org/10.2514/6.2016-2200" ext-link-type="DOI">10.2514/6.2016-2200</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Jackson and Hunt(1975)</label><mixed-citation>Jackson, P. S. and Hunt, J. C. R.: Turbulent wind flow over a low hill,
Q. J. Roy. Meteor. Soc., 101, 929–955,
<ext-link xlink:href="http://dx.doi.org/10.1002/qj.49710143015" ext-link-type="DOI">10.1002/qj.49710143015</ext-link>, 1975.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Jager and Andreas(1996)</label><mixed-citation>Jager, D. and Andreas, A.: NREL National Wind Technology Center
(NWTC): M2 Tower; Boulder, Colorado (Data),
<uri>https://www.nrel.gov/midc/nwtc_m2/</uri> (last access: 12 May 2016), 1996.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Jameson(2003)</label><mixed-citation>Jameson, A.: Aerodynamic shape optimization using the adjoint method, Lectures
at the Von Karman Institute, Brussels,
<uri>http://aero-comlab.stanford.edu/Papers/jameson.vki03.pdf</uri> (last access: 26 July 2013),
2003.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Jensen(1983)</label><mixed-citation>Jensen, N. O.: A note on wind generator interaction, Risø-M No. 2411 Risø
National Laboratory Roskilde,  1–16,
<uri>http://orbit.dtu.dk/files/55857682/ris_m_2411.pdf</uri> (last access: 28 February 2017), 1983.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Jimenez et al.(2007)</label><mixed-citation>Jimenez, A., Crespo, A., Migoya, E., and Garcia, J.: Advances in large-eddy
simulation of a wind turbine wake, J. Phys. Conf. Ser., 75,
012041, <ext-link xlink:href="http://dx.doi.org/10.1088/1742-6596/75/1/012041" ext-link-type="DOI">10.1088/1742-6596/75/1/012041</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>King et al.(2016)</label><mixed-citation>King, R., Hamlington, P., Dykes, K., and Graf, P.: Adjoint Optimization of wind
Farm Layouts for Systems Engineering Analysis,
American Institute of Aeronautics and Astronautics, vol. AIAA 2016-2199,
<ext-link xlink:href="http://dx.doi.org/10.2514/6.2016-2199" ext-link-type="DOI">10.2514/6.2016-2199</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Kusiak and Song(2010)</label><mixed-citation>Kusiak, A. and Song, Z.: Design of wind farm layout for maximum wind energy
capture, Renew. Energ., 35, 685–694, <ext-link xlink:href="http://dx.doi.org/10.1016/j.renene.2009.08.019" ext-link-type="DOI">10.1016/j.renene.2009.08.019</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Kwong et al.(2012)</label><mixed-citation>Kwong, W. Y., Zhang, P. Y., Romero, D., Moran, J., Morgenroth, M., and Amon,
C.: Wind farm layout optimization considering energy generation and noise
propagation, in: ASME 2012 International Design Engineering
Technical Conferences and Computers and Information in Engineering
Conference, American Society of Mechanical Engineers,  DETC2012-71478, 323–332,
<ext-link xlink:href="http://dx.doi.org/10.1115/DETC2012-71478" ext-link-type="DOI">10.1115/DETC2012-71478</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Larsen et al.(2011)</label><mixed-citation>Larsen, G. C., Aagaard Madsen, H., Troldborg, N., Larsen, T. J.,
Réthoré, P.-E., Fuglsang, P., Ott, S., Mann, J., Buhl, T., Nielsen,
M. et al.: TOPFARM-next generation design tool for optimisation of
wind farm topology and operation, Tech. Rep. Risø-R-1805(EN), Risø DTU
Naitonal Laboratory for Sustainable Energy,
<uri>http://forskningsbasen.deff.dk/Share.external?sp=S14b3124a-fef2-4c0b-8f80-6dae7c10ddd2&amp;sp=Sdtu</uri> (last access: 28 February 2017), 2011.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Logg et al.(2012)Logg, Mardal, and Wells</label><mixed-citation>Logg, A., Mardal, K.-A., and Wells, G. (Eds.): Automated Solution of
Differential Equations by the Finite Element Method,
Lecture Notes in Computational Science and Engineering,
Springer Berlin Heidelberg, Berlin, Heidelberg, 84,
<uri>http://link.springer.com/10.1007/978-3-642-23099-8</uri>,
2012.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Luchini and Bottaro(2014)</label><mixed-citation>Luchini, P. and Bottaro, A.: Adjoint Equations in Stability Analysis,
Annu. Rev. Fluid Mech., 46, 493–517,
<ext-link xlink:href="http://dx.doi.org/10.1146/annurev-fluid-010313-141253" ext-link-type="DOI">10.1146/annurev-fluid-010313-141253</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Marden et al.(2013)</label><mixed-citation>Marden, J. R., Ruben, S. D., and Pao, L. Y.: A Model-Free Approach to
Wind Farm Control Using Game Theoretic Methods, IEEE
T. Contr. Syst. T., 21, 1207–1214,
<ext-link xlink:href="http://dx.doi.org/10.1109/TCST.2013.2257780" ext-link-type="DOI">10.1109/TCST.2013.2257780</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Martins and Hwang(2013)</label><mixed-citation>Martins, J. R. R. A. and Hwang, J. T.: Review and Unification of Methods
for Computing Derivatives of Multidisciplinary Computational
Models, AIAA J., 51, 2582–2599, <ext-link xlink:href="http://dx.doi.org/10.2514/1.J052184" ext-link-type="DOI">10.2514/1.J052184</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Meyers and Meneveau(2012)</label><mixed-citation>Meyers, J. and Meneveau, C.: Optimal turbine spacing in fully developed wind
farm boundary layers, Wind Energy, 15, 305–317, <ext-link xlink:href="http://dx.doi.org/10.1002/we.469" ext-link-type="DOI">10.1002/we.469</ext-link>,
2012.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Mirocha et al.(2014)</label><mixed-citation>Mirocha, J. D., Kosovic, B., Aitken, M. L., and Lundquist, J. K.:
Implementation of a generalized actuator disk wind turbine model into the
weather research and forecasting model for large-eddy simulation
applications, Journal of Renewable and Sustainable Energy, 6, 013104,
<ext-link xlink:href="http://dx.doi.org/10.1063/1.4861061" ext-link-type="DOI">10.1063/1.4861061</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Nocedal and Wright(1999)</label><mixed-citation>
Nocedal, J. and Wright, S. J.: Numerical optimization, Springer, New York,
ISBN: 978-0-387-30303-1, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Porté-Agel et al.(2011)</label><mixed-citation>Porté-Agel, F., Wu, Y.-T., Lu, H., and Conzemius, R. J.: Large-eddy
simulation of atmospheric boundary layer flow through wind turbines and wind
farms, J. Wind Eng. Ind. Aerod., 99, 154–168,
<ext-link xlink:href="http://dx.doi.org/10.1016/j.jweia.2011.01.011" ext-link-type="DOI">10.1016/j.jweia.2011.01.011</ext-link>, 2011.</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx50"><label>Sanderse et al.(2011)</label><mixed-citation>Sanderse, B., Pijl, S., and Koren, B.: Review of computational fluid dynamics
for wind turbine wake aerodynamics, Wind Energy, 14, 799–819,
<ext-link xlink:href="http://dx.doi.org/10.1002/we.458" ext-link-type="DOI">10.1002/we.458</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>van der Laan et al.(2015a)</label><mixed-citation>van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J.,
Kelly, M. C., Troldborg, N., Hansen, K. S., and Murcia, J. P.: The
k-<inline-formula><mml:math id="M195" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>-fP model applied to wind farms, Wind Energy, 18, 2065–2084,
<ext-link xlink:href="http://dx.doi.org/10.100/we.1804" ext-link-type="DOI">10.100/we.1804</ext-link>,
2015a.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>van der Laan et al.(2015b)</label><mixed-citation>van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J.,
Kelly, M. C., Troldborg, N., Schepers, J. G., and Machefaux, E.: An improved
k-<inline-formula><mml:math id="M196" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> model applied to a wind turbine wake in atmospheric turbulence,
Wind Energy, 18, 889–907, <ext-link xlink:href="http://dx.doi.org/10.1002/we.1736" ext-link-type="DOI">10.1002/we.1736</ext-link>,
2015b.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Walmsley et al.(1986)</label><mixed-citation>Walmsley, J. L., Taylor, P. A., and Keith, T.: A simple model of neutrally
stratified boundary-layer flow over complex terrain with surface roughness
modulations (MS3DJH/3R), Bound.-Lay. Meteorol., 36, 157–186,
<ext-link xlink:href="http://dx.doi.org/10.1007/BF00117466" ext-link-type="DOI">10.1007/BF00117466</ext-link>, 1986.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Wilcox(2006)</label><mixed-citation>
Wilcox, D. C.: Turbulence modeling for CFD, DCW Industries, La Cãnada,
Calif, 3rd Edn., 2006.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Wu and Porté-Agel(2010)</label><mixed-citation>Wu, Y.-T. and Porté-Agel, F.: Large-Eddy Simulation of Wind-Turbine
Wakes: Evaluation of Turbine Parametrisations, Bound.-Lay.
Meteorol., 138, 345–366, <ext-link xlink:href="http://dx.doi.org/10.1007/s10546-010-9569-x" ext-link-type="DOI">10.1007/s10546-010-9569-x</ext-link>,
2010.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Wu and Porté-Agel(2013)</label><mixed-citation>Wu, Y.-T. and Porté-Agel, F.: Simulation of Turbulent Flow Inside and
Above Wind Farms: Model Validation and Layout Effects,
Bound.-Lay. Meteorol., 146, 181–205, <ext-link xlink:href="http://dx.doi.org/10.1007/s10546-012-9757-y" ext-link-type="DOI">10.1007/s10546-012-9757-y</ext-link>, 2013.</mixed-citation></ref>

  </ref-list><app-group content-type="float"><app><title/>

    </app></app-group></back>
    <!--<article-title-html>Optimization of wind plant layouts using an adjoint approach</article-title-html>
<abstract-html><p class="p">Using adjoint optimization and three-dimensional steady-state
Reynolds-averaged Navier–Stokes (RANS) simulations, we present a new
gradient-based approach for optimally siting wind turbines within
utility-scale wind plants. By solving the adjoint equations of the flow
model, the gradients needed for optimization are found at a cost that is
independent of the number of control variables, thereby permitting
optimization of large wind plants with many turbine locations. Moreover,
compared to the common approach of superimposing prescribed wake deficits
onto linearized flow models, the computational efficiency of the adjoint
approach allows the use of higher-fidelity RANS flow models which can capture
nonlinear turbulent flow physics within a wind plant. The steady-state RANS
flow model is implemented in the Python finite-element package
<span style="" class="text typewriter">FEniCS</span> and the derivation and solution of the discrete adjoint
equations are automated within the <span style="" class="text typewriter">dolfin-adjoint</span> framework.
Gradient-based optimization of wind turbine locations is demonstrated for
idealized test cases that reveal new optimization heuristics such as
rotational symmetry, local speedups, and nonlinear wake curvature effects.
Layout optimization is also demonstrated on more complex wind rose shapes,
including a full annual energy production (AEP) layout optimization over 36
inflow directions and 5 wind speed bins.</p></abstract-html>
<ref-html id="bib1.bib1"><label>Ainslie(1988)</label><mixed-citation>
Ainslie, J.: Calculating the flowfield in the wake of wind turbines, J.
Wind Eng. Ind. Aerod., 27, 213–224,
<a href="http://dx.doi.org/10.1016/0167-6105(88)90037-2" target="_blank">doi:10.1016/0167-6105(88)90037-2</a>, 1988.
</mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Amestoy et al.(2000)</label><mixed-citation>
Amestoy, P. R., Duff, I. S., and L'Excellent, J. Y.: Multifrontal parallel
distributed symmetric and unsymmetric solvers, Comput. Method. Appl.
M., 184, 501–520,
<a href="http://dx.doi.org/10.1016/S0045-7825(99)00242-X" target="_blank">doi:10.1016/S0045-7825(99)00242-X</a>, 2000.
</mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Barthelmie et al.(2009)</label><mixed-citation>
Barthelmie, R. J., Hansen, K., Frandsen, S. T., Rathmann, O., Schepers, J. G.,
Schlez, W., Phillips, J., Rados, K., Zervos, A., Politis, E. S., and
Chaviaropoulos, P. K.: Modelling and measuring flow and wind turbine wakes in
large wind farms offshore, Wind Energy, 12, 431–444, <a href="http://dx.doi.org/10.1002/we.348" target="_blank">doi:10.1002/we.348</a>, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Boersma et al.(2016)</label><mixed-citation>
Boersma, S., Gebraad, P., Vali, M., Doekemeijer, B., and van Wingerden, J.: A
control-oriented dynamic wind farm flow model: “WFSim”, J.
Phys. Conf. Ser., 753, 032005,
<a href="http://dx.doi.org/10.1088/1742-6596/753/3/032005" target="_blank">doi:10.1088/1742-6596/753/3/032005</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bokharaie et al.(2016)</label><mixed-citation>
Bokharaie, V. S., Bauweraerts, P., and Meyers, J.: Wind-farm layout optimisation using a hybrid Jensen-LES approach, Wind Energ. Sci., 1, 311–325, <a href="http://dx.doi.org/10.5194/wes-1-311-2016" target="_blank">doi:10.5194/wes-1-311-2016</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Brezzi and Fortin(1991)</label><mixed-citation>
Brezzi, F. and Fortin, M. (Eds.): Mixed and Hybrid Finite Element
Methods,  Springer Series in Computational
Mathematics, Springer New York, New York, NY, 15, ISBN 978-1-4612-7824-5, 1991.
</mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Burton et al.(2011)</label><mixed-citation>
Burton, T., Sharpe, D., Jenkins, N., and Bossanyi, E.: Wind energy handbook,
John Wiley &amp; Sons, Chichester, West Sussex, 2nd Edn., 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Byrd et al.(1995)</label><mixed-citation>
Byrd, R. H., Lu, P., Nocedal, J., and Zhu, C.: A Limited Memory Algorithm
for Bound Constrained Optimization, SIAM J. Sci.
Comput., 16, 1190–1208, <a href="http://dx.doi.org/10.1137/0916069" target="_blank">doi:10.1137/0916069</a>, 1995.
</mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Cabezón et al.(2011)</label><mixed-citation>
Cabezón, D., Migoya, E., and Crespo, A.: Comparison of turbulence models
for the computational fluid dynamics simulation of wind turbine wakes in the
atmospheric boundary layer, Wind Energy, 14, 909–921, <a href="http://dx.doi.org/10.1002/we.516" target="_blank">doi:10.1002/we.516</a>,
2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Calaf et al.(2010)</label><mixed-citation>
Calaf, M., Meneveau, C., and Meyers, J.: Large eddy simulation study of fully
developed wind-turbine array boundary layers, Phys. Fluids, 22,
015110-1–015110-16, <a href="http://dx.doi.org/10.1063/1.3291077" target="_blank">doi:10.1063/1.3291077</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Chen and Liou(2011)</label><mixed-citation>
Chen, T. and Liou, L.: Blockage corrections in wind tunnel tests of small
horizontal-axis wind turbines, Exp. Therm. Fluid Sci., 35,
565–569, <a href="http://dx.doi.org/10.1016/j.expthermflusci.2010.12.005" target="_blank">doi:10.1016/j.expthermflusci.2010.12.005</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Chowdhury et al.(2012)</label><mixed-citation>
Chowdhury, S., Zhang, J., Messac, A., and Castillo, L.: Unrestricted wind farm
layout optimization (UWFLO): Investigating key factors influencing the
maximum power generation, Renew. Energ., 38, 16–30,
<a href="http://dx.doi.org/10.1016/j.renene.2011.06.033" target="_blank">doi:10.1016/j.renene.2011.06.033</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Churchfield et al.(2012)</label><mixed-citation>
Churchfield, M. J., Lee, S., Michalakes, J., and Moriarty, P. J.: A numerical
study of the effects of atmospheric and wake turbulence on wind turbine
dynamics, J. Turbul., 13, 1–32, <a href="http://dx.doi.org/10.1080/14685248.2012.668191" target="_blank">doi:10.1080/14685248.2012.668191</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Crespo et al.(1999)</label><mixed-citation>
Crespo, A., Hernández, J., and Frandsen, S.: Survey of modelling methods
for wind turbine wakes and wind farms, Wind Energy, 2, 1–24,
<a href="http://dx.doi.org/10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7" target="_blank">doi:10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7</a>, 1999.
</mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Donéa and Huerta(2003)</label><mixed-citation>
Donéa, J. and Huerta, A.: Finite element methods for flow problems, Wiley,
Chichester, Hoboken, NJ, 2003.
</mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Du Pont and Cagan(2012)</label><mixed-citation>
Du Pont, B. L. and Cagan, J.: An Extended Pattern Search Approach to
Wind Farm Layout Optimization, J. Mech. Design, 134,
081002, <a href="http://dx.doi.org/10.1115/1.4006997" target="_blank">doi:10.1115/1.4006997</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Dykes et al.(2014)</label><mixed-citation>
Dykes, K., Ning, A., King, R., Graf, P., Scott, G., and Veers, P. S.:
Sensitivity Analysis of Wind Plant Performance to Key Turbine
Design Parameters: A Systems Engineering Approach, American
Institute of Aeronautics and Astronautics, 1087, 1–25 <a href="http://dx.doi.org/10.2514/6.2014-1087" target="_blank">doi:10.2514/6.2014-1087</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>El Kasmi and Masson(2008)</label><mixed-citation>
El Kasmi, A. and Masson, C.: An extended model for turbulent flow through
horizontal-axis wind turbines, J. Wind Eng. Ind.
Aerod., 96, 103–122, <a href="http://dx.doi.org/10.1016/j.jweia.2007.03.007" target="_blank">doi:10.1016/j.jweia.2007.03.007</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Farrell et al.(2013)</label><mixed-citation>
Farrell, P. E., Ham, D. A., Funke, S. W., and Rognes, M. E.: Automated
Derivation of the Adjoint of High-Level Transient Finite
Element Programs, SIAM J. Sci. Comput., 35, C369–C393,
<a href="http://dx.doi.org/10.1137/120873558" target="_blank">doi:10.1137/120873558</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Fitch et al.(2012)</label><mixed-citation>
Fitch, A. C., Olson, J. B., Lundquist, J. K., Dudhia, J., Gupta, A. K.,
Michalakes, J., and Barstad, I.: Local and Mesoscale Impacts of Wind
Farms as Parameterized in a Mesoscale NWP Model, Mon.
Rev., 140, 3017–3038, <a href="http://dx.doi.org/10.1175/MWR-D-11-00352.1" target="_blank">doi:10.1175/MWR-D-11-00352.1</a>,
2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Fleming et al.(2016)</label><mixed-citation>
Fleming, P. A., Ning, A., Gebraad, P. M. O., and Dykes, K.: Wind plant system
engineering through optimization of layout and yaw control: Wind plant
system engineering, Wind Energy, 19, 329–344, <a href="http://dx.doi.org/10.1002/we.1836" target="_blank">doi:10.1002/we.1836</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Funke et al.(2014)</label><mixed-citation>
Funke, S., Farrell, P., and Piggott, M.: Tidal turbine array optimisation using
the adjoint approach, Renew. Energ., 63, 658–673,
<a href="http://dx.doi.org/10.1016/j.renene.2013.09.031" target="_blank">doi:10.1016/j.renene.2013.09.031</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Gebraad et al.(2016)</label><mixed-citation>
Gebraad, P. M. O., Teeuwisse, F. W., van Wingerden, J. W., Fleming, P. A.,
Ruben, S. D., Marden, J. R., and Pao, L. Y.: Wind plant power optimization
through yaw control using a parametric model for wake effects-a CFD
simulation study: Wind plant optimization by yaw control using a parametric
wake model, Wind Energy, 19, 95–114, <a href="http://dx.doi.org/10.1002/we.1822" target="_blank">doi:10.1002/we.1822</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Giannakoglou and Papadimitriou(2008)</label><mixed-citation>
Giannakoglou, K. C. and Papadimitriou, D. I.: Adjoint methods for shape
optimization, in: Optimization and computational fluid dynamics,
Springer,  79–108,
<a href="http://link.springer.com/chapter/10.1007/978-3-540-72153-6_4" target="_blank">http://link.springer.com/chapter/10.1007/978-3-540-72153-6_4</a>, last
access: 8 December 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Giles and Pierce(2000)</label><mixed-citation>
Giles, M. B. and Pierce, N. A.: An introduction to the adjoint approach to
design, Flow Turbul. Combust., 65, 393–415,
2000.
</mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Goit et al.(2016)</label><mixed-citation>
Goit, J., Munters, W., and Meyers, J.: Optimal Coordinated Control of
Power Extraction in LES of a Wind Farm with Entrance Effects,
Energies, 9, 29, <a href="http://dx.doi.org/10.3390/en9010029" target="_blank">doi:10.3390/en9010029</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Goit and Meyers(2015)</label><mixed-citation>
Goit, J. P. and Meyers, J.: Optimal control of energy extraction in wind-farm
boundary layers, J. Fluid Mech., 768, 5–50,
<a href="http://dx.doi.org/10.1017/jfm.2015.70" target="_blank">doi:10.1017/jfm.2015.70</a>,
2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>González et al.(2010)</label><mixed-citation>
González, J. S., Gonzalez Rodriguez, A. G., Mora, J. C., Santos, J. R., and
Payan, M. B.: Optimization of wind farm turbines layout using an evolutive
algorithm, Renew. Energ., 35, 1671–1681,
<a href="http://dx.doi.org/10.1016/j.renene.2010.01.010" target="_blank">doi:10.1016/j.renene.2010.01.010</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Herbert-Acero et al.(2014)</label><mixed-citation>
Herbert-Acero, J., Probst, O., Réthoré, P.-E., Larsen, G., and
Castillo-Villar, K.: A Review of Methodological Approaches for the
Design and Optimization of Wind Farms, Energies, 7, 6930–7016,
<a href="http://dx.doi.org/10.3390/en7116930" target="_blank">doi:10.3390/en7116930</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Heywood et al.(1996)</label><mixed-citation>
Heywood, J. G., Rannacher, R., and Turek, S.: Artificial boundaries and flux
and pressure conditions for the incompressible Navier-Stokes equations,
Int. J. Numer. Meth. Fl., 22, 325–352, 1996.
</mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Hinze et al.(2009)</label><mixed-citation>
Hinze, M., Pinnau, R., Ulbrich, M., and Ulbrich, S.: Optimization with PDE
Constraints,   Mathematical Modelling: Theory and
Applications, Springer, 2009, 23, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Iungo et al.(2016)</label><mixed-citation>
Iungo, G. V., Viola, F., Ciri, U., Leonardi, S., and Rotea, M.: Reduced order
model for optimization of power production from a wind farm, American
Institute of Aeronautics and Astronautics, 2200, 1–9, <a href="http://dx.doi.org/10.2514/6.2016-2200" target="_blank">doi:10.2514/6.2016-2200</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Jackson and Hunt(1975)</label><mixed-citation>
Jackson, P. S. and Hunt, J. C. R.: Turbulent wind flow over a low hill,
Q. J. Roy. Meteor. Soc., 101, 929–955,
<a href="http://dx.doi.org/10.1002/qj.49710143015" target="_blank">doi:10.1002/qj.49710143015</a>, 1975.
</mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Jager and Andreas(1996)</label><mixed-citation>
Jager, D. and Andreas, A.: NREL National Wind Technology Center
(NWTC): M2 Tower; Boulder, Colorado (Data),
<a href="https://www.nrel.gov/midc/nwtc_m2/" target="_blank">https://www.nrel.gov/midc/nwtc_m2/</a> (last access: 12 May 2016), 1996.
</mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Jameson(2003)</label><mixed-citation>
Jameson, A.: Aerodynamic shape optimization using the adjoint method, Lectures
at the Von Karman Institute, Brussels,
<a href="http://aero-comlab.stanford.edu/Papers/jameson.vki03.pdf" target="_blank">http://aero-comlab.stanford.edu/Papers/jameson.vki03.pdf</a> (last access: 26 July 2013),
2003.
</mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Jensen(1983)</label><mixed-citation>
Jensen, N. O.: A note on wind generator interaction, Risø-M No. 2411 Risø
National Laboratory Roskilde,  1–16,
<a href="http://orbit.dtu.dk/files/55857682/ris_m_2411.pdf" target="_blank">http://orbit.dtu.dk/files/55857682/ris_m_2411.pdf</a> (last access: 28 February 2017), 1983.
</mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Jimenez et al.(2007)</label><mixed-citation>
Jimenez, A., Crespo, A., Migoya, E., and Garcia, J.: Advances in large-eddy
simulation of a wind turbine wake, J. Phys. Conf. Ser., 75,
012041, <a href="http://dx.doi.org/10.1088/1742-6596/75/1/012041" target="_blank">doi:10.1088/1742-6596/75/1/012041</a>, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>King et al.(2016)</label><mixed-citation>
King, R., Hamlington, P., Dykes, K., and Graf, P.: Adjoint Optimization of wind
Farm Layouts for Systems Engineering Analysis,
American Institute of Aeronautics and Astronautics, vol. AIAA 2016-2199,
<a href="http://dx.doi.org/10.2514/6.2016-2199" target="_blank">doi:10.2514/6.2016-2199</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Kusiak and Song(2010)</label><mixed-citation>
Kusiak, A. and Song, Z.: Design of wind farm layout for maximum wind energy
capture, Renew. Energ., 35, 685–694, <a href="http://dx.doi.org/10.1016/j.renene.2009.08.019" target="_blank">doi:10.1016/j.renene.2009.08.019</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Kwong et al.(2012)</label><mixed-citation>
Kwong, W. Y., Zhang, P. Y., Romero, D., Moran, J., Morgenroth, M., and Amon,
C.: Wind farm layout optimization considering energy generation and noise
propagation, in: ASME 2012 International Design Engineering
Technical Conferences and Computers and Information in Engineering
Conference, American Society of Mechanical Engineers,  DETC2012-71478, 323–332,
<a href="http://dx.doi.org/10.1115/DETC2012-71478" target="_blank">doi:10.1115/DETC2012-71478</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Larsen et al.(2011)</label><mixed-citation>
Larsen, G. C., Aagaard Madsen, H., Troldborg, N., Larsen, T. J.,
Réthoré, P.-E., Fuglsang, P., Ott, S., Mann, J., Buhl, T., Nielsen,
M. et al.: TOPFARM-next generation design tool for optimisation of
wind farm topology and operation, Tech. Rep. Risø-R-1805(EN), Risø DTU
Naitonal Laboratory for Sustainable Energy,
<a href="http://forskningsbasen.deff.dk/Share.external?sp=S14b3124a-fef2-4c0b-8f80-6dae7c10ddd2&amp;sp=Sdtu" target="_blank">http://forskningsbasen.deff.dk/Share.external?sp=S14b3124a-fef2-4c0b-8f80-6dae7c10ddd2&amp;sp=Sdtu</a> (last access: 28 February 2017), 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Logg et al.(2012)Logg, Mardal, and Wells</label><mixed-citation>
Logg, A., Mardal, K.-A., and Wells, G. (Eds.): Automated Solution of
Differential Equations by the Finite Element Method,
Lecture Notes in Computational Science and Engineering,
Springer Berlin Heidelberg, Berlin, Heidelberg, 84,
<a href="http://link.springer.com/10.1007/978-3-642-23099-8" target="_blank">http://link.springer.com/10.1007/978-3-642-23099-8</a>,
2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Luchini and Bottaro(2014)</label><mixed-citation>
Luchini, P. and Bottaro, A.: Adjoint Equations in Stability Analysis,
Annu. Rev. Fluid Mech., 46, 493–517,
<a href="http://dx.doi.org/10.1146/annurev-fluid-010313-141253" target="_blank">doi:10.1146/annurev-fluid-010313-141253</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Marden et al.(2013)</label><mixed-citation>
Marden, J. R., Ruben, S. D., and Pao, L. Y.: A Model-Free Approach to
Wind Farm Control Using Game Theoretic Methods, IEEE
T. Contr. Syst. T., 21, 1207–1214,
<a href="http://dx.doi.org/10.1109/TCST.2013.2257780" target="_blank">doi:10.1109/TCST.2013.2257780</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Martins and Hwang(2013)</label><mixed-citation>
Martins, J. R. R. A. and Hwang, J. T.: Review and Unification of Methods
for Computing Derivatives of Multidisciplinary Computational
Models, AIAA J., 51, 2582–2599, <a href="http://dx.doi.org/10.2514/1.J052184" target="_blank">doi:10.2514/1.J052184</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Meyers and Meneveau(2012)</label><mixed-citation>
Meyers, J. and Meneveau, C.: Optimal turbine spacing in fully developed wind
farm boundary layers, Wind Energy, 15, 305–317, <a href="http://dx.doi.org/10.1002/we.469" target="_blank">doi:10.1002/we.469</a>,
2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Mirocha et al.(2014)</label><mixed-citation>
Mirocha, J. D., Kosovic, B., Aitken, M. L., and Lundquist, J. K.:
Implementation of a generalized actuator disk wind turbine model into the
weather research and forecasting model for large-eddy simulation
applications, Journal of Renewable and Sustainable Energy, 6, 013104,
<a href="http://dx.doi.org/10.1063/1.4861061" target="_blank">doi:10.1063/1.4861061</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Nocedal and Wright(1999)</label><mixed-citation>
Nocedal, J. and Wright, S. J.: Numerical optimization, Springer, New York,
ISBN: 978-0-387-30303-1, 1999.
</mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Porté-Agel et al.(2011)</label><mixed-citation>
Porté-Agel, F., Wu, Y.-T., Lu, H., and Conzemius, R. J.: Large-eddy
simulation of atmospheric boundary layer flow through wind turbines and wind
farms, J. Wind Eng. Ind. Aerod., 99, 154–168,
<a href="http://dx.doi.org/10.1016/j.jweia.2011.01.011" target="_blank">doi:10.1016/j.jweia.2011.01.011</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Sanderse et al.(2011)</label><mixed-citation>
Sanderse, B., Pijl, S., and Koren, B.: Review of computational fluid dynamics
for wind turbine wake aerodynamics, Wind Energy, 14, 799–819,
<a href="http://dx.doi.org/10.1002/we.458" target="_blank">doi:10.1002/we.458</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>van der Laan et al.(2015a)</label><mixed-citation>
van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J.,
Kelly, M. C., Troldborg, N., Hansen, K. S., and Murcia, J. P.: The
k-<i>ϵ</i>-fP model applied to wind farms, Wind Energy, 18, 2065–2084,
<a href="http://dx.doi.org/10.100/we.1804" target="_blank">doi:10.100/we.1804</a>,
2015a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>van der Laan et al.(2015b)</label><mixed-citation>
van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J.,
Kelly, M. C., Troldborg, N., Schepers, J. G., and Machefaux, E.: An improved
k-<i>ϵ</i> model applied to a wind turbine wake in atmospheric turbulence,
Wind Energy, 18, 889–907, <a href="http://dx.doi.org/10.1002/we.1736" target="_blank">doi:10.1002/we.1736</a>,
2015b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Walmsley et al.(1986)</label><mixed-citation>
Walmsley, J. L., Taylor, P. A., and Keith, T.: A simple model of neutrally
stratified boundary-layer flow over complex terrain with surface roughness
modulations (MS3DJH/3R), Bound.-Lay. Meteorol., 36, 157–186,
<a href="http://dx.doi.org/10.1007/BF00117466" target="_blank">doi:10.1007/BF00117466</a>, 1986.
</mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Wilcox(2006)</label><mixed-citation>
Wilcox, D. C.: Turbulence modeling for CFD, DCW Industries, La Cãnada,
Calif, 3rd Edn., 2006.
</mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Wu and Porté-Agel(2010)</label><mixed-citation>
Wu, Y.-T. and Porté-Agel, F.: Large-Eddy Simulation of Wind-Turbine
Wakes: Evaluation of Turbine Parametrisations, Bound.-Lay.
Meteorol., 138, 345–366, <a href="http://dx.doi.org/10.1007/s10546-010-9569-x" target="_blank">doi:10.1007/s10546-010-9569-x</a>,
2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Wu and Porté-Agel(2013)</label><mixed-citation>
Wu, Y.-T. and Porté-Agel, F.: Simulation of Turbulent Flow Inside and
Above Wind Farms: Model Validation and Layout Effects,
Bound.-Lay. Meteorol., 146, 181–205, <a href="http://dx.doi.org/10.1007/s10546-012-9757-y" target="_blank">doi:10.1007/s10546-012-9757-y</a>, 2013.
</mixed-citation></ref-html>--></article>
