[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