1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 3 /* 4 Copyright (C) 2009 Ralph Schreyer 5 Copyright (C) 2014 Johannes Göttker-Schnetmann 6 Copyright (C) 2014 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 concentrating1dmesher.hpp 23 \brief One-dimensional grid mesher concentrating around critical points 24 */ 25 26 #ifndef quantlib_concentrating_1d_mesher_hpp 27 #define quantlib_concentrating_1d_mesher_hpp 28 29 #include <ql/methods/finitedifferences/meshers/fdm1dmesher.hpp> 30 #include <ql/utilities/null.hpp> 31 32 #include <ql/tuple.hpp> 33 34 #include <utility> 35 #include <vector> 36 37 namespace QuantLib { 38 39 class Concentrating1dMesher : public Fdm1dMesher { 40 public: 41 Concentrating1dMesher(Real start, 42 Real end, 43 Size size, 44 const std::pair<Real, Real>& cPoints = 45 (std::pair<Real, Real>(Null<Real>(), Null<Real>())), 46 bool requireCPoint = false); 47 48 Concentrating1dMesher( 49 Real start, Real end, Size size, 50 const std::vector<ext::tuple<Real, Real, bool> >& cPoints, 51 Real tol = 1e-8); 52 }; 53 } 54 55 #endif 56