excision_hor.h

00001 /*
00002  *  Definition of Lorene class Excision_hor, friend class of Spheroid.
00003  *
00004  */
00005 
00006 /*
00007  *   Copyright (c) 2009  Jose-Luis Jaramillo & Nicolas Vasset
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 version 2
00013  *   as published by the Free Software Foundation.
00014  *
00015  *   LORENE is distributed in the hope that it will be useful,
00016  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *   GNU General Public License for more details.
00019  *
00020  *   You should have received a copy of the GNU General Public License
00021  *   along with LORENE; if not, write to the Free Software
00022  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023  *
00024  */
00025 
00026 #ifndef __EXCISIONHOR_H_ 
00027 #define __EXCISIONHOR_H_ 
00028 
00029 /*
00030  * $Header: /cvsroot/Lorene/C++/Include/excision_hor.h,v 1.2 2009/10/23 13:19:34 j_novak Exp $
00031  *
00032  */
00033 #include "metric.h"
00034 #include "spheroid.h"
00035 
00042 class Excision_hor {
00043 
00044 
00045     // Data : 
00046     // -----
00047  protected:
00049   Spheroid sph ;
00050   
00052   Scalar conf_fact ; 
00053   
00055   Scalar lapse ;
00056   
00058   Vector shift ;
00059   
00061   Metric gamij ; 
00062   
00064   Sym_tensor Kij ;
00065 
00067   double delta_t;
00068 
00070   double no_of_steps;
00071 
00073   Sym_tensor Tij; 
00074    
00075 
00076     // Derived data : 
00077     // ------------
00078     protected:
00079   mutable Scalar* p_get_BC_conf_fact ; 
00080   mutable Scalar* p_get_BC_bmN ; 
00081   mutable Scalar* p_get_BC_bpN ; 
00082   mutable Vector* p_get_BC_shift ; 
00083 
00084 
00085     // Constructors - Destructor
00086     // -------------------------
00087     public:
00088 
00101     Excision_hor(const Scalar& h_in, const Metric& gij, const Sym_tensor& Kij2, const Scalar& ppsi, const Scalar& nn, const Vector& beta,const Sym_tensor& Tij2, double timestep, int int_nos = 1) ;
00102     Excision_hor(const Excision_hor& ) ;        
00103 
00105     Excision_hor(FILE* ) ;          
00106 
00107     virtual ~Excision_hor() ;           
00108  
00109 
00110     // Memory management
00111     // -----------------
00112     protected:
00114     virtual void del_deriv() const ; 
00115     
00117     void set_der_0x0() const ; 
00118 
00119 
00120     // Mutators / assignment
00121     // ---------------------
00122     public:
00124     void operator=(const Excision_hor&) ;   
00125     
00126 
00127     // Accessors
00128     // ---------
00129     public:
00131     const Spheroid& get_sph() const {return sph; }; 
00132     
00134     const Scalar& get_conf_fact() const {return conf_fact; } ;
00135 
00137     const Scalar& get_lapse() const {return lapse ; } ;
00138 
00140     const Vector& get_shift() const {return shift ; } ;
00141 
00143     const Metric& get_gamij() const {return gamij ; } ;
00144 
00146     const Sym_tensor& get_Kij() const {return Kij ; } ;
00147 
00149     double get_delta_t() const {return delta_t ;};
00150 
00152     double get_no_of_steps() const {return no_of_steps ;};
00153  
00155         const Sym_tensor& get_Tij() const{return Tij; } ;
00156 
00158     Scalar& set_conf_fact() {del_deriv() ; return conf_fact ; } ;
00159 
00161     Scalar& set_lapse() {del_deriv() ; return lapse ; } ;
00162 
00164     Vector& set_shift() {del_deriv() ; return shift ; } ;
00165 
00167     Metric& set_gamij() {del_deriv() ; return gamij ; } ;
00168 
00170     Sym_tensor& set_Kij() {del_deriv() ; return Kij ; } ;
00171  
00173         Sym_tensor& set_Tij() {del_deriv() ; return Tij; } ;
00174     
00175 
00176     double& set_delta_t() {del_deriv() ; return delta_t ; } ;
00177 
00178     double& set_no_of_steps() {del_deriv() ; return no_of_steps ; } ;
00179 
00180     
00181     // Computational functions
00182     // -----------------------
00183     public:
00184 
00186     const Scalar& get_BC_conf_fact() const ;
00188     const Scalar& get_BC_bmN(int choice_bmN, double value = 1.) const ;
00191     const Scalar& get_BC_bpN(int choice_bpN, double c_bpn_lap = 1., double c_bpn_fin = 1., Scalar *bpN_fin = 0x0) const ;
00193     const Vector& get_BC_shift(double c_V_lap) const ;
00194   
00195     // Outputs
00196     // -------
00197     public:
00198     virtual void sauve(FILE *) const ;      
00199     
00201     friend ostream& operator<<(ostream& , const Spheroid& ) ;   
00202 
00203 };
00204 
00205 ostream& operator<<(ostream& , const Spheroid& ) ;
00206 
00207 
00208 #endif

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