hole_bhns_extr_curv.C

00001 /*
00002  *  Method of class Hole_bhns to compute the extrinsic curvature tensor
00003  *
00004  *    (see file hole_bhns.h for documentation).
00005  *
00006  */
00007 
00008 /*
00009  *   Copyright (c) 2005-2007 Keisuke Taniguchi
00010  *
00011  *   This file is part of LORENE.
00012  *
00013  *   LORENE is free software; you can redistribute it and/or modify
00014  *   it under the terms of the GNU General Public License version 2
00015  *   as published by the Free Software Foundation.
00016  *
00017  *   LORENE is distributed in the hope that it will be useful,
00018  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  *   GNU General Public License for more details.
00021  *
00022  *   You should have received a copy of the GNU General Public License
00023  *   along with LORENE; if not, write to the Free Software
00024  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025  *
00026  */
00027 
00028 char hole_bhns_extr_curv_C[] = "$Header: /cvsroot/Lorene/C++/Source/Hole_bhns/hole_bhns_extr_curv.C,v 1.2 2008/05/15 19:05:49 k_taniguchi Exp $" ;
00029 
00030 /*
00031  * $Id: hole_bhns_extr_curv.C,v 1.2 2008/05/15 19:05:49 k_taniguchi Exp $
00032  * $Log: hole_bhns_extr_curv.C,v $
00033  * Revision 1.2  2008/05/15 19:05:49  k_taniguchi
00034  * Change of some parameters.
00035  *
00036  * Revision 1.1  2007/06/22 01:24:56  k_taniguchi
00037  * *** empty log message ***
00038  *
00039  *
00040  * $Header: /cvsroot/Lorene/C++/Source/Hole_bhns/hole_bhns_extr_curv.C,v 1.2 2008/05/15 19:05:49 k_taniguchi Exp $
00041  *
00042  */
00043 
00044 // C++ headers
00045 //#include <>
00046 
00047 // C headers
00048 #include <math.h>
00049 
00050 // Lorene headers
00051 #include "hole_bhns.h"
00052 #include "utilitaires.h"
00053 #include "unites.h"
00054 //#include "graphique.h"
00055 
00056 void Hole_bhns::extr_curv_bhns(double omega_orb, double x_rot, double y_rot) {
00057 
00058     //----------------------------------
00059     // Total extrinsic curvature tensor
00060     //----------------------------------
00061 
00062     // Fundamental constants and units
00063     // -------------------------------
00064     using namespace Unites ;
00065 
00066     // Coordinates
00067     // -----------
00068 
00069     double mass = ggrav * mass_bh ;
00070 
00071     Scalar rr(mp) ;
00072     rr = mp.r ;
00073     rr.std_spectral_base() ;
00074     Scalar st(mp) ;
00075     st = mp.sint ;
00076     st.std_spectral_base() ;
00077     Scalar ct(mp) ;
00078     ct = mp.cost ;
00079     ct.std_spectral_base() ;
00080     Scalar sp(mp) ;
00081     sp = mp.sinp ;
00082     sp.std_spectral_base() ;
00083     Scalar cp(mp) ;
00084     cp = mp.cosp ;
00085     cp.std_spectral_base() ;
00086 
00087     Vector ll(mp, CON, mp.get_bvect_cart()) ;
00088     ll.set_etat_qcq() ;
00089     ll.set(1) = st % cp ;
00090     ll.set(2) = st % sp ;
00091     ll.set(3) = ct ;
00092     ll.std_spectral_base() ;
00093 
00094     Scalar divshift(mp) ;
00095     divshift = shift_auto_rs(1).deriv(1) + shift_auto_rs(2).deriv(2)
00096       + shift_auto_rs(3).deriv(3) + d_shift_comp(1,1)
00097       + d_shift_comp(2,2) + d_shift_comp(3,3) ;
00098     divshift.std_spectral_base() ;
00099 
00100     if (kerrschild) {
00101 
00102     Scalar orb_rot_x(mp) ;
00103     orb_rot_x = omega_orb * (mp.get_ori_x() - x_rot) ;
00104     orb_rot_x.std_spectral_base() ;
00105 
00106     Scalar orb_rot_y(mp) ;
00107     orb_rot_y = omega_orb * (mp.get_ori_y() - y_rot) ;
00108     orb_rot_y.std_spectral_base() ;
00109 
00110     Vector uv(mp, CON, mp.get_bvect_cart()) ; // unit vector
00111     uv.set_etat_qcq() ;
00112     uv.set(1) = - orb_rot_y ;
00113     uv.set(2) = orb_rot_x ;
00114     uv.set(3) = 0. ;
00115     uv.std_spectral_base() ;
00116 
00117     // Computation of \tilde{A}^{ij}
00118     // -----------------------------
00119 
00120     Sym_tensor flat_taij(mp, CON, mp.get_bvect_cart()) ;
00121     flat_taij.set_etat_qcq() ;
00122 
00123     for (int i=1; i<=3; i++) {
00124         for (int j=1; j<=3; j++) {
00125             flat_taij.set(i,j) = shift_auto_rs(j).deriv(i)
00126           + shift_auto_rs(i).deriv(j) + d_shift_comp(i,j)
00127           + d_shift_comp(j,i)
00128           - 2. * divshift * flat.con()(i,j) / 3. ;
00129         }
00130     }
00131 
00132     flat_taij.std_spectral_base() ;
00133 
00134     Sym_tensor curv_taij(mp, CON, mp.get_bvect_cart()) ;
00135     curv_taij.set_etat_qcq() ;
00136 
00137     for (int i=1; i<=3; i++) {
00138         for (int j=1; j<=3; j++) {
00139             curv_taij.set(i,j) =
00140           -2. * lapconf_auto_bh * lapconf_auto_bh * mass
00141           * (ll(i) * (shift_auto_rs(j).dsdr()
00142                   + ll(1)*d_shift_comp(1,j)
00143                   + ll(2)*d_shift_comp(2,j)
00144                   + ll(3)*d_shift_comp(3,j))
00145              + ll(j) * (shift_auto_rs(i).dsdr()
00146                 + ll(1)*d_shift_comp(1,i)
00147                 + ll(2)*d_shift_comp(2,i)
00148                 + ll(3)*d_shift_comp(3,i))
00149              - 2. * ll(i) * ll(j) * divshift / 3.) / rr ;
00150         }
00151     }
00152 
00153     curv_taij.std_spectral_base() ;
00154 
00155     Sym_tensor resi_taij(mp, CON, mp.get_bvect_cart()) ;
00156     resi_taij.set_etat_qcq() ;
00157 
00158     for (int i=1; i<=3; i++) {
00159         for (int j=1; j<=3; j++) {
00160             resi_taij.set(i,j) =
00161           2. * lapconf_auto_bh * lapconf_auto_bh * mass
00162           * ( ll(i) * (shift_auto_rs(j) + shift_comp(j))
00163               + ll(j) * (shift_auto_rs(i) + shift_comp(i))
00164               + ( flat.con()(i,j)
00165               - lapconf_auto_bh*lapconf_auto_bh
00166               *(9.+14.*mass/rr)*ll(i)*ll(j) )
00167               * ( ll(1) * (shift_auto_rs(1) + shift_comp(1))
00168               + ll(2) * (shift_auto_rs(2) + shift_comp(2))
00169               + ll(3) * (shift_auto_rs(3) + shift_comp(3)) ) / 3. )
00170           / rr / rr ;
00171         }
00172     }
00173 
00174     resi_taij.std_spectral_base() ;
00175     resi_taij.inc_dzpuis(2) ;
00176 
00177     taij_tot_rs = 0.5 * pow(confo_tot, 7.)
00178       * (flat_taij + curv_taij + resi_taij) / lapconf_tot ;
00179 
00180     taij_tot_rs.std_spectral_base() ;
00181     taij_tot_rs.annule_domain(0) ;
00182 
00183     taij_tot_rot.set_etat_qcq() ;
00184 
00185     for (int i=1; i<=3; i++) {
00186         for (int j=1; j<=3; j++) {
00187             taij_tot_rot.set(i,j) = pow(confo_tot,7.)
00188           * lapconf_auto_bh * lapconf_auto_bh * mass
00189           * ( ll(i) * uv(j) + ll(j) * uv(i)
00190               + ( flat.con()(i,j)
00191               - lapconf_auto_bh*lapconf_auto_bh
00192               *(9.+14.*mass/rr)*ll(i)*ll(j) )
00193               * (ll(2)*orb_rot_x - ll(1)*orb_rot_y) / 3. )
00194           / lapconf_tot / rr / rr ;
00195         }
00196     }
00197 
00198     taij_tot_rot.std_spectral_base() ;
00199     taij_tot_rot.annule_domain(0) ;
00200     taij_tot_rot.inc_dzpuis(2) ;
00201 
00202     taij_tot_bh.set_etat_qcq() ;
00203 
00204     for (int i=1; i<=3; i++) {
00205         for (int j=1; j<=3; j++) {
00206             taij_tot_bh.set(i,j) = 2. * pow(confo_tot,7.)
00207           * pow(lapconf_auto_bh,6.) * mass * (2.+3.*mass/rr)
00208           * ( (1.+2.*mass/rr)*flat.con()(i,j)
00209               - (3.+2.*mass/rr) * ll(i) * ll(j) )
00210           / 3. / lapconf_tot / rr / rr ;
00211         }
00212     }
00213 
00214     taij_tot_bh.std_spectral_base() ;
00215     taij_tot_bh.annule_domain(0) ;
00216     taij_tot_bh.inc_dzpuis(2) ;
00217 
00218     taij_tot = taij_tot_rs + taij_tot_rot + taij_tot_bh ;
00219 
00220     taij_tot.std_spectral_base() ;
00221     taij_tot.annule_domain(0) ;
00222 
00223     // Computation of \tilde{A}^{ij} \tilde{A}_{ij}
00224     // --------------------------------------------
00225 
00226     Sym_tensor flat_dshift(mp, COV, mp.get_bvect_cart()) ;
00227     flat_dshift.set_etat_qcq() ;
00228 
00229     for (int i=1; i<=3; i++) {
00230         for (int j=1; j<=3; j++) {
00231             flat_dshift.set(i,j) =
00232           flat.cov()(j,1)*(shift_auto_rs(1).deriv(i)
00233                    + d_shift_comp(i,1))
00234           + flat.cov()(j,2)*(shift_auto_rs(2).deriv(i)
00235                      + d_shift_comp(i,2))
00236           + flat.cov()(j,3)*(shift_auto_rs(3).deriv(i)
00237                      + d_shift_comp(i,3))
00238           + flat.cov()(i,1)*(shift_auto_rs(1).deriv(j)
00239                      + d_shift_comp(j,1))
00240           + flat.cov()(i,2)*(shift_auto_rs(2).deriv(j)
00241                      + d_shift_comp(j,2))
00242           + flat.cov()(i,3)*(shift_auto_rs(3).deriv(j)
00243                      + d_shift_comp(j,3))
00244           - 2. * divshift * flat.cov()(i,j) / 3. ;
00245         }
00246     }
00247 
00248     flat_dshift.std_spectral_base() ;
00249 
00250     Sym_tensor curv_dshift(mp, COV, mp.get_bvect_cart()) ;
00251     curv_dshift.set_etat_qcq() ;
00252 
00253     for (int i=1; i<=3; i++) {
00254         for (int j=1; j<=3; j++) {
00255             curv_dshift.set(i,j) = 2. * mass
00256           *( ll(j) * ( ll(1)*(shift_auto_rs(1).deriv(i)
00257                       + d_shift_comp(i,1))
00258                    + ll(2)*(shift_auto_rs(2).deriv(i)
00259                     + d_shift_comp(i,2))
00260                    + ll(3)*(shift_auto_rs(3).deriv(i)
00261                     + d_shift_comp(i,3)))
00262              + ll(i) * ( ll(1)*(shift_auto_rs(1).deriv(j)
00263                     + d_shift_comp(j,1))
00264                  + ll(2)*(shift_auto_rs(2).deriv(j)
00265                       + d_shift_comp(j,2))
00266                  + ll(3)*(shift_auto_rs(3).deriv(j)
00267                       + d_shift_comp(j,3)))
00268              - 2. * divshift * ll(i) * ll(j) / 3. ) / rr ;
00269         }
00270     }
00271 
00272     curv_dshift.std_spectral_base() ;
00273 
00274     Sym_tensor tmp1(mp, COV, mp.get_bvect_cart()) ;
00275     tmp1.set_etat_qcq() ;
00276 
00277     for (int i=1; i<=3; i++) {
00278         for (int j=1; j<=3; j++) {
00279             tmp1.set(i,j) = 2. * mass
00280           *(ll(j)*( (flat.cov()(i,1)+2.*mass*ll(i)*ll(1)/rr)
00281                 * (shift_auto_rs(1) + shift_comp(1))
00282                 + (flat.cov()(i,2)+2.*mass*ll(i)*ll(2)/rr)
00283                 * (shift_auto_rs(2) + shift_comp(2))
00284                 + (flat.cov()(i,3)+2.*mass*ll(i)*ll(3)/rr)
00285                 * (shift_auto_rs(3) + shift_comp(3))
00286                 )
00287             + ll(i)*( (flat.cov()(j,1)+2.*mass*ll(j)*ll(1)/rr)
00288                   * (shift_auto_rs(1) + shift_comp(1))
00289                   + (flat.cov()(j,2)+2.*mass*ll(j)*ll(2)/rr)
00290                   * (shift_auto_rs(2) + shift_comp(2))
00291                   + (flat.cov()(j,3)+2.*mass*ll(j)*ll(3)/rr)
00292                   * (shift_auto_rs(3) + shift_comp(3)) )
00293             ) / rr / rr ;
00294         }
00295     }
00296     tmp1.std_spectral_base() ;
00297     tmp1.inc_dzpuis(2) ;
00298 
00299     Sym_tensor tmp2(mp, COV, mp.get_bvect_cart()) ;
00300     tmp2.set_etat_qcq() ;
00301 
00302     for (int i=1; i<=3; i++) {
00303         for (int j=1; j<=3; j++) {
00304             tmp2.set(i,j) = 2. * mass * lapconf_auto_bh * lapconf_auto_bh
00305           * ( ll(1) * (shift_auto_rs(1) + shift_comp(1))
00306               + ll(2) * (shift_auto_rs(2) + shift_comp(2))
00307               + ll(3) * (shift_auto_rs(3) + shift_comp(3)) )
00308           * (flat.cov()(i,j)
00309              - (9.+28.*mass/rr+24.*mass*mass/rr/rr)*ll(i)*ll(j))
00310           / 3. / rr / rr ;
00311         }
00312     }
00313     tmp2.std_spectral_base() ;
00314     tmp2.inc_dzpuis(2) ;
00315 
00316     Sym_tensor taij_down_rs(mp, COV, mp.get_bvect_cart()) ;
00317     taij_down_rs.set_etat_qcq() ;
00318 
00319     taij_down_rs = 0.5 * pow(confo_tot,7.)
00320       * (flat_dshift + curv_dshift + tmp1 + tmp2) / lapconf_tot ;
00321 
00322     taij_down_rs.std_spectral_base() ;
00323     taij_down_rs.annule_domain(0) ;
00324 
00325     Sym_tensor taij_down_rot(mp, COV, mp.get_bvect_cart()) ;
00326     taij_down_rot.set_etat_qcq() ;
00327 
00328     for (int i=1; i<=3; i++) {
00329         for (int j=1; j<=3; j++) {
00330           taij_down_rot.set(i,j) = mass * pow(confo_tot,7.)
00331         * ( ll(j)*uv(i) + ll(i)*uv(j)
00332             + lapconf_auto_bh * lapconf_auto_bh
00333             * (ll(2)*orb_rot_x - ll(1)*orb_rot_y)
00334             * ( flat.cov()(i,j) - (9.+16.*mass/rr)*ll(i)*ll(j) ) / 3.
00335             ) / lapconf_tot / rr / rr ;
00336         }
00337     }
00338     taij_down_rot.std_spectral_base() ;
00339     taij_down_rot.annule_domain(0) ;
00340     taij_down_rot.inc_dzpuis(2) ;
00341 
00342     Sym_tensor taij_down_bh(mp, COV, mp.get_bvect_cart()) ;
00343     taij_down_bh.set_etat_qcq() ;
00344 
00345     for (int i=1; i<=3; i++) {
00346         for (int j=1; j<=3; j++) {
00347           taij_down_bh.set(i,j) = 2. * mass * pow(confo_tot,7.)
00348         * pow(lapconf_auto_bh,4.) * (2.+3.*mass/rr)
00349         * (flat.cov()(i,j) - (3.+4.*mass/rr) * ll(i) * ll(j))
00350         / 3. / lapconf_auto / rr / rr ;
00351         }
00352     }
00353     taij_down_bh.std_spectral_base() ;
00354     taij_down_bh.annule_domain(0) ;
00355     taij_down_bh.inc_dzpuis(2) ;
00356 
00357     Scalar taij_quad_rstot(mp) ;
00358     taij_quad_rstot = 0. ;
00359 
00360     for (int i=1; i<=3; i++) {
00361         for (int j=1; j<=3; j++) {
00362             taij_quad_rstot += taij_down_rs(i,j) * taij_tot(i,j) ;
00363         }
00364     }
00365     taij_quad_rstot.std_spectral_base() ;
00366 
00367     Scalar taij_quad_rsrotbh(mp) ;
00368     taij_quad_rsrotbh = 0. ;
00369 
00370     for (int i=1; i<=3; i++) {
00371         for (int j=1; j<=3; j++) {
00372             taij_quad_rsrotbh += taij_tot_rs(i,j)
00373           * (taij_down_rot(i,j) + taij_down_bh(i,j)) ;
00374         }
00375     }
00376     taij_quad_rsrotbh.std_spectral_base() ;
00377 
00378     taij_quad_tot_rs = taij_quad_rstot + taij_quad_rsrotbh ;
00379     taij_quad_tot_rs.std_spectral_base() ;
00380 
00381     taij_quad_tot_rot = 8.*mass*mass*pow(confo_tot,14.)
00382       * pow(lapconf_auto_bh,6.) * (2.+3.*mass/rr)
00383       * (ll(2)*orb_rot_x - ll(1)*orb_rot_y)
00384       / 3. / lapconf_tot / lapconf_tot / pow(rr,4.)
00385       + 2.*mass*mass*pow(confo_tot,14.)*pow(lapconf_auto_bh,4.)
00386       * (3.*(1.+2.*mass/rr)*(orb_rot_x*orb_rot_x+orb_rot_y*orb_rot_y)
00387          -2.*(1.+3.*mass/rr)*(ll(2)*orb_rot_x-ll(1)*orb_rot_y)
00388          *(ll(2)*orb_rot_x-ll(1)*orb_rot_y))
00389       / 3. / lapconf_tot / lapconf_tot / pow(rr,4.) ;
00390 
00391     taij_quad_tot_rot.std_spectral_base() ;
00392     taij_quad_tot_rot.inc_dzpuis(4) ;
00393 
00394     taij_quad_tot_bh = 8.*mass*mass*pow(confo_tot,14.)
00395       * pow(lapconf_auto_bh,8.) * (2.+3.*mass/rr) * (2.+3.*mass/rr)
00396       / 3. / lapconf_tot / lapconf_tot / pow(rr,4.) ;
00397 
00398     taij_quad_tot_bh.std_spectral_base() ;
00399     taij_quad_tot_bh.inc_dzpuis(4) ;
00400 
00401     taij_quad_tot = taij_quad_tot_rs + taij_quad_tot_rot
00402       + taij_quad_tot_bh ;
00403     taij_quad_tot.std_spectral_base() ;
00404 
00405     }
00406     else { // Isotropic coordinates with the maximal slicing
00407 
00408         // Sets C/M^2 for each case of the lapse boundary condition
00409         // --------------------------------------------------------
00410         double cc ;
00411 
00412     if (bc_lapconf_nd) {  // Neumann boundary condition
00413         if (bc_lapconf_fs) {  // First condition
00414             // d(\alpha \psi)/dr = 0
00415             // ---------------------
00416             cc = 2. * (sqrt(13.) - 1.) / 3. ;
00417         }
00418         else {  // Second condition
00419             // d(\alpha \psi)/dr = (\alpha \psi)/(2 rah)
00420             // -----------------------------------------
00421             cc = 4. / 3. ;
00422         }
00423     }
00424     else {  // Dirichlet boundary condition
00425         if (bc_lapconf_fs) {  // First condition
00426             // (\alpha \psi) = 1/2
00427             // -------------------
00428             cout << "!!!!! WARNING: Not yet prepared !!!!!" << endl ;
00429         abort() ;
00430         }
00431         else {  // Second condition
00432             // (\alpha \psi) = 1/sqrt(2.) \psi_KS
00433             // ----------------------------------
00434             cout << "!!!!! WARNING: Not yet prepared !!!!!" << endl ;
00435         abort() ;
00436         //          cc = 2. * sqrt(2.) ;
00437         }
00438     }
00439 
00440     Scalar r_are(mp) ;
00441     r_are = r_coord(bc_lapconf_nd, bc_lapconf_fs) ;
00442     r_are.std_spectral_base() ;
00443 
00444         // Computation of \tilde{A}^{ij}
00445         // -----------------------------
00446 
00447     Sym_tensor flat_taij(mp, CON, mp.get_bvect_cart()) ;
00448     flat_taij.set_etat_qcq() ;
00449 
00450     for (int i=1; i<=3; i++) {
00451         for (int j=1; j<=3; j++) {
00452             flat_taij.set(i,j) = shift_auto_rs(j).deriv(i)
00453           + shift_auto_rs(i).deriv(j) + d_shift_comp(i,j)
00454           + d_shift_comp(j,i)
00455           - 2. * divshift % flat.con()(i,j) / 3. ;
00456         }
00457     }
00458 
00459     flat_taij.std_spectral_base() ;
00460 
00461     taij_tot_rs = 0.5 * pow(confo_tot, 7.) * flat_taij / lapconf_tot ;
00462 
00463     taij_tot_rs.std_spectral_base() ;
00464     taij_tot_rs.annule_domain(0) ;
00465 
00466     if (taij_tot_rs(1,2).get_etat() == ETATQCQ) {
00467       for (int i=1; i<=3; i++) {
00468         for (int j=1; j<=3; j++) {
00469           taij_tot_rs.set(i,j).raccord(1) ;
00470         }
00471       }
00472     }
00473 
00474     taij_tot_bh.set_etat_qcq() ;
00475 
00476     for (int i=1; i<=3; i++) {
00477         for (int j=1; j<=3; j++) {
00478             taij_tot_bh.set(i,j) = pow(confo_tot,7.)*mass*mass*cc
00479           * sqrt(1. - 2.*mass/r_are/rr + cc*cc*pow(mass/r_are/rr,4.))
00480           * (flat.con()(i,j) - 3.*ll(i)*ll(j)) / lapconf_tot
00481           / pow(r_are*rr,3.) ;
00482         }
00483     }
00484 
00485     taij_tot_bh.std_spectral_base() ;
00486     taij_tot_bh.annule_domain(0) ;
00487 
00488     for (int i=1; i<=3; i++) {
00489       for (int j=1; j<=3; j++) {
00490         taij_tot_bh.set(i,j).raccord(1) ;
00491       }
00492     }
00493 
00494     taij_tot_bh.inc_dzpuis(2) ;
00495 
00496     taij_tot = taij_tot_rs + taij_tot_bh ;
00497 
00498     taij_tot.std_spectral_base() ;
00499     taij_tot.annule_domain(0) ;
00500 
00501     for (int i=1; i<=3; i++) {
00502       for (int j=1; j<=3; j++) {
00503         taij_tot.set(i,j).raccord(1) ;
00504       }
00505     }
00506 
00507     for (int i=1; i<=3; i++) {
00508         for (int j=1; j<=3; j++) {
00509         taij_tot_rot.set(i,j) = 0. ;
00510         }
00511     }
00512     taij_tot_rot.std_spectral_base() ;
00513 
00514     // Computation of \tilde{A}_{BH}^{ij}
00515     // ----------------------------------
00516 
00517     Scalar divshift_auto(mp) ;
00518     divshift_auto = shift_auto_rs(1).deriv(1)
00519       + shift_auto_rs(2).deriv(2) + shift_auto_rs(3).deriv(3) ;
00520     divshift_auto.std_spectral_base() ;
00521 
00522     Sym_tensor flat_taij_auto_rs(mp, CON, mp.get_bvect_cart()) ;
00523     flat_taij_auto_rs.set_etat_qcq() ;
00524 
00525     for (int i=1; i<=3; i++) {
00526         for (int j=1; j<=3; j++) {
00527             flat_taij_auto_rs.set(i,j) = shift_auto_rs(j).deriv(i)
00528           + shift_auto_rs(i).deriv(j)
00529           - 2. * divshift_auto % flat.con()(i,j) / 3. ;
00530         }
00531     }
00532 
00533     flat_taij_auto_rs.std_spectral_base() ;
00534 
00535     taij_auto_rs = 0.5 * pow(confo_tot, 7.) * flat_taij_auto_rs
00536       / lapconf_tot ;
00537 
00538     taij_auto_rs.std_spectral_base() ;
00539     taij_auto_rs.annule_domain(0) ;
00540 
00541     if (taij_auto_rs(1,2).get_etat() == ETATQCQ) {
00542       for (int i=1; i<=3; i++) {
00543         for (int j=1; j<=3; j++) {
00544           taij_auto_rs.set(i,j).raccord(1) ;
00545         }
00546       }
00547     }
00548 
00549     taij_auto = taij_auto_rs + taij_tot_bh ;
00550 
00551     taij_auto.std_spectral_base() ;
00552     taij_auto.annule_domain(0) ;
00553 
00554     for (int i=1; i<=3; i++) {
00555       for (int j=1; j<=3; j++) {
00556         taij_auto.set(i,j).raccord(1) ;
00557       }
00558     }
00559 
00560     // Computation of \tilde{A}_{NS}^{ij}
00561     // ----------------------------------
00562 
00563     Scalar divshift_comp(mp) ;
00564     divshift_comp = d_shift_comp(1,1) + d_shift_comp(2,2)
00565       + d_shift_comp(3,3) ;
00566     divshift_comp.std_spectral_base() ;
00567 
00568     Sym_tensor flat_taij_comp(mp, CON, mp.get_bvect_cart()) ;
00569     flat_taij_comp.set_etat_qcq() ;
00570 
00571     for (int i=1; i<=3; i++) {
00572         for (int j=1; j<=3; j++) {
00573             flat_taij_comp.set(i,j) = d_shift_comp(i,j)
00574           + d_shift_comp(j,i)
00575           - 2. * divshift_comp % flat.con()(i,j) / 3. ;
00576         }
00577     }
00578 
00579     flat_taij_comp.std_spectral_base() ;
00580 
00581     taij_comp = 0.5 * pow(confo_comp+0.5, 7.) * flat_taij_comp
00582       / (lapconf_comp+0.5) ;
00583 
00584     taij_comp.std_spectral_base() ;
00585     taij_comp.annule_domain(0) ;
00586 
00587     if (taij_comp(1,2).get_etat() == ETATQCQ) {
00588       for (int i=1; i<=3; i++) {
00589         for (int j=1; j<=3; j++) {
00590           taij_comp.set(i,j).raccord(1) ;
00591         }
00592       }
00593     }
00594 
00595     // Computation of \tilde{A}^{ij} \tilde{A}_{ij}
00596     // --------------------------------------------
00597 
00598     Sym_tensor flat_dshift(mp, COV, mp.get_bvect_cart()) ;
00599     flat_dshift.set_etat_qcq() ;
00600 
00601     for (int i=1; i<=3; i++) {
00602         for (int j=1; j<=3; j++) {
00603             flat_dshift.set(i,j) =
00604           flat.cov()(j,1)*(shift_auto_rs(1).deriv(i)
00605                    + d_shift_comp(i,1))
00606           + flat.cov()(j,2)*(shift_auto_rs(2).deriv(i)
00607                      + d_shift_comp(i,2))
00608           + flat.cov()(j,3)*(shift_auto_rs(3).deriv(i)
00609                      + d_shift_comp(i,3))
00610           + flat.cov()(i,1)*(shift_auto_rs(1).deriv(j)
00611                      + d_shift_comp(j,1))
00612           + flat.cov()(i,2)*(shift_auto_rs(2).deriv(j)
00613                      + d_shift_comp(j,2))
00614           + flat.cov()(i,3)*(shift_auto_rs(3).deriv(j)
00615                      + d_shift_comp(j,3))
00616           - 2. * divshift * flat.cov()(i,j) / 3. ;
00617         }
00618     }
00619 
00620     Sym_tensor taij_down_rs(mp, COV, mp.get_bvect_cart()) ;
00621     taij_down_rs.set_etat_qcq() ;
00622 
00623     taij_down_rs = 0.5 * pow(confo_tot, 7.) * flat_dshift / lapconf_tot ;
00624 
00625     taij_down_rs.std_spectral_base() ;
00626     taij_down_rs.annule_domain(0) ;
00627 
00628     Sym_tensor taij_down_bh(mp, COV, mp.get_bvect_cart()) ;
00629     taij_down_bh.set_etat_qcq() ;
00630 
00631     for (int i=1; i<=3; i++) {
00632         for (int j=1; j<=3; j++) {
00633             taij_down_bh.set(i,j) = pow(confo_tot,7.)*mass*mass*cc
00634           * sqrt(1. - 2.*mass/r_are/rr + cc*cc*pow(mass/r_are/rr,4.))
00635           * (flat.cov()(i,j) - 3.*ll(i)%ll(j)) / lapconf_tot
00636           / pow(r_are*rr,3.) ;
00637         }
00638     }
00639     taij_down_bh.std_spectral_base() ;
00640     taij_down_bh.annule_domain(0) ;
00641 
00642     for (int i=1; i<=3; i++) {
00643       for (int j=1; j<=3; j++) {
00644         taij_down_bh.set(i,j).raccord(1) ;
00645       }
00646     }
00647 
00648     taij_down_bh.inc_dzpuis(2) ;
00649 
00650     Scalar taij_quad_rstot(mp) ;
00651     taij_quad_rstot = 0. ;
00652 
00653     for (int i=1; i<=3; i++) {
00654         for (int j=1; j<=3; j++) {
00655             taij_quad_rstot += taij_down_rs(i,j) % taij_tot(i,j) ;
00656         }
00657     }
00658     taij_quad_rstot.std_spectral_base() ;
00659 
00660     Scalar taij_quad_rsbh(mp) ;
00661     taij_quad_rsbh = 0. ;
00662 
00663     for (int i=1; i<=3; i++) {
00664         for (int j=1; j<=3; j++) {
00665             taij_quad_rsbh += taij_tot_rs(i,j) % taij_down_bh(i,j) ;
00666         }
00667     }
00668     taij_quad_rsbh.std_spectral_base() ;
00669 
00670     taij_quad_tot_rs = taij_quad_rstot + taij_quad_rsbh ;
00671     taij_quad_tot_rs.std_spectral_base() ;
00672 
00673     taij_quad_tot_rot = 0. ;
00674     taij_quad_tot_rot.std_spectral_base() ;
00675 
00676     taij_quad_tot_bh = 6.*pow(confo_tot,14.)*pow(mass*mass*cc,2.)
00677       * (1. - 2.*mass/r_are/rr + cc*cc*pow(mass/r_are/rr,4.))
00678       / lapconf_tot / lapconf_tot / pow(r_are*rr, 6.) ;
00679     taij_quad_tot_bh.std_spectral_base() ;
00680     taij_quad_tot_bh.annule_domain(0) ;
00681     taij_quad_tot_bh.raccord(1) ;
00682 
00683     taij_quad_tot_bh.inc_dzpuis(4) ;
00684 
00685     taij_quad_tot = taij_quad_tot_rs + taij_quad_tot_bh ;
00686     taij_quad_tot.std_spectral_base() ;
00687     taij_quad_tot.annule_domain(0) ;
00688     taij_quad_tot.raccord(1) ;
00689 
00690     // -------------------------
00691     Scalar taij_quad_auto1(mp) ;
00692     taij_quad_auto1 = 0. ;
00693     for (int i=1; i<=3; i++) {
00694         for (int j=1; j<=3; j++) {
00695             taij_quad_auto1 += taij_auto_rs(i,j)
00696           * (taij_down_rs(i,j)
00697              + pow(confo_tot/(confo_comp+0.5),7.)*(lapconf_comp+0.5)
00698              * taij_comp(i,j) / lapconf_tot) ;
00699         }
00700     }
00701     taij_quad_auto1.std_spectral_base() ;
00702 
00703     Scalar taij_quad_auto2(mp) ;
00704     taij_quad_auto2 = 0. ;
00705     for (int i=1; i<=3; i++) {
00706         for (int j=1; j<=3; j++) {
00707             taij_quad_auto2 += taij_tot_bh(i,j) % taij_down_rs(i,j) ;
00708         }
00709     }
00710     taij_quad_auto2.std_spectral_base() ;
00711 
00712     taij_quad_auto = taij_quad_auto1 + 2.*taij_quad_auto2 ;
00713     taij_quad_auto.std_spectral_base() ;
00714     taij_quad_auto.annule_domain(0) ;
00715     if (taij_quad_auto.get_etat() == ETATQCQ) {
00716         taij_quad_auto.raccord(1) ;
00717     }
00718 
00719     // Computation of \tilde{A}_{NS}^{ij} \tilde{A}^{NS}_{ij}
00720     // ------------------------------------------------------
00721 
00722     taij_quad_comp = 0. ;
00723     for (int i=1; i<=3; i++) {
00724         for (int j=1; j<=3; j++) {
00725           taij_quad_comp += taij_comp(i,j) % taij_comp(i,j) ;
00726         }
00727     }
00728     taij_quad_comp.std_spectral_base() ;
00729 
00730     }
00731 
00732     // The derived quantities are obsolete
00733     // -----------------------------------
00734 
00735     del_deriv() ;
00736 
00737 }

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