From bd6110dee72ff1b9b2a759df53deb3c381406c48 Mon Sep 17 00:00:00 2001 From: Isuru Fernando <isuruf@gmail.com> Date: Wed, 3 Apr 2019 00:47:25 -0500 Subject: [PATCH] Only one constructor for PDE --- sumpy/expansion/__init__.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/sumpy/expansion/__init__.py b/sumpy/expansion/__init__.py index 1010483f..d344d9e8 100644 --- a/sumpy/expansion/__init__.py +++ b/sumpy/expansion/__init__.py @@ -502,14 +502,7 @@ class LinearRecurrenceBasedExpansionTermsWrangler(ExpansionTermsWrangler): class PDE(object): - def __init__(self, dim, nexprs=None, eqs=None): - if nexprs is not None: - eqs = [] - for iexpr in range(nexprs): - mi = [0]*dim - eq = dict() - eq[CoeffIdentifier(tuple(mi), iexpr)] = 1 - eqs.append(eq) + def __init__(self, dim, eqs): self.dim = dim self.eqs = eqs @@ -584,6 +577,16 @@ class PDE(object): return repr(self.eqs) +def make_pde_syms(dim, nexprs): + eqs = [] + for iexpr in range(nexprs): + mi = [0]*dim + eq = dict() + eq[CoeffIdentifier(tuple(mi), iexpr)] = 1 + eqs.append(eq) + return PDE(dim, eqs=eqs) + + class LaplaceExpansionTermsWrangler(LinearRecurrenceBasedExpansionTermsWrangler): init_arg_names = ("order", "dim", "max_mi") @@ -593,7 +596,7 @@ class LaplaceExpansionTermsWrangler(LinearRecurrenceBasedExpansionTermsWrangler) deriv_multiplier=1, max_mi=max_mi) def get_pdes(self): - w = PDE(dim=self.dim, nexprs=1) + w = make_pde_syms(self.dim, 1) return w.laplacian(), 0, 1 def _get_reduced_coeffs(self, nullspace): @@ -618,7 +621,7 @@ class HelmholtzExpansionTermsWrangler(LinearRecurrenceBasedExpansionTermsWrangle deriv_multiplier=multiplier, max_mi=max_mi) def get_pdes(self, **kwargs): - w = PDE(dim=self.dim, nexprs=1) + w = make_pde_syms(self.dim, 1) return (w.laplacian() + w), 0, 1 def _get_reduced_coeffs(self, nullspace): @@ -643,7 +646,7 @@ class StokesExpansionTermsWrangler(LinearRecurrenceBasedExpansionTermsWrangler): deriv_multiplier=multiplier, max_mi=max_mi) def get_pdes(self, **kwargs): - w = PDE(dim=self.dim, nexprs=self.dim+1) + w = make_pde_syms(self.dim, self.dim+1) u = w[:self.dim] p = w[-1] pdes = (u.laplacian() - p.grad() | u.div()) -- GitLab