radia 1.1.1__tar.gz → 1.2.0__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.
- {radia-1.1.1/src/radia.egg-info → radia-1.2.0}/PKG-INFO +1 -1
- radia-1.2.0/docs/README.md +63 -0
- radia-1.2.0/examples/simple_problems/README.md +134 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_hmatrix_field.py +2 -1
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_linear_material.py +2 -1
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_matrix_construction.py +2 -1
- radia-1.2.0/examples/solver_benchmarks/benchmark_solver_methods.py +264 -0
- {radia-1.1.1 → radia-1.2.0}/pyproject.toml +1 -1
- radia-1.2.0/src/python/rad_ngsolve.pyd +0 -0
- {radia-1.1.1 → radia-1.2.0/src/radia.egg-info}/PKG-INFO +1 -1
- {radia-1.1.1 → radia-1.2.0}/src/radia.egg-info/SOURCES.txt +24 -13
- radia-1.2.0/tests/test_magpylib_comparison.py +255 -0
- radia-1.2.0/tests/test_update_hmatrix_magnetization.py +86 -0
- radia-1.1.1/docs/DIRECTORY_STRUCTURE.md +0 -86
- radia-1.1.1/docs/EXAMPLES_REVIEW.md +0 -423
- radia-1.1.1/docs/HMATRIX_MATVEC_OPTIMIZATION.md +0 -214
- radia-1.1.1/docs/HMATRIX_PERFORMANCE_IMPROVEMENT.md +0 -261
- radia-1.1.1/docs/NGSOLVE_DLL_ISSUE.md +0 -162
- radia-1.1.1/docs/NGSOLVE_PYTHON_SOLUTION.md +0 -303
- radia-1.1.1/docs/OPENMP_PERFORMANCE_REPORT.md +0 -186
- radia-1.1.1/docs/PHASE3_PERFORMANCE_ISSUE.md +0 -225
- radia-1.1.1/docs/PYPI_RELEASE_v1.0.10.md +0 -177
- radia-1.1.1/docs/RELEASE_NOTES_v1.0.10.md +0 -260
- radia-1.1.1/docs/TAB_CONVERSION_REPORT.md +0 -110
- radia-1.1.1/examples/NGSolve_Integration/debug_field_values.py +0 -94
- radia-1.1.1/examples/simple_problems/README.md +0 -130
- radia-1.1.1/examples/solver_benchmarks/benchmark_solver.py +0 -248
- radia-1.1.1/src/python/rad_ngsolve.pyd +0 -0
- {radia-1.1.1 → radia-1.2.0}/COPYRIGHT.txt +0 -0
- {radia-1.1.1 → radia-1.2.0}/LICENSE +0 -0
- {radia-1.1.1 → radia-1.2.0}/MANIFEST.in +0 -0
- {radia-1.1.1 → radia-1.2.0}/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/README_BUILD.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/API_EXTENSIONS.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/API_REFERENCE.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/CF_BACKGROUND_FIELD_IMPLEMENTATION.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/HMATRIX_BENCHMARKS_RESULTS.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/HMATRIX_ENHANCEMENT_PROPOSAL_2025.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/HMATRIX_IMPLEMENTATION_HISTORY.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/HMATRIX_SERIALIZATION.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/HMATRIX_USER_GUIDE.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/MATERIAL_API_IMPLEMENTATION.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/ML_PARAMETER_TUNING.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/NGSOLVE_CF_BACKGROUND_FIELD_DESIGN.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/NGSOLVE_INTEGRATION.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/NGSOLVE_USAGE_GUIDE.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/hmatrix_field_design.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/docs/scripts/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/HMATRIX_ANALYSIS.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/HMATRIX_FIELD_EVALUATION_ISSUE.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/H_MATRIX_PARALLEL_OPTIMIZATION.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/NGBEM_ANALYSIS.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/NGSOLVE_SET_VS_INTERPOLATE.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/PROPOSAL_VECTORIZED_API.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/SET_VS_INTERPOLATE_SIMPLE.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/SOLVER_OPTIMIZATION_PROPOSAL.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/benchmark_gridfunction_set.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/demo_field_types.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/export_radia_geometry.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/radia_field.pvsm +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/test_batch_evaluation.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/test_batch_fld.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/test_coordinate_transform.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/test_mesh_convergence.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/test_set_vs_interpolate.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/verify_curl_A_equals_B.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/NGSolve_Integration/visualize_field.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/Cubit2Nastran.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/permeability_comparison.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/quadrupole_analytical.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/sphere_in_quadrupole.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/sphere_nastran_analysis.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/sphere_nastran_field_mu.pvsm +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/background_fields/sphere_nastran_geometry.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/coil_geometry.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/coil_model.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/complex_coil.pvsm +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/field_map.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/field_map.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/complex_coil_geometry/visualize_coils.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/electromagnet.pvsm +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/electromagnet.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/field_distribution.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/magnet.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/racetrack_coil_model.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/electromagnet/yoke_model.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/CONVERSION_NOTES.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/arc_current_dual_magnets.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/arc_current_with_magnet.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/chamfered_pole_piece.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/compare_magpylib.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/cubic_polyhedron_magnet.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/simple_problems/hmatrix_update_magnetization.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/smco_magnet_array/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/smco_magnet_array/smbo.pvsm +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/smco_magnet_array/smco_array.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/smco_magnet_array/smco_array.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/smco_magnet_array/smco_field_distribution.vtk +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/BENCHMARK_RESULTS.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/HMATRIX_FIELD_DESIGN.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/HMATRIX_FIELD_DESIGN_SIMPLIFIED.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/PHASE2B_REEVALUATION.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/SCALING_RESULTS.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_field_evaluation.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_hmatrix_scaling_exact.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_large_scale_comparison.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_parallel_construction.py +0 -0
- {radia-1.1.1/examples/H-matrix → radia-1.2.0/examples/solver_benchmarks}/benchmark_solver.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_solver_comparison.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_solver_scaling.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/benchmark_solver_scaling_extended.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/plot_benchmark_results.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/run_all_benchmarks.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/run_all_hmatrix_benchmarks.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/examples/solver_benchmarks/verify_field_accuracy.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/setup.cfg +0 -0
- {radia-1.1.1 → radia-1.2.0}/setup.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/__init__.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/nastran_reader.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/radia.pyd +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/radia_coil_builder.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/radia_ngsolve_field.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/radia_pyvista_viewer.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/python/radia_vtk_export.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/radia.egg-info/dependency_links.txt +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/radia.egg-info/not-zip-safe +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/radia.egg-info/requires.txt +0 -0
- {radia-1.1.1 → radia-1.2.0}/src/radia.egg-info/top_level.txt +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/README.md +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/__init__.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/benchmark_hmatrix.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/benchmarks/benchmark_correct.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/benchmarks/benchmark_heavy.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/benchmarks/benchmark_openmp.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/benchmarks/benchmark_threads.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/conftest.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase2a_final.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase2a_hmatrix_reuse.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase2a_with_field.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase2b_geometry_detection.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase3_magnetization_update.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase3b_large_problem.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase3b_serialization.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_phase3b_solver_cache.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_serialize_step1_build.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_serialize_step2_load.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/hmatrix/test_verify_field_simple.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_advanced.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_group_operations.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_materials.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_new_material_api.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_objbckg_simple.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_objbckgcf_alone.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_parallel_performance.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_rad_ngsolve.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_radhmat.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_radia.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_serialization.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_simple.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_square_coil_analytical.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_transformations.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_type_cast.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_utils.py +0 -0
- {radia-1.1.1 → radia-1.2.0}/tests/test_vector_potential.py +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Radia Documentation
|
|
2
|
+
|
|
3
|
+
This folder contains the official documentation for Radia.
|
|
4
|
+
|
|
5
|
+
## Documentation Organization
|
|
6
|
+
|
|
7
|
+
### User Documentation (Essential Reading)
|
|
8
|
+
|
|
9
|
+
#### API Documentation
|
|
10
|
+
- [API_REFERENCE.md](API_REFERENCE.md) - Complete Python API reference
|
|
11
|
+
- [API_EXTENSIONS.md](API_EXTENSIONS.md) - Extended features and new APIs
|
|
12
|
+
|
|
13
|
+
#### H-Matrix Acceleration
|
|
14
|
+
- [HMATRIX_USER_GUIDE.md](HMATRIX_USER_GUIDE.md) - User guide for H-matrix acceleration
|
|
15
|
+
- [HMATRIX_BENCHMARKS_RESULTS.md](HMATRIX_BENCHMARKS_RESULTS.md) - Performance benchmarks
|
|
16
|
+
- [HMATRIX_SERIALIZATION.md](HMATRIX_SERIALIZATION.md) - Disk cache feature
|
|
17
|
+
|
|
18
|
+
#### NGSolve Integration
|
|
19
|
+
- [NGSOLVE_USAGE_GUIDE.md](NGSOLVE_USAGE_GUIDE.md) - How to use Radia with NGSolve
|
|
20
|
+
- [NGSOLVE_INTEGRATION.md](NGSOLVE_INTEGRATION.md) - Integration overview
|
|
21
|
+
|
|
22
|
+
### Developer Documentation (Implementation Details)
|
|
23
|
+
|
|
24
|
+
#### H-Matrix Implementation
|
|
25
|
+
- [HMATRIX_IMPLEMENTATION_HISTORY.md](HMATRIX_IMPLEMENTATION_HISTORY.md) - Development history
|
|
26
|
+
- [HMATRIX_ENHANCEMENT_PROPOSAL_2025.md](HMATRIX_ENHANCEMENT_PROPOSAL_2025.md) - Future enhancements
|
|
27
|
+
- [hmatrix_field_design.md](hmatrix_field_design.md) - Field evaluation design
|
|
28
|
+
- [ML_PARAMETER_TUNING.md](ML_PARAMETER_TUNING.md) - Machine learning parameter optimization
|
|
29
|
+
|
|
30
|
+
#### Material and Field APIs
|
|
31
|
+
- [MATERIAL_API_IMPLEMENTATION.md](MATERIAL_API_IMPLEMENTATION.md) - Material property implementation
|
|
32
|
+
- [CF_BACKGROUND_FIELD_IMPLEMENTATION.md](CF_BACKGROUND_FIELD_IMPLEMENTATION.md) - Background field implementation
|
|
33
|
+
- [NGSOLVE_CF_BACKGROUND_FIELD_DESIGN.md](NGSOLVE_CF_BACKGROUND_FIELD_DESIGN.md) - NGSolve CoefficientFunction design
|
|
34
|
+
|
|
35
|
+
## Additional Resources
|
|
36
|
+
|
|
37
|
+
### Development Notes
|
|
38
|
+
Implementation notes, performance analysis, and troubleshooting are in [../dev/notes/](../dev/notes/):
|
|
39
|
+
- Implementation details (directory structure, conversion reports)
|
|
40
|
+
- Performance analysis (OpenMP, H-matrix optimizations)
|
|
41
|
+
- Issue resolutions (DLL issues, integration problems)
|
|
42
|
+
|
|
43
|
+
### Release History
|
|
44
|
+
Release notes and version history are in [../dev/notes/releases/](../dev/notes/releases/).
|
|
45
|
+
|
|
46
|
+
### Examples
|
|
47
|
+
Working code examples are in [../examples/](../examples/):
|
|
48
|
+
- [simple_problems/](../examples/simple_problems/) - Basic examples
|
|
49
|
+
- [solver_benchmarks/](../examples/solver_benchmarks/) - Performance benchmarks
|
|
50
|
+
- [ngsolve_integration/](../examples/ngsolve_integration/) - NGSolve integration examples
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
53
|
+
|
|
54
|
+
1. **New users**: Start with [API_REFERENCE.md](API_REFERENCE.md) and [examples/simple_problems/](../examples/simple_problems/)
|
|
55
|
+
2. **Performance optimization**: Read [HMATRIX_USER_GUIDE.md](HMATRIX_USER_GUIDE.md)
|
|
56
|
+
3. **NGSolve users**: Read [NGSOLVE_USAGE_GUIDE.md](NGSOLVE_USAGE_GUIDE.md)
|
|
57
|
+
4. **Contributors**: Review [HMATRIX_IMPLEMENTATION_HISTORY.md](HMATRIX_IMPLEMENTATION_HISTORY.md)
|
|
58
|
+
|
|
59
|
+
## See Also
|
|
60
|
+
|
|
61
|
+
- [Main README](../README.md) - Project overview and installation
|
|
62
|
+
- [Build Instructions](../README_BUILD.md) - How to build from source
|
|
63
|
+
- [CHANGELOG](../CHANGELOG.md) - Version history
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Radia Simple Examples
|
|
2
|
+
|
|
3
|
+
This folder contains basic Radia examples demonstrating fundamental features.
|
|
4
|
+
|
|
5
|
+
## Example Files
|
|
6
|
+
|
|
7
|
+
- [arc_current_with_magnet.py](arc_current_with_magnet.py) - Arc current with rectangular magnet
|
|
8
|
+
- [arc_current_dual_magnets.py](arc_current_dual_magnets.py) - Arc current with two magnets
|
|
9
|
+
- [chamfered_pole_piece.py](chamfered_pole_piece.py) - Multiple extrusion with chamfer
|
|
10
|
+
- [cubic_polyhedron_magnet.py](cubic_polyhedron_magnet.py) - Polyhedron (cube) magnet
|
|
11
|
+
- [compare_magpylib.py](compare_magpylib.py) - Comparison with magpylib library
|
|
12
|
+
- [hmatrix_update_magnetization.py](hmatrix_update_magnetization.py) - H-matrix magnetization update
|
|
13
|
+
|
|
14
|
+
## How to Run
|
|
15
|
+
|
|
16
|
+
Each Python file can be run independently:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
cd examples/simple_problems
|
|
20
|
+
python arc_current_with_magnet.py
|
|
21
|
+
python arc_current_dual_magnets.py
|
|
22
|
+
python chamfered_pole_piece.py
|
|
23
|
+
python cubic_polyhedron_magnet.py
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Example Descriptions
|
|
27
|
+
|
|
28
|
+
### arc_current_with_magnet.py
|
|
29
|
+
- Creates arc current element and rectangular magnet
|
|
30
|
+
- Applies linear material properties
|
|
31
|
+
- Calculates magnetic field at origin
|
|
32
|
+
|
|
33
|
+
**Key Functions:**
|
|
34
|
+
- `rad.ObjArcCur()` - Create arc current element
|
|
35
|
+
- `rad.ObjRecMag()` - Create rectangular magnet
|
|
36
|
+
- `rad.MatLin([ksi_par, ksi_perp], [mx,my,mz])` - Define anisotropic linear material
|
|
37
|
+
- `rad.MatApl(obj, mat)` - Apply material to object
|
|
38
|
+
- `rad.Fld(obj, 'b', [x,y,z])` - Calculate magnetic field
|
|
39
|
+
|
|
40
|
+
### arc_current_dual_magnets.py
|
|
41
|
+
- Arc current with two magnets at different positions
|
|
42
|
+
- Manages multiple objects with container
|
|
43
|
+
- Applies linear material properties
|
|
44
|
+
|
|
45
|
+
**Key Functions:**
|
|
46
|
+
- `rad.ObjCnt([obj1, obj2, ...])` - Create object container
|
|
47
|
+
|
|
48
|
+
### chamfered_pole_piece.py
|
|
49
|
+
- Complex extrusion shape with chamfer
|
|
50
|
+
- Defines multiple cross-sections and extrudes
|
|
51
|
+
- Element subdivision
|
|
52
|
+
|
|
53
|
+
**Key Functions:**
|
|
54
|
+
- `rad.ObjMltExtRtg()` - Create multiple extrusion rectangle
|
|
55
|
+
- `rad.ObjDivMag()` - Subdivide magnet
|
|
56
|
+
|
|
57
|
+
### cubic_polyhedron_magnet.py
|
|
58
|
+
- Creates polyhedron from vertices and faces
|
|
59
|
+
- Cube example
|
|
60
|
+
|
|
61
|
+
**Key Functions:**
|
|
62
|
+
- `rad.ObjPolyhdr()` - Create polyhedron
|
|
63
|
+
|
|
64
|
+
## Radia Python API Basics
|
|
65
|
+
|
|
66
|
+
1. **Import module**
|
|
67
|
+
```python
|
|
68
|
+
import radia as rad
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
2. **Create objects**
|
|
72
|
+
```python
|
|
73
|
+
# Rectangular magnet: position, dimensions, magnetization
|
|
74
|
+
mag = rad.ObjRecMag([0,0,0], [10,10,10], [0,0,1.0])
|
|
75
|
+
|
|
76
|
+
# Arc current: center, [rmin,rmax], [phimin,phimax], height, segments, current
|
|
77
|
+
arc = rad.ObjArcCur([0,0,0], [100,150], [0, 6.28], 20, 20, 10)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
3. **Material properties**
|
|
81
|
+
```python
|
|
82
|
+
# Anisotropic linear material: [ksi_parallel, ksi_perpendicular], magnetization vector
|
|
83
|
+
mat = rad.MatLin([0.06, 0.17], [0,0,1])
|
|
84
|
+
rad.MatApl(obj, mat)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
4. **Field calculation**
|
|
88
|
+
```python
|
|
89
|
+
# Magnetic flux density [T]
|
|
90
|
+
B = rad.Fld(obj, 'b', [x, y, z])
|
|
91
|
+
|
|
92
|
+
# Magnetic field strength [A/m]
|
|
93
|
+
H = rad.Fld(obj, 'h', [x, y, z])
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
5. **3D Visualization**
|
|
97
|
+
```python
|
|
98
|
+
# Export to VTK for ParaView visualization
|
|
99
|
+
from radia_vtk_export import exportGeometryToVTK
|
|
100
|
+
exportGeometryToVTK(obj, 'output.vtk')
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Requirements
|
|
104
|
+
|
|
105
|
+
- Python 3.12+
|
|
106
|
+
- Radia module (installed via pip or built from source)
|
|
107
|
+
- NumPy
|
|
108
|
+
|
|
109
|
+
## Troubleshooting
|
|
110
|
+
|
|
111
|
+
### ModuleNotFoundError: No module named 'radia'
|
|
112
|
+
|
|
113
|
+
Install Radia:
|
|
114
|
+
```bash
|
|
115
|
+
pip install radia
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Or build from source and install locally:
|
|
119
|
+
```bash
|
|
120
|
+
cd ../..
|
|
121
|
+
python -m pip install .
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Field calculation returns zero
|
|
125
|
+
|
|
126
|
+
- Check that magnetization is set on the object
|
|
127
|
+
- Verify material properties are correctly applied
|
|
128
|
+
- Ensure object ID is valid
|
|
129
|
+
|
|
130
|
+
## See Also
|
|
131
|
+
|
|
132
|
+
- [Radia Official Documentation](https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia)
|
|
133
|
+
- [API Reference](../../docs/API_REFERENCE.md)
|
|
134
|
+
- [H-Matrix User Guide](../../docs/HMATRIX_USER_GUIDE.md)
|
|
@@ -9,7 +9,8 @@ This test demonstrates proper H-matrix usage as specified in CLAUDE.md:
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
import sys
|
|
12
|
-
|
|
12
|
+
import os
|
|
13
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../build/Release'))
|
|
13
14
|
|
|
14
15
|
import radia as rad
|
|
15
16
|
import numpy as np
|
|
@@ -5,9 +5,10 @@ Linear materials converge in 0-1 iterations, so only matrix construction is rele
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import sys
|
|
8
|
+
import os
|
|
8
9
|
import numpy as np
|
|
9
10
|
from time import perf_counter
|
|
10
|
-
sys.path.insert(0,
|
|
11
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../build/Release'))
|
|
11
12
|
|
|
12
13
|
import radia as rad
|
|
13
14
|
|
|
@@ -5,9 +5,10 @@ Verify O(N^2) scaling
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import sys
|
|
8
|
+
import os
|
|
8
9
|
import numpy as np
|
|
9
10
|
from time import perf_counter
|
|
10
|
-
sys.path.insert(0,
|
|
11
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../build/Release'))
|
|
11
12
|
|
|
12
13
|
import radia as rad
|
|
13
14
|
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
Solver Methods Benchmark: Direct vs Relaxation vs Relaxation+H-matrix
|
|
4
|
+
|
|
5
|
+
Compares three solver methods for magnetic field problems:
|
|
6
|
+
1. Direct calculation (no solver, uses initial magnetization)
|
|
7
|
+
2. Standard relaxation solver
|
|
8
|
+
3. H-matrix accelerated relaxation solver
|
|
9
|
+
|
|
10
|
+
Problem: Nonlinear magnetic material with applied background field
|
|
11
|
+
|
|
12
|
+
Performance metrics:
|
|
13
|
+
- Computation time
|
|
14
|
+
- Field accuracy (comparing all methods)
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import sys
|
|
18
|
+
import os
|
|
19
|
+
import time
|
|
20
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../build/Release'))
|
|
21
|
+
|
|
22
|
+
import radia as rad
|
|
23
|
+
import numpy as np
|
|
24
|
+
|
|
25
|
+
print("=" * 80)
|
|
26
|
+
print("Solver Methods Benchmark")
|
|
27
|
+
print("Direct / Relaxation / Relaxation+H-matrix Comparison")
|
|
28
|
+
print("=" * 80)
|
|
29
|
+
|
|
30
|
+
# Test configurations
|
|
31
|
+
test_cases = [
|
|
32
|
+
{"n": 3, "desc": "Small (N=27)"},
|
|
33
|
+
{"n": 5, "desc": "Medium (N=125)"},
|
|
34
|
+
{"n": 7, "desc": "Large (N=343)"},
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
# Solver parameters
|
|
38
|
+
precision = 0.0001
|
|
39
|
+
max_iter = 1000
|
|
40
|
+
|
|
41
|
+
# Background field (uniform field applied to material)
|
|
42
|
+
# Note: In Radia, ObjBckg() uses Tesla, and field values are in Radia's internal units
|
|
43
|
+
# where H and B are numerically equal. Use value ~1.0 for moderate field.
|
|
44
|
+
H_bg = [1.0, 0, 0] # 1.0 T background field in X direction
|
|
45
|
+
|
|
46
|
+
# Observation point
|
|
47
|
+
obs_point = [0, 0, 50] # 50mm above center
|
|
48
|
+
|
|
49
|
+
print("\nProblem Setup:")
|
|
50
|
+
print(" Material: Nonlinear (Steel37)")
|
|
51
|
+
print(" Background field: [{}, {}, {}] T".format(*H_bg))
|
|
52
|
+
print(" Observation point: [{}, {}, {}] mm".format(*obs_point))
|
|
53
|
+
print(" Solver precision: {}".format(precision))
|
|
54
|
+
print(" Max iterations: {}".format(max_iter))
|
|
55
|
+
|
|
56
|
+
results = []
|
|
57
|
+
|
|
58
|
+
for test in test_cases:
|
|
59
|
+
n = test["n"]
|
|
60
|
+
desc = test["desc"]
|
|
61
|
+
|
|
62
|
+
print("\n" + "=" * 80)
|
|
63
|
+
print("Test Case: {}".format(desc))
|
|
64
|
+
print("=" * 80)
|
|
65
|
+
|
|
66
|
+
size = 20.0 # mm (total cube size)
|
|
67
|
+
elem_size = size / n
|
|
68
|
+
|
|
69
|
+
# ========================================
|
|
70
|
+
# Method 1: Direct Calculation
|
|
71
|
+
# ========================================
|
|
72
|
+
print("\n[Method 1] Direct Calculation (no solver)")
|
|
73
|
+
print("-" * 80)
|
|
74
|
+
rad.UtiDelAll()
|
|
75
|
+
|
|
76
|
+
# Create material
|
|
77
|
+
mat = rad.MatSatIsoFrm([1596.3, 1.1488], [133.11, 0.4268], [18.713, 0.4759])
|
|
78
|
+
|
|
79
|
+
# Create geometry with initial magnetization
|
|
80
|
+
elements = []
|
|
81
|
+
for i in range(n):
|
|
82
|
+
for j in range(n):
|
|
83
|
+
for k in range(n):
|
|
84
|
+
x = -size/2 + (i + 0.5) * elem_size
|
|
85
|
+
y = -size/2 + (j + 0.5) * elem_size
|
|
86
|
+
z = -size/2 + (k + 0.5) * elem_size
|
|
87
|
+
# No initial magnetization (material will respond to background field)
|
|
88
|
+
elem = rad.ObjRecMag([x, y, z], [elem_size, elem_size, elem_size])
|
|
89
|
+
rad.MatApl(elem, mat)
|
|
90
|
+
elements.append(elem)
|
|
91
|
+
|
|
92
|
+
# Add background field source to container
|
|
93
|
+
bg_field = rad.ObjBckg(H_bg)
|
|
94
|
+
container = rad.ObjCnt(elements + [bg_field])
|
|
95
|
+
|
|
96
|
+
print(" Elements: {} ({}×{}×{})".format(len(elements), n, n, n))
|
|
97
|
+
|
|
98
|
+
# Direct field calculation (using initial magnetization only)
|
|
99
|
+
t0 = time.perf_counter()
|
|
100
|
+
H_direct = rad.Fld(container, 'h', obs_point)
|
|
101
|
+
t_direct = time.perf_counter() - t0
|
|
102
|
+
|
|
103
|
+
print(" Time: {:.6f} s".format(t_direct))
|
|
104
|
+
print(" H: [{:.6e}, {:.6e}, {:.6e}] A/m".format(*H_direct))
|
|
105
|
+
H_mag_direct = np.linalg.norm(H_direct)
|
|
106
|
+
print(" |H|: {:.6e} A/m".format(H_mag_direct))
|
|
107
|
+
|
|
108
|
+
# ========================================
|
|
109
|
+
# Method 2: Standard Relaxation
|
|
110
|
+
# ========================================
|
|
111
|
+
print("\n[Method 2] Standard Relaxation (no H-matrix)")
|
|
112
|
+
print("-" * 80)
|
|
113
|
+
rad.UtiDelAll()
|
|
114
|
+
|
|
115
|
+
# Recreate geometry
|
|
116
|
+
mat = rad.MatSatIsoFrm([1596.3, 1.1488], [133.11, 0.4268], [18.713, 0.4759])
|
|
117
|
+
|
|
118
|
+
elements = []
|
|
119
|
+
for i in range(n):
|
|
120
|
+
for j in range(n):
|
|
121
|
+
for k in range(n):
|
|
122
|
+
x = -size/2 + (i + 0.5) * elem_size
|
|
123
|
+
y = -size/2 + (j + 0.5) * elem_size
|
|
124
|
+
z = -size/2 + (k + 0.5) * elem_size
|
|
125
|
+
# No initial magnetization - pure soft magnetic material
|
|
126
|
+
elem = rad.ObjRecMag([x, y, z], [elem_size, elem_size, elem_size])
|
|
127
|
+
rad.MatApl(elem, mat)
|
|
128
|
+
elements.append(elem)
|
|
129
|
+
|
|
130
|
+
# Add background field source to container
|
|
131
|
+
bg_field = rad.ObjBckg(H_bg)
|
|
132
|
+
container = rad.ObjCnt(elements + [bg_field])
|
|
133
|
+
|
|
134
|
+
# Disable H-matrix for standard relaxation
|
|
135
|
+
rad.SolverHMatrixDisable()
|
|
136
|
+
|
|
137
|
+
# Run relaxation solver
|
|
138
|
+
t0 = time.perf_counter()
|
|
139
|
+
result_relax = rad.Solve(container, precision, max_iter)
|
|
140
|
+
t_relax = time.perf_counter() - t0
|
|
141
|
+
|
|
142
|
+
H_relax = rad.Fld(container, 'h', obs_point)
|
|
143
|
+
|
|
144
|
+
print(" Time: {:.6f} s".format(t_relax))
|
|
145
|
+
print(" H: [{:.6e}, {:.6e}, {:.6e}] A/m".format(*H_relax))
|
|
146
|
+
H_mag_relax = np.linalg.norm(H_relax)
|
|
147
|
+
print(" |H|: {:.6e} A/m".format(H_mag_relax))
|
|
148
|
+
print(" Convergence: {}".format(result_relax))
|
|
149
|
+
|
|
150
|
+
# ========================================
|
|
151
|
+
# Method 3: H-matrix Relaxation
|
|
152
|
+
# ========================================
|
|
153
|
+
print("\n[Method 3] H-matrix Accelerated Relaxation")
|
|
154
|
+
print("-" * 80)
|
|
155
|
+
rad.UtiDelAll()
|
|
156
|
+
|
|
157
|
+
# Recreate geometry
|
|
158
|
+
mat = rad.MatSatIsoFrm([1596.3, 1.1488], [133.11, 0.4268], [18.713, 0.4759])
|
|
159
|
+
|
|
160
|
+
elements = []
|
|
161
|
+
for i in range(n):
|
|
162
|
+
for j in range(n):
|
|
163
|
+
for k in range(n):
|
|
164
|
+
x = -size/2 + (i + 0.5) * elem_size
|
|
165
|
+
y = -size/2 + (j + 0.5) * elem_size
|
|
166
|
+
z = -size/2 + (k + 0.5) * elem_size
|
|
167
|
+
# No initial magnetization - pure soft magnetic material
|
|
168
|
+
elem = rad.ObjRecMag([x, y, z], [elem_size, elem_size, elem_size])
|
|
169
|
+
rad.MatApl(elem, mat)
|
|
170
|
+
elements.append(elem)
|
|
171
|
+
|
|
172
|
+
# Add background field source to container
|
|
173
|
+
bg_field = rad.ObjBckg(H_bg)
|
|
174
|
+
container = rad.ObjCnt(elements + [bg_field])
|
|
175
|
+
|
|
176
|
+
# Enable H-matrix for relaxation
|
|
177
|
+
rad.SolverHMatrixEnable()
|
|
178
|
+
|
|
179
|
+
# Run relaxation solver with H-matrix
|
|
180
|
+
t0 = time.perf_counter()
|
|
181
|
+
result_hmat = rad.Solve(container, precision, max_iter)
|
|
182
|
+
t_hmat = time.perf_counter() - t0
|
|
183
|
+
|
|
184
|
+
H_hmat = rad.Fld(container, 'h', obs_point)
|
|
185
|
+
|
|
186
|
+
# Get H-matrix stats
|
|
187
|
+
stats = rad.GetHMatrixStats()
|
|
188
|
+
|
|
189
|
+
print(" Time: {:.6f} s".format(t_hmat))
|
|
190
|
+
print(" H: [{:.6e}, {:.6e}, {:.6e}] A/m".format(*H_hmat))
|
|
191
|
+
H_mag_hmat = np.linalg.norm(H_hmat)
|
|
192
|
+
print(" |H|: {:.6e} A/m".format(H_mag_hmat))
|
|
193
|
+
print(" Convergence: {}".format(result_hmat))
|
|
194
|
+
print(" H-matrix memory: {:.3f} MB".format(stats[2]))
|
|
195
|
+
|
|
196
|
+
# ========================================
|
|
197
|
+
# Comparison
|
|
198
|
+
# ========================================
|
|
199
|
+
print("\n[Comparison]")
|
|
200
|
+
print("-" * 80)
|
|
201
|
+
|
|
202
|
+
# Use standard relaxation as reference
|
|
203
|
+
H_ref = np.array(H_relax)
|
|
204
|
+
H_ref_mag = np.linalg.norm(H_ref)
|
|
205
|
+
|
|
206
|
+
# Direct vs Relaxation error
|
|
207
|
+
diff_direct = np.array(H_direct) - H_ref
|
|
208
|
+
err_direct = np.linalg.norm(diff_direct) / (H_ref_mag + 1e-15) * 100
|
|
209
|
+
|
|
210
|
+
# H-matrix vs Relaxation error
|
|
211
|
+
diff_hmat = np.array(H_hmat) - H_ref
|
|
212
|
+
err_hmat = np.linalg.norm(diff_hmat) / (H_ref_mag + 1e-15) * 100
|
|
213
|
+
|
|
214
|
+
print(" Reference: Standard Relaxation |H| = {:.6e} A/m".format(H_ref_mag))
|
|
215
|
+
print("")
|
|
216
|
+
print(" Method Time (s) |H| (A/m) Error (%) Speedup")
|
|
217
|
+
print(" " + "-" * 72)
|
|
218
|
+
print(" Direct {:9.6f} {:14.6e} {:11.4f} -".format(
|
|
219
|
+
t_direct, H_mag_direct, err_direct))
|
|
220
|
+
print(" Relaxation {:9.6f} {:14.6e} {:11.4f} 1.00x".format(
|
|
221
|
+
t_relax, H_mag_relax, 0.0))
|
|
222
|
+
print(" H-matrix {:9.6f} {:14.6e} {:11.4f} {:7.2f}x".format(
|
|
223
|
+
t_hmat, H_mag_hmat, err_hmat, t_relax/t_hmat if t_hmat > 0 else 0))
|
|
224
|
+
|
|
225
|
+
results.append({
|
|
226
|
+
"n": n,
|
|
227
|
+
"n_elem": n**3,
|
|
228
|
+
"t_direct": t_direct,
|
|
229
|
+
"t_relax": t_relax,
|
|
230
|
+
"t_hmat": t_hmat,
|
|
231
|
+
"err_direct": err_direct,
|
|
232
|
+
"err_hmat": err_hmat,
|
|
233
|
+
"speedup": t_relax/t_hmat if t_hmat > 0 else 0
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
# ========================================
|
|
237
|
+
# Summary
|
|
238
|
+
# ========================================
|
|
239
|
+
print("\n" + "=" * 80)
|
|
240
|
+
print("SUMMARY")
|
|
241
|
+
print("=" * 80)
|
|
242
|
+
print("\n{:>6s} {:>8s} {:>12s} {:>12s} {:>12s} {:>10s} {:>10s} {:>10s}".format(
|
|
243
|
+
"N", "Elements",
|
|
244
|
+
"Direct (s)", "Relax (s)", "H-mat (s)",
|
|
245
|
+
"Dir Err(%)", "H-mat Err(%)",
|
|
246
|
+
"Speedup"))
|
|
247
|
+
print("-" * 80)
|
|
248
|
+
|
|
249
|
+
for r in results:
|
|
250
|
+
print("{:>6d} {:>8d} {:>12.6f} {:>12.6f} {:>12.6f} {:>10.4f} {:>10.4f} {:>10.2f}x".format(
|
|
251
|
+
r["n"], r["n_elem"],
|
|
252
|
+
r["t_direct"], r["t_relax"], r["t_hmat"],
|
|
253
|
+
r["err_direct"], r["err_hmat"],
|
|
254
|
+
r["speedup"]))
|
|
255
|
+
|
|
256
|
+
print("=" * 80)
|
|
257
|
+
print("\nNotes:")
|
|
258
|
+
print(" - Direct: Uses initial magnetization only (no iterations)")
|
|
259
|
+
print(" - Relaxation: Standard solver (reference for accuracy)")
|
|
260
|
+
print(" - H-matrix: Accelerated solver (best for large problems N > 100)")
|
|
261
|
+
print(" - Error: Relative difference from Relaxation method")
|
|
262
|
+
print("=" * 80)
|
|
263
|
+
|
|
264
|
+
rad.UtiDelAll()
|
|
Binary file
|
|
@@ -8,31 +8,20 @@ setup.py
|
|
|
8
8
|
docs/API_EXTENSIONS.md
|
|
9
9
|
docs/API_REFERENCE.md
|
|
10
10
|
docs/CF_BACKGROUND_FIELD_IMPLEMENTATION.md
|
|
11
|
-
docs/DIRECTORY_STRUCTURE.md
|
|
12
|
-
docs/EXAMPLES_REVIEW.md
|
|
13
11
|
docs/HMATRIX_BENCHMARKS_RESULTS.md
|
|
14
12
|
docs/HMATRIX_ENHANCEMENT_PROPOSAL_2025.md
|
|
15
13
|
docs/HMATRIX_IMPLEMENTATION_HISTORY.md
|
|
16
|
-
docs/HMATRIX_MATVEC_OPTIMIZATION.md
|
|
17
|
-
docs/HMATRIX_PERFORMANCE_IMPROVEMENT.md
|
|
18
14
|
docs/HMATRIX_SERIALIZATION.md
|
|
19
15
|
docs/HMATRIX_USER_GUIDE.md
|
|
20
16
|
docs/MATERIAL_API_IMPLEMENTATION.md
|
|
21
17
|
docs/ML_PARAMETER_TUNING.md
|
|
22
18
|
docs/NGSOLVE_CF_BACKGROUND_FIELD_DESIGN.md
|
|
23
|
-
docs/NGSOLVE_DLL_ISSUE.md
|
|
24
19
|
docs/NGSOLVE_INTEGRATION.md
|
|
25
|
-
docs/NGSOLVE_PYTHON_SOLUTION.md
|
|
26
20
|
docs/NGSOLVE_USAGE_GUIDE.md
|
|
27
|
-
docs/
|
|
28
|
-
docs/PHASE3_PERFORMANCE_ISSUE.md
|
|
29
|
-
docs/PYPI_RELEASE_v1.0.10.md
|
|
30
|
-
docs/RELEASE_NOTES_v1.0.10.md
|
|
31
|
-
docs/TAB_CONVERSION_REPORT.md
|
|
21
|
+
docs/README.md
|
|
32
22
|
docs/hmatrix_field_design.md
|
|
33
23
|
docs/scripts/README.md
|
|
34
24
|
examples/README.md
|
|
35
|
-
examples/H-matrix/benchmark_solver.py
|
|
36
25
|
examples/NGSolve_Integration/HMATRIX_ANALYSIS.md
|
|
37
26
|
examples/NGSolve_Integration/HMATRIX_FIELD_EVALUATION_ISSUE.md
|
|
38
27
|
examples/NGSolve_Integration/H_MATRIX_PARALLEL_OPTIMIZATION.md
|
|
@@ -43,7 +32,6 @@ examples/NGSolve_Integration/README.md
|
|
|
43
32
|
examples/NGSolve_Integration/SET_VS_INTERPOLATE_SIMPLE.md
|
|
44
33
|
examples/NGSolve_Integration/SOLVER_OPTIMIZATION_PROPOSAL.md
|
|
45
34
|
examples/NGSolve_Integration/benchmark_gridfunction_set.py
|
|
46
|
-
examples/NGSolve_Integration/debug_field_values.py
|
|
47
35
|
examples/NGSolve_Integration/demo_field_types.py
|
|
48
36
|
examples/NGSolve_Integration/export_radia_geometry.py
|
|
49
37
|
examples/NGSolve_Integration/radia_field.pvsm
|
|
@@ -76,6 +64,26 @@ examples/electromagnet/field_distribution.vtk
|
|
|
76
64
|
examples/electromagnet/magnet.py
|
|
77
65
|
examples/electromagnet/racetrack_coil_model.py
|
|
78
66
|
examples/electromagnet/yoke_model.py
|
|
67
|
+
examples/ngsolve_integration/HMATRIX_ANALYSIS.md
|
|
68
|
+
examples/ngsolve_integration/HMATRIX_FIELD_EVALUATION_ISSUE.md
|
|
69
|
+
examples/ngsolve_integration/H_MATRIX_PARALLEL_OPTIMIZATION.md
|
|
70
|
+
examples/ngsolve_integration/NGBEM_ANALYSIS.md
|
|
71
|
+
examples/ngsolve_integration/NGSOLVE_SET_VS_INTERPOLATE.md
|
|
72
|
+
examples/ngsolve_integration/PROPOSAL_VECTORIZED_API.md
|
|
73
|
+
examples/ngsolve_integration/README.md
|
|
74
|
+
examples/ngsolve_integration/SET_VS_INTERPOLATE_SIMPLE.md
|
|
75
|
+
examples/ngsolve_integration/SOLVER_OPTIMIZATION_PROPOSAL.md
|
|
76
|
+
examples/ngsolve_integration/benchmark_gridfunction_set.py
|
|
77
|
+
examples/ngsolve_integration/demo_field_types.py
|
|
78
|
+
examples/ngsolve_integration/export_radia_geometry.py
|
|
79
|
+
examples/ngsolve_integration/radia_field.pvsm
|
|
80
|
+
examples/ngsolve_integration/test_batch_evaluation.py
|
|
81
|
+
examples/ngsolve_integration/test_batch_fld.py
|
|
82
|
+
examples/ngsolve_integration/test_coordinate_transform.py
|
|
83
|
+
examples/ngsolve_integration/test_mesh_convergence.py
|
|
84
|
+
examples/ngsolve_integration/test_set_vs_interpolate.py
|
|
85
|
+
examples/ngsolve_integration/verify_curl_A_equals_B.py
|
|
86
|
+
examples/ngsolve_integration/visualize_field.py
|
|
79
87
|
examples/simple_problems/CONVERSION_NOTES.md
|
|
80
88
|
examples/simple_problems/README.md
|
|
81
89
|
examples/simple_problems/arc_current_dual_magnets.py
|
|
@@ -104,6 +112,7 @@ examples/solver_benchmarks/benchmark_matrix_construction.py
|
|
|
104
112
|
examples/solver_benchmarks/benchmark_parallel_construction.py
|
|
105
113
|
examples/solver_benchmarks/benchmark_solver.py
|
|
106
114
|
examples/solver_benchmarks/benchmark_solver_comparison.py
|
|
115
|
+
examples/solver_benchmarks/benchmark_solver_methods.py
|
|
107
116
|
examples/solver_benchmarks/benchmark_solver_scaling.py
|
|
108
117
|
examples/solver_benchmarks/benchmark_solver_scaling_extended.py
|
|
109
118
|
examples/solver_benchmarks/plot_benchmark_results.py
|
|
@@ -130,6 +139,7 @@ tests/benchmark_hmatrix.py
|
|
|
130
139
|
tests/conftest.py
|
|
131
140
|
tests/test_advanced.py
|
|
132
141
|
tests/test_group_operations.py
|
|
142
|
+
tests/test_magpylib_comparison.py
|
|
133
143
|
tests/test_materials.py
|
|
134
144
|
tests/test_new_material_api.py
|
|
135
145
|
tests/test_objbckg_simple.py
|
|
@@ -143,6 +153,7 @@ tests/test_simple.py
|
|
|
143
153
|
tests/test_square_coil_analytical.py
|
|
144
154
|
tests/test_transformations.py
|
|
145
155
|
tests/test_type_cast.py
|
|
156
|
+
tests/test_update_hmatrix_magnetization.py
|
|
146
157
|
tests/test_utils.py
|
|
147
158
|
tests/test_vector_potential.py
|
|
148
159
|
tests/benchmarks/benchmark_correct.py
|