custom vizPINNLossLandscape
post visualizations
Visualizations
A gallery of the interactive CFD visualizations embedded in published posts. Heavy Canvas components render only when opened.
custom vizSimpleResidualHistory
[CFD Q&A] When simpleFoam Pressure Residual Fails to Converge
custom vizDeanSecondaryFlow
Dean Flow: Analytical Solution and CFD Validation for Helical Pipe Flow
custom vizPoiseuilleProfile
Poiseuille Flow: Analytical Solution Derivation and Finite Difference Validation
custom vizQuaternionRotationDemo
FEM for Rigid Body Dynamics: Quaternion-based Rotation Handling and Inertia Tensors
custom vizKrylovConvergence
Choosing a CFD Linear Solver: Comparing Convergence Speeds from Jacobi to BiCGSTAB
custom vizEikonalFrontPropagation
Solving Wall Distance in O(N log N): Eikonal Equation and Fast Marching
custom vizPlateauRayleighJet
Why Water Streams Break into Droplets — Plateau–Rayleigh Instability and Breakup Regimes
custom vizLimiterAdvection1D
When Lax–Wendroff Shook at a Step — Building a 2nd-Order TVD Advection Scheme with Flux Limiters
custom vizTENOvsWENOAdvection1D
[Paper Review] When WENO Smears Small Eddies — Fu (2019) Low-Dissipation TENO Finite-Volume Scheme
custom vizRankineVortexExplorer
Two Faces of a Whirl — Free Vortex, Forced Vortex, and Helmholtz
custom vizSPHParticleDrop2D
SPH Without Tears — Solving Fluids with Particles, from Kernel to Artificial Viscosity
custom vizSPHKernelShapeExplorer
SPH Without Tears — Solving Fluids with Particles, from Kernel to Artificial Viscosity
custom vizBurgersShockBirth
When Characteristics Collide, a Shock Is Born — Burgers and the (x,t) Plane
custom vizMUSCLTHINCBVDPicker
[Paper Review] Pick the Reconstruction with Smaller Jumps — Deng (2018) MUSCL-THINC-BVD
custom vizHeatDiffusionExplicitVsImplicit1D
Implicit Diffusion and the Thomas Algorithm — Buying Stability with One Tridiagonal Solve
custom vizReynoldsDyeExperiment
When the Stream Breaks — Reynolds' Critical Number and the Layered Turbulent Boundary
custom vizLawOfTheWallProfile
When the Stream Breaks — Reynolds' Critical Number and the Layered Turbulent Boundary
custom vizMultigridVCycleConvergence
What Jacobi Cannot Kill in 10,000 Sweeps, a V-Cycle Kills in 10 — The Real Secret of Multigrid
custom vizMagnusCylinderStreamlines
Why a Spinning Ball Curves — Circulation, Magnus, and the Kutta–Joukowski Theorem
custom vizStartingVortexShedding
Why a Spinning Ball Curves — Circulation, Magnus, and the Kutta–Joukowski Theorem
custom vizAdvectionSchemeRace1D
When FTCS Trembles, Upwind Goes Numb — First-Order Advection, Artificial Viscosity, and the CFL Trade
custom vizWoodVsFrozenSoundSpeed
[Paper Review] Solve with Two Pressures, Merge to One — Saurel (2009) on Multiphase Pressure Relaxation
custom vizTwoPressureRelaxation1D
[Paper Review] Solve with Two Pressures, Merge to One — Saurel (2009) on Multiphase Pressure Relaxation
custom vizWaterPropertyVariation
[Paper Review] When 30 K Breaks Boussinesq — Demou (2018) NOB Natural Convection and the Pressure Split
custom vizPressureSplitCorrectionTerm
[Paper Review] When 30 K Breaks Boussinesq — Demou (2018) NOB Natural Convection and the Pressure Split
custom vizUnstructuredGradientLab
Skewed Cells Bend Gradients — Green–Gauss vs Least-Squares Reconstruction
custom vizMachConeRadiator
Above Mach 1, You Must Widen to Speed Up — The Laval Nozzle Paradox
custom vizLavalNozzleProfile
Above Mach 1, You Must Widen to Speed Up — The Laval Nozzle Paradox
custom vizVonNeumannShockTube1D
1950 — When von Neumann Deliberately Smeared the Shock: Artificial Viscosity and Odd-Even Decoupling
custom vizOddEvenSawtoothDemo
1950 — When von Neumann Deliberately Smeared the Shock: Artificial Viscosity and Odd-Even Decoupling
custom vizKineticShearMolecules
The Paramecium Swims Through Honey — Where Viscosity Comes From and Why Fourier and Fick Wrote the Same Line
custom vizTransportTriadGradients
The Paramecium Swims Through Honey — Where Viscosity Comes From and Why Fourier and Fick Wrote the Same Line
custom vizIBMCylinderMarkers2D
A Heart Valve Without a Body-Fitted Mesh — Peskin's Immersed Boundary Method and the Discrete Delta
custom vizNestedNewtonScalar1D
[Paper Review] Split Newton in Two and Free-Surface Becomes Solvable — Casulli–Zanolli (2012)
custom vizLowMachAcousticDamping1D
[Paper Review] Why Roe breaks at low Mach — Hope–Collins (2022) and three artificial-diffusion scalings
custom vizDiffusionScalingMatrix
[Paper Review] Why Roe breaks at low Mach — Hope–Collins (2022) and three artificial-diffusion scalings
custom vizDarcyForchheimerPumpCurve
Three Faces of Porous Flow — Darcy, Forchheimer, and Brinkman
custom vizBrinkmanChannelProfile
Three Faces of Porous Flow — Darcy, Forchheimer, and Brinkman
custom vizBlastDensityFloor1D
Where Negative Density Leaks In — A Positivity-Preserving Flux Limiter for Blast Waves
custom vizThetaPerFaceSelector
Where Negative Density Leaks In — A Positivity-Preserving Flux Limiter for Blast Waves
custom vizComplexCylinderFlow2D
Two Functions Added, and a Cylinder Appeared — Complex Potential and d'Alembert's Paradox
custom vizPotentialFlowSuperposition2D
Two Functions Added, and a Cylinder Appeared — Complex Potential and d'Alembert's Paradox
custom vizPolarStaticDrift1D
The Star That Started Moving — Well-Balanced FVM and Angular Momentum in Polar Coordinates
custom vizPolarSourceTermBalance
The Star That Started Moving — Well-Balanced FVM and Angular Momentum in Polar Coordinates
custom vizMultiSpeciesContactSensor1D
[Paper Review] One Scheme Can't Handle Every Wave — Chamarthi (2025)
custom vizThincSharpInterface1D
[Paper Review] One Scheme Can't Handle Every Wave — Chamarthi (2025)
custom vizMOODTroubledCellMap1D
[Paper Review] Suspect the Cell After Solving It — A Posteriori MOOD Subcell Limiter for DG
custom vizDMPRelaxedNADDetector
[Paper Review] Suspect the Cell After Solving It — A Posteriori MOOD Subcell Limiter for DG
custom vizHermiteTruncationVsMaxwell
Nine Arrows of Maxwell–Boltzmann — Why LBM's Equilibrium Is a Polynomial
custom vizD2Q9CollisionRelaxation
Nine Arrows of Maxwell–Boltzmann — Why LBM's Equilibrium Is a Polynomial
custom vizJetInCrossflowTrajectory
Why Smokestack Plumes Curl Up Instead of Lying Flat — The Jet in Crossflow and Its Counter-Rotating Vortex Pair
custom vizCounterRotatingVortexPair
Why Smokestack Plumes Curl Up Instead of Lying Flat — The Jet in Crossflow and Its Counter-Rotating Vortex Pair
custom vizDelaunayInsertionCanvas
Delaunay Triangulation — the Empty-Circumcircle Rule and Bowyer–Watson Insertion
custom vizEdgeFlipInCircleTest
Delaunay Triangulation — the Empty-Circumcircle Rule and Bowyer–Watson Insertion
custom vizStreamPathStreakComparison
Three Portraits of a Flow — Why Streamlines, Pathlines, and Streaklines Diverge
custom vizMaterialDerivativeNozzle
Three Portraits of a Flow — Why Streamlines, Pathlines, and Streaklines Diverge
custom vizOutflowAcousticReflection1D
How to Make an Outflow Stop Reflecting Sound — Navier–Stokes Characteristic Boundary Conditions
custom vizLODICharacteristicWaves
How to Make an Outflow Stop Reflecting Sound — Navier–Stokes Characteristic Boundary Conditions
custom vizAcousticTransportSplit1D
[Paper Review] Stop letting sound speed swallow your CFL — Peluchon (2017) acoustic-transport IMEX
custom vizRiemannSolverPositivityMap
[Paper Review] Stop letting sound speed swallow your CFL — Peluchon (2017) acoustic-transport IMEX
custom vizGPEAcousticPulseProbe1D
[Paper Review] Two-Phase Flow Without a Poisson Solver — Coupling the General Pressure Equation with MSTACS
custom vizMSTACSDonorAcceptorRamp1D
[Paper Review] Two-Phase Flow Without a Poisson Solver — Coupling the General Pressure Equation with MSTACS
custom vizMLSGradientRecovery1D
Saving Gradients on Unstructured Grids — Moving Least-Squares Approximation
custom vizMLSKernelInfluence2D
Saving Gradients on Unstructured Grids — Moving Least-Squares Approximation
custom vizKolmogorovEnergySpectrum
Turbulence Runs Three Rulers at Once — The Kolmogorov Cascade and the -5/3 Law
custom vizEddyCascadeBreakup
Turbulence Runs Three Rulers at Once — The Kolmogorov Cascade and the -5/3 Law
custom vizRoeWaveStrengthBars
The Euler Eigensystem in an Arbitrary Direction — Three Waves, Two Repeats, One Singularity
custom vizRayleighBenardCells
Fluid That Warms Up While Standing Still — Natural Convection and Rayleigh 1708
custom vizNusseltRayleighCurve
Fluid That Warms Up While Standing Still — Natural Convection and Rayleigh 1708
custom vizGhostFluidInterface1D
Filling an Interface with a Fluid That Isn't There — The Ghost Fluid Method
custom vizOriginalVsModifiedGFM1D
Filling an Interface with a Fluid That Isn't There — The Ghost Fluid Method
custom vizAcousticConvectiveScales
[Paper Review] GMRES Ran 1000 Times and Still Wouldn't Stop — Physics-Based Block Preconditioning for an All-Speed Melt Pool
custom vizEpsilonGreedyJetAgent
[Paper Review] How a DQN Tamed Airfoil Vortices with a Synthetic Jet — Reinforcement-Learning Flow Control
custom vizSyntheticJetWakeControl
[Paper Review] How a DQN Tamed Airfoil Vortices with a Synthetic Jet — Reinforcement-Learning Flow Control
custom vizMovingPointSegmentCCD2D
When a Bullet Passes Straight Through a Wall — Continuous Collision Detection by Inclusion Bisection
custom vizInclusionBisectionToiExplorer
When a Bullet Passes Straight Through a Wall — Continuous Collision Detection by Inclusion Bisection
custom vizDragCrisisCurve
Why a Rougher Ball Flies Farther — The Drag Crisis and Boundary-Layer Separation
custom vizCylinderWakeSeparation
Why a Rougher Ball Flies Farther — The Drag Crisis and Boundary-Layer Separation
custom vizEntropicAlphaSolver
Entropy Stops the Blow-Up — Karlin's Entropic Lattice Boltzmann
custom vizHTheoremCollisionGuard
Entropy Stops the Blow-Up — Karlin's Entropic Lattice Boltzmann
custom vizBoilingCurveExplorer
Heating It Hotter Made It Cooler — The Boiling Curve and Critical Heat Flux
custom vizLeidenfrostDropletDemo
Heating It Hotter Made It Cooler — The Boiling Curve and Critical Heat Flux
custom vizRotatingFrameParticleTrajectory
Solving an Impeller by Holding It Still — Rotating Frames and MRF
custom vizMrfZoneInterface
Solving an Impeller by Holding It Still — Rotating Frames and MRF
custom vizThincReconstructionLab
[Paper Review] Drawing Shocks with tanh — Implementing TENO-THINC Reconstruction
custom vizContactAdvectionDecay
[Paper Review] Drawing Shocks with tanh — Implementing TENO-THINC Reconstruction
custom vizAcousticImpedanceTube1D
Why a Shout Above Water Never Reaches Below — Acoustics Across a Diffuse Interface
custom vizSnellAcousticRefraction
Why a Shout Above Water Never Reaches Below — Acoustics Across a Diffuse Interface
custom vizBcgEdgeStatePredictor1D
Advecting Without Splitting Directions — The Bell-Colella-Glaz Unsplit Upwind Scheme
custom vizSolidBodyScalarAdvection2D
Advecting Without Splitting Directions — The Bell-Colella-Glaz Unsplit Upwind Scheme
custom vizContactAngleWettingLab
Why Droplets Are Round and Water Climbs the Glass — Surface Tension and Contact Angle
custom vizCapillaryRiseExplorer
Why Droplets Are Round and Water Climbs the Glass — Surface Tension and Contact Angle
custom vizCurvilinearGridMapper
Wrapping a Rectangular Grid Around a Wing — Curvilinear Coordinate Transforms and Grid Metrics
custom vizWallClusteringStretch1D
Wrapping a Rectangular Grid Around a Wing — Curvilinear Coordinate Transforms and Grid Metrics
custom vizAreaMachDualSolution
To Go Supersonic, Widen the Pipe — The De Laval Nozzle and Choking
custom vizDeLavalNozzleFlow
To Go Supersonic, Widen the Pipe — The De Laval Nozzle and Choking
custom vizMachSplitFunctions
Catching Shocks Without Multiplying a Matrix at Every Face — AUSM Flux Splitting
custom vizAusmEulerShockTube
Catching Shocks Without Multiplying a Matrix at Every Face — AUSM Flux Splitting
custom vizGrpHalfStepInterface1D
[Paper Review] Second-Order Accuracy in a Single Stage — A GRP Solver for the Kapila Multiphase Model
custom vizKapilaVolumeFractionBound
[Paper Review] Second-Order Accuracy in a Single Stage — A GRP Solver for the Kapila Multiphase Model
custom vizLowMachWaveDecay1D
[Paper Review] Not Killing Sound at Low Mach — An AP IMEX Wave Scheme
custom vizNumericalDiffusionScaling
[Paper Review] Not Killing Sound at Low Mach — An AP IMEX Wave Scheme
custom vizAbsoluteStabilityRegion
When Explicit Blows Up, Solve Implicit Without Inverting the Matrix — LU-SGS
custom vizLuSgsSweepConvergence
When Explicit Blows Up, Solve Implicit Without Inverting the Matrix — LU-SGS
custom vizBoundaryLayerAnalogyCanvas
Measure the Drag, Get the Heat Transfer — The Reynolds Analogy
custom vizFrictionHeatAnalogyChart
Measure the Drag, Get the Heat Transfer — The Reynolds Analogy
custom vizGmresConvergenceLab
Solving Without Inverting the Matrix — GMRES and the Arnoldi Subspace
custom vizArnoldiHessenbergViz
Solving Without Inverting the Matrix — GMRES and the Arnoldi Subspace
custom vizOttoDieselPVDiagram
Why Gasoline Engines Stop at a Compression Ratio of 12 — Otto vs Diesel
custom vizCycleEfficiencyCurve
Why Gasoline Engines Stop at a Compression Ratio of 12 — Otto vs Diesel
custom vizMRTMomentRelaxationLab
Surviving the Low-Viscosity Regime Where BGK Blows Up — MRT Lattice Boltzmann Collision
custom vizMRTLatticeVortexCanvas
Surviving the Low-Viscosity Regime Where BGK Blows Up — MRT Lattice Boltzmann Collision
custom vizSevenEquationRelaxationLab
Giving Each Phase Its Own Equations — The Baer–Nunziato Seven-Equation Model
custom vizBNModelHierarchyExplorer
Giving Each Phase Its Own Equations — The Baer–Nunziato Seven-Equation Model
custom vizCapillaryWaveBreach
Why Droplet Simulations Get Trapped by Δt — Solving Surface Tension Implicitly
custom vizCapillaryStepConstraint
Why Droplet Simulations Get Trapped by Δt — Solving Surface Tension Implicitly
custom vizSerConvergenceRaceLab
CFL = 1 takes ten thousand steps, CFL = 100 explodes — Switched Evolution Relaxation
custom vizCflRampScheduleViz
CFL = 1 takes ten thousand steps, CFL = 100 explodes — Switched Evolution Relaxation
custom vizVanDerWaalsIsotherm
Where the Ideal Gas Starts to Lie — Compressibility Factor Z and the van der Waals Equation
custom vizNonOrthogonalFaceDecomposition
When the Mesh Skews, the Laplacian Leaks — Non-Orthogonal Diffusion Correction
custom vizDeferredCorrectionContraction
When the Mesh Skews, the Laplacian Leaks — Non-Orthogonal Diffusion Correction
custom vizSpecificEnergyDiagram
The Shock Wave in Your Kitchen Sink — Froude Number and the Hydraulic Jump
custom vizHydraulicJumpCanvas
The Shock Wave in Your Kitchen Sink — Froude Number and the Hydraulic Jump
custom vizHelmholtzHodgeSplit
The Man Who Erased Pressure — Chorin's Projection Method and Fractional Step
custom vizProjectionFluidCanvas
The Man Who Erased Pressure — Chorin's Projection Method and Fractional Step
custom vizJinXinRelaxationLab
[Paper Review] Fooling a Nonlinear Flux Into Behaving Linearly — Jin–Xin & Suliciu Relaxation
custom vizSubcharacteristicSpeedChart
[Paper Review] Fooling a Nonlinear Flux Into Behaving Linearly — Jin–Xin & Suliciu Relaxation
custom vizDualNumberDerivativeLab
[Paper Review] Tired of Differentiating Jacobians by Hand? — Operator-Overloading Automatic Differentiation (ADOO)
custom vizNewtonJacobianConvergenceLab
[Paper Review] Tired of Differentiating Jacobians by Hand? — Operator-Overloading Automatic Differentiation (ADOO)
custom vizLimiterReconstructionLab
The Fake Extrema a Second-Order Reconstruction Invents on Unstructured Grids — Barth–Jespersen and Venkatakrishnan Limiters
custom vizTabDropletOscillator
Why a Raindrop Is Not Tear-Shaped — The Weber Number and TAB Breakup
custom vizWeberRegimeLadder
Why a Raindrop Is Not Tear-Shaped — The Weber Number and TAB Breakup
custom vizBowyerWatsonDelaunay
Two Philosophies for Triangulating a Point Cloud — Bowyer–Watson and Advancing Front
custom vizDelaunayEdgeFlip
Two Philosophies for Triangulating a Point Cloud — Bowyer–Watson and Advancing Front
custom vizRayleighBenardCells
Chaos That Begins at the Bottom of a Pot — Rayleigh–Bénard Convection and the Lorenz Equations
custom vizLorenzConvectionAttractor
Chaos That Begins at the Bottom of a Pot — Rayleigh–Bénard Convection and the Lorenz Equations
custom vizBarElementStiffnessMatrix
Why Does the Bridge Sag Like That? The Direct Stiffness Method for Trusses
custom vizTrussDeflectionSolver
Why Does the Bridge Sag Like That? The Direct Stiffness Method for Trusses
custom vizAcousticConvectiveSplitDemo
Letting Sound and Matter Flow Separately — Acoustic-Convective Splitting (Lagrange-Projection)
custom vizWaveSpeedSplitChart
Letting Sound and Matter Flow Separately — Acoustic-Convective Splitting (Lagrange-Projection)
custom vizKellerMiksisBubble
[Paper Review] When a Microbubble Burns Like a Star — Keller–Miksis and the Secondary Bjerknes Force
custom vizBubblePairBjerknes
[Paper Review] When a Microbubble Burns Like a Star — Keller–Miksis and the Secondary Bjerknes Force
custom vizRoeWaveFanExplorer
What You Give Up the Exact Riemann Solution For — the Roe Solver and the Entropy Fix
custom vizBurgersEntropyGlitch
What You Give Up the Exact Riemann Solution For — the Roe Solver and the Entropy Fix
custom vizShearDispersionExplorer
Waves Hanging in the Sky — The Kelvin-Helmholtz Instability
custom vizMagnusCylinderStreamlines
Why a Spinning Ball Curves — the Magnus Effect and Circulation
custom vizSpinningBallTrajectory
Why a Spinning Ball Curves — the Magnus Effect and Circulation
custom vizLeastSquaresGradientLab
When Gradients Go Wrong on Skewed Meshes — Green–Gauss vs. Weighted Least-Squares Reconstruction
custom vizStencilConditioningExplorer
When Gradients Go Wrong on Skewed Meshes — Green–Gauss vs. Weighted Least-Squares Reconstruction
custom vizFourEqInterfaceOscillation
Fewer Equations, and It Stopped Blowing Up — The Four-Equation Model and the Interface Equilibrium Condition
custom vizParasiticCurrentField
Why a Droplet at Rest Starts to Flow — Parasitic Currents and Well-Balanced Surface Tension
custom vizEllipsoidalDropOscillation
Why a Droplet at Rest Starts to Flow — Parasitic Currents and Well-Balanced Surface Tension
custom vizCouetteBounceBackLab
In Lattice Boltzmann, the Wall Isn't on the Node — Bounce-Back and Zou-He Boundaries
custom vizBounceBackStencil
In Lattice Boltzmann, the Wall Isn't on the Node — Bounce-Back and Zou-He Boundaries
custom vizWaveDispersionExplorer
A Single Ripple Outruns Its Own Group — Wave Dispersion and Group Velocity
custom vizRipplePacketCanvas
A Single Ripple Outruns Its Own Group — Wave Dispersion and Group Velocity
custom vizCheckerboardRhieChow
When Pressure Rings in a Checkerboard — SIMPLE and Rhie-Chow Coupling
custom vizPressureCorrectionRelaxLab
When Pressure Rings in a Checkerboard — SIMPLE and Rhie-Chow Coupling
custom vizPipeDevelopingFlow
How Far Must Water Flow Before It Becomes a Parabola — Entrance Length and Hagen–Poiseuille
custom vizPoiseuilleFrictionExplorer
How Far Must Water Flow Before It Becomes a Parabola — Entrance Length and Hagen–Poiseuille
custom vizAcousticPulseSplit1D
Supersonic Flow Can't See Upstream — Characteristics and Sound Waves in the Euler Equations
custom vizCharacteristicConeXT
Supersonic Flow Can't See Upstream — Characteristics and Sound Waves in the Euler Equations
custom vizInterfaceSharpeningLab1D
Un-smearing the Interface Every Step — Implementing Anti-Diffusion Sharpening (IST)
custom vizShockBubbleSharpenGrid
Un-smearing the Interface Every Step — Implementing Anti-Diffusion Sharpening (IST)
custom vizLowMachIMEXPulseLab
The Mach Number Goes to Zero, the Time Step Doesn't Budge — Reproducing an IMEX TVD Scheme
custom vizAcousticCFLBudget
The Mach Number Goes to Zero, the Time Step Doesn't Budge — Reproducing an IMEX TVD Scheme
custom vizForcedChannelSchemeLab
Where Half the Force Goes in LBM — Four Forcing Schemes and 1−1/(2τ)
custom vizForceMomentBudgetDial
Where Half the Force Goes in LBM — Four Forcing Schemes and 1−1/(2τ)
custom vizWrinkledFlameFrontLab
Where Turbulence Stops Speeding Up a Flame — Damköhler's Wrinkling Hypothesis and Bending
custom vizVortexFlameCrossingLab
Where Turbulence Stops Speeding Up a Flame — Damköhler's Wrinkling Hypothesis and Bending
custom vizSchonhardtTwistLab
The Mesher That Dies Defending Your Boundary — Constrained Delaunay and Steiner Points
custom vizMissingSegmentSplitLab
The Mesher That Dies Defending Your Boundary — Constrained Delaunay and Steiner Points
custom vizDropletShrinkD2Law
Why Laundry Dries at 5 °C — Diffusion-Limited Evaporation vs. Heat-Driven Boiling
custom vizInterfaceSuperheatRelaxer
Why Laundry Dries at 5 °C — Diffusion-Limited Evaporation vs. Heat-Driven Boiling
custom vizAnisotropicSmootherArena
Where Jacobi Dies on a Boundary-Layer Mesh — the Linelet Line-Implicit Preconditioner
custom vizLineletChainBuilder
Where Jacobi Dies on a Boundary-Layer Mesh — the Linelet Line-Implicit Preconditioner
custom vizAcousticImpedanceMirror
[Paper Review] A Droplet Sends Almost Every Sound Wave Back — Acoustic Impedance and a Sharp-Interface Two-Phase Solver
custom vizSmearedInterfaceSoundSpeedRace
[Paper Review] A Droplet Sends Almost Every Sound Wave Back — Acoustic Impedance and a Sharp-Interface Two-Phase Solver
custom vizMachCouplingSeesaw
[Paper Review] How to Delete Under-Relaxation — Linearisation in a Coupled Pressure-Based Solver
custom vizMassFluxCobwebLinearisation
[Paper Review] How to Delete Under-Relaxation — Linearisation in a Coupled Pressure-Based Solver
custom vizKernelWobbleLab
A Wall the Grid Never Sees — IBM Delta Kernels and Multi-Direct Forcing
custom vizMarkerSpacingLeakLab
A Wall the Grid Never Sees — IBM Delta Kernels and Multi-Direct Forcing
custom vizOutletRelaxationDuct
The Outlet Is Open, Yet the Wave Comes Back — NSCBC and the Price of σ
custom vizCharacteristicLedgerBoundary
The Outlet Is Open, Yet the Wave Comes Back — NSCBC and the Price of σ
custom vizVacuumRarefactionCrashLab
Mass Is Conserved Exactly, Yet the Density Is Negative — The Positivity-Preserving Flux Limiter
custom vizThetaBudgetSplitDial
Mass Is Conserved Exactly, Yet the Density Is Negative — The Positivity-Preserving Flux Limiter
custom vizObliqueShockPolarDial
Four Shocks Beat One — The Oblique Shock Train in a Supersonic Inlet
custom vizRampTrainRecoveryLab
Four Shocks Beat One — The Oblique Shock Train in a Supersonic Inlet
custom vizTVSplitWaveFanBN
[Paper Review] Prying Advection and Pressure Fully Apart — TV Flux Splitting for Baer–Nunziato
custom vizPSystemInvariantLinearizer
[Paper Review] Prying Advection and Pressure Fully Apart — TV Flux Splitting for Baer–Nunziato
custom vizLohnerTagBufferQuadtree
Same Answer From 18% of the Cells — AMR Tagging Criteria and Coarse-Fine Refluxing
custom vizFluxRegisterLedger
Same Answer From 18% of the Cells — AMR Tagging Criteria and Coarse-Fine Refluxing
custom vizVortexExponentKeplerDial
Viscosity Is Not What Kills a Vortex — Newton's 1/r and the Lamb–Oseen Core
custom vizSwirlDecayDiffusionLab
Viscosity Is Not What Kills a Vortex — Newton's 1/r and the Lamb–Oseen Core
custom vizShearLockingBeamBench
Thinner Means Stiffer — Shear Locking in Shell Elements and the MITC Tying Fix
custom vizMitcTyingBoard
Thinner Means Stiffer — Shear Locking in Shell Elements and the MITC Tying Fix
custom vizBargeHeelMetacenterBench
The Weight Sits on Top and She Still Rights Herself — Metacentric Height and the Free Surface Effect
custom vizFreeSurfaceSubdivisionLoll
The Weight Sits on Top and She Still Rights Herself — Metacentric Height and the Free Surface Effect
custom vizLatticeDriftDiffusionScope
Raise the Velocity, Lose 27% of Your Diffusion — The Extra Flux in LBM Convection-Diffusion
custom vizGhostFluxCancelBench
Raise the Velocity, Lose 27% of Your Diffusion — The Extra Flux in LBM Convection-Diffusion
custom vizMetricTensorBasisDial
Skew the Element 45° and the Stiffness Grows 2.5x — Metric Tensors and Constitutive Tensor Transformation
custom vizConstitutiveSkewEnergyBench
Skew the Element 45° and the Stiffness Grows 2.5x — Metric Tensors and Constitutive Tensor Transformation
custom vizShockSpeedFormSplitTrack
The Shock Never Left the Starting Line — Where Conservative and Primitive Forms Split
custom vizMachDensityBudgetGauge
The Shock Never Left the Starting Line — Where Conservative and Primitive Forms Split
custom vizGaussPointExactnessDial
One Fewer Quadrature Point and the Solution Blew Up — DG's Integration Floor and the Taylor Basis
custom vizDgUnderIntegrationRunway
One Fewer Quadrature Point and the Solution Blew Up — DG's Integration Floor and the Taylor Basis
custom vizFranklinStoveDraftLoop
Sending the smoke down 1 m cost 7 Pa of draft — Franklin's stove and the buoyancy budget
custom vizNeutralPlaneRoomExchange
Sending the smoke down 1 m cost 7 Pa of draft — Franklin's stove and the buoyancy budget
custom vizVanDerWaalsMaxwellIsotherm
I Plugged in Pressure Directly and a Still Interface Started to Shiver — Two Forms of Nonideal LBM Forcing
custom vizForcingFormGhostInterface
I Plugged in Pressure Directly and a Still Interface Started to Shiver — Two Forms of Nonideal LBM Forcing
custom vizTwoFluidEigenvalueDial
Halving the mesh made the blow-up arrive twice as fast — complex eigenvalues in the 6-equation two-fluid model
custom vizIllPosedMeshRaceTrack
Halving the mesh made the blow-up arrive twice as fast — complex eigenvalues in the 6-equation two-fluid model
custom vizUnknownPdfNodeCounter
Three at a wall, five at a corner — counting the populations an LBM boundary node loses
custom vizBoundaryPdfLayoutStrider
Three at a wall, five at a corner — counting the populations an LBM boundary node loses
custom vizTravelingHalvesStringStage
The Kinked String Was Fine, the Cut String Overshot by 9% — How the 1747 Wave-Equation Fight Ended Numerically
custom vizTrapezoidTauShiftMarcher
I Dropped the −1/2 and the Viscosity Came Back Six Times Too Large — the Δt/2 Left Behind by LBM's Discretisation
custom vizHalfTauViscosityRuler
I Dropped the −1/2 and the Viscosity Came Back Six Times Too Large — the Δt/2 Left Behind by LBM's Discretisation
custom vizRothalpyBladeChannelTracer
The Coriolis Force Did Zero Work, Yet the Impeller Added 1800 J/kg — Energy in a Rotating Frame
custom vizCoriolisZeroWorkLedger
The Coriolis Force Did Zero Work, Yet the Impeller Added 1800 J/kg — Energy in a Rotating Frame
custom vizSkewGradientEnergyBasin
Pushing the cell Péclet number to 2 drove the solution to -0.33 — where the energy to minimize disappeared
custom vizCellPecletOscillationLab
Pushing the cell Péclet number to 2 drove the solution to -0.33 — where the energy to minimize disappeared
custom vizBlockCouplingLoopGainScope
At acoustic CFL 10 the preconditioner multiplied the error by 100 every sweep — the one arrow a block preconditioner throws away
custom vizCapillaryWaveAmplitudeTracer
Raising the time step 5x ran 1.9x faster; 10x ran no faster at all — the window implicit surface tension opens
custom vizBreachFactorSpeedupWindow
Raising the time step 5x ran 1.9x faster; 10x ran no faster at all — the window implicit surface tension opens
custom vizRotationStrainGaugeDial
A 30° rigid rotation read -13% strain — conjugate stress-strain pairs in large-strain shells
custom vizRodriguesOrderDriftTracer
A 30° rigid rotation read -13% strain — conjugate stress-strain pairs in large-strain shells
custom vizFourthPowerFlowTwinTube
A 1% Error in Diameter Is a 4% Error in Flow Rate — Half a Cell of Wall and Poiseuille's Constant
custom vizExponentFitNoiseBench
A 1% Error in Diameter Is a 4% Error in Flow Rate — Half a Cell of Wall and Poiseuille's Constant
custom vizRefinementGateStrainInflator
ρ and u Agree to the Last Digit While the Strain Rate Swells 45% — Nonequilibrium Rescaling at an LBM Refinement Interface
custom vizExplosionCoalescenceClock
ρ and u Agree to the Last Digit While the Strain Rate Swells 45% — Nonequilibrium Rescaling at an LBM Refinement Interface
custom vizRankineCoreHeadProbe
Where Total Pressure Dropped 1,080 Pa, Dissipation Was Zero — When the Bernoulli Constant Crosses Streamlines
custom vizShearInflowLossSeparator
Where Total Pressure Dropped 1,080 Pa, Dissipation Was Zero — When the Bernoulli Constant Crosses Streamlines
custom vizPrandtlLockTwinDecay
Doubling τ Left Pr at 1.0000 — The Two Constants Locked Inside Thermal LBM
custom vizSpecificHeatDofGammaTuner
Doubling τ Left Pr at 1.0000 — The Two Constants Locked Inside Thermal LBM
custom vizAlignmentTorqueContactPair
[Paper Review] Two Fragments Flew Together Instead of Pushing Apart — The 144° Equilibrium of a Mach 20 Sphere Pair
custom vizPressureNonDisturbanceLab
Pressure Jumped 21% in a Problem Where Nothing Should Happen — The Abgrall Criterion and the Nonconservative Term
custom vizOctreeVoxelSatClassifier
27 of 1,681 Voxels Flipped Inside Out — Ray Parity and Link Cutting in STL Voxelization
custom vizBoundaryLinkCutDial
27 of 1,681 Voxels Flipped Inside Out — Ray Parity and Link Cutting in STL Voxelization
custom vizDistortionDragOscillator
A 9% Smaller Drag Coefficient Left the Droplet 35% Slower — Where the Distortion and Vaporization Corrections Attach
custom vizTorsionDuctPoissonTwin
One Integral Read as 0.1406 and 56.91 — Torsion Stress Function and Duct Laminar Flow
custom vizSoapFilmSlopePeakProbe
One Integral Read as 0.1406 and 56.91 — Torsion Stress Function and Duct Laminar Flow
custom vizGermanoTwoFilterLeonardTrace
49.9% of the Dynamic Coefficients Came Out Negative — the Germano Identity and the Averaging Operator
custom vizDynamicCoefficientAveragingMap
49.9% of the Dynamic Coefficients Came Out Negative — the Germano Identity and the Averaging Operator
custom vizCubicMomentGapDial
Pushing the Frame to 0.2 Cut the Viscosity by 5.97% — The Missing Third Moment in LBM Equilibria
custom vizGalileanDriftVortexRacer
Pushing the Frame to 0.2 Cut the Viscosity by 5.97% — The Missing Third Moment in LBM Equilibria
custom vizPipeProfileEnergyLedger
2.0000 in laminar flow, 1.0322 in turbulent — the coefficient in front of the velocity head
custom vizDefectLawCollapseSlider
2.0000 in laminar flow, 1.0322 in turbulent — the coefficient in front of the velocity head
custom vizAntiDiffusionWidthLock
Mobility Up 10×, Interface Width Unchanged — The Anti-Diffusion Term in Conservative Allen–Cahn
custom vizLatticeGradientIsotropyRose
Mobility Up 10×, Interface Width Unchanged — The Anti-Diffusion Term in Conservative Allen–Cahn
custom vizAcousticCflBudgetDial
The bill for a 1001x larger time step — why a semi-implicit pressure scheme is not L∞ stable
custom vizThetaOvershootPersistence
The bill for a 1001x larger time step — why a semi-implicit pressure scheme is not L∞ stable
custom vizInvolutionDriftTwinGrid
[Paper Review] The Same Point Read 0.544 Apart Along Two Paths — Curl Involutions on a Staggered Grid
custom vizPathGapLoopIntegrator
[Paper Review] The Same Point Read 0.544 Apart Along Two Paths — Curl Involutions on a Staggered Grid
custom vizPowerLawTauLadder
One node pushed the error from 0.21% to 76% — local relaxation time in power-law LBM
custom vizNeqShearCobwebDial
One node pushed the error from 0.21% to 76% — local relaxation time in power-law LBM
custom vizStrainSqueezedMixtureLayer
202x More Scalar Dissipation, 13% Less Temperature — Where a Laminar Flamelet Quenches
custom vizFlameletQuenchScurveDial
202x More Scalar Dissipation, 13% Less Temperature — Where a Laminar Flamelet Quenches
custom vizSpeciesTauMassLeakLab
Giving every species its own tau threw the total mass off by 16.8% — correction velocity in multicomponent LBM
custom vizCorrectionFluxArrowBalance
Giving every species its own tau threw the total mass off by 16.8% — correction velocity in multicomponent LBM
custom vizKelvinWedgeDepthDial
Four times the speed, still 19.47 degrees — where water depth blows the Kelvin wedge open to 90
custom vizRayAngleStationaryPhase
Four times the speed, still 19.47 degrees — where water depth blows the Kelvin wedge open to 90
custom vizRefineCycleLadder
Moving refine one line below stream cost a 7.2x error — the recursive time cycle of LBM AMR
custom vizGhostScheduleErrorTrack
Moving refine one line below stream cost a 7.2x error — the recursive time cycle of LBM AMR
custom vizParticlePairingTensionLab
[Paper Review] 0.333 in Tension, 0 in Compression — Where SPH Particles Start Pairing Up
custom vizSwegleSignBandKernel
[Paper Review] 0.333 in Tension, 0 in Compression — Where SPH Particles Start Pairing Up
custom vizRelativeVelocityBlowupLab
[Paper Review] The Pressure Went Implicit and Δt Still Shrank 100× — the Second 1/M² Hiding in the Relative Velocity
custom vizHalfStepViscosityDial
At tau = 0.51 I read the viscosity 51x too high — the half step left behind by the discrete LBE
custom vizTrapezoidKickQuadratureLab
At tau = 0.51 I read the viscosity 51x too high — the half step left behind by the discrete LBE
custom vizGibbsOvershootSeriesLab
Refining the Grid 8x Never Moved 2.4674 — Two Constants Fourier Left Behind in 1807
custom vizNyquistDecayLagDial
Refining the Grid 8x Never Moved 2.4674 — Two Constants Fourier Left Behind in 1807
custom vizForceMomentLockLadder
Filling the Third Moment Honestly Made the Error 2.8x Worse — What a Forcing Term Actually Owes
custom vizThirdMomentLeakStreamer
Filling the Third Moment Honestly Made the Error 2.8x Worse — What a Forcing Term Actually Owes
custom vizMeanFreePathCancelChamber
Deriving μ and k from One Formula Put Pr Off by 1.98× — the 9/4 Behind a 123.5 K Wall Temperature
custom vizEuckenSplitPrandtlDial
Deriving μ and k from One Formula Put Pr Off by 1.98× — the 9/4 Behind a 123.5 K Wall Temperature
custom vizTernaryLeakProfileLab
I asked for σ₁₂ = 1.00 and got 0.78 — where an absent phase leaks into the interface in three-component Allen–Cahn
custom vizNeumannTriangleKappaDial
I asked for σ₁₂ = 1.00 and got 0.78 — where an absent phase leaks into the interface in three-component Allen–Cahn
custom vizAcidClosureSqueezeCell
I dropped K and the water compressed 1.86x too much — an interface error that refinement does not remove
custom vizWeakScalingTreadmillLab
I Added 64x the Cores and Weak-Scaling Efficiency Fell to 16.3% — The Trap of Measuring It by Refining the Grid
custom vizLevelLadderEfficiencyDial
I Added 64x the Cores and Weak-Scaling Efficiency Fell to 16.3% — The Trap of Measuring It by Refining the Grid
custom vizHermiteNodeMomentBench
Degree six returned 9 where 15 was required — the three Hermite roots that fixed D2Q9
custom vizLatticeTensorMomentDial
Degree six returned 9 where 15 was required — the three Hermite roots that fixed D2Q9
custom vizFlameletSCurveLookupLab
One χ=50, two temperatures: 1759 K and 818 K — where a flamelet library folds
custom vizProgressVariableFoldDial
One χ=50, two temperatures: 1759 K and 818 K — where a flamelet library folds
custom vizShockNormSplitBench
The Same Code Gave 0.79 and 2.00 at Once — What Verification Cases Actually Measure
custom vizSolutionSmoothnessOrderDial
The Same Code Gave 0.79 and 2.00 at Once — What Verification Cases Actually Measure
custom vizSectorPruneSearchLab
Cutting Distance Checks 574x Lost 104 Contacts — One Grain Sets the DEM Sector Size
custom vizShellCostCrossoverDial
Cutting Distance Checks 574x Lost 104 Contacts — One Grain Sets the DEM Sector Size
custom vizCurvatureMeltDropletLab
A Motionless Droplet Melted to Half Its Mass — The Curvature Term Conservative Allen–Cahn Erases
custom vizSharpFluxMomentDial
A Motionless Droplet Melted to Half Its Mass — The Curvature Term Conservative Allen–Cahn Erases
custom vizSplitCharacteristicFanLab
Water's 1625 m/s Sound Speed Became 18 m/s in the Pressure Subsystem — Where Toro–Vázquez Splitting Moves the Stiffness
custom vizImplicitPressurePulseLab
Water's 1625 m/s Sound Speed Became 18 m/s in the Pressure Subsystem — Where Toro–Vázquez Splitting Moves the Stiffness
custom vizGreenGaussAreaMismatchMap
I Gave Curved Cells Their True Area and ∂x/∂x Stopped Being 1 — Why the Diagonal Cross-Product Area Fits Green–Gauss
custom vizRelaxedRhieChowColumnLab
Changing One Relaxation Factor Moved the Converged Solution — Where Rhie–Chow Face Velocities Remember Under-Relaxation
custom vizTetraClusterBluntnessLab
[Paper Review] The Tetrahedron That Led With One Sphere Never Broke Apart — A Bluntness Index for Mach 20 Fragment Clusters
custom vizIncrementGapGaugeLab
Halving the Grid Spacing Tripled the Error — What an Increment-Based Stopping Rule Hides in Jacobi Iteration
custom vizReverseRateReactorRace
Dividing the Reverse Rate by Kp Split 99.6% of AlO at 2500 K — The (p°/RT)^Δn Hidden in the Equilibrium Constant
custom vizShiftedEquilibriumParabolaLab
Changing only τ changed the density of a gas at rest — the (τ−½)² stress of Shan–Chen velocity-shift forcing
custom vizForcedColumnStressRace
Changing only τ changed the density of a gas at rest — the (τ−½)² stress of Shan–Chen velocity-shift forcing
custom vizKortewegStressProbeLab
A Two-Cell Interface Loses 39% of Its Surface Tension — The Anisotropy of the Korteweg Stress
custom vizKortewegLatticeRelaxRace
A Two-Cell Interface Loses 39% of Its Surface Tension — The Anisotropy of the Korteweg Stress
custom vizPresumedPdfQuadratureRace
A Small Wobble in Mixture Fraction Drops the Mean Flame Temperature by 964 K — Presumed β-PDF and the Infinity at Z=0
custom vizHalfForceMomentumLedgerLab
Velocity came out one sixth at τ=0.6 — dropping the half-force F/2 from Guo forcing
custom vizKolmogorovHalfForceRace
Velocity came out one sixth at τ=0.6 — dropping the half-force F/2 from Guo forcing
custom vizStencilCompare
FDM vs FEM vs FVM: The Essential Differences Between Three Discretization Techniques
custom vizVolumeFractionAdvect