isol_hor.C
/*
* Methods of class Isol_hor
*
* (see file isol_hor.h for documentation).
*
*/
/*
* Copyright (c) 2004 Jose Luis Jaramillo
* Francois Limousin
*
* This file is part of LORENE.
*
* LORENE is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* LORENE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with LORENE; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
char 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 $" ;
/*
* $Id: isol_hor.C,v 1.35 2014/10/13 08:53:01 j_novak Exp $
* $Log: isol_hor.C,v $
* Revision 1.35 2014/10/13 08:53:01 j_novak
* Lorene classes and functions now belong to the namespace Lorene.
*
* Revision 1.34 2014/10/06 15:13:11 j_novak
* Modified #include directives to use c++ syntax.
*
* Revision 1.33 2009/05/18 22:04:27 j_novak
* Changed pow(psi_in, 6) to psi*...*psi in the call to Time_slice_conf constructor. This is to get a well-defined basis.
*
* Revision 1.32 2008/12/02 15:02:21 j_novak
* Implementation of the new constrained formalism, following Cordero et al. 2009
* paper. The evolution eqs. are solved as a first-order system. Not tested yet!
*
* Revision 1.31 2006/05/24 16:55:31 f_limousin
* Improvement of dn_comp() and dpsi_comp()
*
* Revision 1.30 2005/10/21 16:20:55 jl_jaramillo
* Version for the paper JaramL05
*
* Revision 1.29 2005/09/13 18:33:17 f_limousin
* New function vv_bound_cart_bin(double) for computing binaries with
* berlin condition for the shift vector.
* Suppress all the symy and asymy in the importations.
*
* Revision 1.28 2005/09/12 12:33:54 f_limousin
* Compilation Warning - Change of convention for the angular velocity
* Add Berlin boundary condition in the case of binary horizons.
*
* Revision 1.27 2005/07/08 13:15:23 f_limousin
* Improvements of boundary_vv_cart(), boundary_nn_lapl().
* Add a fonction to compute the departure of axisymmetry.
*
* Revision 1.26 2005/05/12 14:48:07 f_limousin
* New boundary condition for the lapse : boundary_nn_lapl().
*
* Revision 1.25 2005/04/15 09:34:16 jl_jaramillo
* Function "adapt_hor" for adapting the the excised surface to
* a given surface. The zero expansion surface is not properly implemented
*
* Revision 1.24 2005/04/08 12:16:52 f_limousin
* Function set_psi(). And dependance in phi.
*
* Revision 1.23 2005/04/03 19:48:22 f_limousin
* Implementation of set_psi(psi_in). And minor changes to avoid warnings.
*
* Revision 1.22 2005/04/02 15:49:21 f_limousin
* New choice (Lichnerowicz) for aaquad. New member data nz.
*
* Revision 1.21 2005/03/31 09:45:31 f_limousin
* New functions compute_ww(...) and aa_kerr_ww().
*
* Revision 1.20 2005/03/30 12:08:20 f_limousin
* Implementation of K^{ij} (Eq.(13) Of Sergio (2002)).
*
* Revision 1.19 2005/03/28 19:42:39 f_limousin
* Implement the metric and A^{ij}A_{ij} of Sergio for pertubations
* of Kerr black holes.
*
* Revision 1.18 2005/03/24 17:05:34 f_limousin
* Small change
*
* Revision 1.17 2005/03/24 16:50:28 f_limousin
* Add parameters solve_shift and solve_psi in par_isol.d and in function
* init_dat(...). Implement Isolhor::kerr_perturb().
*
* Revision 1.16 2005/03/10 10:19:42 f_limousin
* Add the regularisation of the shift in the case of a single black hole
* and lapse zero on the horizon.
*
* Revision 1.15 2005/03/09 10:29:53 f_limousin
* New function update_aa().
*
* Revision 1.14 2005/03/06 16:59:14 f_limousin
* New function Isol_hor::aa() (the one belonging to the class
* Time_slice_conf need to compute the time derivative of hh and thus
* cannot work in the class Isol_hor).
*
* Revision 1.13 2005/03/03 15:12:17 f_limousin
* Implement function operator>>
*
* Revision 1.12 2005/03/03 10:05:36 f_limousin
* Introduction of members boost_x and boost_z.
*
* Revision 1.11 2005/02/07 10:35:05 f_limousin
* Add the regularisation of the shift for the case N=0 on the horizon.
*
* Revision 1.10 2004/12/31 15:36:43 f_limousin
* Add the constructor from a file and change the standard constructor.
*
* Revision 1.9 2004/12/29 16:14:22 f_limousin
* Add new function beta_comp(const Isol_hor& comp).
*
* Revision 1.7 2004/11/05 10:57:03 f_limousin
* Delete argument partial_save in the function sauve.
*
* Revision 1.6 2004/11/05 10:10:21 f_limousin
* Construction of an isolhor with the Metric met_gamt instead
* of a Sym_tensor.
*
* Revision 1.5 2004/11/03 17:16:06 f_limousin
* Change the standart constructor. Add 4 memebers : trK, trK_point,
* gamt and gamt_point.
* Add also a constructor from a file.
*
* Revision 1.3 2004/10/29 15:44:45 jl_jaramillo
* Remove two members
*
* Revision 1.2 2004/09/28 16:07:16 f_limousin
* Remove all unused functions.
*
* Revision 1.1 2004/09/09 14:07:26 jl_jaramillo
* First version
*
* Revision 1.1 2004/03/30 14:00:31 jl_jaramillo
* New class Isol_hor (first version).
*
*
* $Header: /cvsroot/Lorene/C++/Source/Isol_hor/isol_hor.C,v 1.35 2014/10/13 08:53:01 j_novak Exp $
*
*/
// C headers
#include <cstdlib>
#include <cassert>
// Lorene headers
#include "param.h"
#include "utilitaires.h"
#include "time_slice.h"
#include "isol_hor.h"
#include "tensor.h"
#include "metric.h"
#include "evolution.h"
//#include "graphique.h"
//--------------//
// Constructors //
//--------------//
// Standard constructor
// --------------------
namespace Lorene {
Isol_hor::Isol_hor(Map_af& mpi, int depth_in) :
Time_slice_conf(mpi, mpi.get_bvect_spher(), mpi.flat_met_spher()),
mp(mpi), nz(mpi.get_mg()->get_nzone()), radius ((mpi.get_alpha())[0]),
omega(0), boost_x(0), boost_z(0), regul(0),
n_auto_evol(depth_in), n_comp_evol(depth_in),
psi_auto_evol(depth_in), psi_comp_evol(depth_in),
dn_evol(depth_in), dpsi_evol(depth_in),
beta_auto_evol(depth_in), beta_comp_evol(depth_in),
aa_auto_evol(depth_in), aa_comp_evol(depth_in),
aa_nn(depth_in), aa_quad_evol(depth_in),
met_gamt(mpi.flat_met_spher()), gamt_point(mpi, CON, mpi.get_bvect_spher()),
trK(mpi), trK_point(mpi), decouple(mpi){
}
// Constructor from conformal decomposition
// ----------------------------------------
Isol_hor::Isol_hor(Map_af& mpi, const Scalar& lapse_in,
const Scalar& psi_in, const Vector& shift_in,
const Sym_tensor& aa_in,
const Metric& metgamt, const Sym_tensor& gamt_point_in,
const Scalar& trK_in, const Scalar& trK_point_in,
const Metric_flat& ff_in, int depth_in)
: Time_slice_conf(lapse_in, shift_in, ff_in, psi_in, metgamt.con() -
ff_in.con(), psi_in*psi_in*psi_in*psi_in*psi_in*psi_in*aa_in,
trK_in, depth_in),
mp(mpi), nz(mpi.get_mg()->get_nzone()), radius ((mpi.get_alpha())[0]),
omega(0), boost_x(0), boost_z(0), regul(0),
n_auto_evol(depth_in), n_comp_evol(depth_in),
psi_auto_evol(depth_in), psi_comp_evol(depth_in),
dn_evol(depth_in), dpsi_evol(depth_in),
beta_auto_evol(depth_in), beta_comp_evol(depth_in),
aa_auto_evol(depth_in), aa_comp_evol(depth_in),
aa_nn(depth_in), aa_quad_evol(depth_in),
met_gamt(metgamt), gamt_point(gamt_point_in),
trK(trK_in), trK_point(trK_point_in), decouple(lapse_in.get_mp()){
// hh_evol, trk_evol
hh_evol.update(met_gamt.con() - ff.con(), jtime, the_time[jtime]) ;
trk_evol.update(trK, jtime, the_time[jtime]) ;
}
// Copy constructor
// ----------------
Isol_hor::Isol_hor(const Isol_hor& isolhor_in)
: Time_slice_conf(isolhor_in),
mp(isolhor_in.mp),
nz(isolhor_in.nz),
radius(isolhor_in.radius),
omega(isolhor_in.omega),
boost_x(isolhor_in.boost_x),
boost_z(isolhor_in.boost_z),
regul(isolhor_in.regul),
n_auto_evol(isolhor_in.n_auto_evol),
n_comp_evol(isolhor_in.n_comp_evol),
psi_auto_evol(isolhor_in.psi_auto_evol),
psi_comp_evol(isolhor_in.psi_comp_evol),
dn_evol(isolhor_in.dn_evol),
dpsi_evol(isolhor_in.dpsi_evol),
beta_auto_evol(isolhor_in.beta_auto_evol),
beta_comp_evol(isolhor_in.beta_comp_evol),
aa_auto_evol(isolhor_in.aa_auto_evol),
aa_comp_evol(isolhor_in.aa_comp_evol),
aa_nn(isolhor_in.aa_nn),
aa_quad_evol(isolhor_in.aa_quad_evol),
met_gamt(isolhor_in.met_gamt),
gamt_point(isolhor_in.gamt_point),
trK(isolhor_in.trK),
trK_point(isolhor_in.trK_point),
decouple(isolhor_in.decouple){
}
// Constructor from a file
// -----------------------
Isol_hor::Isol_hor(Map_af& mpi, FILE* fich,
bool partial_read, int depth_in)
: Time_slice_conf(mpi, mpi.get_bvect_spher(), mpi.flat_met_spher(),
fich, partial_read, depth_in),
mp(mpi), nz(mpi.get_mg()->get_nzone()), radius ((mpi.get_alpha())[0]),
omega(0), boost_x(0), boost_z(0), regul(0),
n_auto_evol(depth_in), n_comp_evol(depth_in),
psi_auto_evol(depth_in), psi_comp_evol(depth_in),
dn_evol(depth_in), dpsi_evol(depth_in),
beta_auto_evol(depth_in), beta_comp_evol(depth_in),
aa_auto_evol(depth_in), aa_comp_evol(depth_in),
aa_nn(depth_in), aa_quad_evol(depth_in),
met_gamt(mpi.flat_met_spher()),
gamt_point(mpi, CON, mpi.get_bvect_spher()),
trK(mpi), trK_point(mpi), decouple(mpi){
fread_be(&omega, sizeof(double), 1, fich) ;
fread_be(&boost_x, sizeof(double), 1, fich) ;
fread_be(&boost_z, sizeof(double), 1, fich) ;
int jmin = jtime - depth + 1 ;
int indicator ;
// psi_evol
for (int j=jmin; j<=jtime; j++) {
fread_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) {
Scalar psi_file(mp, *(mp.get_mg()), fich) ;
psi_evol.update(psi_file, j, the_time[j]) ;
}
}
// n_auto_evol
for (int j=jmin; j<=jtime; j++) {
fread_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) {
Scalar nn_auto_file(mp, *(mp.get_mg()), fich) ;
n_auto_evol.update(nn_auto_file, j, the_time[j]) ;
}
}
// psi_auto_evol
for (int j=jmin; j<=jtime; j++) {
fread_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) {
Scalar psi_auto_file(mp, *(mp.get_mg()), fich) ;
psi_auto_evol.update(psi_auto_file, j, the_time[j]) ;
}
}
// beta_auto_evol
for (int j=jmin; j<=jtime; j++) {
fread_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) {
Vector beta_auto_file(mp, mpi.get_bvect_spher(), fich) ;
beta_auto_evol.update(beta_auto_file, j, the_time[j]) ;
}
}
// met_gamt, gamt_point, trK, trK_point
Sym_tensor met_file (mp, mp.get_bvect_spher(), fich) ;
met_gamt = met_file ;
Sym_tensor gamt_point_file (mp, mp.get_bvect_spher(), fich) ;
gamt_point = gamt_point_file ;
Scalar trK_file (mp, *(mp.get_mg()), fich) ;
trK = trK_file ;
Scalar trK_point_file (mp, *(mp.get_mg()), fich) ;
trK_point = trK_point_file ;
// hh_evol, trk_evol
hh_evol.update(met_gamt.con() - ff.con(), jtime, the_time[jtime]) ;
trk_evol.update(trK, jtime, the_time[jtime]) ;
}
//--------------//
// Destructor //
//--------------//
Isol_hor::~Isol_hor(){}
//-----------------------//
// Mutators / assignment //
//-----------------------//
void Isol_hor::operator=(const Isol_hor& isolhor_in) {
Time_slice_conf::operator=(isolhor_in) ;
mp = isolhor_in.mp ;
nz = isolhor_in.nz ;
radius = isolhor_in.radius ;
omega = isolhor_in.omega ;
boost_x = isolhor_in.boost_x ;
boost_z = isolhor_in.boost_z ;
regul = isolhor_in.regul ;
n_auto_evol = isolhor_in.n_auto_evol ;
n_comp_evol = isolhor_in.n_comp_evol ;
psi_auto_evol = isolhor_in.psi_auto_evol ;
psi_comp_evol = isolhor_in.psi_comp_evol ;
dn_evol = isolhor_in.dn_evol ;
dpsi_evol = isolhor_in.dpsi_evol ;
beta_auto_evol = isolhor_in.beta_auto_evol ;
beta_comp_evol = isolhor_in.beta_comp_evol ;
aa_auto_evol = isolhor_in.aa_auto_evol ;
aa_comp_evol = isolhor_in.aa_comp_evol ;
aa_nn = isolhor_in.aa_nn ;
aa_quad_evol = isolhor_in.aa_quad_evol ;
met_gamt = isolhor_in.met_gamt ;
gamt_point = isolhor_in.gamt_point ;
trK = isolhor_in.trK ;
trK_point = isolhor_in.trK_point ;
decouple = isolhor_in.decouple ;
}
//------------------//
// output //
//------------------//
ostream& Isol_hor::operator>>(ostream& flux) const {
Time_slice_conf::operator>>(flux) ;
flux << '\n' << "radius of the horizon : " << radius << '\n' ;
flux << "boost in x-direction : " << boost_x << '\n' ;
flux << "boost in z-direction : " << boost_z << '\n' ;
flux << "angular velocity omega : " << omega_hor() << '\n' ;
flux << "area of the horizon : " << area_hor() << '\n' ;
flux << "ang. mom. of horizon : " << ang_mom_hor() << '\n' ;
flux << "ADM ang. mom. : " << ang_mom_adm() << '\n' ;
flux << "Mass of the horizon : " << mass_hor() << '\n' ;
flux << "ADM Mass : " << adm_mass() << '\n' ;
return flux ;
}
//--------------------------//
// Save in a file //
//--------------------------//
void Isol_hor::sauve(FILE* fich, bool partial_save) const {
// Writing of quantities common to all derived classes of Time_slice
// -----------------------------------------------------------------
Time_slice_conf::sauve(fich, partial_save) ;
fwrite_be (&omega, sizeof(double), 1, fich) ;
fwrite_be (&boost_x, sizeof(double), 1, fich) ;
fwrite_be (&boost_z, sizeof(double), 1, fich) ;
// Writing of quantities common to Isol_hor
// -----------------------------------------
int jmin = jtime - depth + 1 ;
// psi_evol
for (int j=jmin; j<=jtime; j++) {
int indicator = (psi_evol.is_known(j)) ? 1 : 0 ;
fwrite_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) psi_evol[j].sauve(fich) ;
}
// n_auto_evol
for (int j=jmin; j<=jtime; j++) {
int indicator = (n_auto_evol.is_known(j)) ? 1 : 0 ;
fwrite_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) n_auto_evol[j].sauve(fich) ;
}
// psi_auto_evol
for (int j=jmin; j<=jtime; j++) {
int indicator = (psi_auto_evol.is_known(j)) ? 1 : 0 ;
fwrite_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) psi_auto_evol[j].sauve(fich) ;
}
// beta_auto_evol
for (int j=jmin; j<=jtime; j++) {
int indicator = (beta_auto_evol.is_known(j)) ? 1 : 0 ;
fwrite_be(&indicator, sizeof(int), 1, fich) ;
if (indicator == 1) beta_auto_evol[j].sauve(fich) ;
}
met_gamt.con().sauve(fich) ;
gamt_point.sauve(fich) ;
trK.sauve(fich) ;
trK_point.sauve(fich) ;
}
// Accessors
// ---------
const Scalar& Isol_hor::n_auto() const {
assert( n_auto_evol.is_known(jtime) ) ;
return n_auto_evol[jtime] ;
}
const Scalar& Isol_hor::n_comp() const {
assert( n_comp_evol.is_known(jtime) ) ;
return n_comp_evol[jtime] ;
}
const Scalar& Isol_hor::psi_auto() const {
assert( psi_auto_evol.is_known(jtime) ) ;
return psi_auto_evol[jtime] ;
}
const Scalar& Isol_hor::psi_comp() const {
assert( psi_comp_evol.is_known(jtime) ) ;
return psi_comp_evol[jtime] ;
}
const Vector& Isol_hor::dnn() const {
assert( dn_evol.is_known(jtime) ) ;
return dn_evol[jtime] ;
}
const Vector& Isol_hor::dpsi() const {
assert( dpsi_evol.is_known(jtime) ) ;
return dpsi_evol[jtime] ;
}
const Vector& Isol_hor::beta_auto() const {
assert( beta_auto_evol.is_known(jtime) ) ;
return beta_auto_evol[jtime] ;
}
const Vector& Isol_hor::beta_comp() const {
assert( beta_comp_evol.is_known(jtime) ) ;
return beta_comp_evol[jtime] ;
}
const Sym_tensor& Isol_hor::aa_auto() const {
assert( aa_auto_evol.is_known(jtime) ) ;
return aa_auto_evol[jtime] ;
}
const Sym_tensor& Isol_hor::aa_comp() const {
assert( aa_comp_evol.is_known(jtime) ) ;
return aa_comp_evol[jtime] ;
}
void Isol_hor::set_psi(const Scalar& psi_in) {
psi_evol.update(psi_in, jtime, the_time[jtime]) ;
// Reset of quantities depending on Psi:
if (p_psi4 != 0x0) {
delete p_psi4 ;
p_psi4 = 0x0 ;
}
if (p_ln_psi != 0x0) {
delete p_ln_psi ;
p_ln_psi = 0x0 ;
}
if (p_gamma != 0x0) {
delete p_gamma ;
p_gamma = 0x0 ;
}
gam_dd_evol.downdate(jtime) ;
gam_uu_evol.downdate(jtime) ;
k_dd_evol.downdate(jtime) ;
k_uu_evol.downdate(jtime) ;
adm_mass_evol.downdate(jtime) ;
}
void Isol_hor::set_nn(const Scalar& nn_in) {
n_evol.update(nn_in, jtime, the_time[jtime]) ;
hata_evol.downdate(jtime) ;
aa_quad_evol.downdate(jtime) ;
k_dd_evol.downdate(jtime) ;
k_uu_evol.downdate(jtime) ;
}
void Isol_hor::set_gamt(const Metric& gam_tilde) {
if (p_tgamma != 0x0) {
delete p_tgamma ;
p_tgamma = 0x0 ;
}
if (p_gamma != 0x0) {
delete p_gamma ;
p_gamma = 0x0 ;
}
met_gamt = gam_tilde ;
gam_dd_evol.downdate(jtime) ;
gam_uu_evol.downdate(jtime) ;
k_dd_evol.downdate(jtime) ;
k_uu_evol.downdate(jtime) ;
hh_evol.downdate(jtime) ;
hh_evol.update(gam_tilde.con() - ff.con(), jtime, the_time[jtime]) ;
}
// Import the lapse from the companion (Bhole case)
void Isol_hor::n_comp(const Isol_hor& comp) {
double ttime = the_time[jtime] ;
Scalar temp (mp) ;
temp.import(comp.n_auto()) ;
temp.std_spectral_base() ;
n_comp_evol.update(temp, jtime, ttime) ;
n_evol.update(temp + n_auto(), jtime, ttime) ;
Vector dn_comp (mp, COV, mp.get_bvect_cart()) ;
dn_comp.set_etat_qcq() ;
Vector auxi (comp.n_auto().derive_cov(comp.ff)) ;
auxi.dec_dzpuis(2) ;
auxi.change_triad(auxi.get_mp().get_bvect_cart()) ;
for (int i=1 ; i<=3 ; i++){
if (auxi(i).get_etat() != ETATZERO)
auxi.set(i).raccord(3) ;
}
auxi.change_triad(mp.get_bvect_cart()) ;
assert ( *(auxi.get_triad()) == *(dn_comp.get_triad())) ;
for (int i=1 ; i<=3 ; i++){
dn_comp.set(i).import(auxi(i)) ;
dn_comp.set(i).set_spectral_va().set_base(auxi(i).get_spectral_va().
get_base()) ;
}
dn_comp.inc_dzpuis(2) ;
dn_comp.change_triad(mp.get_bvect_spher()) ;
/*
Vector dn_comp_zec (n_comp().derive_cov(ff)) ;
for (int i=1 ; i<=3 ; i++)
for (int l=nz-1 ; l<=nz-1 ; l++) {
if (dn_comp.set(i).get_etat() == ETATQCQ)
dn_comp.set(i).set_domain(l) = dn_comp_zec(i).domain(l) ;
}
*/
dn_evol.update(n_auto().derive_cov(ff) + dn_comp, jtime, ttime) ;
/*
Scalar tr_K (mp) ;
Mtbl mxabs (mp.xa) ;
Mtbl myabs (mp.ya) ;
Mtbl mzabs (mp.za) ;
Scalar comp_r (mp) ;
comp_r.annule_hard() ;
for (int l=1 ; l<mp.get_mg()->get_nzone() ; l++) {
int nr = mp.get_mg()->get_nr (l) ;
if (l==mp.get_mg()->get_nzone()-1)
nr -- ;
int np = mp.get_mg()->get_np (l) ;
int nt = mp.get_mg()->get_nt (l) ;
double xabs, yabs, zabs, air, theta, phi ;
for (int k=0 ; k<np ; k++)
for (int j=0 ; j<nt ; j++)
for (int i=0 ; i<nr ; i++) {
xabs = mxabs (l, k, j, i) ;
yabs = myabs (l, k, j, i) ;
zabs = mzabs (l, k, j, i) ;
// coordinates of the point in 2 :
comp.mp.convert_absolute
(xabs, yabs, zabs, air, theta, phi) ;
comp_r.set_grid_point(l,k,j,i) = air ;
}
}
Scalar fact(mp) ;
fact = 0.0000000000000001 ;
// Scalar fact(mp) ;
// fact = 0.7*gam().radial_vect().divergence(gam()) ;
// fact.dec_dzpuis(2) ;
tr_K = 1/mp.r/mp.r ;
tr_K = tr_K * fact ;
tr_K += fact/comp_r/comp_r ;
tr_K.std_spectral_base() ;
tr_K.annule(0, 0) ;
tr_K.raccord(1) ;
tr_K.inc_dzpuis(2) ;
trk_evol.update(tr_K, jtime, the_time[jtime]) ;
*/
}
// Import the conformal factor from the companion (Bhole case)
void Isol_hor::psi_comp (const Isol_hor& comp) {
double ttime = the_time[jtime] ;
Scalar temp (mp) ;
temp.import(comp.psi_auto()) ;
temp.std_spectral_base() ;
psi_comp_evol.update(temp, jtime, ttime) ;
psi_evol.update(temp + psi_auto(), jtime, ttime) ;
Vector dpsi_comp (mp, COV, mp.get_bvect_cart()) ;
dpsi_comp.set_etat_qcq() ;
Vector auxi (comp.psi_auto().derive_cov(comp.ff)) ;
auxi.dec_dzpuis(2) ;
auxi.change_triad(auxi.get_mp().get_bvect_cart()) ;
for (int i=1 ; i<=3 ; i++){
if (auxi(i).get_etat() != ETATZERO)
auxi.set(i).raccord(3) ;
}
auxi.change_triad(mp.get_bvect_cart()) ;
assert ( *(auxi.get_triad()) == *(dpsi_comp.get_triad())) ;
for (int i=1 ; i<=3 ; i++){
dpsi_comp.set(i).import(auxi(i)) ;
dpsi_comp.set(i).set_spectral_va().set_base(auxi(i).get_spectral_va().
get_base()) ;
}
dpsi_comp.inc_dzpuis(2) ;
dpsi_comp.change_triad(mp.get_bvect_spher()) ;
/*
Vector dpsi_comp_zec (psi_comp().derive_cov(ff)) ;
for (int i=1 ; i<=3 ; i++)
for (int l=nz-1 ; l<=nz-1 ; l++) {
if (dpsi_comp.set(i).get_etat() == ETATQCQ)
dpsi_comp.set(i).set_domain(l) = dpsi_comp_zec(i).domain(l) ;
}
*/
dpsi_evol.update(psi_auto().derive_cov(ff) + dpsi_comp, jtime, ttime) ;
}
void Isol_hor::beta_comp (const Isol_hor& comp) {
double ttime = the_time[jtime] ;
Vector tmp_vect (mp, CON, mp.get_bvect_cart()) ;
Vector shift_comp (comp.beta_auto()) ;
shift_comp.change_triad(comp.mp.get_bvect_cart()) ;
shift_comp.change_triad(mp.get_bvect_cart()) ;
assert (*(shift_comp.get_triad()) == *(tmp_vect.get_triad())) ;
tmp_vect.set(1).import(shift_comp(1)) ;
tmp_vect.set(2).import(shift_comp(2)) ;
tmp_vect.set(3).import(shift_comp(3)) ;
tmp_vect.std_spectral_base() ;
tmp_vect.change_triad(mp.get_bvect_spher()) ;
beta_comp_evol.update(tmp_vect, jtime,ttime) ;
beta_evol.update(beta_auto() + beta_comp(), jtime, ttime) ;
}
//Initialisation to Schwartzchild
void Isol_hor::init_bhole () {
double ttime = the_time[jtime] ;
Scalar auxi(mp) ;
// Initialisation of the lapse different of zero on the horizon
// at the first step
auxi = 0.5 - 0.5/mp.r ;
auxi.annule(0, 0);
auxi.set_dzpuis(0) ;
Scalar temp(mp) ;
temp = auxi;
temp.std_spectral_base() ;
temp.raccord(1) ;
n_auto_evol.update(temp, jtime, ttime) ;
temp = 0.5 ;
temp.std_spectral_base() ;
n_comp_evol.update(temp, jtime, ttime) ;
n_evol.update(n_auto() + n_comp(), jtime, ttime) ;
auxi = 0.5 + radius/mp.r ;
auxi.annule(0, 0);
auxi.set_dzpuis(0) ;
temp = auxi;
temp.std_spectral_base() ;
temp.raccord(1) ;
psi_auto_evol.update(temp, jtime, ttime) ;
temp = 0.5 ;
temp.std_spectral_base() ;
psi_comp_evol.update(temp, jtime, ttime) ;
psi_evol.update(psi_auto() + psi_comp(), jtime, ttime) ;
dn_evol.update(nn().derive_cov(ff), jtime, ttime) ;
dpsi_evol.update(psi().derive_cov(ff), jtime, ttime) ;
Vector temp_vect1(mp, CON, mp.get_bvect_spher()) ;
temp_vect1.set(1) = 0.0/mp.r/mp.r ;
temp_vect1.set(2) = 0. ;
temp_vect1.set(3) = 0. ;
temp_vect1.std_spectral_base() ;
Vector temp_vect2(mp, CON, mp.get_bvect_spher()) ;
temp_vect2.set_etat_zero() ;
beta_auto_evol.update(temp_vect1, jtime, ttime) ;
beta_comp_evol.update(temp_vect2, jtime, ttime) ;
beta_evol.update(temp_vect1, jtime, ttime) ;
}
void Isol_hor::init_met_trK() {
Metric flat (mp.flat_met_spher()) ;
met_gamt = flat ;
gamt_point.set_etat_zero() ;
trK.set_etat_zero() ;
trK_point.set_etat_zero() ;
}
void Isol_hor::init_bhole_seul () {
double ttime = the_time[jtime] ;
Scalar auxi(mp) ;
auxi = (1-radius/mp.r)/(1+radius/mp.r) ;
auxi.annule(0, 0);
auxi.set_outer_boundary((*mp.get_mg()).get_nzone(), 1.) ;
auxi.set_dzpuis(0) ;
Scalar temp(mp) ;
temp = auxi;
temp.std_spectral_base() ;
temp.raccord(1) ;
n_auto_evol.update(temp, jtime, ttime) ;
temp.set_etat_zero() ;
n_comp_evol.update(temp, jtime, ttime) ;
n_evol.update(temp, jtime, ttime) ;
auxi = 1 + radius/mp.r ;
auxi.annule(0, 0);
auxi.set_outer_boundary((*mp.get_mg()).get_nzone(), 1.) ;
auxi.set_dzpuis(0) ;
temp = auxi;
temp.std_spectral_base() ;
temp.raccord(1) ;
psi_auto_evol.update(temp, jtime, ttime) ;
temp.set_etat_zero() ;
psi_comp_evol.update(temp, jtime, ttime) ;
psi_evol.update(temp, jtime, ttime) ;
dn_evol.update(nn().derive_cov(ff), jtime, ttime) ;
dpsi_evol.update(psi().derive_cov(ff), jtime, ttime) ;
Vector temp_vect(mp, CON, mp.get_bvect_spher()) ;
temp_vect.set_etat_zero() ;
beta_auto_evol.update(temp_vect, jtime, ttime) ;
beta_comp_evol.update(temp_vect, jtime, ttime) ;
beta_evol.update(temp_vect, jtime, ttime) ;
}
void Isol_hor::update_aa() {
Sym_tensor aa_new (mp, CON, mp.get_bvect_spher()) ;
int nnt = mp.get_mg()->get_nt(1) ;
int nnp = mp.get_mg()->get_np(1) ;
int check ;
check = 0 ;
for (int k=0; k<nnp; k++)
for (int j=0; j<nnt; j++){
if (nn().val_grid_point(1, k, j , 0) < 1e-12){
check = 1 ;
break ;
}
}
if (check == 0)
aa_new = ( beta().ope_killing_conf(met_gamt) + gamt_point )
/ (2.* nn()) ;
else {
regul = regularise_one() ;
cout << "regul = " << regul << endl ;
Scalar nn_sxpun (division_xpun (Cmp(nn()), 0)) ;
aa_new = beta().ope_killing_conf(met_gamt) + gamt_point ;
Scalar auxi (mp) ;
for (int i=1 ; i<=3 ; i++)
for (int j=i ; j<=3 ; j++) {
auxi = aa_new(i, j) ;
auxi = division_xpun (auxi, 0) ;
aa_new.set(i,j) = auxi / nn_sxpun / 2. ;
}
}
Sym_tensor hata_new = aa_new*psi4()*psi()*psi() ;
set_hata(hata_new) ; // set aa to aa_new and delete values of
// k_uu and k_dd.
Sym_tensor aa_dd (aa_new.up_down(met_gamt)) ;
Scalar aquad (contract(aa_dd, 0, 1, aa_new, 0, 1)*psi4()*psi4()*psi4()) ;
aa_quad_evol.update(aquad, jtime, the_time[jtime]) ;
}
const Scalar& Isol_hor::aa_quad() const {
if (!aa_quad_evol.is_known(jtime) ) {
Sym_tensor aa_dd (aa().up_down(met_gamt)) ;
Scalar aquad (contract(aa_dd, 0, 1, aa(), 0, 1)*psi4()*psi4()*psi4()) ;
aa_quad_evol.update(aquad, jtime, the_time[jtime]) ;
}
return aa_quad_evol[jtime] ;
}
void Isol_hor::met_kerr_perturb() {
Sym_tensor gamm (gam().cov()) ;
Sym_tensor gamt (gamm / gamm(3,3)) ;
Metric metgamt (gamt) ;
met_gamt = metgamt ;
Scalar psi_perturb (pow(gamm(3,3), 0.25)) ;
psi_perturb.std_spectral_base() ;
set_psi(psi_perturb) ;
cout << "met_gamt" << endl << norme(met_gamt.cov()(1,1)) << endl
<< norme(met_gamt.cov()(2,1)) << endl << norme(met_gamt.cov()(3,1))
<< endl << norme(met_gamt.cov()(2,2)) << endl
<< norme(met_gamt.cov()(3,2)) << endl << norme(met_gamt.cov()(3,3))
<< endl ;
cout << "determinant" << norme(met_gamt.determinant()) << endl ;
hh_evol.update(met_gamt.con() - ff.con(), jtime, the_time[jtime]) ;
}
void Isol_hor::aa_kerr_ww(double mm, double aaa) {
Scalar rr(mp) ;
rr = mp.r ;
Scalar cost (mp) ;
cost = mp.cost ;
Scalar sint (mp) ;
sint = mp.sint ;
// rbl
Scalar rbl = rr + mm + (mm*mm - aaa*aaa) / (4*rr) ;
// sigma inverse
Scalar sigma_inv = 1. / (rbl*rbl + aaa*aaa*cost*cost) ;
sigma_inv.set_domain(0) = 1. ;
// ww perturbation
Scalar ww_pert (mp) ;
ww_pert = - 1*(mm*aaa*aaa*aaa*pow(sint, 4.)*cost) * sigma_inv ;
ww_pert.set_spectral_va().set_base_r(0,R_CHEBPIM_P) ;
for (int l=1; l<nz-1; l++)
ww_pert.set_spectral_va().set_base_r(l,R_CHEB) ;
ww_pert.set_spectral_va().set_base_r(nz-1,R_CHEBU) ;
ww_pert.set_spectral_va().set_base_t(T_COSSIN_CI) ;
ww_pert.set_spectral_va().set_base_p(P_COSSIN) ;
// Quadratic part A^{ij]A_{ij}
// Lichnerowicz choice
//----------------------------
// BY - BY
Vector dw_by (mp, COV, mp.get_bvect_spher()) ;
dw_by.set(1) = 0. ;
dw_by.set(2) = 3 * aaa*mm*sint*sint*sint / rr ;
dw_by.set(3) = 0. ;
dw_by.set(2).set_spectral_va().set_base_r(0,R_CHEBPIM_P) ;
for (int l=1; l<nz-1; l++)
dw_by.set(2).set_spectral_va().set_base_r(l,R_CHEB) ;
dw_by.set(2).set_spectral_va().set_base_r(nz-1,R_CHEBU) ;
dw_by.set(2).set_spectral_va().set_base_t(T_COSSIN_SI) ;
dw_by.set(2).set_spectral_va().set_base_p(P_COSSIN) ;
Scalar aquad_1 = 2*contract(dw_by, 0, dw_by.up_down(ff), 0) *
gam_dd()(3,3) / gam_dd()(1,1) ;
aquad_1.div_rsint_dzpuis(1) ;
aquad_1.div_rsint_dzpuis(2) ;
aquad_1.div_rsint_dzpuis(3) ;
aquad_1.div_rsint_dzpuis(4) ;
// BY - dw_pert
Vector dw_pert(ww_pert.derive_con(ff)) ;
Scalar aquad_2 = 4*contract(dw_by, 0, dw_pert, 0) *
gam_dd()(3,3) / gam_dd()(1,1) ;
aquad_2.div_rsint_dzpuis(3) ;
aquad_2.div_rsint_dzpuis(4) ;
aquad_2.div_rsint() ;
aquad_2.div_rsint() ;
// dw_pert - dw_pert
Scalar aquad_3 = 2*contract(dw_pert, 0, dw_pert.up_down(ff), 0) *
gam_dd()(3,3) / gam_dd()(1,1) ;
aquad_3.div_rsint() ;
aquad_3.div_rsint() ;
aquad_3.div_rsint() ;
aquad_3.div_rsint() ;
// Total
Scalar aquad = aquad_1 + aquad_2 + aquad_3 ;
aquad.set_domain(0) = 0. ;
Base_val sauve_base (aquad.get_spectral_va().get_base()) ;
aquad = aquad * pow(gam_dd()(1,1), 2.) * pow(gam_dd()(3,3), -2.) ;
aquad.set_spectral_va().set_base(sauve_base) ;
/*
cout << "norme de aquad" << endl << norme(aquad) << endl ;
cout << "norme de aa_quad" << endl << norme(aa_quad()) << endl ;
des_meridian (aquad, 0, 4, "aquad", 1) ;
des_meridian (aa_quad(), 0, 4, "aa_quad()", 2) ;
des_meridian (aa_quad()-aquad, 0, 4, "diff aa_quad", 3) ;
arrete() ;
*/
aa_quad_evol.update(aquad, jtime, the_time[jtime]) ;
// Extrinsic curvature A^{ij} and A_{ij}
// Dynamical choice
// -------------------------------------
Scalar s_r (ww_pert.derive_cov(ff)(2)) ;
s_r = - s_r * gam().cov()(3,3) / gam().cov()(1,1) ;
s_r.div_rsint() ;
Scalar temp = dw_by(2) ;
temp = - temp * gam().cov()(3,3) / gam().cov()(1,1) ;
temp.div_rsint_dzpuis(2) ;
s_r = s_r + temp ;
s_r.annule_domain(0) ;
Scalar s_t (ww_pert.derive_cov(ff)(1)) ;
s_t = s_t * gam().cov()(3,3) / gam().cov()(1,1) ;
s_t.div_rsint() ;
temp = dw_by(1) ;
temp = temp * gam().cov()(3,3) / gam().cov()(1,1) ;
temp.div_rsint_dzpuis(2) ;
s_t = s_t + temp ;
s_t.annule_domain(0) ;
Vector ss (mp, CON, mp.get_bvect_spher()) ;
ss.set(1) = s_r ;
ss.set(2) = s_t ;
ss.set(3) = 0. ;
Sym_tensor aij (mp, CON, mp.get_bvect_spher()) ;
aij.set(1,1) = 0. ;
aij.set(2,1) = 0. ;
aij.set(2,2) = 0. ;
aij.set(3,3) = 0. ;
aij.set(3,1) = s_r ;
aij.set(3,1).div_rsint() ;
aij.set(3,2) = s_t ;
aij.set(3,2).div_rsint() ;
Base_val base_31 (aij(3,1).get_spectral_va().get_base()) ;
Base_val base_32 (aij(3,2).get_spectral_va().get_base()) ;
aij.set(3,1) = aij(3,1) * pow(gam_dd()(1,1), 5./3.)
* pow(gam_dd()(3,3), -5./3.) ;
aij.set(3,1) = aij(3,1) * pow(psi(), -6.) ;
aij.set(3,1).set_spectral_va().set_base(base_31) ;
aij.set(3,2) = aij(3,2) * pow(gam_dd()(1,1), 5./3.)
* pow(gam_dd()(3,3), -5./3.) ;
aij.set(3,2) = aij(3,2) * pow(psi(), -6.) ;
aij.set(3,2).set_spectral_va().set_base(base_32) ;
/*
cout << "norme de A(3,1)" << endl << norme(aij(3,1)) << endl ;
cout << "norme de A(3,2)" << endl << norme(aij(3,2)) << endl ;
cout << "norme de A_init(3,1)" << endl << norme(aa()(3,1)) << endl ;
cout << "norme de A_init(3,2)" << endl << norme(aa()(3,2)) << endl ;
des_meridian(aij(3,1), 0., 4., "aij(3,1)", 0) ;
des_meridian(aa()(3,1), 0., 4., "aa_init(3,1)", 1) ;
des_meridian(aa()(3,1)-aij(3,1), 0., 4., "diff_aa(3,1)", 2) ;
des_meridian(aij(3,2), 0., 4., "aij(3,2)", 3) ;
des_meridian(aa()(3,2), 0., 4., "aa_init(3,2)", 4) ;
des_meridian(aa()(3,2)-aij(3,2), 0., 4., "diff_aa(3,2)", 5) ;
arrete() ;
*/
Sym_tensor hataij = aij*psi4()*psi()*psi() ;
hata_evol.update(hataij, jtime, the_time[jtime]) ;
Sym_tensor kij (aij) ;
kij = kij * pow(gam().determinant(), -1./3.) ;
kij.std_spectral_base() ;
k_uu_evol.update(kij, jtime, the_time[jtime]) ;
k_dd_evol.update(kij.up_down(gam()), jtime, the_time[jtime]) ;
}
double Isol_hor::axi_break() const {
Vector phi (ff.get_mp(), CON, *(ff.get_triad()) ) ;
Scalar tmp (ff.get_mp() ) ;
tmp = 1 ;
tmp.std_spectral_base() ;
tmp.mult_rsint() ;
phi.set(1) = 0. ;
phi.set(2) = 0. ;
phi.set(3) = tmp ;
Sym_tensor q_uu ( gam_uu() - gam().radial_vect() * gam().radial_vect() ) ;
Sym_tensor q_dd ( q_uu.up_down(gam()) ) ;
Sym_tensor L_phi_q_dd ( q_dd.derive_lie( phi) ) ;
Sym_tensor L_phi_q_uu ( contract(contract(L_phi_q_dd, 0, q_uu, 0), 0, q_uu,0) ) ;
Scalar integrand ( contract( L_phi_q_dd, 0, 1, L_phi_q_uu, 0, 1 ) * darea_hor() ) ;
double axibreak = mp.integrale_surface(integrand, 1.0000000001)/
(4 * M_PI * radius_hor()* radius_hor() ) ;
return axibreak ;
}
double fonc_expansion(double rr, const Param& par_expansion) {
Scalar expa = par_expansion.get_scalar(0) ;
double theta = par_expansion.get_double(0) ;
double phi = par_expansion.get_double(1) ;
return expa.val_point(rr, theta, phi) ;
}
void Isol_hor::adapt_hor(double c_min, double c_max) {
Scalar expa (expansion()) ;
Scalar app_hor(mp) ;
app_hor.annule_hard() ;
int nitmax = 200 ;
int nit ;
double precis = 1.e-13 ;
// Calculation of the radius of the apparent horizon for each (theta, phi)
// -----------------------------------------------------------------------
for (int nt=0; nt<mp.get_mg()->get_nt(1); nt++)
for (int np=0; np<mp.get_mg()->get_np(1); np++) {
double theta = mp.get_mg()->get_grille3d(1)->tet[nt] ;
double phi = mp.get_mg()->get_grille3d(1)->phi[np] ;
Param par_expansion ;
par_expansion.add_scalar(expa, 0) ;
par_expansion.add_double(theta, 0) ;
par_expansion.add_double(phi, 1) ;
double r_app_hor = zerosec_b(fonc_expansion, par_expansion, c_min, c_max,
precis, nitmax, nit) ;
app_hor.set_grid_point(1, np, nt, 0) = r_app_hor ;
}
// Transformation of the 3-metric and extrinsic curvature
// ------------------------------------------------------
Scalar rr (mp) ;
rr = mp.r ;
Scalar trans_11 (mp) ;
Scalar r_new (mp) ;
r_new.annule_hard() ;
// trans_11.annule_hard() ;
for (int l=1; l<nz; l++)
for (int nr=0; nr<mp.get_mg()->get_nr(1); nr++)
for (int nt=0; nt<mp.get_mg()->get_nt(1); nt++)
for (int np=0; np<mp.get_mg()->get_np(1); np++) {
r_new.set_grid_point(l, np, nt, nr) = rr.val_grid_point(l, np, nt, nr) -
app_hor.val_grid_point(1, np, nt, 0) + 1 ;
// trans_11.set_grid_point(l, np, nt, nr) = 1. /
// app_hor.val_grid_point(1, np, nt, 0) ; // !
}
r_new.std_spectral_base() ;
Itbl comp(2) ;
comp.set(0) = CON ;
comp.set(1) = COV ;
Scalar trans_12 (r_new.dsdt()) ;
trans_12.div_r() ;
Scalar trans_13 (r_new.stdsdp()) ;
trans_13.div_r() ;
for (int nr=0; nr<mp.get_mg()->get_nr(1); nr++)
for (int nt=0; nt<mp.get_mg()->get_nt(1); nt++)
for (int np=0; np<mp.get_mg()->get_np(1); np++) {
trans_12.set_grid_point(nz-1, np, nt, nr) = trans_12.val_grid_point(1, np, nt, nr) ;
trans_13.set_grid_point(nz-1, np, nt, nr) = trans_13.val_grid_point(1, np, nt, nr) ;
}
// Transformation matrix
Tensor trans (mp, 2, comp, mp.get_bvect_spher()) ;
trans.set(1,1) = 1 ;
trans.set(1,2) = 0;//trans_12 ;
trans.set(1,3) = 0;//trans_13 ;
trans.set(2,2) = 1. ;
trans.set(3,3) = 1. ;
trans.set(2,1) = 0. ;
trans.set(3,1) = 0. ;
trans.set(3,2) = 0. ;
trans.set(2,3) = 0. ;
trans.std_spectral_base() ;
cout << "trans(1,3)" << endl << norme(trans(1,3)) << endl ;
Sym_tensor gamma_uu (gam().con()) ;
Sym_tensor kk_uu (k_uu()) ;
gamma_uu = contract(gamma_uu, 0, 1, trans * trans, 1, 3) ;
kk_uu = contract(kk_uu, 0, 1, trans * trans, 1, 3) ;
Sym_tensor copie_gamma (gamma_uu) ;
Sym_tensor copie_kk (kk_uu) ;
// dz_puis set to zero
kk_uu.dec_dzpuis(2) ;
for(int i=1; i<=3; i++)
for(int j=i; j<=3; j++){
kk_uu.set(i,j).annule_hard() ;
gamma_uu.set(i,j).annule_hard() ;
}
copie_kk.dec_dzpuis(2) ;
Scalar expa_trans(mp) ;
expa_trans.annule_hard() ;
expa.dec_dzpuis(2) ;
/*
copie_gamma.set(2,2).div_r() ;
copie_gamma.set(2,2).div_r() ;
copie_gamma.set(3,3).div_rsint() ;
copie_gamma.set(3,3).div_rsint() ;
copie_gamma.set(1,2).div_r() ;
copie_gamma.set(1,3).div_rsint() ;
// gamma_uu.set(2,3).div_r() ;
// gamma_uu.set(2,3).div_rsint() ;
*/
//Importation
for(int i=1; i<=3; i++)
for(int j=i; j<=3; j++)
for (int l=1; l<nz; l++)
for (int nr=0; nr<mp.get_mg()->get_nr(1); nr++)
for (int nt=0; nt<mp.get_mg()->get_nt(1); nt++)
for (int np=0; np<mp.get_mg()->get_np(1); np++) {
double theta = mp.get_mg()->get_grille3d(1)->tet[nt] ;
double phi = mp.get_mg()->get_grille3d(1)->phi[np] ;
double r_inv = rr.val_grid_point(l, np, nt, nr) +
app_hor.val_grid_point(1, np, nt, 0) - 1. ;
gamma_uu.set(i,j).set_grid_point(l, np, nt, nr) =
copie_gamma(i,j).val_point(r_inv, theta, phi) ;
kk_uu.set(i,j).set_grid_point(l, np, nt, nr) =
copie_kk(i,j).val_point(r_inv, theta, phi) ;
expa_trans.set_grid_point(l, np, nt, nr) = expa.val_point(r_inv, theta, phi) ;
}
kk_uu.std_spectral_base() ; // Save the base?
gamma_uu.std_spectral_base() ;
expa_trans.std_spectral_base() ;
for (int l=1; l<nz; l++)
for (int nr=0; nr<mp.get_mg()->get_nr(1); nr++)
for (int nt=0; nt<mp.get_mg()->get_nt(1); nt++)
for (int np=0; np<mp.get_mg()->get_np(1); np++) {
gamma_uu.set(1,2).set_grid_point(l,np,nt,nr) = gamma_uu.set(1,2).val_grid_point(l,np,nt,nr)
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) ) ;
gamma_uu.set(1,3).set_grid_point(l,np,nt,nr) = gamma_uu.set(1,3).val_grid_point(l,np,nt,nr)
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) ) ;
gamma_uu.set(2,2).set_grid_point(l,np,nt,nr) = gamma_uu.set(2,2).val_grid_point(l,np,nt,nr)
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) )
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) ) ;
gamma_uu.set(2,3).set_grid_point(l,np,nt,nr) = gamma_uu.set(2,3).val_grid_point(l,np,nt,nr)
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) )
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) ) ;
gamma_uu.set(3,3).set_grid_point(l,np,nt,nr) = gamma_uu.set(3,3).val_grid_point(l,np,nt,nr)
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) )
/ (1 +app_hor.val_grid_point(1, np, nt, 0)/ rr.val_grid_point(l, np, nt, nr)
- 1 / rr.val_grid_point(l, np, nt, nr) ) ;
}
/*
gamma_uu.set(2,2).mult_r() ;
gamma_uu.set(2,2).mult_r() ;
gamma_uu.set(3,3).mult_rsint() ;
gamma_uu.set(3,3).mult_rsint() ;
gamma_uu.set(1,2).mult_r() ;
gamma_uu.set(1,3).mult_rsint() ;
// gamma_uu.set(2,3).mult_r() ;
// gamma_uu.set(2,3).mult_rsint() ;
*/
cout << "gamma_uu(1,1)" << endl << norme(gamma_uu(1,1)) << endl ;
cout << "gamma_uu(2,1)" << endl << norme(gamma_uu(2,1)) << endl ;
cout << "gamma_uu(3,1)" << endl << norme(gamma_uu(3,1)) << endl ;
cout << "gamma_uu(2,2)" << endl << norme(gamma_uu(2,2)) << endl ;
cout << "gamma_uu(3,2)" << endl << norme(gamma_uu(3,2)) << endl ;
cout << "gamma_uu(3,3)" << endl << norme(gamma_uu(3,3)) << endl ;
kk_uu.inc_dzpuis(2) ;
expa_trans.inc_dzpuis(2) ;
Metric gamm (gamma_uu) ;
// Updates
gam_uu_evol.update(gamma_uu, jtime, the_time[jtime]) ;
gam_dd_evol.update(gamm.cov(), jtime, the_time[jtime]) ;
k_uu_evol.update(kk_uu, jtime, the_time[jtime]) ;
if (p_psi4 != 0x0) {
delete p_psi4 ;
p_psi4 = 0x0 ;
}
if (p_ln_psi != 0x0) {
delete p_ln_psi ;
p_ln_psi = 0x0 ;
}
if (p_gamma != 0x0) {
delete p_gamma ;
p_gamma = 0x0 ;
}
if (p_tgamma != 0x0) {
delete p_tgamma ;
p_tgamma = 0x0 ;
}
if (p_hdirac != 0x0) {
delete p_hdirac ;
p_hdirac = 0x0 ;
}
k_dd_evol.downdate(jtime) ;
psi_evol.downdate(jtime) ;
hata_evol.downdate(jtime) ;
aa_quad_evol.downdate(jtime) ;
beta_evol.downdate(jtime) ;
n_evol.downdate(jtime) ;
hh_evol.downdate(jtime) ;
Scalar new_expa (expansion()) ;
//des_meridian(expa_trans, 1., 6., "Expansion trans", 1) ;
//des_meridian(new_expa, 1.000000001, 6., "Expansion new", 2) ;
//des_meridian(expa_trans- new_expa, 1.000000001, 4., "diff Expansion trans", 3) ;
}
}
Lorene::Base_val
Bases of the spectral expansions.
Definition base_val.h:322
Lorene::Cmp
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
Definition cmp.h:446
Lorene::Isol_hor::dnn
virtual const Vector & dnn() const
Covariant derivative of the lapse function at the current time step jtime.
Definition isol_hor.C:479
Lorene::Isol_hor::expansion
Scalar expansion() const
Expansion of the outgoing null normal ( ).
Definition phys_param.C:263
Lorene::Isol_hor::met_kerr_perturb
void met_kerr_perturb()
Initialisation of the metric tilde from equation (15) of Dain (2002).
Definition isol_hor.C:895
Lorene::Isol_hor::get_mp
const Map_af & get_mp() const
Returns the mapping (readonly).
Definition isol_hor.h:418
Lorene::Isol_hor::aa_quad
virtual const Scalar & aa_quad() const
Conformal representation .
Definition isol_hor.C:884
Lorene::Isol_hor::aa_nn
Evolution_std< Sym_tensor > aa_nn
Values at successive time steps of the components .
Definition isol_hor.h:320
Lorene::Isol_hor::init_bhole
void init_bhole()
Sets the values of the fields to :
Definition isol_hor.C:733
Lorene::Isol_hor::gamt_point
Sym_tensor gamt_point
Time derivative of the 3-metric tilde.
Definition isol_hor.h:329
Lorene::Isol_hor::regularise_one
double regularise_one()
Corrects the shift in the innermost shell, so that it remains and that equals zero on the horizon.
Definition regularisation.C:183
Lorene::Isol_hor::aa_quad_evol
Evolution_std< Scalar > aa_quad_evol
Values at successive time steps of the components .
Definition isol_hor.h:323
Lorene::Isol_hor::omega
double omega
Angular velocity in LORENE's units.
Definition isol_hor.h:269
Lorene::Isol_hor::regul
double regul
Intensity of the correction on the shift vector.
Definition isol_hor.h:278
Lorene::Isol_hor::n_comp
virtual const Scalar & n_comp() const
Lapse function at the current time step jtime.
Definition isol_hor.C:461
Lorene::Isol_hor::trK
Scalar trK
Trace of the extrinsic curvature.
Definition isol_hor.h:332
Lorene::Isol_hor::operator>>
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator<<).
Definition isol_hor.C:378
Lorene::Isol_hor::darea_hor
const Scalar darea_hor() const
Element of area of the horizon.
Definition phys_param.C:146
Lorene::Isol_hor::met_gamt
Metric met_gamt
3 metric tilde
Definition isol_hor.h:326
Lorene::Isol_hor::dpsi_evol
Evolution_std< Vector > dpsi_evol
Values at successive time steps of the covariant derivative of the conformal factor .
Definition isol_hor.h:298
Lorene::Isol_hor::psi_auto_evol
Evolution_std< Scalar > psi_auto_evol
Values at successive time steps of the conformal factor .
Definition isol_hor.h:287
Lorene::Isol_hor::nz
int nz
Number of zones.
Definition isol_hor.h:263
Lorene::Isol_hor::ang_mom_hor
double ang_mom_hor() const
Angular momentum (modulo).
Definition phys_param.C:178
Lorene::Isol_hor::aa_comp_evol
Evolution_std< Sym_tensor > aa_comp_evol
Values at successive time steps of the components of the conformal representation of the traceless p...
Definition isol_hor.h:316
Lorene::Isol_hor::set_psi
void set_psi(const Scalar &psi_in)
Sets the conformal factor relating the physical metric to the conformal one: .
Definition isol_hor.C:515
Lorene::Isol_hor::beta_comp
virtual const Vector & beta_comp() const
Shift function at the current time step jtime.
Definition isol_hor.C:497
Lorene::Isol_hor::init_met_trK
void init_met_trK()
Sets the 3-metric tilde to the flat metric and gamt_point, trK and trK_point to zero.
Definition isol_hor.C:785
Lorene::Isol_hor::trK_point
Scalar trK_point
Time derivative of the trace of the extrinsic curvature.
Definition isol_hor.h:335
Lorene::Isol_hor::beta_auto_evol
Evolution_std< Vector > beta_auto_evol
Values at successive time steps of the shift function .
Definition isol_hor.h:301
Lorene::Isol_hor::dpsi
virtual const Vector & dpsi() const
Covariant derivative with respect to the flat metric of the conformal factor at the current time ste...
Definition isol_hor.C:485
Lorene::Isol_hor::set_nn
void set_nn(const Scalar &nn_in)
Sets the lapse.
Definition isol_hor.C:540
Lorene::Isol_hor::boost_z
double boost_z
Boost velocity in z-direction.
Definition isol_hor.h:275
Lorene::Isol_hor::psi_auto
virtual const Scalar & psi_auto() const
Conformal factor at the current time step jtime.
Definition isol_hor.C:467
Lorene::Isol_hor::ang_mom_adm
double ang_mom_adm() const
ADM angular Momentum.
Definition phys_param.C:248
Lorene::Isol_hor::aa_comp
virtual const Sym_tensor & aa_comp() const
Conformal representation of the traceless part of the extrinsic curvature: Returns the value at the ...
Definition isol_hor.C:509
Lorene::Isol_hor::decouple
Scalar decouple
Function used to construct from the total .
Definition isol_hor.h:345
Lorene::Isol_hor::update_aa
void update_aa()
Conformal representation of the traceless part of the extrinsic curvature: .
Definition isol_hor.C:842
Lorene::Isol_hor::n_auto
virtual const Scalar & n_auto() const
Lapse function at the current time step jtime.
Definition isol_hor.C:455
Lorene::Isol_hor::~Isol_hor
virtual ~Isol_hor()
Destructor.
Definition isol_hor.C:336
Lorene::Isol_hor::radius
double radius
Radius of the horizon in LORENE's units.
Definition isol_hor.h:266
Lorene::Isol_hor::aa_auto
virtual const Sym_tensor & aa_auto() const
Conformal representation of the traceless part of the extrinsic curvature: Returns the value at the ...
Definition isol_hor.C:503
Lorene::Isol_hor::mass_hor
double mass_hor() const
Mass computed at the horizon.
Definition phys_param.C:206
Lorene::Isol_hor::init_bhole_seul
void init_bhole_seul()
Initiates for a single black hole.
Definition isol_hor.C:797
Lorene::Isol_hor::aa_auto_evol
Evolution_std< Sym_tensor > aa_auto_evol
Values at successive time steps of the components of the conformal representation of the traceless p...
Definition isol_hor.h:310
Lorene::Isol_hor::set_gamt
void set_gamt(const Metric &gam_tilde)
Sets the conformal metric to gam_tilde.
Definition isol_hor.C:550
Lorene::Isol_hor::radius_hor
double radius_hor() const
Radius of the horizon.
Definition phys_param.C:167
Lorene::Isol_hor::mp
Map_af & mp
Affine mapping.
Definition isol_hor.h:260
Lorene::Isol_hor::psi_comp
virtual const Scalar & psi_comp() const
Conformal factor at the current time step jtime.
Definition isol_hor.C:473
Lorene::Isol_hor::axi_break
double axi_break() const
Breaking of the axial symmetry on the horizon.
Definition isol_hor.C:1087
Lorene::Isol_hor::n_auto_evol
Evolution_std< Scalar > n_auto_evol
Values at successive time steps of the lapse function .
Definition isol_hor.h:281
Lorene::Isol_hor::n_comp_evol
Evolution_std< Scalar > n_comp_evol
Values at successive time steps of the lapse function .
Definition isol_hor.h:284
Lorene::Isol_hor::dn_evol
Evolution_std< Vector > dn_evol
Values at successive time steps of the covariant derivative of the lapse with respect to the flat met...
Definition isol_hor.h:294
Lorene::Isol_hor::Isol_hor
Isol_hor(Map_af &mpi, int depth_in=3)
Standard constructor.
Definition isol_hor.C:176
Lorene::Isol_hor::boost_x
double boost_x
Boost velocity in x-direction.
Definition isol_hor.h:272
Lorene::Isol_hor::operator=
void operator=(const Isol_hor &)
Assignment to another Isol_hor.
Definition isol_hor.C:343
Lorene::Isol_hor::beta_comp_evol
Evolution_std< Vector > beta_comp_evol
Values at successive time steps of the shift function .
Definition isol_hor.h:304
Lorene::Isol_hor::area_hor
double area_hor() const
Area of the horizon.
Definition phys_param.C:157
Lorene::Isol_hor::beta_auto
virtual const Vector & beta_auto() const
Shift function at the current time step jtime.
Definition isol_hor.C:491
Lorene::Isol_hor::sauve
virtual void sauve(FILE *fich, bool partial_save) const
Total or partial saves in a binary file.
Definition isol_hor.C:401
Lorene::Isol_hor::omega_hor
double omega_hor() const
Orbital velocity.
Definition phys_param.C:233
Lorene::Isol_hor::psi_comp_evol
Evolution_std< Scalar > psi_comp_evol
Values at successive time steps of the lapse function .
Definition isol_hor.h:290
Lorene::Map_af
Affine radial mapping.
Definition map.h:2027
Lorene::Metric_flat
Flat metric for tensor calculation.
Definition metric.h:261
Lorene::Metric
Metric for tensor calculation.
Definition metric.h:90
Lorene::Metric::con
virtual const Sym_tensor & con() const
Read-only access to the contravariant representation.
Definition metric.C:290
Lorene::Metric::cov
virtual const Sym_tensor & cov() const
Read-only access to the covariant representation.
Definition metric.C:280
Lorene::Param
Parameter storage.
Definition param.h:125
Lorene::Param::get_double
const double & get_double(int position=0) const
Returns the reference of a double stored in the list.
Definition param.C:361
Lorene::Param::get_scalar
const Scalar & get_scalar(int position=0) const
Returns the reference of a Scalar stored in the list.
Definition param.C:1393
Lorene::Param::add_scalar
void add_scalar(const Scalar &ti, int position=0)
Adds the address of a new Scalar to the list.
Definition param.C:1348
Lorene::Scalar
Tensor field of valence 0 (or component of a tensorial field).
Definition scalar.h:387
Lorene::Scalar::raccord
void raccord(int n)
Performs the matching of the nucleus with respect to the first shell.
Definition scalar_raccord.C:62
Lorene::Scalar::derive_cov
const Vector & derive_cov(const Metric &gam) const
Returns the gradient (1-form = covariant vector) of *this.
Definition scalar_deriv.C:390
Lorene::Scalar::div_rsint_dzpuis
void div_rsint_dzpuis(int ced_mult_r)
Division by but with the output flag dzpuis set to ced_mult_r .
Definition scalar_r_manip.C:362
Lorene::Scalar::std_spectral_base
virtual void std_spectral_base()
Sets the spectral bases of the Valeur va to the standard ones for a scalar field.
Definition scalar.C:784
Lorene::Scalar::set_etat_zero
virtual void set_etat_zero()
Sets the logical state to ETATZERO (zero).
Definition scalar.C:324
Lorene::Scalar::set_domain
Tbl & set_domain(int l)
Read/write of the value in a given domain.
Definition scalar.h:615
Lorene::Scalar::annule
virtual void annule(int l_min, int l_max)
Sets the Scalar to zero in several domains.
Definition scalar.C:391
Lorene::Scalar::set_spectral_va
Valeur & set_spectral_va()
Returns va (read/write version).
Definition scalar.h:604
Lorene::Scalar::get_spectral_va
const Valeur & get_spectral_va() const
Returns va (read only version).
Definition scalar.h:601
Lorene::Scalar::mult_rsint
void mult_rsint()
Multiplication by everywhere; dzpuis is not changed.
Definition scalar_r_manip.C:281
Lorene::Scalar::set_dzpuis
void set_dzpuis(int)
Modifies the dzpuis flag.
Definition scalar.C:808
Lorene::Scalar::div_rsint
void div_rsint()
Division by everywhere; dzpuis is not changed.
Definition scalar_r_manip.C:348
Lorene::Scalar::val_point
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.
Definition scalar.C:890
Lorene::Scalar::set_outer_boundary
void set_outer_boundary(int l, double x)
Sets the value of the Scalar at the outer boundary of a given domain.
Definition scalar_manip.C:315
Lorene::Scalar::dec_dzpuis
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...
Definition scalar_r_manip.C:418
Lorene::Scalar::import
void import(const Scalar &ci)
Assignment to another Scalar defined on a different mapping.
Definition scalar_import.C:68
Lorene::Sym_tensor
Class intended to describe valence-2 symmetric tensors.
Definition sym_tensor.h:223
Lorene::Sym_tensor::derive_lie
Sym_tensor derive_lie(const Vector &v) const
Computes the Lie derivative of this with respect to some vector field v.
Definition sym_tensor.C:360
Lorene::Time_slice_conf::hh_evol
Evolution_std< Sym_tensor > hh_evol
Values at successive time steps of the components .
Definition time_slice.h:530
Lorene::Time_slice_conf::gam_dd
virtual const Sym_tensor & gam_dd() const
Induced metric (covariant components ) at the current time step (jtime ).
Definition time_slice_conf.C:608
Lorene::Time_slice_conf::nn
virtual const Scalar & nn() const
Lapse function N at the current time step (jtime ).
Definition time_slice_conf.C:591
Lorene::Time_slice_conf::k_uu
virtual const Sym_tensor & k_uu() const
Extrinsic curvature tensor (contravariant components ) at the current time step (jtime ).
Definition time_slice_conf.C:643
Lorene::Time_slice_conf::hata_evol
Evolution_std< Sym_tensor > hata_evol
Values at successive time steps of the components .
Definition time_slice.h:542
Lorene::Time_slice_conf::operator=
void operator=(const Time_slice_conf &)
Assignment to another Time_slice_conf.
Definition time_slice_conf.C:376
Lorene::Time_slice_conf::psi
virtual const Scalar & psi() const
Conformal factor relating the physical metric to the conformal one: .
Definition time_slice_conf.C:693
Lorene::Time_slice_conf::p_tgamma
Metric * p_tgamma
Pointer on the conformal metric at the current time step (jtime).
Definition time_slice.h:560
Lorene::Time_slice_conf::aa
virtual Sym_tensor aa() const
Conformal representation of the traceless part of the extrinsic curvature: .
Definition time_slice_conf.C:765
Lorene::Time_slice_conf::set_hata
virtual void set_hata(const Sym_tensor &hata_in)
Sets the conformal representation of the traceless part of the extrinsic curvature: .
Definition time_slice_conf.C:534
Lorene::Time_slice_conf::p_hdirac
Vector * p_hdirac
Pointer on the vector (which vanishes in Dirac gauge), at the current time step (jtime).
Definition time_slice.h:571
Lorene::Time_slice_conf::psi4
const Scalar & psi4() const
Factor at the current time step (jtime ).
Definition time_slice_conf.C:707
Lorene::Time_slice_conf::psi_evol
Evolution_std< Scalar > psi_evol
Values at successive time steps of the conformal factor relating the physical metric to the conform...
Definition time_slice.h:517
Lorene::Time_slice_conf::Time_slice_conf
Time_slice_conf(const Scalar &lapse_in, const Vector &shift_in, const Metric_flat &ff_in, const Scalar &psi_in, const Sym_tensor &hh_in, const Sym_tensor &hata_in, const Scalar &trk_in, int depth_in=3)
Constructor from conformal decomposition.
Definition time_slice_conf.C:118
Lorene::Time_slice_conf::gam_uu
virtual const Sym_tensor & gam_uu() const
Induced metric (contravariant components ) at the current time step (jtime ).
Definition time_slice_conf.C:619
Lorene::Time_slice_conf::ff
const Metric_flat & ff
Pointer on the flat metric with respect to which the conformal decomposition is performed.
Definition time_slice.h:507
Lorene::Time_slice_conf::p_ln_psi
Scalar * p_ln_psi
Pointer on the logarithm of at the current time step (jtime).
Definition time_slice.h:566
Lorene::Time_slice_conf::p_psi4
Scalar * p_psi4
Pointer on the factor at the current time step (jtime).
Definition time_slice.h:563
Lorene::Time_slice::jtime
int jtime
Time step index of the latest slice.
Definition time_slice.h:190
Lorene::Time_slice::trk_evol
Evolution_std< Scalar > trk_evol
Values at successive time steps of the trace K of the extrinsic curvature.
Definition time_slice.h:224
Lorene::Time_slice::p_gamma
Metric * p_gamma
Pointer on the induced metric at the current time step (jtime).
Definition time_slice.h:239
Lorene::Time_slice::k_dd_evol
Evolution_std< Sym_tensor > k_dd_evol
Values at successive time steps of the covariant components of the extrinsic curvature tensor .
Definition time_slice.h:208
Lorene::Time_slice::sauve
virtual void sauve(FILE *fich, bool partial_save) const
Total or partial saves in a binary file.
Definition time_slice.C:507
Lorene::Time_slice::adm_mass_evol
Evolution_full< Tbl > adm_mass_evol
ADM mass at each time step, since the creation of the slice.
Definition time_slice.h:233
Lorene::Time_slice::gam_dd_evol
Evolution_std< Sym_tensor > gam_dd_evol
Values at successive time steps of the covariant components of the induced metric .
Definition time_slice.h:198
Lorene::Time_slice::gam_uu_evol
Evolution_std< Sym_tensor > gam_uu_evol
Values at successive time steps of the contravariant components of the induced metric .
Definition time_slice.h:203
Lorene::Time_slice::beta
virtual const Vector & beta() const
shift vector at the current time step (jtime )
Definition time_slice_access.C:87
Lorene::Time_slice::gam
const Metric & gam() const
Induced metric at the current time step (jtime ).
Definition time_slice_access.C:95
Lorene::Time_slice::depth
int depth
Number of stored time slices.
Definition time_slice.h:179
Lorene::Time_slice::n_evol
Evolution_std< Scalar > n_evol
Values at successive time steps of the lapse function N.
Definition time_slice.h:216
Lorene::Time_slice::adm_mass
virtual double adm_mass() const
Returns the ADM mass (geometrical units) at the current step.
Definition tslice_adm_mass.C:74
Lorene::Time_slice::the_time
Evolution_std< double > the_time
Time label of each slice.
Definition time_slice.h:193
Lorene::Time_slice::operator>>
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator<<).
Definition time_slice.C:411
Lorene::Time_slice::k_uu_evol
Evolution_std< Sym_tensor > k_uu_evol
Values at successive time steps of the contravariant components of the extrinsic curvature tensor .
Definition time_slice.h:213
Lorene::Time_slice::beta_evol
Evolution_std< Vector > beta_evol
Values at successive time steps of the shift vector .
Definition time_slice.h:219
Lorene::Valeur::get_base
const Base_val & get_base() const
Return the bases for spectral expansions (member base ).
Definition valeur.h:480
Lorene::Valeur::set_base
void set_base(const Base_val &)
Sets the bases for spectral expansions (member base ).
Definition valeur.C:810
Lorene::Vector
Tensor field of valence 1.
Definition vector.h:188
Lorene::Vector::std_spectral_base
virtual void std_spectral_base()
Sets the standard spectal bases of decomposition for each component.
Definition vector.C:316
Lorene::Vector::ope_killing_conf
Sym_tensor ope_killing_conf(const Metric &gam) const
Computes the conformal Killing operator associated with a given metric.
Definition vector.C:462
Lorene::Vector::change_triad
virtual void change_triad(const Base_vect &)
Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.
Definition vector_change_triad.C:75
Lorene::Vector::set
Scalar & set(int)
Read/write access to a component.
Definition vector.C:296
Lorene::norme
Tbl norme(const Cmp &)
Sums of the absolute values of all the values of the Cmp in each domain.
Definition cmp_math.C:481
Lorene::pow
Cmp pow(const Cmp &, int)
Power .
Definition cmp_math.C:348
R_CHEBU
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
Definition type_parite.h:180
T_COSSIN_SI
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
Definition type_parite.h:214
T_COSSIN_CI
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
Definition type_parite.h:212
P_COSSIN
#define P_COSSIN
dev. standart
Definition type_parite.h:245
R_CHEBPIM_P
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
Definition type_parite.h:176
R_CHEB
#define R_CHEB
base de Chebychev ordinaire (fin)
Definition type_parite.h:166
Lorene::fread_be
int fread_be(int *aa, int size, int nb, FILE *fich)
Reads integer(s) from a binary file according to the big endian convention.
Definition fread_be.C:69
Lorene::zerosec_b
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.
Definition zerosec_borne.C:68
Lorene::fwrite_be
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.
Definition fwrite_be.C:70
Lorene::Tensor::get_mp
const Map & get_mp() const
Returns the mapping.
Definition tensor.h:861
Lorene::Tensor::dec_dzpuis
virtual void dec_dzpuis(int dec=1)
Decreases by dec units the value of dzpuis and changes accordingly the values in the compactified ext...
Definition tensor.C:808
Lorene::Tensor::up_down
Tensor up_down(const Metric &gam) const
Computes a new tensor by raising or lowering all the indices of *this .
Definition tensor_calculus.C:305
Lorene::Tensor::inc_dzpuis
virtual void inc_dzpuis(int inc=1)
Increases by inc units the value of dzpuis and changes accordingly the values in the compactified ext...
Definition tensor.C:816
Lorene::Tensor::get_triad
const Base_vect * get_triad() const
Returns the vectorial basis (triad) on which the components are defined.
Definition tensor.h:866
Lorene::Tensor::annule_domain
void annule_domain(int l)
Sets the Tensor to zero in a given domain.
Definition tensor.C:666
Lorene::Tensor::set_etat_qcq
virtual void set_etat_qcq()
Sets the logical state of all components to ETATQCQ (ordinary state).
Definition tensor.C:481
Lorene::Tensor::set_etat_zero
virtual void set_etat_zero()
Sets the logical state of all components to ETATZERO (zero state).
Definition tensor.C:497
Lorene::Tensor::set
Scalar & set(const Itbl &ind)
Returns the value of a component (read/write version).
Definition tensor.C:654
Lorene::contract
Tenseur contract(const Tenseur &, int id1, int id2)
Self contraction of two indices of a Tenseur .
Definition tenseur_operateur.C:279
Lorene
Lorene prototypes.
Definition app_hor.h:64
Lorene::cost
Coord cost
Definition map.h:722
Lorene::get_bvect_spher
const Base_vect_spher & get_bvect_spher() const
Returns the orthonormal vectorial basis associated with the coordinates of the mapping.
Definition map.h:783
Lorene::get_mg
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
Definition map.h:765
Lorene::flat_met_spher
const Metric_flat & flat_met_spher() const
Returns the flat metric associated with the spherical coordinates and with components expressed in th...
Definition map.C:321
Lorene::phi
Coord phi
coordinate centered on the grid
Definition map.h:720
Lorene::sint
Coord sint
Definition map.h:721