pyflightstream 0.44.0__tar.gz → 0.45.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyflightstream-0.45.1/MANIFEST.in +2 -0
- {pyflightstream-0.44.0/src/pyflightstream.egg-info → pyflightstream-0.45.1}/PKG-INFO +1 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/pyproject.toml +1 -5
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_deprecations.py +0 -11
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_farfield_spec.py +228 -36
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/farfield_inputs.py +36 -19
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/fsi_workspace.py +2 -2
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/pproc.py +77 -49
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/reference_blocks.py +48 -17
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_clock.py +100 -27
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_exports.py +26 -2
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_farfield.py +242 -94
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_frames.py +61 -15
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_motion.py +1 -3
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_pproc.py +19 -2
- pyflightstream-0.45.1/src/pyflightstream/cases/workflows/_probe_imports.py +159 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_probes.py +195 -47
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_qsteady_rotor.py +3 -5
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_registry.py +6 -8
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_rotor.py +12 -3
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_rows.py +5 -9
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_skeleton.py +2 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_timing.py +5 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_export.yaml +6 -4
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/__init__.py +1 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_field_inputs.py +22 -12
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_reduction_stage.py +270 -8
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_sim.py +43 -5
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/farfield_fields.py +88 -79
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/farfield_products.py +258 -247
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/input_template.py +3 -3
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/polar.py +5 -11
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/products.py +18 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/qsteady.py +1 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/qsteady_noise.py +6 -2
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/series.py +1 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/superfile.py +2 -2
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/lattice.py +2 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/layouts.py +55 -7
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_actions_counter.py +64 -9
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_continuation.py +6 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_plan.py +1 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_plan_report.py +4 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_points.py +10 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_build_forms.py +10 -6
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/inputs.py +2 -2
- {pyflightstream-0.44.0 → pyflightstream-0.45.1/src/pyflightstream.egg-info}/PKG-INFO +1 -1
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/SOURCES.txt +2 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/LICENSE +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/README.md +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/setup.cfg +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_atmosphere.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_cli.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_console.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_decimal.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_digest.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_errors.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_expressions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_fsi_calibration.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_fsm.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_fsm_fresh.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_lengths.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_maturity.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_mesh.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_progress.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_retired_names.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_signature.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_textio.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_tokens.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/_yamlflow.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_ccs.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_fsi_external.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_geometry_emit.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_geometry_instruction.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_matrix_layouts.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_matrix_upgrade.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_setup_keys.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_setup_link.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_skipped_families.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_sweep_names.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_unsteady_actions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/acoustics.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/ccs_fuselage.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/ccs_revolution.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/ccs_wing.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/corrections.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/field_coverage.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/freestream.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/matrix.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/mesh.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/naming.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/qsteady.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/selection.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/settings.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/setup_surfaces.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/sixdof.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/windows.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_actuator.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_additional.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_batch_actions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_batch_script.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_conventions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_export_first_step.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_freestream.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_gap_evidence.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_geometry.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_names.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_reductions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_row_cells.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_sixdof.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_solver_settings.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_steady.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_streamlines.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_unsteady.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_vocabulary.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_wake_length.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/_meta.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/_schema.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/acoustics.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/actuators.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/advanced_settings.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/aeroelastic_coupling.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/base_regions.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/boundary_conditions.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/cad.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/cad_create.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/ccs_fuselage_mesh.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/ccs_revolve_mesh.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/ccs_wing_mesh.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/coordinate_systems.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/file_io.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/free_surfaces.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/inlets_outlets.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_import_export.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_operations.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_unite.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_wrapper.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/motion_definitions.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/plots.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/probe_points.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/runtime_settings.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/scene_settings.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/scenes.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/script_controls.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/simulation_controls.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_analysis.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_contours.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_initialization.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_settings.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/stability_toolbox.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/streamlines.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/surface_sections.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/sweeper.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/transition_trips.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/unsteady_solver.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/volume_sections.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/exceptions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/extras.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/balances.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/fields.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/quadrature.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/trefftz.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/_direct_morphing.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/beam.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/calibration.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/centrifugal.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/cli.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/config.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/driver.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/errors.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/external.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/kinematics.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/loads.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/materials.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/nodes.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/sections.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/state.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/wing.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/options.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/overview.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_additional.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_admit.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_condition.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_installed_copies.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_matrix_template.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_noise_products.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_products_campaign.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_rotor_plan.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_rotor_products.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_settings_product.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_stage.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_structure.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_tables.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_transfer_functions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/acoustics.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/axes.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/boundary_layer.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/corrections.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/custom_polar.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/diagnostics.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/disc_maps.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/equations.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/field_frames.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/glossary.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/guides.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/harmonics.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/inflow_tools.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/point_tables.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/probe_fields.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/provenance.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/reductions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/rotor_table.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/section_distributions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/settings_table.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/streamlines.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/surfaces.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/unsteady.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/unsteady_polar.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/post/writers.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/_model.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/errors.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/geometry.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/planar.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_reanalysis.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gap.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gapbase.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gapedges.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gapkit.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_26125.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_catalog_b.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_ccs_mesh.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_ccs_noise.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_kit.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_t1.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/cli.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/compat.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/cost.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/drift.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/errors.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/geometry.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/matrix.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/physics.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/probes.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-01.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-02.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-05.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-06.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/SMI-01.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/SMI-02.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-01.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-02.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-05.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-06.yaml +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/reports.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/specs.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/reference.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/conditions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/core.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/exports.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/loads.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/log.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/native_surface.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/sectional_loads.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/surface.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/tables.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/results/wake.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_additional.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_alias.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_assemble.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_assessment.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_collect.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_exec.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_plan.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_run.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_split.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_campaign.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_geometry.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_mesh.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_parsers.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_parsers_storage.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_print.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_query.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_query_history.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_query_point.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_collect_logs.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_collect_notes.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_continuation_frame.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_executors.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_field_motion.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_grouped.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_identity.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_ids.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_mark_converged.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_matrix_warnings.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_pending.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild_evidence.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild_grouped.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild_summary.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_record_files.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_solver_windows.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_step_exports.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_sweep.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_wake_edge_verdict.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/cli.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/collect.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/matrix.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/run/records.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_arg_checks.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_ledger_tables.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_relaxed_te.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_settings.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_surface_averaging.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_wake_edge_file.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/entities.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/helpers.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/motion.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/rotor_vocabulary.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/solver_setup.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/script/toggles.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/support.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/testing.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/cli.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/database.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/errors.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/manual.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/versions.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_batch_life.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_batch_relocate.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_batches.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_degenerate.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_effective.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_free_space.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_build.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_clean.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_convert.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_instruction.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_record.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_sidecar.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_vtk.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_layout.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_ledger_api.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_ledger_history.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_links.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_matrix_binding.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_matrix_homes.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_matrix_phases.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_missing_log.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_query_files.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_query_logs.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_query_point.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/__init__.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_audit.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_blocks.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_config.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_geometry.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_grid.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_level.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_obj.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_periodic.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_remesh.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_remesh_group.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_remesh_pairs.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_staging.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_row_setup.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_script_comparison.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_settings_file.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_step_prune.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_verdicts.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/actuator_profiles.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/builds.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/cli.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/costs.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel_bridge.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel_file.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel_sync.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/fields.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/flight_condition.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/fsi_external_setup.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/fsi_setup.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/hpc.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/ledger.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/manifest.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/matrix.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/migrate.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/naming.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/record_document.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/selections.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/setup_inspection.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/setup_standards.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/sidecars.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/sixdof_setup.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/storage.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/trailing_edges.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/wake_edges.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/dependency_links.txt +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/entry_points.txt +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/requires.txt +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/top_level.txt +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/tools/check_shipped_surface.py +0 -0
- {pyflightstream-0.44.0 → pyflightstream-0.45.1}/tools/shipped_surface.conf +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyflightstream"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.45.1"
|
|
8
8
|
description = "Version-aware, didactic Python driver for the FlightStream panel-method solver"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -170,10 +170,6 @@ Issues = "https://github.com/nevesgeovana/pyflightstream/issues"
|
|
|
170
170
|
[tool.setuptools.packages.find]
|
|
171
171
|
where = ["src"]
|
|
172
172
|
|
|
173
|
-
# Keep the artifact scanner and its policy available with the distribution.
|
|
174
|
-
[tool.setuptools.data-files]
|
|
175
|
-
"share/pyflightstream/tools" = ["tools/check_shipped_surface.py", "tools/shipped_surface.conf"]
|
|
176
|
-
|
|
177
173
|
[tool.setuptools.package-data]
|
|
178
174
|
"pyflightstream.commands" = ["*.yaml"]
|
|
179
175
|
"pyflightstream.qa" = ["references/*.yaml", "references/pressure-drag/*.yaml"]
|
|
@@ -658,16 +658,6 @@ INFLOW_STATION_HARMONICS = DeprecatedFunction(
|
|
|
658
658
|
advice="use pyflightstream.post.inflow_tools.InflowStationHarmonics",
|
|
659
659
|
)
|
|
660
660
|
|
|
661
|
-
#: ``polar_row`` called without ``beta_deg`` keeps zero sideslip and warns; from
|
|
662
|
-
#: the removal version the argument is required.
|
|
663
|
-
POLAR_ROW_OMITTED_BETA = DeprecatedFunction(
|
|
664
|
-
function="pyflightstream.post.polar.polar_row called without beta_deg",
|
|
665
|
-
deprecated_since="0.43.0",
|
|
666
|
-
removal_version="0.45.0",
|
|
667
|
-
advice="pass beta_deg explicitly; zero sideslip is used until then",
|
|
668
|
-
)
|
|
669
|
-
|
|
670
|
-
|
|
671
661
|
MATRIX_REFINE = DeprecatedFunction(
|
|
672
662
|
function="pyfs-matrix refine",
|
|
673
663
|
deprecated_since="0.40.0",
|
|
@@ -706,6 +696,5 @@ DEPRECATIONS: tuple[Deprecation, ...] = (
|
|
|
706
696
|
PLAN_MATRIX_FS_VERSION,
|
|
707
697
|
RUN_MATRIX_FS_VERSION,
|
|
708
698
|
INFLOW_STATION_HARMONICS,
|
|
709
|
-
POLAR_ROW_OMITTED_BETA,
|
|
710
699
|
*MATRIX_GEOMETRY_ALIASES,
|
|
711
700
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""The ``[
|
|
1
|
+
"""The ``[[farfields]]`` entries of the pproc artifact and the lattice shape of ``[[probes]]``.
|
|
2
2
|
|
|
3
3
|
Pipeline role: the input model of the far-field family (FR-454) and of the
|
|
4
4
|
survey-lattice probe shape (FR-1072), validated at load with
|
|
@@ -12,9 +12,11 @@ states none leaves the geometry to the plan's reuse rule (FR-1042, FR-455).
|
|
|
12
12
|
|
|
13
13
|
from __future__ import annotations
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
import json
|
|
16
|
+
import re
|
|
17
|
+
from typing import Annotated, Any, Literal
|
|
16
18
|
|
|
17
|
-
from pydantic import BaseModel, BeforeValidator, ConfigDict, Field, model_validator
|
|
19
|
+
from pydantic import BaseModel, BeforeValidator, ConfigDict, Field, ValidationError, model_validator
|
|
18
20
|
|
|
19
21
|
from pyflightstream.probes.lattice import ProbeLattice, build_lattice
|
|
20
22
|
|
|
@@ -29,7 +31,7 @@ __all__ = [
|
|
|
29
31
|
]
|
|
30
32
|
|
|
31
33
|
#: The three accepted Trefftz variants.
|
|
32
|
-
TREFFTZ_VARIANTS: tuple[str, ...] = ("sections", "wake", "plane")
|
|
34
|
+
TREFFTZ_VARIANTS: tuple[str, ...] = ("sections", "wake", "plane", "power")
|
|
33
35
|
#: The six balances of FR-479, in the order the ledgers table writes them.
|
|
34
36
|
BALANCES: tuple[str, ...] = (
|
|
35
37
|
"mass",
|
|
@@ -39,6 +41,10 @@ BALANCES: tuple[str, ...] = (
|
|
|
39
41
|
"in_plane_moment",
|
|
40
42
|
"crossflow_energy",
|
|
41
43
|
)
|
|
44
|
+
#: The balance names a ``balances`` key accepts; a test pins it to :data:`BALANCES`.
|
|
45
|
+
BalanceName = Literal[
|
|
46
|
+
"mass", "axial", "transverse", "torque", "in_plane_moment", "crossflow_energy"
|
|
47
|
+
]
|
|
42
48
|
#: The defaults of FR-1039 that a table may leave unstated:
|
|
43
49
|
#: the plan's station count per side, the plane's distance behind the
|
|
44
50
|
#: families and, for the wing plane, its half extents and spacing, all in BREF.
|
|
@@ -80,7 +86,7 @@ def _unique(words: list[str], what: str) -> list[str]:
|
|
|
80
86
|
class LatticeShape(BaseModel):
|
|
81
87
|
"""A survey lattice, by its rotor or its frame and the ``build_lattice`` parameters.
|
|
82
88
|
|
|
83
|
-
The keys of ``[
|
|
89
|
+
The keys of ``[[farfields]]`` lattice geometry and of one entry of a
|
|
84
90
|
``[[probes]]`` entry's ``lattices`` (FR-1072): ``rotor`` names the rotor
|
|
85
91
|
whose hub frame and tip radius place the lattice, or ``frame`` and
|
|
86
92
|
``tip_radius_m`` place a lattice that belongs to no rotor; the rest are the
|
|
@@ -164,11 +170,13 @@ class LatticeShape(BaseModel):
|
|
|
164
170
|
stated = {
|
|
165
171
|
key: getattr(self, key) for key in _LATTICE_KEYS if getattr(self, key) is not None
|
|
166
172
|
}
|
|
173
|
+
if self.lateral_radius is None:
|
|
174
|
+
stated["lateral_radius"] = max(2.5, self.r_outer or 2.5)
|
|
167
175
|
return build_lattice(tip_radius=tip_radius, **stated)
|
|
168
176
|
|
|
169
177
|
|
|
170
178
|
class TrefftzSpec(BaseModel):
|
|
171
|
-
"""The ``[
|
|
179
|
+
"""The internal translation of ``[[farfields]]`` Trefftz variants and geometry (FR-454).
|
|
172
180
|
|
|
173
181
|
Attributes
|
|
174
182
|
----------
|
|
@@ -190,7 +198,7 @@ class TrefftzSpec(BaseModel):
|
|
|
190
198
|
model_config = ConfigDict(extra="forbid", allow_inf_nan=False)
|
|
191
199
|
|
|
192
200
|
variant: Annotated[
|
|
193
|
-
list[Literal["sections", "wake", "plane"]], BeforeValidator(_one_or_list)
|
|
201
|
+
list[Literal["sections", "wake", "plane", "power"]], BeforeValidator(_one_or_list)
|
|
194
202
|
] = Field(
|
|
195
203
|
min_length=1,
|
|
196
204
|
description=(
|
|
@@ -226,7 +234,7 @@ class TrefftzSpec(BaseModel):
|
|
|
226
234
|
|
|
227
235
|
@model_validator(mode="after")
|
|
228
236
|
def _each_variant_once(self) -> TrefftzSpec:
|
|
229
|
-
_unique(list(self.variant), "
|
|
237
|
+
_unique(list(self.variant), "Trefftz variant")
|
|
230
238
|
return self
|
|
231
239
|
|
|
232
240
|
@property
|
|
@@ -247,7 +255,7 @@ class TrefftzSpec(BaseModel):
|
|
|
247
255
|
|
|
248
256
|
|
|
249
257
|
class LedgersSpec(LatticeShape):
|
|
250
|
-
"""The ``[
|
|
258
|
+
"""The internal translation of ``[[farfields]]`` balances and lattice (FR-38, FR-454).
|
|
251
259
|
|
|
252
260
|
Attributes
|
|
253
261
|
----------
|
|
@@ -258,11 +266,8 @@ class LedgersSpec(LatticeShape):
|
|
|
258
266
|
the lattice's azimuth count.
|
|
259
267
|
"""
|
|
260
268
|
|
|
261
|
-
balances: list[
|
|
262
|
-
Literal["mass", "axial", "transverse", "torque", "in_plane_moment", "crossflow_energy"]
|
|
263
|
-
] = Field(
|
|
269
|
+
balances: list[BalanceName] = Field(
|
|
264
270
|
default_factory=lambda: list(BALANCES), # type: ignore[arg-type]
|
|
265
|
-
min_length=1,
|
|
266
271
|
description="The balances written: any of the six, all six by default.",
|
|
267
272
|
)
|
|
268
273
|
m_max: int = Field(
|
|
@@ -271,7 +276,7 @@ class LedgersSpec(LatticeShape):
|
|
|
271
276
|
|
|
272
277
|
@model_validator(mode="after")
|
|
273
278
|
def _the_orders_fit_the_azimuths(self) -> LedgersSpec:
|
|
274
|
-
_unique(list(self.balances), "
|
|
279
|
+
_unique(list(self.balances), "balances")
|
|
275
280
|
n_psi = self.build(1.0).n_psi
|
|
276
281
|
if 2 * self.m_max >= n_psi:
|
|
277
282
|
raise ValueError(
|
|
@@ -288,37 +293,224 @@ def _family_selection(value: object) -> object:
|
|
|
288
293
|
|
|
289
294
|
|
|
290
295
|
class FarfieldSpec(BaseModel):
|
|
291
|
-
"""
|
|
296
|
+
"""One named analysis in ``[[farfields]]``; geometry keys belong to their variant.
|
|
297
|
+
|
|
298
|
+
``sections`` requires families and accepts a station count. ``wake`` and
|
|
299
|
+
``plane`` read the whole field. ``power`` requires a rotor or a frame
|
|
300
|
+
lattice and optionally writes balances. Names default to the variant.
|
|
292
301
|
|
|
293
302
|
Attributes
|
|
294
303
|
----------
|
|
304
|
+
variant : str
|
|
305
|
+
One analysis: sections (A), wake (B), plane (C), or power (D).
|
|
306
|
+
name : str
|
|
307
|
+
Unique entry label, defaulting to the variant word.
|
|
308
|
+
export_type : str
|
|
309
|
+
last_step, avg_window, or default; default reads the last unsteady step.
|
|
295
310
|
families : str or list of str
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
311
|
+
Required selection for sections; the other variants read the whole field.
|
|
312
|
+
stations : int or tuple of float
|
|
313
|
+
A station count per side for sections; lattice positions x/R for power.
|
|
314
|
+
distance_bref : float
|
|
315
|
+
Wake or plane distance behind the whole geometry in BREF.
|
|
316
|
+
half_width_bref, half_height_bref, spacing_bref : float
|
|
317
|
+
Plane half extents and uniform spacing in BREF.
|
|
318
|
+
station : float
|
|
319
|
+
Power station x/R; defaults to the last lattice station.
|
|
320
|
+
rotor : str
|
|
321
|
+
Reference rotor whose hub and radius place the power lattice.
|
|
322
|
+
frame, tip_radius_m : str and float
|
|
323
|
+
Alternative power lattice placement: frame and reference radius in metres.
|
|
324
|
+
n_r, r_inner, r_outer, n_psi : int or float
|
|
325
|
+
Power lattice ring count, radial bounds r/R, and uniform azimuth count.
|
|
326
|
+
lateral_radius, lateral_stations : float or tuple of float
|
|
327
|
+
Power lattice closure cylinder radius r/R and ring positions x/R.
|
|
328
|
+
hub_width, tip_width : float
|
|
329
|
+
Power lattice clustering widths r/R near the hub and tip.
|
|
330
|
+
m_max : int
|
|
331
|
+
Highest azimuthal harmonic, strictly below half the lattice azimuth count.
|
|
332
|
+
balances : list of str
|
|
333
|
+
Optional ledger balances; omitted, no ledger table is requested.
|
|
334
|
+
last_revs : float, optional
|
|
335
|
+
Positive trailing revolutions on the row's rotor clock, for this entry's average.
|
|
336
|
+
last_steps : int, optional
|
|
337
|
+
Positive trailing step count, exclusive with last_revs; omitted, use the row window.
|
|
302
338
|
"""
|
|
303
339
|
|
|
304
340
|
model_config = ConfigDict(extra="forbid", allow_inf_nan=False)
|
|
341
|
+
variant: Literal["sections", "wake", "plane", "power"]
|
|
342
|
+
name: str = Field(default="", min_length=1)
|
|
343
|
+
export_type: Literal["last_step", "avg_window", "default"] = "default"
|
|
344
|
+
families: Annotated[str | list[str] | None, BeforeValidator(_family_selection)] = None
|
|
345
|
+
stations: int | tuple[float, ...] | None = None
|
|
346
|
+
distance_bref: float = Field(default=0.25, gt=0)
|
|
347
|
+
half_width_bref: float | None = Field(default=None, gt=0)
|
|
348
|
+
half_height_bref: float | None = Field(default=None, gt=0)
|
|
349
|
+
spacing_bref: float | None = Field(default=None, gt=0)
|
|
350
|
+
station: float | None = None
|
|
351
|
+
rotor: str | None = None
|
|
352
|
+
frame: str | None = None
|
|
353
|
+
tip_radius_m: float | None = None
|
|
354
|
+
n_r: int | None = None
|
|
355
|
+
r_inner: float | None = None
|
|
356
|
+
r_outer: float | None = None
|
|
357
|
+
n_psi: int | None = None
|
|
358
|
+
lateral_radius: float | None = None
|
|
359
|
+
lateral_stations: tuple[float, ...] | None = None
|
|
360
|
+
hub_width: float | None = None
|
|
361
|
+
tip_width: float | None = None
|
|
362
|
+
m_max: int = 6
|
|
363
|
+
balances: list[BalanceName] = Field(default_factory=list)
|
|
364
|
+
last_revs: float | None = Field(default=None, gt=0, strict=True)
|
|
365
|
+
last_steps: int | None = Field(default=None, gt=0, strict=True)
|
|
366
|
+
|
|
367
|
+
@model_validator(mode="before")
|
|
368
|
+
@classmethod
|
|
369
|
+
def _keys_belong_to_the_variant(cls, value: Any) -> Any:
|
|
370
|
+
if not isinstance(value, dict):
|
|
371
|
+
return value
|
|
372
|
+
variant = value.get("variant")
|
|
373
|
+
if not isinstance(variant, str) or variant not in TREFFTZ_VARIANTS:
|
|
374
|
+
return value
|
|
375
|
+
for key in value:
|
|
376
|
+
readers = _KEY_VARIANTS.get(key)
|
|
377
|
+
if readers is not None and variant not in readers:
|
|
378
|
+
reason = ""
|
|
379
|
+
if key == "families":
|
|
380
|
+
reason = (
|
|
381
|
+
"; wake, plane and power read the whole field, "
|
|
382
|
+
"so there is no family selection"
|
|
383
|
+
)
|
|
384
|
+
raise ValueError(f"{key} is read by {', '.join(readers)}, not {variant!r}{reason}")
|
|
385
|
+
return value
|
|
305
386
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
"
|
|
387
|
+
@model_validator(mode="after")
|
|
388
|
+
def _analysis_geometry(self) -> FarfieldSpec:
|
|
389
|
+
if self.last_revs is not None and self.last_steps is not None:
|
|
390
|
+
raise ValueError("state only one window, not both last_revs and last_steps")
|
|
391
|
+
if not self.name:
|
|
392
|
+
self.name = self.variant
|
|
393
|
+
if self.variant == "sections":
|
|
394
|
+
if self.families is None:
|
|
395
|
+
raise ValueError('variant = "sections" requires families')
|
|
396
|
+
if self.stations is not None and (
|
|
397
|
+
not isinstance(self.stations, int) or self.stations < 2
|
|
398
|
+
):
|
|
399
|
+
raise ValueError('variant = "sections" reads stations as a count of at least 2')
|
|
400
|
+
if self.variant == "power":
|
|
401
|
+
if isinstance(self.stations, int):
|
|
402
|
+
raise ValueError('variant = "power" reads stations as a list of x/R positions')
|
|
403
|
+
_ = self.ledgers
|
|
404
|
+
return self
|
|
405
|
+
|
|
406
|
+
@property
|
|
407
|
+
def trefftz(self) -> TrefftzSpec:
|
|
408
|
+
"""Return the numerical trace parameters of this single analysis."""
|
|
409
|
+
keys = ("distance_bref", "half_width_bref", "half_height_bref", "spacing_bref", "station")
|
|
410
|
+
values = {key: getattr(self, key) for key in keys}
|
|
411
|
+
values.update(
|
|
412
|
+
variant=[self.variant], stations=self.stations if self.variant == "sections" else 80
|
|
310
413
|
)
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
414
|
+
if values["stations"] is None:
|
|
415
|
+
values["stations"] = 80
|
|
416
|
+
try:
|
|
417
|
+
return TrefftzSpec.model_validate(values)
|
|
418
|
+
except ValidationError as error:
|
|
419
|
+
raise self._entry_error(error) from error
|
|
316
420
|
|
|
317
|
-
@
|
|
318
|
-
def
|
|
319
|
-
|
|
421
|
+
@property
|
|
422
|
+
def ledgers(self) -> LedgersSpec | None:
|
|
423
|
+
"""Return the power analysis's validated lattice, or None for a trace."""
|
|
424
|
+
if self.variant != "power":
|
|
425
|
+
return None
|
|
426
|
+
keys = (*_LATTICE_KEYS, "rotor", "frame", "tip_radius_m", "m_max", "balances")
|
|
427
|
+
try:
|
|
428
|
+
return LedgersSpec.model_validate({key: getattr(self, key) for key in keys})
|
|
429
|
+
except ValidationError as error:
|
|
430
|
+
raise self._entry_error(error) from error
|
|
431
|
+
|
|
432
|
+
def _entry_error(self, error: ValidationError) -> ValueError:
|
|
433
|
+
parts = []
|
|
434
|
+
for item in error.errors():
|
|
435
|
+
key = ".".join(str(part) for part in item["loc"])
|
|
436
|
+
message = str(item["msg"]).removeprefix("Value error, ")
|
|
437
|
+
parts.append(f"{key}: {message}" if key else message)
|
|
438
|
+
return ValueError(f"[[farfields]] entry {self.name!r}: " + "; ".join(parts))
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
_KEY_VARIANTS = {
|
|
442
|
+
"families": ("sections",),
|
|
443
|
+
"stations": ("sections", "power"),
|
|
444
|
+
"distance_bref": ("wake", "plane"),
|
|
445
|
+
**{key: ("plane",) for key in ("half_width_bref", "half_height_bref", "spacing_bref")},
|
|
446
|
+
**{
|
|
447
|
+
key: ("power",)
|
|
448
|
+
for key in (
|
|
449
|
+
*_LATTICE_KEYS[1:],
|
|
450
|
+
"station",
|
|
451
|
+
"rotor",
|
|
452
|
+
"frame",
|
|
453
|
+
"tip_radius_m",
|
|
454
|
+
"m_max",
|
|
455
|
+
"balances",
|
|
456
|
+
)
|
|
457
|
+
},
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
def farfield_entries(value: Any) -> Any:
|
|
462
|
+
"""Refuse the retired table with equivalent array entries."""
|
|
463
|
+
if not isinstance(value, dict):
|
|
464
|
+
return value
|
|
465
|
+
if value.get("farfield") is not None:
|
|
466
|
+
old = value["farfield"]
|
|
467
|
+
entries = []
|
|
468
|
+
if isinstance(old, dict):
|
|
469
|
+
trace = old.get("trefftz", {})
|
|
470
|
+
variants = trace.get("variant", [])
|
|
471
|
+
for variant in [variants] if isinstance(variants, str) else variants:
|
|
472
|
+
entry = {"variant": variant}
|
|
473
|
+
entry.update(
|
|
474
|
+
{k: v for k, v in trace.items() if variant in _KEY_VARIANTS.get(k, ())}
|
|
475
|
+
)
|
|
476
|
+
if variant == "sections":
|
|
477
|
+
entry["families"] = old.get("families", "all")
|
|
478
|
+
entries.append(entry)
|
|
479
|
+
if "ledgers" in old:
|
|
480
|
+
power = {"variant": "power", "balances": list(BALANCES), **old["ledgers"]}
|
|
481
|
+
if "station" in trace:
|
|
482
|
+
power["station"] = trace["station"]
|
|
483
|
+
entries.append(power)
|
|
484
|
+
replacement = "\n\n".join(
|
|
485
|
+
"[[farfields]]\n"
|
|
486
|
+
+ "\n".join(f"{key} = {json.dumps(val)}" for key, val in entry.items())
|
|
487
|
+
for entry in entries
|
|
488
|
+
)
|
|
489
|
+
raise ValueError(
|
|
490
|
+
"[farfield] was replaced by [[farfields]], one analysis per entry:\n"
|
|
491
|
+
+ replacement
|
|
492
|
+
+ '\nA 0.44.0 "plane" with ledgers on a rotor row becomes the "power" entry (D), '
|
|
493
|
+
'not the "plane" entry (C); keep C only to request the velocity plane as well.'
|
|
494
|
+
)
|
|
495
|
+
return value
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
def _refuse_filename_collisions(entries: Any) -> None:
|
|
499
|
+
"""Refuse sanitized filename collisions even on case-insensitive filesystems."""
|
|
500
|
+
names: dict[str, str] = {}
|
|
501
|
+
for entry in entries if isinstance(entries, list | tuple) else ():
|
|
502
|
+
name = (
|
|
503
|
+
entry.name
|
|
504
|
+
if isinstance(entry, FarfieldSpec)
|
|
505
|
+
else (entry.get("name", entry.get("variant")) if isinstance(entry, dict) else None)
|
|
506
|
+
)
|
|
507
|
+
if not isinstance(name, str):
|
|
508
|
+
continue
|
|
509
|
+
spelling = re.sub(r"[^A-Za-z0-9_.+-]", "_", name).casefold()
|
|
510
|
+
previous = names.get(spelling)
|
|
511
|
+
if previous is not None and previous != name:
|
|
320
512
|
raise ValueError(
|
|
321
|
-
"[
|
|
322
|
-
"
|
|
513
|
+
f"[[farfields]] names {previous!r} and {name!r} share file spelling "
|
|
514
|
+
f"{spelling!r} ignoring case; choose names with distinct file spellings"
|
|
323
515
|
)
|
|
324
|
-
|
|
516
|
+
names[spelling] = name
|
|
@@ -70,6 +70,8 @@ class FarfieldInput:
|
|
|
70
70
|
The declaration reused, or what the plan adds.
|
|
71
71
|
reason : str
|
|
72
72
|
Why the input is not applicable or refused; empty otherwise.
|
|
73
|
+
entry, variant : str
|
|
74
|
+
The requesting entry's name and public variant, assigned by the workflow.
|
|
73
75
|
"""
|
|
74
76
|
|
|
75
77
|
analysis: str
|
|
@@ -77,10 +79,14 @@ class FarfieldInput:
|
|
|
77
79
|
state: str
|
|
78
80
|
source: str = ""
|
|
79
81
|
reason: str = ""
|
|
82
|
+
entry: str = ""
|
|
83
|
+
variant: str = ""
|
|
80
84
|
|
|
81
85
|
def as_record(self) -> dict[str, str]:
|
|
82
86
|
"""Return the input as the plan output states it (FR-1047)."""
|
|
83
87
|
return {
|
|
88
|
+
"entry": self.entry,
|
|
89
|
+
"variant": self.variant,
|
|
84
90
|
"analysis": self.analysis,
|
|
85
91
|
"input": self.input,
|
|
86
92
|
"state": self.state,
|
|
@@ -145,11 +151,22 @@ def applies(analysis: str, run_type: str, *, rotor: bool = False) -> str:
|
|
|
145
151
|
>>> bool(applies('trefftz:wake', 'unsteady_rotor'))
|
|
146
152
|
True
|
|
147
153
|
"""
|
|
148
|
-
if analysis
|
|
154
|
+
if analysis == "trefftz:plane" and run_type == "qsteady_rotor":
|
|
155
|
+
return (
|
|
156
|
+
"Trefftz C requires a uniform freestream; qsteady_rotor uses a rotating frame: "
|
|
157
|
+
'select "power"'
|
|
158
|
+
)
|
|
159
|
+
if analysis == "trefftz:sections" and run_type == "qsteady_rotor":
|
|
160
|
+
return (
|
|
161
|
+
"Trefftz A on qsteady_rotor has no lifting surface outside the rotor: "
|
|
162
|
+
"state the A entry on a steady or unsteady_rotor row that carries the lifting "
|
|
163
|
+
'surfaces, or select "power" for the rotor on this row'
|
|
164
|
+
)
|
|
165
|
+
if analysis == "trefftz:wake":
|
|
149
166
|
if rotor or run_type in ROTOR_RUN_TYPES:
|
|
150
167
|
return "a rotor's helical wake is not a streamwise sheet"
|
|
151
168
|
if run_type in UNSTEADY_RUN_TYPES:
|
|
152
|
-
return "
|
|
169
|
+
return "variant B serves steady rows"
|
|
153
170
|
return ""
|
|
154
171
|
|
|
155
172
|
|
|
@@ -184,7 +201,7 @@ def few_stations_warning(family: str, per_side: int, stations: int) -> str:
|
|
|
184
201
|
"""Return the WARNING of a family traced on fewer stations than asked (FR-1019).
|
|
185
202
|
|
|
186
203
|
One sentence, said by the plan and by post alike: the family, its station
|
|
187
|
-
count per side, the count ``[
|
|
204
|
+
count per side, the count its ``[[farfields]]`` sections entry asks for, and the
|
|
188
205
|
strip bias of ``E_T`` the definitions page measured at the nearest count
|
|
189
206
|
(:data:`STRIP_BIAS_PERCENT`).
|
|
190
207
|
|
|
@@ -195,7 +212,7 @@ def few_stations_warning(family: str, per_side: int, stations: int) -> str:
|
|
|
195
212
|
per_side : int
|
|
196
213
|
Its station count per side of the symmetry plane.
|
|
197
214
|
stations : int
|
|
198
|
-
The count per side ``[
|
|
215
|
+
The count per side its ``[[farfields]]`` sections entry asks for.
|
|
199
216
|
|
|
200
217
|
Returns
|
|
201
218
|
-------
|
|
@@ -206,8 +223,9 @@ def few_stations_warning(family: str, per_side: int, stations: int) -> str:
|
|
|
206
223
|
return ""
|
|
207
224
|
nearest = min(STRIP_BIAS_PERCENT, key=lambda count: (abs(count - per_side), count))
|
|
208
225
|
return (
|
|
209
|
-
f"family {family} has {per_side} stations per side, fewer than the {stations}
|
|
210
|
-
|
|
226
|
+
f"family {family} has {per_side} stations per side, fewer than the {stations} its "
|
|
227
|
+
"[[farfields]] sections entry asks for; the strip bias of E_T measured on the "
|
|
228
|
+
"definitions page is "
|
|
211
229
|
f"{STRIP_BIAS_PERCENT[nearest]} percent at {nearest} stations per side (FR-1019)"
|
|
212
230
|
)
|
|
213
231
|
|
|
@@ -216,7 +234,7 @@ def _analyses(spec: FarfieldSpec) -> list[str]:
|
|
|
216
234
|
out = []
|
|
217
235
|
if spec.trefftz is not None:
|
|
218
236
|
out += [f"trefftz:{variant}" for variant in spec.trefftz.variant]
|
|
219
|
-
if spec.
|
|
237
|
+
if spec.balances:
|
|
220
238
|
out.append("ledgers")
|
|
221
239
|
return out
|
|
222
240
|
|
|
@@ -240,7 +258,7 @@ def resolve_farfield(
|
|
|
240
258
|
Parameters
|
|
241
259
|
----------
|
|
242
260
|
spec : FarfieldSpec
|
|
243
|
-
The row's ``[
|
|
261
|
+
The row's named ``[[farfields]]`` entry.
|
|
244
262
|
run_type : str
|
|
245
263
|
The row's run type (``steady``, ``unsteady``, ``unsteady_rotor``,
|
|
246
264
|
``qsteady_rotor``).
|
|
@@ -248,7 +266,7 @@ def resolve_farfield(
|
|
|
248
266
|
The families a declared ``[sections]`` distribution cuts in plane XZ of a
|
|
249
267
|
reference-axes frame (FR-1045).
|
|
250
268
|
selected_families : sequence of str
|
|
251
|
-
The families ``[
|
|
269
|
+
The families the ``[[farfields]]`` entry resolves to on the row's geometry.
|
|
252
270
|
exports : dict of str to bool
|
|
253
271
|
The artifact's ``[exports]`` table, as stated.
|
|
254
272
|
declares_lattice, declares_plane : bool
|
|
@@ -282,13 +300,17 @@ def resolve_farfield(
|
|
|
282
300
|
analysis,
|
|
283
301
|
"families",
|
|
284
302
|
"refused",
|
|
285
|
-
reason=
|
|
303
|
+
reason=(
|
|
304
|
+
f"[[farfields]] entry {spec.name!r}: families = {spec.families!r} "
|
|
305
|
+
"names no family of the geometry"
|
|
306
|
+
),
|
|
286
307
|
)
|
|
287
308
|
return FarfieldResolution(tuple(resolver.inputs))
|
|
288
309
|
for analysis in _analyses(spec):
|
|
289
310
|
why = applies(analysis, run_type, rotor=rotor)
|
|
290
311
|
if why:
|
|
291
|
-
|
|
312
|
+
state = "refused" if analysis != "trefftz:wake" else "not_applicable"
|
|
313
|
+
resolver.item(analysis, "run_type", state, reason=why)
|
|
292
314
|
elif analysis == "trefftz:sections":
|
|
293
315
|
resolver.sections(analysis, selected_families, coupled)
|
|
294
316
|
elif analysis == "trefftz:wake":
|
|
@@ -305,7 +327,7 @@ def resolve_farfield(
|
|
|
305
327
|
)
|
|
306
328
|
else:
|
|
307
329
|
# A rotor's Trefftz C reads a lattice station, as _Resolver.probes says (PFS-2081.101).
|
|
308
|
-
reads_lattice = analysis
|
|
330
|
+
reads_lattice = analysis in ("ledgers", "trefftz:power")
|
|
309
331
|
declared = declares_lattice if reads_lattice else declares_plane
|
|
310
332
|
resolver.probes(analysis, declared)
|
|
311
333
|
return FarfieldResolution(tuple(resolver.inputs))
|
|
@@ -330,8 +352,6 @@ class _Resolver:
|
|
|
330
352
|
|
|
331
353
|
def lacks(self, analysis: str, name: str) -> bool:
|
|
332
354
|
command = _COMMANDS[name]
|
|
333
|
-
if name == "probe_points" and self.run_type in UNSTEADY_RUN_TYPES:
|
|
334
|
-
command = "UNSTEADY_SOLVER_NEW_FLUID_PLOT"
|
|
335
355
|
if self.has_command(command):
|
|
336
356
|
return False
|
|
337
357
|
self.item(analysis, name, "refused", reason=f"the selected build has no {command}")
|
|
@@ -387,7 +407,7 @@ class _Resolver:
|
|
|
387
407
|
self.export(analysis, "sectional_loads", "sectional_loads_export", True)
|
|
388
408
|
|
|
389
409
|
def probes(self, analysis: str, declared: bool) -> None:
|
|
390
|
-
shape = "lattice" if analysis
|
|
410
|
+
shape = "lattice" if analysis in ("ledgers", "trefftz:power") else "plane"
|
|
391
411
|
self.needed(
|
|
392
412
|
analysis,
|
|
393
413
|
"probe_points",
|
|
@@ -395,7 +415,4 @@ class _Resolver:
|
|
|
395
415
|
f"the declared [[probes]] {shape}",
|
|
396
416
|
f"the far-field {shape} as probe points",
|
|
397
417
|
)
|
|
398
|
-
|
|
399
|
-
self.item(analysis, "probe_export", "added", "per-step fluid plots of every point")
|
|
400
|
-
else:
|
|
401
|
-
self.export(analysis, "probes", "probe_export", True)
|
|
418
|
+
self.item(analysis, "probe_export", "added", "the dedicated farfield_probes export")
|
|
@@ -876,7 +876,7 @@ def wire_workspace_fsi(
|
|
|
876
876
|
blades = list(rotor.families_blades)
|
|
877
877
|
if len(blades) != cfg.blade_count or len(set(blades)) != len(blades):
|
|
878
878
|
raise CampaignConfigError("FSI blade count differs from the unique resolved rotor blades.")
|
|
879
|
-
if rotor.
|
|
879
|
+
if rotor.axis_vector != (1.0, 0.0, 0.0) or rotor.blade1.zero != "Z":
|
|
880
880
|
raise CampaignConfigError(
|
|
881
881
|
"FSI rotor_frame requires shaft X and blade datum Z; another node/load basis "
|
|
882
882
|
"has not been established by this adapter."
|
|
@@ -1211,7 +1211,7 @@ def wire_quasi_steady_sector_fsi(
|
|
|
1211
1211
|
"blade, blade one, and the others are its periodic images."
|
|
1212
1212
|
)
|
|
1213
1213
|
if (
|
|
1214
|
-
rotor.
|
|
1214
|
+
rotor.axis_vector != (1.0, 0.0, 0.0)
|
|
1215
1215
|
or rotor.blade1.zero != "Z"
|
|
1216
1216
|
or abs(rotor.blade1.azimuth_deg) > 1e-12
|
|
1217
1217
|
or any(abs(value) > _ORIGIN_TOLERANCE_M for value in rotor.origin)
|