Scope and limits#

What MIME declares of itself, and what it does not claim: the list of what the code states, so that you can judge whether an experiment of yours is inside it.

What MIME claims, and what it does not#

  • A declared limit is a statement, not a test. An entry’s validity lines say where its model holds. The build prints them as declared, not yet checked (the build report), and the checks the build does compute are listed apart (checked). A limit nothing tests is not a limit that was measured.

  • Agreement with a reference is not accuracy. Where an experiment is held to the earlier line’s outputs, as A and A0 are (tutorial A, tutorial A0), the test bounds how far MIME 0.3 is from the earlier line at the operating points it runs (A’s one, and A0’s two frequencies). The earlier code is a weak oracle, so it says nothing about the flow or about hardware.

  • A bound and an estimate are different things. A bound is an upper limit on an error over a stated domain; a measured maximum over some points is an estimate of it, not a bound. A comparison with measurements from hardware bounds the model’s error from above and includes the measuring apparatus’s own. Where MIME states a number of this kind, it names the claim record that holds it (see MIME-ANO-114 is one), and does not repeat the number in prose.

  • A first look is not a converged value. In the exploratory profile a numerical setting you did not choose takes a stated default, which the profile records as pending; research refuses it (profiles), and docs/choosing_spacing.md prices and judges the default for the MRS drag rung.

The profiles#

A profile says how much the build asks of an experiment. It never relaxes a validity limit or an input error. The definitions below are generated from the code’s own, and the table is the rules it applies:

The definition, as the code states it:

How much a build asks of an experiment. exploratory (the default): what an experiment leaves unstated is waived with a pending reason, recorded and stamped on every output, so a first run needs no paperwork; validity limits and input errors are refused as in every profile. research: each of those needs its reason, and a pending one is refused by name. strict holds a higher evidence standard, and confers nothing; it is not built yet, and refused in 0.3.0.

Profile

Built

exploratory

yes

research

yes

strict

no: refused as profile.reserved

What each built profile does with a class of finding (generate makes a waiver with a pending basis; basis accepts only the experiment’s own waiver or source with a basis; list lists the finding and never refuses it; refuse refuses it):

Class of finding

Covered by

exploratory

research

assumption

waiver

generate

basis

numerical_default

waiver

generate

refuse

pending

waiver

generate

refuse

simplification

waiver

generate

refuse

undeclared_default

waiver

generate

refuse

unevidenced

evidence

nothing

list

unsourced

source

nothing

list

strict holds a higher evidence standard and confers nothing by itself. It is refused by name until it is built, because a strict build now could apply only research’s rules and would claim a standard it does not apply.

The limits MIME’s entries declare#

Each entry declares where its model holds. These are the lines of MIME’s own entries, as their entry pages print them; the numbers in them are judged where they come from, on the entry’s page.

field provider point_dipole 0.1.0

  • evaluated outside the magnet: the field is singular at its centroid, and a point dipole is faithful only far from the magnet, against its radius (MIME-ANO-100); a validity line that checks the distance is a1’s

interaction contact 0.1.0

  • projection: the body’s centre held by its extent about its own axis plus the margin, its orientation unread: exact for a sphere, and for a body whose axis stays along a tube’s; a body turned across the tube is held as if it were not

interaction contact 0.4.0

  • projection: a rigid body against a fixed surface, each point at least the margin from it: where the hull’s kind answers the support query (the sphere, the ellipsoid, the cylinder, the capsule: closed forms; the screw: Newton’s steps on its own surface), at the body’s own point the search from the deepest of each group’s starts converges to (its nearest sample and each next nearest apart from those taken, as many as the hull’s shape can hold local deepest points against a flat wall), so the body keeps the margin to the support’s convergence (rounding); within the samples’ shortfall where a group’s search does not converge within its bound and the group holds its nearest sample, raising support_short when that sample is within the margin; the starts are counted against a flat wall, and against a curved one more of a group’s places can stand within the shortfall, unflagged (measured on screws at the coarsest spacings the guard admits, MIME-ANO-134 records how often); a kind with neither (the box, a lab’s mesh) at its samples, so the body reaches past them by up to their shortfall (the build report states it, and a spacing whose shortfall passes the margin is refused)

  • projection: a kind held by its samples is held at them, not at its line of contact, and a turning body’s samples arrive at the wall off it: the inelastic hold acts as a friction and a shaking set by the spacing, which a body of revolution spun on the floor shows by losing most of its spin, and script A’s screw by a contact that carries a share of the field’s torque (MIME-ANO-131 records the measurements, by samples and by support), raising the flag held_by_samples

  • projection: a screw held by its support still loses part of its spin rolling on the floor, where a smooth cylinder keeps its spin to the last bit, by an amount nearly flat in the spacing (MIME-ANO-131 records it), its cause not shown

  • projection: the margin is kept to what a fixed count of sweeps leaves: two points whose rows are coupled at c converge by c squared a sweep, and a body pressed into both walls with short levers is held to that, the pose projected back after the step taking the rest; the solve’s residual is the state’s contact_residual, and a step that leaves more than CONVERGED of the free step’s speed at the held points unmet raises unconverged: it reads the motion at those points, and a harder drive reads smaller for the same speed left unmet, not how far each point’s force is, which rows sharing a rim do not fix

  • projection: inelastic and frictionless (no traction along the surface, no static friction, no adhesion): friction at the contact is to be decided with the near-contact physics, and its seam is left in the sweeps

  • projection: admissibility only: it adds no near-wall lubrication, which a drag that includes it declares, and the plan refuses a second law on the body that includes it

  • projection: a rigid surface and a rigid body: no compliance of the wall or the body

  • projection: each step it holds one point of each of the hull’s eight groups, the deepest its starts reach: a body touching in more places than its groups (a screw lying along the floor on several crest passes in one group) is held at the group’s deepest of them, the rest taken by the projection after the step when they pass the margin: its first pass holds each group’s deepest where the step ended, its second each group’s deepest where the first left the body, beside the first’s points, and what the second’s turn leaves past the margin the next step takes

  • projection: the starts a group takes, its places and the samples’ shortfall are counted from the hull’s settings as built, as its candidates are: a study that moves a setting far keeps them

  • projection: a body with no hull is held as a sphere of its declared extent about its centre

interaction drag 0.3.0

  • each body’s drag is computed alone, from its own pose and the medium’s wall: a second body in the same medium does not change it, on either rung (no hydrodynamic interaction between bodies in MIME 0.3.0; the build reports the bodies that share a medium)

  • surrogate: quasi-steady Stokes flow (the limit of vanishing Reynolds number), as its training resistances were computed; the Reynolds number, by the body’s translation and by its turning, is computed after each run (the post-run watch) and flagged past the bound the entry declares

  • surrogate: de Jongh screw bodies (cross-section modulation 0.33, two starts) in a straight tube; nu, kappa and L/R checked against the training data at plan time; the offset declared up to 0.3 of the tube’s radius and clamped beyond 0.95 of the room to the wall; its accuracy against the MRS it was checked against is MIME-ANO-114’s, up to 16% in swim speed between 0.2 and 0.3 of the radius

  • surrogate: the resistance is moved from the end of the body’s axis, about which it was trained, to the centre of mass, half the body’s length along its x axis taken as the helix’s, which the surrogate takes to lie along the tube’s; it cannot see a tilt (away from the axis its resistance is a function of the body’s centre and of which way the body’s axis points along the tube, and of nothing else about the orientation)

  • surrogate: valid for a body whose axis lies within 5 degrees of the tube’s, a limit declared (mime.nodes.hydro.TILT_VALIDITY), not fitted, from one MRS measurement of FL-9 on the axis (docs/data/tilt_validity.json, scripts/tilt_validity.py): at that tilt the force-free swim speed differs from the aligned body’s by less than the 16% this entry states for the surrogate against the boundary element, and at the next tilt measured, in one of two directions, it does not; one spacing, one offset, one body, and the MRS itself not converged at that spacing; tilt_fired is raised at the step the tilt passes the limit, and bore_fired at the step the body, as the cylinder of its length and outer radius with its centre on the axis, no longer fits the bore

  • mrs: quasi-steady Stokes flow, the limit of vanishing Reynolds number; the Reynolds number, by the body’s translation and by its turning, is computed after each run (the post-run watch) and flagged past the bound the entry declares

  • mrs: a medium at rest that its wall kind matches, unbounded (free_space, the one wall kind built in MIME 0.3); its error is the regularised method’s, of the order of the blob over the body’s size, falling as the spacing falls, and is measured against the sphere’s and the prolate spheroid’s closed forms by its oracle tests, not bounded here

  • mrs: the body’s hull alone is sampled, on the patches written; a patch left out (the de Jongh helix’s caps, which the line before this one left out) is a model difference, not a rounding

  • mrs: on the de Jongh helix, the kind’s exact-sample quadrature and the end caps change the resistance against the v0.2 line’s MRS on its own mesh (flat triangles, a point at each centroid), and neither is converged at the surrogate’s training count: see MIME-ANO-116

interaction drag 0.4.0

  • each body’s drag is computed alone, from its own pose and the medium’s wall: a second body in the same medium does not change it, on either rung (no hydrodynamic interaction between bodies in MIME 0.3.0; the build reports the bodies that share a medium)

  • surrogate: quasi-steady Stokes flow (the limit of vanishing Reynolds number), as its training resistances were computed; the Reynolds number, by the body’s translation and by its turning, is computed after each run (the post-run watch) and flagged past the bound the entry declares

  • surrogate: de Jongh screw bodies (cross-section modulation 0.33, two starts) in a straight tube; nu, kappa and L/R checked against the training data at plan time; the offset declared up to 0.3 of the tube’s radius and clamped beyond 0.95 of the room to the wall; its accuracy against the MRS it was checked against is MIME-ANO-114’s, up to 16% in swim speed between 0.2 and 0.3 of the radius

  • surrogate: the resistance is moved from the end of the body’s axis, about which it was trained, to the centre of mass, half the body’s length along its x axis taken as the helix’s, which the surrogate takes to lie along the tube’s; it cannot see a tilt (away from the axis its resistance is a function of the body’s centre and of which way the body’s axis points along the tube, and of nothing else about the orientation)

  • surrogate: valid for a body whose axis lies within 5 degrees of the tube’s, a limit declared (mime.nodes.hydro.TILT_VALIDITY), not fitted, from one MRS measurement of FL-9 on the axis (docs/data/tilt_validity.json, scripts/tilt_validity.py): at that tilt the force-free swim speed differs from the aligned body’s by less than the 16% this entry states for the surrogate against the boundary element, and at the next tilt measured, in one of two directions, it does not; one spacing, one offset, one body, and the MRS itself not converged at that spacing; tilt_fired is raised at the step the tilt passes the limit, and bore_fired at the step the body, as the cylinder of its length and outer radius with its centre on the axis, no longer fits the bore

  • mrs: quasi-steady Stokes flow, the limit of vanishing Reynolds number; the Reynolds number, by the body’s translation and by its turning, is computed after each run (the post-run watch) and flagged past the bound the entry declares

  • mrs: the body’s hull alone is sampled, on the patches written; a patch left out (the de Jongh helix’s caps, which the line before this one left out) is a model difference, not a rounding

  • mrs: a medium at rest that its wall kind matches; on the separated quadrature its error is the regularisation’s, of the order of the blob over the body’s size, and the force points’ constant tractions’, of the order of the force spacing, the quadrature’s falling as quadrature_refinement rises; measured against the sphere’s exact regularised drag and Stokes’s law, the prolate spheroid’s closed form, Haberman and Sayre’s confined sphere and a de Jongh screw’s shipped free-space reference by its oracle tests, not bounded here

  • mrs: a wall’s correction is taken at the force points unless wall_refinement is written, and they do not resolve the image near the wall: within half a force spacing of it the resistance was measured indefinite, and within a quarter of one with the image integrated over each cell (a step whose resistance is indefinite stops the run, drag.mrs-indefinite), within one a step raises near_wall, and there a definite resistance is not shown accurate; in the tube the confinement’s effect converges more slowly than the free part (MIME-ANO-130)

interaction magnetic.force 0.1.0

  • a point dipole in a field read at the body’s centre of mass: valid while the gradient varies little across the body, and outside a point dipole’s near field (MIME-ANO-100); a validity line that checks the distance is a1’s

interaction magnetic.torque 0.1.0

  • a permanent moment in a field that varies in space, read at the body’s centre of mass: valid while the field varies little across the body, and outside a point dipole’s near field (MIME-ANO-100)

wall kind free_space 0.1.0

  • an unbounded medium: no wall within the reach of the body’s flow

wall kind tube 0.1.0

  • a straight circular tube of no-slip wall, infinitely long, the medium filling its lumen; the body’s samples read within the table’s readable range, from the axis to its last radial knot and as far apart along the axis as its file reaches, a read outside refused (wall_accepted false, and the plan refuses a body longer than the table reaches)

  • the read’s accuracy against the builder’s image, and the table’s gate, are MIME-ANO-117’s

  • from several radii along the axis the read’s error exceeds the tube’s whole Green’s function: use it for a body’s drag, not for interactions between bodies that far apart

What is not covered#

  • A lab’s entries declare their own limits; MIME prints them, and counts what a lab leaves unstated, and judges none of it (the lab-author guide).

  • The drag surrogate’s weights are the earlier line’s and inherit the old wall tables’ defect (MIME-ANO-117, in docs/validation/known_anomalies.yaml). Experiments that use them are held to a reference on the same weights, not to the physics.

  • Platforms other than Linux are verified within the lock’s tolerances and by smoke test, not bit for bit (docs/platforms.md).