strot_dirac_hydro.C

00001 /*
00002  *  Function Star_rot_Dirac::hydro_euler
00003  *
00004  *    (see file star_rot_dirac.h for documentation).
00005  *
00006  */
00007 
00008 /*
00009  *   Copyright (c) 2005 Lap-Ming Lin & Jerome Novak
00010  *
00011  *   This file is part of LORENE.
00012  *
00013  *   LORENE is free software; you can redistribute it and/or modify
00014  *   it under the terms of the GNU General Public License version 2
00015  *   as published by the Free Software Foundation.
00016  *
00017  *   LORENE is distributed in the hope that it will be useful,
00018  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  *   GNU General Public License for more details.
00021  *
00022  *   You should have received a copy of the GNU General Public License
00023  *   along with LORENE; if not, write to the Free Software
00024  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025  *
00026  */
00027 
00028 char strot_dirac_hydro_C[] = "$Header: /cvsroot/Lorene/C++/Source/Star/strot_dirac_hydro.C,v 1.5 2007/12/21 16:07:49 j_novak Exp $" ;
00029 
00030 /*
00031  * $Id: strot_dirac_hydro.C,v 1.5 2007/12/21 16:07:49 j_novak Exp $
00032  * $Log: strot_dirac_hydro.C,v $
00033  * Revision 1.5  2007/12/21 16:07:49  j_novak
00034  * Use of direct filtering of Vector and Sym_tensor.
00035  *
00036  * Revision 1.4  2007/11/06 16:23:59  j_novak
00037  * Added the flag spectral_filter giving the order of possible spectral filtering
00038  * of the hydro sources of metric equations (some members *_euler). The filtering
00039  * is done in strot_dirac_hydro, if this flag is non-zero.
00040  *
00041  * Revision 1.3  2005/03/14 14:01:34  j_novak
00042  * u_euler is now defined on all the grid.
00043  *
00044  * Revision 1.2  2005/02/17 17:31:56  f_limousin
00045  * Change the name of some quantities to be consistent with other classes
00046  * (for instance nnn is changed to nn, shift to beta, beta to lnq...)
00047  *
00048  * Revision 1.1  2005/01/31 08:51:48  j_novak
00049  * New files for rotating stars in Dirac gauge (still under developement).
00050  *
00051  *
00052  * $Header: /cvsroot/Lorene/C++/Source/Star/strot_dirac_hydro.C,v 1.5 2007/12/21 16:07:49 j_novak Exp $
00053  *
00054  */
00055 
00056 
00057 // C headers
00058 #include<math.h>
00059 #include<assert.h>
00060 
00061 // Lorene headers
00062 #include"star_rot_dirac.h"
00063 
00064 void Star_rot_Dirac::hydro_euler(){
00065 
00066   // u_euler (fluid 3-velocity w.r.t. the Eulerian frame)
00067   // -----------------------------------------------------
00068 
00069 
00070   u_euler.set(1).set_etat_zero() ;
00071   u_euler.set(2).set_etat_zero() ;
00072 
00073   u_euler.set(3) = omega ;
00074   u_euler.set(3).std_spectral_base() ;
00075   u_euler.set(3).mult_rsint() ;
00076   u_euler.set(3) += beta(3) ;
00077 
00078   u_euler = u_euler / nn ;
00079 
00080   // v2 (square of the norm of u_euler)
00081   // ----------------------------------
00082 
00083   v2 = contract(contract(gamma.cov(), 0, u_euler, 0), 0, u_euler, 0) ;
00084 
00085 
00086   // gam_euler (Lorentz factor between the fluid and Eulerian observers)
00087   // -------------------------------------------------------------------
00088 
00089   gam_euler = 1. / sqrt(1. - v2) ; 
00090 
00091   gam_euler.std_spectral_base() ;
00092 
00093 
00094   // ener_euler (energy density w.r.t. the Eulerian observer)
00095   // ------------------------------------------------------
00096 
00097   ener_euler = gam_euler*gam_euler*(ener + press) - press ;
00098 
00099   ener_euler.std_spectral_base() ;
00100   if (spectral_filter > 0) {
00101       ener_euler.exponential_filter_r(1, nzet-1, spectral_filter) ;
00102   }
00103   // j_euler (momentum density 3-vector w.r.t. the Eulerian observer)
00104   // ----------------------------------------------------------------
00105 
00106   j_euler = (ener_euler + press)*u_euler ;
00107   j_euler.std_spectral_base() ;
00108 
00109   if (spectral_filter > 0) {
00110       j_euler.exponential_filter_r(1, nzet-1, spectral_filter) ;
00111   }
00112 
00113   // s_euler (trace of the stress tensor w.r.t. the Eulerian observer)
00114   // ----------------------------------------------------------------
00115 
00116   s_euler = (ener_euler + press)*v2 + 3*press ;
00117   s_euler.std_spectral_base() ;
00118   if (spectral_filter > 0) {
00119       s_euler.exponential_filter_r(1, nzet-1, spectral_filter) ;
00120   }
00121   // stress_euler (stress tensor w.r.t. the Eulerian observer)
00122   // ---------------------------------------------------------
00123 
00124 
00125   stress_euler = (ener_euler + press)*u_euler*u_euler + press*gamma.con() ;
00126   stress_euler.std_spectral_base() ;
00127   if (spectral_filter > 0) {
00128       stress_euler.exponential_filter_r(1, nzet-1, spectral_filter) ;
00129   }
00130 
00131   // The derived quantities are obsolete
00132   // ------------------------------------
00133 
00134   del_deriv() ;
00135 
00136 
00137 }
00138 
00139   

Generated on Tue Feb 7 01:35:20 2012 for LORENE by  doxygen 1.4.6