pyflightstream 0.45.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.0/src/pyflightstream.egg-info → pyflightstream-0.45.1}/PKG-INFO +1 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/pyproject.toml +1 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/fsi_workspace.py +2 -2
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/pproc.py +45 -44
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/reference_blocks.py +48 -17
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_clock.py +2 -2
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_exports.py +18 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_farfield.py +81 -75
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_frames.py +61 -15
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_motion.py +1 -3
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_pproc.py +18 -1
- pyflightstream-0.45.1/src/pyflightstream/cases/workflows/_probe_imports.py +159 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_probes.py +187 -44
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_qsteady_rotor.py +3 -5
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_registry.py +6 -8
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_rotor.py +12 -3
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_rows.py +5 -9
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_skeleton.py +2 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_field_inputs.py +1 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_reduction_stage.py +17 -8
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_sim.py +43 -5
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/farfield_fields.py +73 -27
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/farfield_products.py +3 -2
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/input_template.py +3 -3
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/products.py +13 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/qsteady.py +1 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/layouts.py +53 -6
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_actions_counter.py +22 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_continuation.py +6 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/inputs.py +2 -2
- {pyflightstream-0.45.0 → pyflightstream-0.45.1/src/pyflightstream.egg-info}/PKG-INFO +1 -1
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/SOURCES.txt +1 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/LICENSE +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/MANIFEST.in +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/README.md +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/setup.cfg +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_atmosphere.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_cli.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_console.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_decimal.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_deprecations.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_digest.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_errors.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_expressions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_fsi_calibration.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_fsm.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_fsm_fresh.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_lengths.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_maturity.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_mesh.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_progress.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_retired_names.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_signature.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_textio.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_tokens.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/_yamlflow.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_ccs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_farfield_spec.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_fsi_external.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_geometry_emit.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_geometry_instruction.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_matrix_layouts.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_matrix_upgrade.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_setup_keys.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_setup_link.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_skipped_families.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_sweep_names.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/_unsteady_actions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/acoustics.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/ccs_fuselage.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/ccs_revolution.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/ccs_wing.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/corrections.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/farfield_inputs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/field_coverage.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/freestream.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/matrix.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/mesh.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/naming.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/qsteady.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/selection.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/settings.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/setup_surfaces.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/sixdof.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/windows.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_actuator.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_additional.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_batch_actions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_batch_script.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_conventions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_export_first_step.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_freestream.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_gap_evidence.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_geometry.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_names.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_reductions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_row_cells.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_sixdof.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_solver_settings.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_steady.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_streamlines.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_timing.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_unsteady.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_vocabulary.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_wake_length.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/_meta.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/_schema.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/acoustics.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/actuators.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/advanced_settings.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/aeroelastic_coupling.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/base_regions.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/boundary_conditions.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/cad.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/cad_create.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/ccs_fuselage_mesh.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/ccs_revolve_mesh.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/ccs_wing_mesh.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/coordinate_systems.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/file_io.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/free_surfaces.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/inlets_outlets.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_import_export.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_operations.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_unite.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/mesh_wrapper.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/motion_definitions.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/plots.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/probe_points.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/runtime_settings.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/scene_settings.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/scenes.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/script_controls.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/simulation_controls.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_analysis.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_contours.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_export.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_initialization.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/solver_settings.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/stability_toolbox.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/streamlines.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/surface_sections.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/sweeper.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/transition_trips.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/unsteady_solver.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/commands/volume_sections.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/exceptions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/extras.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/balances.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/fields.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/quadrature.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/farfield/trefftz.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/_direct_morphing.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/beam.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/calibration.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/centrifugal.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/cli.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/config.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/driver.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/errors.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/external.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/kinematics.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/loads.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/materials.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/nodes.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/sections.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/state.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/fsi/wing.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/options.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/overview.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_additional.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_admit.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_condition.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_installed_copies.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_matrix_template.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_noise_products.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_products_campaign.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_rotor_plan.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_rotor_products.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_settings_product.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_stage.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_structure.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_tables.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/_transfer_functions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/acoustics.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/axes.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/boundary_layer.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/corrections.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/custom_polar.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/diagnostics.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/disc_maps.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/equations.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/field_frames.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/glossary.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/guides.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/harmonics.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/inflow_tools.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/point_tables.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/polar.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/probe_fields.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/provenance.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/qsteady_noise.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/reductions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/rotor_table.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/section_distributions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/series.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/settings_table.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/streamlines.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/superfile.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/surfaces.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/unsteady.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/unsteady_polar.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/post/writers.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/_model.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/errors.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/geometry.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/lattice.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/probes/planar.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_reanalysis.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gap.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gapbase.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gapedges.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_0400_gapkit.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_26125.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_catalog_b.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_ccs_mesh.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_ccs_noise.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_kit.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/_spec_t1.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/cli.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/compat.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/cost.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/drift.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/errors.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/geometry.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/matrix.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/physics.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/probes.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-01.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-02.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-05.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/PHY-06.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/SMI-01.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/SMI-02.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-01.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-02.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-05.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/references/pressure-drag/PHY-06.yaml +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/reports.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/qa/specs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/reference.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/conditions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/core.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/exports.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/loads.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/log.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/native_surface.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/sectional_loads.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/surface.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/tables.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/results/wake.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_additional.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_alias.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_assemble.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_assessment.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_collect.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_exec.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_plan.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_run.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_batch_split.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_campaign.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_geometry.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_mesh.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_parsers.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_parsers_storage.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_print.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_query.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_query_history.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_cli_query_point.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_collect_logs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_collect_notes.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_continuation_frame.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_executors.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_field_motion.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_grouped.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_identity.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_ids.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_mark_converged.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_matrix_warnings.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_pending.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_plan.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_plan_report.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_points.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild_evidence.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild_grouped.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_rebuild_summary.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_record_files.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_solver_windows.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_step_exports.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_sweep.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/_wake_edge_verdict.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/cli.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/collect.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/matrix.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/run/records.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_arg_checks.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_build_forms.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_ledger_tables.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_relaxed_te.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_settings.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_surface_averaging.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/_wake_edge_file.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/entities.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/helpers.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/motion.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/rotor_vocabulary.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/solver_setup.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/script/toggles.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/support.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/testing.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/cli.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/database.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/errors.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/utils/manual.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/versions.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_batch_life.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_batch_relocate.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_batches.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_degenerate.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_effective.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_free_space.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_build.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_clean.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_convert.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_instruction.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_record.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_sidecar.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_geometry_vtk.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_layout.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_ledger_api.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_ledger_history.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_links.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_matrix_binding.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_matrix_homes.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_matrix_phases.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_missing_log.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_query_files.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_query_logs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_query_point.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/__init__.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_audit.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_blocks.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_config.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_geometry.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_grid.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_level.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_obj.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_periodic.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_remesh.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_remesh_group.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_remesh_pairs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_refine/_staging.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_row_setup.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_script_comparison.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_settings_file.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_step_prune.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/_verdicts.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/actuator_profiles.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/builds.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/cli.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/costs.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel_bridge.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel_file.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/excel_sync.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/fields.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/flight_condition.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/fsi_external_setup.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/fsi_setup.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/hpc.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/ledger.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/manifest.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/matrix.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/migrate.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/naming.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/record_document.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/selections.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/setup_inspection.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/setup_standards.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/sidecars.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/sixdof_setup.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/storage.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/trailing_edges.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/workspace/wake_edges.py +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/dependency_links.txt +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/entry_points.txt +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/requires.txt +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream.egg-info/top_level.txt +0 -0
- {pyflightstream-0.45.0 → pyflightstream-0.45.1}/tools/check_shipped_surface.py +0 -0
- {pyflightstream-0.45.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.45.
|
|
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"}
|
|
@@ -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)
|
|
@@ -37,7 +37,7 @@ from pydantic import (
|
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
from pyflightstream._deprecations import ROW_EACH_BLADE, refusal_text
|
|
40
|
-
from pyflightstream._errors import InputArtifactError
|
|
40
|
+
from pyflightstream._errors import InputArtifactError, PyflightstreamWarning, warn
|
|
41
41
|
from pyflightstream._expressions import ALLOWED_FUNCTIONS, expression_symbols
|
|
42
42
|
from pyflightstream._retired_names import PROBE_SCALE_PROPELLER_RADIUS
|
|
43
43
|
from pyflightstream._tokens import REDUCTION_COLUMNS
|
|
@@ -51,7 +51,6 @@ from pyflightstream.cases._farfield_spec import (
|
|
|
51
51
|
farfield_entries,
|
|
52
52
|
)
|
|
53
53
|
from pyflightstream.cases.corrections import QsteadyCorrectionSpec
|
|
54
|
-
from pyflightstream.cases.reference_blocks import CampaignConfigError
|
|
55
54
|
from pyflightstream.cases.selection import EVERY_FAMILY
|
|
56
55
|
from pyflightstream.commands import CommandRegistry
|
|
57
56
|
from pyflightstream.probes.planar import PlanarProbeGrid
|
|
@@ -146,6 +145,7 @@ EXPORT_KINDS: tuple[tuple[str, str, str, bool], ...] = (
|
|
|
146
145
|
# FR-461: a free body's trajectory, declared only by a row's SIXDOF
|
|
147
146
|
# input. Its command is a setup command, emitted with the motion it names.
|
|
148
147
|
("trajectory_6dof", "_trajectory_6dof.txt", "EXPORT_6DOF_TRAJECTORY", True),
|
|
148
|
+
("debug_fsm", "_debug.fsm", "SAVEAS", False),
|
|
149
149
|
("log", "_log.txt", "EXPORT_LOG", False),
|
|
150
150
|
)
|
|
151
151
|
|
|
@@ -202,17 +202,15 @@ EXPORT_KIND_SINCE: dict[str, tuple[int, int]] = {
|
|
|
202
202
|
#: are saved once after the march (GOAL-033 T40, 26.124 build 8172026).
|
|
203
203
|
STEADY_ONLY_EXPORT_KINDS: frozenset[str] = frozenset({"probes"})
|
|
204
204
|
|
|
205
|
-
#:
|
|
206
|
-
|
|
207
|
-
#: probe points after the time march and exports them once.
|
|
208
|
-
ProbeKind = Literal["unsteady", "normal"]
|
|
205
|
+
#: PFS-2167: default samples once; instantaneous requests an unsteady history.
|
|
206
|
+
ProbeKind = Literal["default", "instantaneous"]
|
|
209
207
|
PROBE_KINDS: tuple[str, ...] = get_args(ProbeKind)
|
|
210
208
|
|
|
211
209
|
#: The kinds a pproc must switch ON: every other kind is on unless its
|
|
212
210
|
#: ``[exports]`` entry says false. The surface fields and the per-panel force
|
|
213
211
|
#: distribution (G10) grow with the mesh, so they are asked for
|
|
214
212
|
#: where they are wanted.
|
|
215
|
-
OPT_IN_EXPORT_KINDS: tuple[str, ...] = ("vtk", "csv", "force_distributions")
|
|
213
|
+
OPT_IN_EXPORT_KINDS: tuple[str, ...] = ("vtk", "csv", "force_distributions", "debug_fsm")
|
|
216
214
|
|
|
217
215
|
#: What each kind an ``[exports]`` table may name leaves, one sentence each,
|
|
218
216
|
#: for the generated input glossary ``INPUTS.md`` (G08). The command
|
|
@@ -221,6 +219,7 @@ OPT_IN_EXPORT_KINDS: tuple[str, ...] = ("vtk", "csv", "force_distributions")
|
|
|
221
219
|
#: The two volume-section kinds are not here: ``[exports]`` cannot name them.
|
|
222
220
|
EXPORT_KIND_MEANINGS: dict[str, str] = {
|
|
223
221
|
"simulation": "The point's final saved simulation, its solver state after the solve.",
|
|
222
|
+
"debug_fsm": "The solver state before output setup, for inspection only.",
|
|
224
223
|
"loads": "The loads table, the export every run is judged by.",
|
|
225
224
|
"tecplot": (
|
|
226
225
|
"The surface solution in Tecplot format, written by the package from the VTK "
|
|
@@ -1186,10 +1185,10 @@ class ProbesSpec(_LocatedSpec):
|
|
|
1186
1185
|
points_file : str, optional
|
|
1187
1186
|
The name of a points file of ``inputs/profiles/``, cited instead of
|
|
1188
1187
|
drawing lines and planes.
|
|
1189
|
-
kind : {'
|
|
1190
|
-
How an unsteady row samples the entry: ``
|
|
1188
|
+
kind : {'default', 'instantaneous'}
|
|
1189
|
+
How an unsteady row samples the entry: ``instantaneous``, one
|
|
1191
1190
|
fluid plot per point and parameter evaluated at every time step, or
|
|
1192
|
-
``
|
|
1191
|
+
``default`` (also when absent), probe points created after the time march and exported
|
|
1193
1192
|
once, at the last time step. A steady row accepts either and samples
|
|
1194
1193
|
probe points.
|
|
1195
1194
|
"""
|
|
@@ -1238,26 +1237,35 @@ class ProbesSpec(_LocatedSpec):
|
|
|
1238
1237
|
#: committed report).
|
|
1239
1238
|
#: Excluded from every dump, so no machine path reaches a record or a plan.
|
|
1240
1239
|
resolved_points_file: str | None = Field(default=None, exclude=True)
|
|
1241
|
-
#:
|
|
1242
|
-
#:
|
|
1243
|
-
#: parameter, a history at every time step; ``normal`` is probe points
|
|
1240
|
+
#: How an unsteady row samples this entry. ``instantaneous`` is one fluid
|
|
1241
|
+
#: plot per point and parameter, a history at every time step; ``default`` is probe points
|
|
1244
1242
|
#: created after the time march with the steady commands, updated and
|
|
1245
1243
|
#: exported once, so they hold the solution at the end of the march (RPT-153,
|
|
1246
1244
|
#: "normal probes after an unsteady march", 2026-10-05; not the same sample as
|
|
1247
1245
|
#: the last fluid-plot step). A steady row samples
|
|
1248
1246
|
#: probe points whatever the entry states.
|
|
1249
|
-
kind: ProbeKind = "
|
|
1247
|
+
kind: ProbeKind = "default"
|
|
1250
1248
|
|
|
1251
1249
|
@field_validator("kind", mode="before")
|
|
1252
1250
|
@classmethod
|
|
1253
1251
|
def _a_known_probe_kind(cls, value: object) -> object:
|
|
1254
1252
|
"""Refuse a probe kind other than the two, naming both (FR-888)."""
|
|
1253
|
+
aliases = {"normal": "default", "unsteady": "instantaneous"}
|
|
1254
|
+
if isinstance(value, str) and value in aliases:
|
|
1255
|
+
canonical = aliases[value]
|
|
1256
|
+
warn(
|
|
1257
|
+
f"probe kind {value!r} is deprecated; use kind = {canonical!r} instead.",
|
|
1258
|
+
PyflightstreamWarning,
|
|
1259
|
+
stacklevel=2,
|
|
1260
|
+
)
|
|
1261
|
+
return canonical
|
|
1255
1262
|
if value not in PROBE_KINDS:
|
|
1256
1263
|
raise ValueError(
|
|
1257
1264
|
f"probe kind {value!r} is not one of {' or '.join(map(repr, PROBE_KINDS))}: "
|
|
1258
|
-
'write kind = "
|
|
1259
|
-
'evaluated at every time step, or kind = "
|
|
1260
|
-
"sampled once, at the last time step"
|
|
1265
|
+
'write kind = "instantaneous" for a fluid plot per point and parameter, '
|
|
1266
|
+
'evaluated at every time step, or kind = "default" for probe points '
|
|
1267
|
+
"sampled once, at the last time step. Deprecated aliases: 'unsteady' "
|
|
1268
|
+
"and 'normal', respectively."
|
|
1261
1269
|
)
|
|
1262
1270
|
return value
|
|
1263
1271
|
|
|
@@ -2462,12 +2470,7 @@ class PprocSpec(BaseModel):
|
|
|
2462
2470
|
# history is in the plots export whatever the [[probes]] kind is
|
|
2463
2471
|
# (PFS-2105.002).
|
|
2464
2472
|
sources.append("{name}_plots.txt")
|
|
2465
|
-
|
|
2466
|
-
entry.field_formats or entry.reusable_inflow for entry in self.probes
|
|
2467
|
-
):
|
|
2468
|
-
# FR-418: a NORMAL entry's field is read from the probe-points
|
|
2469
|
-
# export on an unsteady row too, not from the plots history.
|
|
2470
|
-
sources.append("{name}_plots.txt" if unsteady and not normal else "{name}_probes.txt")
|
|
2473
|
+
sources.extend(self._field_exports(unsteady))
|
|
2471
2474
|
for source in sources:
|
|
2472
2475
|
if source not in names:
|
|
2473
2476
|
names.append(source)
|
|
@@ -2476,6 +2479,20 @@ class PprocSpec(BaseModel):
|
|
|
2476
2479
|
names.append(name)
|
|
2477
2480
|
return names
|
|
2478
2481
|
|
|
2482
|
+
def _field_exports(self, unsteady: bool) -> list[str]:
|
|
2483
|
+
"""Request both native sources when mixed entries require sampled fields."""
|
|
2484
|
+
sources = []
|
|
2485
|
+
if self.volume_section is not None:
|
|
2486
|
+
sources.append("{name}_plots.txt" if unsteady else "{name}_probes.txt")
|
|
2487
|
+
for entry in self.probes:
|
|
2488
|
+
if entry.field_formats or entry.reusable_inflow:
|
|
2489
|
+
sources.append(
|
|
2490
|
+
"{name}_plots.txt"
|
|
2491
|
+
if unsteady and entry.kind != "default"
|
|
2492
|
+
else "{name}_probes.txt"
|
|
2493
|
+
)
|
|
2494
|
+
return sources
|
|
2495
|
+
|
|
2479
2496
|
def _streamline_exports(self) -> list[str]:
|
|
2480
2497
|
"""Return the files the streamline traces are exported to (FR-1078)."""
|
|
2481
2498
|
if self.streamlines is None:
|
|
@@ -2487,31 +2504,15 @@ class PprocSpec(BaseModel):
|
|
|
2487
2504
|
return [f"{{name}}{suffix[kind]}" for kind in traced]
|
|
2488
2505
|
|
|
2489
2506
|
def samples_normal_probes(self) -> bool:
|
|
2490
|
-
"""Whether an unsteady row
|
|
2507
|
+
"""Whether an unsteady row has entries sampled as normal probe points.
|
|
2491
2508
|
|
|
2492
2509
|
True when the artifact declares at least one ``[[probes]]`` entry and
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
naming the entries of each kind. Steady callers do not ask this question.
|
|
2510
|
+
at least one entry states ``kind = "default"``. Mixed entries keep their
|
|
2511
|
+
independent sampling routes. Steady callers do not ask this question.
|
|
2496
2512
|
|
|
2497
2513
|
Returns
|
|
2498
2514
|
-------
|
|
2499
2515
|
bool
|
|
2500
|
-
Whether
|
|
2516
|
+
Whether any entry needs the final probe-points export.
|
|
2501
2517
|
"""
|
|
2502
|
-
|
|
2503
|
-
if not normal:
|
|
2504
|
-
return False
|
|
2505
|
-
unsteady = [str(n) for n, entry in enumerate(self.probes, 1) if entry.kind != "normal"]
|
|
2506
|
-
if self.volume_section is not None:
|
|
2507
|
-
unsteady.append("[volume_section]")
|
|
2508
|
-
if unsteady:
|
|
2509
|
-
raise CampaignConfigError(
|
|
2510
|
-
"mixes probe kinds on an unsteady row: unsteady (fluid plots at every time step) "
|
|
2511
|
-
f"{', '.join(unsteady)}; normal (probe points at the last time step) "
|
|
2512
|
-
f"{', '.join(normal)}. One unsteady row samples every [[probes]] entry one "
|
|
2513
|
-
'way, an entry stating no kind counting as kind = "unsteady", and a '
|
|
2514
|
-
"[volume_section] is sampled through fluid plots. State one kind on every "
|
|
2515
|
-
"entry, or move the other entries to a second pproc on their own row."
|
|
2516
|
-
)
|
|
2517
|
-
return True
|
|
2518
|
+
return any(entry.kind == "default" for entry in self.probes)
|
{pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/reference_blocks.py
RENAMED
|
@@ -116,6 +116,29 @@ class BladeDatum(BaseModel):
|
|
|
116
116
|
return token
|
|
117
117
|
|
|
118
118
|
|
|
119
|
+
class _RotorAxis(BaseModel):
|
|
120
|
+
"""The named shaft axis and its installed direction in global coordinates."""
|
|
121
|
+
|
|
122
|
+
model_config = ConfigDict(extra="forbid", allow_inf_nan=False)
|
|
123
|
+
shaft: Literal["X", "Y", "Z"]
|
|
124
|
+
vector_wrt_global: tuple[float, float, float]
|
|
125
|
+
|
|
126
|
+
@model_validator(mode="after")
|
|
127
|
+
def _usable_direction(self) -> _RotorAxis:
|
|
128
|
+
scale = max(abs(value) for value in self.vector_wrt_global)
|
|
129
|
+
if scale == 0:
|
|
130
|
+
raise ValueError("vector_wrt_global has zero length; state the shaft direction")
|
|
131
|
+
scaled = tuple(value / scale for value in self.vector_wrt_global)
|
|
132
|
+
component = scaled["XYZ".index(self.shaft)] / math.hypot(*scaled)
|
|
133
|
+
angle = math.degrees(math.acos(max(-1.0, min(1.0, component))))
|
|
134
|
+
if angle > 45.0 + 1e-10:
|
|
135
|
+
raise ValueError(
|
|
136
|
+
f"vector_wrt_global is {angle:.2f} degrees from shaft {self.shaft}; "
|
|
137
|
+
"at most 45 degrees is accepted. Choose the matching shaft letter"
|
|
138
|
+
)
|
|
139
|
+
return self
|
|
140
|
+
|
|
141
|
+
|
|
119
142
|
class RotorBlock(BaseModel):
|
|
120
143
|
"""One rotor, declared as one block of the reference artifact (FR-60).
|
|
121
144
|
|
|
@@ -151,8 +174,8 @@ class RotorBlock(BaseModel):
|
|
|
151
174
|
a type check is what found it.
|
|
152
175
|
x_m, y_m, z_m : float
|
|
153
176
|
The hub, in the geometry's own frame.
|
|
154
|
-
axis : str
|
|
155
|
-
|
|
177
|
+
axis : str or mapping
|
|
178
|
+
A shaft letter or ``{shaft, vector_wrt_global}`` installation declaration.
|
|
156
179
|
rpm_sign : int
|
|
157
180
|
``+1`` is the right-hand rule about ``axis``, which is the one
|
|
158
181
|
reading that does not depend on where the reader stands.
|
|
@@ -178,7 +201,7 @@ class RotorBlock(BaseModel):
|
|
|
178
201
|
model_config = ConfigDict(extra="forbid", allow_inf_nan=False)
|
|
179
202
|
|
|
180
203
|
alias: str
|
|
181
|
-
axis: str |
|
|
204
|
+
axis: str | _RotorAxis
|
|
182
205
|
diameter_m: float = Field(gt=0.0)
|
|
183
206
|
families_blades: list[str]
|
|
184
207
|
x_m: float = 0.0
|
|
@@ -207,14 +230,7 @@ class RotorBlock(BaseModel):
|
|
|
207
230
|
@field_validator("axis", mode="before")
|
|
208
231
|
@classmethod
|
|
209
232
|
def _an_axis(cls, value: object) -> object:
|
|
210
|
-
"""Accept a
|
|
211
|
-
|
|
212
|
-
The letter keeps its exact meaning: `Z` IS the vector (0, 0, 1), so the
|
|
213
|
-
letter spelling is a special case of a vector. A mesh can arrive
|
|
214
|
-
with its pitch and toe
|
|
215
|
-
already in it, and a shaft installed at an angle lies on no geometry
|
|
216
|
-
axis at all.
|
|
217
|
-
"""
|
|
233
|
+
"""Accept a letter or an explicit shaft table; translate retired bare vectors."""
|
|
218
234
|
if isinstance(value, str):
|
|
219
235
|
token = value.strip().upper()
|
|
220
236
|
if token not in ("X", "Y", "Z"):
|
|
@@ -223,8 +239,8 @@ class RotorBlock(BaseModel):
|
|
|
223
239
|
# documentation carries. Widening what `axis` accepts may add to
|
|
224
240
|
# the sentence and may not replace it.
|
|
225
241
|
raise ValueError(
|
|
226
|
-
f"axis = {value!r} is not an axis; write X, Y or Z, or
|
|
227
|
-
"
|
|
242
|
+
f"axis = {value!r} is not an axis; write X, Y or Z, or a table "
|
|
243
|
+
"with shaft and vector_wrt_global for a rotor installed at an angle"
|
|
228
244
|
)
|
|
229
245
|
return token
|
|
230
246
|
if isinstance(value, (list, tuple)):
|
|
@@ -244,9 +260,18 @@ class RotorBlock(BaseModel):
|
|
|
244
260
|
f"axis = {value!r} has no length, so it names no direction, and a rotor "
|
|
245
261
|
"turns about a direction"
|
|
246
262
|
)
|
|
247
|
-
|
|
263
|
+
nearest = "XYZ"[max(range(3), key=lambda i: abs(components[i]))]
|
|
264
|
+
raise ValueError(
|
|
265
|
+
f"axis = {list(value)!r} did not say which frame axis is the shaft; "
|
|
266
|
+
f'write axis = {{ shaft = "{nearest}", vector_wrt_global = {list(value)!r} }}'
|
|
267
|
+
)
|
|
248
268
|
return value
|
|
249
269
|
|
|
270
|
+
@property
|
|
271
|
+
def shaft(self) -> str:
|
|
272
|
+
"""The rotor-frame axis named as the shaft."""
|
|
273
|
+
return self.axis if isinstance(self.axis, str) else self.axis.shaft
|
|
274
|
+
|
|
250
275
|
@property
|
|
251
276
|
def axis_vector(self) -> tuple[float, float, float]:
|
|
252
277
|
"""The shaft direction as a UNIT vector, whichever way it was written.
|
|
@@ -258,7 +283,8 @@ class RotorBlock(BaseModel):
|
|
|
258
283
|
stated = self.axis
|
|
259
284
|
if isinstance(stated, str):
|
|
260
285
|
return AXIS_UNIT_VECTORS[stated]
|
|
261
|
-
|
|
286
|
+
scale = max(abs(value) for value in stated.vector_wrt_global)
|
|
287
|
+
components = tuple(value / scale for value in stated.vector_wrt_global)
|
|
262
288
|
length = math.hypot(*components)
|
|
263
289
|
return (components[0] / length, components[1] / length, components[2] / length)
|
|
264
290
|
|
|
@@ -277,9 +303,9 @@ class RotorBlock(BaseModel):
|
|
|
277
303
|
def _an_alias_no_frame_can_be_mistaken_for(cls, value: str) -> str:
|
|
278
304
|
if not value.strip() or value != value.strip() or any(c.isspace() for c in value):
|
|
279
305
|
raise ValueError(f"alias = {value!r} must be one word, with no blank or space in it")
|
|
280
|
-
if value.upper().endswith(("_SMRP", "_RMRP")):
|
|
306
|
+
if value.upper().endswith(("_SMRP", "_RMRP", "_BMRP")):
|
|
281
307
|
raise ValueError(
|
|
282
|
-
f"alias = {value!r} ends in _SMRP or _RMRP, the radical of the frames the "
|
|
308
|
+
f"alias = {value!r} ends in _SMRP or _RMRP or _BMRP, the radical of the frames the "
|
|
283
309
|
"package builds from a rotor's name, so a rotor and a frame would spell the "
|
|
284
310
|
"same; choose another name"
|
|
285
311
|
)
|
|
@@ -302,6 +328,11 @@ class RotorBlock(BaseModel):
|
|
|
302
328
|
# Compare directions by angle, not spelling. An axis (0, 0.02, 0.9998)
|
|
303
329
|
# is only one degree from a Z datum even though their strings differ.
|
|
304
330
|
# A nearly parallel datum cannot define a useful azimuth and is refused.
|
|
331
|
+
if self.blade1.zero.lstrip("+-") == self.shaft:
|
|
332
|
+
raise ValueError(
|
|
333
|
+
f"blade1.zero {self.blade1.zero} equals shaft {self.shaft}; "
|
|
334
|
+
"choose one of the two remaining axes"
|
|
335
|
+
)
|
|
305
336
|
shaft = self.axis_vector
|
|
306
337
|
datum = AXIS_UNIT_VECTORS[self.blade1.zero.lstrip("+-")]
|
|
307
338
|
alignment = abs(sum(a * b for a, b in zip(shaft, datum, strict=True)))
|
{pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_clock.py
RENAMED
|
@@ -282,11 +282,11 @@ def _action_export_kinds(
|
|
|
282
282
|
for kind, name in classify_outputs(names).items()
|
|
283
283
|
if whole_run or kind not in (*WHOLE_RUN_EXPORT_KINDS, *END_OF_RUN_EXPORT_KINDS)
|
|
284
284
|
}
|
|
285
|
+
kinds.pop("debug_fsm", None) # Saved once at the window start, never on every step.
|
|
285
286
|
# FR-890: the per-step exports of a row whose probes are NORMAL update and
|
|
286
287
|
# export them at every step of the window; the wall clock's rescue does not,
|
|
287
288
|
# since the points may not exist when it fires.
|
|
288
|
-
|
|
289
|
-
if declared_run_type(case) in _UNSTEADY_RECIPES and not normal:
|
|
289
|
+
if declared_run_type(case) in _UNSTEADY_RECIPES:
|
|
290
290
|
for kind in STEADY_ONLY_EXPORT_KINDS:
|
|
291
291
|
kinds.pop(kind, None)
|
|
292
292
|
# G05: an action fires during the march and a volume section is cut after
|
{pyflightstream-0.45.0 → pyflightstream-0.45.1}/src/pyflightstream/cases/workflows/_exports.py
RENAMED
|
@@ -29,6 +29,7 @@ from pyflightstream.cases import (
|
|
|
29
29
|
from pyflightstream.cases import (
|
|
30
30
|
windows as _windows,
|
|
31
31
|
)
|
|
32
|
+
from pyflightstream.cases._unsteady_actions import UNSTEADY_EXPORTS_ACTION
|
|
32
33
|
from pyflightstream.probes.layouts import emit_probe_export
|
|
33
34
|
from pyflightstream.script import (
|
|
34
35
|
Script,
|
|
@@ -429,6 +430,21 @@ def _export_block(
|
|
|
429
430
|
_export_log(conventions, case, script, claimed=tuple(claimed))
|
|
430
431
|
|
|
431
432
|
|
|
433
|
+
def _debug_fsm(case: SimCase, script: Script, *, clocking: int | None = None) -> None:
|
|
434
|
+
"""Save the opt-in inspection state before post-solve output setup."""
|
|
435
|
+
if case.pproc is None or not case.pproc.exports.get("debug_fsm", False):
|
|
436
|
+
return
|
|
437
|
+
if any(action.name == UNSTEADY_EXPORTS_ACTION for action in script.unsteady_actions):
|
|
438
|
+
return # The window-start action owns this save.
|
|
439
|
+
names = [name for name in case.outputs if name.endswith("_debug.fsm")]
|
|
440
|
+
if not names:
|
|
441
|
+
return
|
|
442
|
+
if clocking is None and any(name.endswith("_c0_debug.fsm") for name in names):
|
|
443
|
+
clocking = 0
|
|
444
|
+
name = next((name for name in names if name.endswith(f"_c{clocking}_debug.fsm")), names[0])
|
|
445
|
+
script.emit("SAVEAS", name)
|
|
446
|
+
|
|
447
|
+
|
|
432
448
|
def _export_each_kind(
|
|
433
449
|
script: Script,
|
|
434
450
|
case: SimCase,
|
|
@@ -457,6 +473,8 @@ def _export_each_kind(
|
|
|
457
473
|
if kind == "log" and skip_log:
|
|
458
474
|
continue
|
|
459
475
|
claimed.append(names.index(kinds[kind]) + 1)
|
|
476
|
+
if kind == "debug_fsm":
|
|
477
|
+
continue # Already saved before output setup, or at the window start.
|
|
460
478
|
if kind == "probes":
|
|
461
479
|
# THE PROBES HOME'S EXPORT (PFS-2140.001): the public emitter is what
|
|
462
480
|
# the workspace runs. UPDATE_PROBE_POINTS was emitted with the other
|