Full Model#

class pybamm.electrolyte_conductivity.Full(param, options=None)#

Full model for conservation of charge in the electrolyte employing the Stefan-Maxwell constitutive equations. (Full refers to unreduced by asymptotic methods)

Parameters:
  • param (parameter class) – The parameters to use for this submodel

  • options (dict, optional) – A dictionary of options to be passed to the model.

Extends: pybamm.models.submodels.electrolyte_conductivity.base_electrolyte_conductivity.BaseElectrolyteConductivity

View inheritance diagram for this model

Inheritance diagram of pybamm.models.submodels.electrolyte_conductivity.full_conductivity.Full

check_algebraic_equations(post_discretisation)#

Check that the algebraic equations are well-posed. After discretisation, there must be at least one StateVector in each algebraic equation.

check_discretised_or_discretise_inplace_if_0D()#

Discretise model if it isn’t already discretised This only works with purely 0D models, as otherwise the mesh and spatial method should be specified by the user

check_ics_bcs()#

Check that the initial and boundary conditions are well-posed.

check_no_repeated_keys()#

Check that no equation keys are repeated.

check_well_determined(post_discretisation)#

Check that the model is not under- or over-determined.

check_well_posedness(post_discretisation=False)#

Check that the model is well-posed by executing the following tests: - Model is not over- or underdetermined, by comparing keys and equations in rhs and algebraic. Overdetermined if more equations than variables, underdetermined if more variables than equations. - There is an initial condition in self.initial_conditions for each variable/equation pair in self.rhs - There are appropriate boundary conditions in self.boundary_conditions for each variable/equation pair in self.rhs and self.algebraic

Parameters:

post_discretisation (boolean) – A flag indicating tests to be skipped after discretisation

property default_solver#

Return default solver based on whether model is ODE/DAE or algebraic

classmethod deserialise(properties: dict)#

Create a model instance from a serialised object.

export_casadi_objects(variable_names, input_parameter_order=None)#

Export the constituent parts of the model (rhs, algebraic, initial conditions, etc) as casadi objects.

Parameters:
  • variable_names (list) – Variables to be exported alongside the model structure

  • input_parameter_order (list, optional) – Order in which the input parameters should be stacked. If input_parameter_order=None and len(self.input_parameters) > 1, a ValueError is raised (this helps to avoid accidentally using the wrong order)

Returns:

casadi_dict – Dictionary of {str: casadi object} pairs representing the model in casadi format

Return type:

dict

generate(filename, variable_names, input_parameter_order=None, cg_options=None)#

Generate the model in C, using CasADi.

Parameters:
  • filename (str) – Name of the file to which to save the code

  • variable_names (list) – Variables to be exported alongside the model structure

  • input_parameter_order (list, optional) – Order in which the input parameters should be stacked. If input_parameter_order=None and len(self.input_parameters) > 1, a ValueError is raised (this helps to avoid accidentally using the wrong order)

  • cg_options (dict) – Options to pass to the code generator. See https://web.casadi.org/docs/#generating-c-code

get_coupled_variables(variables)#

A public method that creates and returns the variables in a submodel which require variables in other submodels to be set first. For example, the exchange current density requires the concentration in the electrolyte to be created before it can be created. If a variable can be created independent of other submodels then it should be created in ‘get_fundamental_variables’ instead of this method.

Parameters:

variables (dict) – The variables in the whole model.

Returns:

The variables created in this submodel which depend on variables in other submodels.

Return type:

dict

get_fundamental_variables()#

A public method that creates and returns the variables in a submodel which can be created independent of other submodels. For example, the electrolyte concentration variables can be created independent of whether any other variables have been defined in the model. As a rule, if a variable can be created without variables from other submodels, then it should be placed in this method.

Returns:

The variables created by the submodel which are independent of variables in other submodels.

Return type:

dict

get_parameter_info(by_submodel=False)#

Extracts the parameter information and returns it as a dictionary. To get a list of all parameter-like objects without extra information, use model.parameters.

info(symbol_name)#

Provides helpful summary information for a symbol.

Parameters:

parameter_name (str) –

property input_parameters#

Returns all the input parameters in the model

latexify(filename=None, newline=True, output_variables=None)#

Converts all model equations in latex.

Parameters:
  • filename (str (optional)) – Accepted file formats - any image format, pdf and tex Default is None, When None returns all model equations in latex If not None, returns all model equations in given file format.

  • newline (bool (optional)) – Default is True, If True, returns every equation in a new line. If False, returns the list of all the equations.

  • model (Load) –

  • pybamm.lithium_ion.SPM() (>>> model =) –

  • png (This will returns all model equations in) –

  • model.latexify("equations.png") (>>>) –

  • latex (This will return all the model equations in) –

  • model.latexify() (>>>) –

  • equations (This will return first five model) –

  • model.latexify(newline=False) (>>>) –

  • equations

  • model.latexify(newline=False)[1 (>>>) –

new_copy()#

Creates a copy of the model, explicitly copying all the mutable attributes to avoid issues with shared objects.

property parameters#

Returns all the parameters in the model

print_parameter_info(by_submodel=False)#

Print parameter information in a formatted table from a dictionary of parameters

Parameters:

by_submodel (bool, optional) – Whether to print the parameter info sub-model wise or not (default False)

process_parameters_and_discretise(symbol, parameter_values, disc)#

Process parameters and discretise a symbol using supplied parameter values and discretisation. Note: care should be taken if using spatial operators on dimensional symbols. Operators in pybamm are written in non-dimensional form, so may need to be scaled by the appropriate length scale. It is recommended to use this method on non-dimensional symbols.

Parameters:
Returns:

Processed symbol

Return type:

pybamm.Symbol

save_model(filename=None, mesh=None, variables=None)#

Write out a discretised model to a JSON file

Parameters:
  • filename (str, optional) –

  • provided (The desired name of the JSON file. If no name is) –

  • created (one will be) –

  • name (based on the model) –

  • datetime. (and the current) –

set_algebraic(variables)#

A method to set the differential equations which do not contain a time derivative. Note: this method modifies the state of self.algebraic. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

set_boundary_conditions(variables)#

A method to set the boundary conditions for the submodel. Note: this method modifies the state of self.boundary_conditions. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

set_events(variables)#

A method to set events related to the state of submodel variable. Note: this method modifies the state of self.events. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

set_initial_conditions(variables)#

A method to set the initial conditions for the submodel. Note: this method modifies the state of self.initial_conditions. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

set_initial_conditions_from(solution, inplace=True, return_type='model')#

Update initial conditions with the final states from a Solution object or from a dictionary. This assumes that, for each variable in self.initial_conditions, there is a corresponding variable in the solution with the same name and size.

Parameters:
  • solution (pybamm.Solution, or dict) – The solution to use to initialize the model

  • inplace (bool, optional) – Whether to modify the model inplace or create a new model (default True)

  • return_type (str, optional) – Whether to return the model (default) or initial conditions (“ics”)

set_rhs(variables)#

A method to set the right hand side of the differential equations which contain a time derivative. Note: this method modifies the state of self.rhs. Unless overwritten by a submodel, the default behaviour of ‘pass’ is used as implemented in pybamm.BaseSubModel.

Parameters:

variables (dict) – The variables in the whole model.

update(*submodels)#

Update model to add new physics from submodels

Parameters:

submodel (iterable of pybamm.BaseModel) – The submodels from which to create new model

property variables_and_events#

Returns variables and events in a single dictionary