diff --git a/pystencils/boundaries/boundaryhandling.py b/pystencils/boundaries/boundaryhandling.py index dcdd9e09e520c71fdfcc34d59e8de7c7d2edb4c0..e9fe218b49e2c69b15c12afb5101453f5b1b1153 100644 --- a/pystencils/boundaries/boundaryhandling.py +++ b/pystencils/boundaries/boundaryhandling.py @@ -1,3 +1,5 @@ +from functools import lru_cache + import numpy as np import sympy as sp @@ -6,7 +8,6 @@ from pystencils.astnodes import SympyAssignment from pystencils.backends.cbackend import CustomCodeNode from pystencils.boundaries.createindexlist import ( create_boundary_index_array, numpy_data_type_for_boundary_object) -from pystencils.cache import memorycache from pystencils.typing import TypedSymbol, create_type from pystencils.datahandling.pycuda import PyCudaArrayHandler from pystencils.field import Field @@ -378,15 +379,15 @@ class BoundaryDataSetter: assert coord < self.dim return self.index_array[self.coord_map[coord]] + self.offset[coord] - self.ghost_layers + 0.5 - @memorycache() + @lru_cache() def link_offsets(self): return self.stencil[self.index_array['dir']] - @memorycache() + @lru_cache() def link_positions(self, coord): return self.non_boundary_cell_positions(coord) + 0.5 * self.link_offsets()[:, coord] - @memorycache() + @lru_cache() def boundary_cell_positions(self, coord): return self.non_boundary_cell_positions(coord) + self.link_offsets()[:, coord] diff --git a/pystencils/fd/spatial.py b/pystencils/fd/spatial.py index 2355906a85a4a5c6ff43af89f6d414ef9da41f76..387a03bac6c0c6f88b92851bc18b7d752d64b036 100644 --- a/pystencils/fd/spatial.py +++ b/pystencils/fd/spatial.py @@ -1,9 +1,9 @@ +from functools import lru_cache from typing import Tuple import sympy as sp from pystencils.astnodes import LoopOverCoordinate -from pystencils.cache import memorycache from pystencils.fd import Diff from pystencils.field import Field from pystencils.transformations import generic_visit @@ -136,7 +136,7 @@ def discretize_spatial_staggered(expr, dx, stencil=fd_stencils_standard): # -------------------------------------- special stencils -------------------------------------------------------------- -@memorycache(maxsize=1) +@lru_cache(maxsize=1) def forth_order_2d_derivation() -> Tuple[FiniteDifferenceStencilDerivation.Result, ...]: # Symmetry, isotropy and 4th order conditions are not enough to fully specify the stencil # one weight has to be specifically set to a somewhat arbitrary value