PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
grain_size_vostok.hh
Go to the documentation of this file.
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  */
42 public:
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:
61 };
62 
63 } // end of namespace rheology
64 } // end of namespace pism
65 
66 #endif /* GRAIN_SIZE_VOSTOK_H */
static const double m_grain_size[m_N]
grain_size_vostok(const grain_size_vostok &other)
grain_size_vostok & operator=(const grain_size_vostok &)
static const double m_age[m_N]
A relationship between the age of the ice and the grain size from the Vostok core.