URI:
       tgrain_size_vostok.hh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
  HTML git clone git://src.adamsgaard.dk/pism
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
       tgrain_size_vostok.hh (2374B)
       ---
            1 /* Copyright (C) 2019 PISM Authors
            2  *
            3  * This file is part of PISM.
            4  *
            5  * PISM is free software; you can redistribute it and/or modify it under the
            6  * terms of the GNU General Public License as published by the Free Software
            7  * Foundation; either version 3 of the License, or (at your option) any later
            8  * version.
            9  *
           10  * PISM is distributed in the hope that it will be useful, but WITHOUT ANY
           11  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
           12  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
           13  * details.
           14  *
           15  * You should have received a copy of the GNU General Public License
           16  * along with PISM; if not, write to the Free Software
           17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
           18  */
           19 
           20 #ifndef GRAIN_SIZE_VOSTOK_H
           21 #define GRAIN_SIZE_VOSTOK_H
           22 
           23 #include <gsl/gsl_spline.h>
           24 
           25 namespace pism {
           26 namespace rheology {
           27 
           28 //! A relationship between the age of the ice and the grain size from the Vostok core.
           29 /*! A data set is interpolated here. The intention is that the softness of the
           30   ice has nontrivial dependence on its age, through its grain size, because of
           31   variable dustiness of the global climate. The grain size is partly determined
           32   by at which point in the glacial cycle the given ice fell as snow.
           33 
           34   The data is from [@ref DeLaChapelleEtAl98] and [@ref LipenkovEtAl89]. In
           35   particular, Figure A2 in the former reference was hand-sampled with an
           36   attempt to include the ``wiggles'' in that figure. Ages of the oldest ice (>=
           37   300 ka) were estimated in a necessarily ad hoc way. The age value of 10000 ka
           38   was added simply to give interpolation for very old ice; ages beyond that get
           39   constant extrapolation. Linear interpolation is done between the samples.
           40  */
           41 class grain_size_vostok {
           42 public:
           43   grain_size_vostok();
           44   ~grain_size_vostok();
           45 
           46   /*!
           47    * Return grain size in meters given ice age in years.
           48    */
           49   double operator()(double a);
           50 private:
           51   static const int m_N = 22;
           52   static const double m_age[m_N];
           53   static const double m_grain_size[m_N];
           54 
           55   gsl_interp_accel* m_acc;
           56   gsl_spline*       m_spline;
           57 
           58   // disable copy constructor and the assignment operator:
           59   grain_size_vostok(const grain_size_vostok &other);
           60   grain_size_vostok& operator=(const grain_size_vostok&);
           61 };
           62 
           63 } // end of namespace rheology
           64 } // end of namespace pism
           65 
           66 #endif /* GRAIN_SIZE_VOSTOK_H */