/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.model.volatility.local; import com.opengamma.analytics.financial.model.finitedifference.MeshingFunction; import com.opengamma.analytics.financial.model.finitedifference.PDEGrid1D; import com.opengamma.analytics.financial.model.finitedifference.PDETerminalResults1D; import com.opengamma.analytics.financial.model.finitedifference.ThetaMethodFiniteDifference; import com.opengamma.analytics.financial.model.finitedifference.applications.InitialConditionsProvider; import com.opengamma.analytics.financial.model.finitedifference.applications.PDE1DCoefficientsProvider; import com.opengamma.analytics.financial.model.interestrate.curve.ForwardCurve; import com.opengamma.analytics.financial.model.option.pricing.analytic.formula.EuropeanVanillaOption; /** * */ public abstract class LocalVolatilityPDECalculator { private final PDE1DCoefficientsProvider _pdeProvider; private final InitialConditionsProvider _initialCondProvider; private final ThetaMethodFiniteDifference _solver; public LocalVolatilityPDECalculator(final double theta) { _pdeProvider = new PDE1DCoefficientsProvider(); _initialCondProvider = new InitialConditionsProvider(); _solver = new ThetaMethodFiniteDifference(theta, false); } public abstract PDETerminalResults1D runPDESolver(final LocalVolatilitySurfaceMoneyness localVolatility, final EuropeanVanillaOption option); public abstract PDETerminalResults1D runPDESolver(final LocalVolatilitySurfaceStrike localVolatility, final ForwardCurve forwardCurve, final EuropeanVanillaOption option); protected PDEGrid1D getGrid(final MeshingFunction timeMesh, final MeshingFunction spaceMesh) { return new PDEGrid1D(timeMesh, spaceMesh); } protected PDE1DCoefficientsProvider getPDEProvider() { return _pdeProvider; } protected ThetaMethodFiniteDifference getSolver() { return _solver; } protected InitialConditionsProvider getInitialConditionProvider() { return _initialCondProvider; } }