et_rot_diff.h

00001 /*
00002  *  Definition of Lorene class Et_rot_diff
00003  *
00004  */
00005 
00006 /*
00007  *   Copyright (c) 2001 Eric Gourgoulhon
00008  *
00009  *   This file is part of LORENE.
00010  *
00011  *   LORENE is free software; you can redistribute it and/or modify
00012  *   it under the terms of the GNU General Public License as published by
00013  *   the Free Software Foundation; either version 2 of the License, or
00014  *   (at your option) any later version.
00015  *
00016  *   LORENE is distributed in the hope that it will be useful,
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  *   GNU General Public License for more details.
00020  *
00021  *   You should have received a copy of the GNU General Public License
00022  *   along with LORENE; if not, write to the Free Software
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00024  *
00025  */
00026 
00027 
00028 #ifndef __ET_ROT_DIFF_H_ 
00029 #define __ET_ROT_DIFF_H_ 
00030 
00031 /*
00032  * $Id: et_rot_diff.h,v 1.4 2005/10/05 15:14:47 j_novak Exp $
00033  * $Log: et_rot_diff.h,v $
00034  * Revision 1.4  2005/10/05 15:14:47  j_novak
00035  * Added a Param* as parameter of Etoile_rot::equilibrium
00036  *
00037  * Revision 1.3  2004/03/22 13:12:41  j_novak
00038  * Modification of comments to use doxygen instead of doc++
00039  *
00040  * Revision 1.2  2002/09/13 09:17:33  j_novak
00041  * Modif. commentaires
00042  *
00043  * Revision 1.1.1.1  2001/11/20 15:19:27  e_gourgoulhon
00044  * LORENE
00045  *
00046  * Revision 1.2  2001/10/25  09:20:35  eric
00047  * Ajout de la fonction virtuelle display_poly.
00048  *
00049  * Revision 1.1  2001/10/19  08:17:59  eric
00050  * Initial revision
00051  *
00052  *
00053  * $Header: /cvsroot/Lorene/C++/Include/et_rot_diff.h,v 1.4 2005/10/05 15:14:47 j_novak Exp $
00054  *
00055  */
00056 
00063 // Headers Lorene
00064 #include "etoile.h"
00065 
00066 class Et_rot_diff : public Etoile_rot {
00067 
00068     // Data : 
00069     // -----
00070     protected:
00081     double (*frot)(double, const Tbl&) ;
00082     
00089     double (*primfrot)(double, const Tbl&) ;
00090     
00098     Tbl par_frot ; 
00099     
00101     Tenseur omega_field ; 
00102     
00103     double omega_min ;   
00104     double omega_max ;   
00105     
00107     Tenseur prim_field ; 
00108     
00109     // Constructors - Destructor
00110     // -------------------------
00111     public:
00127     Et_rot_diff(Map& mp_i, int nzet_i, bool relat, const Eos& eos_i, 
00128             double (*frot_i)(double, const Tbl&), 
00129             double (*primfrot_i)(double, const Tbl&), 
00130             const Tbl& par_frot_i) ;            
00131 
00132     Et_rot_diff(const Et_rot_diff& ) ;      
00133 
00144     Et_rot_diff(Map& mp_i, const Eos& eos_i, FILE* fich,
00145             double (*frot_i)(double, const Tbl&), 
00146             double (*primfrot_i)(double, const Tbl&) ) ;            
00147     
00148     virtual ~Et_rot_diff() ;            
00149 
00150 
00151     // Memory management
00152     // -----------------
00153 
00154     // Everything is inherited from Etoile_rot
00155 
00156     // Mutators / assignment
00157     // ---------------------
00158     public:
00160     void operator=(const Et_rot_diff& ) ;   
00161     
00162     // Accessors
00163     // ---------
00164     public:
00166     const Tenseur& get_omega_field() const {return omega_field;} ; 
00167 
00171     virtual double get_omega_c() const ;        
00172 
00173     // Outputs
00174     // -------
00175     public:
00176     virtual void sauve(FILE *) const ;      
00177     
00179     virtual void display_poly(ostream& ) const ; 
00180 
00181     protected:
00183     virtual ostream& operator>>(ostream& ) const ;    
00184 
00185 
00186     // Computational routines
00187     // ----------------------
00188     public: 
00189 
00190     virtual double tsw() const ;        
00191 
00203     virtual void hydro_euler() ; 
00204 
00223     void fait_omega_field(double omeg_min, double omeg_max,
00224                   double precis, int nitermax) ;
00225     
00227     void fait_prim_field() ;
00228     
00244     double funct_omega(double omeg) const ;     
00245 
00254     double prim_funct_omega(double omeg) const ;    
00255 
00335     virtual void equilibrium(double ent_c, double omega0, double fact_omega, 
00336              int nzadapt, const Tbl& ent_limit,
00337              const Itbl& icontrol, const Tbl& control,
00338              double mbar_wanted, double aexp_mass, 
00339              Tbl& diff, Param* = 0x0) ;
00340     
00341  };
00342 
00343 #endif

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