From 447e95fea7855fc7b2684a0ca1fa9b7c7d0da65e Mon Sep 17 00:00:00 2001
From: Katharina Heck <katharina.heck@iws.uni-stuttgart.de>
Date: Fri, 27 Apr 2018 14:26:22 +0200
Subject: [PATCH] [components] add granite as solid component

---
 dumux/material/components/CMakeLists.txt |   1 +
 dumux/material/components/granite.hh     | 104 +++++++++++++++++++++++
 2 files changed, 105 insertions(+)
 create mode 100644 dumux/material/components/granite.hh

diff --git a/dumux/material/components/CMakeLists.txt b/dumux/material/components/CMakeLists.txt
index 8f9297cca8..485bc5b4bd 100644
--- a/dumux/material/components/CMakeLists.txt
+++ b/dumux/material/components/CMakeLists.txt
@@ -12,6 +12,7 @@ co2.hh
 co2tablereader.hh
 co2tables.inc
 constant.hh
+granite.hh
 h2.hh
 h2o.hh
 heavyoil.hh
diff --git a/dumux/material/components/granite.hh b/dumux/material/components/granite.hh
new file mode 100644
index 0000000000..63b5a648a8
--- /dev/null
+++ b/dumux/material/components/granite.hh
@@ -0,0 +1,104 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup Components
+ * \brief Properties of pure molecular oxygen \f$O_2\f$.
+ */
+#ifndef DUMUX_GRANITE_HH
+#define DUMUX_GRANITE_HH
+
+#include <dumux/material/components/base.hh>
+#include <dumux/material/components/solid.hh>
+
+#include <cmath>
+
+namespace Dumux {
+namespace Components {
+
+/*!
+ * \ingroup Components
+ * \brief Properties of granite
+ *
+ * \tparam Scalar The type used for scalar values
+ */
+template <class Scalar>
+class Granite : public Components::Base<Scalar, Granite<Scalar> >
+               ,public Components::Solid<Scalar, Granite<Scalar> >
+
+{
+public:
+    /*!
+     * \brief A human readable name for the solid.
+     */
+    static std::string name()
+    { return "Granite"; }
+
+    /*!
+     * \brief Returns true if the solid phase is assumed to be compressible
+     */
+    static constexpr bool solidIsCompressible()
+    {
+        return false; // iso c++ requires a return statement for constexpr functions
+    }
+
+    /*!
+     * \brief The molar mass of Siliciumoxide which is 70 % of granite in \f$\mathrm{[kg/mol]}\f$.
+     */
+    static Scalar molarMass()
+    {
+        return 60.08e-3;
+    }
+
+    /*!
+     * \brief The density in \f$\mathrm{[kg/m^3]}\f$ of the component at a given pressure in
+     *          \f$\mathrm{[Pa]}\f$ and temperature in \f$\mathrm{[K]}\f$.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     */
+    static Scalar solidDensity(Scalar temperature)
+    {
+       return 2700;
+    }
+
+    /*!
+     * \brief Thermal conductivity of the component \f$\mathrm{[W/(m*K)]}\f$ as a solid.
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     */
+    static Scalar solidThermalConductivity(Scalar temperature)
+    {
+        return 2.8;
+    }
+
+    /*!
+     * \brief Specific isobaric heat capacity of the component \f$\mathrm{[J/(kg*K)]}\f$ as a solid.
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     */
+    static Scalar solidHeatCapacity(Scalar temperature)
+    {
+        return 790;
+    }
+
+};
+
+} // end namespace Components
+
+} // end namespace Dumux
+
+#endif
-- 
GitLab