GridGeneration.EllipticParams — TypeGridGeneration.EllipticParams
- max_iter::Int # maximum number of iterations
- tol::Float64 # tolerance for convergence
- ω::Float64 # relaxation factor
- useTopWall::Bool # whether to apply forcing on the top wall
- useBottomWall::Bool # whether to apply forcing on the bottom wall
- useLeftWall::Bool # whether to apply forcing on the left wall
- useRightWall::Bool # whether to apply forcing on the right wall
- adecayleft::Float64 # decay parameter for left wall forcing
- bdecayleft::Float64 # decay parameter for left wall forcing
- adecayright::Float64 # decay parameter for right wall forcing
- bdecayright::Float64 # decay parameter for right wall forcing
- adecaytop::Float64 # decay parameter for top wall forcing
- bdecaytop::Float64 # decay parameter for top wall forcing
- adecaybottom::Float64 # decay parameter for bottom wall forcing
- bdecaybottom::Float64 # decay parameter for bottom wall forcing
- verbose::Bool # whether to print convergence information
GridGeneration.SimParams — TypeGridGeneration.SimParams
- useSplitting::Bool # whether to use block splitting
- splitLocations::Vector{Vector{Int}} # locations to split the grid, defined using indices of the initial grid
- useEdgeSolver::Bool # whether to use the edge solver on each block after splitting
- boundarySolver::Symbol # :analytic or :numeric, which boundary solver to use
- useSmoothing::Bool # whether to use smoothing on the final grid
- smoothMethod::Symbol # :ellipticSS, which smoothing method to use
- elliptic::EllipticParams # parameters for the elliptic solver if using elliptic smoothing
GridGeneration.TFI — Function2D Transfinite interpolation (Coons patch). Input boundary with order: (top, right, bottom, left), each as an N×2 array. Returns X', Y' (matching your original orientation).
GridGeneration.make_getMetric — Functionmake_getMetric(boundary; closed=true,
A_airfoil=1.0, ℓ_airfoil=0.05, p_airfoil=2,
A_origin=1.0, ℓ_origin=0.10, p_origin=2,
floor=1e-4, profile=:rational)Create a closure getMetric(x,y) => (M11, M22) where the scalar field w(x,y) = floor + wairfoil(disttoairfoil) + worigin(disttoorigin) is applied isotropically: M11 = M22 = w.
boundaryis a 2×N polyline for the airfoil (assumed closed by default).A_*set the peak amplitudes.ℓ_*set decay lengths (units = your coordinate units).p_*control tail sharpness for the rational profile.floorprevents degeneracy far away.profile=:rationalor:gauss.
GridGeneration.SplitMultiBlock — FunctionSplit multiple blocks with automatic propagation of split constraints across interfaces.
Inputs:
- blocks: Vector of 3D grid arrays
- splitRequests: Vector of tuples (blockId, [[isplits], [jsplits]]) or Dict mapping blockId => [[isplits], [jsplits]]
- bndInfo: Boundary condition dictionary
- interInfo: Interface connectivity dictionary
Returns:
- newBlocks: Vector of split blocks (globally renumbered)
- newBndInfo: Updated boundary information
- newInterInfo: Updated interface information
GridGeneration.jl Documentation
Welcome to the documentation and formulation for GridGeneration.jl
Current Example
Just finished adding examples for airfoil case
Overview
A brief description of the underlying ordinary differential equation (ODE) is presented in ODE Formulation with supporting work shown in Mathematical Work. The ODE is nonlinear and second order boundary value problem which can be reformulated as a system system of first order ODEs. Two numerical methods, one for the First Order System using Julia's library DifferentialEquations.jl and second for the Second Order BVP ODE using central differencing and fixed point iteration with under-relaxation. Both methods prove to be rather unstable so a semi-analytical method (semi due to the use of numerical integration and inversion) is adopted.
To create 2D and 3D grids, we present a method of Mapping 2D to 1D and 1D back to 2D.
Work is down under the supervision and support of Dr. Larsson at the University of Maryland.