isol_hole.h

00001 /*
00002  *  Definition of Lorene class Isol_hole
00003  *               
00004  */
00005 
00006 /*
00007  *   Copyright (c) 2009 Nicolas Vasset
00008  */
00009 
00010 
00011 #ifndef __ISOLHOLE_H_ 
00012 #define __ISOLHOLE_H_ 
00013 
00014 
00015 // Headers Lorene
00016 #include "tensor.h"
00017 #include "metric.h"
00018 #include "spheroid.h"
00019 #include "excision_surf.h"
00020 #include "excision_hor.h"
00021 
00022  class Eos ;
00023 
00024             //---------------------------//
00025             //    Class Isol_hole        //
00026             //---------------------------//
00027 
00049 class Isol_hole {
00050 
00051     // Data : 
00052     // -----
00053     protected:
00054     const Map& mp ;     
00055 
00056         double Omega ;     
00060         bool NorKappa ;    
00064         Scalar boundNoK ; 
00068     bool isCF ;       
00069 
00070     
00071     // Metric data
00072     // -----------------
00073 
00075     Scalar lapse ; 
00076     
00077     // Conformal factor
00078     Scalar conf_fact;
00079 
00081     Vector shift ;
00082     
00086         Sym_tensor hij ;
00087 
00091     Sym_tensor hatA ; 
00092 
00093    // Derived data : 
00094     // ------------
00095     protected:
00096 
00097     
00099 
00100     mutable Spheroid* p_hor ;
00102     mutable double* p_adm_mass ; 
00103 
00107     mutable double* p_komar_angmom ;
00108 
00112     mutable double* p_virial_residue ;
00113     
00114 
00115     
00116 
00117 
00118     // Constructors - Destructor
00119     // -------------------------
00120     public:
00121     
00134     Isol_hole(const Map& mp_i, double Omega_i, bool NorKappa_i, Scalar NoK_i, bool isCF_i = false) ;            
00135     
00136     
00137     Isol_hole(const Isol_hole& ) ;      
00138 
00153     Isol_hole(const Map& mp_i, double Omega_i, bool NorKappa_i, Scalar NoK_i, bool isCF_i, FILE* fich) ;            
00154 
00155     virtual ~Isol_hole() ;          
00156 
00157     
00158     // Memory management
00159     // -----------------
00160     protected:
00162     virtual void del_deriv() const ; 
00163     
00165     virtual void set_der_0x0() const ; 
00166 
00167 
00168     // Mutators / assignment
00169     // ---------------------
00170     public:
00172     void operator=(const Isol_hole&) ;  
00173 
00180     void compute_stat_metric(double precis, double relax, int mer_max, int mer_max2, bool isvoid = true) ; 
00181 
00187     void secmembre_kerr(Sym_tensor& source_hh);
00188  
00189  
00190 
00191     // Accessors
00192     // ---------
00193     public:
00195     const Map& get_mp() const {return mp; } ; 
00196 
00198     double get_Omega() const {return Omega ;} ;
00199 
00201     const Scalar& get_boundN() const{
00202     if (NorKappa == false){
00203       return boundNoK;
00204     }
00205     else cout << "The boundary condition is imposed on the surface gravity!" << endl;
00206     }
00208     
00209     const Scalar& get_Kappa() const{
00210       if(NorKappa == true){
00211       return boundNoK;
00212     }
00213     else cout << "The boundary condition is imposed on the lapse!" <<endl;
00214     }
00215 
00216 
00218     const Scalar& get_lapse() const {return lapse;} ;
00219     
00221     const Scalar& get_conf_fact() const {return conf_fact;};
00222 
00224     const Vector& get_shift() const {return shift;} ;
00225 
00227     const Sym_tensor& get_hij() const {return hij;} ;
00228 
00230     const Sym_tensor& get_hatA() const {return hatA;} ;
00231 
00232 
00233 
00234 
00235     // Outputs
00236     // -------
00237     public:
00238     virtual void sauve(FILE* ) const ;      
00239 
00240         void Einstein_errors();                     
00241 
00242  
00243     // Global quantities
00244     // -----------------
00245     public:
00246 
00247       
00252     Spheroid hor() ;
00253  
00255     double adm_mass() ; 
00256 
00260     double komar_angmom() ;
00261 
00265     double virial_residue() ;
00266 
00267     
00268 
00269 };
00270 
00271 #endif

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