flexcompute-core 0.0.1.dev2__py3-none-any.whl → 0.0.1.dev3__py3-none-any.whl
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.
- flexcompute/core/_migration/em/apodization/__init__.py +1 -0
- flexcompute/core/_migration/em/apodization/schema.py +88 -0
- flexcompute/core/_migration/em/apodization/validation.py +54 -0
- flexcompute/core/_migration/em/boundary/__init__.py +1 -0
- flexcompute/core/_migration/em/boundary/placement/__init__.py +1 -0
- flexcompute/core/_migration/em/boundary/placement/schema.py +101 -0
- flexcompute/core/_migration/em/boundary/placement/validation.py +42 -0
- flexcompute/core/_migration/em/boundary/schema.py +1592 -0
- flexcompute/core/_migration/em/boundary/validation.py +232 -0
- flexcompute/core/_migration/em/conversion/__init__.py +1 -0
- flexcompute/core/_migration/em/conversion/base.py +38 -0
- flexcompute/core/_migration/em/data/__init__.py +1 -0
- flexcompute/core/_migration/em/data/validation.py +158 -0
- flexcompute/core/_migration/em/derivatives/__init__.py +89 -0
- flexcompute/core/_migration/em/derivatives/base.py +259 -0
- flexcompute/core/_migration/em/derivatives/execute.py +257 -0
- flexcompute/core/_migration/em/derivatives/hdf5.py +106 -0
- flexcompute/core/_migration/em/derivatives/kernels.py +653 -0
- flexcompute/core/_migration/em/derivatives/program.py +149 -0
- flexcompute/core/_migration/em/derivatives/reductions.py +246 -0
- flexcompute/core/_migration/em/eme/__init__.py +1 -0
- flexcompute/core/_migration/em/eme/runtime.py +151 -0
- flexcompute/core/_migration/em/eme/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/eme/schema/grid.py +813 -0
- flexcompute/core/_migration/em/eme/schema/sweep.py +166 -0
- flexcompute/core/_migration/em/eme/schema/validation_schema.py +39 -0
- flexcompute/core/_migration/em/eme/validation.py +282 -0
- flexcompute/core/_migration/em/frequency_extrapolation/__init__.py +1 -0
- flexcompute/core/_migration/em/frequency_extrapolation/schema.py +76 -0
- flexcompute/core/_migration/em/frequency_extrapolation/validation.py +78 -0
- flexcompute/core/_migration/em/geometry/__init__.py +1 -0
- flexcompute/core/_migration/em/geometry/translate.py +154 -0
- flexcompute/core/_migration/em/geometry/validation.py +19 -0
- flexcompute/core/_migration/em/grid/__init__.py +1 -0
- flexcompute/core/_migration/em/grid/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/__init__.py +1 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/constants.py +42 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/__init__.py +1 -0
- flexcompute/core/_migration/em/{schema/tidy3d/components/grid → grid/schema}/grid_spec/refinement/construction.py +2 -3
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/grid_refinement.py +142 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/model.py +229 -0
- flexcompute/core/_migration/em/{schema/tidy3d/components/grid → grid/schema}/grid_spec/refinement/properties.py +2 -3
- flexcompute/core/_migration/em/grid/schema/validation_schema.py +9 -0
- flexcompute/core/_migration/em/grid/validation.py +78 -0
- flexcompute/core/_migration/em/invdes/__init__.py +1 -0
- flexcompute/core/_migration/em/invdes/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/invdes/schema/design.py +190 -0
- flexcompute/core/_migration/em/invdes/schema/initialization.py +103 -0
- flexcompute/core/_migration/em/invdes/schema/penalty.py +116 -0
- flexcompute/core/_migration/em/invdes/schema/region.py +331 -0
- flexcompute/core/_migration/em/invdes/schema/transformation.py +121 -0
- flexcompute/core/_migration/em/invdes/validation.py +273 -0
- flexcompute/core/_migration/em/lumped_element/__init__.py +1 -0
- flexcompute/core/_migration/em/lumped_element/schema.py +2186 -0
- flexcompute/core/_migration/em/lumped_element/validation.py +203 -0
- flexcompute/core/_migration/em/material/__init__.py +1 -0
- flexcompute/core/_migration/em/material/dispersion_fitter/__init__.py +1 -0
- flexcompute/core/_migration/em/material/dispersion_fitter/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/material/dispersion_fitter/schema/dispersion_fitter.py +1017 -0
- flexcompute/core/_migration/em/material/dispersion_fitter/validation.py +50 -0
- flexcompute/core/_migration/em/material/medium/__init__.py +1 -0
- flexcompute/core/_migration/em/material/medium/comparison.py +16 -0
- flexcompute/core/_migration/em/material/medium/limits.py +20 -0
- flexcompute/core/_migration/em/material/medium/schema/__init__.py +32 -0
- flexcompute/core/_migration/em/material/medium/schema/_rebuild.py +60 -0
- flexcompute/core/_migration/em/material/medium/schema/abstract_custom.py +343 -0
- flexcompute/core/_migration/em/material/medium/schema/anisotropic.py +496 -0
- flexcompute/core/_migration/em/material/medium/schema/base.py +775 -0
- flexcompute/core/_migration/em/material/medium/schema/custom/__init__.py +1 -0
- flexcompute/core/_migration/em/material/medium/schema/custom/anisotropic.py +250 -0
- flexcompute/core/_migration/em/material/medium/schema/custom/dispersive.py +863 -0
- flexcompute/core/_migration/em/material/medium/schema/custom/isotropic.py +709 -0
- flexcompute/core/_migration/em/material/medium/schema/debye.py +120 -0
- flexcompute/core/_migration/em/material/medium/schema/drude.py +116 -0
- flexcompute/core/_migration/em/material/medium/schema/isotropic.py +272 -0
- flexcompute/core/_migration/em/material/medium/schema/lorentz.py +193 -0
- flexcompute/core/_migration/em/material/medium/schema/lossy_metal.py +265 -0
- flexcompute/core/_migration/em/material/medium/schema/medium_types.py +91 -0
- flexcompute/core/_migration/em/material/medium/schema/perturbation.py +304 -0
- flexcompute/core/_migration/em/material/medium/schema/pole_residue.py +603 -0
- flexcompute/core/_migration/em/material/medium/schema/roughness.py +260 -0
- flexcompute/core/_migration/em/material/medium/schema/sellmeier.py +154 -0
- flexcompute/core/_migration/em/material/medium/schema/two_d.py +473 -0
- flexcompute/core/_migration/em/material/medium/validation.py +1449 -0
- flexcompute/core/_migration/em/material/medium/validation_schema.py +58 -0
- flexcompute/core/_migration/em/material/nonlinear/__init__.py +1 -0
- flexcompute/core/_migration/em/material/nonlinear/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/material/nonlinear/schema/nonlinear.py +312 -0
- flexcompute/core/_migration/em/material/nonlinear/validation.py +101 -0
- flexcompute/core/_migration/em/material/parameter_perturbation/__init__.py +1 -0
- flexcompute/core/_migration/em/material/parameter_perturbation/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/material/parameter_perturbation/schema/parameter_perturbation.py +1684 -0
- flexcompute/core/_migration/em/material/parameter_perturbation/validation.py +114 -0
- flexcompute/core/_migration/em/material/time_modulation/__init__.py +1 -0
- flexcompute/core/_migration/em/material/time_modulation/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/material/time_modulation/schema/time_modulation.py +306 -0
- flexcompute/core/_migration/em/material/time_modulation/validation.py +86 -0
- flexcompute/core/_migration/em/microwave/__init__.py +1 -0
- flexcompute/core/_migration/em/microwave/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/microwave/schema/impedance_calculator.py +192 -0
- flexcompute/core/_migration/em/{schema/tidy3d/components/microwave → microwave/schema}/path_integrals/factory.py +8 -8
- flexcompute/core/_migration/em/{schema/tidy3d/components/microwave → microwave/schema}/path_integrals/integrals/auto.py +3 -3
- flexcompute/core/_migration/em/microwave/schema/path_integrals/integrals/base.py +244 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/integrals/current.py +345 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/integrals/voltage.py +106 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/mode_plane_analyzer.py +447 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/specs/base.py +274 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/specs/current.py +435 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/specs/impedance.py +170 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/specs/voltage.py +236 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/types.py +18 -0
- flexcompute/core/_migration/em/microwave/validation.py +57 -0
- flexcompute/core/_migration/em/mode/__init__.py +1 -0
- flexcompute/core/_migration/em/mode/spec/__init__.py +1 -0
- flexcompute/core/_migration/em/mode/spec/constants.py +59 -0
- flexcompute/core/_migration/em/mode/spec/schema.py +484 -0
- flexcompute/core/_migration/em/mode/spec/validation.py +227 -0
- flexcompute/core/_migration/em/monitor/__init__.py +1 -0
- flexcompute/core/_migration/em/monitor/schema.py +2854 -0
- flexcompute/core/_migration/em/monitor/validation.py +497 -0
- flexcompute/core/_migration/em/numerical/raw/baseband_source_time.py +333 -0
- flexcompute/core/_migration/em/numerical/raw/collar.py +616 -0
- flexcompute/core/_migration/em/numerical/raw/diffraction.py +3 -1
- flexcompute/core/_migration/em/numerical/raw/doping.py +57 -0
- flexcompute/core/_migration/em/numerical/raw/grid.py +99 -6
- flexcompute/core/_migration/em/numerical/raw/medium.py +179 -0
- flexcompute/core/_migration/em/numerical/raw/microwave.py +472 -2
- flexcompute/core/_migration/em/numerical/raw/mode.py +17 -0
- flexcompute/core/_migration/em/numerical/raw/power_loss.py +152 -0
- flexcompute/core/_migration/em/numerical/raw/projections.py +143 -0
- flexcompute/core/_migration/em/numerical/raw/shape_derivative.py +132 -0
- flexcompute/core/_migration/em/numerical/raw/source_derivative.py +62 -0
- flexcompute/core/_migration/em/numerical/raw/source_time.py +18 -0
- flexcompute/core/_migration/em/numerical/raw/spatial.py +465 -0
- flexcompute/core/_migration/em/numerical/raw/symmetry.py +36 -0
- flexcompute/core/_migration/em/numerical/raw/thin_lens.py +20 -0
- flexcompute/core/_migration/em/numerical/schema/field_data.py +65 -0
- flexcompute/core/_migration/em/numerical/schema/solver_diagnostics.py +1 -1
- flexcompute/core/_migration/em/scene/__init__.py +1 -0
- flexcompute/core/_migration/em/scene/schema.py +2039 -0
- flexcompute/core/_migration/em/scene/validation.py +157 -0
- flexcompute/core/_migration/em/schema/preprocess/cache.py +7 -1
- flexcompute/core/_migration/em/schema/preprocess/custom_medium.py +27 -26
- flexcompute/core/_migration/em/schema/preprocess/mode.py +2 -2
- flexcompute/core/_migration/em/schema/preprocess/simulation.py +60 -64
- flexcompute/core/_migration/em/schema/preprocess/subgrid.py +3 -2
- flexcompute/core/_migration/em/schema/preprocess/subpixel.py +2 -2
- flexcompute/core/_migration/em/schema/preprocess/utils.py +168 -1
- flexcompute/core/_migration/em/schema/tidy3d/__init__.py +3 -1081
- flexcompute/core/_migration/em/schema/tidy3d/__main__.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/_optional_imports.py +215 -0
- flexcompute/core/_migration/em/schema/tidy3d/_testing/synthetic_monitor_data.py +227 -119
- flexcompute/core/_migration/em/schema/tidy3d/components/apodization.py +3 -105
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/boxes.py +9 -159
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/field_map.py +0 -39
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/flux_monitor.py +6 -9
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/functions.py +12 -286
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/path_utils.py +0 -138
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/sample_sets.py +186 -158
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/utils.py +10 -134
- flexcompute/core/_migration/em/schema/tidy3d/components/base.py +96 -70
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/data/monitor_data.py +2 -2
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/data/sim_data.py +18 -19
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/monitor.py +33 -16
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/simulation.py +29 -97
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/source.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/bc_placement.py +20 -120
- flexcompute/core/_migration/em/schema/tidy3d/components/beam.py +45 -28
- flexcompute/core/_migration/em/schema/tidy3d/components/bound_ops.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/boundary.py +79 -1774
- flexcompute/core/_migration/em/schema/tidy3d/components/{geometry/contour_conversion.py → contour_conversion.py} +7 -3
- flexcompute/core/_migration/em/schema/tidy3d/components/data/binary.py +156 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/data_array/__init__.py +114 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/dataset.py +274 -111
- flexcompute/core/_migration/em/schema/tidy3d/components/data/dataset_base.py +43 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/__init__.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/base.py +8 -16
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/__init__.py +18 -2
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/_em_algebra.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/_em_io.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/data.py +0 -273
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/diagnostic.py +506 -123
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/dipole.py +10 -22
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/point_cloud.py +19 -39
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/surface.py +138 -5
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/flux.py +0 -24
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/data.py +2 -70
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/overlap.py +0 -59
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/solver.py +19 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/base.py +21 -22
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/diffraction.py +0 -77
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/directivity.py +5 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/data/optical_generation.py +50 -24
- flexcompute/core/_migration/em/schema/tidy3d/components/data/plot_safe.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/registry.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/sim_data.py +346 -644
- flexcompute/core/_migration/em/schema/tidy3d/components/data/structure_loss.py +628 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/base.py +18 -36
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/triangular.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/data/utils.py +5 -26
- flexcompute/core/_migration/em/schema/tidy3d/components/dispersion_fitter.py +43 -1049
- flexcompute/core/_migration/em/schema/tidy3d/components/docstrings.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/dataset.py +63 -32
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/monitor_data.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/sim_data.py +73 -18
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/stage.py +75 -6
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/grid.py +27 -948
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/monitor.py +36 -21
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/simulation.py +3 -2496
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/sweep.py +19 -180
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/common.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/projector.py +48 -19
- flexcompute/core/_migration/em/schema/tidy3d/components/frequency_extrapolation.py +6 -84
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/__init__.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/__init__.py +10 -48
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/abstract_primitives.py +5 -34
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/array.py +9 -103
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/box.py +3 -460
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/clip_operation.py +1 -185
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/constants.py +7 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/core.py +28 -146
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/gds.py +8 -8
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/geometry_group.py +6 -154
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/operators.py +0 -27
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/plotting.py +6 -10
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/transformed.py +23 -25
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/transforms.py +4 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/utils.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/mesh.py +69 -846
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/polyslab.py +62 -1563
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/primitives.py +8 -516
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/utils.py +11 -495
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/corner_finder.py +8 -8
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid.py +3 -12
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/__init__.py +0 -135
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/constants.py +27 -48
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/grid_1d/auto.py +9 -5
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/grid_1d/manual.py +11 -18
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/refinement/model.py +6 -365
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/generation.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/localization_helpers.py +2 -6
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/model.py +4 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/mesher.py +11 -5
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/snapping.py +477 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/lumped_element.py +43 -2295
- flexcompute/core/_migration/em/schema/tidy3d/components/material/multi_physics.py +9 -27
- flexcompute/core/_migration/em/schema/tidy3d/components/material/solver_types.py +10 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tcad/charge.py +350 -37
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tcad/heat.py +43 -295
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tensor.py +82 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/__init__.py +38 -2
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/_rebuild.py +2 -50
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/abstract_custom.py +6 -458
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/anisotropic.py +10 -667
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/base.py +35 -988
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/anisotropic.py +8 -274
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/dispersive.py +17 -1502
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/isotropic.py +8 -1146
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/debye.py +6 -219
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/drude.py +6 -185
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/isotropic.py +17 -436
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/lorentz.py +6 -314
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/lossy_metal.py +8 -272
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/medium_types.py +19 -60
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/perturbation.py +17 -478
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/pole_residue.py +8 -824
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/protected.py +784 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/roughness.py +21 -258
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/sellmeier.py +6 -271
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/two_d.py +8 -465
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/data/dataset.py +6 -6
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/data/monitor_data.py +3 -3
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/impedance_calculator.py +10 -202
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/mode_spec.py +6 -6
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/base.py +15 -242
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/current.py +10 -332
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/voltage.py +8 -96
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/mode_plane_analyzer.py +6 -442
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/base.py +10 -271
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/current.py +10 -431
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/impedance.py +12 -186
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/voltage.py +8 -232
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/types.py +8 -15
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/source.py +34 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/time.py +304 -68
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/data/sim_data.py +208 -5
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/geometry.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/mode_solver.py +3 -3308
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/simulation.py +3 -721
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/solver.py +16 -9
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/validation.py +82 -48
- flexcompute/core/_migration/em/schema/tidy3d/components/mode_spec.py +81 -640
- flexcompute/core/_migration/em/schema/tidy3d/components/monitor.py +107 -3114
- flexcompute/core/_migration/em/schema/tidy3d/components/nonlinear.py +25 -422
- flexcompute/core/_migration/em/schema/tidy3d/components/parameter_perturbation.py +47 -1795
- flexcompute/core/_migration/em/schema/tidy3d/components/run_time_spec.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/scene.py +3 -2139
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/__init__.py +11 -11
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/adjoint.py +5 -215
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/constants.py +57 -30
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/model.py +3 -1330
- flexcompute/core/_migration/em/schema/tidy3d/components/source/base.py +6 -238
- flexcompute/core/_migration/em/schema/tidy3d/components/source/current.py +15 -422
- flexcompute/core/_migration/em/schema/tidy3d/components/source/field.py +47 -1650
- flexcompute/core/_migration/em/schema/tidy3d/components/source/frame.py +9 -23
- flexcompute/core/_migration/em/schema/tidy3d/components/source/freq_range.py +7 -228
- flexcompute/core/_migration/em/schema/tidy3d/components/source/time.py +29 -682
- flexcompute/core/_migration/em/schema/tidy3d/components/source/utils.py +8 -33
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/analysis/ac.py +5 -97
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/analysis/dc.py +13 -292
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/sources/ac.py +3 -59
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/sources/dc.py +32 -87
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/types.py +2 -2
- flexcompute/core/_migration/em/schema/tidy3d/components/structure.py +17 -1394
- flexcompute/core/_migration/em/schema/tidy3d/components/subpixel_spec.py +4 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/analysis/heat_simulation_type.py +6 -172
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/bandgap.py +34 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/charge.py +36 -7
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/heat.py +14 -69
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/abstract.py +2 -2
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/charge.py +142 -37
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/heat.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/sim_data.py +70 -30
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/types.py +2 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/doping.py +18 -429
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/doping_utils.py +6 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/generation_recombination.py +50 -480
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/grid.py +33 -679
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/ionization.py +21 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/mesher.py +3 -3
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/mobility.py +35 -504
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/abstract.py +4 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/charge.py +41 -11
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/heat.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/mesh.py +2 -30
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/simulation/heat.py +2 -54
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/simulation/heat_charge.py +39 -3774
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/source/abstract.py +10 -41
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/source/heat.py +2 -47
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/types.py +4 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/thin_lens.py +19 -149
- flexcompute/core/_migration/em/schema/tidy3d/components/time.py +2 -2
- flexcompute/core/_migration/em/schema/tidy3d/components/time_modulation.py +23 -328
- flexcompute/core/_migration/em/schema/tidy3d/components/transformation.py +23 -221
- flexcompute/core/_migration/em/schema/tidy3d/components/{geometry/utils_2d.py → two_d_materials.py} +8 -5
- flexcompute/core/_migration/em/schema/tidy3d/components/types/monitor.py +5 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/types/monitor_data.py +6 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/simulation.py +5 -5
- flexcompute/core/_migration/em/schema/tidy3d/components/types/third_party.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/types/time.py +2 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/validators.py +15 -121
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/__init__.py +1 -14
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/axes_utils.py +8 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/flex_style.py +14 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/plot_params.py +14 -14
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/plot_sim_3d.py +2 -1
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/visualization_spec.py +4 -4
- flexcompute/core/_migration/em/schema/tidy3d/components/workflow.py +10 -14
- flexcompute/core/_migration/em/schema/tidy3d/constants.py +26 -51
- flexcompute/core/_migration/em/schema/tidy3d/exceptions.py +8 -47
- flexcompute/core/_migration/em/schema/tidy3d/material_library/material_library.py +5 -5
- flexcompute/core/_migration/em/schema/tidy3d/material_library/material_reference.py +11 -5
- flexcompute/core/_migration/em/schema/tidy3d/material_library/parametric_materials.py +8 -8
- flexcompute/core/_migration/em/schema/tidy3d/material_library/util.py +2 -3
- flexcompute/core/_migration/em/schema/tidy3d/packaging.py +11 -243
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/metrics.py +3 -3
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/variables.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/__init__.py +1 -9
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/design.py +12 -426
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/initialization.py +16 -138
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/optimizer.py +9 -9
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/penalty.py +10 -112
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/polyslab_set.py +5 -13
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/region.py +10 -394
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/result.py +16 -14
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/transformation.py +10 -98
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/utils.py +12 -7
- flexcompute/core/_migration/em/schema/tidy3d/plugins/mode/mode_solver.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/updater.py +1 -1
- flexcompute/core/_migration/em/schema/tidy3d/version.py +1 -1
- flexcompute/core/_migration/em/source/__init__.py +1 -0
- flexcompute/core/_migration/em/source/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/source/schema/base.py +147 -0
- flexcompute/core/_migration/em/source/schema/current.py +240 -0
- flexcompute/core/_migration/em/source/schema/field.py +1073 -0
- flexcompute/core/_migration/em/source/schema/frame.py +25 -0
- flexcompute/core/_migration/em/source/schema/freq_range.py +230 -0
- flexcompute/core/_migration/em/source/schema/time.py +658 -0
- flexcompute/core/_migration/em/source/schema/utils.py +38 -0
- flexcompute/core/_migration/em/source/validation.py +279 -0
- flexcompute/core/_migration/em/structure/__init__.py +1 -0
- flexcompute/core/_migration/em/structure/schema.py +1167 -0
- flexcompute/core/_migration/em/structure/validation.py +85 -0
- flexcompute/core/_migration/em/thin_lens/__init__.py +1 -0
- flexcompute/core/_migration/em/thin_lens/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/thin_lens/schema/thin_lens.py +100 -0
- flexcompute/core/_migration/em/thin_lens/validation.py +110 -0
- flexcompute/core/_migration/em/transformation/__init__.py +1 -0
- flexcompute/core/_migration/em/transformation/schema.py +205 -0
- flexcompute/core/_migration/em/transformation/validation.py +45 -0
- flexcompute/core/_migration/extensions/__init__.py +1 -0
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/functions.py +3 -89
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/filters.py +16 -16
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/parametrizations.py +74 -25
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/penalties.py +8 -8
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/projections.py +51 -77
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/symmetries.py +4 -0
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/optimizers.py +3 -3
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/primitives/interpolate.py +1 -1
- flexcompute/core/_migration/extensions/autograd/primitives/misc.py +12 -0
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/types.py +1 -0
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/utilities.py +2 -52
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/design/design.py +18 -18
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/design/method.py +26 -6
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/design/parameter.py +2 -2
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/design/result.py +10 -10
- flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/dispersion/fit.py +4 -6
- flexcompute/core/_migration/solver/__init__.py +1 -0
- flexcompute/core/_migration/solver/component_modeler/__init__.py +1 -0
- flexcompute/core/_migration/solver/component_modeler/schema.py +36 -0
- flexcompute/core/_migration/solver/eme/__init__.py +1 -0
- flexcompute/core/_migration/solver/eme/schema/__init__.py +1 -0
- flexcompute/core/_migration/solver/eme/schema/simulation.py +1917 -0
- flexcompute/core/_migration/solver/eme/validation.py +694 -0
- flexcompute/core/_migration/solver/fast_heat/__init__.py +1 -0
- flexcompute/core/_migration/solver/fast_heat/schema/__init__.py +1 -0
- flexcompute/core/_migration/solver/fast_heat/schema/fast_heat.py +171 -0
- flexcompute/core/_migration/solver/fast_heat/schema/grid.py +213 -0
- flexcompute/core/_migration/solver/fast_heat/schema/monitor.py +36 -0
- flexcompute/core/_migration/solver/fast_heat/validation/__init__.py +52 -0
- flexcompute/core/_migration/solver/fast_heat/validation/fast_heat.py +576 -0
- flexcompute/core/_migration/solver/fast_heat/validation/grid.py +59 -0
- flexcompute/core/_migration/solver/fast_heat/validation/solve.py +173 -0
- flexcompute/core/_migration/solver/fdtd/__init__.py +1 -0
- flexcompute/core/_migration/solver/fdtd/conversion/__init__.py +2 -0
- flexcompute/core/_migration/solver/fdtd/conversion/boundaries.py +24 -0
- flexcompute/core/_migration/solver/fdtd/schema/__init__.py +1 -0
- flexcompute/core/_migration/solver/fdtd/schema/adjoint.py +105 -0
- flexcompute/core/_migration/solver/fdtd/schema/boundaries.py +228 -0
- flexcompute/core/_migration/solver/fdtd/schema/constants.py +31 -0
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/construction.py +3 -3
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/export.py +17 -18
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/grid.py +185 -191
- flexcompute/core/_migration/solver/fdtd/schema/materials.py +413 -0
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/mode_integration.py +86 -217
- flexcompute/core/_migration/solver/fdtd/schema/model.py +1034 -0
- flexcompute/core/_migration/solver/fdtd/schema/monitors.py +358 -0
- flexcompute/core/_migration/solver/fdtd/schema/rf_integration.py +49 -0
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/runtime.py +2 -97
- flexcompute/core/_migration/solver/fdtd/schema/sources.py +238 -0
- flexcompute/core/_migration/solver/fdtd/schema/tfsf.py +335 -0
- flexcompute/core/_migration/solver/fdtd/schema/validation_schema.py +28 -0
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/visualization.py +3 -3
- flexcompute/core/_migration/{em/schema/tidy3d/components/simulation → solver/fdtd/schema}/yee.py +66 -40
- flexcompute/core/_migration/solver/fdtd/validation/__init__.py +158 -0
- flexcompute/core/_migration/solver/fdtd/validation/boundaries.py +556 -0
- flexcompute/core/_migration/solver/fdtd/validation/grid.py +136 -0
- flexcompute/core/_migration/solver/fdtd/validation/materials.py +118 -0
- flexcompute/core/_migration/solver/fdtd/validation/mode_integration.py +243 -0
- flexcompute/core/_migration/solver/fdtd/validation/model.py +511 -0
- flexcompute/core/_migration/solver/fdtd/validation/monitors.py +695 -0
- flexcompute/core/_migration/solver/fdtd/validation/rf_integration.py +71 -0
- flexcompute/core/_migration/solver/fdtd/validation/runtime.py +107 -0
- flexcompute/core/_migration/solver/fdtd/validation/sources.py +370 -0
- flexcompute/core/_migration/solver/fdtd/validation/tfsf.py +687 -0
- flexcompute/core/_migration/solver/fdtd/validation/yee.py +80 -0
- flexcompute/core/_migration/solver/heat_charge/__init__.py +1 -0
- flexcompute/core/_migration/solver/heat_charge/schema/__init__.py +1 -0
- flexcompute/core/_migration/solver/heat_charge/schema/ac.py +84 -0
- flexcompute/core/_migration/solver/heat_charge/schema/dc.py +196 -0
- flexcompute/core/_migration/solver/heat_charge/schema/heat.py +43 -0
- flexcompute/core/_migration/solver/heat_charge/schema/heat_charge.py +2374 -0
- flexcompute/core/_migration/solver/heat_charge/schema/heat_simulation_type.py +103 -0
- flexcompute/core/_migration/solver/heat_charge/validation/__init__.py +115 -0
- flexcompute/core/_migration/solver/heat_charge/validation/ac.py +41 -0
- flexcompute/core/_migration/solver/heat_charge/validation/dc.py +71 -0
- flexcompute/core/_migration/solver/heat_charge/validation/heat_charge.py +3259 -0
- flexcompute/core/_migration/solver/heat_charge/validation/heat_simulation_type.py +114 -0
- flexcompute/core/_migration/solver/mode/__init__.py +1 -0
- flexcompute/core/_migration/solver/mode/schema/__init__.py +1 -0
- flexcompute/core/_migration/solver/mode/schema/mode_solver.py +3194 -0
- flexcompute/core/_migration/solver/mode/schema/simulation.py +704 -0
- flexcompute/core/_migration/solver/mode/validation/__init__.py +43 -0
- flexcompute/core/_migration/solver/mode/validation/mode_solver.py +254 -0
- flexcompute/core/_migration/solver/mode/validation/simulation.py +132 -0
- flexcompute/core/_migration/spice/__init__.py +1 -0
- flexcompute/core/_migration/spice/schema/__init__.py +1 -0
- flexcompute/core/_migration/spice/schema/sources.py +91 -0
- flexcompute/core/_migration/spice/validation.py +84 -0
- flexcompute/core/_migration/tcad/__init__.py +1 -0
- flexcompute/core/_migration/tcad/schema/__init__.py +1 -0
- flexcompute/core/_migration/tcad/schema/boundary.py +67 -0
- flexcompute/core/_migration/tcad/schema/doping.py +389 -0
- flexcompute/core/_migration/tcad/schema/generation_recombination.py +508 -0
- flexcompute/core/_migration/tcad/schema/grid.py +551 -0
- flexcompute/core/_migration/tcad/schema/heat_medium.py +570 -0
- flexcompute/core/_migration/tcad/schema/ionization.py +314 -0
- flexcompute/core/_migration/tcad/schema/mobility.py +1029 -0
- flexcompute/core/_migration/tcad/schema/monitor.py +23 -0
- flexcompute/core/_migration/tcad/schema/source.py +65 -0
- flexcompute/core/_migration/tcad/schema/validation_schema.py +55 -0
- flexcompute/core/_migration/tcad/validation.py +748 -0
- flexcompute/core/{_migration/em/schema/tidy3d/log.py → log.py} +90 -63
- flexcompute/core/validation/__init__.py +27 -0
- flexcompute/core/validation/errors.py +60 -0
- flexcompute/core/validation/report.py +69 -0
- flexcompute/core/validation/simulation.py +69 -0
- flexcompute/data/__init__.py +4 -0
- flexcompute/data/_autograd/__init__.py +6 -0
- flexcompute/data/_autograd/boxes.py +162 -0
- flexcompute/data/_autograd/functions.py +289 -0
- flexcompute/data/_autograd/utils.py +67 -0
- flexcompute/{core/_migration/em/schema/tidy3d/components/geometry/bound_ops.py → data/_bounds.py} +6 -3
- flexcompute/data/_compat.py +6 -0
- flexcompute/data/_exceptions.py +48 -0
- flexcompute/data/_plot_safe.py +37 -0
- flexcompute/data/_registry.py +12 -0
- flexcompute/data/_typing.py +11 -0
- flexcompute/data/_units.py +56 -0
- flexcompute/data/arrays/__init__.py +241 -0
- flexcompute/data/arrays/_autograd.py +257 -0
- flexcompute/data/arrays/_constants.py +60 -0
- flexcompute/data/arrays/_io.py +92 -0
- flexcompute/data/arrays/_plot.py +47 -0
- flexcompute/data/arrays/_traced.py +46 -0
- flexcompute/data/arrays/abstract_spatial.py +392 -0
- flexcompute/data/arrays/base.py +340 -0
- flexcompute/data/arrays/eme.py +227 -0
- flexcompute/data/arrays/microwave.py +429 -0
- flexcompute/data/arrays/monitor.py +281 -0
- flexcompute/data/arrays/registry.py +194 -0
- flexcompute/data/arrays/spatial.py +186 -0
- flexcompute/data/arrays/spectral.py +168 -0
- flexcompute/data/arrays/tcad.py +155 -0
- flexcompute/data/arrays/unstructured.py +275 -0
- flexcompute/geometry/__init__.py +7 -0
- flexcompute/geometry/_base.py +237 -0
- flexcompute/geometry/_kernels/__init__.py +6 -0
- flexcompute/geometry/_kernels/axes.py +12 -0
- flexcompute/geometry/_kernels/meshes.py +20 -0
- flexcompute/geometry/_kernels/polygons.py +322 -0
- flexcompute/geometry/_traced.py +19 -0
- flexcompute/geometry/base.py +50 -0
- flexcompute/geometry/composites.py +203 -0
- flexcompute/geometry/mesh.py +54 -0
- flexcompute/geometry/polyslab.py +160 -0
- flexcompute/geometry/primitives.py +75 -0
- flexcompute/geometry/py.typed +0 -0
- flexcompute/geometry/schema.py +187 -0
- flexcompute/geometry/validation/__init__.py +75 -0
- flexcompute/geometry/validation/composites.py +263 -0
- flexcompute/geometry/validation/cylinder.py +37 -0
- flexcompute/geometry/validation/mesh.py +94 -0
- flexcompute/geometry/validation/polyslab.py +343 -0
- flexcompute/geometry/validation/primitives.py +50 -0
- {flexcompute_core-0.0.1.dev2.dist-info → flexcompute_core-0.0.1.dev3.dist-info}/METADATA +19 -5
- flexcompute_core-0.0.1.dev3.dist-info/RECORD +712 -0
- flexcompute/core/_migration/em/numerical/README.md +0 -109
- flexcompute/core/_migration/em/schema/tidy3d/README.md +0 -59
- flexcompute/core/_migration/em/schema/tidy3d/components/README.md +0 -233
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/derivative_utils.py +0 -1635
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/parallel_adjoint_bases.py +0 -348
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/point_consumption.py +0 -410
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/snapping.py +0 -180
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/source_factory.py +0 -521
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/spacing.py +0 -352
- flexcompute/core/_migration/em/schema/tidy3d/components/data/README.md +0 -158
- flexcompute/core/_migration/em/schema/tidy3d/components/data/data_array.py +0 -2750
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/README.md +0 -13
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/_utils.py +0 -70
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/README.md +0 -248
- flexcompute/core/_migration/em/schema/tidy3d/components/frequencies.py +0 -564
- flexcompute/core/_migration/em/schema/tidy3d/components/material/README.md +0 -3
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/README.md +0 -16
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/README.md +0 -67
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/boundaries.py +0 -789
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/materials.py +0 -648
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/monitors.py +0 -919
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/rf_integration.py +0 -123
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/sources.py +0 -568
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/tfsf.py +0 -998
- flexcompute/core/_migration/em/schema/tidy3d/components/source/adjoint_helpers.py +0 -272
- flexcompute/core/_migration/em/schema/tidy3d/components/types/workflow.py +0 -22
- flexcompute/core/_migration/em/schema/tidy3d/config/README.md +0 -96
- flexcompute/core/_migration/em/schema/tidy3d/config/__init__.py +0 -183
- flexcompute/core/_migration/em/schema/tidy3d/config/deprecations.py +0 -95
- flexcompute/core/_migration/em/schema/tidy3d/config/loader.py +0 -852
- flexcompute/core/_migration/em/schema/tidy3d/config/manager.py +0 -617
- flexcompute/core/_migration/em/schema/tidy3d/config/migrations.py +0 -290
- flexcompute/core/_migration/em/schema/tidy3d/config/profiles.py +0 -64
- flexcompute/core/_migration/em/schema/tidy3d/config/registry.py +0 -83
- flexcompute/core/_migration/em/schema/tidy3d/config/schema_utils.py +0 -27
- flexcompute/core/_migration/em/schema/tidy3d/config/sections.py +0 -739
- flexcompute/core/_migration/em/schema/tidy3d/config/serializer.py +0 -145
- flexcompute/core/_migration/em/schema/tidy3d/plugins/autograd/README.md +0 -302
- flexcompute/core/_migration/em/schema/tidy3d/plugins/autograd/primitives/misc.py +0 -139
- flexcompute/core/_migration/em/schema/tidy3d/plugins/design/README.md +0 -148
- flexcompute/core/_migration/em/schema/tidy3d/plugins/dipole_emission/README.md +0 -16
- flexcompute/core/_migration/em/schema/tidy3d/plugins/dipole_emission/__init__.py +0 -29
- flexcompute/core/_migration/em/schema/tidy3d/plugins/dipole_emission/constants.py +0 -9
- flexcompute/core/_migration/em/schema/tidy3d/plugins/dipole_emission/data.py +0 -108
- flexcompute/core/_migration/em/schema/tidy3d/plugins/dipole_emission/data_array.py +0 -66
- flexcompute/core/_migration/em/schema/tidy3d/plugins/dipole_emission/study.py +0 -890
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/README.md +0 -308
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/README.md +0 -515
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/validators.py +0 -80
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/README.md +0 -10
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/__init__.py +0 -18
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/drc/README.md +0 -43
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/drc/__init__.py +0 -22
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/drc/defaults.py +0 -9
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/drc/drc.py +0 -233
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/drc/results.py +0 -503
- flexcompute/core/_migration/em/schema/tidy3d/plugins/klayout/util.py +0 -13
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/__init__.py +0 -82
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/array_factor.py +0 -1350
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/auto_path_integrals.py +0 -11
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/custom_path_integrals.py +0 -35
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/impedance_calculator.py +0 -15
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/lobe_measurer.py +0 -356
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/models/__init__.py +0 -10
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/models/coupled_microstrip.py +0 -105
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/models/microstrip.py +0 -152
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/path_integrals.py +0 -23
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/rf_material_library.py +0 -1380
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/rf_material_reference.py +0 -148
- flexcompute/core/_migration/em/schema/tidy3d/plugins/microwave/viz.py +0 -39
- flexcompute/core/_migration/em/schema/tidy3d/plugins/mode/README.md +0 -1
- flexcompute/core/_migration/em/schema/tidy3d/plugins/polyslab/__init__.py +0 -7
- flexcompute/core/_migration/em/schema/tidy3d/plugins/polyslab/polyslab.py +0 -77
- flexcompute/core/_migration/em/schema/tidy3d/plugins/pytorch/README.md +0 -54
- flexcompute/core/_migration/em/schema/tidy3d/plugins/pytorch/__init__.py +0 -5
- flexcompute/core/_migration/em/schema/tidy3d/plugins/pytorch/wrapper.py +0 -33
- flexcompute/core/_migration/em/schema/tidy3d/plugins/resonance/__init__.py +0 -7
- flexcompute/core/_migration/em/schema/tidy3d/plugins/resonance/resonance.py +0 -450
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/__init__.py +0 -92
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/analysis/antenna.py +0 -133
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/analysis/modal.py +0 -120
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/analysis/terminal.py +0 -465
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/component_modelers/base.py +0 -418
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/component_modelers/modal.py +0 -401
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/component_modelers/terminal.py +0 -2560
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/component_modelers/types.py +0 -6
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/component_modelers/viz.py +0 -111
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/data/base.py +0 -82
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/data/data_array.py +0 -83
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/data/modal.py +0 -54
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/data/terminal.py +0 -753
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/data/types.py +0 -10
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/base.py +0 -28
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/base_lumped.py +0 -267
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/base_terminal.py +0 -66
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/coaxial_lumped.py +0 -467
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/modal.py +0 -274
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/rectangular_lumped.py +0 -629
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/tilted_lumped.py +0 -706
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/types.py +0 -30
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/ports/wave.py +0 -1631
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/run.py +0 -176
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/types.py +0 -20
- flexcompute/core/_migration/em/schema/tidy3d/plugins/smatrix/utils.py +0 -469
- flexcompute/core/_migration/em/schema/tidy3d/plugins/waveguide/__init__.py +0 -7
- flexcompute/core/_migration/em/schema/tidy3d/plugins/waveguide/rectangular_dielectric.py +0 -1181
- flexcompute/core/_migration/em/schema/tidy3d/rf.py +0 -269
- flexcompute/core/_migration/em/validation/__init__.py +0 -5
- flexcompute/core/_migration/em/validation/report.py +0 -28
- flexcompute_core-0.0.1.dev2.dist-info/RECORD +0 -530
- /flexcompute/core/_migration/em/{schema/tidy3d/components/grid → grid/schema}/grid_spec/refinement/edges.py +0 -0
- /flexcompute/core/_migration/em/{schema/tidy3d/components/grid → grid/schema}/grid_spec/refinement/gaps.py +0 -0
- /flexcompute/core/_migration/em/{schema/tidy3d/components/grid → grid/schema}/grid_spec/refinement/inplane.py +0 -0
- /flexcompute/core/_migration/em/{schema/tidy3d/plugins/smatrix/analysis → microwave/schema/path_integrals}/__init__.py +0 -0
- /flexcompute/core/_migration/em/{schema/tidy3d/plugins/smatrix/component_modelers → microwave/schema/path_integrals/integrals}/__init__.py +0 -0
- /flexcompute/core/_migration/em/{schema/tidy3d/plugins/smatrix/data → microwave/schema/path_integrals/specs}/__init__.py +0 -0
- /flexcompute/core/_migration/em/{schema/tidy3d/components/microwave → microwave/schema}/path_integrals/viz.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/__init__.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/constants.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/differential_operators.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/__init__.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/invdes/misc.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/autograd/primitives/__init__.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/design/__init__.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/dispersion/__init__.py +0 -0
- /flexcompute/core/_migration/{em/schema/tidy3d/plugins → extensions}/dispersion/fit_fast.py +0 -0
- /flexcompute/{core/_migration/em/schema/tidy3d/plugins/smatrix/ports/__init__.py → data/py.typed} +0 -0
- {flexcompute_core-0.0.1.dev2.dist-info → flexcompute_core-0.0.1.dev3.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Apodization validation scope."""
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"""Defines specification for apodization."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
from pydantic import Field, NonNegativeFloat, PositiveFloat
|
|
9
|
+
|
|
10
|
+
from flexcompute.core._migration.em.schema.tidy3d.components.base import Tidy3dBaseModel
|
|
11
|
+
from flexcompute.core._migration.em.schema.tidy3d.components.viz import add_ax_if_none
|
|
12
|
+
from flexcompute.core._migration.em.schema.tidy3d.constants import SECOND
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from flexcompute.core._migration.em.schema.tidy3d.components.types import ArrayFloat1D, Ax
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ApodizationSpec(Tidy3dBaseModel):
|
|
19
|
+
"""Stores specifications for the apodizaton of frequency-domain monitors.
|
|
20
|
+
|
|
21
|
+
Example
|
|
22
|
+
-------
|
|
23
|
+
>>> apod_spec = ApodizationSpec(start=1, end=2, width=0.2)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
.. image:: ../../_static/img/apodization.png
|
|
27
|
+
:width: 80%
|
|
28
|
+
:align: center
|
|
29
|
+
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
start: NonNegativeFloat | None = Field(
|
|
33
|
+
default=None,
|
|
34
|
+
title="Start Interval",
|
|
35
|
+
description="Defines the time at which the start apodization ends.",
|
|
36
|
+
json_schema_extra={"units": SECOND},
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
end: NonNegativeFloat | None = Field(
|
|
40
|
+
default=None,
|
|
41
|
+
title="End Interval",
|
|
42
|
+
description="Defines the time at which the end apodization begins.",
|
|
43
|
+
json_schema_extra={"units": SECOND},
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
width: PositiveFloat | None = Field(
|
|
47
|
+
default=None,
|
|
48
|
+
title="Apodization Width",
|
|
49
|
+
description="Characteristic decay length of the apodization function, i.e., the width of the ramping up of the scaling function from 0 to 1.",
|
|
50
|
+
json_schema_extra={"units": SECOND},
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
@add_ax_if_none
|
|
54
|
+
def plot(self, times: ArrayFloat1D, ax: Ax = None) -> Ax:
|
|
55
|
+
"""Plot the apodization function.
|
|
56
|
+
|
|
57
|
+
Parameters
|
|
58
|
+
----------
|
|
59
|
+
times : np.ndarray
|
|
60
|
+
Array of times (seconds) to plot source at.
|
|
61
|
+
To see source time amplitude for a specific :class:`.Simulation`,
|
|
62
|
+
pass ``simulation.tmesh``.
|
|
63
|
+
ax : matplotlib.axes._subplots.Axes = None
|
|
64
|
+
Matplotlib axes to plot on, if not specified, one is created.
|
|
65
|
+
|
|
66
|
+
Returns
|
|
67
|
+
-------
|
|
68
|
+
matplotlib.axes._subplots.Axes
|
|
69
|
+
The supplied or created matplotlib axes.
|
|
70
|
+
"""
|
|
71
|
+
times = np.array(times)
|
|
72
|
+
amp = np.ones_like(times)
|
|
73
|
+
|
|
74
|
+
if self.start is not None:
|
|
75
|
+
start_ind = times < self.start
|
|
76
|
+
time_scaled = (times[start_ind] - self.start) / self.width
|
|
77
|
+
amp[start_ind] *= np.exp(-0.5 * time_scaled**2)
|
|
78
|
+
|
|
79
|
+
if self.end is not None:
|
|
80
|
+
end_ind = times > self.end
|
|
81
|
+
time_scaled = (times[end_ind] - self.end) / self.width
|
|
82
|
+
amp[end_ind] *= np.exp(-0.5 * time_scaled**2)
|
|
83
|
+
|
|
84
|
+
ax.plot(times, amp, color="blueviolet")
|
|
85
|
+
ax.set_xlabel("time (s)")
|
|
86
|
+
ax.set_title("apodization function")
|
|
87
|
+
ax.set_aspect("auto")
|
|
88
|
+
return ax
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Pure rules for apodization validation."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from flexcompute.core.validation import ValidationDiagnostic, ValidationReport, error
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def validate_end_order(start: float | None, end: float | None) -> tuple[ValidationDiagnostic, ...]:
|
|
9
|
+
"""Require the end apodization to begin no earlier than the start apodization ends."""
|
|
10
|
+
if start is not None and end is not None and end < start:
|
|
11
|
+
return (
|
|
12
|
+
error(
|
|
13
|
+
"em.apodization.end_greater_than_start",
|
|
14
|
+
"End apodization begins before start apodization ends.",
|
|
15
|
+
("end",),
|
|
16
|
+
),
|
|
17
|
+
)
|
|
18
|
+
return ()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def validate_width(
|
|
22
|
+
start: float | None, end: float | None, width: float | None
|
|
23
|
+
) -> tuple[ValidationDiagnostic, ...]:
|
|
24
|
+
"""Require a width when either the start or the end apodization is requested."""
|
|
25
|
+
if (start is not None or end is not None) and width is None:
|
|
26
|
+
return (
|
|
27
|
+
error(
|
|
28
|
+
"em.apodization.width_provided",
|
|
29
|
+
"Apodization width must be set.",
|
|
30
|
+
("width",),
|
|
31
|
+
),
|
|
32
|
+
)
|
|
33
|
+
return ()
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def validate(schema: object) -> ValidationReport:
|
|
37
|
+
"""Validate a moved apodization spec in the order of the replaced validators.
|
|
38
|
+
|
|
39
|
+
The end-before-start rule comes first, as that validator ran first, so the first error
|
|
40
|
+
matches the public constructor.
|
|
41
|
+
|
|
42
|
+
The validation dispatch calls this on every node whose class has this scope. A node of
|
|
43
|
+
any other class reports nothing.
|
|
44
|
+
"""
|
|
45
|
+
from .schema import ApodizationSpec
|
|
46
|
+
|
|
47
|
+
if not isinstance(schema, ApodizationSpec):
|
|
48
|
+
return ValidationReport()
|
|
49
|
+
return ValidationReport(
|
|
50
|
+
diagnostics=(
|
|
51
|
+
*validate_end_order(schema.start, schema.end),
|
|
52
|
+
*validate_width(schema.start, schema.end, schema.width),
|
|
53
|
+
)
|
|
54
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Boundary-condition validation scope."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Boundary-placement validation scope."""
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""Defines placements for boundary conditions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from abc import ABC
|
|
6
|
+
|
|
7
|
+
from pydantic import Field
|
|
8
|
+
|
|
9
|
+
from flexcompute.core._migration.em.schema.tidy3d.components.types.base import discriminated_union
|
|
10
|
+
from flexcompute.core._migration.em.schema.tidy3d.components.base import Tidy3dBaseModel
|
|
11
|
+
from flexcompute.core._migration.em.schema.tidy3d.components.types import BoxSurface
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AbstractBCPlacement(ABC, Tidy3dBaseModel):
|
|
15
|
+
"""Abstract placement for boundary conditions."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class StructureBoundary(AbstractBCPlacement):
|
|
19
|
+
"""Placement of boundary conditions on the structure's boundary.
|
|
20
|
+
|
|
21
|
+
Example
|
|
22
|
+
-------
|
|
23
|
+
>>> bc_placement = StructureBoundary(structure="box")
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
structure: str = Field(
|
|
27
|
+
title="Structure Name",
|
|
28
|
+
description="Name of the structure.",
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class StructureStructureInterface(AbstractBCPlacement):
|
|
33
|
+
"""Placement of boundary conditions between two structures.
|
|
34
|
+
|
|
35
|
+
Example
|
|
36
|
+
-------
|
|
37
|
+
>>> bc_placement = StructureStructureInterface(structures=["box", "sphere"])
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
structures: tuple[str, str] = Field(
|
|
41
|
+
title="Structures",
|
|
42
|
+
description="Names of two structures.",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class MediumMediumInterface(AbstractBCPlacement):
|
|
47
|
+
"""Placement of boundary conditions between two mediums.
|
|
48
|
+
|
|
49
|
+
Example
|
|
50
|
+
-------
|
|
51
|
+
>>> bc_placement = MediumMediumInterface(mediums=["dieletric", "metal"])
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
mediums: tuple[str, str] = Field(
|
|
55
|
+
title="Mediums",
|
|
56
|
+
description="Names of two mediums.",
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class SimulationBoundary(AbstractBCPlacement):
|
|
61
|
+
"""Placement of boundary conditions on the simulation box boundary.
|
|
62
|
+
|
|
63
|
+
Example
|
|
64
|
+
-------
|
|
65
|
+
>>> bc_placement = SimulationBoundary(surfaces=["x-", "x+"])
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
surfaces: tuple[BoxSurface, ...] = Field(
|
|
69
|
+
default=("x-", "x+", "y-", "y+", "z-", "z+"),
|
|
70
|
+
title="Surfaces",
|
|
71
|
+
description="Surfaces of simulation domain where to apply boundary conditions.",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class StructureSimulationBoundary(AbstractBCPlacement):
|
|
76
|
+
"""Placement of boundary conditions on the simulation box boundary covered by the structure.
|
|
77
|
+
|
|
78
|
+
Example
|
|
79
|
+
-------
|
|
80
|
+
>>> bc_placement = StructureSimulationBoundary(structure="box", surfaces=["y-", "y+"])
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
structure: str = Field(
|
|
84
|
+
title="Structure Name",
|
|
85
|
+
description="Name of the structure.",
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
surfaces: tuple[BoxSurface, ...] = Field(
|
|
89
|
+
default=("x-", "x+", "y-", "y+", "z-", "z+"),
|
|
90
|
+
title="Surfaces",
|
|
91
|
+
description="Surfaces of simulation domain where to apply boundary conditions.",
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
BCPlacementType = discriminated_union(
|
|
96
|
+
StructureBoundary
|
|
97
|
+
| StructureStructureInterface
|
|
98
|
+
| MediumMediumInterface
|
|
99
|
+
| SimulationBoundary
|
|
100
|
+
| StructureSimulationBoundary
|
|
101
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""Pure rules for boundary-condition placements."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from flexcompute.core.validation import ValidationDiagnostic, ValidationReport, error
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from .schema import MediumMediumInterface, StructureStructureInterface
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def validate_distinct_names(
|
|
14
|
+
interface: StructureStructureInterface | MediumMediumInterface,
|
|
15
|
+
) -> tuple[ValidationDiagnostic, ...]:
|
|
16
|
+
"""Reject an interface that names the same structure or medium twice."""
|
|
17
|
+
from .schema import StructureStructureInterface
|
|
18
|
+
|
|
19
|
+
if isinstance(interface, StructureStructureInterface):
|
|
20
|
+
field, kind, owner = "structures", "structure", "StructureStructureInterface"
|
|
21
|
+
else:
|
|
22
|
+
field, kind, owner = "mediums", "medium", "MediumMediumInterface"
|
|
23
|
+
names = getattr(interface, field)
|
|
24
|
+
if names[0] != names[1]:
|
|
25
|
+
return ()
|
|
26
|
+
return (
|
|
27
|
+
error(
|
|
28
|
+
f"em.boundary.placement.duplicate_{kind}",
|
|
29
|
+
f"The same {kind} is provided twice in '{owner}'.",
|
|
30
|
+
(field,),
|
|
31
|
+
),
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def validate(schema: object) -> ValidationReport:
|
|
36
|
+
"""Run the placement rules for one node; any other node reports nothing."""
|
|
37
|
+
from .schema import MediumMediumInterface, StructureStructureInterface
|
|
38
|
+
|
|
39
|
+
diagnostics = ()
|
|
40
|
+
if isinstance(schema, (StructureStructureInterface, MediumMediumInterface)):
|
|
41
|
+
diagnostics = validate_distinct_names(schema)
|
|
42
|
+
return ValidationReport(diagnostics=diagnostics)
|