final double tau = ad.getTau(index);
final double atmVol = plv.getVolatility(tau, 1.0);
final double yMin = -Math.sqrt(tau) * atmVol * SIGMA;
final double yMax = -yMin;
final LocalVolatilitySurfaceMoneyness localVolSurface = new LocalVolatilitySurfaceMoneyness(plv.getSurface(), new ForwardCurve(1.0));
final ConvectionDiffusionPDE1DStandardCoefficients pde = PDE_PROVIDER.getLogBackwardsLocalVol(tau, localVolSurface);
final Function1D<Double, Double> initalCond = getCorrectionInitialCondition(ad, curves, index, correctForDividends);
final BoundaryCondition lower = new NeumannBoundaryCondition(getCorrectionLowerBoundaryCondition(ad, curves, index, correctForDividends, index), yMin, true);
final BoundaryCondition upper = new NeumannBoundaryCondition(0.0, yMax, false);