[cig-commits] commit 2450 by heister to /var/svn/dealii/aspect

dealii.demon at gmail.com dealii.demon at gmail.com
Wed Apr 9 14:14:59 PDT 2014


Revision 2450

add multicomponent material model

A   branches/freesurface/include/aspect/material_model/multicomponent.h
A   branches/freesurface/source/material_model/multicomponent.cc


http://www.dealii.org/websvn/revision.php?repname=Aspect+Repository&path=%2F&rev=2450&peg=2450

Diff:
Added: branches/freesurface/include/aspect/material_model/multicomponent.h
===================================================================
--- branches/freesurface/include/aspect/material_model/multicomponent.h	                        (rev 0)
+++ branches/freesurface/include/aspect/material_model/multicomponent.h	2014-04-09 21:14:57 UTC (rev 2450)
@@ -0,0 +1,203 @@
+/*
+  Copyright (C) 2011, 2012 by the authors of the ASPECT code.
+
+  This file is part of ASPECT.
+
+  ASPECT 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, or (at your option)
+  any later version.
+
+  ASPECT 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 ASPECT; see the file doc/COPYING.  If not see
+  <http://www.gnu.org/licenses/>.
+*/
+
+
+#ifndef __aspect__model_multicomponent_h
+#define __aspect__model_multicomponent_h
+
+#include <aspect/material_model/interface.h>
+#include <aspect/simulator_access.h>
+
+namespace aspect
+{
+  namespace MaterialModel
+  {
+    using namespace dealii;
+
+    /**
+     * A material model that consists of globally constant values for all
+     * material parameters except that the density decays linearly with the
+     * temperature.
+     *
+     * The model is considered incompressible, following the definition
+     * described in Interface::is_compressible. This is essentially
+     * the material model used in the step-32 tutorial program.
+     *
+     * @ingroup MaterialModels
+     */
+    template <int dim>
+    class Multicomponent : public MaterialModel::InterfaceCompatibility<dim>, public ::aspect::SimulatorAccess<dim>
+    {
+      public:
+        /**
+         * @name Physical parameters used in the basic equations
+         * @{
+         */
+        virtual double viscosity (const double                  temperature,
+                                  const double                  pressure,
+                                  const std::vector<double>    &compositional_fields,
+                                  const SymmetricTensor<2,dim> &strain_rate,
+                                  const Point<dim>             &position) const;
+
+        virtual double density (const double temperature,
+                                const double pressure,
+                                const std::vector<double> &compositional_fields,
+                                const Point<dim> &position) const;
+
+        virtual double compressibility (const double temperature,
+                                        const double pressure,
+                                        const std::vector<double> &compositional_fields,
+                                        const Point<dim> &position) const;
+
+        virtual double specific_heat (const double temperature,
+                                      const double pressure,
+                                      const std::vector<double> &compositional_fields,
+                                      const Point<dim> &position) const;
+
+        virtual double thermal_expansion_coefficient (const double      temperature,
+                                                      const double      pressure,
+                                                      const std::vector<double> &compositional_fields,
+                                                      const Point<dim> &position) const;
+
+        virtual double thermal_conductivity (const double temperature,
+                                             const double pressure,
+                                             const std::vector<double> &compositional_fields,
+                                             const Point<dim> &position) const;
+        /**
+         * @}
+         */
+
+        /**
+         * @name Qualitative properties one can ask a material model
+         * @{
+         */
+
+        /**
+        * Return true if the viscosity() function returns something that
+        * may depend on the variable identifies by the argument.
+        */
+        virtual bool
+        viscosity_depends_on (const NonlinearDependence::Dependence dependence) const;
+
+        /**
+        * Return true if the density() function returns something that
+        * may depend on the variable identifies by the argument.
+        */
+        virtual bool
+        density_depends_on (const NonlinearDependence::Dependence dependence) const;
+
+        /**
+        * Return true if the compressibility() function returns something that
+        * may depend on the variable identifies by the argument.
+        *
+        * This function must return false for all possible arguments if the
+        * is_compressible() function returns false.
+        */
+        virtual bool
+        compressibility_depends_on (const NonlinearDependence::Dependence dependence) const;
+
+        /**
+        * Return true if the specific_heat() function returns something that
+        * may depend on the variable identifies by the argument.
+        */
+        virtual bool
+        specific_heat_depends_on (const NonlinearDependence::Dependence dependence) const;
+
+        /**
+        * Return true if the thermal_conductivity() function returns something that
+        * may depend on the variable identifies by the argument.
+        */
+        virtual bool
+        thermal_conductivity_depends_on (const NonlinearDependence::Dependence dependence) const;
+
+        /**
+         * Return whether the model is compressible or not.  Incompressibility
+         * does not necessarily imply that the density is constant; rather, it
+         * may still depend on temperature or pressure. In the current
+         * context, compressibility means whether we should solve the contuity
+         * equation as $
abla 


More information about the CIG-COMMITS mailing list