v1
geometry

Analyze Geometry

Aero-only operating-point analysis (point / sweep / solve-to-target).

Wraps the analyze service on the editor's live working geometry. AERO-ONLY — there is NO motor/battery/ESC field anywhere; the strict extra="forbid" serializer is the guard. SYNCHRONOUS on the warm JIT cache — a plain 200 with the result, never a 202/job id. STATELESS: the editor's inline arrays carry everything, so this touches NO DB and reads no current user (no saved-component path -> no IDOR surface).

A genuine build/solve failure (degenerate geometry, bad target) rewraps ValueError -> 422 with a user-safe message and no traceback (mirrors the process_image idiom). A NON-converged solve-to-target is NOT an error: it returns a normal 200 with converged: false + a reason.

post/v1/geometry/analyze

Request

  • Base URL: https://thrustlab.com
  • URL: https://thrustlab.com/v1/geometry/analyze
  • Auth: HTTP bearer

Request body

air_densitynumber

Air density kg/m^3

airfoilstring
airspeednumber

Freestream m/s

chordnumber[] required
diameternumber required

Diameter in inches

hub_radiusnumber nullable
j_fromnumber nullable
j_stepsinteger nullable

Sweep point count (DoS bound — each step is a full solve)

j_tonumber nullable
mode'point' | 'sweep' | 'solve_to_target'
num_bladesinteger
radiusnumber[] required
rpmnumber
sweepnumber[] nullable
target_type'thrust' | 'power' nullable
target_valuenumber nullable
thicknessnumber[] nullable
twistnumber[] required

Twist in degrees

Response

Successful Response

Cpnumber nullable
Cp_rawnumber nullable

Power coefficient from the raw blade-element solve, before the empirical correction.

Ctnumber nullable
Ct_rawnumber nullable

Thrust coefficient from the raw blade-element solve, before the empirical correction. The stations table integrates to this.

Jnumber nullable
convergedboolean nullable
efficiencynumber nullable
envelope_limiting_factor'advance_ratio' | 'tip_mach' | 'pitch_diameter' | 'thrust_coefficient' | 'diameter' | 'blade_count' nullable

Which dimension takes this solve outside the validation envelope. Absent when envelope_status is validated or absent.

envelope_status'validated' | 'partial' | 'outside' nullable

Where this solve sits relative to the published validation envelope (17 two-bladed APC Thin-Electric propellers, in diameter, advance ratio J <= 0.95, tip Mach <= 0.43). validated = operating point and propeller both inside it. partial = outside in one dimension but still carrying most of the validated model — the common case, and not an error. outside = far enough out that the answer is the underlying physics model's own prediction. Absent when the envelope could not be established for this solve.

modestring required
objectstring
powernumber nullable
power_rawnumber nullable

Shaft power in W from the raw blade-element solve.

reasonstring nullable
rpmnumber nullable
sweep_Cpnumber[]
sweep_Ctnumber[]
sweep_Jnumber[]
sweep_etanumber[]
thrustnumber nullable
thrust_rawnumber nullable

Thrust in N from the raw blade-element solve. sum(dT_dr * dr) over stations equals THIS, not thrust.

torque_rawnumber nullable

Torque in N·m from the raw blade-element solve. sum(dQ_dr * dr) over stations equals THIS.

Changes

No recorded changes to this operation across all 1 revision of this API.