Manual
Here everything will be listed, the routines for computing
Vortex filament structure on GPU
In the standard implementations of the Vortex Filament Method (VFM), filaments are constructed by a Fortran 'type' array. Unfortunately, though structure types are native to Julia, structures defined and adapted using the Adapt
package are required to be immutable. The implementation of the VFM requires structures to mutate according to the number of vortex points, the value will fluctuate to maintain discretisation between filaments.
Boundary Conditions
As of v1.0.2, only periodic boundary conditions and open boundary conditions are supported.
#Initialises all open boundary conditions
boundary_x = OpenBoundary(1) #x direction
boundary_y = OpenBoundary(2) #y direction
boundary_z = OpenBoundary(3) #z direction
#Initialises all periodic boundary conditions
boundary_x = PeriodicBoundary(1) #x direction
boundary_y = PeriodicBoundary(2) #y direction
boundary_z = PeriodicBoundary(3) #z direction
Periodic and open boundary conditions can be mixed. For example, if we define a helical or straight line vortex, we require periodic boundary conditions in the $z$ direction, however we may also set open boundary conditions in the $x$ and $y$ directions.
#Set a straight line vortex - this condition requires periodic boundary in z
IC = SingleLine()
#Set open conditions in x,y and periodic in z
boundary_x = OpenBoundary(1)#x direction
boundary_y = OpenBoundary(2)#y direction
boundary_z = PeriodicBoundary(3)#z direction
Vortex initial conditions will throw an error if not supplied with the correct boundary condition!
Vortex Configurations
Here is a list of all of the vortex configurations that can be used for the vortex filament method. Specific parameters relating to the initialisation of the vortex line are stored in the corresponding structure blocks.
List of implemented initial conditions
Derivatives
The Vortex Filament requires the computation of spatial derivatives. The following methods compute these derivatives using finite difference adaptive techniques.
First order derivative using a second order adaptive-mesh finite difference scheme:
\[\frac{d\mathbf{s}_i}{d\xi} = \frac{\ell_{i-1}\mathbf{s}_{i+1} + (\ell_{i+1} - \ell_{i-1})\mathbf{s}_i + \ell_{i+1}\mathbf{s}_{i-1}}{2\ell_{i+1}\ell_{i-1}} + {\cal O}(\ell^2) \]
Second order derivative using a second order adaptive-mesh finite difference scheme:
\[\frac{d^2 \mathbf{s}_i}{d \xi^2}=\frac{2\mathbf{s}_{i+1}}{\ell_{i+1}(\ell_{i+1}+\ell_{i- 1})}-\frac{2\mathbf{s}_i}{\ell_{i+1}\ell_{i-1}}+\frac{2\mathbf{s}_{i-1}}{\ell_{i-1}(\ell_{i+ 1}+\ell_{i-1})}+{\cal O}(\ell^2)\]