radia 1.3.10__tar.gz → 1.3.13__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.3.10/src/radia.egg-info → radia-1.3.13}/PKG-INFO +1 -1
- {radia-1.3.10 → radia-1.3.13}/docs/MESH_MSC_API_DESIGN.md +8 -6
- {radia-1.3.10 → radia-1.3.13}/docs/MMM_MSC_IMPLEMENTATION.md +2 -2
- {radia-1.3.10 → radia-1.3.13}/pyproject.toml +1 -1
- {radia-1.3.10 → radia-1.3.13}/src/radia/__init__.py +1 -1
- radia-1.3.13/src/radia/radia.pyd +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_ngsolve.pyd +0 -0
- {radia-1.3.10 → radia-1.3.13/src/radia.egg-info}/PKG-INFO +1 -1
- {radia-1.3.10 → radia-1.3.13}/src/radia.egg-info/SOURCES.txt +0 -1
- radia-1.3.10/examples/cube_uniform_field/nonlinear/test_lu_vs_bicgstab.py +0 -82
- radia-1.3.10/src/radia/radia.pyd +0 -0
- {radia-1.3.10 → radia-1.3.13}/COPYRIGHT.txt +0 -0
- {radia-1.3.10 → radia-1.3.13}/LICENSE +0 -0
- {radia-1.3.10 → radia-1.3.13}/MANIFEST.in +0 -0
- {radia-1.3.10 → radia-1.3.13}/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/API_EXTENSIONS.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/API_REFERENCE.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/CF_BACKGROUND_FIELD_IMPLEMENTATION.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/HMATRIX_EVALUATION.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/HMATRIX_SERIALIZATION.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/HMATRIX_USER_GUIDE.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/HYBRID_DOF_SOLVER_DESIGN.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/MATERIAL_API_IMPLEMENTATION.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/ML_PARAMETER_TUNING.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/NGSOLVE_CF_BACKGROUND_FIELD_DESIGN.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/NGSOLVE_INTEGRATION.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/NGSOLVE_USAGE_GUIDE.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/SOLVER_METHODS.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/docs/scripts/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/cubit_to_nastran.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/permeability_comparison.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/quadrupole_analytical.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/quadrupole_analytical.vtk.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/sphere_in_quadrupole.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/sphere_nastran_analysis.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/sphere_nastran_field_mu.pvsm +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/background_fields/sphere_nastran_geometry.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/coil_geometry.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/coil_model.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/complex_coil.pvsm +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/field_map.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/field_map.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/complex_coil_geometry/visualize_coils.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/README_CUBE_BENCHMARK.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_bicgstab_dense.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_external_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_high_mu.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_mesh_convergence.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_solver_methods.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_tetra_vs_hex.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_tetra_vs_ngsolve.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/compare_external_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/cube_benchmark_external_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/cube_benchmark_radia.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/evaluate_perturbation_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/precision_evaluation.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/test_method9_fine_mesh.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/test_method9_high_mu.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_bicgstab_hex.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_conditions.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_element_types.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_hexa_unified.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_hexahedron_msc.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_nonlinear_tetra_vs_hex.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_solver_methods.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_tetra_netgen.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_tetra_unified.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/compare_radia_elfmagic_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/compare_tetra_methods.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/Radia_model.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/York.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/field_distribution.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/main_simulation_workflow.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/visualize_paraview.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/electromagnet/york_cubit_mesh.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/magpylib_integration/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/magpylib_integration/cylinder_magnet_examples.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/magpylib_integration/demo_magpylib_integration.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/magpylib_integration/sphere_in_halbach_cylinder.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/benchmark_gridfunction_set.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/demo_basic_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/demo_batch_evaluation.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/demo_coordinate_transform.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/demo_field_types.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/demo_hdiv_projection.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/RADIA_TETRA_ROOT_CAUSE.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/compare_radia_ngsolve_cube.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/cube_hex.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/demo_tetrahedral_methods_comparison.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/ngsolve_cube_graded_mesh.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/ngsolve_cube_uniform_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/ngsolve_tet_mesh.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/sphere_domain_graded_mesh.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/test_batch_evaluation.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/test_unit_conversion.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/verify_curl_A_equals_B.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/visualize_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/CONVERSION_NOTES.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/arc_current_dual_magnets.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/arc_current_with_magnet.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/chamfered_pole_piece.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/compare_magpylib.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/simple_problems/cubic_polyhedron_magnet.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/smco_magnet_array/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/smco_magnet_array/smbo.pvsm +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/smco_magnet_array/smco_array.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/smco_magnet_array/smco_array.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/smco_magnet_array/smco_field_distribution.vtk +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/BENCHMARK_RESULTS.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_field_evaluation.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_large_scale_comparison.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_linear_material.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_lu_vs_hmatrix.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_matrix_construction.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_parallel_construction.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_solver.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_solver_comparison.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_solver_methods.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_solver_scaling.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_solver_scaling_extended.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/plot_benchmark_results.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/run_all_benchmarks.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/verify_field_accuracy.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/setup.cfg +0 -0
- {radia-1.3.10 → radia-1.3.13}/setup.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/nastran_mesh_import.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/netgen_mesh_import.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/rad_ngsolve_fast.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_coil_builder.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_field_cached.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_ngsolve_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_ngsolve_utils.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_pyvista_viewer.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia/radia_vtk_export.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia.egg-info/dependency_links.txt +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia.egg-info/not-zip-safe +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia.egg-info/requires.txt +0 -0
- {radia-1.3.10 → radia-1.3.13}/src/radia.egg-info/top_level.txt +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/README.md +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/__init__.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/benchmarks/benchmark_correct.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/benchmarks/benchmark_heavy.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/benchmarks/benchmark_openmp.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/benchmarks/benchmark_threads.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/conftest.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/profile_batch_performance.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_advanced.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_all_spaces.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_background_field_debug.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_batch_evaluation.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_cf_direct.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_convergence_hdiv.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_curlA_equals_B.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_curl_A_detailed.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_far_field_accuracy.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_fast_preparecache.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_fast_simple.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_group_operations.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_hcurl_vs_hdiv.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_l2_norm_debug.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_magpylib_comparison.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_materials.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_memory_allocation_tracking.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_mesh_import.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_minimal_cached.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_moving_magnet_memory.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_moving_magnet_memory_diagnosis.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_new_material_api.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_ngsolve_integration.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_objbckg_simple.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_objbckgcf_alone.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_order1.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_parallel_performance.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_preparecache_performance.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_process_memory.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_python_cached_field.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_python_cached_simple.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_rad_ngsolve.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_rad_ngsolve_diagnostic.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_rad_ngsolve_function.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radhmat.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia_core_memory.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia_field_computation_memory.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia_ngsolve_longrun.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia_ngsolve_memory_leak.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia_ngsolve_with_cache.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_radia_only_memory.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_serialization.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_set_vs_interpolate.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_simple.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_simple_fld_leak.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_square_coil_analytical.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_tetrahedral_solver.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_transformations.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_type_cast.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_unit_conversion_verify.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_utils.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_vector_potential.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_without_B_projection.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/test_without_gridfunction.py +0 -0
- {radia-1.3.10 → radia-1.3.13}/tests/verify_curl_A_equals_B.py +0 -0
|
@@ -27,16 +27,17 @@ Understanding the differences is critical for choosing the right approach.
|
|
|
27
27
|
|
|
28
28
|
### Method Comparison Table
|
|
29
29
|
|
|
30
|
-
| Property | ObjRecMag (Analytical) | ObjPolyhdr Hex (MSC) | ObjPolyhdr Tet (MSC) |
|
|
31
|
-
|
|
32
|
-
| **Element Type** | Axis-aligned rectangular | General hexahedron | Tetrahedron |
|
|
33
|
-
| **Implementation** | 8-vertex atan formula | 6-
|
|
30
|
+
| Property | ObjRecMag (Analytical) | ObjPolyhdr Hex (6-face MSC) | ObjPolyhdr Tet (4-face MSC) |
|
|
31
|
+
|----------|----------------------|------------------------------|------------------------------|
|
|
32
|
+
| **Element Type** | Axis-aligned rectangular | General hexahedron (6 quad faces) | Tetrahedron (4 triangular faces) |
|
|
33
|
+
| **Implementation** | 8-vertex atan formula | 6-quad -> 12-tri surface integral | 4-face surface integral |
|
|
34
34
|
| **Source File** | rad_rectangular_block.cpp | rad_polyhedron.cpp | rad_polyhedron.cpp |
|
|
35
35
|
| **Geometry Constraint** | Axis-aligned only | Any convex hexahedron | Any tetrahedron |
|
|
36
36
|
| **Speed** | Fastest | Medium | Medium |
|
|
37
|
-
| **Accuracy** | Exact (analytical) | High (
|
|
38
|
-
| **Mesh Import** | ObjDivMag only | External mesh | External mesh |
|
|
37
|
+
| **Accuracy** | Exact (analytical) | High (MSC matching ELF_MAGIC) | High (MSC matching ELF_MAGIC) |
|
|
38
|
+
| **Mesh Import** | ObjDivMag only | External mesh (6-face format) | External mesh (4-face format) |
|
|
39
39
|
| **DOF per Element** | 3 (Mx, My, Mz) | 3 (Mx, My, Mz) | 3 (Mx, My, Mz) |
|
|
40
|
+
| **Radia Face Format** | N/A | 1-indexed quad faces | 1-indexed triangular faces |
|
|
40
41
|
|
|
41
42
|
### Detailed Method Descriptions
|
|
42
43
|
|
|
@@ -657,5 +658,6 @@ The NGSolve integration benefits especially from:
|
|
|
657
658
|
---
|
|
658
659
|
|
|
659
660
|
**Created**: 2025-12-05
|
|
661
|
+
**Updated**: 2025-12-11 (6-face hexahedral MSC implementation)
|
|
660
662
|
**Author**: Claude Code
|
|
661
663
|
**Project**: Radia Magnetic Field Computation
|
|
@@ -109,7 +109,7 @@ void radTPolygon::B_comp(radTField* FieldPtr)
|
|
|
109
109
|
| **Method** | MMM with MSC | MMM with MSC |
|
|
110
110
|
| **Rectangular elements** | Analytical formula (8-vertex atan) | MSC (6 quad faces -> 12 triangles) |
|
|
111
111
|
| **Tetrahedral elements** | MSC (4 triangular faces) | MSC (4 triangular faces) |
|
|
112
|
-
| **Hexahedral elements** | Analytical
|
|
112
|
+
| **Hexahedral elements** | Analytical (radTRecMag) or MSC (radTPolyhedron) | MSC (6 quad faces) |
|
|
113
113
|
| **General polyhedra** | MSC (N polygon faces) | Not directly supported |
|
|
114
114
|
| **Polygon field formula** | log + atan (same as ELF_MAGIC) | log + atan |
|
|
115
115
|
| **Self-demagnetization** | Correct (N=1/3 for cube) | Correct (N=1/3 for cube) |
|
|
@@ -170,6 +170,6 @@ The performance difference comes from:
|
|
|
170
170
|
|
|
171
171
|
---
|
|
172
172
|
|
|
173
|
-
**Last Updated**: 2025-12-
|
|
173
|
+
**Last Updated**: 2025-12-11 (6-face hexahedral MSC added)
|
|
174
174
|
**Author**: Claude Code
|
|
175
175
|
**Project**: Radia Magnetic Field Computation
|
|
Binary file
|
|
Binary file
|
|
@@ -67,7 +67,6 @@ examples/cube_uniform_field/nonlinear/benchmark_tetra_netgen.py
|
|
|
67
67
|
examples/cube_uniform_field/nonlinear/benchmark_tetra_unified.py
|
|
68
68
|
examples/cube_uniform_field/nonlinear/compare_radia_elfmagic_field.py
|
|
69
69
|
examples/cube_uniform_field/nonlinear/compare_tetra_methods.py
|
|
70
|
-
examples/cube_uniform_field/nonlinear/test_lu_vs_bicgstab.py
|
|
71
70
|
examples/electromagnet/README.md
|
|
72
71
|
examples/electromagnet/Radia_model.vtk
|
|
73
72
|
examples/electromagnet/York.vtk
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Compare LU vs BiCGSTAB solvers on same tetrahedral mesh.
|
|
3
|
-
The results should match if both converged correctly.
|
|
4
|
-
"""
|
|
5
|
-
import sys
|
|
6
|
-
import os
|
|
7
|
-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../../build/Release'))
|
|
8
|
-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../../src/radia'))
|
|
9
|
-
import radia as rad
|
|
10
|
-
import numpy as np
|
|
11
|
-
|
|
12
|
-
from ngsolve import Mesh
|
|
13
|
-
from netgen.csg import CSGeometry, OrthoBrick, Pnt
|
|
14
|
-
from netgen_mesh_import import netgen_mesh_to_radia
|
|
15
|
-
|
|
16
|
-
MU_0 = 4 * np.pi * 1e-7
|
|
17
|
-
H_EXT = 50000.0
|
|
18
|
-
|
|
19
|
-
# B-H curve
|
|
20
|
-
BH_DATA = [
|
|
21
|
-
[0.0, 0.0], [100.0, 0.1], [200.0, 0.3], [500.0, 0.8], [1000.0, 1.2],
|
|
22
|
-
[2000.0, 1.5], [5000.0, 1.7], [10000.0, 1.8], [50000.0, 2.0], [100000.0, 2.1],
|
|
23
|
-
]
|
|
24
|
-
HM_DATA = [[h, b/MU_0 - h] for h, b in BH_DATA]
|
|
25
|
-
|
|
26
|
-
def run_comparison(maxh):
|
|
27
|
-
print(f'\n{"="*60}')
|
|
28
|
-
print(f'maxh = {maxh}m')
|
|
29
|
-
print("="*60)
|
|
30
|
-
|
|
31
|
-
# Create mesh ONCE
|
|
32
|
-
geo = CSGeometry()
|
|
33
|
-
box = OrthoBrick(Pnt(-0.5, -0.5, -0.5), Pnt(0.5, 0.5, 0.5))
|
|
34
|
-
geo.Add(box)
|
|
35
|
-
ngmesh = geo.GenerateMesh(maxh=maxh)
|
|
36
|
-
mesh = Mesh(ngmesh)
|
|
37
|
-
|
|
38
|
-
n_elem = mesh.ne
|
|
39
|
-
print(f'Elements: {n_elem}')
|
|
40
|
-
|
|
41
|
-
results = {}
|
|
42
|
-
for method, name in [(0, 'LU'), (1, 'BiCGSTAB')]:
|
|
43
|
-
rad.FldUnits('m')
|
|
44
|
-
rad.UtiDelAll()
|
|
45
|
-
|
|
46
|
-
# Import SAME mesh
|
|
47
|
-
mag_obj = netgen_mesh_to_radia(mesh, material={'magnetization': [0, 0, 0]}, units='m')
|
|
48
|
-
|
|
49
|
-
# Apply material
|
|
50
|
-
mat = rad.MatSatIsoTab(HM_DATA)
|
|
51
|
-
rad.MatApl(mag_obj, mat)
|
|
52
|
-
|
|
53
|
-
# External field
|
|
54
|
-
B_ext = MU_0 * H_EXT
|
|
55
|
-
ext = rad.ObjBckg([0, 0, B_ext])
|
|
56
|
-
grp = rad.ObjCnt([mag_obj, ext])
|
|
57
|
-
|
|
58
|
-
# Solve
|
|
59
|
-
result = rad.Solve(grp, 0.001, 1000, method)
|
|
60
|
-
|
|
61
|
-
# Get magnetization
|
|
62
|
-
all_M = rad.ObjM(mag_obj)
|
|
63
|
-
M_avg_z = np.mean([m[1][2] for m in all_M])
|
|
64
|
-
n_iter = int(result[3]) if result[3] else 0
|
|
65
|
-
residual = result[0] if result[0] else 0.0
|
|
66
|
-
|
|
67
|
-
print(f'{name:10s}: iter={n_iter:4d}, residual={residual:10.2f}, M_avg_z={M_avg_z:12.0f} A/m')
|
|
68
|
-
results[name] = {'M_avg_z': M_avg_z, 'iter': n_iter, 'residual': residual}
|
|
69
|
-
|
|
70
|
-
diff = abs(results['LU']['M_avg_z'] - results['BiCGSTAB']['M_avg_z'])
|
|
71
|
-
pct = 100 * diff / max(results['LU']['M_avg_z'], results['BiCGSTAB']['M_avg_z'])
|
|
72
|
-
print(f'Difference: {diff:.0f} A/m ({pct:.1f}%)')
|
|
73
|
-
|
|
74
|
-
return results
|
|
75
|
-
|
|
76
|
-
# Run for multiple mesh sizes
|
|
77
|
-
if __name__ == '__main__':
|
|
78
|
-
print('\nComparison of LU vs BiCGSTAB solvers on tetrahedral meshes')
|
|
79
|
-
print('(Same mesh, same problem - results should be identical)')
|
|
80
|
-
|
|
81
|
-
for maxh in [0.4, 0.35, 0.3]:
|
|
82
|
-
run_comparison(maxh)
|
radia-1.3.10/src/radia/radia.pyd
DELETED
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_bicgstab_dense.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_external_field.py
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_mesh_convergence.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_solver_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/benchmark_tetra_vs_ngsolve.py
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/cube_benchmark_external_field.py
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/linear/evaluate_perturbation_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_bicgstab_hex.py
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_element_types.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_hexa_unified.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_hexahedron_msc.py
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_solver_methods.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_tetra_netgen.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/benchmark_tetra_unified.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/compare_radia_elfmagic_field.py
RENAMED
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/cube_uniform_field/nonlinear/compare_tetra_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/ngsolve_integration/mesh_magnetization_import/cube_hex.vtk
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_large_scale_comparison.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{radia-1.3.10 → radia-1.3.13}/examples/solver_benchmarks/benchmark_solver_scaling_extended.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|