1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 3 /* 4 Copyright (C) 2009 Andreas Gaida 5 Copyright (C) 2009 Ralph Schreyer 6 Copyright (C) 2009 Klaus Spanderen 7 8 This file is part of QuantLib, a free-software/open-source library 9 for financial quantitative analysts and developers - http://quantlib.org/ 10 11 QuantLib is free software: you can redistribute it and/or modify it 12 under the terms of the QuantLib license. You should have received a 13 copy of the license along with this program; if not, please email 14 <quantlib-dev@lists.sf.net>. The license is also available online at 15 <http://quantlib.org/license.shtml>. 16 17 This program is distributed in the hope that it will be useful, but WITHOUT 18 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 FOR A PARTICULAR PURPOSE. See the license for more details. 20 */ 21 22 /*! \file expliciteulerscheme.hpp 23 \brief explicit-Euler scheme 24 */ 25 26 #ifndef quantlib_explicit_euler_scheme_hpp 27 #define quantlib_explicit_euler_scheme_hpp 28 29 #include <ql/methods/finitedifferences/operatortraits.hpp> 30 #include <ql/methods/finitedifferences/operators/fdmlinearopcomposite.hpp> 31 #include <ql/methods/finitedifferences/schemes/boundaryconditionschemehelper.hpp> 32 33 namespace QuantLib { 34 35 class ExplicitEulerScheme { 36 public: 37 // typedefs 38 typedef OperatorTraits<FdmLinearOp> traits; 39 typedef traits::operator_type operator_type; 40 typedef traits::array_type array_type; 41 typedef traits::bc_set bc_set; 42 typedef traits::condition_type condition_type; 43 44 // constructors 45 explicit ExplicitEulerScheme( 46 const ext::shared_ptr<FdmLinearOpComposite>& map, 47 const bc_set& bcSet = bc_set()); 48 49 void step(array_type& a, Time t); 50 void setStep(Time dt); 51 52 protected: 53 friend class CrankNicolsonScheme; 54 void step(array_type& a, Time t, Real theta); 55 56 Time dt_; 57 const ext::shared_ptr<FdmLinearOpComposite> map_; 58 const BoundaryConditionSchemeHelper bcSet_; 59 }; 60 } 61 62 #endif 63