geometry screw#
Describes the entry screw at version 0.3.0, registered by mime.scene._screw.Screw.
Kept registered beside it: screw at version 0.2.0, by mime.scene._previous.ScrewGrid, which a document naming that version loads; its differences are in the hand-written part’s versions.
At a glance#
geometry
screw, version0.3.0, namespacemimeDerivative:
piecewise_jumpValidity: none declared
What it models, and when not to use it#
screw#
The screw-shaped body of de Jongh et al. (the equation of their surface): a cylinder of a reference radius and a length along its own x axis, its cross-section modulated by a number of starts and turned along the axis by the normalised wavenumber, its sign the handedness, closed by flat caps. Its origin is its centroid: the body the earlier line ran from one end is moved half its length along the axis, the cross-section’s angle still measured at that end, so a reference point is stated where it was assumed (MIME-ANO-112).
It gives a body its volume and inertia in closed form, its extent (the crests’ radius), its family parameters (the
radius, length, wavenumber, modulation and starts, which the de Jongh drag surrogate reads in place of declared
values), the thread’s direction as its tangent, and its surface samples by patch: lateral, the screw surface, and
caps. Each cap is sampled in rings: a sample at its centre and rings out to the rim, each a copy of the section at a
fraction of the way out, its count a multiple of the starts growing with its radius, so that no two of a cap’s samples
lie closer than a declared share of the spacing (CAP_SEPARATION), the samples are themselves after a turn by one
start, as the section is, and the cap’s area and first and second moments are exact. A cap carries as many samples as
a polar grid at the spacing would, less the few its symmetry needs, so that an MRS solve’s blob, set by the
samples’ mean spacing, barely moves; a section whose troughs and flanks are too narrow for that many carries fewer.
The caps’ counts are one number, the samples on each. At run time its regions are evaluated by the shapes screw (the
screw surface, unbounded along the axis) and slab (between the end planes): the body is their intersection.
When not to use it. For a screw of another cross-section, or a body with fins or a tail: it is this family only. A drag surrogate trained on it covers the modulation and starts it was trained at, and refuses others.
Its derivative. The screw’s distance comes from a root find whose gradients are stopped, then a Newton step with them flowing; its seam, where two points of the surface are equally near (the axis among them), is a kink in the distance and a jump in the normal and the tangent. The seam ends at the focal set, each crest’s and each trough’s centre of curvature turned along the axis, where the nearest point moves without bound as the point does: the distance is once differentiable there and the normal and the tangent continuous with no derivative, and within a band of rounding about it the Newton step, singular there, is not taken. The shape conformance suite checks the derivatives against finite differences off, near and on both, and the distance on the focal set against its exact value.
Its sampling. At a spacing, for a solver whose unknowns sit at the samples (the MRS rung), it samples its surface
quasi-uniformly: as many samples as its quadrature has at that spacing, chosen from its quadrature at a finer spacing
by farthest points and Lloyd’s relaxation (mime.scene.quasi_uniform), each a quadrature sample with its cell’s area as
its weight, so that no two crowd. Its hull query, its reach in a direction, is an envelope, the cylinder of its crests,
which holds the body: exact along its axis and across it, and between them beyond the body by up to the kind’s
reach_envelope of its enclosing radius, a declaration from the supremum over every direction on de Jongh’s design
(MIME-ANO-128). It is conservative, and its farthest point is the envelope’s, not the body’s, so a contact takes its
point from mime.scene.body_reach, the reach of the body’s own samples, which never overstates it and whose farthest
point is a sample.
Regions, surfaces, directions and frames. What a kind names and how a law or a stage reads it: the scene note.
Versions. 0.3.0 samples its thread and caps together quasi-uniformly: 0.2.0’s sampling was its
quadrature, which gives the caps several times their share of the area and leaves about a quarter of the samples
closer than half the mean spacing to another; on de Jongh’s design in free space at the frozen spacing the change moves the rung’s
swim speed most of the way to a converged reference (tests/oracles/test_helix_reference_band.py). 0.2.0, the frozen model
of the preregistered experiments, stays registered so that a folder saved with it loads and reproduces; a script that writes Screw(...) gets
0.3.0. 0.2.0 samples each cap in rings; 0.1.0, the first,
sampled it on a polar grid, as many samples on its innermost ring, near the centre, as on its rim, which
crowded the centre and made an MRS matrix with a tube’s wall correction singular in float64 (MIME-ANO-119). The lateral
patch, the shapes and every closed form are unchanged.
Settings#
Setting |
Type |
Default |
Dimension |
Role |
Default’s kind |
|---|---|---|---|---|---|
|
|
|
length (m) |
physical |
none |
|
|
|
dimensionless |
physical |
none |
|
|
|
length (m) |
physical |
none |
|
|
|
none |
physical |
none |
|
|
|
dimensionless |
physical |
none |
Each role and default’s kind is the entry’s setting_roles (mime.registry.SettingRole); a setting that declares none is required.
Capabilities#
Generated from which of the optional methods of mime.registry.Geometry the kind implements; a consumer that needs one it lacks is refused when it plans, naming both.
Capability |
What it gives |
Used by |
This kind |
|---|---|---|---|
|
surface samples by named patch, at a resolution the consumer chooses |
the MRS; immersed-boundary markers |
yes |
|
the area of each patch |
the samples’ weights |
yes |
|
volume and inertia at a density |
the part resolver |
yes |
|
the hull’s radial reach about its axis |
a body’s extent; contact on the hull |
yes |
|
the parameters of the family it is |
a surrogate trained on one family |
yes |
|
a tangent it declares at a surface point |
a law anisotropic along it |
yes |
|
its native form, one of USD’s own primitives |
the stage writer |
no |
|
a drawing, tessellated at the writer’s resolution |
the stage writer, for a kind with no native form |
yes |
|
its regions as OpenMaterica’s primitives: exactly, or (a region with no end along an axis) clipped at the kind’s own length, or refused |
OpenMaterica’s manifest and stage |
yes |
|
reach |
not stated |
yes |
|
sampling |
not stated |
yes |
|
support |
not stated |
yes |
native: none, so the stage writes it in MIME’s schema with its drawing.
placement: none: its own frame is the frame its settings are written in.
Run-time capabilities (signed distance, outward normal, nearest point) are its regions’ and surfaces’ shapes, listed below.
Nodes it builds#
Builds no node of its own.
Gradient status#
The derivative through this entry is piecewise_jump: not the exact derivative of what it computes everywhere.
Validity#
none declared
References#
[@deJongh2025NonlinDyn]
Other declarations#
Class variable |
Type |
Value |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|