00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __EXCISIONSURF_H_
00027 #define __EXCISIONSURF_H_
00028
00029
00030
00031
00032
00033 #include "metric.h"
00034 #include "spheroid.h"
00035
00042 class Excision_surf {
00043
00044
00045
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 Scalar expa;
00074
00076 Scalar dt_expa;
00077
00078
00079
00080
00081 protected:
00082
00083 mutable Scalar* p_get_BC_conf_fact_1 ;
00084 mutable Scalar* p_get_BC_lapse_1 ;
00085 mutable Vector* p_get_BC_shift_1 ;
00086 mutable Scalar* p_get_BC_Npsi_1 ;
00087 mutable Scalar* p_get_BC_conf_fact_2 ;
00088 mutable Scalar* p_get_BC_conf_fact_3 ;
00089 mutable Scalar* p_get_BC_conf_fact_4 ;
00090 mutable Scalar* p_get_BC_lapse_2 ;
00091 mutable Scalar* p_get_BC_lapse_3 ;
00092 mutable Scalar* p_get_BC_lapse_4 ;
00093 mutable Scalar* p_derive_t_expa ;
00094 mutable Vector* p_get_BC_shift_2 ;
00095 mutable Vector* p_get_BC_shift_3 ;
00096 mutable Vector* p_get_BC_shift_4 ;
00097 mutable Scalar* p_get_BC_Npsi_2 ;
00098 mutable Scalar* p_get_BC_Npsi_3 ;
00099 mutable Scalar* p_get_BC_Npsi_4 ;
00100 mutable Scalar* p_get_BC_Npsi_5 ;
00101
00102
00103
00104
00105 public:
00106
00118 Excision_surf(const Scalar& h_in, const Metric& gij, const Sym_tensor& Kij2, const Scalar& ppsi, const Scalar& nn, const Vector& beta, double timestep, int int_nos) ;
00119 Excision_surf(const Excision_surf& ) ;
00120
00122 Excision_surf(FILE* ) ;
00123
00124 virtual ~Excision_surf() ;
00125
00126
00127
00128
00129 protected:
00131 virtual void del_deriv() const ;
00132
00134 void set_der_0x0() const ;
00135
00136
00137
00138
00139
00140 public:
00142 void operator=(const Excision_surf&) ;
00143
00144
00145
00146
00147
00150 void get_evol_params_from_ID(double alpha, double beta, double gamma, Scalar& Ee, Vector& Jj, Sym_tensor& Ss) ;
00151
00153 void set_expa_parab(double c_theta_lap, double c_theta_fin, Scalar& expa_fin) ;
00159 void set_expa_hyperb(double alph0, double beta0, double gamma0) ;
00160
00161
00162
00163
00164 public:
00166 const Spheroid& get_sph() const {return sph; };
00167
00169 const Scalar& get_conf_fact() const {return conf_fact; } ;
00170
00172 const Scalar& get_lapse() const {return lapse ; } ;
00173
00175 const Vector& get_shift() const {return shift ; } ;
00176
00178 const Metric& get_gamij() const {return gamij ; } ;
00179
00181 const Sym_tensor& get_Kij() const {return Kij ; } ;
00182
00184 double get_delta_t() const {return delta_t ;};
00185
00187 double get_no_of_steps() const {return no_of_steps ;};
00188
00190 const Scalar & get_expa() const {return expa; };
00191
00193 const Scalar& get_dt_expa() const {return dt_expa;} ;
00194
00196 Spheroid& set_sph() {del_deriv() ; return sph ;};
00197
00199 Scalar& set_conf_fact() {del_deriv() ; return conf_fact ; } ;
00200
00202 Scalar& set_lapse() {del_deriv() ; return lapse ; } ;
00203
00205 Vector& set_shift() {del_deriv() ; return shift ; } ;
00206
00208 Metric& set_gamij() {del_deriv() ; return gamij ; } ;
00209
00211 Sym_tensor& set_Kij() {del_deriv() ; return Kij ; } ;
00212
00213 double set_delta_t() {del_deriv() ; return delta_t ; } ;
00214
00215 double set_no_of_steps() {del_deriv() ; return no_of_steps ; } ;
00216
00218
00219 Scalar& set_expa() {del_deriv(); return expa;};
00220
00222
00223 Scalar& set_dt_expa() {del_deriv(); return dt_expa;};
00224
00225
00226
00227 public:
00229 const Scalar& get_BC_conf_fact_1(bool isMOTS = false) const ;
00230
00231 const Scalar& get_BC_lapse_1(double value) const ;
00232
00233 const Vector& get_BC_shift_1(double Omega) const ;
00234
00235 const Scalar& get_BC_Npsi_1(double value) const ;
00237 const Scalar& get_BC_conf_fact_2(double c_psi_lap, double c_psi_fin, Scalar& expa_fin) const ;
00239 const Scalar& get_BC_conf_fact_3(double c_theta_lap, double c_theta_fin, Scalar& expa_fin) const ;
00241 const Scalar& get_BC_conf_fact_4() const ;
00243 const Scalar& get_BC_lapse_2(double lapse_fin, double c_lapse_lap, double c_lapse_fi) const ;
00245 const Scalar& get_BC_lapse_3(Scalar& dttheta, Scalar& Ee, Vector& Jj, Sym_tensor& Sij, bool sph_sym = true) const ;
00247 const Scalar& get_BC_lapse_4 (Scalar& old_nn, Vector& beta_point, Sym_tensor& strain_tens) const ;
00249 const Scalar& derive_t_expa(Scalar& Ee, Vector& Jj, Sym_tensor& Sij) const;
00251 const Vector& get_BC_shift_2(double c_bb_lap, double c_bb_fin, double c_V_lap, double epsilon) const ;
00253 const Vector& get_BC_shift_3(Scalar& dtpsi, double c_V_lap, double epsilon) const ;
00255 const Vector & get_BC_shift_4(Scalar& dttheta, Scalar& Ee, Vector& Jj, Sym_tensor& Sij, double c_V_lap, double epsilon, bool sph_sym= true) const ;
00257 const Scalar& get_BC_Npsi_2(double value, double c_npsi_lap, double c_npsi_fin) const ;
00259 const Scalar& get_BC_Npsi_3(double n_0, double beta) const ;
00261 const Scalar& get_BC_Npsi_4(double Kappa) const ;
00263 const Scalar& get_BC_Npsi_5(double Kappa) const ;
00264
00265
00266 public:
00267 virtual void sauve(FILE *) const ;
00268
00270 friend ostream& operator<<(ostream& , const Spheroid& ) ;
00271
00272 };
00273
00274 ostream& operator<<(ostream& , const Spheroid& ) ;
00275
00276
00277 #endif