// ZZConvectionDiffusionPDEDataBundle pde_data = PDE_DATA_PROVIDER.getBackwardsLocalVolLogPayoff(EXPIRY, lvm);
final ConvectionDiffusionPDE1DStandardCoefficients pde = PDE_DATA_PROVIDER.getLogBackwardsLocalVol(EXPIRY, lvm);
final PDEGrid1D grid = new PDEGrid1D(timeMesh, spaceMesh);
final PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients> db = new PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients>(pde, INITIAL_COND, lower, upper, grid);
final PDEResults1D res = solver.solve(db);
final int n = res.getNumberSpaceNodes();
final double[] values = new double[n];
for (int i = 0; i < n; i++) {
// System.out.println(res.getSpaceValue(i) + "\t" + res.getFunctionValue(i));
values[i] = res.getFunctionValue(i);
}
final Interpolator1DDataBundle idb = INTERPOLATOR.getDataBundle(grid.getSpaceNodes(), values);
final double elogS = INTERPOLATOR.interpolate(idb, Math.log(ft));
final double kVol = Math.sqrt(-2 * (elogS - Math.log(ft)) / EXPIRY);