Skip to content

How to handle structural parameters #18

Description

@BradyPlanden

Parameters that don't affect the geometric structure of the model should be passed as inputs to the pybamm.solver class to improve performance. This will allow the built model to be updated with the appropriate parameters at each iteration without reforming the model, discretisation and solver.

If the parameters of interest have an influence on the geometric structure of the model (electrode thickness, number of particles, etc.), the above workflow must be rebuilt on each iteration. This slows down the iterations/sec of parameterisation/optimisation, but without pre-composing the design space (there is a side discussion to be had here) we need to do this to enable robust results.

Open thoughts:

  • For the structural parameter set, obtaining the gradient of the result will not be easy, and if needed will require more computationally complex methods, as the model structure changes with each iteration.
  • There is a further discussion here about the fidelity of varying the model structure during either parameterisation or optimisation. There may be side effects that need to be captured in the model construction (for multi-particle models, the discretisation distribution could be held constant between structural changes).

To do:

  • Group the parameters of supported models into the two domains of structural and non-structural.
  • Update the constructor of the parameterisation/optimisation class to include functionality for each of the parameter groups.
  • Build a parameter update method for each iteration that returns either the forward model or the simulation result to the parameterisation / optimisation method.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions