flexcompute-core 0.0.1.dev0__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/__init__.py +1 -0
- flexcompute/core/_migration/em/__init__.py +1 -0
- 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/grid/schema/grid_spec/refinement/construction.py +290 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/edges.py +277 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/gaps.py +526 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/grid_refinement.py +142 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/inplane.py +524 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/model.py +229 -0
- flexcompute/core/_migration/em/grid/schema/grid_spec/refinement/properties.py +80 -0
- 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/microwave/schema/path_integrals/__init__.py +0 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/factory.py +223 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/integrals/__init__.py +0 -0
- flexcompute/core/_migration/em/microwave/schema/path_integrals/integrals/auto.py +91 -0
- 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/__init__.py +0 -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/schema/path_integrals/viz.py +56 -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/__init__.py +1 -0
- flexcompute/core/_migration/em/numerical/raw/__init__.py +1 -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 +57 -0
- flexcompute/core/_migration/em/numerical/raw/doping.py +57 -0
- flexcompute/core/_migration/em/numerical/raw/field_data.py +204 -0
- flexcompute/core/_migration/em/numerical/raw/grid.py +242 -0
- flexcompute/core/_migration/em/numerical/raw/medium.py +276 -0
- flexcompute/core/_migration/em/numerical/raw/microwave.py +495 -0
- flexcompute/core/_migration/em/numerical/raw/mode.py +124 -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_normalization.py +31 -0
- flexcompute/core/_migration/em/numerical/raw/source_time.py +107 -0
- flexcompute/core/_migration/em/numerical/raw/spatial.py +465 -0
- flexcompute/core/_migration/em/numerical/raw/symmetry.py +54 -0
- flexcompute/core/_migration/em/numerical/raw/thin_lens.py +20 -0
- flexcompute/core/_migration/em/numerical/schema/__init__.py +1 -0
- flexcompute/core/_migration/em/numerical/schema/field_data.py +149 -0
- flexcompute/core/_migration/em/numerical/schema/solver_diagnostics.py +85 -0
- flexcompute/core/_migration/em/numerical/schema/source_time.py +51 -0
- 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/__init__.py +1 -0
- flexcompute/core/_migration/em/schema/preprocess/cache.py +142 -0
- flexcompute/core/_migration/em/schema/preprocess/config.json +3 -0
- flexcompute/core/_migration/em/schema/preprocess/config.py +44 -0
- flexcompute/core/_migration/em/schema/preprocess/custom_medium.py +818 -0
- flexcompute/core/_migration/em/schema/preprocess/dipole_emission.py +28 -0
- flexcompute/core/_migration/em/schema/preprocess/mode.py +128 -0
- flexcompute/core/_migration/em/schema/preprocess/simulation.py +604 -0
- flexcompute/core/_migration/em/schema/preprocess/subgrid.py +511 -0
- flexcompute/core/_migration/em/schema/preprocess/subpixel.py +68 -0
- flexcompute/core/_migration/em/schema/preprocess/utils.py +380 -0
- flexcompute/core/_migration/em/schema/tidy3d/__init__.py +4 -0
- flexcompute/core/_migration/em/schema/tidy3d/__main__.py +99 -0
- flexcompute/core/_migration/em/schema/tidy3d/_optional_imports.py +215 -0
- flexcompute/core/_migration/em/schema/tidy3d/_runtime.py +12 -0
- flexcompute/core/_migration/em/schema/tidy3d/_testing/__init__.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/_testing/synthetic_monitor_data.py +818 -0
- flexcompute/core/_migration/em/schema/tidy3d/compat.py +30 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/apodization.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/__init__.py +42 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/boxes.py +12 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/field_map.py +44 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/flux_monitor.py +73 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/functions.py +15 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/monitor_names.py +25 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/path_utils.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/sample_sets.py +1052 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/types.py +193 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/autograd/utils.py +12 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base.py +2319 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/data/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/data/monitor_data.py +130 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/data/sim_data.py +242 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/monitor.py +119 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/simulation.py +661 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/base_sim/source.py +30 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/bc_placement.py +21 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/beam.py +1276 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/bound_ops.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/boundary.py +81 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/contour_conversion.py +801 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/__init__.py +0 -0
- 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 +1526 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/dataset_base.py +43 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/em_fields.py +59 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/index.py +117 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/__init__.py +172 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/_constants.py +15 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/_types.py +29 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/base.py +361 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/__init__.py +43 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/_em_algebra.py +523 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/_em_grid.py +367 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/_em_io.py +300 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/_em_metrics.py +258 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/data.py +117 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/diagnostic.py +717 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/dipole.py +67 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/electromagnetic.py +92 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/point_cloud.py +113 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/surface.py +362 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/field/time.py +193 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/flux.py +107 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/__init__.py +16 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/data.py +921 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/overlap.py +74 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/solver.py +423 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/mode/time.py +67 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/__init__.py +22 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/_types.py +30 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/angle.py +224 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/base.py +321 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/cartesian.py +161 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/diffraction.py +286 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/directivity.py +455 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/monitor_data/projection/kspace.py +133 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/optical_generation.py +353 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/plot_safe.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/point_cloud.py +151 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/registry.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/sim_data.py +1792 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/structure_loss.py +628 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/base.py +2735 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/surface.py +502 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/tetrahedral.py +460 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/unstructured/triangular.py +955 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/utils.py +443 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/validators.py +86 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/data/zbf.py +156 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/diffraction.py +256 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/dispersion_fitter.py +45 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/docstrings.py +298 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/dataset.py +553 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/monitor_data.py +203 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/sim_data.py +1285 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/data/stage.py +294 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/grid.py +29 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/monitor.py +440 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/simulation.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/eme/sweep.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/__init__.py +7 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/approximate_angle.py +193 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/approximate_paired.py +399 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/common.py +880 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/exact.py +970 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/field_projection/projector.py +1321 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/file_util.py +107 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/frequency_extrapolation.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/__init__.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/__init__.py +44 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/abstract_primitives.py +390 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/array.py +320 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/box.py +736 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/clip_operation.py +344 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/constants.py +15 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/core.py +601 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/gds.py +437 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/geometry_group.py +253 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/operators.py +126 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/plotting.py +511 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/transformed.py +363 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/transforms.py +309 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/base/utils.py +104 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/float_utils.py +31 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/mesh.py +791 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/polyslab.py +2316 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/primitives.py +972 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/triangulation.py +84 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/utils.py +615 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/geometry/vertex_utils.py +59 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/corner_finder.py +715 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid.py +916 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/__init__.py +58 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/constants.py +29 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/grid_1d/__init__.py +16 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/grid_1d/auto.py +498 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/grid_1d/base.py +251 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/grid_1d/manual.py +295 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/refinement/__init__.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/refinement/model.py +10 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/__init__.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/entities.py +335 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/factories.py +170 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/generation.py +669 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/localization.py +59 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/localization_helpers.py +132 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/model.py +241 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/grid_spec/spec/sizing.py +128 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/mesher.py +1644 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/snapping.py +477 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/grid/yee_areas.py +31 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/index.py +210 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/lumped_element.py +45 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/__init__.py +1 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/multi_physics.py +203 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/solver_types.py +28 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tcad/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tcad/charge.py +769 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tcad/heat.py +174 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tensor.py +82 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/tensor_rotation.py +198 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/material/types.py +26 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/__init__.py +215 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/_rebuild.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/abstract_custom.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/anisotropic.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/base.py +35 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/__init__.py +27 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/anisotropic.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/dispersive.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/custom/isotropic.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/debye.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/drude.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/isotropic.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/lorentz.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/lossy_metal.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/medium_types.py +33 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/perturbation.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/pole_residue.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/protected.py +784 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/roughness.py +23 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/sellmeier.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/medium/two_d.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/base.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/data/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/data/data_array.py +52 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/data/dataset.py +202 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/data/monitor_data.py +790 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/formulas/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/formulas/circuit_parameters.py +179 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/impedance_calculator.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/mode_spec.py +368 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/monitor.py +94 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/base.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/current.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/integrals/voltage.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/mode_plane_analyzer.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/base.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/current.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/impedance.py +15 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/specs/voltage.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/path_integrals/types.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/source.py +113 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/time.py +591 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/microwave/types.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/LICENSE +25 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/data/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/data/sim_data.py +538 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/derivatives.py +294 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/geometry.py +122 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/mode_solver.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/simulation.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/solver.py +1395 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/transforms.py +131 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode/validation.py +189 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/mode_spec.py +479 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/monitor.py +109 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/nonlinear.py +25 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/parameter_perturbation.py +49 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/run_time_spec.py +42 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/scene.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/__init__.py +81 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/adjoint.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/constants.py +59 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/simulation/model.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/base.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/current.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/field.py +47 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/frame.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/freq_range.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/time.py +29 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/source/utils.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/analysis/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/analysis/ac.py +9 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/analysis/dc.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/sources/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/sources/ac.py +5 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/sources/dc.py +111 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/sources/types.py +7 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/spice/types.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/structure.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/subpixel_spec.py +224 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/analysis/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/analysis/heat_simulation_type.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/bandgap.py +185 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/abstract.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/charge.py +181 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/heat.py +284 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/boundary/specification.py +53 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/abstract.py +391 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/charge.py +843 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/heat.py +67 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/monitor_data/mesh.py +70 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/sim_data.py +892 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/data/types.py +33 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/doping.py +22 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/doping_utils.py +334 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/effective_DOS.py +130 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/generation_recombination.py +409 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/grid.py +104 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/ionization.py +21 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/mesher.py +41 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/mobility.py +62 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/abstract.py +61 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/charge.py +255 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/heat.py +27 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/monitors/mesh.py +7 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/simulation/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/simulation/heat.py +8 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/simulation/heat_charge.py +43 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/source/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/source/abstract.py +18 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/source/coupled.py +32 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/source/heat.py +7 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/types.py +106 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/tcad/viz.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/thin_lens.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/time.py +208 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/time_modulation.py +23 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/transformation.py +23 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/two_d_materials.py +375 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/__init__.py +141 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/base.py +334 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/mode_spec.py +11 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/monitor.py +71 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/monitor_data.py +94 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/simulation.py +49 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/third_party.py +18 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/time.py +29 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/types/utils.py +103 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/validators.py +613 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/__init__.py +97 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/axes_utils.py +417 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/descartes.py +113 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/flex_color_palettes.py +3306 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/flex_style.py +59 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/layout.py +101 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/plot_params.py +95 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/plot_sim_3d.py +219 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/styles.py +49 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/viz/visualization_spec.py +87 -0
- flexcompute/core/_migration/em/schema/tidy3d/components/workflow.py +368 -0
- flexcompute/core/_migration/em/schema/tidy3d/constants.py +335 -0
- flexcompute/core/_migration/em/schema/tidy3d/exceptions.py +45 -0
- flexcompute/core/_migration/em/schema/tidy3d/material_library/__init__.py +0 -0
- flexcompute/core/_migration/em/schema/tidy3d/material_library/material_library.py +2991 -0
- flexcompute/core/_migration/em/schema/tidy3d/material_library/material_reference.py +237 -0
- flexcompute/core/_migration/em/schema/tidy3d/material_library/parametric_materials.py +412 -0
- flexcompute/core/_migration/em/schema/tidy3d/material_library/util.py +271 -0
- flexcompute/core/_migration/em/schema/tidy3d/packaging.py +19 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/__init__.py +1 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/__init__.py +68 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/base.py +209 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/functions.py +171 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/metrics.py +140 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/operators.py +178 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/types.py +68 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/expressions/variables.py +96 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/__init__.py +52 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/base.py +10 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/contours.py +71 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/design.py +15 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/initialization.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/optimizer.py +231 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/penalty.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/polyslab_set.py +501 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/region.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/result.py +172 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/self_intersection.py +302 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/transformation.py +13 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/invdes/utils.py +80 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/mode/LICENSE +25 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/mode/__init__.py +7 -0
- flexcompute/core/_migration/em/schema/tidy3d/plugins/mode/mode_solver.py +17 -0
- flexcompute/core/_migration/em/schema/tidy3d/style.mplstyle +1 -0
- flexcompute/core/_migration/em/schema/tidy3d/system.py +12 -0
- flexcompute/core/_migration/em/schema/tidy3d/updater.py +381 -0
- flexcompute/core/_migration/em/schema/tidy3d/version.py +3 -0
- 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/extensions/autograd/__init__.py +99 -0
- flexcompute/core/_migration/extensions/autograd/constants.py +4 -0
- flexcompute/core/_migration/extensions/autograd/differential_operators.py +78 -0
- flexcompute/core/_migration/extensions/autograd/functions.py +798 -0
- flexcompute/core/_migration/extensions/autograd/invdes/__init__.py +43 -0
- flexcompute/core/_migration/extensions/autograd/invdes/filters.py +326 -0
- flexcompute/core/_migration/extensions/autograd/invdes/misc.py +29 -0
- flexcompute/core/_migration/extensions/autograd/invdes/parametrizations.py +442 -0
- flexcompute/core/_migration/extensions/autograd/invdes/penalties.py +268 -0
- flexcompute/core/_migration/extensions/autograd/invdes/projections.py +164 -0
- flexcompute/core/_migration/extensions/autograd/invdes/symmetries.py +240 -0
- flexcompute/core/_migration/extensions/autograd/optimizers.py +335 -0
- flexcompute/core/_migration/extensions/autograd/primitives/__init__.py +6 -0
- flexcompute/core/_migration/extensions/autograd/primitives/interpolate.py +847 -0
- flexcompute/core/_migration/extensions/autograd/primitives/misc.py +12 -0
- flexcompute/core/_migration/extensions/autograd/types.py +7 -0
- flexcompute/core/_migration/extensions/autograd/utilities.py +212 -0
- flexcompute/core/_migration/extensions/design/__init__.py +29 -0
- flexcompute/core/_migration/extensions/design/design.py +783 -0
- flexcompute/core/_migration/extensions/design/method.py +1091 -0
- flexcompute/core/_migration/extensions/design/parameter.py +222 -0
- flexcompute/core/_migration/extensions/design/result.py +504 -0
- flexcompute/core/_migration/extensions/dispersion/__init__.py +16 -0
- flexcompute/core/_migration/extensions/dispersion/fit.py +795 -0
- flexcompute/core/_migration/extensions/dispersion/fit_fast.py +193 -0
- 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/solver/fdtd/schema/construction.py +418 -0
- flexcompute/core/_migration/solver/fdtd/schema/export.py +356 -0
- flexcompute/core/_migration/solver/fdtd/schema/grid.py +827 -0
- flexcompute/core/_migration/solver/fdtd/schema/materials.py +413 -0
- flexcompute/core/_migration/solver/fdtd/schema/mode_integration.py +383 -0
- 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/solver/fdtd/schema/runtime.py +319 -0
- 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/solver/fdtd/schema/visualization.py +835 -0
- flexcompute/core/_migration/solver/fdtd/schema/yee.py +284 -0
- 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/config/__init__.py +20 -0
- flexcompute/core/config/app.py +102 -0
- flexcompute/core/config/env.py +52 -0
- flexcompute/core/config/loader.py +826 -0
- flexcompute/core/config/manager.py +325 -0
- flexcompute/core/config/registry.py +81 -0
- flexcompute/core/config/sections.py +41 -0
- flexcompute/core/config/serializer.py +152 -0
- flexcompute/core/log.py +567 -0
- 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/data/_bounds.py +74 -0
- 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/data/py.typed +0 -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.dev3.dist-info/METADATA +73 -0
- flexcompute_core-0.0.1.dev3.dist-info/RECORD +712 -0
- flexcompute_core-0.0.1.dev0.dist-info/METADATA +0 -21
- flexcompute_core-0.0.1.dev0.dist-info/RECORD +0 -5
- {flexcompute_core-0.0.1.dev0.dist-info → flexcompute_core-0.0.1.dev3.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Temporary migration-only namespace for the first flexcompute development release."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Temporary migrated EM contracts for the first flexcompute development release."""
|
|
@@ -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)
|