Set up the C solver core, Node API orchestration, TS GUI workflow, and engineering documentation with cleaned repo hygiene for private Git hosting. Made-with: Cursor
2.2 KiB
2.2 KiB
Case schema and import contract
Owner: Rods Project Team
Status: Active
Last Updated: 2026-04-16
Version: 0.2.0
Canonical input
- Root:
INPRoot/Case - Example:
data/cases/base-case.xml
Parsed fields used by solver (SI after xmlParser)
Core (required)
PumpingSpeed— SPMPumpDepth— MD to pump (case units → m)MeasuredDepthArray,InclinationFromVerticalArray— trajectory (:separated)AzimuthFromNorthArray— optional for vertical; required for full 3D curvature in API validation
Friction / contact
RodFrictionCoefficient— Coulomb (\mu) baselineStuffingBoxFriction,PumpFriction— case force units → NMoldedGuideFrictionRatio,WheeledGuideFrictionRatio,OtherGuideFrictionRatio— scale effective (\mu) along string (heuristicblend)
Rod string / materials
TaperDiameterArray,TaperLengthArray,TaperModulusArray,TaperWeightArray,TaperMTSArrayRodTypeArray— maps to steel vs fiberglass density/modulus defaults when modulus not setTubingAnchorLocationSinkerBarDiameter,SinkerBarLengthRodGuideTypeArray,RodGuideWeightArray— metadata / future contact
Damping
UpStrokeDampingFactor,DownStrokeDampingFactorNonDimensionalFluidDamping— Gibbs-style dimensionless damping input
Pump / fluid (valve + buoyancy helpers)
PumpDiameter,PumpIntakePressure,PumpFillageOption,PercentPumpFillageWaterCut,WaterSpecGravity,FluidLevelOilGravity,TubingGradient,TubingSizePercentageUpstrokeTime,PercentageDownstrokeTimePumpingUnitID,PumpingSpeedOption— metadata for future kinematics
Units
UnitsSelection— drives internal conversion (seeunits.md)
Unknown / unsupported field policy
- Parse immediate
Casechildren intorawFields. - Fields outside the MVP subset used for solver remain in
unsupportedFieldsbut are preserved in API responses. - Do not silently drop imported tags.
Validation rules
- Required for parse:
PumpingSpeed,PumpDepth,MeasuredDepthArray,InclinationFromVerticalArray. - Trajectory arrays must have equal lengths after parse.
- Numeric parse failures throw explicit errors.