Skip to content

Commit 1c5c42b

Browse files
committed
#704 changed init of spatial methods
1 parent c435a1e commit 1c5c42b

File tree

7 files changed

+37
-22
lines changed

7 files changed

+37
-22
lines changed

pybamm/discretisations/discretisation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def __init__(self, mesh=None, spatial_methods=None):
4444
spatial_methods["separator"] = method
4545
spatial_methods["positive electrode"] = method
4646
self._spatial_methods = {
47-
dom: method(mesh) for dom, method in spatial_methods.items()
47+
dom: method.build(mesh) for dom, method in spatial_methods.items()
4848
}
4949
self.bcs = {}
5050
self.y_slices = {}

pybamm/models/full_battery_models/base_battery_model.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,17 @@ def default_submesh_types(self):
121121
@property
122122
def default_spatial_methods(self):
123123
base_spatial_methods = {
124-
"macroscale": pybamm.FiniteVolume,
125-
"negative particle": pybamm.FiniteVolume,
126-
"positive particle": pybamm.FiniteVolume,
124+
"macroscale": pybamm.FiniteVolume(),
125+
"negative particle": pybamm.FiniteVolume(),
126+
"positive particle": pybamm.FiniteVolume(),
127127
}
128128
if self.options["dimensionality"] == 0:
129129
# 0D submesh - use base spatial method
130-
base_spatial_methods["current collector"] = pybamm.ZeroDimensionalMethod
130+
base_spatial_methods["current collector"] = pybamm.ZeroDimensionalMethod()
131131
elif self.options["dimensionality"] == 1:
132-
base_spatial_methods["current collector"] = pybamm.FiniteVolume
132+
base_spatial_methods["current collector"] = pybamm.FiniteVolume()
133133
elif self.options["dimensionality"] == 2:
134-
base_spatial_methods["current collector"] = pybamm.ScikitFiniteElement
134+
base_spatial_methods["current collector"] = pybamm.ScikitFiniteElement()
135135
return base_spatial_methods
136136

137137
@property

pybamm/spatial_methods/finite_volume.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ class FiniteVolume(pybamm.SpatialMethod):
3232
**Extends:"": :class:`pybamm.SpatialMethod`
3333
"""
3434

35-
def __init__(self, mesh):
36-
super().__init__(mesh)
35+
def __init__(self, options=None):
36+
super().__init__(options)
3737

38-
# there is no way to set this at the moment
39-
self.options = {"extrapolation": {"order": "quadratic", "use bcs": True}}
38+
def build(self, mesh):
39+
super().build(mesh)
4040

4141
# add npts_for_broadcast to mesh domains for this particular discretisation
4242
for dom in mesh.keys():
@@ -731,7 +731,7 @@ def boundary_value_or_flux(self, symbol, discretised_child, bcs=None):
731731
elif isinstance(symbol, pybamm.BoundaryGradient):
732732

733733
if use_bcs and pybamm.has_bc_condition_of_form(
734-
child, symbol.side, bcs, "Neumann"
734+
child, symbol.side, bcs, "Neumann"
735735
):
736736
# just use the value from the bc: f'(x*)
737737
sub_matrix = csr_matrix((1, prim_pts))

pybamm/spatial_methods/scikit_finite_element.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ class ScikitFiniteElement(pybamm.SpatialMethod):
2626
**Extends:"": :class:`pybamm.SpatialMethod`
2727
"""
2828

29-
def __init__(self, mesh):
30-
super().__init__(mesh)
29+
def __init__(self, options=None):
30+
super().__init__(options)
31+
32+
def build(self, mesh):
33+
super().build(mesh)
3134
# add npts_for_broadcast to mesh domains for this particular discretisation
3235
for dom in mesh.keys():
3336
for i in range(len(mesh[dom])):

pybamm/spatial_methods/spatial_method.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,14 @@ class SpatialMethod:
2020
Contains all the submeshes for discretisation
2121
"""
2222

23-
def __init__(self, mesh):
23+
def __init__(self, options=None):
24+
25+
self.options = {"extrapolation": {"order": "quadratic", "use bcs": True}}
26+
27+
if options:
28+
self.options.update(options)
29+
30+
def build(self, mesh):
2431
# add npts_for_broadcast to mesh domains for this particular discretisation
2532
for dom in mesh.keys():
2633
for i in range(len(mesh[dom])):

pybamm/spatial_methods/zero_dimensional_method.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ class ZeroDimensionalMethod(pybamm.SpatialMethod):
1717
**Extends** : :class:`pybamm.SpatialMethod`
1818
"""
1919

20-
def __init__(self, mesh=None):
20+
def __init__(self, options=None):
21+
super().__init__(options)
22+
23+
def build(self, mesh):
2124
self._mesh = mesh
2225

2326
def mass_matrix(self, symbol, boundary_conditions):

tests/unit/test_spatial_methods/test_finite_volume/test_extrapolation.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22
# Test for the operator class
33
#
44
import pybamm
5-
from tests import (
6-
get_mesh_for_testing,
7-
get_p2d_mesh_for_testing,
8-
get_1p1d_mesh_for_testing,
9-
)
5+
6+
# from tests import (
7+
# get_mesh_for_testing,
8+
# get_p2d_mesh_for_testing,
9+
# get_1p1d_mesh_for_testing,
10+
# )
1011

1112
import numpy as np
12-
from scipy.sparse import kron, eye
13+
14+
# from scipy.sparse import kron, eye
1315
import unittest
1416

1517

0 commit comments

Comments
 (0)