**BREAKING CHANGES**
This version introduces a new project structure and a new way to handle the algorithms.
A script is available here https://gist.github.com/dfm88/2bd2a08bb8b5837103dd074033bd7710
to help running the migration to new version.
Added
- `pyvista` optional dependency for 3D plots
- file `src/pyoma2/support/mpl_plotter.py` to handle matplotlib plots
- file `src/pyoma2/support/pyvista_plotter.py` to handle pyvista plots
- file `src/pyoma2/test_data/3SL/Geo1.xlsx`
- file `src/pyoma2/test_data/3SL/Geo2.xlsx`
- file `src/pyoma2/test_data/5dof/Geo1.xlsx`
- file `src/pyoma2/test_data/5dof/Geo2.xlsx`
- file `src/pyoma2/test_data/Geometry/htc_geo2.xlsx`
- file `src/pyoma2/test_data/Template_Geometry2.xlsx`
- file `src/pyoma2/test_data/palisaden/Geo1.xlsx`
- file `src/pyoma2/test_data/palisaden/Geo2.xlsx`
- platform specific installation in github workflow and requirements extraction in pre-commit
Changed
- tests to support new project structure
- `OMA.py` removed `inplace` method from `SingleSetup` and `MultiSetup_PreGER` classes, add a copy of data on init with the possibility to `rollback` them
- moved `plot_mode_g1` and `plot_mode_g2` and `anim_mode_g2` methods from `SingleSetup` to `BaseSetup` class
- function `pyoma2/functions/fdd.py::SDOF_bellandMS` now have custom logic for algorithm methods `FSDD` and `EFDD`
- function `pyoma2/functions/plscf.py::pLSCF_poles` now return an additional element in the tuple
- function `pyoma2/functions/plscf.py::ac2mp_poly` now return an additional element in the tuple
- moved all geometry related methods to the `pyoma2/support/geometry/mixin.py` file where the following method are available `def_geo1`, `def_geo2`, `_def_geo_by_file`, `def_geo1_by_file`, `def_geo2_by_file`, `plot_geo1`, `plot_geo2`, `plot_geo2_mpl`, `plot_mode_geo1`, `plot_mode_geo2`, `plot_mode_geo2_mpl`, `anim_mode_geo2` and available to `BaseSetup` class and `MultiSetup_PoSER` class. The proxy to these method were removed from `BaseAlgorithm` class and moved to the mixin class `GeometryMixin` and so proxied by the `Setup` classes that implement the geometry mixin.
- Library re-organization:
- file `pyoma2/OMA.py` split in `pyoma2/setup` package in the following files:
- `base.py`: here we moved the following classes `BaseSetup`
- `single.py`: here we moved the following classes `SingleSetup`
- `multi.py`: here we moved the following classes `MultiSetup_PreGER`, `MultiSetup_PoSER`
- file `pyoma2/support/utils/logging_handler.py` moved to `pyoma2/support/utils/logging_handler.py`
- file `pyoma2/utils/typing.py` moved to `pyoma2/support/utils/typing.py`
- package `pyoma2/algorithm` renamed to `pyoma2/algorithms`
- file `pyoma2/algorithm/data/geometry.py` moved to `pyoma2/support/geometry.py`
- file `pyoma2/plot/Sel_from_plot.py` moved to `pyoma2/support/Sel_from_plot.py`
- variable `pyoma2/algorithms/data/result.py::SSIResult.xi_poles` renamed to `pyoma2/algorithms/data/result.py::SSIResult.Xi_poles`
- variable `pyoma2/algorithms/data/result.py::xi_poles.xi_poles` renamed to `pyoma2/algorithms/data/result.py::xi_poles.Xi_poles`
- variable `pyoma2/algorithms/data/run_params.py::EFDDRunParams.method` renamed to `pyoma2/algorithms/data/run_params.py::EFDDRunParams.method_hank`
- class `pyoma2/algorithms/fdd.py::FDD_algo` renamed to `pyoma2/algorithms/fdd.py::FDD`
- class `pyoma2/algorithms/fdd.py::EFDD_algo` renamed to `pyoma2/algorithms/fdd.py::EFDD`
- class `pyoma2/algorithms/fdd.py::FSDD_algo` renamed to `pyoma2/algorithms/fdd.py::FSDD`
- class `pyoma2/algorithms/fdd.py::FDD_algo_MS` renamed to `pyoma2/algorithms/fdd.py::FDD_MS`
- class `pyoma2/algorithms/fdd.py::EFDD_algo_MS` renamed to `pyoma2/algorithms/fdd.py::EFDD_MS`
- method `pyoma2/algorithms/fdd.py::EFDD.plot_FIT` renamed to `pyoma2/algorithms/fdd.py::EFDD.plot_EFDDfit`
- function `pyoma2/functions/fdd.py::SD_Est` renamed to `pyoma2/functions/fdd.py::SD_est`
- function `pyoma2/functions/plscf.py::pLSCF_Poles` renamed to `pyoma2/functions/plscf.py::pLSCF_poles`
- function `pyoma2/functions/plscf.py::rmfd2AC` renamed to `pyoma2/functions/plscf.py::rmfd2ac`
- function `pyoma2/functions/plscf.py::AC2MP_poly` renamed to `pyoma2/functions/plscf.py::ac2mp_poly`
- function `pyoma2/functions/plscf.py::pLSCF_MPE` renamed to `pyoma2/functions/plscf.py::pLSCF_mpe`
- function `pyoma2/functions/ssi.py::BuildHank` renamed to `pyoma2/functions/ssi.py::build_hank`
- function `pyoma2/functions/ssi.py::AC2MP` renamed to `pyoma2/functions/ssi.py::ac2mp`
- function `pyoma2/functions/ssi.py::SSI_FAST` renamed to `pyoma2/functions/ssi.py::SSI_fast`
- function `pyoma2/functions/ssi.py::SSI_POLES` renamed to `pyoma2/functions/ssi.py::SSI_poles`
- function `pyoma2/functions/ssi.py::SSI_MulSet` renamed to `pyoma2/functions/ssi.py::SSI_multi_setup`
- function `pyoma2/functions/ssi.py::SSI_MPE` renamed to `pyoma2/functions/ssi.py::SSI_mpe`
- file `pyoma2/functions/FDD_funct.py` renamed to `pyoma2/functions/fdd.py`
- file `pyoma2/functions/plot_funct.py` renamed to `pyoma2/functions/plot.py`
- file `pyoma2/functions/Gen_funct.py` renamed to `pyoma2/functions/gen.py`
- file `pyoma2/functions/SSI_funct.py` renamed to `pyoma2/functions/ssi.py`
- method `pyoma2/algorithms/base.py::BaseAlgorithm.MPE` renamed to `pyoma2/algorithms/base.py::BaseAlgorithm.mpe`
- method `pyoma2/algorithms/base.py::BaseAlgorithm.mpe_fromPlot` renamed to `pyoma2/algorithms/base.py::BaseAlgorithm.mpe_from_plot`
Fixed
- python 3.12 support ([akaszynsk](https://github.com/akaszynski))
Removed
- file `src/pyoma2/plot/anim_mode.py` now handled by pyvista
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/BG_lines.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/BG_nodes.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/geom.xlsx`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/pts_coord.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_coord.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_dir.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_lines.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_map.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/3SL/sens_sign.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/BG_lines.txt'`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/BG_nodes.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/geom_pali.xlsx`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/pts_coord.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_dir.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_lines.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_map.txt`
- file `https://github.com/dagghe/pyOMA-test-data/tree/main/test_data/palisaden/sens_sign.txt`
- function `pyoma2/functions/ssi.py::Lab_stab_SSI`
- function `pyoma2/functions/gen.py::lab_stab`
- support in testing for `python3.8` and `macos` due to `vtk` dependency that is not compatible with platform using during tests action
- File for example are now retrieved from the online repo https://github.com/dagghe/pyOMA-test-data/tree/main/test_data and removed from the repo