PyOpenMagnetics 1.7.7__tar.gz → 1.7.8__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.
Files changed (91) hide show
  1. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/PKG-INFO +1 -1
  2. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/pyproject.toml +1 -1
  3. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/core.cpp +36 -0
  4. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/core.h +1 -0
  5. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/.github/workflows/ci.yml +0 -0
  6. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/.github/workflows/publish.yml +0 -0
  7. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/.gitignore +0 -0
  8. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/AGENTS.md +0 -0
  9. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/CMakeLists.txt +0 -0
  10. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/LICENSE +0 -0
  11. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/PyOpenMagnetics.pyi +0 -0
  12. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/README.md +0 -0
  13. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/_packaging/__init__.py +0 -0
  14. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/_packaging/_build_info.py.in +0 -0
  15. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/api/MAS.py +0 -0
  16. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/api/mas_db_reader.py +0 -0
  17. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/api/validation.py +0 -0
  18. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/clear_cibuildwheel_cache.sh +0 -0
  19. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/docs/compatibility.md +0 -0
  20. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/docs/errors.md +0 -0
  21. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/docs/performance.md +0 -0
  22. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/README.md +0 -0
  23. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/buck_inductor.py +0 -0
  24. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/complete_simulation_example.py +0 -0
  25. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/converter_design_example.py +0 -0
  26. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/debug_bobbin.py +0 -0
  27. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/debug_coil.py +0 -0
  28. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/debug_core.py +0 -0
  29. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/debug_plotting.py +0 -0
  30. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_220v_12v_1a.py +0 -0
  31. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_220v_12v_2a_complete.py +0 -0
  32. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_bh_curve.png +0 -0
  33. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_core.png +0 -0
  34. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_design.py +0 -0
  35. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_summary.png +0 -0
  36. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/flyback_waveforms.png +0 -0
  37. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/list_plot_funcs.py +0 -0
  38. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/plot_flyback_design.py +0 -0
  39. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/plot_flyback_pyom.py +0 -0
  40. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/test_field_calc.py +0 -0
  41. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/examples/test_field_plot.py +0 -0
  42. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/force_fresh_build.sh +0 -0
  43. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/llms.txt +0 -0
  44. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/notebooks/01_getting_started.ipynb +0 -0
  45. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/notebooks/02_buck_inductor.ipynb +0 -0
  46. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/notebooks/03_core_losses.ipynb +0 -0
  47. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/notebooks/README.md +0 -0
  48. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/requirements.txt +0 -0
  49. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/advisers.cpp +0 -0
  50. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/advisers.h +0 -0
  51. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/bobbin.cpp +0 -0
  52. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/bobbin.h +0 -0
  53. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/cmc.cpp +0 -0
  54. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/cmc.h +0 -0
  55. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/common.h +0 -0
  56. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/converter.cpp +0 -0
  57. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/converter.h +0 -0
  58. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/crossref.cpp +0 -0
  59. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/crossref.h +0 -0
  60. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/database.cpp +0 -0
  61. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/database.h +0 -0
  62. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/logging.cpp +0 -0
  63. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/logging.h +0 -0
  64. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/losses.cpp +0 -0
  65. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/losses.h +0 -0
  66. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/module.cpp +0 -0
  67. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/plotting.cpp +0 -0
  68. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/plotting.h +0 -0
  69. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/settings.cpp +0 -0
  70. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/settings.h +0 -0
  71. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/simulation.cpp +0 -0
  72. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/simulation.h +0 -0
  73. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/utils.cpp +0 -0
  74. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/utils.h +0 -0
  75. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/winding.cpp +0 -0
  76. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/winding.h +0 -0
  77. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/wire.cpp +0 -0
  78. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/src/wire.h +0 -0
  79. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/test.py +0 -0
  80. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/__init__.py +0 -0
  81. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/conftest.py +0 -0
  82. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_converter_endpoints.py +0 -0
  83. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_core.py +0 -0
  84. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_core_adviser.py +0 -0
  85. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_examples_integration.py +0 -0
  86. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_inputs.py +0 -0
  87. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_logging.py +0 -0
  88. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_magnetic_adviser.py +0 -0
  89. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_magnetics_catalogue_load.py +0 -0
  90. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_plotting.py +0 -0
  91. {pyopenmagnetics-1.7.7 → pyopenmagnetics-1.7.8}/tests/test_winding.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyOpenMagnetics
3
- Version: 1.7.7
3
+ Version: 1.7.8
4
4
  Summary: Python wrapper for OpenMagnetics
5
5
  Author-Email: Alfonso Martinez <Alfonso_VII@hotmail.com>
6
6
  Classifier: Development Status :: 4 - Beta
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "PyOpenMagnetics"
7
- version = "1.7.7"
7
+ version = "1.7.8"
8
8
  requires-python = ">=3.8"
9
9
  authors = [
10
10
  { name="Alfonso Martinez", email="Alfonso_VII@hotmail.com" },
@@ -1,4 +1,5 @@
1
1
  #include "core.h"
2
+ #include "constructive_models/CorePiece.h"
2
3
  #include "physical_models/ComplexPermeability.h"
3
4
  #include <filesystem>
4
5
 
@@ -123,6 +124,22 @@ json calculate_core_geometrical_description(json coreDataJson) {
123
124
  return result;
124
125
  }
125
126
 
127
+ // ABT #1002: the IEC shape constants of a moulded body split per region (post, cover, base),
128
+ // so a material fit can attribute each region's reluctance to the powder pressed there.
129
+ json calculate_core_region_shape_constants(json coreDataJson) {
130
+ OpenMagnetics::Core core(coreDataJson, false, false, false);
131
+ auto corePiece = OpenMagnetics::CorePiece::factory(core.resolve_shape());
132
+ auto regions = corePiece->get_region_shape_constants();
133
+ if (!regions) {
134
+ throw std::invalid_argument("this shape family does not expose per-region shape constants");
135
+ }
136
+ json result = json::array();
137
+ for (auto& region : *regions) {
138
+ result.push_back({{"name", region.name}, {"c1", region.c1}, {"c2", region.c2}, {"minimumArea", region.minimumArea}});
139
+ }
140
+ return result;
141
+ }
142
+
126
143
  json calculate_core_gapping(json coreDataJson) {
127
144
  OpenMagnetics::Core core(coreDataJson, false, false, false);
128
145
  core.process_gap_or_throw();
@@ -775,6 +792,25 @@ void register_core_bindings(py::module& m) {
775
792
  py::arg("core_data_json"),
776
793
  py::call_guard<py::gil_scoped_release>());
777
794
 
795
+ m.def("calculate_core_region_shape_constants", &calculate_core_region_shape_constants,
796
+ R"pbdoc(
797
+ Per-region IEC shape constants of a moulded body (ABT #1002).
798
+
799
+ A compression-moulded body can be pressed from up to three powders: the post the coil
800
+ sits on, the cover over the coil and the base plate under it. This returns the IEC 60205
801
+ section sums of each region, in the order functionalDescription.material lists the grades
802
+ ([post, cover, base]), so a material fit can attribute each region's reluctance to the
803
+ powder pressed there: R_region = c1 / (mu0 * mu_region), Ae_region = c1 / c2.
804
+
805
+ Args:
806
+ core_data_json: JSON object with functionalDescription (shape family 'molded').
807
+
808
+ Returns:
809
+ JSON array of {name, c1, c2, minimumArea}. Raises for families without regions.
810
+ )pbdoc",
811
+ py::arg("core_data_json"),
812
+ py::call_guard<py::gil_scoped_release>());
813
+
778
814
  m.def("calculate_core_geometrical_description", &calculate_core_geometrical_description,
779
815
  R"pbdoc(
780
816
  Calculate geometrical description for core visualization.
@@ -32,6 +32,7 @@ json get_available_cores();
32
32
  json calculate_core_data(json coreDataJson, bool includeMaterialData);
33
33
  json calculate_core_processed_description(json coreDataJson);
34
34
  json calculate_core_geometrical_description(json coreDataJson);
35
+ json calculate_core_region_shape_constants(json coreDataJson);
35
36
  json calculate_core_gapping(json coreDataJson);
36
37
  json load_core_data(json coresJson);
37
38
  json get_core_temperature_dependant_parameters(json coreData, double temperature);
File without changes
File without changes