Independent engineering case study

From public aircraft views to an evolving wake.

Explore an independent public-reference aircraft through a 0°–20° angle sweep and a full-domain transient wake study: native flow visualization, lift/drag loading, persistent circulation and fluctuating forces, with numerical limits documented.

By Mohammadreza Khani, PhD · Khani Solutions · Independent public-source study; not employer or manufacturer analysis.

Khani Solutions · AI-powered CFD workflow · October 16, 2026

Transient wake: does the circulation persist?

The 0°–20° screening sweep below compares separate steady fields. This follow-up holds the reconstructed aircraft at 20° and 100 mph and advances the flow in physical time. It asks whether the apparent circulation survives startup, changes with time and accompanies fluctuating aerodynamic loads.

Fixed 20° · 100 mph · 75 native snapshots · 7.5-second slowed playback. The aircraft and camera stay stationary; the flow evolves in physical time.

The finding

Opposite-sign circulation persists on both sides of the modeled wake throughout the sampled interval, while lift, drag and side force fluctuate. The calculation supports sustained, unsteady circulation in this model. A unique periodic shedding frequency and the real aircraft’s stall behavior remain unestablished.

26.31 kNMean lift
8.62 kNMean drag
3.05Mean lift / mean drag
4.45 millionFull-domain cells

Loads and circulation: the measured evidence

Statistics exclude the first 0.5 s provisionally and use approximately 1.5 s of subsequent flow evolution. Lift fluctuation RMS is 275.5 N, or 1.05% of mean lift; drag fluctuation RMS is 79.3 N, or 0.92% of mean drag. RMS here means the standard deviation about the time-weighted mean, not the RMS of the total force. The L/D value is the ratio of the two mean forces. Full-domain force integrals are used directly, without doubling.

Full-aircraft forces over 0.500005–1.999991 s; time-weighted statistics
QuantityMean / kNFluctuation RMS / kNMin–max / kN
Lift+26.3140.275+25.486 to +26.891
Drag+8.6210.079+8.452 to +8.856
Side force-0.0250.156-0.421 to +0.424
Native transient lift, drag and side-force histories from zero to two seconds, with the provisional averaging start at half a second
The dashed line marks the provisional 0.5 s startup exclusion. Side-force variations develop from the initially mirrored flow; this demonstrates asymmetry within the numerical model, not a validated lateral instability of the aircraft.

Circulation is computed independently of the vortex rendering as Γ = ∮ U · dl around four fixed, closed, radius-1 m circles normal to the freestream. Their centers use X = 6 and 10 m, Y = ±6.8 m and Z = 2.65 + (X + 2.2) tan(20°) m in the model coordinate system. Each circle has 128 segments; every sampled point passed the native-field validity check. The loop orientation is +span followed by +lift.

Fixed-loop circulation over 75 snapshots, 0.502–1.982 s
Loop stationMean Γ / m² s⁻¹Fluctuation RMS / m² s⁻¹Min–max / m² s⁻¹
X = 6 m, left-23.210.18-23.67 to -22.78
X = 6 m, right+23.220.20+22.78 to +23.66
X = 10 m, left-21.530.20-22.11 to -21.15
X = 10 m, right+21.550.22+21.10 to +22.11

The circulation sign never reverses in any of the four sampled loops: near-station means are approximately −23.21 and +23.22 m²/s; farther-station means are −21.53 and +21.55 m²/s. This is evidence of persistent opposite-sense circulation through these particular loops. The smaller magnitude at the farther loops alone does not establish vortex decay: fixed loops can capture different fractions of a wandering or spreading structure.

Three consecutive window means vary by less than 0.6% of mean lift and 0.4% of mean drag. This is an encouraging consistency check, not proof of stationary statistics. A detrended, uniformly resampled Welch spectrum has a lift/drag peak candidate near 6.67 Hz with approximately 1.33 Hz bin spacing. The averaging interval contains only about ten cycles of that candidate. It is not reported as a validated shedding frequency; repeated agreement in wake probes, longer sampling and timestep sensitivity are still required.

How to read the video

  • Aircraft colors: signed local lift traction in Pa, obtained by projecting pressure and viscous surface loading onto the freestream-normal lift direction. Positive and negative colors show contributions to lift; they are not pressure coefficient, structural stress or a local lift coefficient.
  • Cyan lines and arrowheads: instantaneous streamlines traced from each native velocity field, with seeds around the wings and body and selection for deflection. They show the local flow direction at that instant. They are not particle trajectories across multiple times.
  • Translucent purple-to-yellow surfaces: Q = 500 s⁻² isosurfaces colored by local speed, 0–65 m/s. Q is a velocity-gradient diagnostic used to identify rotation-dominated regions; the colors encode speed, not circulation magnitude.
  • Right-hand plots: native lift and drag against physical time. The vertical cursor identifies the field currently displayed. Camera and aircraft remain stationary, so changes in flow structures come from the calculated time sequence.

The 1920 × 1080, 24 fps movie uses 75 native snapshots from 0.502 to 1.982 s, at 0.02 s spacing, displayed over 7.5 s. Playback is slowed by approximately five times. No synthetic shedding, reversed time sequence or interpolated flow was added. The existing Khani Solutions handwriting logo animation and khanisolutions.com identify the work without covering the engineering plots.

Mesh, numerical settings and execution evidence

Full-domain mesh and initialization

Native OpenFOAM mirrorMesh reflected the retained 2,226,297-cell half-aircraft mesh about Y = 0, producing 4,452,594 cells with no center-plane symmetry boundary. Mirroring increases the domain extent, not the resolution. The generic reconstructed exterior, absent propeller blades and no-prism-layer wall-function treatment remain as documented in the steady study below. Configured full-domain mesh checks passed; this does not remove the source mesh’s concavity concerns or establish near-wall adequacy.

The 20° steady iteration-1000 field provided the initial condition. Scalars were mirrored and the lateral velocity component reflected; the mapped cell-center coordinate discrepancy was below 5.7 × 10⁻¹⁴ m. A localized initial lateral velocity perturbation of up to 0.1% of freestream seeded asymmetric evolution. There was no continuing forcing. Because the initial steady field was unconverged, the 0.5 s startup exclusion remains provisional.

Time integration and solver configuration

SettingTransient case
Operating point20°; 44.704 m/s; ρ = 1.225 kg/m³; ν = 1.46 × 10⁻⁵ m²/s
Solver / closureOpenFOAM v2512 pimpleFoam; incompressible SST k–ω URANS
Time schemeSecond-order backward; adaptive timestep, target maximum Co = 1; Δt cap = 0.0002 s
Convection / gradientsU: Gauss limitedLinearV 1; k and ω: Gauss upwind; grad(U): cellLimited Gauss linear 1
Diffusion / interpolationGauss linear limited 0.5 Laplacian; limited 0.5 normal gradients; linear interpolation
PIMPLE coupling2 outer corrections; 1 pressure correction; 1 non-orthogonal correction; momentum predictor on
Pressure solutionGAMG / DICGaussSeidel; absolute tolerance 10⁻⁷; relative tolerance 0.01, final 0
U / k / ω solutionsmoothSolver / symGaussSeidel; absolute tolerance 10⁻⁷; relative tolerance 0.01, final 0
Physical duration / samplingApproximately 2.0 s; 39,004 force samples at t ≥ 0.5 s; native field snapshots every 0.02 s
ExecutionIntel Xeon Gold 6238R; 40 MPI ranks; 44.54 h production wall time; normal solver exit
Diagnostics14 velocity/pressure probes; native forces, Q, vorticity, wall shear and field averages

The largest recorded Courant number was 1.039: the adaptive target was not a strict bound at every step. Final relative net boundary volume-flux imbalance was approximately 6.0 × 10⁻⁹. The solver completed normally with no observed fatal errors or turbulence-bounding events. These execution and continuity checks do not establish physical validation. The original automated report counted two “Floating point exception trapping enabled” startup messages as fatal events; the separate reviewed result explains this false positive without changing the original evidence.

Python/NumPy and SciPy process the native forces and probes; PyVista/VTK traces streamlines, samples fixed-loop circulation and contours Q; Matplotlib, Pillow and FFmpeg produce the graphics and H.264 video. AI assistance supports CAD preparation, case setup, automation, analysis and communication. OpenFOAM solves the flow equations.

What this changes for design investigation

A steady image can suggest recirculation but cannot show its persistence or load variability. This transient result adds physical-time evidence: circulation remains measurable after the provisional startup interval, and the loads fluctuate even at a fixed operating point. That makes wing/body/boom junctions, wake interaction with the tail and sensitivity to geometric fairings useful candidates for controlled comparisons. The present run does not isolate which feature causes each fluctuation or demonstrate an improved design.

Scope: this is an independent, unpowered public-reference Archer Midnight approximation, displayed alongside Wisk-related methods demonstrations. It is not Wisk, Boeing or Archer engineering data. No rotor thrust or propwash, trim, ground effect, aeroelasticity, resolved LES turbulence, grid/time-step independence, flight-test correlation or validated stall threshold is included. About 1.5 s of sampled evolution is insufficient to declare a statistically converged wake or a reliable shedding frequency.

Rendering limit: VTK reported 27,309 non-manifold contour warnings over the sequence. Some concave native cells could not be contoured, so Q surfaces may have omissions. Their displayed area is not a complete physical vortex metric. Native forces, probe histories and fixed-loop circulation remain separate evidence; the interpretation above does not rely on a complete Q surface.

Inspect the transient results

Updated October 16, 2026. Published numerical extracts and the video were checked against the native Intel artifacts. Full native volume fields and original execution logs remain in the engineering archive.

Method references: OpenFOAM Q definition and PyVista streamline tracing. The downloaded dictionaries identify the actual settings of this v2512 run.

Earlier study: 0°–20° steady angle sweep

0° · increasing

Select an angle to pause and inspect. Use the video’s play control to resume the 0° → 20° → 0° loop. All eleven calculated angles remain on the plots; the highlighted point follows the displayed field. Use fullscreen for detailed plots on small screens.

Independent public-reference Archer Midnight approximation, presented with the Wisk methods demos. All eleven cases missed full convergence targets. This is an unpowered, symmetric screening study, not Wisk/Boeing/Archer engineering data or a validated stall envelope.

What the 0°–20° study shows

I extended the public-reference exterior reconstruction to eleven independent, unpowered calculations: 0°, 2°, 4°, 6°, 8°, 10°, 12°, 14°, 16°, 18° and 20° angle of attack at 100 mph. The stationary aircraft and camera make the changing inflow direction, surface loading and near-aircraft flow paths easier to compare. The native velocity and surface-traction fields come from OpenFOAM, while the three-second 0° → 20° → 0° sequence is an edited presentation of those fields.

The useful question is how increasing incidence changes the modeled lift/drag tradeoff and where the computed flow bends or reverses. The screening curve shows diminishing lift gains at higher angles and a strong drag increase. It identifies regions and angles for a better-resolved follow-up; it does not establish a production-aircraft performance curve, a stall angle, or a safe flight envelope.

This is an independent Khani Solutions demonstration built from public Archer Midnight photographs, exterior views and patent illustrations. It appears alongside the Wisk methods demos because it illustrates related engineering tools. Archer Midnight and Wisk’s aircraft are different designs. No employer or manufacturer geometry, operating data, proprietary battery details or flight-test results were used.

Surface colors: local signed lift or drag per unit area

The selectable colored variable is aerodynamic force contribution per surface area, in N/m² (equivalently Pa). It includes pressure and modeled viscous shear. It is neither surface pressure coefficient Cp, integrated lift/drag coefficient CL/CD, nor structural stress. A force density can have either sign: one patch can assist the selected load while another opposes it.

The incompressible OpenFOAM pressure is kinematic pressure pkin, in m²/s². With density ρ, outward normal of the fluid boundary nfluid, and OpenFOAM’s kinematic wall-shear vector τOF, the body traction used here is t = ρ pkin nfluid − ρ τOF. The installed OpenFOAM force and wall-shear conventions were checked before integration. The surface uses a zero-gauge reference; local pressure contributions depend on that reference, while a consistent closed-body pressure integral eliminates a uniform pressure offset.

Body X points from nose toward tail, Y spans the aircraft and Z points upward. At angle α, U∞ = V(cos α, 0, sin α), drag direction eD = (cos α, 0, sin α), and lift direction eL = (−sin α, 0, cos α). Colors show t·eL or t·eD. Native surface-cell tractions and areas are retained; cell-to-vertex averaging is used only for a smoother display. The common clipping ranges, ±1,800 Pa for lift and ±1,000 Pa for drag, allow comparison across angles. Saturated colors hide excursions beyond those display limits rather than limiting the calculated load.

The green lift and amber drag arrows share one length scale across all cases. They represent integrated wind-axis forces, with an illustrative drawing anchor. Their origin is not a calculated center of pressure or known aircraft center of gravity. The right-side plots contain all eleven case means; the highlighted point and vertical band track the displayed case. Whiskers show the minimum and maximum force within the declared iteration window, not confidence intervals or physical-time fluctuations.

Streamlines: calculated paths with presentation arrowheads

Cyan lines are selected paths through the native velocity field around the fuselage, above/below the wing and near the tail. Purple lines are selected near-body reverse-flow segments where the current solver iterate supports them. Curvature shows the calculated deflection of the flow. These lines are not a uniform sampling of the flow, and their count, spacing, brightness and thickness do not represent mass flow or boundary-layer thickness. A curling streamline in an unconverged steady field is a recirculation candidate, not proof of a resolved coherent vortex or a vortex-shedding frequency.

The body-fixed seed set used 90 wing releases distributed over 15 spanwise locations and six vertical offsets, 40 cabin releases at five lateral positions and eight heights, and eight tail releases. Each case could add up to 40 spatially separated seeds in near-body cells with reversed wind-axis velocity. Thus the main release positions are comparable across angles, while the wake seeds are selected from each case’s computed field.

PyVista/VTK traced paths bidirectionally using native U, an initial step of 0.025 m, minimum/maximum steps of 0.002/0.07 m, up to 3,000 steps, maximum length 16 m, terminal speed 0.15 m/s and integration-error tolerance 10⁻⁶. Cropping, minimum path length, velocity-deflection and spacing filters removed straight bypass paths and reduced overlap. At most five qualifying half-domain reverse-flow candidates were retained before mirroring. Selected full-aircraft path counts vary with angle; the 20° view contains 122 paths. No synthetic vortex curves were inserted.

Arrowheads point along interpolated U and move forward even when the displayed angle returns toward zero. Their speed is illustrative. The return branch reuses the same eleven steady fields; it is not an independently solved descending-angle sequence, a dynamic pitching maneuver, a hysteresis calculation, or three seconds of physical flow evolution. Matching opening/closing source images create the visual loop. The video is 1920 × 1080 at 24 fps; an eleven-second version allows slower inspection.

What the screening curve says

Between 12° and 16°, the mean modeled lift changes little: about 24.28, 24.47 and 24.41 kN, while mean drag rises from about 3.60 to 6.15 kN. At 20°, the mean lift is about 25.63 kN and drag about 8.69 kN. Relative to 12°, that is approximately 5.6% more lift and 142% more drag. The corresponding modeled L/D falls from about 6.75 to 2.95. These ratios describe this untrimmed, approximate, unconverged model; they are not predictions of the real aircraft’s cruise efficiency.

The engineering message is diminishing load benefit with a rapidly increasing drag cost in this particular screening sweep. The highest sampled mean lift occurs at 20°, but the data do not resolve a trustworthy lift maximum or establish a stall threshold. The negative lift at 0° belongs to the assumed symmetric-airfoil draft and its untrimmed orientation, not to an actual Midnight cruise condition.

AoALift / kNDrag / kNCLCDFull convergence targets
0°-1.3491.272-0.04830.0455Not met
2°+4.0611.2530.14540.0449Not met
4°+8.9491.2950.32040.0464Not met
6°+13.8681.5170.49660.0543Not met
8°+18.4381.8030.66020.0646Not met
10°+21.5752.4930.77250.0893Not met
12°+24.2753.5950.86920.1287Not met
14°+24.4664.8860.87600.1750Not met
16°+24.4096.1500.87400.2202Not met
18°+25.5597.2280.91520.2588Not met
20°+25.6328.6890.91780.3111Not met

Forces are full-aircraft equivalents: the symmetry-half integral is doubled. Coefficients use the matching half reference area, 11.407946 m²; full reference area is 22.815892 m² from the assumed draft chord distribution. The plots use the last 200 second-order SIMPLE iterations, while colors and streamlines use the final steady iterate. A field integral should therefore be compared with the native final force, not automatically with the iteration-window mean.

Force histories and numerical qualification across all eleven angle-of-attack cases
Retained force/residual history evidence. Every case missed the full convergence targets, even though its global mass-balance check passed.

What to investigate next

Examine wing/cabin-root transitions, nacelle/boom junctions, exposed gear and the tail in fixed views at the same operating point. Surface traction maps show which patches contribute positively or negatively to a force; velocity paths show where the current field is deflected or reversed. A useful design change still needs a controlled geometry comparison with converged, mesh-sensitive loads. These movies do not demonstrate a fairing benefit or an optimized aircraft.

Priority follow-up is to establish representative airfoil, incidence and twist; improve near-wall resolution and mesh conditioning; resolve the nonlinear force histories; and compare systematically refined grids. High-angle separated flow may require a sufficiently long, time-resolved calculation, timestep sensitivity and statistical averaging. Lift/trim and pitching-moment interpretation require a justified CG and control settings. Rotor interactions require a justified powered representation. Those tasks were not completed by extending the visual angle sweep.

CAD preparation and the high-angle volume mesh

The editable Blender 5.0.1 exterior was reconstructed from multiple public views using a visually fitted fuselage loft, glazing patches, landing-gear fairings, wing-root shoulders, six booms, cruise-oriented forward nacelles/hubs and a V-tail. The main wing uses a generic symmetric 13%-thickness profile; the tail uses a generic 10%-thickness profile. OEM camber, incidence, twist, control settings, trim and structural shape were unavailable. The earlier CAD section below documents scale references and reconstruction assumptions.

The CFD exterior is a separate cleaned body: propeller blades and decorative surface patches were omitted; cabin closure, wings, tail, booms, nacelles/hubs and exposed gear remain. A 25 mm voxel union, smoothing and triangulation produced a connected closed boundary, with approximate component tags. These operations round thin trailing edges and small details. A visually convincing, watertight surface is not evidence of aerodynamic fidelity.

The high-angle study uses a new common 2,226,297-cell symmetry-half mesh for all eleven cases, not the earlier 474,386/1,210,614-cell baseline grids. OpenFOAM v2512 blockMesh and snappyHexMesh refined the wing, tail and nacelle surfaces to level 7 and the other aircraft surfaces to level 6. The near-body box uses level-3 refinement; the refined wake was expanded to X = 0–30 m, Y = 0–10 m and Z = −3–16 m to cover high-incidence flow. The full external half-domain spans X = −35–75 m, Y = 0–35 m and Z = −30–35 m, with symmetry at Y = 0.

Layered meshes and a local cell-splitting repair were tested and rejected because of poor stencil quality. The accepted surface-refined mesh has no extruded prism layers and uses wall-function RANS. This improved the chosen mesh-quality diagnostics but did not establish adequate boundary-layer profiles or skin-friction accuracy. Fifteen tiny deficient fluid cells were closed in three passes (9, 5 and 1); total removed volume has an upper bound of 0.00015 m³. Their new walls were assigned to the nearest existing aircraft patch. The rejected attempts and native audit logs remain in the engineering archive.

Configured mesh checks passed. Expanded audits reported no weak-determinant cells or low-weight faces at the retained criteria; minimum normalized determinant was 0.0011844321 and minimum face weight 0.087647394. The expanded concave-cell diagnostic still failed, identifying 81,478 cells. Thus this is not an “all checks passed” mesh, and it is not grid independent. A mesh fingerprint confirmed that every angle used the same points, faces, ownership, neighbor and boundary files.

Solver settings, execution and acceptance

The computations ran on the Intel Xeon Gold 6238R machine. Meshing used 16 MPI ranks. Each angle used four MPI ranks, with eleven cases scheduled concurrently and an aggregate cap of 44 ranks. The method was OpenFOAM v2512 simpleFoam: steady incompressible RANS with k–ω SST, not a Blender fluid simulation. Blender preserves editable geometry and field attributes; Python, NumPy, PyVista/VTK, Pillow and FFmpeg produced the native-field visualization and H.264 videos.

Input / numerical choiceHigh-angle study
Speed / density / viscosity44.704 m/s (100 mph); 1.225 kg/m³; ν = 1.46 × 10⁻⁵ m²/s
Inlet turbulence1% intensity, 0.1 m length; k = 0.299767 m²/s², ω = 9.99612 s⁻¹
Dynamic pressure / chord Reynolds numberq∞ ≈ 1,224 Pa; Re ≈ 4.78 × 10⁶ for assumed c = 1.559485 m
InitializationMapped from the retained 0° screening field; internal velocity rotated and freestream conditions reset for each angle
Momentum convection200 upwind conditioning iterations; then bounded Gauss limitedLinearV 1
Pressure linear solutionGAMG; absolute tolerance 10⁻⁸, relative tolerance 0.001
U, k and ω linear solutionsmoothSolver; absolute tolerance 10⁻⁸, relative tolerance 0.01
Under-relaxationp = 0.25; U, k and ω = 0.5
Run cap / statistics1,000 steady iterations; final 200 second-order iterations for means and ranges
Equation-residual targetsFinal initial p residual ≤ 10⁻⁴; U, k and ω ≤ 10⁻⁵
Force-window / mass targetsCd relative peak-to-peak range ≤ 1%; Cl absolute range ≤ 0.002; relative net boundary volume flux ≤ 10⁻⁴

Outer boundaries impose the prescribed freestream direction with compatible pressure/freestream treatment; the aircraft is no-slip with zero-gradient pressure and SST wall functions. The archived settings file contains the actual 0° and 20° boundary dictionaries, discretization and SIMPLE controls. At 20°, U∞ ≈ (42.008, 0, 15.2897) m/s, eD = (0.939693, 0, 0.342020), and eL = (−0.342020, 0, 0.939693).

All eleven solves ended normally at their bounded run limit, but none met every declared residual and force-window target. All mass-balance checks passed. Global flux closure and successful process exit do not establish momentum convergence, a stable force curve, a correct separation pattern, or physical validation. SIMPLE “time” in these records is an iteration counter rather than seconds.

Short pimpleFoam SST URANS trials were initialized from the steady fields, with backward time discretization, two outer corrections, one pressure correction, one non-orthogonal correction, adaptive timestep and maximum Courant number 1. Their measured timestep cost would have required hours to reach useful averaging. They were ended cleanly before the intended 0.03 s averaging start. These short trials produced no usable unsteady mean; every field in the angle-sweep movie is a steady screening iterate. The separate full-domain transient follow-up above subsequently reached approximately 2 s and reports its own statistics and limitations. The short-trial record gives actual termination times and does not treat the video duration as simulated time.

Independent surface pressure/shear integration was cross-checked against native final OpenFOAM forces to verify signs, area mapping and projection. Pressure and viscous integral discrepancies were at most about 0.0362% across the recorded checks. Agreement between two calculations from the same iterate checks post-processing consistency; it does not validate that iterate’s physical accuracy. Coefficient/force normalization and component-force sums were also checked.

Symmetry excludes asymmetric stall modes. No propeller blades, thrust, propwash, resolved rotor wakes, ground effect, internal cooling, trim, structural loads or aeroelastic response were solved. No grid or timestep independence, flight-test correlation, OEM validation, or reliable maximum angle of attack has been established.

Inspect the evidence and editable visualization

The Blender source contains one common stationary mesh, 22 per-vertex scalar attributes (lift and drag for eleven angles), native streamline geometry and wind-axis force arrows. Scene controls CaseIndex = 0…10 and ColorMode = 0/1 select the field and lift/drag coloring. The updated 72-frame timeline sweeps 0° → 20° → 0°. Reopening and every frame’s case/visibility selection were verified on Intel. The final composite movie is rendered with PyVista/VTK; the Blender file is an editable scientific visualization, not a separate CFD solver.

OpenFOAM’s simpleFoam source reference, snappyHexMesh workflow, and force-coefficient normalization explain the methods; the downloaded dictionaries identify this run’s v2512 settings. PyVista’s streamline documentation describes tracing. Public photographs/patents and the full CAD-reference discussion remain in the historical reconstruction section below.

Public portfolio update: October 14, 2026. Numerical values in this steady-sweep section refer to the common-mesh high-angle screening study. Original native volume fields, logs, rejected meshes and execution records remain in the engineering archive.

Earlier 0° pressure-coefficient study — CAD reconstruction, two original grids and technical archive

Earlier Cp study on LinkedIn

Historical baseline: surface Cp at 0°, with a ten-second camera loop. Its mesh, numerics and force values differ from the later 0–20° study above.

What I built and what this study answers

I built an editable exterior approximation of Archer Midnight from public photographs, multiple aircraft views, and published patent drawings. I then prepared a separate watertight surface for an initial, unpowered external-aerodynamics calculation. The aim was to examine pressure loading, airflow deflection, local reverse flow, and the relative drag contributions of the modeled components at one prescribed operating point.

This is an independent Khani Solutions portfolio demonstration associated with the methods used in my aerospace work. It is not a Wisk, Boeing, or Archer engineering deliverable, manufacturer CAD, a flight-test correlation, or a prediction of the production aircraft's performance. No employer geometry, battery details, internal aircraft data, or proprietary operating conditions were used. Archer Midnight and Wisk's aircraft are different designs.

The two calculations ended normally, but neither met every declared numerical acceptance target. The finer-grid force history still varied, and the drag coefficient differed between the two grids. Those limitations are part of the result: the video is a visualization of a preliminary solver field, while the analysis provides questions for the next model iteration.

Software, compute and reproducible artifacts

StageSoftware and role
Geometry and CAD reviewBlender 5.0.1 with Python-generated lofts, mesh components, materials, configuration controls and repeatable comparison cameras. Editable .blend source and a GLB review export.
CFD surface preparationBlender voxel union/remeshing, surface smoothing, triangulation and OpenFOAM surfaceCheck; component labels carried into an STL-based external-flow model.
Volume meshOpenFOAM v2512 blockMesh, parallel snappyHexMesh and checkMesh; scotch decomposition across 12 MPI ranks.
Initialization and solvepotentialFoam initialization followed by simpleFoam: steady, incompressible Reynolds-averaged Navier–Stokes (RANS) with k–ω SST turbulence closure.
Field and force processingNative OpenFOAM reconstruction and function objects; Python, NumPy, PyVista 0.46.5, VTK 9.5.2 and Matplotlib for field extraction, integration checks and plots.
Native result reviewA saved Blender scene containing the actual scalar Cp attribute and pressure material was reopened and rendered on Intel.
Final filmPyVista/VTK offscreen rendering of the calculated surface and streamlines; Pillow for the legend, FFmpeg for H.264/AAC encoding. The final film is a scientific-field render, not a Blender fluid simulation.
ComputeIntel Xeon Gold 6238R at 2.20 GHz, intel-precision-7920-tower. CFD used 12 MPI ranks; offscreen software rendering was capped at four threads.

The editable CAD, CFD-prepared .blend, STL, native OpenFOAM cases, force/residual histories and field exports were retained separately. The public downloads below expose the numerical summary, case parameters, mesh dictionaries and visualization metadata, so that a reader can inspect the assumptions without relying on the movie alone.

Building the exterior from public references

Archer's published aircraft imagery supplied front, side, rear, flight and turntable views. Design patent USD1067164S1 supplied eight external shape views, while US11787551B1 provided context for boom-mounted electric engines and tilt architecture. Patent illustrations constrain visible arrangement and silhouette; they do not provide the complete, dimensioned aerodynamic surface or establish that every photograph depicts the same configuration.

The draft used 48 ft (14.6304 m) span and 33 ft (10.0584 m) length as nominal scale anchors. The cited FAA submission's full PDF returned an access error during reconstruction, so those figures were taken from its indexed excerpt and retained as a qualified input. An older Archer disclosure gave 47 ft span. I documented that discrepancy rather than treating both values as equivalent measurements of one configuration.

Independent Blender exterior draft in hover, cruise, side, front, top and rear views
My Blender draft, not manufacturer CAD. Propeller blades are visible in this CAD review but were omitted from the CFD exterior.

The fuselage was constructed as a cubic-Hermite loft through visually estimated longitudinal stations, with broader superellipse cabin sections, a raked forward profile, a flatter belly and a smooth aft taper. Glazing patches were projected onto the loft: a wraparound windshield, shaped pilot panes and passenger panes with rising aft edges. The landing gear used swept, rounded rectangular fairing lofts, wheel boots and a revised nose-gear shell. Leading- and trailing-edge shoulder fairings formed the estimated wing-to-cabin transition.

Three boom centerlines were placed on each side at approximately 1.78, 4.05 and 6.35 m from the center plane. The main-wing chord distribution was specified at seven spanwise stations. The wing section was a generic symmetric 13%-thickness profile; the V-tail used a generic 10%-thickness section. Actual aircraft camber, twist, incidence, airfoil coordinates, control settings, structural shape and flight trim were unavailable. These assumed sections are a major aerodynamic limitation, even when the exterior looks convincing.

The source includes a hover configuration and a forward-tilt cruise configuration. The CFD copy used cruise frame 120. The editable model is mesh-based exterior CAD, useful for studying visible shape and making controlled geometry edits; it is not a manufacturing-ready boundary representation, tolerance model, structural assembly or installation design.

Converting the visual CAD into a CFD surface

Intersecting visual components are unsuitable as an unexamined fluid boundary. I retained the fuselage, shoulder/root fairings, wings, V-tail, six booms, cruise-oriented forward nacelles and hubs, rear masts/hubs, and exposed landing gear. Propeller blades, decorative seams, window/door handles and separate glazing surface patches were removed. The underlying closed cabin surface remains; removing the glazing patches does not open the cabin.

A 25 mm voxel union with two smoothing passes produced one connected, closed exterior. Its triangulated export contained 516,004 triangles, zero non-manifold edges and a positive signed volume of 17.5358 m³. The cleaned surface extended approximately 10.505 m in X, 14.630 m across Y and 4.378 m in Z. Forward nacelles project ahead of the fuselage, so the full surface's X extent differs from the nominal fuselage length anchor.

The cleaning operation rounds small features and blunts thin trailing edges. Surface closure is a prerequisite for meshing, not evidence of geometric fidelity. Triangles were tagged as fuselage, wing, tail, booms, nacelles or gear using their nearest original component centroids. Labels near joined components are approximate; the maximum label-association distance was approximately 0.421 m. The force breakdown therefore has an additional component-boundary uncertainty.

Volume mesh generation and wall treatment

The external domain was X = −35 to 75 m, Y = 0 to 35 m and Z = −30 to 35 m. X points downstream, Y spans the aircraft, and Z is vertical. Only the Y ≥ 0 half was solved, with a symmetry boundary at Y = 0. The full aircraft in the video is the calculated half mirrored across that plane. This assumption excludes asymmetric inflow and asymmetric flow modes.

blockMesh created a 74 × 24 × 44 Cartesian background grid. snappyHexMesh then performed castellation, surface snapping and layer addition. Near-body and wake boxes received level-2 refinement. Distance refinement around the aircraft used level 4 within 0.18 m and level 3 within 0.65 m. Surface refinement was level 5 on most coarse-grid parts, with nacelles at level 6; the finer grid used level 6 on all named components. These are octree refinement levels, not statements that the mesh is uniformly resolved.

The snap controls included four patch-smoothing passes, tolerance 1.8, 50 solve iterations, eight relaxation iterations, 12 feature-snap iterations and implicit feature snapping. Five near-wall prism layers were requested, with expansion ratio 1.3, relative outer-layer thickness 0.4 and minimum relative thickness 0.08. Layer coverage and actual wall resolution must be assessed after meshing; requesting five layers does not guarantee five intact layers everywhere.

Native finer-grid volume mesh sections near the center plane and a gear junction
Sections of the retained finer volume grid at Y = 0.03 m and 0.74 m. Surface intersections are outlined in red. VTK reported some difficult polyhedral cells could not be contoured, so this is a qualitative resolution view; native checkMesh results remain the quality record.
Mesh/run quantityCoarseFiner
Final cells474,3861,210,614
Maximum non-orthogonality64.86°64.95°
Maximum reported skewness3.9763.988
Minimum cell volume1.132 × 10⁻⁷ m³6.736 × 10⁻⁸ m³
Maximum aspect ratio18.8623.66
Configured mesh checksPassedPassed
Extended geometry checksThree failed checksThree failed checks
Meshing wall time81.72 s125.34 s
Steady solve wall time220 s775 s

The configured checks used maximum non-orthogonality 65°, maximum internal/boundary skewness 3/4 and minimum positive volume 10⁻¹³ m³. The snappy generation dictionary used minimum face weight 0.025; the separate configured check dictionary used 0.02. Extended all-geometry checks also identified concave cells, low-determinant cells and faces below the stricter 0.05 weight criterion. Passing the configured check therefore does not mean every extended quality check passed. These flagged sets were retained for review.

The wall strategy was wall-function RANS rather than a y⁺ ≈ 1 boundary-layer calculation. At the final finer-grid snapshot, the area with 30 ≤ y⁺ ≤ 300 was approximately 95.6% on the fuselage, 96.1% on the wing, 95.4% on the tail, 88.5% on the booms, 90.3% on the nacelle group and 86.3% on the gear. The larger out-of-range area on gear and booms is relevant when judging skin-friction and separation sensitivity. These ranges are an audit of this mesh, not universal acceptance criteria for every flow.

Operating point, equations and boundary conditions

InputValue / assumption
Freestream velocity100 mph = 44.704 m/s, U = (44.704, 0, 0)
Angle of attack0° in the modeled coordinate system; no flight-trim calculation
Air density / kinematic viscosity1.225 kg/m³ / 1.46 × 10⁻⁵ m²/s
Inlet turbulence1% intensity, 0.1 m length scale; k = 0.299767 m²/s², ω = 9.99612 s⁻¹
Dynamic pressureq∞ = ½ρU∞² ≈ 1.224 kPa
Reference area / chordFull S = 22.815892 m² from the draft chord distribution; half-model Aref = 11.407946 m²; reference chord = 1.559485 m
Chord Reynolds numberU∞c/ν ≈ 4.78 × 10⁶ using the assumed air viscosity
Propulsion and groundUnpowered, stationary exterior; no blades, thrust, propwash, rotor wake, ground plane or internal/cooling flow

simpleFoam solves steady incompressible continuity and momentum with a modeled turbulent stress contribution. In compact notation, ∇·U = 0 and ∇·(U⊗U) = −∇(p/ρ) + ∇·[νeff(∇U + ∇Uᵀ)]. The k–ω SST model closes the RANS system through turbulence transport equations for turbulent kinetic energy k and specific dissipation rate ω. Its standard implementation and coefficients were retained; no transition model, LES or resolved rotor dynamics was added.

The inlet velocity was fixed. The outlet used an inletOutlet velocity condition to accommodate local reversal and fixed zero gauge pressure. The outer farfield used freestreamVelocity and freestreamPressure. The symmetry plane used symmetryPlane conditions; the aircraft used noSlip velocity and zeroGradient pressure. Inlet k and ω were fixed, with inletOutlet conditions at outlet/farfield. Wall conditions used kqRWallFunction, omegaWallFunction and nutkWallFunction.

OpenFOAM's incompressible pressure field has units of m²/s²: it is kinematic pressure, not pressure directly in pascals. Dimensional pressure differences are obtained by multiplying by density. The turbulence initialization used k = 1.5(U∞I)² and ω = √k/(Cμ1/4 L), with Cμ = 0.09. Density was supplied explicitly as rhoInf = 1.225 for the dimensional force integration.

The moment reference was (−1.5, 0, 2.3) m, an arbitrary study point rather than the aircraft center of gravity. Drag points along +X, lift along +Z and pitch about Y. Half-domain dimensional forces were doubled for the full-airframe estimates; coefficients used the half reference area consistently. These choices do not provide a pitching-moment or trim assessment about a known aircraft CG.

Discretization, linear solvers and convergence targets

The time-derivative scheme was steadyState. Gradients used Gauss linear, with a cellLimited Gauss linear 1 velocity gradient. Momentum convection used bounded Gauss linearUpwindV grad(U); k and ω convection used bounded Gauss upwind. Laplacians and normal gradients used limited 0.5 non-orthogonal correction; interpolation was linear. This combination favors a robust screening calculation but does not remove mesh or turbulence-model uncertainty.

Pressure used GAMG with a GaussSeidel smoother, absolute linear tolerance 10⁻⁸ and relative tolerance 0.01. Velocity, k and ω used smoothSolver with symGaussSeidel smoothing, absolute tolerance 10⁻⁸ and relative tolerance 0.05. SIMPLE used one non-orthogonal corrector, with the consistent option disabled. potentialFoam initialization used six non-orthogonal correctors. The parallel decomposition method was scotch with 12 subdomains.

Initial under-relaxation was p = 0.3, U = 0.65 and k/ω = 0.6. After finer-grid iteration 510, these were reduced to p = 0.15, U = 0.25 and k/ω = 0.4, and the run was extended to iteration 1400. The coarse run ended at iteration 1000. The stored solver “time” is a SIMPLE iteration index; deltaT = 1 in the control dictionary does not make each iteration one physical second.

The declared post-run acceptance targets were final initial equation residuals ≤ 10⁻⁴ for p and ≤ 10⁻⁵ for the other equations; a last-100-iteration Cd peak-to-peak range ≤ 1% of its mean; a Cl range ≤ 0.002; and relative net boundary volume flux below 10⁻⁴. Linear-solver tolerances measure convergence of an individual matrix solution, while these residual/force checks assess the nonlinear iteration. They are different tests.

What the colors and moving arrows mean

The body colors show local pressure coefficient, Cp. Cp = (p − p∞)/(½ρU∞²). With this kinematic-pressure field and zero outlet gauge reference, Cp = pkinematic/(½U∞²). Red is toward the higher-pressure end of the displayed scale; blue is toward the lower-pressure end. The range is fixed at −1.5 to +1.0. Values outside it saturate: the actual final snapshot spans approximately −4.00 to +1.09 across the tagged aircraft surfaces. The palette's pale midpoint should not be read as exactly Cp = 0; use the numeric legend.

High pressure near a forward-facing region is consistent with flow deceleration and stagnation. Low-pressure regions can accompany local acceleration around curved surfaces and junctions. Pressure forces depend on both pressure and surface orientation. A red patch is not automatically the largest drag source, and a blue patch is not proof of useful lift. Integrating pressure and viscous traction over the surface is required to obtain the total load.

Cp and Cd are different quantities. Cp is a local surface-pressure measure. Cd = D/(q∞S) is the dimensionless integrated drag coefficient for a specified reference area. Cd is not the colored variable in this film. Skin-friction drag is also included in the force calculation, although it is not represented by the Cp color map.

The cyan lines show selected native streamlines around the fuselage and over the wings. Curvature indicates how the modeled geometry deflects the computed velocity field. Arrowheads point along interpolated U. Their display motion is slowed and synchronized for readability; arrow count, apparent spacing and line thickness do not measure mass flow, velocity magnitude or boundary-layer thickness. Straight bypass paths were deliberately excluded to expose the near-aircraft behavior.

The selection started with 409 seeds placed upstream of the cabin, near upper/lower wing leading edges and in spatially separated reverse-flow cells. Bidirectional adaptive RK45 integration used the reconstructed finer-grid native U field: initial step 0.012 m, minimum 0.001 m, maximum 0.035 m, 5,000 maximum steps, maximum integration length 14 m, terminal speed 0.1 m/s and error tolerance 10⁻⁶. Cell velocity was interpolated to points for tracing.

Candidate body paths required at least 0.20 m bending and 18° accumulated turning; wing paths required 0.045 m and 12°. Local wake candidates required at least 160° turning and 12% reverse-flow samples. Cropping and spacing reduced 766 candidate segments to nine half-aircraft paths—three body, three wing and three local-wake paths—then mirrored them to 18 displayed paths. No extra curvature or synthetic vortex geometry was inserted.

The purple paths are local circulation candidates. They show substantial turning and reverse flow around modeled gear/junction regions in this solver iterate. A derivative-based Q = ½(||Ω||² − ||S||²) check was examined as supporting evidence, but no Q isosurface is displayed. Positive Q alone, boundary-sensitive derivatives and a curling streamline in an unconverged steady field do not independently establish a coherent vortex, its strength, shedding frequency or stability.

The ten-second film is not ten seconds of aircraft flight or transient CFD. The pressure and velocity fields stay fixed while the camera moves and markers traverse the calculated paths. It is encoded at 1920 × 1080 and 24 fps. The first 180° camera sweep reveals the opposite side; the camera then continues another 180° back to the opening view. Camera position, target, zoom and orientation close over the period, and arrows complete integer traversals so their phases also repeat. Added periodic airflow sound is presentation design, not a simulated acoustic result.

Calculated loads, mesh sensitivity and acceptance status

The table reports means over the final 100 solver iterations. These are iteration-window statistics, not time averages of a physical unsteady flow. The movie instead uses the final finer-grid field at iteration 1400.

QuantityCoarseFiner
Cd, final-100-iteration mean0.0692750.062002
Full-airframe drag estimate1,934.7 N1,731.6 N
Pressure / viscous drag1,609.6 / 325.1 N1,357.4 / 374.2 N
Cl, same window−0.04494−0.04059
Cd relative window range0.146%2.254%
Force-window acceptancePassedFailed
Final residual targetsNot all metNot all met
Relative net boundary flux3.82 × 10⁻¹⁰2.12 × 10⁻⁹
Overall numerical acceptanceNot fully convergedNot fully converged

The finer-grid final initial residuals were approximately p = 2.03 × 10⁻⁴, Ux = 9.23 × 10⁻⁶, Uy = 6.62 × 10⁻⁴ and Uz = 1.13 × 10⁻⁴. Global mass balance was tight, but that does not establish momentum convergence, stable forces or local accuracy. Cd differed by 11.73% relative to the finer-grid mean. Because the meshes and nonlinear iterations both contribute to the difference, this is a sensitivity observation, not a formal grid-convergence index or demonstrated mesh independence.

Coarse and finer mesh force histories plotted against SIMPLE iteration
Force history is a necessary check alongside residuals. The finer run still has visible iteration variation.

The small negative total Cl belongs to the assumed symmetric airfoil, selected orientation and untrimmed public draft. It is not evidence that Archer Midnight has negative cruise lift. Real lifting geometry, operating incidence, control settings, rotor effects and flight trim were not supplied or solved.

Approximate component groupFiner-grid dragShare of modeled total
Exposed landing gear588.1 N34.0%
Fuselage430.7 N24.9%
Nacelles, masts and hubs316.9 N18.3%
Booms157.0 N9.1%
Main wing147.8 N8.5%
Tail91.0 N5.3%

The largest three groups retain their order on both meshes. That supports using them to prioritize questions within this draft, subject to labeling, geometry and convergence uncertainty. It does not establish the production aircraft's drag budget. In particular, removing propeller blades and leaving the gear exposed changes the comparison with a real powered cruise configuration.

Why the study matters and what to test next

An exterior reconstruction becomes useful when it connects a visible feature to a testable aerodynamic question. The pressure map locates regions worth examining; bent streamlines expose interference between nearby surfaces; integrated component forces help organize the next controlled comparison. This is more informative than judging shape from a shaded CAD render alone.

  1. Gear and fairings: compare the same operating point with improved fairing transitions or a representative cruise gear configuration. The modeled gear is the largest drag group and includes local reversed-flow behavior; a fairing benefit still requires a new, converged comparison.
  2. Cabin and shoulder shaping: examine the forward cabin cross-section and wing/cabin transitions. At the final snapshot, an X = −3 to −1 m fuselage band contributed about 306 N of pressure drag, while the aft X ≥ 3 m band contributed about 3 N. These bands are diagnostics of this draft rather than isolated design sensitivities.
  3. Nacelle/mast/hub transitions: test the blunt interfaces and junctions before assuming a boom or airfoil change is the dominant improvement. The same snapshot placed about 235 N of nacelle-group pressure drag in the X = −1 to +1 m region.
  4. Establish lifting geometry: replace generic sections with a justified airfoil/incidence/twist model and solve a meaningful lift/trim condition before comparing L/D, range, power or aircraft efficiency.

No modified design was solved in this study, so no drag reduction, range gain or optimization success is claimed. A sound next stage would repair flagged mesh regions, improve layer coverage, resolve the residual/force behavior, separate geometry and grid changes, add further systematically refined grids, and compare against appropriate measurements. Powered operation would require a justified propulsor representation; time-resolved wake questions would require a suitable transient method and its own temporal-resolution study.

The useful outcome here is a repeatable public-data workflow and a transparent preliminary flow field. Its engineering value is in identifying what to inspect and what evidence to collect next, while keeping the attractive animation separate from the level of numerical and geometric confidence.

Public references and inspectable study data

Study and public-source access date: October 12, 2026. Numerical quantities are from the retained native case and analysis records; they are not manufacturer specifications.