eos.h

00001 /*
00002   -------------------------------------------------------------------
00003   
00004   Copyright (C) 2006, 2007, Andrew W. Steiner
00005   
00006   This file is part of O2scl.
00007   
00008   O2scl is free software; you can redistribute it and/or modify
00009   it under the terms of the GNU General Public License as published by
00010   the Free Software Foundation; either version 3 of the License, or
00011   (at your option) any later version.
00012   
00013   O2scl is distributed in the hope that it will be useful,
00014   but WITHOUT ANY WARRANTY; without even the implied warranty of
00015   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016   GNU General Public License for more details.
00017   
00018   You should have received a copy of the GNU General Public License
00019   along with O2scl. If not, see <http://www.gnu.org/licenses/>.
00020 
00021   -------------------------------------------------------------------
00022 */
00023 #ifndef O2SCL_EOS_H
00024 #define O2SCL_EOS_H
00025 
00026 #include <o2scl/part.h>
00027 #include <o2scl/deriv.h>
00028 #include <o2scl/mroot.h>
00029 #include <o2scl/collection.h>
00030 
00031 #ifndef DOXYGENP
00032 namespace o2scl {
00033 #endif
00034 
00035   /** 
00036       \brief Equation of state base
00037     
00038       A base class for the computation of an equation of state
00039 
00040   */
00041   class eos {
00042   public:
00043 
00044     eos();
00045     virtual ~eos() {};
00046 
00047     /// Set class thermo object
00048     virtual int set_thermo(thermo &th);
00049 
00050     /// Get class thermo object
00051     virtual int get_thermo(thermo *&th);
00052 
00053     /// The default thermo object
00054     thermo def_thermo;
00055 
00056     /// Return string denoting type ("eos")
00057     virtual const char *type() { return "eos"; }
00058 
00059   protected:
00060 
00061 #ifndef DOXYGEN_INTERNAL
00062 
00063     friend class io_tlate<eos>;
00064     
00065     /// A pointer to the thermo object
00066     thermo *eos_thermo;
00067 
00068 #endif
00069 
00070   };
00071   
00072   template<> int io_tlate<eos>::input
00073     (cinput *co, in_file_format *ins, eos *ep);
00074   template<> int io_tlate<eos>::output
00075     (coutput *co, out_file_format *outs, eos *ep);
00076   template<> const char *io_tlate<eos>::type();
00077   
00078   typedef io_tlate<eos> eos_io_type;
00079 
00080 #ifndef DOXYGENP
00081 }
00082 #endif
00083 
00084 #endif

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.