1 Introduction

Spatially periodic domains arise in almost every area of fluid dynamics. To name but a few applications, flows through periodic domains have been used to model the beating of motile cilia [70], vesicle suspensions in confined flows [55], and sedimentation of small particles [63]. Modern aerofoil designs exploit periodic features in the form of drag-reducing riblets [40] and noise-reducing serrations [4]. In other aerospace applications, individual turbomachinery stages may be modelled as periodic “cascades” of aerofoils [8, 64], thereby permitting both aerodynamic [5, 62] and aeroacoustic [42, 58] analyses. Superhydrophobic surfaces are often manufactured with patterned longitudinal periodic arrays of ridges [23, 35, 51], and porous media can be represented as arrays of periodically spaced pores [11, 65]. In summary, the accurate and versatile mathematical modelling of flows through periodic domains has applications in a wide range of fluid mechanical scenarios. In this article, we provide a constructive procedure for the calculation of such flows, i.e. a calculus for flows in periodic domains.

Typically, the solution of a 2-D potential flow problem require two steps [1]: (i) a conformal mapping from a (multiply connected) canonical circular domain to the physical periodic target domain of interest, and (ii) the solution of the potential flow problem inside the circular domain. Due to the invariance of Laplace’s equation under conformal mappings, these two steps combine to solve the full flow problem in the physical domain [50]. We adopt an analogous approach in our work and accordingly there are two objects to obtain in our calculus: the conformal mapping and the potential flow solution. Historically, conformal mappings have been restricted to simply or doubly connected domains, and almost always without periodicity. The archetypal example is the Joukowski mapping [49] which relates the unit disc to a Joukowski-type aerofoil. The extension of potential theory to general multiply connected domains came about in the early 2000s through the identification of the Schottky–Klein prime function [9] as a fundamental object associated with multiply connected domains [15, 18, 19, 29, 30]. The prime function has also found relevance in fluid mechanics problems since Crowdy [20] presented a “new calculus of vortex dynamics” to enable the calculation of 2-D potential flows in multiply connected domains. This present paper is a natural sequel of that work and we present an extension of [20] to periodic domains. Similarly to [20], an appealing feature of our solutions is that they are valid for multiply connected domains, i.e. multiple boundaries per period window. In fact, using the prime function allows us to express the solutions in a consistent manner regardless of connectivity. The relevant theory of the prime function is thoroughly summarised in a recent monograph by Crowdy [25], complete with a huge range of applications and exercises.

The authors were motivated towards this study by a need to calculate the potential flow through a cascade of aerofoils to analyse turbomachinery noise [6]. In previous work we found an asymptotic solution in the thin aerofoil limit where the angle of attack and aerofoil aspect ratio are assumed to be small [5]. While that solution offers physical insight in the form of asymptotic expansions, it is limited to a small class of aerofoil geometries, and only a single boundary per period window. Conversely, the solutions we present in this paper are valid for any geometry (provided the appropriate conformal mapping is available), and can account for multiple boundaries per period window. Moreover, the new solutions here can account for more sophisticated potential flow phenomena than the simple uniform flow previously considered.

The remainder of the article is arranged as follows. In Sect. 2, we present the mathematical formulation of our problem and introduce the key mathematical objects. We define the canonical circular domain in Sect. 2.1 and the periodic target domains in Sect. 2.2. In particular, we differentiate between three possible types of target domain and present the functional forms of the conformal mappings from a circular domain to these three domains in Sect. 2.3. In doing so, we introduce the Schottky–Klein prime function (Sect. 2.3.4), which serves as an essential tool for constructing potential flows through multiply connected domains. We then proceed in Sect. 3 by calculating the potential flow within the multiply connected circular domain. We devote attention to the cases of uniform flow, straining flow, and circulatory flows, which require special treatment due to the periodicity of the target domain. Following this, we apply our calculus to the flow past a periodic array of slits in Sect. 4. Finally, we summarise our results in Sect. 5 and suggest applications and future lines of research.

2 Mathematical formulation

In this paper, we seek to construct 2-D potential flow solutions in periodic domains. We now introduce the main mathematical objects used to develop our solutions.

2.1 The canonical circular domain

We now define the canonical circular domain, denoted by \(D_\zeta \). We take \(D_\zeta \) to be the interior of the unit disc with M excised discs so that there are a total of \(M+1\) boundary circles. The unit disc is labelled as \(C_{0}\) and the excised discs are labelled as \(\left\{ C_{j} | j = 1, \dots , M \right\} \). The excised discs have centers \(\left\{ \delta _j | j = 1, \dots , M \right\} \) and radii \(\left\{ q_j | j = 1, \dots , M \right\} \). For example, in the simply connected case (\(M=0\)), the canonical circular domain is the unit disc. In the doubly connected case (\(M=1\)), the canonical circular domain may be taken to be a concentric annulus without loss of generality. A typical quadruply connected (\(M=3\)) circular domain is illustrated in Fig. 1. In general, every point on the circle \(C_j\) satisfies

$$\begin{aligned} |\zeta -\delta _j|^2 = (\zeta - \delta _j)(\overline{\zeta } - \overline{\delta }_j) = q_j^2. \end{aligned}$$
(1)

Moreover, every circle \(C_j\) has an associated Möbius map defined by

$$\begin{aligned} \theta _j(\zeta ) = \delta _j + \frac{q_j^2 \zeta }{1 - \overline{\delta }_j \zeta }. \end{aligned}$$
(2)

These Möbius maps have a specific geometrical meaning. For \(j>0\), we define \(C_j^\prime \) to be the circle obtained by reflecting the circle \(C_j\) in the unit disc \(C_0\). Using (1), it is possible to show that the image of \(C_j^\prime \) in the Möbius map \(\theta _j\) is simply the circle \(C_j\). Therefore, each Möbius map \(\theta _j\) represents the reflection of the disc \(C_j^\prime \) in the unit circle \(|\zeta | = 1\).

Fig. 1
figure 1

A multiply connected circular domain \(D_\zeta \) for \(M=3\). \(C_{0}\) denotes the unit circle and \(\left\{ C_{j}| j = 1, 2, 3\right\} \) denote the boundaries of the excised discs with centers \(\delta _j\) and radii \(q_j\). The grey colour denotes regions that are outside the domain of definition (colour figure online)

The structure of the branches in the circular domain is dependent on the periodic target domain defined below: for type I domains there are two interior branch points, for type II there is only one interior branch point, and for type III there are zero interior branch points although two interior circles are connected by a branch cut. This structure is illustrated on the left hand side of Fig. 2.

2.2 The target domain

Every singly periodic domain belongs to one of three types, as illustrated on the right hand side of Fig. 2: type I, where the period window is unbounded in two directions; type II, where the period window is unbounded in only one direction; and type III, where the period window is bounded in every direction. We term the periodic domain of interest the “target domain”. Moreover, each of these types may be related to a canonical circular domain with an appropriate branch structure, as illustrated on the left hand side of Fig. 2. The circular domain is discussed in more detail in Sect. 2.1. The target domain period window consists of an arrangement of identical with period \(\mathcal {P}\). In this paper, we assume that \(\mathcal {P}\) is real, although complex periods may be obtained through an elementary rotation. The target domain period window consists of \(M+1\) boundaries which we label \(\left\{ L_j\; | \; j = 0,\ldots , M \right\} \). We label the target domain \(D_z\) and endow it with complex coordinate z.

Fig. 2
figure 2

The preimage and target domains in type I, II and III domains in the case \(M=2\). The preimages of \(\pm \text {i}\infty \), if they exist in the target domain, are at \(a_{\infty ^\pm }\) or \(a_{\infty }\). The branch cut is denoted by the light blue curve (colour figure online)

2.3 Periodic conformal mappings

In the present work, we consider mappings from multiply connected circular domains (labelled \(D_\zeta \)) to target period windows of singly periodic domains (labelled \(D_z\)), as illustrated in Fig. 2. In this section, we present the prototypical form of each type of mapping, along with simple examples to aid intuition. In Sect. 2.3.5, we recapitulate a constructive formula for computing mappings to polygonal domains.

2.3.1 Type I periodic conformal mappings

Type I periodic geometries are unbounded in two directions; a typical type I geometry and its corresponding canonical circular domain are illustrated in Fig. 2a. Accordingly, the mapping function \(f(\zeta )\) must contain precisely two branch points in the circular domain \(D_\zeta \): one that is mapped to \(+\text {i}\infty \), which we denote \(a_{\infty ^+}\), and another that is mapped to \(-\text {i}\infty \), which we label \(a_{\infty ^-}\). Moreover, these branch points must have equal and opposite coefficients, otherwise the mapping does not have the correct multi-valued structure. For period \(\mathcal {P}\), we may express every type I mapping in the general form

$$\begin{aligned} f(\zeta ) = \frac{\mathcal {P}}{2 \pi \text {i}} \log \left( \frac{\zeta - a_{\infty ^+}}{\zeta - a_{\infty ^-}}\right) + \tilde{f}(\zeta ), \end{aligned}$$
(3)

where \(\tilde{f}\) is analytic in \(D_{\zeta }\). It is straightforward to check that winding anti-clockwise around \(\zeta = a_{\infty ^\pm }\) yields an increase in f of \(\pm \mathcal {P}\) per loop. Type I mappings have found relevance in the study of superhydrophobic surfaces [21], where the mappings were used to derive frictional slip lengths for grooved surfaces. Additionally, these mappings have been applied to find analytic solutions for free boundary problems, including von Kármán streets of hollow vortices [27] for both simply connected and doubly connected domains, and arrays of bubbles in Hele-Shaw cells [68, 69]

Perhaps the most simple type I periodic conformal mapping is

$$\begin{aligned} f(\zeta ) = \frac{\mathcal {P}}{\pi } \left( \arctan \left( \frac{\zeta }{a_{\infty }}\right) - \arctan (\zeta a_{\infty })\right) , \end{aligned}$$
(4)

where we have taken \(a_\infty = a_{\infty ^+} = -a_{\infty ^-}\) to be any point inside the unit disc. The mapping (4) transplants the unit disc to a periodic array of vertical slits with period \(\mathcal {P}\). This mapping and its variants have been previously applied in turbomachinery studies to calculate the background potential flow through a cascade of flat plate aerofoils [42, 57, 62]. The approach presented herein allows more general studies to be conducted, using alternative flow phenomenon and higher connectivities.

Some new periodic slit maps for type I geometries are presented in Appendix B.1.

2.3.2 Type II periodic conformal mappings

Type II periodic geometries are unbounded in one direction; a typical type II geometry and its corresponding canonical circular domain are illustrated in Fig. 2b. Consequently, the mapping function \(f(\zeta )\) must contain precisely one branch point in the circular domain \(D_\zeta \). We may express every type II mapping in the general form

$$\begin{aligned} f(\zeta ) = \frac{\mathcal {P}}{2 \pi \text {i}} \log \left( \zeta - a_{\infty }\right) + \tilde{f}(\zeta ), \end{aligned}$$
(5)

where \(\tilde{f}\) is analytic in \(D_{\zeta }\). It is straightforward to check that winding anti-clockwise around \(\zeta = a_{\infty }\) yields an increase in f of \(\mathcal {P}\) per loop.

Type II mappings have previously been used to study the interaction of a vortex street with a shear flow in [32], and free surface Euler flows in [14]. In the simply connected case, [45] found an analogous form of the Schwarz–Christoffel formula to type II geometries, although the preimage domain in that case was the upper half-plane \(\mathfrak {I}[\zeta ]>0\).

The most simple type II periodic conformal mapping is

$$\begin{aligned} f(\zeta )&= \frac{\mathcal {P}}{2 \pi \text {i}} \log \left( \frac{\zeta - a_{\infty }}{|a_\infty | (\zeta - 1/\overline{a_\infty })}\right) , \end{aligned}$$
(6)

for any \(a_\infty \) inside the unit disc. The mapping (6) transplants the unit disc to the upper-half plane in periodically repeated strips.

A new periodic slit map for type II geometries is presented in Appendix B.2.

2.3.3 Type III periodic conformal mappings

Type III periodic geometries are bounded in both directions; a typical type III geometry and its corresponding canonical circular domain are illustrated in Fig. 2c. Consequently, the mapping function \(f(\zeta )\) cannot contain any branch points in the circular domain \(D_\zeta \). Instead, branch points are located at \(\infty \) and at some \(\gamma \) which we take to be inside the circle \(C_1\). Therefore, the branch cut passes through the boundary circle \(C_0\) and the boundary circle \(C_1\). Accordingly, type III mappings may only exist when there is at least one excised circle (\(M>0\)). For period \(\mathcal {P}\), we may express every type III mapping in the general form

$$\begin{aligned} f(\zeta ) = \frac{\mathcal {P}}{2 \pi \text {i}} \log \left( \zeta - \gamma \right) + \tilde{f}(\zeta ), \end{aligned}$$
(7)

where \(\gamma \) is located inside \(C_1\) and \(\tilde{f}\) is analytic in \(D_{\zeta }\). It can be verified that winding anti-clockwise around \(C_0\) and \(C_1\) results in an increase in f of \(\mathcal {P}\) per loop. The main difference between the type III mapping (7) and the type II mapping (5) is that the preimage of infinity is now located inside one of the boundary circles.

Type III mappings have been applied to study steady capillary waves on an annulus [13], and to derive effective slip lengths for superhydrophobic surfaces [24]. Additionally, Floryan [43] derived the Schwarz–Christoffel formula for type III geometries, although the preimage domain was a horizontal channel \(0<\mathfrak {I}[\zeta ]<h\). The most straightforward type III mapping relates the concentric annulus to a periodic channel. Such a mapping takes the functional form

$$\begin{aligned} f(\zeta )&= \frac{\mathcal {P}}{2 \pi \text {i}} \log (\zeta ). \end{aligned}$$

When the annulus is of interior radius q, \(C_0\) is mapped to the real axis and \(C_1\) is mapped to the upper wall of the channel at a height of \(\mathcal {P}\log (q)/(2 \pi \text {i})\).

A new periodic slit map for type III geometries is presented in Appendix B.3.

2.3.4 The Schottky–Klein prime function

The primary mathematical object in this paper is the “Schottky–Klein prime function”. In particular, we will use this “prime function” to construct both the conformal mappings from the circular domain to the target domain and the complex potential in the circular domain. While the prime function is well known in the context of Abelian functions [9], its relevance in the context of fluid dynamics problems has only been elucidated relatively recently [18, 20, 29]. The prime function is a transcendental analytic function associated with a particular canonical circular domain, such as that illustrated in Fig. 1. For brevity, we suppress the dependence of the prime function on the conformal moduli (\(q_j\) and \(\delta _j\)) and write it as a bivariate function \(\omega (\zeta , \alpha )\).

For example, in the case \(M=0\) where the canonical circular domain is the unit disc, the prime function is simply defined as

$$\begin{aligned} \omega (\zeta ,\alpha )=\zeta - \alpha . \end{aligned}$$

In the doubly connected case (\(M=1\)), the canonical circular domain is the annulus

$$\begin{aligned} \zeta = r \text {e}^{\text {i}\theta } ,\quad q\le r\le 1,\quad 0\le \theta <2 \pi \end{aligned}$$

and the prime function may be written as

$$\begin{aligned} \omega (\zeta , \alpha ) = -\frac{\alpha }{C^2} P(\zeta /\alpha ,q), \end{aligned}$$

where

$$\begin{aligned} P(\zeta ,q)&= \left( 1- \zeta \right) \prod _{k=1}^{\infty } \left( 1 - q^{2k} \zeta \right) \left( 1- q^{2k} \zeta ^{-1}\right) ,\\ C&= \prod _{k=1}^\infty (1 - q^{2k}). \end{aligned}$$

In the more general multiply connected case, the prime function may be expressed as the infinite product

$$\begin{aligned} \omega (\zeta ,\alpha ) = (\zeta -\alpha ) \prod _{\theta \in \Theta ^{\prime \prime }} \frac{(\zeta - \theta (\alpha ))(\alpha - \theta (\zeta ))}{(\zeta - \theta (\zeta ))(\alpha - \theta (\alpha ))}, \end{aligned}$$
(8)

where \(\Theta ^{\prime \prime }\) represents the Schottky group (which is the collection of all Möbius maps \(\theta _j\) defined in (2)) excluding the identity and all inverses [30]. It is possible to prove several salient properties of the prime function using the definition (8). Firstly, \(\omega (\zeta ,\alpha )\) is analytic everywhere inside \(D_\zeta \) with a simple zero at \(\zeta = \alpha \). Secondly, the prime function is skew-symmetric so

$$\begin{aligned} \omega (\zeta , \alpha ) = - \omega (\alpha , \zeta ), \end{aligned}$$

and its conjugate satisfies

$$\begin{aligned} \overline{\omega } \left( \frac{1}{\zeta }, \frac{1}{\alpha }\right)&= -\frac{1}{\zeta \alpha } \omega (\zeta , \alpha ), \end{aligned}$$

where the conjugate function is defined by \(\overline{\omega }(\zeta ,\alpha ) = \overline{\omega (\overline{\zeta },\overline{\alpha })}\). Finally, the prime function transforms under the Möbius maps \(\theta _j\) as

$$\begin{aligned} \frac{\omega (\theta _j(\zeta ),\alpha _1)}{\omega (\theta _j(\zeta ),\alpha _2)}&= \beta _j(\alpha _1,\alpha _2) \frac{\omega (\zeta ,\alpha _1)}{\omega (\zeta ,\alpha _2)}, \end{aligned}$$

where the functions \(\beta _j\) are defined in [30].

In practice, the poor convergence properties of (8) mean that it is rarely advisable to use this product definition in numerical computations. Moreover, it is not even guaranteed that the infinite products in (8) converge for all choices of multiply connected domains. Alternatively, recent algorithms presented by [28] provide a rapid and reliable scheme with which to compute the prime function, and a numerical implementation in Matlab is available at https://github.com/ACCA-Imperial/SKPrime. The approach of [28] is to express the prime function as the solution to a boundary value problem which can be solved with standard numerical methods. This approach supersedes the previous method of [31] where the prime function was expanded into a Fourier–Laurent expansion about the centers of the excised circles.

A comprehensive treatment of the prime function may be found in a recent monograph [25].

2.3.5 The periodic Schwarz–Christoffel formula

Although the extended Riemann mapping theorem guarantees the existence of a conformal mapping between two domains of the same connectivity, it is often difficult to construct such a mapping in practice. Schwarz–Christoffel (S–C) formulae are useful tools for generating such mappings, as they represent constructive tools that furnish a conformal mapping to a desired target domain. Typically, S–C mappings provide a conformal mapping between a canonical domain (taken to be circles in the present work) and a polygonal domain, although there are extensions available for polycircular arc domains [26], gear-like regions [47], and curved regions [44]. Although the mappings are explicit, every S–C mapping is subject to a family of accessory parameters that must, in general, be determined numerically. A great deal of work has been devoted to solving this “parameter problem”, and a comprehensive review is available in [39]. In particular, the Matlab program sc-toolbox (https://github.com/tobydriscoll/sc-toolbox) allows the rapid computation of S–C mappings through the use of several novel numerical algorithms [37, 38].

Historically, Schwarz–Christoffel mappings were typically restricted to simply connected domains. A major advance came about in the early 2000s when two groups of researchers independently extended the S–C mapping formulae to consider multiply connected domains [15, 17, 36]. The latter has an advantage over the former insofar as the mapping formula is written explicitly in terms of the aforementioned Schottky–Klein prime function. Further work has been done to solve the parameter problem in multiply connected domains [53]. Recent work [7] has further extended the original S–C mapping to permit target domains that are periodic. Similarly to other work by Crowdy [15, 17], the mapping formula is phrased in terms of the Schottky–Klein prime function. Consequently, the formula is valid for any number of objects per period window. The mapping formula is given by (6.3) in [7] as

$$\begin{aligned} f(\zeta ) = A \int _1^\zeta S_{P} (\zeta ^\prime ) \prod _{j=0}^M \prod _{k=1}^{n_j} \left[ \omega \left( \zeta ^\prime ,a_k^{(j)}\right) \right] ^{\beta ^{(j)}_{k}} \text {d}\zeta ^\prime + B, \end{aligned}$$
(9)

where \(\beta ^{(j)}_k\) is the k-th turning angle on the j-th circle and \(a_k^{(j)}\) are the pre-images of the vertices, which must generally be determined numerically. The constant A represents a scaling and rotation, and B represents a translation. The definition of the function \(S_P\) is dependent on the type of mapping. In type I mappings, \(S_P\) possesses simple poles at \(a_{\infty ^\pm }\) so that, when integrated, there are branch points at \(a_{\infty ^\pm }\). The original S–C mapping is recovered in the limit where \(a_{\infty ^\pm } \rightarrow a_\infty \) and the two branch points coalesce to form a simple pole at \(\zeta =a_\infty \), thereby rendering the map non-periodic. Conversely, in type II mappings \(S_P\) only possesses a single pole (at \(a_\infty \)) whereas in type III mappings \(S_P\) contains no poles in \(D_\zeta \).

Now that we have presented the functional forms of periodic conformal mappings, we present our procedure for constructing the potential flow in the circular domain.

3 Constructing the complex potential

In this section, we adapt the work of [20] to enable the calculation of complex potentials for flows in periodic domains with multiple objects per period window. An incompressible and irrotational flow possesses a complex potential \(w=\phi +\text {i}\psi \) where \(\phi \) and \(\psi \) are the velocity potential and streamfunction, respectively. Additionally, the complex potential is harmonic so

$$\begin{aligned} \nabla ^2_z w = 0, \quad z \in D_z. \end{aligned}$$

We write the complex potential in the \(\zeta \)-plane as \(W(\zeta ) = w(f(\zeta ))\).

Constructing the complex potential for a simply connected domain is relatively straightforward upon use of the Milne-Thomson circle theorem [10]. However, problems in multiply connected domains are not subject to the same analysis, and the complex potential must be phrased in terms of the Schottky–Klein prime function. In this section, we present the complex potentials for flow singularities (including point vortices, source-sink pairs, vortex spirals and doublets), flows induced by moving boundaries, uniform flows, higher-order flows, and circulatory flows. The analytic solutions for singularities and moving boundaries are essentially equivalent to the non-periodic analysis by [20], and do not require modification. Nevertheless, these solutions have not previously been applied to periodic domains and therefore we reiterate the original solutions by Crowdy. Conversely, the solutions for uniform flows, higher-order flows and circulatory flows must be modified to account for the periodicity of the domain. Each type of periodic geometry must be considered individually, although the solutions are all valid for arbitrary connectivities.

3.1 Singularities

Singularities embedded in a potential flow are frequently employed to model a host of physical phenomena. In particular, point vortices are commonly used to represent discretised vorticity, which finds relevance in geophysical fluid dynamics [66], unsteady aerodynamics [34], and aeroacoustics [48]. Accordingly, the dynamics of point vortices has been described as a “classical mathematics playground” by [3]. The advantage of modelling vorticity as point vortices is that the vorticity equation is replaced with a system of ordinary differential equations, which are usually far easier to solve numerically. The trajectories of more general classes of singularities—sources and sinks, doublets etc.—can also be computed using the approach advocated by [54]. In this section, we recapitulate the complex potential for different types of singularities in multiply connected domains.

3.1.1 Complex potential for point vortices, \(W_V\)

A fundamental object in constructing potential flows in multiply connected domains is the Green’s function, \(G_0\), which satisfies

$$\begin{aligned} \nabla ^2 G_0(\zeta ,\alpha ) = -\delta (\zeta -\alpha ) ,\quad \text {for}\quad \zeta \in D_{\zeta }, \end{aligned}$$
(10)

in addition to the requirement that the imaginary part of \(G_0\) takes constant values on every boundary circle \(C_j\), \(j=0, \ldots ,M\). Consequently, \(G_0\) represents the complex potential induced by a unit strength point vortex at \(\alpha \) with a no-flux condition on every boundary. For a circular domain of arbitrary connectivity, such as that illustrated in Fig. 1, Crowdy [29] showed that the Green’s function takes the form

$$\begin{aligned} G_0(\zeta ,\alpha ) = \frac{1}{2 \pi \text {i}} \log \left( \frac{\omega (\zeta ,\alpha )}{\left| \alpha \right| \omega (\zeta , 1/\overline{\alpha })}\right) . \end{aligned}$$
(11)

Furthermore, \(G_0\) produces a circulation of \(-1\) around \(C_0\) and zero circulation around \(C_j\), \(j = 1, \ldots , M\) . As we will explore in Sect. 3.5, it is often desirable to modify the circulation around the boundaries. However, while \(G_0\) can change the circulation around \(C_0\), it cannot affect the circulation around any of the other boundary circles. The circulations around \(C_j\), \(j= 1, \ldots , M\) may be changed by introducing the modified Green’s function

$$\begin{aligned} G_j(\zeta ,\alpha ) = \frac{1}{2 \pi \text {i}} \log \left( \frac{\omega (\zeta ,\alpha )}{\left| \alpha \right| \omega (\zeta , \theta _j(1/\overline{\alpha }))}\right) . \end{aligned}$$
(12)

The modified Green’s function \(G_j\) produces \(+1\) circulation around \(C_j\) and zero circulation around \(C_i\), for \(i = 0, \ldots , j-1, j+1, \ldots M\). We will use this fact later to construct flows with specified circulations around each object, thereby satisfying the Kutta condition.

Since the problem is linear, we may construct the complex potential induced by n vortices of strength \(\kappa _k\) located at \(\alpha _k\) in the circular domain by writing

$$\begin{aligned} W_{V}(\zeta ; \mathbf {\alpha })&= \sum _{k=1}^n \kappa _k G_{j_k}(\zeta , \alpha _k) \nonumber \\&= \frac{1}{2 \pi \text {i}}\sum _{k=1}^n \kappa _k \log \left( \frac{\omega (\zeta , \alpha _k)}{\left| \alpha _k\right| \omega (\zeta , \theta _{j_k} \left( 1/ \overline{\alpha _k}\right) )}\right) . \end{aligned}$$
(13)

In many applications each object must have a specific circulation. The circulation around each object may be changed, without affecting other properties of the flow, by placing point vortices at one of the preimages of infinity. For instance, we may remove the circulation around every object by placing appropriately tuned vortices at, for example, \(a_{\infty ^-}\), resulting in

$$\begin{aligned} W_{V}(\zeta ;\mathbf {\alpha }, a_{\infty ^-})&= \sum _{k=1}^n \kappa _k \left( G_{j_k}(\zeta , \alpha _k) - G_{j_k}(\zeta , a_{\infty ^-}) \right) \nonumber \\&= \frac{1}{2 \pi \text {i}}\sum _{k=1}^n \kappa _k \log \left( \left| \frac{a_{\infty ^-}}{ \alpha _k} \right| \cdot \frac{\omega (\zeta , \alpha _k)}{\omega (\zeta , a_{\infty ^-})} \cdot \frac{ \omega (\zeta , \theta _{j_k} \left( 1/ \overline{a_{\infty ^-}}\right) )}{\omega (\zeta , \theta _{j_k} \left( 1/ \overline{\alpha _k}\right) )}\right) . \end{aligned}$$
(14)

3.1.2 Complex potential for a source-sink pair, \(W_{P}\)

The complex potential for a source-sink pair of strength m is given by [22] as

$$\begin{aligned} W_P(\zeta ;\alpha ,\beta ) = \frac{m}{2 \pi } \log \left( \frac{\overline{\alpha } \beta }{\left| \alpha \beta \right| } \cdot \frac{\omega (\zeta ,\alpha ) \omega (\zeta ,\overline{\alpha }^{-1})}{\omega (\zeta , \beta ) \omega (\zeta , \overline{\beta }^{-1})}\right) , \end{aligned}$$
(15)

where the source is located at \(\alpha \) and the sink is located at \(\beta \) in the circular domain. Additionally, \(W_P\) induces zero circulation around every boundary.

3.1.3 Complex potential for a vortex spiral, \(W_{R}\)

The complex potential for vortex spirals at \(\alpha \) and \(\beta \) in a circular domain are obtained by combining a source-sink pair (15) with two point vortices:

$$\begin{aligned} W_R(\zeta ;\alpha ,\beta )&= \frac{m}{2 \pi } \log \left( \frac{\overline{\alpha } \beta }{\left| \alpha \beta \right| } \cdot \frac{\omega (\zeta ,\alpha ) \omega (\zeta ,\overline{\alpha }^{-1})}{\omega (\zeta , \beta ) \omega (\zeta , \overline{\beta }^{-1}))}\right) \nonumber \\&\quad + \frac{\Gamma }{2 \pi \text {i}} \log \left( \frac{|\beta |}{|\alpha |} \cdot \frac{\omega (\zeta , \alpha )\omega (\zeta ,\overline{\beta }^{-1})}{\omega (\zeta ,\beta )\omega (\zeta , \overline{\alpha }^{-1})}\right) . \end{aligned}$$
(16)

The complex potential \(W_R\) produces zero circulation around every boundary.

3.1.4 Complex potential for a doublet, \(W_D\)

The complex potential for a doublet of unit strength at angle \(\lambda \) at \(\zeta = \beta \) in a circular domain is given by [20] as

$$\begin{aligned} W_D(\zeta ;\lambda ,\beta ) = 2 \pi \text {i}\left[ \text {e}^{\text {i}\lambda } \frac{\partial G_0}{\partial \overline{\alpha }}- \text {e}^{-\text {i}\lambda } \frac{\partial G_0}{\partial {\alpha }}\right] _{\alpha = \beta }. \end{aligned}$$

It is possible to show that \(W_D\) has a simple pole at \(\zeta = \beta \) such that

$$\begin{aligned} W_D(\zeta ; \lambda , \beta ) \sim \frac{\text {e}^{-\text {i}\lambda }}{\zeta - \beta }, \end{aligned}$$
(17)

as \(\zeta \rightarrow \beta \).

3.2 Complex potential for moving boundaries, \(W_B\)

In many applications, the boundaries in periodic domains are moving. In this case, the typical no-flux boundary condition requires modification. In particular, the kinematic boundary condition states that the normal velocity of fluid on a rigid surface must move at the same velocity as that surface. Consequently, we write

$$\begin{aligned} \mathbf {u}\cdot \mathbf {n}&= \mathbf {U}_j \cdot \mathbf {n} \quad \text {on}~L_j, \end{aligned}$$
(18)

where \(\mathbf {n}\) represents the normal direction, \(\mathbf {u}\) represents the fluid velocity, and \(\mathbf {U}_j\) represents the prescribed velocity of that boundary. In terms of the complex potential in the circular domain, (18) corresponds to

$$\begin{aligned} \mathfrak {I}\left[ W_{B}(\zeta ) \right] = T_j(\zeta ,\overline{\zeta }), \quad \zeta \in C_j,\quad j = 0, \ldots , M \end{aligned}$$

where \(T_j\) are functions relating to the specific motion of each body. For example, for rigid body motions, \(T_j\) takes the form (see “Appendix A”)

$$\begin{aligned} T_j(\zeta ,\overline{\zeta }) =\mathfrak {I}\left[ \dot{\bar{c}}_j(z(\zeta )-c_j) - \text {i}\frac{\dot{\theta }_j}{2} \left| z(\zeta )-c_j\right| ^2 \right] +d_j, \end{aligned}$$

where \(c_j\) is a point in the object \(L_j\) and \(\theta _j\) is the angle of rotation of \(L_j\) around \(c_j\), and \(d_j\) are constants that satisfy a compatibility condition to be defined below.

In other words, the problem is now to find an analytic function, \(W_B\) such that the imaginary part of \({W_B}\) equals \(T_j(\zeta ,\bar{\zeta })\) on the boundary of each circle \(C_j\). This is a form of the modified Schwarz problem, the solution to which has been given by [19] for a circular domain of arbitrary connectivity as

(19)

where E is an arbitrary real constant. In particular, \(W_B\) has zero circulation around each circle \(C_j\). The boundary data must also satisfy the compatibility condition (44).

The integral in (19) is taken over every boundary circle and can therefore be decomposed into contributions from each circle. Consequently, the solution to the modified Schwarz problem may also be expressed as

where \(\theta _j\) is the Möbius mapping associated with the j-th boundary circle as defined in (2). In the case \(M=0\) there is a single object per period window and the solution to the modified Schwarz problem is given by the Poisson formula [1]:

Furthermore, in the case \(M=1\) there are two boundaries per period window, and, when the canonical circular domain is the annulus \(q \le \left| \zeta \right| \le 1\), the solution is given by the Villat formula [2, 19]

where

$$\begin{aligned} K(\zeta )&= \frac{\zeta P_\zeta (\zeta ,q)}{P(\zeta ,q)}. \end{aligned}$$

3.3 Complex potential for uniform flows, \(W_U\)

We now present our solutions for uniform flows through periodic domains. At this point our solutions diverge from those of [20], and an alternative approach must be taken. In particular, each type of periodic geometry must be considered individually.

3.3.1 Uniform flows in type I geometries

We now consider the case of uniform flow through a type I geometry. In the physical plane, the complex potential \(w_U\) for uniform flow of strength U inclined at an angle of \(\chi \) to the horizontal satisfies

$$\begin{aligned}&\nabla ^2_z w_U(z) = 0 ,\quad z \in D_z, \end{aligned}$$
(20a)
$$\begin{aligned}&\mathfrak {I}\left[ w_{U}(z) \right] = c_j, \quad z \in L_j, \quad j = 0, \ldots , M, \end{aligned}$$
(20b)
$$\begin{aligned}&w_U(z) \sim U \text {e}^{- \text {i}\chi } z, \quad \text {as}~z \rightarrow \pm \text {i}\infty , \end{aligned}$$
(20c)

where \(c_j\) are some constants. We write the complex potential in the \(\zeta \)-plane as

$$\begin{aligned} w_U(z) = w_U(f(\zeta )) = W_U(\zeta ). \end{aligned}$$
(21)

Consequently, in the \(\zeta \)-plane, Eqs. (20a), (20b) and (20c) become

$$\begin{aligned}&\nabla ^2_\zeta W_U(\zeta ) = 0 ,\quad \zeta \in D_\zeta {\setminus } \left\{ a_{\infty ^\pm }\right\} , \end{aligned}$$
(22a)
$$\begin{aligned}&\mathfrak {I}\left[ W_{U}(\zeta ) \right] = c_j,\quad \zeta \in C_j,\quad j = 0, \ldots , M, \end{aligned}$$
(22b)
$$\begin{aligned}&W_U(\zeta ) \sim U \text {e}^{-\text {i}\chi } f(\zeta ), \quad \text {as}~\zeta \rightarrow a_{\infty ^\pm }. \end{aligned}$$
(22c)

Use of (3) transforms (22c) into

$$\begin{aligned} W_{U}(\zeta ) \sim \pm \frac{U \mathcal {P}}{2 \pi \text {i}} \text {e}^{- \text {i}\chi } \log (\zeta - a_{\infty ^\pm }),\quad \text {as}~\zeta \rightarrow a_{\infty ^\pm }. \end{aligned}$$
(23)

Using an approach analogous to that of section 6.2 of [20], we can construct the complex potential by taking linear combinations of point vortices (14) and source-sink pairs (15) located at the preimages of infinity. Note that the complex potentials for point vortices and source-sink pairs are analytic and take constant boundary values on each circle \(C_j\). Therefore, the complex potentials each satisfy (22a) and (22b). We must now strategically choose combinations of source-sink pairs and point vortices to achieve the correct asymptotic behaviour (22c). In particular, a unit strength source-sink pair has the asymptotic behaviour

$$\begin{aligned} W_P(\zeta ;a_{\infty ^+},a_{\infty ^-}) \sim \pm \frac{1}{2 \pi } \log (\zeta - a_{\infty ^\pm }), \end{aligned}$$
(24)

as \(\zeta \rightarrow a_{\infty ^\pm }\), whereas a unit strength point vortex has the asymptotic behaviour

$$\begin{aligned} W_V(\zeta ;a_{\infty ^\pm }) \sim \frac{1}{2 \pi \text {i}} \log \left( \zeta - a_{\infty ^\pm }\right) . \end{aligned}$$
(25)

as \(\zeta \rightarrow a_{\infty ^\pm }\). Comparison of (24) and (25) with (23) shows that we may write \(W_U\) as

$$\begin{aligned} W_U = U \mathcal {P}\left( -\sin (\chi ) W_{P}(\zeta ;a_{\infty ^+}, a_{\infty ^-}) + \cos (\chi ) \left[ W_V(\zeta ; a_{\infty ^+}) - W_V(\zeta ; a_{\infty ^-}) \right] \right) . \end{aligned}$$

Note that the no-flux condition (22b) remains satisfied since we have taken real, linear combinations of the complex potentials \(W_S\) and \(W_V\). In terms of the prime function, we may expand \(W_U\) into the form

$$\begin{aligned} W_U(\zeta ) = \frac{\mathcal {P}U}{2 \pi \text {i}}\left( \text {e}^{- \text {i}\chi } \log \left( \frac{\omega (\zeta , a_{\infty ^+}) }{\omega (\zeta , a_{\infty ^-})} \right) - \text {e}^{\text {i}\chi } \log \left( \frac{\omega (\zeta , 1/\overline{a_{\infty ^+}})}{ \omega (\zeta ,1/\overline{a_{\infty ^-}})} \right) \right) . \end{aligned}$$
(26)

The solution (26) is equivalent to that of appropriately tuned vortex spirals (16) located at \(a_{\infty ^\pm }\). It may be shown by analytic continuation and Liouville’s theorem that (26) is unique in satisfying (22a), (22b), and (22c). Moreover, \(W_U(\zeta )\) is single-valued as \(\zeta \) loops around any of the circles \(C_j\), which implies that each object has zero circulation [16]. Alternatively, (26) can be interpreted as a special form of the vortex spiral introduced in (16).

In the case where there is a single object per period window, we have \(M=0\) and (26) becomes

$$\begin{aligned} W_U(\zeta ) = \frac{\mathcal {P}U}{2 \pi \text {i}} \left( \text {e}^{- \text {i}\chi } \log \left( \frac{\zeta - a_{\infty ^+} }{\zeta -a_{\infty ^-}} \right) - \text {e}^{\text {i}\chi } \log \left( \frac{\overline{a_{\infty ^-}}}{\overline{a_{\infty ^+}}} \cdot \frac{\overline{a_{\infty ^+}}\zeta - 1}{ \overline{a_{\infty ^-}}\zeta -1}\right) \right) . \end{aligned}$$
(27)

3.3.2 Comparison to solution for non-periodic flows

We now show that the solution for uniform flow through a periodic domain (26) collapses to the solution for uniform flow through a non-periodic domain [20] in the large period limit. We take the limits \(a_{\infty ^\pm } \rightarrow a_{\infty }\), which corresponds to the two branch points in the conformal mapping coalescing to form a simple pole. Consequently, in this limit there is no branch cut and the mapping is not periodic. Taylor expanding the logarithms in (26) yields

$$\begin{aligned} \log \left( \frac{\omega (\zeta , a_{\infty ^+}) }{\omega (\zeta , a_{\infty ^-})} \right)&\sim \left( a_{\infty ^+} - a_{\infty ^-} \right) \frac{\omega _{\alpha } (\zeta , a_{\infty })}{\omega (\zeta , a_{\infty })} \nonumber \\&= 2 \pi \text {i}\left( a_{\infty ^+} - a_{\infty ^-} \right) \left[ \frac{\partial G_0}{\partial \alpha } \right] _{\alpha = a_{\infty }}, \end{aligned}$$
(28a)
$$\begin{aligned} \log \left( \frac{\omega (\zeta , 1/\overline{a_{\infty ^+}})}{ \omega (\zeta ,1/\overline{a_{\infty ^-}})} \right)&\sim \left( a_{\infty ^+} - a_{\infty ^-} \right) \frac{1}{\overline{a_{\infty }}^2} \frac{\omega _{\alpha }(\zeta , 1/\overline{a_{\infty }})}{\omega (\zeta , 1/\overline{a_{\infty }})} \nonumber \\&= 2 \pi \text {i}\left( a_{\infty ^+} - a_{\infty ^-} \right) \left[ \frac{\partial G_0}{\partial \overline{\alpha }} \right] _{\alpha = a_{\infty }}, \end{aligned}$$
(28b)

subject to addition of an arbitrary constant. The subscript \(\alpha \) indicates the derivative with respect to the second argument of the prime function. Substitution of (28a) and (28b) into (26) and rescaling \(\mathcal {P}= \tilde{\mathcal {P}}/ \left( a_{\infty ^-} - a_{\infty ^+} \right) \) yields

$$\begin{aligned} W_U(\zeta ) = 2 \pi \text {i}\tilde{\mathcal {P}}U \left[ \text {e}^{\text {i}\chi } \frac{\partial G_0}{\partial \overline{\alpha }} - \text {e}^{ -\text {i}\chi } \frac{\partial G_0}{\partial {\alpha }} \right] _{\alpha = a_{\infty }}, \end{aligned}$$

which is equivalent to the complex potential for uniform flow through a non-periodic system as detailed in section 6.2 of [20].

3.3.3 Uniform flows in type II geometries

The uniform flow for a type II geometry may be calculated in a similar fashion to that in Sect. 3.3.1 by strategically placing flow singularities in the circular domain. In a type II geometry, the flow angle in the far field is restricted to be parallel to the period. Therefore, the conditions on \(w_U\) are equivalent to (20a) and (20b), but (20c) is replaced with

$$\begin{aligned} w_U(z) \sim U z, \quad \text {as}~z \rightarrow +\text {i}\infty , \end{aligned}$$

since we assume the period to be real and positive. Accordingly, instead of placing a vortex spiral (16) at the preimage of infinity, we now place a point vortex (11) at the preimage of infinity and may therefore write the solution as

$$\begin{aligned} W_U(\zeta ) = \frac{U\mathcal {P}}{2 \pi \text {i}} \log \left( \frac{\omega (\zeta ,a_\infty )}{\left| a_\infty \right| \omega (\zeta , 1/\overline{a_\infty })}\right) . \end{aligned}$$
(29)

Note that this solution induces circulation \(U\mathcal {P}\) on the circle \(C_0\), which corresponds to the lower boundary of the target domain.

3.3.4 Uniform flows in type III geometries

Constructing the potential for a uniform flow in a type III geometry requires a different approach to that of type I and type II since the period window is bounded. Instead we construct a flow that has a specified circulation on the boundaries \(L_0\) and \(L_1\) of the period window. Additionally, since no point is mapped to infinity, there can be no singularities of the complex potential in the circular domain. We may express the complex potential for such a flow in the form

$$\begin{aligned} W_U(\zeta )&= U \mathcal {P}(G_1(\zeta ,\alpha ) - G_0(\zeta ,\alpha ))\nonumber \\&= \frac{U \mathcal {P}}{2 \pi \text {i}} \log \left( \frac{\omega (\zeta ,1/\overline{\alpha })}{\omega (\zeta ,\theta _1(1/\overline{\alpha }))}\right) , \end{aligned}$$
(30)

for any \(\alpha \in D_\zeta \), and where \(U \mathcal {P}\) is now the circulation on \(C_0\) and \(C_1\). Note that these quantities are related to the harmonic differentials \(v_1\) (also referred to as the first kind integrals) by lemma 5.1 of [28], which gives

$$\begin{aligned} G_1(\zeta , \alpha ) - G_0(\zeta ,\alpha ) = - v_1(\zeta ) + \overline{v_1(\alpha )} +\frac{1}{2} \tau _{11} + \frac{1}{2 \pi } \arg \left[ \frac{\alpha }{\alpha - \delta _1}\right] , \end{aligned}$$

where \(\tau _{11}\) is a constant.

The flux through a single period window is related to the circulation on \(C_0\) and \(C_1\). While the circulation is given by the jump in velocity potential on, for example, \(C_0\),

$$\begin{aligned} U = \bigg [\mathfrak {R}\left[ W_U \right] \bigg ]_{\zeta \in C_0}, \end{aligned}$$

the flux, Q, is given by the jump in streamfunction between \(C_0\) and \(C_1\):

$$\begin{aligned} Q = \bigg [\mathfrak {I}\left[ W_U\right] \bigg ]_{\zeta \in C_0}^{\zeta \in C_1}. \end{aligned}$$

In general, there are no closed form relationships between U and Q. However, in the doubly connected case for a concentric annulus of interior radius q, (30) becomes

$$\begin{aligned} W_U(\zeta ) = \frac{U\mathcal {P}}{2 \pi \text {i}} \log (\zeta ), \end{aligned}$$

and we may relate the flux to the circulation as

$$\begin{aligned} Q = \frac{U\mathcal {P}}{2 \pi } \log (q). \end{aligned}$$

3.4 Straining flows

Our calculus may also consider straining flows where the flow velocity tends to infinity in the far-field.

3.4.1 Straining flows in type I geometries

We consider a straining flow whose complex potential has the far-field behaviour

$$\begin{aligned} w_S^\pm (z) \sim \Omega _\pm \text {e}^{\text {i}\lambda _\pm } \text {e}^{\mp 2 \pi \text {i}z/\mathcal {P}}, \end{aligned}$$
(31)

as \(z \rightarrow \pm \text {i}\infty \) for real constants \(\Omega _\pm \), \(\lambda _\pm \). The flow speed increases exponentially as the distance from the boundaries increases. In the circular domain, (31) becomes

$$\begin{aligned} W_S^\pm (\zeta ) \sim \pm \Omega _{\pm } \frac{a_{\infty ^+} - a_{\infty ^-}}{\zeta - a_{\infty ^\pm }} \text {e}^{\text {i}(\lambda _\pm \mp 2 \pi \tilde{f}(a_{\infty ^\pm })/\mathcal {P})} \end{aligned}$$

as \(\zeta \rightarrow a_{\infty ^\pm }\). By comparison with (17), the complex potentials \(W_S^\pm \) may be constructed by taking appropriately placed doublets and writing

$$\begin{aligned} W_S^\pm (\zeta )&= \pm 2 \pi \text {i}\hat{\Omega }_{\pm } \left[ \left( \overline{ a_{\infty ^+} - a_{\infty ^-}} \right) \text {e}^{-\text {i}\hat{\lambda }}\pm \frac{\partial G_0}{\partial \overline{\alpha }} - \left( { a_{\infty ^+} - a_{\infty ^-} }\right) \text {e}^{\text {i}\hat{\lambda }}\pm \frac{\partial G_0}{\partial {\alpha }}\right] _{\alpha = a_{\infty ^\pm }} \end{aligned}$$
(32)

where

$$\begin{aligned} \hat{\Omega }_\pm&= \Omega _\pm \exp \left[ \pm 2 \pi \mathfrak {I}( \tilde{f}(a_{\infty ^\pm }))/\mathcal {P}\right] , \end{aligned}$$
(33)
$$\begin{aligned} \hat{\lambda }_\pm&= \lambda _\pm \mp 2 \pi \mathfrak {R}(\tilde{f}(a_{\infty ^\pm }))/\mathcal {P}. \end{aligned}$$
(34)

This solution also induces zero circulation about every boundary.

In an analogous way to Sect. 3.3.1 it may be shown that we recover the original straining flow solution of [20] in the limit where the period is large, i.e. \(a_{\infty ^\pm } \rightarrow a_{\infty }\). In the non-periodic case, the flow is straining in both directions at the same angle so we write \(\Omega _\pm = \Omega \) and \(\lambda _\pm = \lambda \) and consider the sum of the two solutions in (32). Rescaling \(\Omega = \tilde{\Omega }\mathcal {P}^2\) and \(\mathcal {P}= \tilde{\mathcal {P}}/(a_\infty ^+ - a_\infty ^-) \) and applying L’Hôpital’s rule then yields

$$\begin{aligned} W_S^{\pm }(\zeta ) = 2 \pi \text {i}\tilde{\Omega } \tilde{\mathcal {P}}^2 \left[ \text {e}^{-\text {i}\lambda } \frac{\partial ^2 G_0}{\partial \overline{\alpha }^2} - \text {e}^{\text {i}\lambda } \frac{\partial ^2 G_0}{\partial \alpha ^2} \right] _{\alpha = a_{\infty }}, \end{aligned}$$
(35)

which is equivalent to equation (32) of [20].

3.4.2 Straining flows in type II geometries

The complex potential for a straining flow in a type II geometry has the asymptotic behaviour

$$\begin{aligned} w_S(z) \sim \Omega \text {e}^{\text {i}\lambda } \text {e}^{-2 \pi \text {i}z/\mathcal {P}}. \end{aligned}$$
(36)

as \(z \rightarrow + \text {i}\infty \) for real constants \(\Omega \), \(\lambda \). The solution takes a similar form to that of (32):

$$\begin{aligned} W_S (\zeta ) = 2 \pi \text {i}\hat{\Omega } \left[ \text {e}^{\text {i}\hat{\lambda }} \frac{\partial G_0}{\partial \overline{\alpha }} - \text {e}^{-\text {i}\hat{\lambda }} \frac{\partial G_0}{\partial {\alpha }}\right] _{\alpha = a_{\infty }}, \end{aligned}$$

where

$$\begin{aligned} \hat{\Omega }&= \Omega \exp \left[ 2 \pi \mathfrak {I}( \tilde{f}(a_{\infty }))/\mathcal {P}\right] ,\\ \hat{\lambda }&= \lambda + 2 \pi \mathfrak {R}(\tilde{f}(a_{\infty }))/\mathcal {P}. \end{aligned}$$

3.4.3 Straining flows in type III geometries

We do not consider straining flows in type III geometries since the domain is bounded.

3.5 Complex potential for circulatory flows, \(W_\Gamma \)

Thus far, we have deliberately only constructed solutions with vanishing circulation around each object. The exception was the solution for point vortices introduced in Sect. 3.1.1, whose strengths affected the circulation around the boundaries. We now explain how to tune the circulation around each object in the absence of singularities in the flow.

3.5.1 Circulatory flows in type I geometries

In type I geometries, we may modify the circulation around each boundary by strategically placing vortices at the preimages of infinity. To change the circulation around \(C_j\), we use the modified Green’s functions which were introduced in (12). The complex potential for a circulatory flow in a periodic domain with no singularities in the flow is given by

$$\begin{aligned} W_\Gamma (\zeta )&= -\Gamma _0^+ G_0(\zeta , a_{\infty ^+}) -\Gamma _0^- G_0(\zeta , a_{\infty ^-})\nonumber \\&\quad + \sum _{j=1}^M \Gamma _j^- G_j(\zeta ,a_{\infty ^+}) +\Gamma _j^+ G_j(\zeta ,a_{\infty ^-}), \end{aligned}$$
(37)

for \(j = 0,\ldots , M\). The potential \(W_\Gamma \) induces circulation \(\Gamma _j = \Gamma _j^+ + \Gamma _j^-\) around each boundary \(L_j\). The reason for splitting \(\Gamma _j\) in two parts is connected to the fact that there are "two infinities" in our geometry. By placing vortices at \(a_{\infty ^\pm }\) we change the behaviour in the far field \(z \rightarrow \pm \text {i}\infty \), respectively. In particular, the far-field behaviour of \(w_\Gamma \) is

$$\begin{aligned} w_\Gamma \sim \pm \Gamma ^\pm \mathcal {P}z \quad \text {as}~z \rightarrow \pm \text {i}\infty , \end{aligned}$$
(38)

where \(\Gamma ^\pm = \sum _{j=0}^M \Gamma _j^\pm \). In words, including a nonzero circulation around the boundaries produces a far-field flow parallel to the real axis.

3.5.2 Circulatory flows in type II geometries

We employ a similar strategy to the previous section to modify the circulation around the boundaries in type II geometries. In Sect. 3.3.3 we showed that a uniform flow may be constructed by placing a point vortex at the preimage of infinity. This point vortex induced a circulation around the boundary \(L_0\), which represented the lower boundary of the domain. To specify the circulations around the boundaries \(L_j\) for \(j = 1, \ldots , M,\) we instead use the modified Green’s functions and write

$$\begin{aligned} W_\Gamma (\zeta ) = \sum _{j=1}^M \Gamma _j G_j(\zeta ,a_{\infty }). \end{aligned}$$

This complex potential induces circulation \(\Gamma _j\) around the boundary \(L_j\). Note that this complex potential affects the flow in the far field, which is now

$$\begin{aligned} \frac{\text {d}w_\Gamma }{\text {d}z} \sim \Gamma \mathcal {P}\quad \text {as}~z \rightarrow +\text {i}\infty , \end{aligned}$$

where \(\Gamma = \sum _{j = 1}^M \Gamma _j\).

3.5.3 Circulatory flows in type III geometries

In Sect. 3.3.4 we showed that uniform flows through type III geometries may be obtained by specifying an equal circulation on boundaries \(L_0\) and \(L_1\). We now show how to specify the circulation around interior boundaries \(L_j\) for \(j>1\). Since the domain is bounded, the net circulation around the interior boundaries must vanish. Otherwise, integrating the complex velocity around the boundaries would result in a nonzero quantity, therefore violating Cauchy’s theorem as there are no singularities in the flow. In type 3 geometries, the circulation around interior boundaries may again be specified with the modified Green’s function. For example, the complex potential with circulation \(\Gamma _j\) around \(L_j\) for \(j>1\) is given by

$$\begin{aligned} W_\Gamma (\zeta ) = \sum _{j=2}^M \Gamma _j G_j(\zeta , \gamma ), \end{aligned}$$

for any \(\gamma \in D_\zeta \). The net circulation around the interior boundaries must vanish, so \(\sum _{j=2}^M \Gamma _j = 0\).

3.5.4 The Kutta condition

In many applications, certain solutions produced by potential flow analyses are undesirable. In aerodynamics, the flow at the trailing edge of a body must be finite [12, 41], and satisfying this requirement is known as the Kutta condition. We can express the total complex potential as

$$\begin{aligned} W(\zeta ) = W_\Gamma (\zeta ) + \tilde{W}(\zeta ), \end{aligned}$$

where \(\tilde{W}\) represents the complex potential with vanishing circulation. Enforcing the Kutta condition requires the velocity at each trailing edge to vanish. If the trailing edge of the boundary \(L_j\) is located at \(\zeta _j\) in the circular domain, the Kutta condition requires

$$\begin{aligned} \frac{\text {d}W_\Gamma }{\text {d}\zeta }(\zeta _j) + \frac{\text {d}\tilde{W}}{\text {d}\zeta }(\zeta _j) = 0, \quad j = 0, \ldots ,M. \end{aligned}$$
(39)

Since \(W_\Gamma \) contains \(M+1\) unknown circulations, (39) represents an \((M+1)\times (M+1)\) linear system of equations that can easily be inverted.

As noted in Sect. 3.5.1, in type I geometries, the effect of modifying the circulations is to modify the angle and strength of the flow far away from the objects. Similarly, the effect of the Kutta condition is to modify the far-field behaviour of the flow. For example, if an inlet flow angle is specified, the Kutta condition determines the outlet angle.

Fig. 3
figure 3

Uniform flow through periodic arrays of slits with the Kutta condition applied

4 Example: flow through an array of slits

We now present a simple example as an illustration of our calculus. The calculus is implemented in Matlab and the codes used to produce this example are available at www.github.com/baddoo/periodic-calculus. We consider the flow through a periodic array of slits, which is commonly used to model the periodic blades in a turbomachinery stage [6, 8, 46, 52, 56, 60]. Under the assumption that the curvature of the duct passage containing the blades is small—which is typically the case—an annular blade row may be ‘unwrapped’ into a two-dimensional plane [59]. Additionally, the blades are typically thin so may be modelled at leading order as flat plates, or slits. This arrangement is often referred to as a ‘rectilinear cascade of flat plates’.

The mapping for this type I geometry, which is valid for an arbitrary number of boundaries per period, is the periodic angled slit map (47). We consider slits inclined at an angle of \(-\pi /4\) to the real axis and an incident flow inclined at an angle of \(-\pi /8\). The complex potential for this flow is given by (26). Additionally, we set the circulation around each slit so that the Kutta condition is satisfied at the trailing edges, which are taken to be the end of each slit furthest downstream. Since we wish to maintain the specified inlet angle as \(z \rightarrow \text {i}\infty \), we place vortices in (37) at \(a_{\infty ^-}\). The resulting streamlines are illustrated in Fig. 3 for flows past one, two, three, and four slits per period window. By enforcing the Kutta condition, we effectively introduce a small amount of viscosity at the trailing edge of the slit so that the fluid leaves the surface of the slit smoothly. In the non-periodic case, the velocity of the circulatory contribution decays like \(\mathcal {O}(1/|z|)\) so the inclination of the fluid ultimately returns to the original upstream angle of attack. However, in the periodic case, the velocity of the circulatory contribution tends to a constant in the far field (38) so the fluid exits the cascade at a new angle. This is clearly seen in Fig. 3.

Previously, the current authors found solutions for the potential flow past a cascade of thin aerofoils [5]. Those solutions were only valid for asymptotically small angles of attack, whereas the present solution holds for any angle of attack. Additionally, the present solution can account for more complicated flow phenomena, such as point vortices (13). In Fig. 4, we include two point vortices of equal but opposite circulation. In tandem with the Kutta condition, these vortices have a significant effect on the outlet angle of the flow, indicating that vorticity can have a significant effect on lift on cascades. More complicated blade shapes also can be modelled using the periodic Schwarz–Christoffel formula (2.3.5) as illustrated in [7].

Fig. 4
figure 4

Flow through periodic arrays of slits with embedded point vortices and the Kutta condition applied

5 Conclusion

In this paper, we have presented a constructive procedure for calculating 2-D potential flows in periodic domains of arbitrary geometry and connectivity. The first step in the procedure is to construct a conformal mapping from a circular domain to the physical target domain. A constructive formula for such mappings is available in [7]. The second step in the procedure is to construct the complex potential for the flow in the circular domain. By constructing both the conformal mapping and the complex potential in terms of the Schottky–Klein prime function, the ensuing solutions are valid for arbitrary connectivities. Although the calculus we have presented accounts for a range of flow types, of particular note are the complex potentials for uniform flow and point vortices: the former can be used to model the motion of the periodic array through a fluid (or vice-versa), while the latter can be used to represent discrete quantities of vorticity.

The solutions we have found in this paper could be applied to a range of physical scenarios. In particular, potential flows may be used to accurately model unsteady inviscid flows in aerospace applications [41]. Since the potential flow solutions struggle to account for viscosity, researchers are now turning to data-driven methods to incorporate missing physics. While it is generally accepted that the Kutta condition is appropriate to constrain the flow at the trailing edge, there is some debate regarding the flow condition at the leading edge. After a detailed numerical and experimental campaign, [61] proposed a leading-edge suction parameter criterion to control the amount of vorticity shed from the leading edge. This criterion was then applied by [33] to couple a reduced-order model [34] with high-fidelity “truth” simulation [67] to calculate the lift on a flat plate undergoing a sudden motion. Such a data-driven approach could certainly be applied to the geometries in the present work to model flow separation in turbomachinery stages. This will be a topic of future work.