29char isol_hor_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Isol_hor/isol_hor.C,v 1.35 2014/10/13 08:53:01 j_novak Exp $" ;
161#include "utilitaires.h"
162#include "time_slice.h"
166#include "evolution.h"
178 mp(mpi), nz(mpi.get_mg()->get_nzone()), radius ((mpi.get_alpha())[0]),
179 omega(0), boost_x(0), boost_z(0), regul(0),
180 n_auto_evol(depth_in), n_comp_evol(depth_in),
181 psi_auto_evol(depth_in), psi_comp_evol(depth_in),
182 dn_evol(depth_in), dpsi_evol(depth_in),
183 beta_auto_evol(depth_in), beta_comp_evol(depth_in),
184 aa_auto_evol(depth_in), aa_comp_evol(depth_in),
185 aa_nn(depth_in), aa_quad_evol(depth_in),
186 met_gamt(mpi.flat_met_spher()), gamt_point(mpi, CON, mpi.get_bvect_spher()),
187 trK(mpi), trK_point(mpi), decouple(mpi){
200 ff_in.con(), psi_in*psi_in*psi_in*psi_in*psi_in*psi_in*aa_in,
202 mp(mpi), nz(mpi.get_mg()->get_nzone()), radius ((mpi.get_alpha())[0]),
203 omega(0), boost_x(0), boost_z(0), regul(0),
204 n_auto_evol(depth_in), n_comp_evol(depth_in),
205 psi_auto_evol(depth_in), psi_comp_evol(depth_in),
206 dn_evol(depth_in), dpsi_evol(depth_in),
207 beta_auto_evol(depth_in), beta_comp_evol(depth_in),
208 aa_auto_evol(depth_in), aa_comp_evol(depth_in),
209 aa_nn(depth_in), aa_quad_evol(depth_in),
210 met_gamt(metgamt), gamt_point(gamt_point_in),
211 trK(trK_in), trK_point(trK_point_in), decouple(lapse_in.get_mp()){
226 radius(isolhor_in.radius),
227 omega(isolhor_in.omega),
228 boost_x(isolhor_in.boost_x),
229 boost_z(isolhor_in.boost_z),
230 regul(isolhor_in.regul),
231 n_auto_evol(isolhor_in.n_auto_evol),
232 n_comp_evol(isolhor_in.n_comp_evol),
233 psi_auto_evol(isolhor_in.psi_auto_evol),
234 psi_comp_evol(isolhor_in.psi_comp_evol),
235 dn_evol(isolhor_in.dn_evol),
236 dpsi_evol(isolhor_in.dpsi_evol),
237 beta_auto_evol(isolhor_in.beta_auto_evol),
238 beta_comp_evol(isolhor_in.beta_comp_evol),
239 aa_auto_evol(isolhor_in.aa_auto_evol),
240 aa_comp_evol(isolhor_in.aa_comp_evol),
241 aa_nn(isolhor_in.aa_nn),
242 aa_quad_evol(isolhor_in.aa_quad_evol),
243 met_gamt(isolhor_in.met_gamt),
244 gamt_point(isolhor_in.gamt_point),
246 trK_point(isolhor_in.trK_point),
247 decouple(isolhor_in.decouple){
254 bool partial_read,
int depth_in)
256 fich, partial_read, depth_in),
257 mp(mpi), nz(mpi.get_mg()->get_nzone()), radius ((mpi.get_alpha())[0]),
258 omega(0), boost_x(0), boost_z(0), regul(0),
259 n_auto_evol(depth_in), n_comp_evol(depth_in),
260 psi_auto_evol(depth_in), psi_comp_evol(depth_in),
261 dn_evol(depth_in), dpsi_evol(depth_in),
262 beta_auto_evol(depth_in), beta_comp_evol(depth_in),
263 aa_auto_evol(depth_in), aa_comp_evol(depth_in),
264 aa_nn(depth_in), aa_quad_evol(depth_in),
265 met_gamt(mpi.flat_met_spher()),
266 gamt_point(mpi, CON, mpi.get_bvect_spher()),
267 trK(mpi), trK_point(mpi), decouple(mpi){
277 for (
int j=jmin; j<=
jtime; j++) {
278 fread_be(&indicator,
sizeof(
int), 1, fich) ;
279 if (indicator == 1) {
286 for (
int j=jmin; j<=
jtime; j++) {
287 fread_be(&indicator,
sizeof(
int), 1, fich) ;
288 if (indicator == 1) {
295 for (
int j=jmin; j<=
jtime; j++) {
296 fread_be(&indicator,
sizeof(
int), 1, fich) ;
297 if (indicator == 1) {
304 for (
int j=jmin; j<=
jtime; j++) {
305 fread_be(&indicator,
sizeof(
int), 1, fich) ;
306 if (indicator == 1) {
382 flux <<
'\n' <<
"radius of the horizon : " <<
radius <<
'\n' ;
383 flux <<
"boost in x-direction : " <<
boost_x <<
'\n' ;
384 flux <<
"boost in z-direction : " <<
boost_z <<
'\n' ;
385 flux <<
"angular velocity omega : " <<
omega_hor() <<
'\n' ;
386 flux <<
"area of the horizon : " <<
area_hor() <<
'\n' ;
387 flux <<
"ang. mom. of horizon : " <<
ang_mom_hor() <<
'\n' ;
388 flux <<
"ADM ang. mom. : " <<
ang_mom_adm() <<
'\n' ;
389 flux <<
"Mass of the horizon : " <<
mass_hor() <<
'\n' ;
390 flux <<
"ADM Mass : " <<
adm_mass() <<
'\n' ;
419 for (
int j=jmin; j<=
jtime; j++) {
420 int indicator = (
psi_evol.is_known(j)) ? 1 : 0 ;
421 fwrite_be(&indicator,
sizeof(
int), 1, fich) ;
422 if (indicator == 1)
psi_evol[j].sauve(fich) ;
426 for (
int j=jmin; j<=
jtime; j++) {
427 int indicator = (
n_auto_evol.is_known(j)) ? 1 : 0 ;
428 fwrite_be(&indicator,
sizeof(
int), 1, fich) ;
433 for (
int j=jmin; j<=
jtime; j++) {
435 fwrite_be(&indicator,
sizeof(
int), 1, fich) ;
440 for (
int j=jmin; j<=
jtime; j++) {
442 fwrite_be(&indicator,
sizeof(
int), 1, fich) ;
592 for (
int i=1 ; i<=3 ; i++){
593 if (auxi(i).get_etat() != ETATZERO)
600 for (
int i=1 ; i<=3 ; i++){
684 for (
int i=1 ; i<=3 ; i++){
685 if (auxi(i).get_etat() != ETATZERO)
692 for (
int i=1 ; i<=3 ; i++){
740 auxi = 0.5 - 0.5/
mp.
r ;
773 temp_vect1.
set(2) = 0. ;
774 temp_vect1.
set(3) = 0. ;
850 for (
int k=0; k<nnp; k++)
851 for (
int j=0; j<nnt; j++){
852 if (
nn().val_grid_point(1, k, j , 0) < 1e-12){
863 cout <<
"regul = " <<
regul << endl ;
868 for (
int i=1 ; i<=3 ; i++)
869 for (
int j=i ; j<=3 ; j++) {
870 auxi = aa_new(i, j) ;
871 auxi = division_xpun (auxi, 0) ;
872 aa_new.
set(i,j) = auxi / nn_sxpun / 2. ;
903 Scalar psi_perturb (
pow(gamm(3,3), 0.25)) ;
918void Isol_hor::aa_kerr_ww(
double mm,
double aaa) {
928 Scalar rbl = rr + mm + (mm*mm - aaa*aaa) / (4*rr) ;
931 Scalar sigma_inv = 1. / (rbl*rbl + aaa*aaa*cost*cost) ;
936 ww_pert = - 1*(mm*aaa*aaa*aaa*
pow(sint, 4.)*cost) * sigma_inv ;
937 ww_pert.set_spectral_va().set_base_r(0,
R_CHEBPIM_P) ;
938 for (
int l=1; l<
nz-1; l++)
939 ww_pert.set_spectral_va().set_base_r(l,
R_CHEB) ;
940 ww_pert.set_spectral_va().set_base_r(
nz-1,
R_CHEBU) ;
941 ww_pert.set_spectral_va().set_base_t(
T_COSSIN_CI) ;
942 ww_pert.set_spectral_va().set_base_p(
P_COSSIN) ;
951 dw_by.set(2) = 3 * aaa*mm*sint*sint*sint / rr ;
953 dw_by.set(2).set_spectral_va().set_base_r(0,
R_CHEBPIM_P) ;
954 for (
int l=1; l<
nz-1; l++)
955 dw_by.set(2).set_spectral_va().set_base_r(l,
R_CHEB) ;
956 dw_by.set(2).set_spectral_va().set_base_r(
nz-1,
R_CHEBU) ;
957 dw_by.set(2).set_spectral_va().set_base_t(
T_COSSIN_SI) ;
958 dw_by.set(2).set_spectral_va().set_base_p(
P_COSSIN) ;
968 Vector dw_pert(ww_pert.derive_con(
ff)) ;
987 Scalar aquad = aquad_1 + aquad_2 + aquad_3 ;
1012 Scalar s_r (ww_pert.derive_cov(
ff)(2)) ;
1023 Scalar s_t (ww_pert.derive_cov(
ff)(1)) ;
1029 temp.div_rsint_dzpuis(2) ;
1045 aij.set(3,1) = s_r ;
1046 aij.set(3,1).div_rsint() ;
1047 aij.set(3,2) = s_t ;
1048 aij.set(3,2).div_rsint() ;
1050 Base_val base_31 (aij(3,1).get_spectral_va().get_base()) ;
1051 Base_val base_32 (aij(3,2).get_spectral_va().get_base()) ;
1053 aij.set(3,1) = aij(3,1) *
pow(
gam_dd()(1,1), 5./3.)
1055 aij.set(3,1) = aij(3,1) *
pow(
psi(), -6.) ;
1056 aij.set(3,1).set_spectral_va().set_base(base_31) ;
1057 aij.set(3,2) = aij(3,2) *
pow(
gam_dd()(1,1), 5./3.)
1059 aij.set(3,2) = aij(3,2) *
pow(
psi(), -6.) ;
1060 aij.set(3,2).set_spectral_va().set_base(base_32) ;
1080 kij = kij *
pow(
gam().determinant(), -1./3.) ;
1081 kij.std_spectral_base() ;
1116double fonc_expansion(
double rr,
const Param& par_expansion) {
1125void Isol_hor::adapt_hor(
double c_min,
double c_max) {
1128 Scalar app_hor(
mp) ;
1129 app_hor.annule_hard() ;
1133 double precis = 1.e-13 ;
1138 for (
int nt=0; nt<
mp.
get_mg()->get_nt(1); nt++)
1139 for (
int np=0; np<
mp.
get_mg()->get_np(1); np++) {
1144 Param par_expansion ;
1146 par_expansion.add_double(theta, 0) ;
1147 par_expansion.add_double(phi, 1) ;
1148 double r_app_hor =
zerosec_b(fonc_expansion, par_expansion, c_min, c_max,
1149 precis, nitmax, nit) ;
1151 app_hor.set_grid_point(1, np, nt, 0) = r_app_hor ;
1160 Scalar trans_11 (
mp) ;
1162 r_new.annule_hard() ;
1164 for (
int l=1; l<
nz; l++)
1165 for (
int nr=0; nr<
mp.
get_mg()->get_nr(1); nr++)
1166 for (
int nt=0; nt<
mp.
get_mg()->get_nt(1); nt++)
1167 for (
int np=0; np<
mp.
get_mg()->get_np(1); np++) {
1168 r_new.set_grid_point(l, np, nt, nr) = rr.val_grid_point(l, np, nt, nr) -
1169 app_hor.val_grid_point(1, np, nt, 0) + 1 ;
1173 r_new.std_spectral_base() ;
1179 Scalar trans_12 (r_new.dsdt()) ;
1181 Scalar trans_13 (r_new.stdsdp()) ;
1183 for (
int nr=0; nr<
mp.
get_mg()->get_nr(1); nr++)
1184 for (
int nt=0; nt<
mp.
get_mg()->get_nt(1); nt++)
1185 for (
int np=0; np<
mp.
get_mg()->get_np(1); np++) {
1186 trans_12.set_grid_point(
nz-1, np, nt, nr) = trans_12.val_grid_point(1, np, nt, nr) ;
1187 trans_13.set_grid_point(
nz-1, np, nt, nr) = trans_13.val_grid_point(1, np, nt, nr) ;
1192 trans.set(1,1) = 1 ;
1195 trans.set(2,2) = 1. ;
1196 trans.set(3,3) = 1. ;
1197 trans.set(2,1) = 0. ;
1198 trans.set(3,1) = 0. ;
1199 trans.set(3,2) = 0. ;
1200 trans.set(2,3) = 0. ;
1201 trans.std_spectral_base() ;
1203 cout <<
"trans(1,3)" << endl <<
norme(trans(1,3)) << endl ;
1205 Sym_tensor gamma_uu (
gam().con()) ;
1206 Sym_tensor kk_uu (
k_uu()) ;
1208 gamma_uu =
contract(gamma_uu, 0, 1, trans * trans, 1, 3) ;
1209 kk_uu =
contract(kk_uu, 0, 1, trans * trans, 1, 3) ;
1211 Sym_tensor copie_gamma (gamma_uu) ;
1212 Sym_tensor copie_kk (kk_uu) ;
1215 kk_uu.dec_dzpuis(2) ;
1216 for(
int i=1; i<=3; i++)
1217 for(
int j=i; j<=3; j++){
1218 kk_uu.set(i,j).annule_hard() ;
1219 gamma_uu.set(i,j).annule_hard() ;
1222 copie_kk.dec_dzpuis(2) ;
1224 Scalar expa_trans(
mp) ;
1225 expa_trans.annule_hard() ;
1240 for(
int i=1; i<=3; i++)
1241 for(
int j=i; j<=3; j++)
1242 for (
int l=1; l<
nz; l++)
1243 for (
int nr=0; nr<
mp.
get_mg()->get_nr(1); nr++)
1244 for (
int nt=0; nt<
mp.
get_mg()->get_nt(1); nt++)
1245 for (
int np=0; np<
mp.
get_mg()->get_np(1); np++) {
1249 double r_inv = rr.val_grid_point(l, np, nt, nr) +
1250 app_hor.val_grid_point(1, np, nt, 0) - 1. ;
1252 gamma_uu.set(i,j).set_grid_point(l, np, nt, nr) =
1253 copie_gamma(i,j).val_point(r_inv, theta, phi) ;
1254 kk_uu.set(i,j).set_grid_point(l, np, nt, nr) =
1255 copie_kk(i,j).val_point(r_inv, theta, phi) ;
1257 expa_trans.set_grid_point(l, np, nt, nr) = expa.
val_point(r_inv, theta, phi) ;
1259 kk_uu.std_spectral_base() ;
1260 gamma_uu.std_spectral_base() ;
1261 expa_trans.std_spectral_base() ;
1263 for (
int l=1; l<
nz; l++)
1264 for (
int nr=0; nr<
mp.
get_mg()->get_nr(1); nr++)
1265 for (
int nt=0; nt<
mp.
get_mg()->get_nt(1); nt++)
1266 for (
int np=0; np<
mp.
get_mg()->get_np(1); np++) {
1267 gamma_uu.set(1,2).set_grid_point(l,np,nt,nr) = gamma_uu.set(1,2).val_grid_point(l,np,nt,nr)
1268 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1269 - 1 / rr.val_grid_point(l, np, nt, nr) ) ;
1270 gamma_uu.set(1,3).set_grid_point(l,np,nt,nr) = gamma_uu.set(1,3).val_grid_point(l,np,nt,nr)
1271 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1272 - 1 / rr.val_grid_point(l, np, nt, nr) ) ;
1273 gamma_uu.set(2,2).set_grid_point(l,np,nt,nr) = gamma_uu.set(2,2).val_grid_point(l,np,nt,nr)
1274 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1275 - 1 / rr.val_grid_point(l, np, nt, nr) )
1276 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1277 - 1 / rr.val_grid_point(l, np, nt, nr) ) ;
1278 gamma_uu.set(2,3).set_grid_point(l,np,nt,nr) = gamma_uu.set(2,3).val_grid_point(l,np,nt,nr)
1279 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1280 - 1 / rr.val_grid_point(l, np, nt, nr) )
1281 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1282 - 1 / rr.val_grid_point(l, np, nt, nr) ) ;
1283 gamma_uu.set(3,3).set_grid_point(l,np,nt,nr) = gamma_uu.set(3,3).val_grid_point(l,np,nt,nr)
1284 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1285 - 1 / rr.val_grid_point(l, np, nt, nr) )
1286 / (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
1287 - 1 / rr.val_grid_point(l, np, nt, nr) ) ;
1303 cout <<
"gamma_uu(1,1)" << endl <<
norme(gamma_uu(1,1)) << endl ;
1304 cout <<
"gamma_uu(2,1)" << endl <<
norme(gamma_uu(2,1)) << endl ;
1305 cout <<
"gamma_uu(3,1)" << endl <<
norme(gamma_uu(3,1)) << endl ;
1306 cout <<
"gamma_uu(2,2)" << endl <<
norme(gamma_uu(2,2)) << endl ;
1307 cout <<
"gamma_uu(3,2)" << endl <<
norme(gamma_uu(3,2)) << endl ;
1308 cout <<
"gamma_uu(3,3)" << endl <<
norme(gamma_uu(3,3)) << endl ;
1310 kk_uu.inc_dzpuis(2) ;
1311 expa_trans.inc_dzpuis(2) ;
1313 Metric gamm (gamma_uu) ;
Bases of the spectral expansions.
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
double * phi
Array of values of at the np collocation points.
double * tet
Array of values of at the nt collocation points.
Spacelike time-slice of an Isolated Horizon in a 3+1 spacetime with conformal decomposition.
virtual const Vector & dnn() const
Covariant derivative of the lapse function at the current time step jtime
Scalar expansion() const
Expansion of the outgoing null normal ( )
void met_kerr_perturb()
Initialisation of the metric tilde from equation (15) of Dain (2002).
virtual const Scalar & aa_quad() const
Conformal representation .
Evolution_std< Sym_tensor > aa_nn
Values at successive time steps of the components .
void init_bhole()
Sets the values of the fields to :
Sym_tensor gamt_point
Time derivative of the 3-metric tilde.
double regularise_one()
Corrects the shift in the innermost shell, so that it remains and that equals zero on the horizon.
Evolution_std< Scalar > aa_quad_evol
Values at successive time steps of the components .
double omega
Angular velocity in LORENE's units.
double regul
Intensity of the correction on the shift vector.
virtual const Scalar & n_comp() const
Lapse function at the current time step jtime.
Scalar trK
Trace of the extrinsic curvature.
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator<<).
const Scalar darea_hor() const
Element of area of the horizon.
Metric met_gamt
3 metric tilde
Evolution_std< Vector > dpsi_evol
Values at successive time steps of the covariant derivative of the conformal factor .
Evolution_std< Scalar > psi_auto_evol
Values at successive time steps of the conformal factor .
double ang_mom_hor() const
Angular momentum (modulo)
Evolution_std< Sym_tensor > aa_comp_evol
Values at successive time steps of the components of the conformal representation of the traceless p...
void set_psi(const Scalar &psi_in)
Sets the conformal factor relating the physical metric to the conformal one: .
virtual const Vector & beta_comp() const
Shift function at the current time step jtime.
void init_met_trK()
Sets the 3-metric tilde to the flat metric and gamt_point, trK and trK_point to zero.
Scalar trK_point
Time derivative of the trace of the extrinsic curvature.
Evolution_std< Vector > beta_auto_evol
Values at successive time steps of the shift function .
virtual const Vector & dpsi() const
Covariant derivative with respect to the flat metric of the conformal factor at the current time ste...
void set_nn(const Scalar &nn_in)
Sets the lapse.
double boost_z
Boost velocity in z-direction.
virtual const Scalar & psi_auto() const
Conformal factor at the current time step jtime.
double ang_mom_adm() const
ADM angular Momentum
virtual const Sym_tensor & aa_comp() const
Conformal representation of the traceless part of the extrinsic curvature: Returns the value at the ...
Scalar decouple
Function used to construct from the total .
void update_aa()
Conformal representation of the traceless part of the extrinsic curvature: .
virtual const Scalar & n_auto() const
Lapse function at the current time step jtime.
virtual ~Isol_hor()
Destructor.
double radius
Radius of the horizon in LORENE's units.
virtual const Sym_tensor & aa_auto() const
Conformal representation of the traceless part of the extrinsic curvature: Returns the value at the ...
double mass_hor() const
Mass computed at the horizon
void init_bhole_seul()
Initiates for a single black hole.
Evolution_std< Sym_tensor > aa_auto_evol
Values at successive time steps of the components of the conformal representation of the traceless p...
void set_gamt(const Metric &gam_tilde)
Sets the conformal metric to gam_tilde.
double radius_hor() const
Radius of the horizon.
Map_af & mp
Affine mapping.
virtual const Scalar & psi_comp() const
Conformal factor at the current time step jtime.
double axi_break() const
Breaking of the axial symmetry on the horizon.
Evolution_std< Scalar > n_auto_evol
Values at successive time steps of the lapse function .
Evolution_std< Scalar > n_comp_evol
Values at successive time steps of the lapse function .
Evolution_std< Vector > dn_evol
Values at successive time steps of the covariant derivative of the lapse with respect to the flat met...
Isol_hor(Map_af &mpi, int depth_in=3)
Standard constructor.
double boost_x
Boost velocity in x-direction.
void operator=(const Isol_hor &)
Assignment to another Isol_hor.
Evolution_std< Vector > beta_comp_evol
Values at successive time steps of the shift function .
double area_hor() const
Area of the horizon.
virtual const Vector & beta_auto() const
Shift function at the current time step jtime.
virtual void sauve(FILE *fich, bool partial_save) const
Total or partial saves in a binary file.
double omega_hor() const
Orbital velocity
Evolution_std< Scalar > psi_comp_evol
Values at successive time steps of the lapse function .
double integrale_surface(const Cmp &ci, double rayon) const
Performs the surface integration of ci on the sphere of radius rayon .
const Base_vect_cart & get_bvect_cart() const
Returns the Cartesian basis associated with the coordinates (x,y,z) of the mapping,...
Coord r
r coordinate centered on the grid
const Base_vect_spher & get_bvect_spher() const
Returns the orthonormal vectorial basis associated with the coordinates of the mapping.
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
const Metric_flat & flat_met_spher() const
Returns the flat metric associated with the spherical coordinates and with components expressed in th...
Flat metric for tensor calculation.
const Base_vect * get_triad() const
Returns the vectorial basis (triad) on which the metric is defined.
virtual const Sym_tensor & con() const
Read-only access to the contravariant representation.
Metric for tensor calculation.
virtual const Sym_tensor & con() const
Read-only access to the contravariant representation.
const Map & get_mp() const
Returns the mapping.
virtual const Sym_tensor & cov() const
Read-only access to the covariant representation.
virtual const Scalar & determinant() const
Returns the determinant.
const Grille3d * get_grille3d(int l) const
Returns a pointer on the 3D mono-grid for domain no. l.
int get_np(int l) const
Returns the number of points in the azimuthal direction ( ) in domain no. l.
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
const double & get_double(int position=0) const
Returns the reference of a double stored in the list.
const Scalar & get_scalar(int position=0) const
Returns the reference of a Scalar stored in the list.
void add_scalar(const Scalar &ti, int position=0)
Adds the address of a new Scalar to the list.
Tensor field of valence 0 (or component of a tensorial field).
virtual void sauve(FILE *) const
Save in a file.
void raccord(int n)
Performs the matching of the nucleus with respect to the first shell.
const Vector & derive_cov(const Metric &gam) const
Returns the gradient (1-form = covariant vector) of *this
void div_rsint_dzpuis(int ced_mult_r)
Division by but with the output flag dzpuis set to ced_mult_r .
virtual void std_spectral_base()
Sets the spectral bases of the Valeur va to the standard ones for a scalar field.
virtual void set_etat_zero()
Sets the logical state to ETATZERO (zero).
Tbl & set_domain(int l)
Read/write of the value in a given domain.
virtual void annule(int l_min, int l_max)
Sets the Scalar to zero in several domains.
Valeur & set_spectral_va()
Returns va (read/write version)
const Valeur & get_spectral_va() const
Returns va (read only version)
void mult_rsint()
Multiplication by everywhere; dzpuis is not changed.
void set_dzpuis(int)
Modifies the dzpuis flag.
void div_rsint()
Division by everywhere; dzpuis is not changed.
double val_point(double r, double theta, double phi) const
Computes the value of the field at an arbitrary point , by means of the spectral expansion.
void set_outer_boundary(int l, double x)
Sets the value of the Scalar at the outer boundary of a given domain.
virtual void dec_dzpuis(int dec=1)
Decreases by dec units the value of dzpuis and changes accordingly the values of the Scalar in the co...
void import(const Scalar &ci)
Assignment to another Scalar defined on a different mapping.
Class intended to describe valence-2 symmetric tensors.
Sym_tensor derive_lie(const Vector &v) const
Computes the Lie derivative of this with respect to some vector field v.
Spacelike time slice of a 3+1 spacetime with conformal decomposition.
Evolution_std< Sym_tensor > hh_evol
Values at successive time steps of the components .
virtual const Sym_tensor & gam_dd() const
Induced metric (covariant components ) at the current time step (jtime )
virtual const Scalar & nn() const
Lapse function N at the current time step (jtime )
virtual const Sym_tensor & k_uu() const
Extrinsic curvature tensor (contravariant components ) at the current time step (jtime )
Evolution_std< Sym_tensor > hata_evol
Values at successive time steps of the components .
void operator=(const Time_slice_conf &)
Assignment to another Time_slice_conf.
virtual const Scalar & psi() const
Conformal factor relating the physical metric to the conformal one: .
Metric * p_tgamma
Pointer on the conformal metric at the current time step (jtime)
virtual Sym_tensor aa() const
Conformal representation of the traceless part of the extrinsic curvature: .
virtual void set_hata(const Sym_tensor &hata_in)
Sets the conformal representation of the traceless part of the extrinsic curvature: .
Vector * p_hdirac
Pointer on the vector (which vanishes in Dirac gauge), at the current time step (jtime).
const Scalar & psi4() const
Factor at the current time step (jtime ).
Evolution_std< Scalar > psi_evol
Values at successive time steps of the conformal factor relating the physical metric to the conform...
virtual const Sym_tensor & gam_uu() const
Induced metric (contravariant components ) at the current time step (jtime )
const Metric_flat & ff
Pointer on the flat metric with respect to which the conformal decomposition is performed.
Scalar * p_ln_psi
Pointer on the logarithm of at the current time step (jtime)
Scalar * p_psi4
Pointer on the factor at the current time step (jtime)
int jtime
Time step index of the latest slice.
Evolution_std< Scalar > trk_evol
Values at successive time steps of the trace K of the extrinsic curvature.
Metric * p_gamma
Pointer on the induced metric at the current time step (jtime)
Evolution_std< Sym_tensor > k_dd_evol
Values at successive time steps of the covariant components of the extrinsic curvature tensor .
virtual void sauve(FILE *fich, bool partial_save) const
Total or partial saves in a binary file.
Evolution_full< Tbl > adm_mass_evol
ADM mass at each time step, since the creation of the slice.
Evolution_std< Sym_tensor > gam_dd_evol
Values at successive time steps of the covariant components of the induced metric .
Evolution_std< Sym_tensor > gam_uu_evol
Values at successive time steps of the contravariant components of the induced metric .
virtual const Vector & beta() const
shift vector at the current time step (jtime )
const Metric & gam() const
Induced metric at the current time step (jtime )
int depth
Number of stored time slices.
Evolution_std< Scalar > n_evol
Values at successive time steps of the lapse function N.
virtual double adm_mass() const
Returns the ADM mass (geometrical units) at the current step.
Evolution_std< double > the_time
Time label of each slice.
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator<<).
Evolution_std< Sym_tensor > k_uu_evol
Values at successive time steps of the contravariant components of the extrinsic curvature tensor .
Evolution_std< Vector > beta_evol
Values at successive time steps of the shift vector .
const Base_val & get_base() const
Return the bases for spectral expansions (member base )
void set_base(const Base_val &)
Sets the bases for spectral expansions (member base )
Tensor field of valence 1.
virtual void std_spectral_base()
Sets the standard spectal bases of decomposition for each component.
Sym_tensor ope_killing_conf(const Metric &gam) const
Computes the conformal Killing operator associated with a given metric.
virtual void change_triad(const Base_vect &)
Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.
Scalar & set(int)
Read/write access to a component.
Tbl norme(const Cmp &)
Sums of the absolute values of all the values of the Cmp in each domain.
Cmp pow(const Cmp &, int)
Power .
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
#define P_COSSIN
dev. standart
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define R_CHEB
base de Chebychev ordinaire (fin)
int fread_be(int *aa, int size, int nb, FILE *fich)
Reads integer(s) from a binary file according to the big endian convention.
double zerosec_b(double(*f)(double, const Param &), const Param &par, double a, double b, double precis, int nitermax, int &niter)
Finding the zero a function on a bounded domain.
int fwrite_be(const int *aa, int size, int nb, FILE *fich)
Writes integer(s) into a binary file according to the big endian convention.
const Map & get_mp() const
Returns the mapping.
virtual void dec_dzpuis(int dec=1)
Decreases by dec units the value of dzpuis and changes accordingly the values in the compactified ext...
Tensor up_down(const Metric &gam) const
Computes a new tensor by raising or lowering all the indices of *this .
virtual void sauve(FILE *) const
Save in a binary file.
virtual void inc_dzpuis(int inc=1)
Increases by inc units the value of dzpuis and changes accordingly the values in the compactified ext...
const Base_vect * get_triad() const
Returns the vectorial basis (triad) on which the components are defined.
void annule_domain(int l)
Sets the Tensor to zero in a given domain.
virtual void set_etat_qcq()
Sets the logical state of all components to ETATQCQ (ordinary state).
virtual void set_etat_zero()
Sets the logical state of all components to ETATZERO (zero state).
Scalar & set(const Itbl &ind)
Returns the value of a component (read/write version).
Tenseur contract(const Tenseur &, int id1, int id2)
Self contraction of two indices of a Tenseur .