00001 /* 00002 * Function Star_rot_Dirac_diff::hydro_euler 00003 * 00004 * (see file star_rot_dirac.h for documentation). 00005 * 00006 */ 00007 00008 /* 00009 * Copyright (c) 2005 Motoyuki Saijo 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_diff_hydro_C[] = "$Header: /cvsroot/Lorene/C++/Source/Star/strot_dirac_diff_hydro.C,v 1.1 2005/08/13 19:49:42 m_saijo Exp $" ; 00029 00030 /* 00031 * $Header: /cvsroot/Lorene/C++/Source/Star/strot_dirac_diff_hydro.C,v 1.1 2005/08/13 19:49:42 m_saijo Exp $ 00032 * 00033 */ 00034 00035 00036 // C headers 00037 #include<math.h> 00038 #include<assert.h> 00039 00040 // Lorene headers 00041 #include"star_rot_dirac_diff.h" 00042 00043 void Star_rot_Dirac_diff::hydro_euler(){ 00044 00045 // u_euler (fluid 3-velocity w.r.t. the Eulerian frame) 00046 // ----------------------------------------------------- 00047 00048 00049 u_euler.set(1).set_etat_zero() ; 00050 u_euler.set(2).set_etat_zero() ; 00051 00052 u_euler.set(3) = omega_field ; 00053 u_euler.set(3).std_spectral_base() ; 00054 u_euler.set(3).mult_rsint() ; 00055 u_euler.set(3) += beta(3) ; 00056 00057 u_euler = u_euler / nn ; 00058 00059 // v2 (square of the norm of u_euler) 00060 // ---------------------------------- 00061 00062 v2 = contract(contract(gamma.cov(), 0, u_euler, 0), 0, u_euler, 0) ; 00063 00064 00065 // gam_euler (Lorentz factor between the fluid and Eulerian observers) 00066 // ------------------------------------------------------------------- 00067 00068 gam_euler = 1. / sqrt(1. - v2) ; 00069 00070 gam_euler.std_spectral_base() ; 00071 00072 00073 // ener_euler (energy density w.r.t. the Eulerian observer) 00074 // ------------------------------------------------------ 00075 00076 ener_euler = gam_euler*gam_euler*(ener + press) - press ; 00077 00078 ener_euler.std_spectral_base() ; 00079 00080 00081 // j_euler (momentum density 3-vector w.r.t. the Eulerian observer) 00082 // ---------------------------------------------------------------- 00083 00084 j_euler = (ener_euler + press)*u_euler ; 00085 00086 j_euler.std_spectral_base() ; 00087 00088 00089 // s_euler (trace of the stress tensor w.r.t. the Eulerian observer) 00090 // ---------------------------------------------------------------- 00091 00092 s_euler = (ener_euler + press)*v2 + 3*press ; 00093 00094 s_euler.std_spectral_base() ; 00095 00096 00097 // stress_euler (stress tensor w.r.t. the Eulerian observer) 00098 // --------------------------------------------------------- 00099 00100 00101 stress_euler = (ener_euler + press)*u_euler*u_euler + press*gamma.con() ; 00102 00103 stress_euler.std_spectral_base() ; 00104 00105 00106 // The derived quantities are obsolete 00107 // ------------------------------------ 00108 00109 del_deriv() ; 00110 00111 00112 }
1.4.6