wavesimpro 1.6.2__tar.gz → 1.9.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.
Files changed (23) hide show
  1. wavesimpro-1.9.0/PKG-INFO +69 -0
  2. wavesimpro-1.9.0/README.md +46 -0
  3. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/pyproject.toml +1 -1
  4. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/__init__.py +3 -1
  5. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/binary_utils.py +630 -630
  6. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/client.py +48 -33
  7. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/execute.py +848 -823
  8. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/json_helper.py +127 -6
  9. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/setup.py +4 -4
  10. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/simulate.py +11 -7
  11. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/validate.py +46 -21
  12. wavesimpro-1.9.0/src/wavesimpro.egg-info/PKG-INFO +69 -0
  13. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro.egg-info/SOURCES.txt +1 -0
  14. wavesimpro-1.6.2/PKG-INFO +0 -22
  15. wavesimpro-1.6.2/src/wavesimpro.egg-info/PKG-INFO +0 -22
  16. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/setup.cfg +0 -0
  17. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/__main__.py +0 -0
  18. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/config.py +0 -0
  19. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/exceptions.py +0 -0
  20. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro/py.typed +0 -0
  21. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro.egg-info/dependency_links.txt +0 -0
  22. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro.egg-info/requires.txt +0 -0
  23. {wavesimpro-1.6.2 → wavesimpro-1.9.0}/src/wavesimpro.egg-info/top_level.txt +0 -0
@@ -0,0 +1,69 @@
1
+ Metadata-Version: 2.4
2
+ Name: wavesimpro
3
+ Version: 1.9.0
4
+ Summary: WavesimPro Python API — cloud execution client for the Rayfos simulation platform
5
+ Author: Rayfos
6
+ Project-URL: Repository, https://github.com/rayfos/wavesimpro
7
+ Keywords: wavesim,simulation,electromagnetic,rayfos,api
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Topic :: Scientific/Engineering
13
+ Requires-Python: >=3.8
14
+ Description-Content-Type: text/markdown
15
+ Requires-Dist: numpy>=1.20.0
16
+ Requires-Dist: requests>=2.28.0
17
+ Requires-Dist: python-dotenv>=1.0.0
18
+ Requires-Dist: tqdm>=4.60.0
19
+ Provides-Extra: dev
20
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
21
+ Requires-Dist: black>=23.0.0; extra == "dev"
22
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
23
+
24
+ # wavesimpro
25
+
26
+ Python client for the Rayfos Wavesim cloud: build a simulation setup, run it on a Rayfos
27
+ compute node, and read the results back as NumPy arrays.
28
+
29
+ Wavesim is a single-wavelength frequency-domain solver (vectorial Maxwell when a polarized
30
+ source is present, scalar Helmholtz otherwise). This package talks to the Rayfos JobServer
31
+ REST API; it does not contain the solver.
32
+
33
+ ## Install
34
+
35
+ ```bash
36
+ pip install wavesimpro
37
+ python -m wavesimpro setup # one-time: API key + server URL wizard
38
+ ```
39
+
40
+ The wizard stores the credentials; `wavesimpro.configure(api_key=..., api_url=...)` sets
41
+ them for one process instead.
42
+
43
+ ## Quick start
44
+
45
+ ```python
46
+ import wavesimpro as wp
47
+
48
+ props = wp.create_wavesim_properties(
49
+ wavelength=1.0, pixel_size=0.1, boundary_width=5.0,
50
+ domain=wp.create_simulation_domain(20, 20, 20),
51
+ mediums=[wp.create_medium("Silicon", 3.48, 0.0)],
52
+ primitives=[wp.create_box_primitive("core", 0, 0, 0, 10, 0.5, 20, medium="Silicon")],
53
+ sources=[wp.create_mode_source("in", 0, 0, -8.0, polarization="X")],
54
+ monitors=[wp.create_monitor("out", 0, 0, 8.0, 10, 10, 0)],
55
+ )
56
+ run = wp.simulate(props, name="strip waveguide")
57
+ field = wp.read_binary_field(run.download("output.bin"))
58
+ ```
59
+
60
+ ## What the API covers
61
+
62
+ - Setup helpers for domains, media, primitives (box, STL, voxel arrays), sources
63
+ (point, plane wave, Gaussian beam, custom field, engine-solved waveguide mode) and monitors.
64
+ - Per-axis pixel sizes (`pixel_size=[dx, dy, dz]`) and sub-pixel permittivity averaging
65
+ (`subpixel_factor=`), when the compute node supports them.
66
+ - Preflight memory check and cost estimate before a run.
67
+ - Binary upload/download helpers for permittivity volumes, source fields and monitors.
68
+
69
+ See `CHANGELOG.md` for what each version added. Issues and feature requests: support@rayfos.com.
@@ -0,0 +1,46 @@
1
+ # wavesimpro
2
+
3
+ Python client for the Rayfos Wavesim cloud: build a simulation setup, run it on a Rayfos
4
+ compute node, and read the results back as NumPy arrays.
5
+
6
+ Wavesim is a single-wavelength frequency-domain solver (vectorial Maxwell when a polarized
7
+ source is present, scalar Helmholtz otherwise). This package talks to the Rayfos JobServer
8
+ REST API; it does not contain the solver.
9
+
10
+ ## Install
11
+
12
+ ```bash
13
+ pip install wavesimpro
14
+ python -m wavesimpro setup # one-time: API key + server URL wizard
15
+ ```
16
+
17
+ The wizard stores the credentials; `wavesimpro.configure(api_key=..., api_url=...)` sets
18
+ them for one process instead.
19
+
20
+ ## Quick start
21
+
22
+ ```python
23
+ import wavesimpro as wp
24
+
25
+ props = wp.create_wavesim_properties(
26
+ wavelength=1.0, pixel_size=0.1, boundary_width=5.0,
27
+ domain=wp.create_simulation_domain(20, 20, 20),
28
+ mediums=[wp.create_medium("Silicon", 3.48, 0.0)],
29
+ primitives=[wp.create_box_primitive("core", 0, 0, 0, 10, 0.5, 20, medium="Silicon")],
30
+ sources=[wp.create_mode_source("in", 0, 0, -8.0, polarization="X")],
31
+ monitors=[wp.create_monitor("out", 0, 0, 8.0, 10, 10, 0)],
32
+ )
33
+ run = wp.simulate(props, name="strip waveguide")
34
+ field = wp.read_binary_field(run.download("output.bin"))
35
+ ```
36
+
37
+ ## What the API covers
38
+
39
+ - Setup helpers for domains, media, primitives (box, STL, voxel arrays), sources
40
+ (point, plane wave, Gaussian beam, custom field, engine-solved waveguide mode) and monitors.
41
+ - Per-axis pixel sizes (`pixel_size=[dx, dy, dz]`) and sub-pixel permittivity averaging
42
+ (`subpixel_factor=`), when the compute node supports them.
43
+ - Preflight memory check and cost estimate before a run.
44
+ - Binary upload/download helpers for permittivity volumes, source fields and monitors.
45
+
46
+ See `CHANGELOG.md` for what each version added. Issues and feature requests: support@rayfos.com.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "wavesimpro"
7
- version = "1.6.2"
7
+ version = "1.9.0"
8
8
  description = "WavesimPro Python API — cloud execution client for the Rayfos simulation platform"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -37,6 +37,7 @@ from .json_helper import (
37
37
  create_point_source,
38
38
  create_plane_wave_source,
39
39
  create_gaussian_beam_source,
40
+ create_mode_source,
40
41
  create_voxels_model_primitive,
41
42
  create_custom_field_source,
42
43
  create_custom_from_file_source,
@@ -45,7 +46,7 @@ from .json_helper import (
45
46
  parse_progress_data,
46
47
  )
47
48
 
48
- __version__ = "1.6.2"
49
+ __version__ = "1.9.0"
49
50
  __all__ = [
50
51
  # Client
51
52
  "RayfosClient",
@@ -81,6 +82,7 @@ __all__ = [
81
82
  "create_point_source",
82
83
  "create_plane_wave_source",
83
84
  "create_gaussian_beam_source",
85
+ "create_mode_source",
84
86
  "create_voxels_model_primitive",
85
87
  "create_custom_field_source",
86
88
  "create_custom_from_file_source",