Skip to content

Commit bcf7112

Browse files
yaugenst-flexdaquinteroflex
authored andcommitted
refactor: extract autograd constants to dedicated module
- Create tidy3d/components/autograd/constants.py - Move MAX_NUM_TRACED_STRUCTURES and MAX_NUM_ADJOINT_PER_FWD from autograd.py - Move PTS_PER_WVL_MAT_CYLINDER_DISCRETIZE from primitives.py
1 parent daedbca commit bcf7112

File tree

4 files changed

+12
-8
lines changed

4 files changed

+12
-8
lines changed

tests/test_components/test_autograd.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919

2020
import tidy3d as td
2121
import tidy3d.web as web
22+
from tidy3d.components.autograd.constants import MAX_NUM_TRACED_STRUCTURES
2223
from tidy3d.components.autograd.derivative_utils import DerivativeInfo
2324
from tidy3d.components.autograd.utils import is_tidy_box
2425
from tidy3d.components.data.data_array import DataArray
2526
from tidy3d.exceptions import AdjointError
2627
from tidy3d.plugins.polyslab import ComplexPolySlab
2728
from tidy3d.web import run, run_async
28-
from tidy3d.web.api.autograd.autograd import MAX_NUM_TRACED_STRUCTURES
2929
from tidy3d.web.api.autograd.utils import FieldMap
3030

3131
from ..utils import SIM_FULL, AssertLogLevel, run_emulated, tracer_arr
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# interval space for adjoint monitors (half of sim resolution)
2+
from __future__ import annotations
3+
4+
# default number of points per wvl in material for discretizing cylinder in autograd derivative
5+
PTS_PER_WVL_MAT_CYLINDER_DISCRETIZE = 10
6+
7+
MAX_NUM_TRACED_STRUCTURES = 500
8+
MAX_NUM_ADJOINT_PER_FWD = 10

tidy3d/components/geometry/primitives.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import shapely
1212

1313
from tidy3d.components.autograd import AutogradFieldMap, TracedSize1D
14+
from tidy3d.components.autograd.constants import PTS_PER_WVL_MAT_CYLINDER_DISCRETIZE
1415
from tidy3d.components.autograd.derivative_utils import DerivativeInfo
1516
from tidy3d.components.base import cached_property, skip_if_fields_missing
1617
from tidy3d.components.types import Axis, Bound, Coordinate, MatrixReal4x4, Shapely
@@ -30,9 +31,6 @@
3031
# Default number of points to discretize polyslab in `Cylinder.to_polyslab()`
3132
_N_PTS_CYLINDER_POLYSLAB = 51
3233

33-
# Default number of points per wvl in material for discretizing cylinder in autograd derivative
34-
_PTS_PER_WVL_MAT_CYLINDER_DISCRETIZE = 10
35-
3634

3735
class Sphere(base.Centered, base.Circular):
3836
"""Spherical geometry.
@@ -291,7 +289,7 @@ def _compute_derivatives(self, derivative_info: DerivativeInfo) -> AutogradField
291289
wvls_in_circumference = circumference / wvl_mat
292290

293291
num_pts_circumference = int(
294-
np.ceil(_PTS_PER_WVL_MAT_CYLINDER_DISCRETIZE * wvls_in_circumference)
292+
np.ceil(PTS_PER_WVL_MAT_CYLINDER_DISCRETIZE * wvls_in_circumference)
295293
)
296294
num_pts_circumference = max(3, num_pts_circumference)
297295

tidy3d/web/api/autograd/autograd.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import tidy3d as td
1616
from tidy3d.components.autograd import AutogradFieldMap, get_static
17+
from tidy3d.components.autograd.constants import MAX_NUM_ADJOINT_PER_FWD, MAX_NUM_TRACED_STRUCTURES
1718
from tidy3d.components.autograd.derivative_utils import DerivativeInfo
1819
from tidy3d.exceptions import AdjointError
1920
from tidy3d.web.api.asynchronous import DEFAULT_DATA_DIR
@@ -35,9 +36,6 @@
3536
SIM_VJP_FILE = "output/autograd_sim_vjp.hdf5"
3637
SIM_FIELDS_KEYS_FILE = "autograd_sim_fields_keys.hdf5"
3738

38-
MAX_NUM_TRACED_STRUCTURES = 500
39-
MAX_NUM_ADJOINT_PER_FWD = 10
40-
4139
# default value for whether to do local gradient calculation (True) or server side (False)
4240
LOCAL_GRADIENT = False
4341

0 commit comments

Comments
 (0)