Skip to content

Commit

Permalink
Bump version
Browse files Browse the repository at this point in the history
  • Loading branch information
mikaem committed Mar 10, 2023
1 parent 8479a4d commit 51be849
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 8 deletions.
2 changes: 1 addition & 1 deletion shenfun/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"""
#pylint: disable=wildcard-import,no-name-in-module

__version__ = '4.0.2'
__version__ = '4.1.0'
__author__ = 'Mikael Mortensen'

import numpy as np
Expand Down
10 changes: 8 additions & 2 deletions shenfun/spectralbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -1976,13 +1976,19 @@ def orderednames(self):
return ['L'+bci for bci in sorted(self['left'].keys())] + ['R'+bci for bci in sorted(self['right'].keys())]

def orderedvals(self):
return [self['left'][bci] for bci in sorted(self['left'].keys())] + [self['right'][bci] for bci in sorted(self['right'].keys())]
ls = []
for lr in ('left', 'right'):
for key in sorted(self[lr].keys()):
val = self[lr][key]
ls.append(val[1] if isinstance(val, (tuple, list)) else val)
return ls
#return [self['left'][bci] for bci in sorted(self['left'].keys())] + [self['right'][bci] for bci in sorted(self['right'].keys())]

def num_bcs(self):
return len(self.orderedvals())

def num_derivatives(self):
n = {'D': 0, 'N': 1, 'N2': 2, 'N3': 3, 'N4': 4}
n = {'D': 0, 'R': 0, 'N': 1, 'N2': 2, 'N3': 3, 'N4': 4}
num_diff = 0
for val in self.values():
for k in val:
Expand Down
23 changes: 18 additions & 5 deletions shenfun/utilities/findbasis.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,20 @@ def get_stencil_matrix(bcs, family, alpha=None, beta=None, gn=1):
bcs = BoundaryConditions(bcs)
bc = {'D': 0, 'N': 1, 'N2': 2, 'N3': 3, 'N4': 4}
lr = {'L': 0, 'R': 1}
lra = {'L': 'left', 'R': 'right'}
s = []
r = []
for key in bcs.orderednames():
k, v = key[0], key[1:]
f = bnd_values(k=bc[v])[lr[k]]
s.append([sp.simplify(f(n+j)) for j in range(1, 1+bcs.num_bcs())])
r.append(-sp.simplify(f(n)))
if v == 'R':
alfa = bcs[lra[k]]['R'][0]
f = [bnd_values(k=0)[lr[k]], bnd_values(k=1)[lr[k]]]
s.append([sp.simplify(f[0](n+j)+alfa*f[1](n+j)) for j in range(1, 1+bcs.num_bcs())])
r.append(-sp.simplify(f[0](n)+alfa*f[1](n)))
else:
f = bnd_values(k=bc[v])[lr[k]]
s.append([sp.simplify(f(n+j)) for j in range(1, 1+bcs.num_bcs())])
r.append(-sp.simplify(f(n)))
A = sp.Matrix(s)
b = sp.Matrix(r)
M = sp.simplify(A.solve(b))
Expand Down Expand Up @@ -89,11 +96,17 @@ def get_bc_basis(bcs, family, alpha=None, beta=None, gn=1):
def _computematrix(first):
bc = {'D': 0, 'N': 1, 'N2': 2, 'N3': 3, 'N4': 4}
lr = {'L': 0, 'R': 1}
lra = {'L': 'left', 'R': 'right'}
s = []
for key in bcs.orderednames():
k, v = key[0], key[1:]
f = bnd_values(k=bc[v])[lr[k]]
s.append([sp.simplify(f(j)) for j in range(first, first+bcs.num_bcs())])
if v == 'R':
alfa = bcs[lra[k]]['R'][0]
f = [bnd_values(k=0)[lr[k]], bnd_values(k=1)[lr[k]]]
s.append([sp.simplify(f[0](j)+alfa*f[1](j)) for j in range(first, first+bcs.num_bcs())])
else:
f = bnd_values(k=bc[v])[lr[k]]
s.append([sp.simplify(f(j)) for j in range(first, first+bcs.num_bcs())])

A = sp.Matrix(s)
s = sp.simplify(A.solve(sp.eye(bcs.num_bcs())).T)
Expand Down

0 comments on commit 51be849

Please sign in to comment.