Skip to content

Commit 8291fea

Browse files
#590 add some info to contributing
1 parent 6eca41c commit 8291fea

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

CONTRIBUTING.md

+1
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ Figuring out where to start the debugger is the real challenge. Some good ways t
237237
```python3
238238
pybamm.set_logging_level("DEBUG")
239239
```
240+
6. In models that inherit from `pybamm.BaseBatteryModel` (i.e. any battery model), you can use `self.process_parameters_and_discretise` to process a symbol and see what it will look like.
240241

241242
### Profiling
242243

pybamm/models/full_battery_models/base_battery_model.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def __init__(self, options=None, name="Unnamed battery model"):
1919
self._extra_options = options
2020
self.set_standard_output_variables()
2121
self.submodels = OrderedDict() # ordered dict not default in 3.5
22+
self._built = False
2223

2324
@property
2425
def default_parameter_values(self):
@@ -332,7 +333,9 @@ def build_model(self):
332333
self.update(submodel)
333334

334335
pybamm.logger.debug("Setting voltage variables")
335-
# self.set_voltage_variables()
336+
self.set_voltage_variables()
337+
338+
self._built = True
336339

337340
def set_thermal_submodel(self):
338341

@@ -466,6 +469,9 @@ def process_parameters_and_discretise(self, symbol):
466469
:class:`pybamm.Symbol`
467470
Processed symbol
468471
"""
472+
if not self._built:
473+
self.build_model()
474+
469475
# Set up parameters
470476
geometry = self.default_geometry
471477
parameter_values = self.default_parameter_values
@@ -474,7 +480,6 @@ def process_parameters_and_discretise(self, symbol):
474480
# Set up discretisation
475481
mesh = pybamm.Mesh(geometry, self.default_submesh_types, self.default_var_pts)
476482
disc = pybamm.Discretisation(mesh, self.default_spatial_methods)
477-
self.build_model()
478483
variables = list(self.rhs.keys()) + list(self.algebraic.keys())
479484
disc.set_variable_slices(variables)
480485

tests/unit/test_models/test_full_battery_models/test_base_battery_model.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77

88
class TestBaseBatteryModel(unittest.TestCase):
99
def test_process_parameters_and_discretise(self):
10-
model = pybamm.SimpleODEModel()
11-
c = pybamm.Parameter("Negative electrode width [m]") * pybamm.Variable("c")
10+
model = pybamm.ReactionDiffusionModel()
11+
c = pybamm.Parameter("Negative electrode width [m]") * pybamm.Variable(
12+
"Negative electrolyte concentration", domain="negative electrode"
13+
)
1214
processed_c = model.process_parameters_and_discretise(c)
1315
self.assertIsInstance(processed_c, pybamm.Multiplication)
1416
self.assertIsInstance(processed_c.left, pybamm.Scalar)

0 commit comments

Comments
 (0)