Skip to content

Commit

Permalink
Adjust grid_size when resolution or geometry_lattice are changed
Browse files Browse the repository at this point in the history
  • Loading branch information
ChristopherHogan committed Dec 31, 2018
1 parent 7c303e7 commit 06c88ab
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 4 deletions.
6 changes: 6 additions & 0 deletions libpympb/pympb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1620,6 +1620,12 @@ std::vector<int> mode_solver::get_dims() {
return dims;
}

void mode_solver::set_grid_size(vector3 gs) {
grid_size.x = gs.x;
grid_size.y = gs.y;
grid_size.z = gs.z;
}

int mode_solver::get_libctl_dimensions() {
return dimensions;
}
Expand Down
1 change: 1 addition & 0 deletions libpympb/pympb.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ struct mode_solver {
void set_curfield_type(char t);
std::string get_parity_string();
std::vector<int> get_dims();
void set_grid_size(vector3 gs);
int get_libctl_dimensions();
void set_libctl_dimensions(int val);
bool get_libctl_ensure_periodicity();
Expand Down
17 changes: 13 additions & 4 deletions python/solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,7 @@ def __init__(self,
self.k_split_index = 0
self.eigensolver_iters = []

grid_size = self._get_grid_size()

if self.optimize_grid_size:
grid_size = self._optimize_grid_size(grid_size)
grid_size = self._adjust_grid_size()

if type(self.default_material) is not mp.Medium and callable(self.default_material):
self.default_material.eps = False
Expand Down Expand Up @@ -175,6 +172,8 @@ def resolution(self, val):

if self.mode_solver:
self.mode_solver.resolution = self._resolution
grid_size = self._adjust_grid_size()
self.mode_solver.set_grid_size(grid_size)

@property
def geometry_lattice(self):
Expand All @@ -185,6 +184,8 @@ def geometry_lattice(self, val):
self._geometry_lattice = val
if self.mode_solver:
self.mode_solver.set_libctl_geometry_lattice(val)
grid_size = self._adjust_grid_size()
self.mode_solver.set_grid_size(grid_size)

@property
def tolerance(self):
Expand Down Expand Up @@ -306,6 +307,14 @@ def eigensolver_block_size(self):
def eigensolver_block_size(self, val):
self.mode_solver.eigensolver_block_size = val

def _adjust_grid_size(self):
grid_size = self._get_grid_size()

if self.optimize_grid_size:
grid_size = self._optimize_grid_size(grid_size)

return grid_size

def allow_negative_epsilon(self):
self.is_negative_epsilon_ok = True
self.target_freq = 1 / mp.inf
Expand Down

0 comments on commit 06c88ab

Please sign in to comment.