diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index 7898acb8..78d4a594 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -11707,14 +11707,6 @@ } ], "./sumpy/test/coeff_test_tools.py": [ - { - "code": "reportMissingTypeStubs", - "range": { - "startColumn": 7, - "endColumn": 12, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -11986,6 +11978,22 @@ "endColumn": 38, "lineCount": 1 } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 32, + "endColumn": 33, + "lineCount": 1 + } + }, + { + "code": "reportUnknownMemberType", + "range": { + "startColumn": 61, + "endColumn": 79, + "lineCount": 1 + } } ], "./sumpy/test/curve.py": [ @@ -16445,14 +16453,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 51, - "endColumn": 60, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -16615,14 +16615,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 51, - "endColumn": 60, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -17366,8 +17358,8 @@ { "code": "reportAny", "range": { - "startColumn": 45, - "endColumn": 46, + "startColumn": 19, + "endColumn": 20, "lineCount": 1 } }, diff --git a/sumpy/expansion/local.py b/sumpy/expansion/local.py index ce59f552..04a9cad9 100644 --- a/sumpy/expansion/local.py +++ b/sumpy/expansion/local.py @@ -677,7 +677,7 @@ def get_bessel_arg_scaling(self) -> sym.Expr: kernel = self.kernel.get_base_kernel() assert isinstance(kernel, HelmholtzKernel) - return sym.Symbol(kernel.helmholtz_k_name) + return sym.SpatialConstant(kernel.helmholtz_k_name).as_sympy() class Y2DLocalExpansion(FourierBesselLocalExpansionMixin): @@ -701,7 +701,7 @@ def get_bessel_arg_scaling(self) -> sym.Expr: kernel = self.kernel.get_base_kernel() assert isinstance(kernel, YukawaKernel) - return sym.I * sym.Symbol(kernel.yukawa_lambda_name) + return sym.I * sym.SpatialConstant(kernel.yukawa_lambda_name).as_sympy() # }}} diff --git a/sumpy/kernel.py b/sumpy/kernel.py index 0881c1bd..0988af8d 100644 --- a/sumpy/kernel.py +++ b/sumpy/kernel.py @@ -840,7 +840,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: from sumpy.expansion.diff_op import laplacian, make_identity_diff_op w = make_identity_diff_op(self.dim) - k = sym.Symbol(self.helmholtz_k_name) + k = sym.SpatialConstant(self.helmholtz_k_name).as_sympy() return laplacian(w) + k**2 * w @@ -936,7 +936,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: from sumpy.expansion.diff_op import laplacian, make_identity_diff_op w = make_identity_diff_op(self.dim) - lam = sym.Symbol(self.yukawa_lambda_name) + lam = sym.SpatialConstant(self.yukawa_lambda_name).as_sympy() return laplacian(w) - lam**2 * w @@ -1498,7 +1498,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: from sumpy.expansion.diff_op import laplacian, make_identity_diff_op w = make_identity_diff_op(self.dim) - k = sym.Symbol(self.darcy_impermeability_name) + k = sym.SpatialConstant(self.darcy_impermeability_name).as_sympy() return laplacian(laplacian(w) - k**2 * w) @@ -1772,7 +1772,7 @@ def get_args(self): def get_pde_as_diff_op(self) -> LinearPDESystemOperator: from sumpy.expansion.diff_op import diff, laplacian, make_identity_diff_op - alpha = sym.Symbol(self.heat_alpha_name) + alpha = sym.SpatialConstant(self.heat_alpha_name).as_sympy() w = make_identity_diff_op(self.dim - 1, time_dependent=True) t_mi = (*([0] * (self.dim - 1)), 1) @@ -1845,8 +1845,8 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: make_identity_diff_op, ) - mu = sym.Symbol(self.viscosity_mu_name) - nu = sym.Symbol(self.poisson_ratio_name) + mu = sym.SpatialConstant(self.viscosity_mu_name).as_sympy() + nu = sym.SpatialConstant(self.poisson_ratio_name).as_sympy() u = make_identity_diff_op(self.dim, self.dim) return mu * laplacian(u) + mu / (1 - 2 * nu) * gradient(divergence(u)) @@ -1912,8 +1912,8 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: make_identity_diff_op, ) - mu = sym.Symbol(self.viscosity_mu_name) - nu = sym.Symbol(self.poisson_ratio_name) + mu = sym.SpatialConstant(self.viscosity_mu_name).as_sympy() + nu = sym.SpatialConstant(self.poisson_ratio_name).as_sympy() u = make_identity_diff_op(self.dim, self.dim) return mu * laplacian(u) + mu / (1 - 2 * nu) * gradient(divergence(u)) @@ -1970,7 +1970,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: make_identity_diff_op, ) - mu = sym.Symbol(self.viscosity_mu_name) + mu = sym.SpatialConstant(self.viscosity_mu_name).as_sympy() u_and_p = make_identity_diff_op(self.dim, self.dim + 1) u = u_and_p[:self.dim] p = u_and_p[self.dim] @@ -2029,7 +2029,7 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: make_identity_diff_op, ) - mu = sym.Symbol(self.viscosity_mu_name) + mu = sym.SpatialConstant(self.viscosity_mu_name).as_sympy() u_and_p = make_identity_diff_op(self.dim, self.dim + 1) u = u_and_p[:self.dim] p = u_and_p[self.dim] @@ -2097,8 +2097,8 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: make_identity_diff_op, ) - mu = sym.Symbol(self.viscosity_mu_name) - k = sym.Symbol(self.darcy_impermeability_name) + mu = sym.SpatialConstant(self.viscosity_mu_name).as_sympy() + k = sym.SpatialConstant(self.darcy_impermeability_name).as_sympy() u_and_p = make_identity_diff_op(self.dim, self.dim + 1) u = u_and_p[:self.dim] @@ -2168,8 +2168,8 @@ def get_pde_as_diff_op(self) -> LinearPDESystemOperator: make_identity_diff_op, ) - mu = sym.Symbol(self.viscosity_mu_name) - k = sym.Symbol(self.darcy_impermeability_name) + mu = sym.SpatialConstant(self.viscosity_mu_name).as_sympy() + k = sym.SpatialConstant(self.darcy_impermeability_name).as_sympy() u_and_p = make_identity_diff_op(self.dim, self.dim + 1) u = u_and_p[:self.dim] diff --git a/sumpy/test/coeff_test_tools.py b/sumpy/test/coeff_test_tools.py index fa1d49af..2370a9cf 100644 --- a/sumpy/test/coeff_test_tools.py +++ b/sumpy/test/coeff_test_tools.py @@ -26,7 +26,8 @@ """ import numpy as np -import sympy as sp + +import sumpy.symbolic as sym def to_scalar(val): @@ -60,9 +61,4 @@ def matvec(self, vec): def get_repl_dict(kernel, extra_kwargs): """Numeric substitution for symbolic kernel parameters.""" - repl_dict = {} - if "lam" in extra_kwargs: - repl_dict[sp.Symbol("lam")] = extra_kwargs["lam"] - if "k" in extra_kwargs: - repl_dict[sp.Symbol("k")] = extra_kwargs["k"] - return repl_dict + return {sym.SpatialConstant(k).as_sympy(): v for k, v in extra_kwargs.items()} diff --git a/sumpy/test/test_misc.py b/sumpy/test/test_misc.py index 388e3f22..15fbba0e 100644 --- a/sumpy/test/test_misc.py +++ b/sumpy/test/test_misc.py @@ -112,7 +112,10 @@ def __repr__(self) -> str: return str(self.kernel) def pde_func(self, cp, pot): - subs_dict = {sym.Symbol(k): v for k, v in self.extra_kwargs.items()} + subs_dict = { + sym.SpatialConstant(k).as_sympy(): v + for k, v in self.extra_kwargs.items() + } result = 0 for ident, coeff in self.eq.items(): lresult = pot @@ -720,8 +723,8 @@ def test_as_scalar_pde_elasticity(): def test_as_scalar_pde_brinkman(): dim = 3 - mu = sym.Symbol("mu") - k = sym.Symbol("k") + mu = sym.SpatialConstant("mu").as_sympy() + k = sym.SpatialConstant("k").as_sympy() # NOTE: momentum + incompressibility equations diff_op = make_identity_diff_op(dim, dim + 1) @@ -765,7 +768,7 @@ def test_elasticity_pickle(): def test_to_fourier_matrix_scalar() -> None: ks = sym.make_sym_vector("k", 3) - lam = sym.Symbol("lam") + lam = sym.SpatialConstant("lam").as_sympy() # LaplaceKernel kernel = LaplaceKernel(2) @@ -777,11 +780,11 @@ def test_to_fourier_matrix_scalar() -> None: assert mat == sym.Matrix([[-ks[0]**2 - ks[1]**2 - ks[2]**2]]) # YukawaKernel - kernel = YukawaKernel(2, yukawa_lambda_name=lam.name) + kernel = YukawaKernel(2, yukawa_lambda_name="lam") mat = to_fourier_matrix(kernel.get_pde_as_diff_op(), ks) assert mat == sym.Matrix([[-ks[0]**2 - ks[1]**2 - lam**2]]) - kernel = YukawaKernel(3, yukawa_lambda_name=lam.name) + kernel = YukawaKernel(3, yukawa_lambda_name="lam") mat = to_fourier_matrix(kernel.get_pde_as_diff_op(), ks) assert mat == sym.Matrix([[-ks[0]**2 - ks[1]**2 - ks[2]**2 - lam**2]]) @@ -793,9 +796,9 @@ def test_to_fourier_matrix_scalar() -> None: @pytest.mark.parametrize("dim", [2, 3]) def test_to_fourier_matrix_stokes(dim: int) -> None: ks = sym.make_sym_vector("k", dim) - mu = sym.Symbol("mu") + mu = sym.SpatialConstant("mu").as_sympy() - kernel = StokesletSystemKernel(dim=dim, viscosity_mu_name=mu.name) + kernel = StokesletSystemKernel(dim=dim, viscosity_mu_name="mu") pde = kernel.get_pde_as_diff_op() k_sqr = sum(k**2 for k in ks) @@ -826,13 +829,13 @@ def test_to_fourier_matrix_stokes(dim: int) -> None: @pytest.mark.parametrize("dim", [2, 3]) def test_to_fourier_matrix_elasticity(dim: int) -> None: ks = sym.make_sym_vector("k", dim) - mu = sym.Symbol("mu") - nu = sym.Symbol("nu") + mu = sym.SpatialConstant("mu").as_sympy() + nu = sym.SpatialConstant("nu").as_sympy() mn = mu / (1 - 2 * nu) kernel = ElasticitySystemKernel(dim, - viscosity_mu_name=mu.name, - poisson_ratio_name=nu.name) + viscosity_mu_name="mu", + poisson_ratio_name="nu") pde = kernel.get_pde_as_diff_op() k_sqr = sum(k**2 for k in ks) @@ -861,12 +864,12 @@ def test_to_fourier_matrix_elasticity(dim: int) -> None: @pytest.mark.parametrize("dim", [2, 3]) def test_to_fourier_matrix_brinkman(dim: int) -> None: ks = sym.make_sym_vector("k", dim) - mu = sym.Symbol("mu") - kappa = sym.Symbol("k") + mu = sym.SpatialConstant("mu").as_sympy() + kappa = sym.SpatialConstant("k").as_sympy() kernel = BrinkmanletSystemKernel(dim, - viscosity_mu_name=mu.name, - darcy_impermeability_name=kappa.name) + viscosity_mu_name="mu", + darcy_impermeability_name="k") pde = kernel.get_pde_as_diff_op() k_sqr = sum(k**2 for k in ks)