Exact-cylinder steady Stokes
Static walkthrough · canonical Marimo source available
This page follows one frozen demonstration from exact authored geometry to a
common Result. It does not execute a notebook or solve in the browser. The
installed publication stays pinned to the exact producer revision. Source links
and evidence dossiers instead resolve through the exact site build revision;
none follows a branch.
Stage 1 Problem setup
The fluid region is a channel with an exact authored circle centred at and radius . The problem is two-dimensional, steady, incompressible Stokes flow.
Exact authored geometry and boundary names. The later demonstration mesh approximates the circle with 50 straight chords; this diagram is explanatory, not geometric evidence.
The canonical Python composition authors that geometry explicitly:
geometry_graph = eqiora.geometry.CadAuthoredGraph.rectangle_extrusion( x_bounds=(0.0, 2.2), y_bounds=(0.0, 0.41), plane_z=0.0, depth=1.0, modeling_tolerance=1e-10,).circular_through_cut( center=(0.2, 0.2), radius=0.05, boolean_tolerance=1e-10,)geometry = geometry_graph.planar_circular_section( classification_tolerance=1e-12, region="fluid", x_lower="inlet", x_upper="outlet", y_lower="walls", y_upper="walls", hole="cylinder",)Canonical Marimo geometry cell · exact geometry adapter · registered exact-geometry dossier · Python exact-geometry composition dossier
Stage 2 Eqiora model definition
The accepted source spelling is easiest to read by first naming the Cauchy stress. With velocity , pressure , dynamic viscosity , identity tensor , and force potential :
Here ,
, and pressure has source unit
kg/(m*s^2), displayed as pascals. This is a notation projection of the
Eqiora source below, not a new formulation.
Eqiora source form
relation momentum continuous on body { -div( 2 * dynamic_viscosity * symmetric_part(grad(velocity)) - isotropic_lift(pressure) ) - grad(force_potential) = 0;}relation incompressibility continuous on body { div(velocity) = 0;}Eqiora source form: packaged incompressible component · registered packaged incompressible source · registered packaged-Stokes dossier · registered direct Stokes model source
The application replays the packaged, byte-exact current Model rather than reconstructing scientific meaning in the notebook:
model_bytes = ( files(eqiora) .joinpath("examples", "steady-flow-past-cylinder.model.json") .read_bytes())model = eqiora.replay(model_bytes)Eqiora source form: canonical Marimo replay cell · current Model identity dossier
Stage 3 Mesh and boundaries
The inlet profile uses and channel height :
At the outlet, . The walls and cylinder use .
Eqiora source form
relation inlet_profile_definition continuous on body { inlet_profile - 4 * inlet_speed * coordinate(1) * (channel_height - coordinate(1)) / channel_height ^ 2 = 0;}relation inlet_velocity continuous on x_lower { trace(velocity) + normal(isotropic_lift(inlet_profile)) = 0;}relation outlet_traction continuous on x_upper { normal( 2 * dynamic_viscosity * symmetric_part(grad(velocity)) - isotropic_lift(pressure) ) = 0;}relation lower_wall continuous on y_lower { trace(velocity) = 0; }relation upper_wall continuous on y_upper { trace(velocity) = 0; }Accepted registered-case source form for the exact-hole closure
walls_and_cylinder: trace(u) = [0, 0] m/sEqiora source form: application boundary relations · accepted walls-and-cylinder trace boundary
The bounded realization requests at most 50 circular-boundary facets, then resolves and generates the source-bound mesh:
mesh_request = eqiora.meshing.MeshRequest( maximum_boundary_error=1e-4, minimum_mean_ratio=1e-5, maximum_boundary_facets=50,)mesh_plan = eqiora.meshing.resolve(geometry, mesh_request)mesh = eqiora.meshing.generate(geometry, plan=mesh_plan)Chordal reference-mesh dossier · chordal realization-binding dossier · canonical Marimo mesh cell · plain Python mesh adapter · Python mesh composition dossier
Stage 4 Submit and result
The immutable SteadyStokes intent makes every scale and solver bound explicit.
fluid.resolve binds the accepted Model and Mesh into a
SteadyStokesPlan; the application then creates one Run with one
eqiora.submit call and obtains one common Result with run.result().
stokes_intent = eqiora.fluid.SteadyStokes( length_scale_m=0.41, velocity_scale_m_per_s=0.3, pressure_scale_pa=0.001 * 0.3 / 0.41, relative_tolerance=1e-6, absolute_tolerance=1e-13, maximum_iterations=10_000,)stokes_plan = eqiora.fluid.resolve(model, stokes_intent, mesh=mesh)
run = eqiora.submit(model, plan=stokes_plan)result = run.result()The real carriers in that composition are Geometry, MeshPlan, Mesh,
Model, SteadyStokesPlan, Run, Result, and SteadyStokesEvidence. The
admitted Result lineage binds the following public identities:
| Carrier boundary | Public identity |
|---|---|
Model |
Result.model_digest |
exact Geometry |
Result.mesh(FieldRef).source_digest |
| authored correspondence | Result.mesh(FieldRef).correspondence_digest |
Mesh |
Result.mesh(FieldRef).digest |
SteadyStokesPlan realization |
Result.run_manifest().realization_digest |
Run / Result |
Result.run_manifest().digest |
pressure FieldSnapshot |
Result.field(FieldRef).digest |
These names expose existing identity links; the page does not invent another aggregate digest or pretend that static documentation executed the run.
Registered Plan-and-Run dossierStage 5 Pressure visualization
The canonical plotting cell selects the pressure FieldSnapshot from the
common Result and passes it to the general scalar-field adapter:
pressure = result.snapshots[0]evidence = eqiora.fluid.steady_stokes_evidence(result)pressure_figure = eqplot.plot_scalar_field(result, field=pressure.field)
Result evidence · Pressure-still presentation case
Read the figure only as a pressure field in pascals, with a viridis scale and the 104-triangle affine mesh overlaid. The admitted pixels are a static presentation of the linked Result; color and pixel values are not validation and do not establish flow quality.
Stage 6 Verified and not claimed
Verified boundary
Supported
- One frozen 2D steady incompressible Stokes exact-cylinder demonstration, rendered from its accepted public Result path and linked evidence.
- The exact geometry, source-bound chordal realization, packaged model, Plan-to-Run composition, and Marimo application each have a directly linked registered dossier.
- The installed publication record binds the admitted PNG, exact source revision, Result lineage, caption, alternative text, and presentation-only boundary.
Not claimed
- No curved elements.
- No mesh/PDE convergence.
- No drag/lift coefficient, scaled or mesh-independent force, or DFG value.
- No transient or Navier–Stokes behavior.
- No vortex shedding.
- No 3D.
- No production mesher.
- No performance claim.
- No cross-platform/byte-reproducible result.
- No pixel validation.
- API presence is neither verification nor maturity.
Browse the evidence catalog · exact geometry · chordal mesh · steady-Stokes science · common Result path · Marimo composition