openavl 1.0.0__py3-none-any.whl

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.
Files changed (87) hide show
  1. openavl/__init__.py +41 -0
  2. openavl/aero/__init__.py +23 -0
  3. openavl/aero/aic.py +792 -0
  4. openavl/aero/ba_trans.py +117 -0
  5. openavl/aero/cdcl.py +117 -0
  6. openavl/aero/cpoml.py +347 -0
  7. openavl/aero/forces.py +1365 -0
  8. openavl/aero/trefftz.py +426 -0
  9. openavl/aero/vortex.py +290 -0
  10. openavl/analysis/__init__.py +47 -0
  11. openavl/analysis/amode.py +661 -0
  12. openavl/analysis/deriv.py +308 -0
  13. openavl/analysis/trim.py +168 -0
  14. openavl/constants.py +118 -0
  15. openavl/core/__init__.py +21 -0
  16. openavl/core/exec.py +395 -0
  17. openavl/core/reporting.py +47 -0
  18. openavl/core/setup.py +385 -0
  19. openavl/core/solver/__init__.py +5 -0
  20. openavl/core/solver/analysis.py +286 -0
  21. openavl/core/solver/api.py +489 -0
  22. openavl/core/solver/initialization.py +73 -0
  23. openavl/core/solver/results.py +186 -0
  24. openavl/core/solver/settings.py +320 -0
  25. openavl/core/solver/visualization.py +153 -0
  26. openavl/core/state.py +730 -0
  27. openavl/fileio/__init__.py +29 -0
  28. openavl/fileio/cad_export.py +307 -0
  29. openavl/fileio/mass.py +362 -0
  30. openavl/fileio/parser.py +784 -0
  31. openavl/geom/__init__.py +21 -0
  32. openavl/geom/airfoil.py +285 -0
  33. openavl/geom/display.py +141 -0
  34. openavl/geom/geometry.py +892 -0
  35. openavl/geom/spacing.py +188 -0
  36. openavl/geom/spline.py +153 -0
  37. openavl/geometry/__init__.py +34 -0
  38. openavl/geometry/_convert.py +175 -0
  39. openavl/geometry/aircraft.py +243 -0
  40. openavl/geometry/airfoil.py +30 -0
  41. openavl/geometry/body.py +32 -0
  42. openavl/geometry/cdcl_polar.py +113 -0
  43. openavl/geometry/control.py +25 -0
  44. openavl/geometry/section.py +159 -0
  45. openavl/geometry/wing.py +178 -0
  46. openavl/jax/__init__.py +95 -0
  47. openavl/jax/aic.py +562 -0
  48. openavl/jax/analysis.py +209 -0
  49. openavl/jax/backend.py +20 -0
  50. openavl/jax/body.py +73 -0
  51. openavl/jax/cdcl.py +72 -0
  52. openavl/jax/forces.py +823 -0
  53. openavl/jax/freestream.py +41 -0
  54. openavl/jax/geom_jax.py +1032 -0
  55. openavl/jax/openmdao.py +162 -0
  56. openavl/jax/openmdao_group.py +398 -0
  57. openavl/jax/setup.py +139 -0
  58. openavl/jax/snapshot.py +272 -0
  59. openavl/jax/solve.py +87 -0
  60. openavl/jax/solver.py +82 -0
  61. openavl/jax/trefftz.py +333 -0
  62. openavl/jax/types.py +391 -0
  63. openavl/jax/vortex.py +119 -0
  64. openavl/math/__init__.py +13 -0
  65. openavl/math/linalg.py +37 -0
  66. openavl/math/util.py +191 -0
  67. openavl/plotting/__init__.py +13 -0
  68. openavl/plotting/aircraft3d.py +399 -0
  69. openavl/plotting/cp_plot.py +315 -0
  70. openavl/plotting/lift_distribution.py +211 -0
  71. openavl/web/__init__.py +5 -0
  72. openavl/web/__main__.py +27 -0
  73. openavl/web/app.py +352 -0
  74. openavl/web/geometry_export.py +183 -0
  75. openavl/web/session.py +1177 -0
  76. openavl/web/static/favicon.ico +0 -0
  77. openavl/web/static/favicon.svg +11 -0
  78. openavl/web/static/help.js +60 -0
  79. openavl/web/static/index.html +1576 -0
  80. openavl/web/static/main.js +1630 -0
  81. openavl/web/static/plots.js +336 -0
  82. openavl/web/static/viewer3d.js +1142 -0
  83. openavl-1.0.0.dist-info/METADATA +412 -0
  84. openavl-1.0.0.dist-info/RECORD +87 -0
  85. openavl-1.0.0.dist-info/WHEEL +5 -0
  86. openavl-1.0.0.dist-info/licenses/LICENSE +337 -0
  87. openavl-1.0.0.dist-info/top_level.txt +1 -0
openavl/__init__.py ADDED
@@ -0,0 +1,41 @@
1
+ """OpenAVL: a Python port of the AVL vortex lattice code."""
2
+
3
+ from openavl.core.solver import AVLSolver
4
+ from openavl.core.state import AVLState
5
+ from openavl.fileio.parser import AVLHeader, AVLModel, parse_avl, parse_avl_file
6
+ from openavl.geometry import Aircraft
7
+
8
+ __all__ = [
9
+ "AVLSolver",
10
+ "Aircraft",
11
+ "AVLModel",
12
+ "AVLHeader",
13
+ "AVLState",
14
+ "StabilityDerivatives",
15
+ "EigenAnalysisResult",
16
+ "FlightMode",
17
+ "parse_avl",
18
+ "parse_avl_file",
19
+ ]
20
+ # JaxAVLSolver stays out of __all__: it needs the optional JAX extra, and
21
+ # ``from openavl import *`` must work without it. ``openavl.JaxAVLSolver`` still works.
22
+
23
+ def __getattr__(name: str):
24
+ """Lazily import optional exports so core solver imports stay lightweight."""
25
+ if name in {"EigenAnalysisResult", "FlightMode"}:
26
+ from openavl.analysis.amode import EigenAnalysisResult, FlightMode
27
+
28
+ return {"EigenAnalysisResult": EigenAnalysisResult, "FlightMode": FlightMode}[name]
29
+ if name == "StabilityDerivatives":
30
+ from openavl.analysis.deriv import StabilityDerivatives
31
+
32
+ return StabilityDerivatives
33
+ if name == "JaxAVLSolver":
34
+ from openavl.jax.solver import JaxAVLSolver
35
+
36
+ return JaxAVLSolver
37
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
38
+
39
+
40
+ def __dir__():
41
+ return sorted(__all__)
@@ -0,0 +1,23 @@
1
+ """Aerodynamic force integration and vortex lattice kernels."""
2
+
3
+ from openavl.aero.aic import cross, dot, srdset, srdvelc, vorvelc, vsrd, vvor
4
+ from openavl.aero.ba_trans import ba2sa_mat, ba2wa_mat
5
+ from openavl.aero.cdcl import cdcl
6
+ from openavl.aero.forces import aero, vinfab
7
+ from openavl.aero.trefftz import tpforc
8
+
9
+ __all__ = [
10
+ "aero",
11
+ "ba2sa_mat",
12
+ "ba2wa_mat",
13
+ "cdcl",
14
+ "cross",
15
+ "dot",
16
+ "srdset",
17
+ "srdvelc",
18
+ "tpforc",
19
+ "vinfab",
20
+ "vorvelc",
21
+ "vsrd",
22
+ "vvor",
23
+ ]