def gradient_squared(self, symbol, discretised_symbol, boundary_conditions):
    '\n        Implements the inner product of the gradient with itself for a spatial method.\n\n        Parameters\n        ----------\n        symbol: :class:`pybamm.Symbol`\n            The symbol that we will take the gradient of.\n        discretised_symbol: :class:`pybamm.Symbol`\n            The discretised symbol of the correct size\n\n        boundary_conditions : dict\n            The boundary conditions of the model\n            ({symbol.id: {"left": left bc, "right": right bc}})\n\n        Returns\n        -------\n        :class: `pybamm.Array`\n            Contains the result of taking the inner product of the result of acting\n            the discretised gradient on the child discretised_symbol with itself\n        '
    raise NotImplementedError
Implements the inner product of the gradient with itself for a spatial method.

Parameters
----------
symbol: :class:`pybamm.Symbol`
    The symbol that we will take the gradient of.
discretised_symbol: :class:`pybamm.Symbol`
    The discretised symbol of the correct size

boundary_conditions : dict
    The boundary conditions of the model
    ({symbol.id: {"left": left bc, "right": right bc}})

Returns
-------
:class: `pybamm.Array`
    Contains the result of taking the inner product of the result of acting
    the discretised gradient on the child discretised_symbol with itself
def gradient_squared(self, symbol, discretised_symbol, boundary_conditions):
    '\n        Implements the inner product of the gradient with itself for a spatial method.\n\n        Parameters\n        ----------\n        symbol: :class:`pybamm.Symbol`\n            The symbol that we will take the gradient of.\n        discretised_symbol: :class:`pybamm.Symbol`\n            The discretised symbol of the correct size\n\n        boundary_conditions : dict\n            The boundary conditions of the model\n            ({symbol.id: {"left": left bc, "right": right bc}})\n\n        Returns\n        -------\n        :class: `pybamm.Array`\n            Contains the result of taking the inner product of the result of acting\n            the discretised gradient on the child discretised_symbol with itself\n        '
    raise NotImplementedError