Go to the documentation of this file.00001 #ifndef OPENTISSUE_DYNAMICS_SPH_SPH_IDEAL_GAS_H
00002 #define OPENTISSUE_DYNAMICS_SPH_SPH_IDEAL_GAS_H
00003
00004
00005
00006
00007
00008
00009
00010 #include <OpenTissue/configuration.h>
00011
00012 #include <cassert>
00013
00014 namespace OpenTissue
00015 {
00016 namespace sph
00017 {
00018
00036 template<typename real_type>
00037 class IdealGas
00038 {
00039 public:
00040
00056 real_type mol(real_type P,real_type V,real_type T) const
00057 {
00058 assert(V>0);
00059 assert(T>0);
00060 real_type R = static_cast<real_type>(8.314510);
00061 return (P*V) / (R*T);
00062 }
00063
00072 real_type mol(real_type V,real_type molar_volume) const
00073 {
00074 assert(V>0 && molar_volume>0);
00075 return V/molar_volume;
00076 }
00077
00087 real_type molekyles(real_type P,real_type V,real_type T) const
00088 {
00089 assert(V>0);
00090 assert(T>0);
00091 real_type Na = static_cast<real_type>(6.0221367e23);
00092 return mol(P,V,T)*Na;
00093 }
00094
00103 real_type mass(real_type mol, real_type molar_mass) const
00104 {
00105 assert(mol>0 && molar_mass>0);
00106 return mol*molar_mass;
00107 }
00108
00116 real_type celsius(real_type K) const
00117 {
00118 return K - static_cast<real_type>(273.15);
00119 }
00120
00128 real_type kelvin(real_type C) const
00129 {
00130 return C + static_cast<real_type>(273.15);
00131 }
00132
00136 real_type bar (real_type Pa) const
00137 {
00138 return Pa/static_cast<real_type>(1e5);
00139 }
00140
00144 real_type Pa (real_type bar) const
00145 {
00146 return bar*static_cast<real_type>(1e5);
00147 }
00148
00152 real_type kPa(real_type Pa) const
00153 {
00154 return Pa/static_cast<real_type>(1e3);
00155 }
00156
00166 real_type molar_mass(real_type rho, real_type V, real_type mol) const
00167 {
00168 assert(V>0 && rho>0 && mol>0);
00169 return (rho*V)/mol;
00170 }
00171
00172 };
00173
00174 }
00175 }
00176
00177
00178 #endif