# Radia - Python Edition with OpenMP
3D Magnetostatics Computer Code - Optimized for Python 3.12 with OpenMP Parallelization
## Overview
This is a modernized version of [Radia](https://github.com/ochubar/Radia) focusing on Python integration with performance optimizations:
- **Python 3.12 only** - Streamlined for modern Python
- **OpenMP 2.0 parallelization** - 2.7x speedup on 8-core systems
- **NGSolve integration** - C++ CoefficientFunction for FEM coupling
- **CMake build system** - Modern, cross-platform build
- **Tab indentation** - Consistent code style throughout
- **PyVista viewer** - Modern 3D visualization alternative
**For Radia usage and API documentation**, please refer to the [original Radia repository](https://github.com/ochubar/Radia) and [ESRF Radia documentation](https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia).
This repository adds NGSolve integration and performance improvements while maintaining full compatibility with the original Radia API.
## Key Features
- ✓ OpenMP parallel field computation
- ✓ NGSolve C++ CoefficientFunction integration
- ✓ VTK export functionality (`rad.ObjDrwVTK`)
- ✓ PyVista-based 3D viewer (replaces OpenGL viewer)
- ✓ All hexahedron tests passing
- ✓ Comprehensive test suite and benchmarks
- ✓ Removed legacy components (Igor, Mathematica, GLUT, MPI)
## Quick Start
### Installation from PyPI
```bash
pip install radia-ngsolve
```
**Note**: The PyPI package includes pre-built binaries for Windows Python 3.12.
### Build from Source
```bash
# Windows (PowerShell)
# 1. Build radia.pyd (core module)
.\Build.ps1
# 2. Build rad_ngsolve.pyd (optional, for NGSolve integration)
.\Build_NGSolve.ps1
# Outputs:
# - dist/radia.pyd
# - build/Release/rad_ngsolve.pyd
```
See [README_BUILD.md](README_BUILD.md) for detailed build instructions.
### Basic Usage
```python
import radia as rad
# Create a rectangular magnet
mag = rad.ObjRecMag([0,0,0], [10,10,10], [0,0,1])
# Calculate field
field = rad.Fld(mag, 'b', [0,0,20])
print(f"Field: {field} T")
```
**Note:** This example uses the standard Radia API. For complete Radia API documentation and examples, see:
- [Original Radia repository](https://github.com/ochubar/Radia)
- [ESRF Radia Manual](https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia)
### NGSolve Integration
The `rad_ngsolve` module provides a C++ CoefficientFunction interface for using Radia magnetic fields in NGSolve FEM analysis.
**Function Specification:**
```python
rad_ngsolve.RadiaField(radia_obj, field_type='b')
```
**Parameters:**
- `radia_obj` (int): Radia object handle returned by `rad.ObjRecMag()`, `rad.ObjThckPgn()`, etc.
- `field_type` (str, optional): Field type to compute. Default: `'b'`
- `'b'`: Magnetic flux density [Tesla]
- `'h'`: Magnetic field [A/m]
- `'a'`: Vector potential [T·m]
- `'m'`: Magnetization [A/m]
**Returns:**
- NGSolve CoefficientFunction (3D vector field)
**Unit Conversion:**
- NGSolve uses **meters**, Radia uses **millimeters**
- Automatic conversion: coordinates are multiplied by 1000 (m → mm)
- Field values remain in SI units (no conversion needed)
**Example:**
```python
# IMPORTANT: Import ngsolve first
import ngsolve
from ngsolve import Mesh, H1, GridFunction
import radia as rad
import rad_ngsolve
# Create Radia magnet
magnet = rad.ObjRecMag([0,0,0], [20,20,20], [0,0,1.2]) # mm units
rad.MatApl(magnet, rad.MatStd('NdFeB', 1.2))
rad.Solve(magnet, 0.0001, 10000)
# Create NGSolve CoefficientFunction for different field types
B_field = rad_ngsolve.RadiaField(magnet, 'b') # Flux density [T]
H_field = rad_ngsolve.RadiaField(magnet, 'h') # Magnetic field [A/m]
A_field = rad_ngsolve.RadiaField(magnet, 'a') # Vector potential [T·m]
M_field = rad_ngsolve.RadiaField(magnet, 'm') # Magnetization [A/m]
# Use in FEM analysis (NGSolve mesh in meters)
gf = GridFunction(fes)
gf.Set(B_field) # Automatically converts mesh coordinates m → mm
```
See [examples/Radia_to_NGSolve_CoefficientFunction/](examples/Radia_to_NGSolve_CoefficientFunction/) for complete examples.
## Documentation
### Core
- [README_BUILD.md](README_BUILD.md) - Build instructions
- [docs/OPENMP_PERFORMANCE_REPORT.md](docs/OPENMP_PERFORMANCE_REPORT.md) - OpenMP benchmarks
- [docs/DIRECTORY_STRUCTURE.md](docs/DIRECTORY_STRUCTURE.md) - Project structure
### NGSolve Integration
- [RAD_NGSOLVE_BUILD_SUCCESS.md](RAD_NGSOLVE_BUILD_SUCCESS.md) - Complete rad_ngsolve documentation
- [examples/Radia_to_NGSolve_CoefficientFunction/README.md](examples/Radia_to_NGSolve_CoefficientFunction/README.md) - NGSolve examples overview
- [examples/Radia_to_NGSolve_CoefficientFunction/EXAMPLES_GUIDE.md](examples/Radia_to_NGSolve_CoefficientFunction/EXAMPLES_GUIDE.md) - Detailed usage guide
- [tests/test_rad_ngsolve.py](tests/test_rad_ngsolve.py) - Integration tests
### Visualization
- [docs/PYVISTA_VIEWER.md](examples/2024_02_03_振分電磁石/PYVISTA_VIEWER.md) - PyVista viewer guide
### Development
- [docs/TAB_CONVERSION_REPORT.md](docs/TAB_CONVERSION_REPORT.md) - Code style conversion
- [docs/CLAUDE.md](docs/CLAUDE.md) - Development notes
## Performance
OpenMP parallelization results (8-core system):
| Threads | Time (sec) | Speedup |
|---------|-----------|---------|
| 1 | 11.67 | 1.00x |
| 2 | 6.18 | 1.89x |
| 4 | 3.57 | 3.27x |
| 8 | 4.33 | 2.70x |
See [docs/OPENMP_PERFORMANCE_REPORT.md](docs/OPENMP_PERFORMANCE_REPORT.md) for details.
## Examples
Practical examples are available in the `examples/` directory:
### NGSolve Integration
- `examples/Radia_to_NGSolve_CoefficientFunction/` - **Radia → NGSolve: Use Radia fields in FEM**
- `demo_field_types.py` - All field types demonstration
- `visualize_field.py` - Field visualization and comparison
- `export_radia_geometry.py` - Export geometry to VTK
- `examples/NGSolve_CoefficientFunction_to_Radia_BackgroundField/` - **NGSolve → Radia: Background fields**
- `test_sphere_in_quadrupole.py` - Magnetizable sphere in quadrupole field
- Uses Python callbacks to define arbitrary background fields
### Magnetostatics
- `examples/simple_problems/` - Basic magnet configurations
- `examples/electromagnet/` - Electromagnet designs
- `examples/complex_coil_geometry/` - Advanced coil geometries
### Legacy Examples
- `examples/2024_02_03_振分電磁石/` - Septum magnet simulation
- `examples/2024_03_02_Rdaiaの6面隊が動作しない調査(要素)/` - Hexahedron tests
## Testing
```bash
# Quick basic test
python tests/test_simple.py
# Comprehensive test suite
python tests/test_radia.py
# Advanced features test
python tests/test_advanced.py
# NGSolve integration test
python tests/test_rad_ngsolve.py
# OpenMP performance test
python tests/test_parallel_performance.py
# Or use pytest to run all tests
pytest tests/
# Run specific test suite
pytest tests/test_rad_ngsolve.py -v
```
See [tests/README.md](tests/README.md) for detailed testing documentation.
## Visualization
### PyVista Viewer (Recommended)
```python
import sys
sys.path.insert(0, 'S:/radia/01_GitHub/src/python')
from radia_pyvista_viewer import view_radia_object
# View Radia object
view_radia_object(mag)
```
### VTK Export
```python
import sys
sys.path.insert(0, 'S:/radia/01_GitHub/src/python')
from radia_vtk_export import export_geometry_to_vtk
# Export to VTK file for Paraview
export_geometry_to_vtk(mag, 'geometry.vtk')
```
## System Requirements
### Build Requirements
- Visual Studio 2022 (MSVC 19.44 or later)
- CMake 3.15 or later
- Python 3.12
- OpenMP 2.0
### Runtime Requirements
- Python 3.12
- NumPy
- NGSolve (optional, for FEM coupling via rad_ngsolve)
- PyVista (optional, for 3D visualization)
## Changes from Original Radia
### Removed Components
- Igor Pro integration
- Mathematica/Wolfram Language integration
- GLUT OpenGL viewer
- MPI support
- C client
- Python 2.7, 3.6, 3.7, 3.8 support
### Added Features
- OpenMP parallelization (2.7x speedup)
- NGSolve C++ CoefficientFunction integration
- PyVista viewer support
- Modern CMake build system
- Comprehensive test suite (including NGSolve tests)
- Performance benchmarks
- Updated documentation
## License
This project is licensed under **LGPL-2.1** (to match NGSolve licensing).
The original RADIA code is licensed under a **BSD-style license** by the European Synchrotron Radiation Facility (ESRF), Copyright © 1997-2018.
Both licenses are included in the `LICENSE` file. The BSD-style license is compatible with and subsumed by the LGPL-2.1 license used for this derivative work.
See:
- `LICENSE` - Complete license text (LGPL-2.1 + Original RADIA BSD-style)
- `COPYRIGHT.txt` - Original RADIA copyright notice
## Credits
**Original Radia**: Pascal Elleaume, Oleg Chubar, and others at ESRF
**This Fork**:
- OpenMP parallelization
- NGSolve C++ integration (rad_ngsolve)
- Python 3.12 optimization
- Build system modernization
- PyVista integration
- Documentation updates
## Related Tools
### Coreform Cubit Mesh Export
[**Coreform_Cubit_Mesh_Export**](https://github.com/ksugahar/Coreform_Cubit_Mesh_Export) - Python library for exporting Coreform Cubit meshes to multiple formats
This tool perfectly complements Radia_NGSolve by providing high-quality mesh generation:
- **Nastran Format Export** - Compatible with Radia's `nastran_reader.py` module
- **Multiple Format Support** - Gmsh, MEG, VTK, and Nastran exports
- **2D/3D Meshing** - Supports complex 3D geometries
- **Second-Order Elements** - High-accuracy mesh generation
**Workflow Example:**
1. Create complex geometry in Coreform Cubit
2. Export to Nastran format using `Coreform_Cubit_Mesh_Export`
3. Import into Radia using `nastran_reader.py`
4. Couple with NGSolve for FEM analysis
See [examples/NGSolve_CoefficientFunction_to_Radia_BackgroundField/](examples/NGSolve_CoefficientFunction_to_Radia_BackgroundField/) for Nastran mesh usage examples.
## Links
- Original Radia: https://github.com/ochubar/Radia
- ESRF Radia Page: https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia
- Coreform Cubit: https://coreform.com/products/coreform-cubit/
---
**Version**: 1.0 (OpenMP + NGSolve Edition)
**Last Updated**: 2025-11-02
Raw data
{
"_id": null,
"home_page": "https://github.com/ksugahar/Radia_NGSolve",
"name": "radia-ngsolve",
"maintainer": "Radia Development Team",
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "magnetostatics, magnetic field, radia, ngsolve, fem, synchrotron",
"author": "Pascal Elleaume",
"author_email": "Oleg Chubar <chubar@bnl.gov>",
"download_url": "https://files.pythonhosted.org/packages/00/60/2a1118deaa7ed538b9f17882de2a5d3ab8c07f31949c85c3522e28f8fe6d/radia_ngsolve-1.0.6.tar.gz",
"platform": null,
"description": "# Radia - Python Edition with OpenMP\r\n\r\n3D Magnetostatics Computer Code - Optimized for Python 3.12 with OpenMP Parallelization\r\n\r\n## Overview\r\n\r\nThis is a modernized version of [Radia](https://github.com/ochubar/Radia) focusing on Python integration with performance optimizations:\r\n\r\n- **Python 3.12 only** - Streamlined for modern Python\r\n- **OpenMP 2.0 parallelization** - 2.7x speedup on 8-core systems\r\n- **NGSolve integration** - C++ CoefficientFunction for FEM coupling\r\n- **CMake build system** - Modern, cross-platform build\r\n- **Tab indentation** - Consistent code style throughout\r\n- **PyVista viewer** - Modern 3D visualization alternative\r\n\r\n**For Radia usage and API documentation**, please refer to the [original Radia repository](https://github.com/ochubar/Radia) and [ESRF Radia documentation](https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia).\r\n\r\nThis repository adds NGSolve integration and performance improvements while maintaining full compatibility with the original Radia API.\r\n\r\n## Key Features\r\n\r\n- \u2713 OpenMP parallel field computation\r\n- \u2713 NGSolve C++ CoefficientFunction integration\r\n- \u2713 VTK export functionality (`rad.ObjDrwVTK`)\r\n- \u2713 PyVista-based 3D viewer (replaces OpenGL viewer)\r\n- \u2713 All hexahedron tests passing\r\n- \u2713 Comprehensive test suite and benchmarks\r\n- \u2713 Removed legacy components (Igor, Mathematica, GLUT, MPI)\r\n\r\n## Quick Start\r\n\r\n### Installation from PyPI\r\n\r\n```bash\r\npip install radia-ngsolve\r\n```\r\n\r\n**Note**: The PyPI package includes pre-built binaries for Windows Python 3.12.\r\n\r\n### Build from Source\r\n\r\n```bash\r\n# Windows (PowerShell)\r\n\r\n# 1. Build radia.pyd (core module)\r\n.\\Build.ps1\r\n\r\n# 2. Build rad_ngsolve.pyd (optional, for NGSolve integration)\r\n.\\Build_NGSolve.ps1\r\n\r\n# Outputs:\r\n# - dist/radia.pyd\r\n# - build/Release/rad_ngsolve.pyd\r\n```\r\n\r\nSee [README_BUILD.md](README_BUILD.md) for detailed build instructions.\r\n\r\n### Basic Usage\r\n\r\n```python\r\nimport radia as rad\r\n\r\n# Create a rectangular magnet\r\nmag = rad.ObjRecMag([0,0,0], [10,10,10], [0,0,1])\r\n\r\n# Calculate field\r\nfield = rad.Fld(mag, 'b', [0,0,20])\r\nprint(f\"Field: {field} T\")\r\n```\r\n\r\n**Note:** This example uses the standard Radia API. For complete Radia API documentation and examples, see:\r\n- [Original Radia repository](https://github.com/ochubar/Radia)\r\n- [ESRF Radia Manual](https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia)\r\n\r\n### NGSolve Integration\r\n\r\nThe `rad_ngsolve` module provides a C++ CoefficientFunction interface for using Radia magnetic fields in NGSolve FEM analysis.\r\n\r\n**Function Specification:**\r\n\r\n```python\r\nrad_ngsolve.RadiaField(radia_obj, field_type='b')\r\n```\r\n\r\n**Parameters:**\r\n- `radia_obj` (int): Radia object handle returned by `rad.ObjRecMag()`, `rad.ObjThckPgn()`, etc.\r\n- `field_type` (str, optional): Field type to compute. Default: `'b'`\r\n - `'b'`: Magnetic flux density [Tesla]\r\n - `'h'`: Magnetic field [A/m]\r\n - `'a'`: Vector potential [T\u00b7m]\r\n - `'m'`: Magnetization [A/m]\r\n\r\n**Returns:**\r\n- NGSolve CoefficientFunction (3D vector field)\r\n\r\n**Unit Conversion:**\r\n- NGSolve uses **meters**, Radia uses **millimeters**\r\n- Automatic conversion: coordinates are multiplied by 1000 (m \u2192 mm)\r\n- Field values remain in SI units (no conversion needed)\r\n\r\n**Example:**\r\n\r\n```python\r\n# IMPORTANT: Import ngsolve first\r\nimport ngsolve\r\nfrom ngsolve import Mesh, H1, GridFunction\r\n\r\nimport radia as rad\r\nimport rad_ngsolve\r\n\r\n# Create Radia magnet\r\nmagnet = rad.ObjRecMag([0,0,0], [20,20,20], [0,0,1.2]) # mm units\r\nrad.MatApl(magnet, rad.MatStd('NdFeB', 1.2))\r\nrad.Solve(magnet, 0.0001, 10000)\r\n\r\n# Create NGSolve CoefficientFunction for different field types\r\nB_field = rad_ngsolve.RadiaField(magnet, 'b') # Flux density [T]\r\nH_field = rad_ngsolve.RadiaField(magnet, 'h') # Magnetic field [A/m]\r\nA_field = rad_ngsolve.RadiaField(magnet, 'a') # Vector potential [T\u00b7m]\r\nM_field = rad_ngsolve.RadiaField(magnet, 'm') # Magnetization [A/m]\r\n\r\n# Use in FEM analysis (NGSolve mesh in meters)\r\ngf = GridFunction(fes)\r\ngf.Set(B_field) # Automatically converts mesh coordinates m \u2192 mm\r\n```\r\n\r\nSee [examples/Radia_to_NGSolve_CoefficientFunction/](examples/Radia_to_NGSolve_CoefficientFunction/) for complete examples.\r\n\r\n## Documentation\r\n\r\n### Core\r\n- [README_BUILD.md](README_BUILD.md) - Build instructions\r\n- [docs/OPENMP_PERFORMANCE_REPORT.md](docs/OPENMP_PERFORMANCE_REPORT.md) - OpenMP benchmarks\r\n- [docs/DIRECTORY_STRUCTURE.md](docs/DIRECTORY_STRUCTURE.md) - Project structure\r\n\r\n### NGSolve Integration\r\n- [RAD_NGSOLVE_BUILD_SUCCESS.md](RAD_NGSOLVE_BUILD_SUCCESS.md) - Complete rad_ngsolve documentation\r\n- [examples/Radia_to_NGSolve_CoefficientFunction/README.md](examples/Radia_to_NGSolve_CoefficientFunction/README.md) - NGSolve examples overview\r\n- [examples/Radia_to_NGSolve_CoefficientFunction/EXAMPLES_GUIDE.md](examples/Radia_to_NGSolve_CoefficientFunction/EXAMPLES_GUIDE.md) - Detailed usage guide\r\n- [tests/test_rad_ngsolve.py](tests/test_rad_ngsolve.py) - Integration tests\r\n\r\n### Visualization\r\n- [docs/PYVISTA_VIEWER.md](examples/2024_02_03_\u632f\u5206\u96fb\u78c1\u77f3/PYVISTA_VIEWER.md) - PyVista viewer guide\r\n\r\n### Development\r\n- [docs/TAB_CONVERSION_REPORT.md](docs/TAB_CONVERSION_REPORT.md) - Code style conversion\r\n- [docs/CLAUDE.md](docs/CLAUDE.md) - Development notes\r\n\r\n## Performance\r\n\r\nOpenMP parallelization results (8-core system):\r\n\r\n| Threads | Time (sec) | Speedup |\r\n|---------|-----------|---------|\r\n| 1 | 11.67 | 1.00x |\r\n| 2 | 6.18 | 1.89x |\r\n| 4 | 3.57 | 3.27x |\r\n| 8 | 4.33 | 2.70x |\r\n\r\nSee [docs/OPENMP_PERFORMANCE_REPORT.md](docs/OPENMP_PERFORMANCE_REPORT.md) for details.\r\n\r\n## Examples\r\n\r\nPractical examples are available in the `examples/` directory:\r\n\r\n\r\n### NGSolve Integration\r\n- `examples/Radia_to_NGSolve_CoefficientFunction/` - **Radia \u2192 NGSolve: Use Radia fields in FEM**\r\n - `demo_field_types.py` - All field types demonstration\r\n - `visualize_field.py` - Field visualization and comparison\r\n - `export_radia_geometry.py` - Export geometry to VTK\r\n\r\n- `examples/NGSolve_CoefficientFunction_to_Radia_BackgroundField/` - **NGSolve \u2192 Radia: Background fields**\r\n - `test_sphere_in_quadrupole.py` - Magnetizable sphere in quadrupole field\r\n - Uses Python callbacks to define arbitrary background fields\r\n\r\n### Magnetostatics\r\n- `examples/simple_problems/` - Basic magnet configurations\r\n- `examples/electromagnet/` - Electromagnet designs\r\n- `examples/complex_coil_geometry/` - Advanced coil geometries\r\n\r\n### Legacy Examples\r\n- `examples/2024_02_03_\u632f\u5206\u96fb\u78c1\u77f3/` - Septum magnet simulation\r\n- `examples/2024_03_02_Rdaia\u306e6\u9762\u968a\u304c\u52d5\u4f5c\u3057\u306a\u3044\u8abf\u67fb(\u8981\u7d20)/` - Hexahedron tests\r\n\r\n## Testing\r\n\r\n```bash\r\n# Quick basic test\r\npython tests/test_simple.py\r\n\r\n# Comprehensive test suite\r\npython tests/test_radia.py\r\n\r\n# Advanced features test\r\npython tests/test_advanced.py\r\n\r\n# NGSolve integration test\r\npython tests/test_rad_ngsolve.py\r\n\r\n# OpenMP performance test\r\npython tests/test_parallel_performance.py\r\n\r\n# Or use pytest to run all tests\r\npytest tests/\r\n\r\n# Run specific test suite\r\npytest tests/test_rad_ngsolve.py -v\r\n```\r\n\r\nSee [tests/README.md](tests/README.md) for detailed testing documentation.\r\n\r\n## Visualization\r\n\r\n### PyVista Viewer (Recommended)\r\n\r\n```python\r\nimport sys\r\nsys.path.insert(0, 'S:/radia/01_GitHub/src/python')\r\n\r\nfrom radia_pyvista_viewer import view_radia_object\r\n\r\n# View Radia object\r\nview_radia_object(mag)\r\n```\r\n\r\n### VTK Export\r\n\r\n```python\r\nimport sys\r\nsys.path.insert(0, 'S:/radia/01_GitHub/src/python')\r\n\r\nfrom radia_vtk_export import export_geometry_to_vtk\r\n\r\n# Export to VTK file for Paraview\r\nexport_geometry_to_vtk(mag, 'geometry.vtk')\r\n```\r\n\r\n## System Requirements\r\n\r\n### Build Requirements\r\n- Visual Studio 2022 (MSVC 19.44 or later)\r\n- CMake 3.15 or later\r\n- Python 3.12\r\n- OpenMP 2.0\r\n\r\n### Runtime Requirements\r\n- Python 3.12\r\n- NumPy\r\n- NGSolve (optional, for FEM coupling via rad_ngsolve)\r\n- PyVista (optional, for 3D visualization)\r\n\r\n## Changes from Original Radia\r\n\r\n### Removed Components\r\n- Igor Pro integration\r\n- Mathematica/Wolfram Language integration\r\n- GLUT OpenGL viewer\r\n- MPI support\r\n- C client\r\n- Python 2.7, 3.6, 3.7, 3.8 support\r\n\r\n### Added Features\r\n- OpenMP parallelization (2.7x speedup)\r\n- NGSolve C++ CoefficientFunction integration\r\n- PyVista viewer support\r\n- Modern CMake build system\r\n- Comprehensive test suite (including NGSolve tests)\r\n- Performance benchmarks\r\n- Updated documentation\r\n\r\n## License\r\n\r\nThis project is licensed under **LGPL-2.1** (to match NGSolve licensing).\r\n\r\nThe original RADIA code is licensed under a **BSD-style license** by the European Synchrotron Radiation Facility (ESRF), Copyright \u00a9 1997-2018.\r\n\r\nBoth licenses are included in the `LICENSE` file. The BSD-style license is compatible with and subsumed by the LGPL-2.1 license used for this derivative work.\r\n\r\nSee:\r\n- `LICENSE` - Complete license text (LGPL-2.1 + Original RADIA BSD-style)\r\n- `COPYRIGHT.txt` - Original RADIA copyright notice\r\n\r\n## Credits\r\n\r\n**Original Radia**: Pascal Elleaume, Oleg Chubar, and others at ESRF\r\n\r\n**This Fork**:\r\n- OpenMP parallelization\r\n- NGSolve C++ integration (rad_ngsolve)\r\n- Python 3.12 optimization\r\n- Build system modernization\r\n- PyVista integration\r\n- Documentation updates\r\n\r\n## Related Tools\r\n\r\n### Coreform Cubit Mesh Export\r\n[**Coreform_Cubit_Mesh_Export**](https://github.com/ksugahar/Coreform_Cubit_Mesh_Export) - Python library for exporting Coreform Cubit meshes to multiple formats\r\n\r\nThis tool perfectly complements Radia_NGSolve by providing high-quality mesh generation:\r\n\r\n- **Nastran Format Export** - Compatible with Radia's `nastran_reader.py` module\r\n- **Multiple Format Support** - Gmsh, MEG, VTK, and Nastran exports\r\n- **2D/3D Meshing** - Supports complex 3D geometries\r\n- **Second-Order Elements** - High-accuracy mesh generation\r\n\r\n**Workflow Example:**\r\n1. Create complex geometry in Coreform Cubit\r\n2. Export to Nastran format using `Coreform_Cubit_Mesh_Export`\r\n3. Import into Radia using `nastran_reader.py`\r\n4. Couple with NGSolve for FEM analysis\r\n\r\nSee [examples/NGSolve_CoefficientFunction_to_Radia_BackgroundField/](examples/NGSolve_CoefficientFunction_to_Radia_BackgroundField/) for Nastran mesh usage examples.\r\n\r\n## Links\r\n\r\n- Original Radia: https://github.com/ochubar/Radia\r\n- ESRF Radia Page: https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia\r\n- Coreform Cubit: https://coreform.com/products/coreform-cubit/\r\n\r\n---\r\n\r\n**Version**: 1.0 (OpenMP + NGSolve Edition)\r\n**Last Updated**: 2025-11-02\r\n",
"bugtrack_url": null,
"license": "LGPL-2.1",
"summary": "Radia 3D Magnetostatics with NGSolve Integration and OpenMP Parallelization",
"version": "1.0.6",
"project_urls": {
"Documentation": "https://github.com/ksugahar/Radia_NGSolve/blob/master/README.md",
"ESRF Radia Page": "https://www.esrf.fr/Accelerators/Groups/InsertionDevices/Software/Radia",
"Homepage": "https://github.com/ksugahar/Radia_NGSolve",
"Issues": "https://github.com/ksugahar/Radia_NGSolve/issues",
"Original Radia": "https://github.com/ochubar/Radia",
"Repository": "https://github.com/ksugahar/Radia_NGSolve"
},
"split_keywords": [
"magnetostatics",
" magnetic field",
" radia",
" ngsolve",
" fem",
" synchrotron"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "789b52bf8cd59ed7a064ac12128ddd9b995979df0f7b0be8538139693a67874c",
"md5": "83ee6a8220792ccd2a65af3dd7bea0e2",
"sha256": "7345d77cd1efa8d0cdb9ef51496459dd41446876c4dea61728b896de44d38718"
},
"downloads": -1,
"filename": "radia_ngsolve-1.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "83ee6a8220792ccd2a65af3dd7bea0e2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 16015,
"upload_time": "2025-11-06T23:31:29",
"upload_time_iso_8601": "2025-11-06T23:31:29.350321Z",
"url": "https://files.pythonhosted.org/packages/78/9b/52bf8cd59ed7a064ac12128ddd9b995979df0f7b0be8538139693a67874c/radia_ngsolve-1.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "00602a1118deaa7ed538b9f17882de2a5d3ab8c07f31949c85c3522e28f8fe6d",
"md5": "2fd78ef4451b6cab4199573eb48d2b45",
"sha256": "712b819f95504e4e88dcca690c334090de9a0c57bb22f039d52442f4ad306a91"
},
"downloads": -1,
"filename": "radia_ngsolve-1.0.6.tar.gz",
"has_sig": false,
"md5_digest": "2fd78ef4451b6cab4199573eb48d2b45",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 2710694,
"upload_time": "2025-11-06T23:31:31",
"upload_time_iso_8601": "2025-11-06T23:31:31.905766Z",
"url": "https://files.pythonhosted.org/packages/00/60/2a1118deaa7ed538b9f17882de2a5d3ab8c07f31949c85c3522e28f8fe6d/radia_ngsolve-1.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-06 23:31:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ksugahar",
"github_project": "Radia_NGSolve",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "radia-ngsolve"
}