Introduction

The increasing demand for renewable energy has motivated extensive research on hydrokinetic energy conversion systems that extract energy from natural riverine and oceanic flows. Various types of conversion systems have been investigated for decades, including horizontal- and vertical-axis turbines and oscillating hydrofoils1,2,3. Horizontal-axis turbines have been studied the most because of the relatively mature technology4,5,6,7,8.

A popular benchmark for horizontal-axis hydrokinetic turbines is the Bahaj model, which has been experimentally tested in a cavitation tunnel and a towing tank9. The unducted Bahaj model generates power with an efficiency of about 46% (the ratio of generated power to the inflow power) at the optimal operating condition. This is the typical efficiency level of well-designed hydrokinetic turbines10. To evaluate this efficiency, one can compare it to the well-known Betz’s limit of 59.3%11, which is derived based on the one-dimensional (1D) momentum theory in an unbounded flow domain. There is no general consensus on whether the Betz’s limit should be considered as a hard upper bound on the efficiency of practical energy conversion systems in unbounded flow due to simplifications in the theory. However, it seems clear that further improvement can be sought regarding the current 46% efficiency of horizontal-axis hydrokinetic turbines.

One idea to improve the efficiency is to use a duct (also known as a shroud or diffuser) to accelerate the fluid flow passing the turbine blades, thus improving the efficiency of the device. Some researchers have incorporated the duct effect in the 1D momentum theory (or its extended version), with some of which predicting an efficiency well above the Betz’s limit12,13,14,15,16,17,18,19,20,21. In spite of the insight into the duct effects, the physics may be oversimplified (sometimes misrepresented) meaning the efficiency predicted by these models may not be achievable in practice. The complex turbine-duct interaction involves flow features, such as flow separation, that cannot be captured by the analytical models. These phenomena can significantly affect the mass flow through the duct and the system efficiency19.

Table 1 Previous publications on ducted wind and hydrokinetic turbines. For research evaluating the performance with blade swept area as the reference area, we provide the values of \(C_{P,A_b}\) and the converted values \(C_{P,A_\text {max}}\) (calculated when necessary). The Reynolds numbers are based on the maximum diameter of a whole device as defined in Eq. (2). BEMT is the blade element momentum theory, which is a body-force model that can be combined with RANS to account for two-way coupling with the duct. BET is the blade element theory, which can be combined with RANS to calculate separately the flow in an empty duct and turbine performance under such flow (i.e., a simpler version of RANS+BEMT with only one-way coupling).

To account for complex turbine-duct interaction and more reliably evaluate ducted turbine performance, one must resort to computational fluid dynamics (CFD) simulations or experiments. Table 1 lists research efforts that used such approaches. Most studies were conducted for wind turbines, but a few were specific to hydrokinetic turbines. As shown in the table, various duct shapes have been proposed and tested for wind turbines, with reported efficiencies ranging from 0.41 to 0.85, surpassing the Betz’s limit (0.59). However, these results must be interpreted in the context of the limitations of the analyses. The CFD models used for evaluations include steady Reynolds-averaged Navier–Stokes (RANS) and unsteady RANS (URANS) solvers, where the turbine blades are modeled using a blade-resolved or a body-force approach. Within these approaches, steady RANS may have difficulties with flow separation along the duct surface in many designs, as well as in capturing transient wake flow patterns and turbine-duct interactions34,35,36. In the body-force approach, the actuator disk model measures the extracted power using the product of velocity and thrust at the blade section, which usually results in an over-prediction of the efficiency because only a fraction of the computed power can be converted to the actual (rotational) power.

In addition, the definitions of efficiency for ducted turbines are inconsistent in the studies listed in Table 1. The inflow power is defined with respect to either the blade swept area or the maximum projection area of the device (or duct). The efficiency based on the blade swept area, \(C_{P,A_b}\), can be significantly higher than that based on the device area, \(C_{P,A_\text {max}}\), but \(C_{P,A_b}\) does not provide a fair comparison with the efficiency of an unducted turbine as explained later. In evaluating and comparing the performance of ducted turbine designs, it is necessary to use the same metric, so all power coefficients are converted using the maximum area as the reference—\(C_{P,A_\text {max}}\) in Table 1.

Considering the above two points, there are significant caveats in the results listed in Table 1. The highest fidelity simulation in Table 1 (the blade-resolved URANS approach performed by Knight et al.19) predicts a \(C_{P,A_\text {max}}\) of \(46\%\), which does not show an advantage of using the duct. The experimental evaluations of Oka et al.26 may be more credible, but they also suffer from uncertainties, such as measurement errors and proximity of the device to the floor, which causes blockage effects that affect the measured efficiency37. Finally, most of the results obtained for wind turbines do not translate to hydrokinetic turbines. For example, to sustain higher loads in water, a wind turbine design with a large flange may not be feasible for a hydrokinetic turbine. Additionally, a hydrokinetic turbine blade requires a lower aspect ratio and larger sectional thickness to sustain the higher loads in water38.

Another limitation of the research listed in Table 1 is that the duct designs were not optimized. Instead, these designs were generated by human intuition or a grid search in a low-dimensional design space. The only exception is the design by Aranake and Duraisamy22, who performed gradient-based optimization to develop a ducted wind turbine design. However, they used low-fidelity blade element theory to model the ducted turbine performance without adequately taking turbine-duct interaction into account. An optimal ducted turbine requires numerical optimization that simultaneously considers the blade and duct geometry with detailed shape parametrization. This is challenging because of the high computational cost of CFD evaluations and the high-dimensional design space. Another challenge is selecting the appropriate CFD model in the optimization process. As mentioned earlier, steady RANS is relatively inexpensive but may lead to inaccuracies in predicting the performance of designs where boundary layer separation occurs in the duct.

In this paper, we perform CFD-based design optimization of a ducted hydrokinetic turbine. To control the shape of the duct and turbine blades, we use 21 design parameters regarding the length and multiple sectional radii of the duct and spanwise twist/chord distributions of the blades. To parameterize the duct and blade geometry while ensuring their smooth deformation with the variation of the design parameters, a multi-layer Free-From Deformation (FFD) method is applied. This is the first time such method is employed in the design of ducted hydrokinetic turbines. We then perform a gradient-based optimization with gradients computed by a discrete adjoint method39 coupled with steady RANS blade-resolved simulations. This effort builds on previous design optimizations of unducted wind turbine40,41. Because of the potential inaccuracies of steady RANS for separated flow, the success of this approach hinges on whether our gradient-based optimization induces a design free of flow separation. This is, fortunately, indeed the case since designs with flow separation tend to be associated with lower efficiency, even when evaluated by the less accurate RANS solver (given enough grid resolution). Our optimized design is re-evaluated by a higher-fidelity URANS blade-resolved solver. The benefits of the duct are demonstrated upon a comparison with the unducted Bahaj turbine, optimized unducted turbine, and our baseline ducted turbines. Then, the optimized geometry and the associated flow mechanisms that contribute to improved energy extraction efficiency are discussed.

The paper is organized as follows. First, we discuss the problem statement, including the description of the physical problem of turbine energy extraction and the setup of the optimization problem. The next section introduces methodology in CFD simulations and the optimization process. The optimization and higher-fidelity re-evaluation results are then described, where we discuss the optimized duct geometry and flow mechanisms. Finally, conclusions are provided. The computations involved in this work are implemented in open-source codes OpenFOAM42 and DAFoam43.

Problem statement

Physical problem

Consider a turbine operating in a uniform inflow \(U_{\infty }\) in an unbounded fluid domain, as shown in Fig. 1. The turbine converts inflow power (energy) into rotational power, where the effectiveness of this conversion is characterized by the power coefficient,

$$\begin{aligned} C_P = \frac{P}{\frac{1}{2}\rho A U_{\infty }^3}, \end{aligned}$$
(1)

where P is the generated rotational power that is given by \(P=Q\Omega\) (torque Q times the rotational speed of the blades \(\Omega\)). \(\rho\) is the fluid density and A is the reference area. For an unducted turbine, A can be chosen as either the blade swept area \(A_b\) or the maximum projection area of the device \(A_\text {max}\), which are identical. For a ducted turbine, however, using the two values \(A_\text {max}\) and \(A_b\) as A leads to different \(C_P\)’s, since \(A_\text {max}\) is greater than \(A_b\). We argue that \(A_\text {max}\) is the appropriate choice for ducted turbines in order to have a fair comparison of their performance with unducted turbines. The reason is that, with \(A=A_\text {max}\), we are essentially comparing the generated power when the inflow power is the same for unducted and ducted turbines. On the other hand, using \(A_b\) for ducted turbines results in a larger value of \(C_P\) (even above 1) that can be misleading when compared to the efficiency of unducted turbines. For the above reasons, \(A=A_\text {max}\) is used for the evaluation of \(C_P\) in this work, and it will be hereafter simply written as A, referring to the maximum device area for both ducted and unducted turbines.

Figure 1
figure 1

Physical problem of (a) an unducted turbine and (b) a ducted turbine, with the same device area A, subject to inflow \(U_\infty\) in an unbounded domain.

Given a turbine, its efficiency \(C_P\) is in general a function of two other non-dimensional parameters, namely the tip-speed ratio (\(\lambda\)) and Reynolds number Re (based on the diameter of the device), defined as

$$\begin{aligned} \lambda = \frac{\Omega R}{U_{\infty }}, \ \ \ Re=\frac{U_{\infty }D_\text {max}}{\nu } , \end{aligned}$$
(2)

where R is the turbine blade radius, \(\nu\) is the fluid kinematic viscosity. In this paper, we fix \(U_\infty =1.4\) m/s, \(\nu =1\times 10^{-6}\) m\(^2\)/s, \(A=1.853\) m\(^2\), and \(D_\text {max}=\sqrt{(4/\pi )A}=1.536\) m, leading to \(Re\approx 2\times 10^6\) for both ducted and unducted turbines (see Fig. 1). For Reynolds number of \({\mathscr{O}}(10^6)\), the flow is assumed fully turbulent, and the dependence of \(C_P\) on Re in this range is expected to be relatively weak. We will evaluate \(C_P\) for a broad range of \(\lambda\) at this Reynolds number for both ducted and unducted turbines.

Optimization problem

Our objective is to optimize a ducted turbine geometry to maximize its hydrodynamic efficiency \(C_P\) at given \(U_{\infty }\)(\(=1.4\) m/s) and \(\Omega\)(\(=17.5\) rad/s). This design process is applied to both ducted and unducted turbines for a fair performance comparison. In the following, the mathematical optimization problem for a ducted turbine is presented, which is the more sophisticated case. The optimization for an unducted turbine can be conducted similarly but with a simpler setup that does not include the duct parameters and the tip clearance constraint.

The constrained optimization problem for a ducted turbine can be stated as

$$\begin{aligned} \text {maximize}&\quad C_P \end{aligned}$$
(3a)
$$\begin{aligned} \text {by varying}&\quad -30^{\circ } \le \{ \theta _i \}_{i=1}^{8} \le 30^{\circ }, \end{aligned}$$
(3b)
$$\begin{aligned}&\quad 0.8 \le \Bigl \{ \frac{b_i}{b^B_i} \Bigl \}_{i=1}^{8} \le 1.2, \end{aligned}$$
(3c)
$$\begin{aligned}&\quad 0 \le d_3 \le \{d_j\}_{j=1,2,4} \le D_\text {exit}, \end{aligned}$$
(3d)
$$\begin{aligned}&\quad 0.3 \le \frac{l}{l^B} \le 1.5, \end{aligned}$$
(3e)
$$\begin{aligned} \text {subject to}&\quad \frac{2R}{d_3} = 0.91, \end{aligned}$$
(3f)

where \(\{ \theta _i \}_{i=1}^{8}\) are the twist angles at 8 sections of the blade, controlling the blade root pitch and twist profile as shown in Fig. 2a. The cross-sectional areas of 8 sections of the blade, normalized with respect to their baseline, are denoted as \(\{ b_i/b_i^B \}_{i=1}^{8}\). Modifying these variables leads to a change in the size of the blade section, but the sectional (foil) shape remains unchanged. Thus, \(b_i/b^B_i\) gives the scaling factor for each section, as shown in Fig. 2b.

Figure 2
figure 2

Design variables of blades. Gray and blue colors represent original and modified designs, respectively. (a) Blade twist angles (\(\{\theta _i\}_{i=1}^8\)). (b) Blade section areas (\(\{b_i\}_{i=1}^8\)), where the baseline \(\{b_i^B\}_{i=1}^8\) are also included. Blade sections can be contracted (\(0< b_i/b^B_i< 1\)) or expanded (\(b_i/b^B_i > 1\)).

The variables \(\{d_j\}_{j=1}^4\) are the diameters at 4 sections along the duct as illustrated in Fig. 3a, with \(d_3\) being the throat section, where the rotor is installed. This section is located at 26.4% of the duct length, following a baseline design of the duct19. The bound (3d) ensures that \(d_3\) is always located at the throat in the optimization and that all duct diameters do not exceed the exit diameter \(D_\text {exit}=D_\text {max}=\sqrt{(4/\pi )A}\), as depicted in Fig. 3a. A large exit area reduces flow velocity at the exit through the streamtube expansion, which in turn increases the flow momentum extraction at the blades. Our setup prevents the optimizer from unrealistically increasing the size of the exit section and ensures a fair comparison between different designs. The variable l, representing the duct length (with \(l^B\) the baseline value), governs the scaling of the duct with respect to the fixed point at the throat (Fig. 3b). The constraint (3f) keeps the tip gap ratio as a constant of 9% throughout the optimization process, consistent with the baseline design. It leads to the blade radius R changing with the variation of throat diameter \(d_3\).

Figure 3
figure 3

Design variables of a duct. Gray and blue colors represent original and modified designs, respectively. (a) Duct radial expansion (left) and contraction (right), controlled by sectional diameter variables \(\{d_i\}_{i=1}^4\), which are bounded above by \(D_\text {exit}\) and below by the variable \(d_3\) at the throat. The blade radius R is scaled to maintain the tip gap ratio with \(2R/d_3 = 0.91\). (b) Duct elongation (left) and shortening (right), controlled by the design variable l, with respectively \(l/l^B \ge 1\) and \(0 \le l/l^B \le 1\).

The design variable bounds are set up in a trial-and-error manner to make sure that the optimized variables do not reach the bounds on the optimized design. The full turbine geometry morphs smoothly throughout the optimization. This continuous morphing is ensured through the Free-Form Deformation method which will be discussed later in the Methods section.

Since a gradient-based optimization method (3) is used, local optima potentially exist in the design space. Hence, we adopt the multistart strategy, using two different baseline designs (hereafter named baseline design A and B) with drastically different performances. Both baseline designs adopt the same thin-wall curved-shaped duct as in Knight et al.19. The two baseline designs differ in the blade geometry (see Fig. 4). Design A adopts the original Bahaj model with a 0.44 m radius and a \(20^\circ\) root pitch. Design B adopts the Bahaj model with a 0.44 m radius, a \(45^\circ\) root pitch, and a modified twist profile as in Knight et al.19. This modified twist profile is obtained by matching the local angle of attack of each blade section in the duct to that of the unducted turbine counterpart through an iterative procedure. When evaluating with the unsteady RANS solver, baseline designs A and B yield \(C_P=28\%\) and \(C_P=45\%\), respectively, at \(\lambda =5.5\). The hub is not included in the model to simplify the geometry parametrization using the Free-Form Deformation method. The optimization problem is summarized in Table 2.

Figure 4
figure 4

Baseline designs of a ducted turbine. (a) Different views of baseline ducted turbine; (b) Twist distributions of baseline designs A and B.

Table 2 Setup of optimizations A and B.

Methods

This section describes the methodology in optimization and CFD evaluations. An overall flowchart is shown in Fig. 5. The whole process involves the optimization and the re-evaluation of the optimized design using higher-fidelity simulations. The optimization and high-fidelity re-evaluation use DAFoam43 and OpenFOAM42, respectively. In what follows, we will describe each component of the methodology in subsections. To provide a self-contained but easy-to-follow paper for readers, we put additional details in the Supplementary Information and keep the main paper as concise as possible. We start from CFD models involved in both the optimization and re-evaluations and then follow up with other components in the optimization framework.

Figure 5
figure 5

Diagram of the overall process, which includes optimization and re-evaluation of the optimal designs.

CFD models

The governing equations for the flow field around the turbine (Fig. 1) are the Navier–Stokes equations

$$\left\{ {\begin{array}{*{20}l} {\nabla \cdot {\varvec{ U}} = 0,} \hfill \\ {\frac{{\partial {\varvec{ U}}}}{{\partial t}} + \nabla \cdot ({\varvec{UU}}) = - \frac{1}{\rho }\nabla p + \nabla \cdot (\nu\nabla {\varvec{U}})} \hfill \\ \end{array} } \right.$$
(4)

where \(\varvec{U}\) is the flow velocity and p is the pressure.

We consider the Reynolds-averaged Navier–Stokes (RANS) equations with grids only resolving the averaged components of the flow. One can apply the Reynolds decomposition \(\varvec{U} = \overline{\varvec{U}}+\varvec{u}'\) (and the same for pressure) to Eq. (4). \(\overline{\varvec{U}}\) denotes the averaged velocity in a time window or by an ensemble and \(\varvec{u}'\) represents the zero-mean turbulent fluctuation. This leads to the unsteady RANS equation:

$$\begin{aligned} {\left\{ \begin{array}{ll} \nabla \cdot \overline{\varvec{U}} = 0, \\ \frac{\partial \overline{\varvec{U}}}{\partial t}+\nabla \cdot (\overline{\varvec{U}}\,\overline{\varvec{U}}) = -\frac{1}{\rho }\nabla {\overline{p}} + \nabla \cdot (\nu \nabla \overline{\varvec{U}})- \nabla \cdot \overline{\varvec{u}'\varvec{u}'}, \end{array}\right. } \end{aligned}$$
(5)

where \(\overline{\varvec{u}'\varvec{u}'}\) is the Reynolds stresses that need to be approximated by turbulence models. In this work, the \(k-\omega\) SST turbulence model is used together with the automatic near-wall treatment (see Supplementary Information A for details on both).

The rotating blades are handled in simulations by two blade-resolved approaches: the Multiple Reference Frames (MRF) and the rotating-sliding mesh approach (RS). The former is used for steady RANS solutions (i.e., a solution with time-derivative terms set to zero) with multiple different reference frames, while the latter is used directly in the unsteady solution of Eq. (5). The MRF is used in optimization. The RS is defined as the higher-fidelity approach and used for optimized result re-evaluations (see Fig. 5). A detailed introduction of the two approaches is included in the following sections.

Multiple reference frames (MRF) method

The MRF method is an efficient method for modeling turbomachinery flow. In the MRF method, the computational mesh stays stationary, and the rotational effect is handled through a rotational reference frame. In particular, the fluid domain is separated into two regions: a rotational region surrounding the turbine blades with a blade-fixed reference frame, and the remaining stationary region with an inertial reference frame, as shown in Fig. 6. In both regions, the flow is considered steady with respect to the corresponding reference frame, so only steady RANS equations need to be solved.

Figure 6
figure 6

MRF method illustration. The computational domain is split into stationary and rotating (shaded blue) regions. The inertial and rotating reference frames are denoted by gray and yellow axes, respectively.

To be more specific, in the rotational region, the blades are stationary and experience a steady inflow. The flow velocity in the blade-fixed reference frame can be expressed by

$$\begin{aligned} \varvec{U}_R=\varvec{U}-\varvec{\Omega }\times \varvec{r}, \end{aligned}$$
(6)

where \(\varvec{U}\) is the velocity in the inertial reference frame, \(\varvec{\Omega }\) is the rotation vector of the turbine blades, and \(\varvec{r}\) is the distance vector from the axis of rotation to the point of interest (position vector). The steady RANS equations in the rotational region need to be established with the blade-fixed reference frame, which requires further formulations of both Eq. (5) and the \(k-\omega\) SST model equations. Although the implementation in OpenFOAM/DAFoam solves this complete set of equations, only the rotational-region formulation regarding Eq. (4) is presented here to provide the key insights of the method.

Combining Eq. (4) and Eq. (6), we obtain (see Supplementary Information B for a detailed derivation)

$$\begin{aligned} {\left\{ \begin{array}{ll} \nabla \cdot \varvec{U} = 0, \\ \frac{\partial \varvec{U}_R}{\partial t} + \nabla \cdot (\varvec{U}_R\varvec{U}) = -\frac{1}{\rho }\nabla p + \nabla \cdot (\nu \nabla \varvec{U}) - \varvec{\Omega }\times \varvec{U}. \end{array}\right. } \end{aligned}$$
(7)

The steady equations solved in the rotational region are Eq. (7), with \(\partial \varvec{U}_R/\partial t=0\). Therefore, in the MRF method, steady versions of Eq. (4) and Eq. (7) are solved in stationary and rotating regions. Solving these steady equations can be done using the SIMPLE algorithm44 implemented as simpleFoam in OpenFOAM.

Although the RANS-MRF method provides an efficient numerical solution for the turbine problem (i.e., only two steady RANS equations need to be solved), its accuracy can be compromised because of two issues. First, the rotational and stationary regions are usually chosen in a subjective manner. There is no guarantee that the rotational region covers all the flow features resulting from the rotating and discrete blades. Any mismatch between the choice of the region and the nature of the flow can lead to errors at the interface and thus in the final results. Secondly, for many designs, the flow can be unsteady in nature, especially when flow separation occurs from the duct and/or blade surfaces. Assuming a steady state solution, as in the RANS-MRF method, can lead to significant errors for this type of unsteady flow. As a result, the RANS-MRF method is considered a lower-fidelity model in the context of this paper.

Rotating-sliding mesh approach

The rotating-sliding mesh (RS) allows for the direct simulation of the unsteady RANS (URANS) equations (Eq. (5)) with mesh domains that exhibit relative motion. This is needed for modeling rotating geometries. The underlying idea of this method is to allow a region of the computational mesh to rotate with the turbine blades, as illustrated in Fig. 7. The rotating mesh also creates a technical problem that the mesh at the rotating/non-rotating interface becomes non-conformal, i.e., the nodes at two sides of the interface do not match up. The data transfer across the interface, therefore, needs to be handled by a special interpolation method involving a “supermesh”45, as described in Supplementary Information C.

Figure 7
figure 7

Rotating (blue) and stationary (gray) mesh, with non-conformal mesh interfaces.

Coupling URANS with the RS is, in principle, much more accurate than the RANS-MRF method as it captures the unsteady nature of the flow. This can be critical in simulating flow around a ducted turbine because the possible flow separation from the duct surface can be captured better. However, in the URANS-RS, a small time step is needed to resolve the blade rotation, so a long simulation time is required for the solution to reach a quasi-steady state. The computational cost of the URANS-RS is hence much higher than that of the RANS-MRF method. In this paper, the URANS-RS is considered a higher-fidelity method and is only used in re-evaluating the performance of optimized designs.

Mesh configuration

The unstructured computational mesh is generated using the OpenFOAM meshing tool snappyHexMesh. A mesh overview is shown in Fig. 8. The size of the computational domain is \(10.4D\times 10.4D\times 23.7L\), where \(D=\sqrt{(4/\pi )A}=1.536\) m is the maximum diameter of the duct, and \(L=2.107\) m is the length of the duct that is taken from the baseline design. This domain size is sufficient to avoid a blockage effect upon tests. For the boundaries of the domain, mixed boundary boundary conditions are applied. To be more specific, fixed velocity values and zero pressure gradient are imposed for flows coming inside the domain, whereas a zero velocity gradient and fixed pressure value are imposed for flows coming out of the domain. On the turbine blades and duct, no-slip boundary conditions are applied.

Figure 8
figure 8

Mesh configuration for a ducted turbine, with (a) front view, (b) side view, (c) close-up side view to show the refinement region, (d) close-up view at the 0.7R blade section, and (e) close-up view near the duct. The levels of refinements are also shown in the figures.

To model the flow near the turbine and immediately downstream with higher accuracy, a region of \(2D\times 2D\times 2.5L\) around the turbine is refined (see Fig. 8c). Within the refinement region, we apply three steps of grid refinement. First, a level-4 refinement is implemented for the full refinement region, i.e., each cell of the original mesh is divided into \((2)^4\) cells. Then, further refinements, up to level-6 and level-9 toward respectively the duct and blade surfaces are applied in the sub-regions close to the surfaces. Finally, prism layers are added close to the surfaces, which contain further continuously refined cells toward the surfaces (2 and 3 layers are used for the former and latter, both with the expansion ratio of 1.1). The prism layer provides better resolution for boundary layers and is critical for obtaining well-convergent results in the grid sensitivity study shown later in the Results and Discussion section.

In this work, three grid resolutions, M0, M1, and M2, are used with an increasing number of cells, i.e., further refinement from M0 to M2. The coarsest grid M0 is used in the RANS-MRF in the optimization process and has 2-3 million cells (the exact number depends on turbine geometry and re-mesh procedure in optimization, but it roughly contains 1.5 million cells in the refinement region and a similar number of cells in the remaining region). In M1 and M2, the full mesh region (including background mesh and refinement region) is uniformly refined in each direction by the factors of about 1.3 and 1.6, respectively, leading to 4-5 million cells for M1 and 7-8 million cells for M2. All grids M0, M1, and M2 are used in the URANS-RS re-evaluation, including the grid sensitivity study.

Optimization

Sequential Quadratic Programming (SQP)46, implemented in SNOPT47, is used to solve the optimization problem. One of the challenging tasks is to obtain the gradient of the objective function \(\nabla C_P\) with respect to all design variables. The following subsections discuss the components (see Fig. 5) involved in the gradient computation: (1) geometry parametrization and mesh deformation; (2) adjoint method. The gradient information is then used in the SQP algorithm to obtain the next design points. The procedure iterates until satisfying convergence criteria or further design improvements are not achievable.

Geometry parametrization via FFD method

It is necessary to parametrize the geometry to deform the surface mesh. In this work, the Free-Form Deformation (FFD) method48 is used for the geometry parametrization, implemented in the package pyGeo49,50. The principle of the FFD method is to enclose the surface mesh nodes in an FFD box with a specified number of control points (also known as FFD points). The FFD points are analytically connected to the enclosed surface nodes using tri-variate B-splines. More details are presented in Supplementary Information D. Controlling the FFD points enables smooth deformation of the enclosed geometry. Fig. 9 shows two examples of geometry deformation controlled by the FFD method in two and three dimensions.

Figure 9
figure 9

Examples of geometry deformations with FFD points. (a) A 2D NACA0012 airfoil (from the DAFoam tutorial) and (b) a 3D Stanford bunny (figure taken from Kenway et al.49).

Figure 10 shows an overview of the FFD setup for our ducted turbine. Two levels of FFD boxes are used, with one parent box (black) enclosing all duct and blade geometries and two children boxes (red and blue) enclosing the duct and blades. The 21 design variables in the optimization problem can now be represented by 21 degrees of freedom (DoF) associated with the FFD points. The child FFD box for an individual blade has 32 FFD points placed on 8 sections. Twist variables rotate the four FFD points about the reference axis located at the quarter chord line. Scale variables scale the cross-section by moving the four control points to expand or contract simultaneously. The FFD points across different blades are linked to ensure the same deformation for all blades.

Figure 10
figure 10

Geometry parametrization of a ducted turbine through the FFD method. Top: different views of the overall FFD setup, where the parental FFD box (black) controls the radial scales of both duct and blades, the child duct FFD box (red) controls the length of the duct, and the child blade (blue) FFD box controls the pitch/twist angles and sectional areas of the blades. Bottom: Closer views of the FFD setup for the blades.

The child FFD box for the duct contains 112 FFD points placed on seven sections, but overall only one variable is defined to control all FFD points to change the duct length l. When changing the duct length, all duct FFD points move in the axial direction with perturbations proportional to their distances from the throat. This movement is to ensure that the throat is consistently located at 26.4% of the overall duct length. Note that seven sections are not necessary. This choice is mainly for convenience during setup.

The parent FFD box handles the constraint (3f) on the tip-gap ratio and the condition \(D_\text {exit}=\sqrt{(4/\pi )A}=1.536\) m. Twenty-eight FFD points are placed on seven sections in the parent box, in which the FFD points for the last three sections are closely packed horizontally and remain stationary throughout the optimization, such that \(D_\text {exit}=\sqrt{(4/\pi )A}\) is guaranteed. The 16 FFD points on the first 4 sections from the duct inlet are used to control the duct diameters, i.e., design variables \(d_i\). As these FFD points move radially, the child FFD boxes (enclosed in the parent FFD box) deform and move the embedded surface geometry accordingly. Therefore, the constraint (3f) is automatically satisfied since the blade expands/contracts proportionally to the duct throat. This implementation of the complex FFD setup for ducted turbines, we believe, is a novel application.

Adjoint method for derivative computation

To compute the derivative of an objective function (in this case, the power coefficient \(C_P\)) with respect to design variables, the adjoint method46 is used. In order to clearly explain the adjoint method, notations are introduced first as follows: Let \(\varvec{x}\equiv \{ \{ \theta _i, b_i \}_{i=1}^{8}, \{d_j\}_{j=1}^{4}, l\} \in {\mathbb {R}}^{N_x}\) with \(N_x=21\) as the design variables. Let \(\varvec{s}\in {\mathbb {R}}^{M}\) be the state variables in the solution of the RANS-MRF equation. Here \(M \sim {\mathscr{O}}(10^7)\) includes three velocities and pressure at each cell in the computational grid. Our goal is to compute \(dC_P/d\varvec{x} \in {\mathbb {R}}^{21}\). If a finite-difference method is used to compute the derivative, one needs at least 22 CFD simulations for derivative computation, even with the lowest-order approximation. This is computationally prohibitive for our application.

For the adjoint method to compute \(dC_P/d\varvec{x}\), the first step is to write the function \(C_P(\varvec{x},\varvec{s}(\varvec{x}))\), and express its total derivative with respect to \(\varvec{x}\) as

$$\begin{aligned} \underbrace{\frac{dC_P}{d\varvec{x}}}_{1\times N_x}=\underbrace{\frac{\partial {C_P}}{\partial \varvec{x}}}_{1\times N_x}+\underbrace{\frac{\partial {C_P}}{\partial \varvec{s}}}_{1\times M}\underbrace{\frac{d\varvec{s}}{d\varvec{x}}}_{M \times N_x}, \end{aligned}$$
(8)

where \(\partial C_P/\partial \varvec{x}\) should be considered as the change of power coefficient \(C_P\) as the design variables (i.e., geometry) are varied, with flow solution \(\varvec{s}\) remaining unchanged. \(\partial C_P/\partial \varvec{s}\) is the change of \(C_P\) as the flow solution \(\varvec{s}\) changes with a fixed turbine geometry. These partial derivatives are relatively easy to compute, with more details presented in Supplementary Information E.

The term that is difficult to compute in Eq. (8) is \(d\varvec{s}/d\varvec{x}\). To compute it, one needs to further involve the RANS-MRF state equations in terms of their discretized residual form \(\varvec{R}(\varvec{x},\varvec{s}(\varvec{x}))=0\). Here \(\varvec{R}(\varvec{x},\varvec{s}(\varvec{x})) \in {\mathbb {R}}^M\) considering the same number of equations as the number of unknowns in \(\varvec{s}\). Since \(\varvec{R}(\varvec{x},\varvec{s}(\varvec{x}))\) should remain zero with a change of \(\varvec{x}\) (if the flow solution is correctly obtained), we have

$$\begin{aligned} \underbrace{\frac{d\varvec{R}}{d\varvec{x}}}_{M\times N_x}=0\Rightarrow \underbrace{\frac{\partial \varvec{R}}{\partial \varvec{s}}}_{M\times M}\underbrace{\frac{d\varvec{s}}{d\varvec{x}}}_{M\times N_x}=-\underbrace{\frac{\partial \varvec{R}}{\partial \varvec{x}}}_{M\times N_x}. \end{aligned}$$
(9)

Direct solution of Eq. (9) gives

$$\begin{aligned} \frac{d\varvec{s}}{d\varvec{x}} = -\underbrace{\left[ {\frac{\partial \varvec{R}}{\partial \varvec{s}}}\right] ^{-1}}_{M\times M}\underbrace{\frac{\partial \varvec{R}}{\partial \varvec{x}}}_{M\times N_x}. \end{aligned}$$
(10)

It is worthwhile to discuss the computational cost associated with Eq. (10) at this point. The matrix multiplication in Eq. (10) leads to a computational complexity of \({\mathscr{O}}(M^2 N_x)\) that is very expensive since \(M\sim {\mathscr{O}}(10^7)\) and \(N_x\) is also large. This has to be added by the cost to invert a \(M\times M\) matrix, which is, in general, more expensive. Even if one uses some iterative solver for linear systems to solve Eq. (9), the procedure needs to be repeated for \(N_x\) times since \(d\varvec{s}/d\varvec{x}\) (as well as the RHS) has \(N_x\) columns. The computation is, therefore, also very expensive.

On the other hand, the computational cost can be significantly reduced by simply substituting Eq. (10) to Eq. (8) and considering a re-grouping of the multiplications:

$$\begin{aligned} \underbrace{\frac{dC_P}{d\varvec{x}}}_{1 \times N_x}=\underbrace{\frac{\partial {C_P}}{\partial \varvec{x}}}_{1 \times N_x}-\left( \underbrace{\frac{\partial {C_P}}{\partial \varvec{s}}}_{1 \times M}\underbrace{\left[ {\frac{\partial \varvec{R}}{\partial \varvec{s}}}\right] ^{-1}}_{M \times M}\right) \underbrace{\frac{\partial \varvec{R}}{\partial \varvec{x}}}_{M \times N_x}. \end{aligned}$$
(11)

Instead of computing Eq. (10), the multiplication grouped in the parenthesis in Eq. (11) is computed first. This computation can be done by solving the so-called adjoint equation (the adjoint is equivalent to the transpose of a real matrix in our case)

$$\begin{aligned} \underbrace{\left[ {\frac{\partial \varvec{R}}{\partial \varvec{s}}}\right] ^{T}}_{M\times M}\underbrace{\varvec{\psi }}_{M\times 1}=\underbrace{\left[ \frac{\partial {C_P}}{\partial \varvec{s}}\right] ^{T}}_{M\times 1} \end{aligned}$$
(12)

whose solution transpose provides

$$\begin{aligned} \varvec{\psi }^{T}=\frac{\partial {C_P}}{\partial \varvec{s}}\left[ {\frac{\partial \varvec{R}}{\partial \varvec{s}}}\right] ^{-1} \end{aligned}$$
(13)

as the parenthesis term in Eq. (11).

The solution of Eq. (12) involves solving a linear system only once, instead of \(N_x\) times as needed for Eq. (9), and hence is much less expensive (also compared to the direct computation of Eq. (10)). The computational cost to solve Eq. (12) is generally similar to the RANS-MRF computation. Therefore, in each iteration of the optimization, the computational cost is in the same order as one RANS-MRF solution. The only remaining component is the calculation of partial derivatives \(\partial \varvec{R}/\partial \varvec{s}\) in Eq. (12), which can be found in Supplementary Information E with other derivatives mentioned above.

Volume mesh deformation

When marching to the next design point, the turbine geometry is deformed. The entire computational volume mesh is deformed accordingly.

The volume mesh deformation is computed based on the analytic inverse-distance weighting method51, implemented in the IDWarp package52. Given a 2D surface, for example, a blade surface, with N surface mesh nodes, the geometry deformation leads to the movement of each node. Two quantities \((M_i, b_i)\) are assigned for each node with \(i=1,2,...,N\), where \(b_i\) is the translation distance of the node and \(M_i\) is the rotation matrix such that \(n_i^{new}=M_i n_i^{old}\) with \(n_i^{new}\) and \(n_i^{old}\) the normal vectors at the node. In particular, both \(n_i\)’s are computed by a weighted average of the normal vectors for all surrounding cell faces of the node. After \((M_i, b_i)\) are obtained for \(i=1,2,...,N\), the deformation of any volume mesh can be computed by summing the contribution from each surface node, i.e., \(\Delta \varvec{r}=\sum _{i=1}^N w_i (M_i \varvec{r} + b_i - \varvec{r})\) with \(\varvec{r}\) being the coordinates of a volume node and \(\Delta \varvec{r}\) its movement. The weighting factor \(w_i\) has the empirical form51,52 that grows in a polynomial form with the inverse of the distance between the volume and surface nodes. Figure 11 shows the deformation of the computational mesh during a ducted turbine optimization as an example.

Figure 11
figure 11

Computational mesh deformation during the geometry deformation of a ducted turbine.

Results and discussion

In this section, the results of optimization (3) are presented, followed by re-evaluation using the higher-fidelity URANS solver, as well as discussions on the optimized geometry and flow mechanism. Before showing the optimization results, we present two additional studies conducted in our work.

The first is the validation of the RANS-MRF and the URANS-RS solvers with experimental data. Since we are unaware of systematic measurements of the performance of ducted hydrokinetic turbines, the experimental results of the unducted Bahaj turbine are used for validation. Figure 12 shows the power coefficient \(C_P\) and thrust coefficient \(C_T\) (the axial force on the turbine normalized by the momentum of the inflow) for the Bahaj turbine at a range of \(\lambda\), obtained from the RANS-MRF and the URANS-RS, in comparison with the experimental results9, all at experimental Reynolds number \(Re=1\times 10^{6}\). The RANS-MRF solver is run with a second-order numerical scheme for the convection term in the RANS equations, which will be changed in the optimization process as described later in detail. From Fig. 12, it is clear that for the unducted Bahaj turbine, both solvers predict similar results mostly consistent with the experimental data. The URANS solver seems more accurate in evaluating \(C_T\) for all \(\lambda\) and \(C_P\) at lower \(\lambda\) (e.g., the value on which our optimization is based).

Figure 12
figure 12

\(C_P\) as a function of \(\lambda\) for the unducted Bahaj turbine, from the experiment (blue square), the URANS-RS (\(\Delta\)), and the RANS-MRF (\(\nabla\)). The interpolations of the experimental results are shown by blue solid lines.

The second is a grid-search study with 5 design parameters using the RANS-MRF and coarse mesh (even coarser than M0) flow solvers that we conducted before the gradient-based optimization. This search, as detailed in Supplementary Information F, does not provide a successful design of the ducted hydrokinetic turbine with improved efficiency (compared to the unducted Bahaj model). This failure is very likely due to the low-dimensional parameter space, which is insufficient to explore effective designs. It also implies that designs with more parameters using a gradient-based method, as presented below, are necessary for designing complex geometries such as ducted turbines.

Optimization and Re-evaluation

The optimization problem (3) is solved using methods described in the Methods section. In the RANS-MRF solver, a first-order numerical scheme is used for computing the convective term (i.e., to construct the flux in cell faces). It should be noted that the first-order scheme is more dissipative than the normally-used second-order scheme, but the former is critical to obtain convergent flow solutions for many duct designs, especially those associated with flow separation. Specifically, upon extensive tests, the second-order scheme shows fluctuating flow solutions in many cases, which in turn affects the accuracy of the adjoint method, preventing an accurate gradient computation. On the other hand, while the first-order scheme may provide less accurate solutions for cases with separated flow, the obtained \(C_P\) is usually low for these cases and the optimization leads to designs with no flow separation and with improved efficiency. In each RANS-MRF simulation, we consider the solution converged as the residuals stop dropping, which in general occurs when residuals of momentum equation reach \({\mathscr{O}}(10^{-4}\sim 10^{-5})\).

Figure 13
figure 13

History of \(C_P\) for optimizations A (green) and B (blue). The URANS evaluation of \(C_P\) for optimized designs A and B is shown by diamond symbols. The restarting points are denoted as asterisks(\(*\)).

Figure 13 shows the change of \(C_P\) as the optimization progresses, starting from both baseline designs A and B (hereafter optimizations A and B). The two starting points yield \(C_P=25\%\) and \(41\%\), respectively, evaluated by the RANS-MRF. Both values are lower than the counterparts (\(28\%\) and \(45\%\)) reported earlier from the URANS-RS. The optimization of both baseline designs leads to a fast increase of \(C_P\) at the beginning until both \(C_P\) values (almost) plateau. The small bumps on both curves in Fig. 13 correspond to the restarting/re-meshing procedure. This re-meshing step is necessary because geometry deformations that are too large lead to mesh quality degradation and hence deteriorate the quality of the flow and adjoint solutions. A manual restarting/re-meshing procedure improves the optimization behavior, leading to additional increases of \(C_P\). Both optimizations A and B are stopped when the \(C_P\) value plateaus even with further restarting/re-meshing. In practice, we observe that this convergent situation corresponds to the SNOPT optimality metric47 of approximately \(10^{-1.7}\), which is consistent with cases in an unducted wind turbine optimization40. For such optimality conditions, although \(\nabla C_P\) does not become zero, the benefit of further optimizing the turbine can be compromised by the mesh deformation so some practical optimal points are reached. The two optimized designs yield similar values of \(C_P\), namely 0.4822 from A and 0.4782 from B achieved respectively at \(\lambda =6.39\) and \(\lambda =6.18\) (since the blade radius R is optimized, which affects \(\lambda\)).

Since the RANS-MRF is the low-fidelity solver (due to issues mentioned in the Methods section and the first-order convection scheme), we re-evaluate the optimized designs A and B using the high-fidelity URANS-RS. The obtained values from the URANS-RS on the M0 grid are added to Fig. 13, which yield \(54.6\%\) and \(52.9\%\) for the optimized designs A and B. Here, the difference between two solvers for ducted turbines (due to the complexity of the flow) is remarkably larger than that for unducted turbines as shown in Fig. 12.

Figure 14
figure 14

Torque on the blades (suction and pressure sides) of the optimized design A (left) and B (right) with the 3 grid resolutions.

Table 3 URANS-RS re-evaluation of the optimized design A (left) and B (right) with grid sensitivity studies, including cell numbers, \(C_P\), as well as \(y^+\) values on both duct and blades. These \(y^+\) values are in the applicable range of the automatic wall treatment (Supplementary Information A).

A grid sensitivity study is also conducted, which evaluates \(C_P\) for the optimized designs A and B using the URANS-RS on meshes M0, M1, and M2 with increasing resolution. In these URANS solutions, an adaptive time step is used (with an average time step of \(1\times 10^{-5}\) seconds, i.e., about \(0.01^{\circ }\) turbine rotation for 1 time step) with total simulation times of 15 seconds to reach the quasi-steady state. With the NSF Stampede2 cluster, the simulations using the M2 grid take about 240 hours on 576 CPUs. The results of \(C_P\) and torque distributions on the blades are shown respectively in Table 3 and Fig. 14. \(C_P\) values vary only by \({\mathscr{O}}(1\%)\) (in terms of the absolute value) and are not very sensitive to the large range of variation of grid resolutions. The torque distributions on the blades obtained from different meshes are also similar to each other and consistent with the similar \(C_P\) values. Based on results from M2, the two final designs yield similar \(C_P \approx 54\%\) that is much higher than \(46\%\) of the unducted Bahaj model (or standard unducted turbines).

Figure 15
figure 15

\(C_P\) as a function of \(\lambda\) for unducted Bahaj turbine (gray), optimized unducted turbine (dark gray), optimized ducted turbine A (green), and optimized ducted turbine B (blue). The design points (at a given rotating speed) are marked by stars.

We further evaluate \(C_P\) of the two optimized designs at a range of \(\lambda\) using URANS-RS with the M0 grid. The results are shown in Fig. 15 together with \(C_P\) of the unducted Bahaj model, as well as the optimized unducted turbine using the same setup. The unducted turbine is optimized for fixed \(\Omega = 21\) rad/s, corresponding to \(\lambda =6\). It is observed that the optimized ducted turbine designs not only work well for the designed value of \(\Omega\) but also perform with high efficiency for a large range of \(\lambda\). Moreover, the maximum \(C_P\) for each design is in fact not achieved at the designed \(\lambda\) (marked by stars in the figure) but at some larger value of \(\lambda\). Considering Fig. 15, the maximum \(C_P\) for the two designs are \(56\%\) and \(54\%\) achieved at \(\lambda =6.94\) and 6.99, respectively.

Figure 16
figure 16

Duct designs, including the baseline (black), optimized design A (green), and optimized design B (blue).

Figure 17
figure 17

Distributions of twists (top) and chord lengths (bottom) for baseline designs A (dashed green) and B (dashed blue), optimized designs A (solid green) and B (solid blue).

We finally examine the geometries of the optimized designs A and B. Figure 16 shows the optimized duct shapes of the two designs, laid on top of the baseline duct design19. Overall, it is observed that the optimized designs have shorter duct lengths and enlarged throat areas. The optimized design A has a duct with a length of 0.861 m (\(59.1\%\) reduction compared to the baseline ducted turbine) and a throat radius of 0.559 m (\(16.5\%\) increase). The optimized design B has a duct with a length of 1.350 m (\(35.9\%\) reduction compared to the baseline ducted turbine) and a throat radius of 0.554 m (\(15.5\%\) increase).

The twist and chord length profiles of the optimized/baseline designs are shown in Fig. 17. The chord lengths of the optimized designs do not vary much from the baseline, but significant changes occur in the twist profile through the optimization. Moreover, starting from drastically different twist profiles in baseline designs A and B, the two optimized designs converge to very similar twist distributions, especially for \(r/R>0.35\), where most torque is generated. Different geometries of the optimized designs A and B may indicate that there are two local optima in the design parameter space. Given the comparable performance despite the different duct lengths, we conclude that the blade twists and duct throat areas are the driving design parameters.

Analysis of flow mechanism

In this section, we analyze the flow fields of unducted turbines and baseline/optimized ducted turbines in order to understand the major flow mechanism leading to the improvement of performance. The optimized design A is used as an illustration. In Fig. 18, variations of some relevant performance metrics are shown together with the variation of \(C_P\) (first row) in the first 22 iterations of the optimization process (before the first restarting/re-meshing). These metrics include the flow rate J passing the turbine blades and the thrust coefficient \(C_T=T/(0.5\rho U_\infty ^2 A)\) on the duct and blades, shown respectively in the second, third, and fourth rows of Fig. 18.

Figure 18
figure 18

Variations of \(C_P\) (first row), flow rate J (second row), duct \(C_T\) (third row), and blade \(C_T\) (fourth row) in the first 22 iterations of the optimization. Three stages of the fast growth of \(C_P\), slow growth of \(C_P\), and plateau of \(C_P\) are marked by plus sign(+), asterisk(\(*\)), and cross(\(\times\)).

We also divide the 22 iterations of the optimization process into three stages I, II, and III, respectively: stages with the fast growth of \(C_P\) (marked by ‘+’ in the figure), slow growth of \(C_P\) (\(*\)), and plateau of \(C_P\) (\(\times\)). In stage I, while the duct \(C_T\) remains almost unchanged, the blade \(C_T\) increases rapidly. This is the most favorable situation to improve \(C_P\) since clearly more and more loading from the total is distributed on the blades. In stage II, this favorable variation of \(C_T\) cannot be maintained (i.e., its potential has been exhausted in stage I), and the opposite trend is observed with increased duct \(C_T\) and decreased blade \(C_T\). The further (slow) increase of \(C_P\) in stage II, therefore, must be associated with a different mechanism that is perhaps the more effective transition from blade loading to rotational motion (or torque). Both duct and blade \(C_T\) become unchanged in stage III as \(C_P\) plateaus. The overall increase of \(C_T\) in the whole process is \(14\%\) and the \(C_P\) increase is \(87\%\). This is another favorable feature of the current optimization since it would be much more demanding for supporting structures with a much higher \(C_T\). Finally, the flow rate J is highly correlated with \(C_P\) in the whole optimization process and increases constantly until its simultaneous plateau with \(C_P\).

Figure 19
figure 19

Streamlines in a flow tube passing the blades of (a) the optimized unducted turbine, (b) baseline design A, and (c) optimized design A.

The above analysis motivates further study on the flow rate metric, which remains consistent with the trend of \(C_P\) in the optimization process. In Fig. 19, flow is visualized for the optimized unducted turbine, baseline turbine A, and optimized turbine A, obtained in the quasi-steady solution from the URANS solver. To facilitate a fair comparison, only the streamlines in the flow tube that passes the turbine blades are shown. Since the inflow velocity is fixed at 1.4 m/s for all cases, the flow rate in the tube is proportional to the area of the tube at the inlet.

From Fig. 19, it is clear that the optimized design corresponds to the case with the largest flow tube inlet area. Physically, this indicates that a well-designed duct draws a larger volume of water (compared to unducted and baseline turbines) into the throat, which is accompanied by a higher flow rate (2.25 m\(^3\)/s compared to 1.80 m\(^3\)/s and 1.55 m\(^3\)/s for the other two cases) across the blades. This metric of flow rate is a more effective indicator of the ducted turbine performance, instead of the flow speed at the throat. As an example, the baseline design A is associated with an accelerated flow speed at the throat but not improved efficiency. This analysis explains the enhanced performance of the optimized ducted turbine through the improved flow conditioning provided by the duct, confirming the long-existing hypothesis in the field of hydrokinetic turbines.

Conclusions

In this paper, we conduct gradient-based design optimization of ducted hydrokinetic turbines using CFD and the adjoint method. Two baseline designs with drastically different performances are chosen as starting points of the optimization. The resultant designs for both cases yield similar performance with \(C_P\approx 54\%\) when evaluated by the high-fidelity URANS solver. Both designs capture similar critical geometrical features in terms of the duct throat area and blade twist profile. This value of \(C_P\) is 8% higher than standard unducted turbines, including the Bahaj model. Furthermore, it is demonstrated that the optimized designs not only achieve high \(C_P\) at the design rotational speed, but also yield high performance over a wide range of rotating speeds and thus \(\lambda\). Finally, we study the flow mechanism associated with performance improvement and show that \(C_P\) among different designs is correlated to the flow rates passing the turbine blades. The optimized design corresponds to the case with a maximum flow rate due to the suction of a well-designed duct.

The current work demonstrates the great potential of gradient-based optimization with the adjoint method in designing geometrically complex renewable energy devices such as ducted turbines. Nevertheless, the current optimized design needs further modifications for model tests and real-world applications. Two major issues of the current design are: (1) it has a thin-wall-shaped duct that is difficult to manufacture; (2) it does not include a hub that is necessary for installation. Both issues result from the limitation of the FFD method for geometry parametrization that one needs to improve for better designs. We are now working on a geometry parametrization based on Engineering Sketch Pad (ESP)53, which can, in principle, address the above two issues. With the ESP method replacing the FFD method, it is expected that the next-round design will result in some geometry that is ready for a model test in the towing tank at the University of Michigan.