docstr: Tests handling inner_second_order_coeff.
  
  As in previous test, take the diffusion equation
  `v_{t} - v_{xx} - v_{yy} = 0` and substitute `v = exp(x + 2y) u`, but this
  time keep exponent under the derivative:
  `u_{t} - exp(-x)[exp(x)u]_{xx} - exp(-2y)[exp(2y)u]_{yy} = 0`.
  Expect the same solution as in previous test.
docstr_tok: ["Tests","handling","inner_second_order_coeff",".","As","in","previous","test",",","take","the","diffusion","equation","`","v_","{","t","}","-","v_","{","xx","}","-","v_","{","yy","}","=","0","`","and","substitute","`","v","=","exp","(","x","+","2y",")","u","`",",","but","this","time","keep","exponent","under","the","derivative",":","`","u_","{","t","}","-","exp","(","-x",")","[","exp","(","x",")","u","]","_","{","xx","}","-","exp","(","-2y",")","[","exp","(","2y",")","u","]","_","{","yy","}","=","0","`",".","Expect","the","same","solution","as","in","previous","test","."]
code: def testInnerSecondOrderCoeff(self):
      """Tests handling inner_second_order_coeff.
  
      As in previous test, take the diffusion equation
      `v_{t} - v_{xx} - v_{yy} = 0` and substitute `v = exp(x + 2y) u`, but this
      time keep exponent under the derivative:
      `u_{t} - exp(-x)[exp(x)u]_{xx} - exp(-2y)[exp(2y)u]_{yy} = 0`.
      Expect the same solution as in previous test.
      """
      grid = grids.uniform_grid(
          minimums=[0, 0],
          maximums=[1, 1],
          sizes=[201, 251],
          dtype=tf.float32,
      )
      ys, xs = grid
  
      final_t = 0.1
      time_step = 0.002
  
      def second_order_coeff_fn(t, coord_grid):
          del t
          y, x = tf.meshgrid(*coord_grid, indexing="ij")
          return [[-tf.exp(-2 * y), None], [None, -tf.exp(-x)]]
  
      def inner_second_order_coeff_fn(t, coord_grid):
          del t
          y, x = tf.meshgrid(*coord_grid, indexing="ij")
          return [[tf.exp(2 * y), None], [None, tf.exp(x)]]
  
      exp = _dir_prod(tf.exp(-2 * ys), tf.exp(-xs))
      initial = exp * _reference_2d_pde_initial_cond(xs, ys)
      expected = exp * _reference_2d_pde_solution(xs, ys, final_t)
  
      actual = fd_solvers.solve_forward(
          start_time=0,
          end_time=final_t,
          coord_grid=grid,
          values_grid=initial,
          time_step=time_step,
          second_order_coeff_fn=second_order_coeff_fn,
          inner_second_order_coeff_fn=inner_second_order_coeff_fn,
      )[0]
  
      self.assertAllClose(expected, actual, atol=1e-3, rtol=1e-3)
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  import tf_quant_finance
  from tensorflow.python.framework import test_util
label_desc: Use image node_id 20 for calling the MultidimParabolicEquationStepperTest obj's underlying member method code with example usage: obj.testInnerSecondOrderCoeff() and returns: list, list