Skip to content

Commit 94eb9e6

Browse files
committed
Make a package
1 parent a383107 commit 94eb9e6

28 files changed

+73
-65
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Alternatively you may remove it as a dependency, as it isn't used explicitly, bu
1515
Do note that during testing I had some issues with memory usage using the default solvers from scipy, while the umfpack solvers didn't seem to have that issue.
1616

1717
## Configuring the project
18-
[`settings.py`](./settings.py) contains some variables that are read by the rest of the project that may be changed to alter the behaviour of the code.
18+
[`numdiff/settings.py`](./numdiff/settings.py) contains some variables that are read by the rest of the project that may be changed to alter the behaviour of the code.
1919
These are documented in the file itself.
2020
The most important of these may be `FINE_PARAMETERS` which toggles whether the tasks will use parameters that are easy to run (< 1 min), or that give the most detailed plots (>> 5 min).
2121

main.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import matplotlib.pyplot as plt
1313

14-
from settings import IMAGES_FOLDER, TASK_KWARGS, USE_MULTIPROCESSING
14+
from numdiff.settings import IMAGES_FOLDER, TASK_KWARGS, USE_MULTIPROCESSING
1515
from tasks.advection_diffusion import (
1616
task_6_solution,
1717
task_6b_asymptotic,

numdiff/__init__.py

Whitespace-only changes.
File renamed without changes.
File renamed without changes.

equations.py renamed to numdiff/equations.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import numpy as np
22
import scipy.sparse.linalg
33

4-
from cache import cache, cached_property
5-
from helpers import central_difference
4+
from .cache import cache, cached_property
5+
from .helpers import central_difference
66

77

88
class Equation:

examples.py renamed to numdiff/examples.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import matplotlib.pyplot as plt
22
import numpy as np
33

4-
from conditions import Dirichlet, Neumann
5-
from equations import HeatEquation, InviscidBurgers, InviscidBurgers2, PeriodicKdV
6-
from plotting import solve_and_plot
7-
from poisson import amr, poisson
8-
from refine import refine_mesh
9-
from refinement_utilities import calculate_relative_l2_error, make_scheme_solver
10-
from schemes import RK4, Euler, ThetaMethod
4+
from .conditions import Dirichlet, Neumann
5+
from .equations import HeatEquation, InviscidBurgers, InviscidBurgers2, PeriodicKdV
6+
from .plotting import solve_and_plot
7+
from .poisson import amr, poisson
8+
from .refine import refine_mesh
9+
from .refinement_utilities import calculate_relative_l2_error, make_scheme_solver
10+
from .schemes import RK4, Euler, ThetaMethod
1111

1212

1313
class HeatEuler(Euler, HeatEquation):

fem.py renamed to numdiff/fem.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import scipy.sparse.linalg
33
from scipy.interpolate import interp1d
44

5-
from integrate import composite, integrate
6-
from refine import refine_after
5+
from .integrate import composite, integrate
6+
from .refine import refine_after
77

88

99
def phi_up(i, x, x_axis):

helpers.py renamed to numdiff/helpers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import numpy as np
22
import scipy.sparse
33

4-
from integrate import composite
4+
from .integrate import composite
55

66

77
def central_difference(N, power=2, format="lil"):

integrate.py renamed to numdiff/integrate.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from numpy.polynomial.legendre import leggauss
22

3-
from cache import cache
3+
from .cache import cache
44

55

66
@cache

interpolate.py renamed to numdiff/interpolate.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from scipy.interpolate import BPoly, CubicSpline
22

3-
from nonuniform import has_uniform_steps, liu_coefficients
3+
from .nonuniform import has_uniform_steps, liu_coefficients
44

55

66
def interpolate(x, y, calculate_derivatives=None, bc_type="not-a-knot"):
File renamed without changes.
File renamed without changes.
File renamed without changes.

poisson.py renamed to numdiff/poisson.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import numpy as np
44
import scipy.sparse.linalg
55

6-
from conditions import Neumann
7-
from helpers import central_difference
8-
from integrate import integrate
9-
from interpolate import calculate_poisson_derivatives, interpolate
10-
from nonuniform import has_uniform_steps, liu_coefficients
11-
from refine import refine_after, select_max
6+
from .conditions import Neumann
7+
from .helpers import central_difference
8+
from .integrate import integrate
9+
from .interpolate import calculate_poisson_derivatives, interpolate
10+
from .nonuniform import has_uniform_steps, liu_coefficients
11+
from .refine import refine_after, select_max
1212

1313
# https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.lsmr.html
1414
explain_istop = {

refine.py renamed to numdiff/refine.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import numpy as np
55

6-
from settings import INFO_PRINTING
6+
from .settings import INFO_PRINTING
77

88

99
def refine_after(x, indicies):

refinement_utilities.py renamed to numdiff/refinement_utilities.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import numpy as np
44
from scipy.interpolate import interp1d
55

6-
from fem import FEM_uniform
7-
from helpers import relative_l2_error, relative_L2_error
8-
from interpolate import calculate_poisson_derivatives, interpolate
9-
from laplace import laplace
10-
from poisson import amr, poisson
6+
from .fem import FEM_uniform
7+
from .helpers import relative_l2_error, relative_L2_error
8+
from .interpolate import calculate_poisson_derivatives, interpolate
9+
from .laplace import laplace
10+
from .poisson import amr, poisson
1111

1212

1313
def calculate_relative_l2_error(x, analytical, numerical):
File renamed without changes.

schemes.py renamed to numdiff/schemes.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import scipy.sparse.linalg
33
from scipy.sparse import eye as sparse_eye
44

5-
from cache import cache
6-
from ring_2d import Ring2D
5+
from .cache import cache
6+
from .ring_2d import Ring2D
77

88

99
class Scheme:

settings.py renamed to numdiff/settings.py

+2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414

1515
# Print info when running tasks
1616
INFO_PRINTING = True
17+
INFO_PRINTING = False
1718

1819
# Use fine parameters that take longer to run
1920
FINE_PARAMETERS = False
2021

2122
# Use multiprocessing for running multiple tasks at once
2223
USE_MULTIPROCESSING = False
24+
USE_MULTIPROCESSING = True
2325

2426
if INFO_PRINTING and USE_MULTIPROCESSING:
2527
print(

tasks/advection_diffusion.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
import matplotlib.pyplot as plt
55
import numpy as np
66

7-
from conditions import Neumann
8-
from equations import (
7+
from numdiff.conditions import Neumann
8+
from numdiff.equations import (
99
AdvectionDiffusion2ndOrder,
1010
PeriodicAdvectionDiffusion1stOrder,
1111
PeriodicAdvectionDiffusion2ndOrder,
1212
PeriodicAdvectionDiffusion4thOrder,
1313
)
14-
from refine import refine_mesh
15-
from refinement_utilities import calculate_relative_l2_error, make_scheme_solver
16-
from schemes import ThetaMethod
17-
from settings import FINE_PARAMETERS
14+
from numdiff.refine import refine_mesh
15+
from numdiff.refinement_utilities import calculate_relative_l2_error, make_scheme_solver
16+
from numdiff.schemes import ThetaMethod
17+
from numdiff.settings import FINE_PARAMETERS
1818

1919

2020
def task_6_solution():

tasks/burgers.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import matplotlib.pyplot as plt
22
import numpy as np
33

4-
from conditions import Dirichlet
5-
from equations import InviscidBurgers, InviscidBurgers2
6-
from schemes import RK4
7-
from settings import FINE_PARAMETERS
4+
from numdiff.conditions import Dirichlet
5+
from numdiff.equations import InviscidBurgers, InviscidBurgers2
6+
from numdiff.schemes import RK4
7+
from numdiff.settings import FINE_PARAMETERS
88

99

1010
class BurgersRK4(RK4, InviscidBurgers):

tasks/fem_poisson.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
import matplotlib.pyplot as plt
44
import numpy as np
55

6-
from fem import AFEM
7-
from refine import refine_mesh, simple_select_avg, simple_select_max
8-
from refinement_utilities import calculate_relative_L2_error_FEM, make_FEM_solver
6+
from numdiff.fem import AFEM
7+
from numdiff.refine import refine_mesh, simple_select_avg, simple_select_max
8+
from numdiff.refinement_utilities import (
9+
calculate_relative_L2_error_FEM,
10+
make_FEM_solver,
11+
)
912

1013

1114
def _task_5_afem_solution(f, u, a, b, u_text, deg=10, tol=1e-3):

tasks/heat_eqn.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
import numpy as np
55
from scipy.interpolate import interp1d
66

7-
from conditions import Neumann
8-
from equations import HeatEquation
9-
from refine import refine_mesh
10-
from refinement_utilities import (
7+
from numdiff.conditions import Neumann
8+
from numdiff.equations import HeatEquation
9+
from numdiff.refine import refine_mesh
10+
from numdiff.refinement_utilities import (
1111
calculate_relative_l2_error,
1212
make_calculate_relative_L2_error,
1313
make_scheme_solver,
1414
)
15-
from schemes import ThetaMethod
16-
from settings import FINE_PARAMETERS
15+
from numdiff.schemes import ThetaMethod
16+
from numdiff.settings import FINE_PARAMETERS
1717

1818

1919
class HeatTheta(ThetaMethod, HeatEquation):

tasks/kdv.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import matplotlib.pyplot as plt
44
import numpy as np
55

6-
from equations import PeriodicKdV
7-
from helpers import l2
8-
from refine import refine_mesh
9-
from refinement_utilities import calculate_relative_l2_error, make_scheme_solver
10-
from schemes import ThetaMethod
11-
from settings import FINE_PARAMETERS
6+
from numdiff.equations import PeriodicKdV
7+
from numdiff.helpers import l2
8+
from numdiff.refine import refine_mesh
9+
from numdiff.refinement_utilities import calculate_relative_l2_error, make_scheme_solver
10+
from numdiff.schemes import ThetaMethod
11+
from numdiff.settings import FINE_PARAMETERS
1212

1313

1414
class KdVTheta(ThetaMethod, PeriodicKdV):

tasks/laplace_2D.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import matplotlib.pyplot as plt
22
import numpy as np
33

4-
from laplace import analytical, laplace
5-
from refine import refine_mesh
6-
from refinement_utilities import calculate_relative_l2_error, make_laplace_solver
7-
from settings import FINE_PARAMETERS
4+
from numdiff.laplace import analytical, laplace
5+
from numdiff.refine import refine_mesh
6+
from numdiff.refinement_utilities import (
7+
calculate_relative_l2_error,
8+
make_laplace_solver,
9+
)
10+
from numdiff.settings import FINE_PARAMETERS
811

912

1013
def task_3_solution():

tasks/poisson_1D.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import matplotlib.pyplot as plt
22
import numpy as np
33

4-
from conditions import Dirichlet, Neumann
5-
from poisson import poisson
6-
from refine import refine_mesh, select_avg, select_max
7-
from refinement_utilities import (
4+
from numdiff.conditions import Dirichlet, Neumann
5+
from numdiff.poisson import poisson
6+
from numdiff.refine import refine_mesh, select_avg, select_max
7+
from numdiff.refinement_utilities import (
88
calculate_relative_l2_error,
99
make_amr_poisson_solver,
1010
make_calculate_relative_L2_error_poisson,
1111
make_poisson_solver,
1212
)
13-
from settings import FINE_PARAMETERS
13+
from numdiff.settings import FINE_PARAMETERS
1414

1515

1616
def poisson_1D_UMR(

tasks/task.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import matplotlib.pyplot as plt
66

7-
from settings import IMAGES_FOLDER
7+
from numdiff.settings import IMAGES_FOLDER
88

99

1010
@dataclass

0 commit comments

Comments
 (0)