In [ ]:
import numpy as np
import matplotlib.pyplot as plt
from finitediff.grid import adapted_grid, plot_convergence
from finitediff.grid.tests._common import g, g2
%matplotlib inline
In [ ]:
plot_convergence('grid_additions', [(32,), (32, 0, 0, 0), (32, 0, 0, 0, 0, 0, 0)], g,
extremum_refinement='max')
In [ ]:
plot_convergence('grid_additions', [(32,), (16, 16), (8, 8, 8, 8)], g,
extremum_refinement=(np.argmax, 2, lambda y, i: True))
In [ ]:
plot_convergence('grid_additions', [(32,), (32, 0), (32, 0, 0)], g,
extremum_refinement=(np.argmax, 4, lambda y, i: True))
In [ ]:
plot_convergence('extremum_refinement', [(np.argmax, n, lambda y, i: True) for n in (0, 1, 2, 4, 8)], g,
grid_additions=(8, 8, 8, 8))
In [ ]:
def predicate(y, i):
pred = np.all([v*1.2 < y[i] for j, v in enumerate(y) if j != i])
print(pred)
return pred
extremum_refiners = [(np.argmax, n, predicate) for n in (0, 1, 2, 4, 8)]
plot_convergence('extremum_refinement', extremum_refiners, g, grid_additions=(8, 0, 0, 0))
In [ ]:
plot_convergence('extremum_refinement', extremum_refiners, g, grid_additions=(16, 0, 0, 0))
In [ ]:
plot_convergence('extremum_refinement', extremum_refiners, g, grid_additions=(32, 0, 0, 0))
In [ ]:
def predicate2(y, i):
ok = True
if i > 0:
ok = ok and y[i - 1] < y[i]*0.7
if i < y.size - 1:
ok = ok and y[i + 1] < y[i]*0.7
print(ok)
return ok
extremum_refiners2 = [(np.argmax, n, predicate2) for n in (0, 1, 2, 4, 8)]
plot_convergence('extremum_refinement', extremum_refiners2, g, grid_additions=(16, 0, 0, 0))