bin_ns_bh_kij.C

00001 /*
00002  *  Methods for computing the extrinsic curvature tensor for a Bin_ns_bh
00003  *
00004  */
00005 
00006 /*
00007  *   Copyright (c) 2002  Philippe Grandclement, Keisuke Taniguchi,
00008  *              Eric Gourgoulhon
00009  *
00010  *   This file is part of LORENE.
00011  *
00012  *   LORENE is free software; you can redistribute it and/or modify
00013  *   it under the terms of the GNU General Public License version 2
00014  *   as published by the Free Software Foundation.
00015  *
00016  *   LORENE is distributed in the hope that it will be useful,
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  *   GNU General Public License for more details.
00020  *
00021  *   You should have received a copy of the GNU General Public License
00022  *   along with LORENE; if not, write to the Free Software
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00024  *
00025  */
00026 
00027 char bin_ns_bh_kij_C[] = "$Header: /cvsroot/Lorene/C++/Source/Bin_ns_bh/bin_ns_bh_kij.C,v 1.9 2008/09/26 08:44:04 p_grandclement Exp $" ;
00028 
00029 /*
00030  * $Id: bin_ns_bh_kij.C,v 1.9 2008/09/26 08:44:04 p_grandclement Exp $
00031  * $Log: bin_ns_bh_kij.C,v $
00032  * Revision 1.9  2008/09/26 08:44:04  p_grandclement
00033  * Mixted binaries with non vanishing spin
00034  *
00035  * Revision 1.8  2008/08/19 06:41:59  j_novak
00036  * Minor modifications to avoid warnings with gcc 4.3. Most of them concern
00037  * cast-type operations, and constant strings that must be defined as const char*
00038  *
00039  * Revision 1.7  2007/04/26 14:14:59  f_limousin
00040  * The function fait_tkij now have default values for bound_nn and lim_nn
00041  *
00042  * Revision 1.6  2007/04/26 13:16:23  f_limousin
00043  * Correction of an error in the computation of grad_n_tot and grad_psi_tot
00044  *
00045  * Revision 1.5  2007/04/24 20:13:53  f_limousin
00046  * Implementation of Dirichlet and Neumann BC for the lapse
00047  *
00048  * Revision 1.4  2005/12/01 12:59:10  p_grandclement
00049  * Files for bin_ns_bh project
00050  *
00051  * Revision 1.3  2005/08/29 15:10:15  p_grandclement
00052  * Addition of things needed :
00053  *   1) For BBH with different masses
00054  *   2) Provisory files for the mixted binaries (Bh and NS) : THIS IS NOT
00055  *   WORKING YET !!!
00056  *
00057  * Revision 1.2  2004/05/27 12:41:00  p_grandclement
00058  * correction of some shadowed variables
00059  *
00060  * Revision 1.1  2003/02/13 16:40:25  p_grandclement
00061  * Addition of various things for the Bin_ns_bh project, non of them being
00062  * completely tested
00063  *
00064  *
00065  * $Header: /cvsroot/Lorene/C++/Source/Bin_ns_bh/bin_ns_bh_kij.C,v 1.9 2008/09/26 08:44:04 p_grandclement Exp $
00066  *
00067  */
00068 
00069 // C++ headers
00070 #include "headcpp.h"
00071 
00072 // C headers
00073 #include <math.h>
00074 
00075 // Lorene headers
00076 #include "bin_ns_bh.h"
00077 #include "proto.h"
00078 #include "utilitaires.h"
00079 
00080 #include "graphique.h"
00087 void Et_bin_nsbh::fait_taij_auto() {
00088 
00089   Tenseur copie_shift (shift_auto) ;
00090   copie_shift.change_triad(mp.get_bvect_cart()) ;
00091 
00092   if (shift_auto.get_etat() == ETATZERO)
00093       taij_auto.set_etat_zero() ;
00094   else {
00095     Tenseur grad (copie_shift.gradient()) ;
00096     Tenseur trace (contract (grad,0, 1)) ;
00097     
00098     taij_auto.set_triad(mp.get_bvect_cart()) ;
00099     taij_auto.set_etat_qcq() ;
00100     for (int i=0 ; i<3 ; i++)
00101       for (int j=i ; j<3 ; j++)
00102     taij_auto.set(i, j) = grad(i, j)+grad(j, i) ;
00103       for (int i=0 ; i<3 ; i++)
00104       taij_auto.set(i, i) -= 2./3.*trace() ;
00105     }
00106 
00107   taij_auto.change_triad(ref_triad) ;
00108 }
00109 
00110 void Bin_ns_bh::fait_decouple () {
00111 
00112   int nz_bh = hole.mp.get_mg()->get_nzone() ;
00113   int nz_ns = star.mp.get_mg()->get_nzone() ;
00114   
00115   // On determine R_limite (pour le moment en tout cas...) :
00116   double distance = star.mp.get_ori_x()-hole.mp.get_ori_x() ;
00117   double lim_ns = distance/2. ;
00118   double lim_bh = distance/2. ;
00119   double int_ns = lim_ns/3. ;
00120   double int_bh = lim_bh/3. ;
00121  
00122   // Les fonctions totales :
00123   Cmp decouple_ns (star.mp) ;
00124   decouple_ns.allocate_all() ;
00125   Cmp decouple_bh (hole.mp) ;
00126   decouple_bh.allocate_all() ;
00127   
00128   Mtbl xabs_ns (star.mp.xa) ;
00129   Mtbl yabs_ns (star.mp.ya) ;
00130   Mtbl zabs_ns (star.mp.za) ;
00131   
00132   Mtbl xabs_bh (hole.mp.xa) ;
00133   Mtbl yabs_bh (hole.mp.ya) ;
00134   Mtbl zabs_bh (hole.mp.za) ;
00135   
00136   double xabs, yabs, zabs, air_ns, air_bh, theta, phi ;
00137   
00138   // On boucle sur les autres zones :
00139   for (int l=0 ; l<nz_ns ; l++) {
00140     int nr = star.mp.get_mg()->get_nr (l) ;
00141     
00142     if (l==nz_ns-1)
00143       nr -- ;
00144     
00145     int np = star.mp.get_mg()->get_np (l) ;
00146     int nt = star.mp.get_mg()->get_nt (l) ;
00147     
00148     for (int k=0 ; k<np ; k++)
00149       for (int j=0 ; j<nt ; j++)
00150     for (int i=0 ; i<nr ; i++) {
00151       
00152       xabs = xabs_ns (l, k, j, i) ;
00153       yabs = yabs_ns (l, k, j, i) ;
00154       zabs = zabs_ns (l, k, j, i) ;
00155       
00156       // les coordonnees du point :
00157       star.mp.convert_absolute 
00158         (xabs, yabs, zabs, air_ns, theta, phi) ;
00159       hole.mp.convert_absolute 
00160         (xabs, yabs, zabs, air_bh, theta, phi) ;
00161       
00162       if (air_ns <= lim_ns)
00163         if (air_ns < int_ns)
00164           decouple_ns.set(l, k, j, i) = 1 ;
00165         else
00166           decouple_ns.set(l, k, j, i) = 
00167         0.5*pow(cos((air_ns-int_ns)*M_PI/2./(lim_ns-int_ns)), 2.)+0.5
00168          ;
00169       else 
00170         if (air_bh <= lim_bh)
00171           if (air_bh < int_bh)
00172         decouple_ns.set(l, k, j, i) = 0 ;
00173           else 
00174         decouple_ns.set(l, k, j, i) = 0.5*
00175           pow(sin((air_bh-int_bh)*M_PI/2./(lim_bh-int_bh)), 2.)
00176            ;
00177         else
00178           // On est loin des deux trous :
00179           decouple_ns.set(l, k, j, i) = 0.5 ;
00180     }
00181     
00182     // Cas infini :
00183     if (l==nz_ns-1)
00184       for (int k=0 ; k<np ; k++)
00185     for (int j=0 ; j<nt ; j++)
00186       decouple_ns.set(nz_ns-1, k, j, nr) = 0.5 ;
00187   }
00188   
00189   for (int l=0 ; l<nz_bh ; l++) {
00190     int nr = hole.mp.get_mg()->get_nr (l) ;
00191     
00192     if (l==nz_bh-1)
00193       nr -- ;
00194     
00195     int np = hole.mp.get_mg()->get_np (l) ;
00196     int nt = hole.mp.get_mg()->get_nt (l) ;
00197     
00198     for (int k=0 ; k<np ; k++)
00199       for (int j=0 ; j<nt ; j++)
00200     for (int i=0 ; i<nr ; i++) {
00201       
00202       xabs = xabs_bh (l, k, j, i) ;
00203       yabs = yabs_bh (l, k, j, i) ;
00204       zabs = zabs_bh (l, k, j, i) ;
00205       
00206       // les coordonnees du point  :
00207       star.mp.convert_absolute 
00208         (xabs, yabs, zabs, air_ns, theta, phi) ;
00209       hole.mp.convert_absolute 
00210         (xabs, yabs, zabs, air_bh, theta, phi) ;
00211       
00212       if (air_bh <= lim_bh)
00213         if (air_bh < int_bh)
00214           decouple_bh.set(l, k, j, i) = 1 ;
00215         else
00216           decouple_bh.set(l, k, j, i) = 0.5*
00217         pow(cos((air_bh-int_bh)*M_PI/2./(lim_bh-int_bh)), 2.)+0.5 ;
00218       else 
00219         if (air_ns <= lim_ns)
00220           if (air_ns < int_ns)
00221         decouple_bh.set(l, k, j, i) = 0 ;
00222           else
00223         decouple_bh.set(l, k, j, i) = 0.5*
00224           pow(sin((air_ns-int_ns)*M_PI/2./(lim_ns-int_ns)), 2.) ;
00225       
00226         else
00227           // On est loin des deux trous :
00228           decouple_bh.set(l, k, j, i) = 0.5 ;
00229     }
00230     
00231     // Cas infini :
00232     if (l==nz_bh-1)
00233       for (int k=0 ; k<np ; k++)
00234     for (int j=0 ; j<nt ; j++)
00235       decouple_bh.set(nz_bh-1, k, j, nr) = 0.5 ;
00236   }
00237   
00238   decouple_ns.std_base_scal() ;
00239   decouple_bh.std_base_scal() ;
00240   
00241   star.decouple = decouple_ns ;
00242   hole.decouple = decouple_bh ;
00243 }
00244 
00245 //********************************************************
00246 //calcul de kij total. (la regularisation ayant ete faite)
00247 //********************************************************
00248 void Bin_ns_bh::fait_tkij (int bound_nn, double lim_nn) {
00249     
00250   fait_decouple() ;
00251   
00252   double norme_hole = 0 ;
00253   double norme_star = 0 ;
00254   
00255   for (int i=0 ; i<3 ; i++) {
00256       norme_hole += max(norme(hole.get_shift_auto()(i))) ;
00257       norme_star += max(norme(star.get_shift_auto()(i))) ;
00258   }
00259   
00260 #ifndef NDEBUG
00261   bool zero_shift_hole = (norme_hole <1e-14) ? true : false ; 
00262 #endif
00263   bool zero_shift_star = (norme_star <1e-14) ? true : false ; 
00264    
00265   assert (zero_shift_hole == zero_shift_star) ;
00266 
00267   if (zero_shift_star == true) {
00268     hole.tkij_tot.set_etat_zero() ;
00269     hole.tkij_auto.set_etat_zero() ;
00270     
00271     hole.taij_tot.set_etat_zero() ;
00272     hole.taij_auto.set_etat_zero() ;
00273     hole.taij_comp.set_etat_zero() ;
00274 
00275     star.tkij_auto.set_etat_zero() ;
00276     star.tkij_comp.set_etat_zero() ;
00277     star.akcar_comp.set_etat_zero() ;
00278     star.akcar_auto.set_etat_zero() ;
00279   }
00280   else {
00281 
00282     if (bound_nn < 0){
00283       int nnt = hole.mp.get_mg()->get_nt(1) ;
00284       int nnp = hole.mp.get_mg()->get_np(1) ;
00285       
00286       for (int k=0; k<nnp; k++)
00287     for (int j=0; j<nnt; j++){
00288       if (fabs((hole.n_auto+hole.n_comp)()(1, k, j , 0)) < 1e-2){
00289         bound_nn = 0 ;
00290         lim_nn = 0. ;
00291         break ;
00292       }
00293     }
00294     }  
00295     
00296     if (bound_nn != 0 || lim_nn != 0){
00297       
00298       hole.fait_taij_auto () ;  
00299       star.fait_taij_auto() ;
00300 
00301       // On trouve les trucs du compagnon
00302       hole.taij_comp.set_etat_qcq() ;
00303       // Pas de membre pour NS
00304       Tenseur_sym ns_taij_comp (star.mp, 2, CON, ref_triad) ;
00305       ns_taij_comp.set_etat_qcq() ;
00306       
00307       Tenseur_sym copie_ns (star.taij_auto) ;
00308       copie_ns.dec2_dzpuis() ;
00309       Tenseur_sym copie_bh (hole.taij_auto) ;
00310       copie_bh.dec2_dzpuis() ;
00311       
00312       // Les importations :
00313       if (hole.taij_auto.get_etat() == ETATZERO)
00314     ns_taij_comp.set_etat_zero() ;
00315       else {
00316     ns_taij_comp.set(0, 0).import(copie_bh(0, 0)) ;
00317     ns_taij_comp.set(0, 1).import(copie_bh(0, 1)) ;
00318     ns_taij_comp.set(0, 2).import(copie_bh(0, 2)) ;
00319     ns_taij_comp.set(1, 1).import(copie_bh(1, 1)) ;
00320     ns_taij_comp.set(1, 2).import(copie_bh(1, 2)) ;
00321     ns_taij_comp.set(2, 2).import(copie_bh(2, 2)) ;
00322     ns_taij_comp.set_triad(*copie_bh.get_triad()) ;
00323     ns_taij_comp.change_triad(star.ref_triad) ;
00324       }
00325       
00326       if (star.taij_auto.get_etat() == ETATZERO)
00327     hole.taij_comp.set_etat_zero() ;
00328       else {
00329     hole.taij_comp.set(0, 0).import(copie_ns(0, 0)) ;
00330     hole.taij_comp.set(0, 1).import(copie_ns(0, 1)) ;
00331     hole.taij_comp.set(0, 2).import(copie_ns(0, 2)) ;
00332     hole.taij_comp.set(1, 1).import(copie_ns(1, 1)) ;
00333     hole.taij_comp.set(1, 2).import(copie_ns(1, 2)) ;
00334     hole.taij_comp.set(2, 2).import(copie_ns(2, 2)) ;
00335     hole.taij_comp.set_triad(*copie_ns.get_triad()) ;
00336     hole.taij_comp.change_triad (hole.mp.get_bvect_cart()) ;
00337       }
00338       
00339       hole.taij_comp.set_std_base() ;
00340       ns_taij_comp.set_std_base() ;
00341       hole.taij_comp.inc2_dzpuis() ;
00342       ns_taij_comp.inc2_dzpuis() ;
00343       
00344       // Et enfin les trucs totaux...
00345       hole.taij_tot = hole.taij_auto + hole.taij_comp ;
00346       Tenseur_sym ns_taij_tot (star.taij_auto + ns_taij_comp) ;
00347       star.taij_tot = ns_taij_tot ;
00348       
00349       // Computation of tkij
00350       star.tkij_tot.set_etat_qcq() ;
00351       star.tkij_auto.set_etat_qcq() ;
00352       star.tkij_comp.set_etat_qcq() ;
00353       hole.tkij_tot.set_etat_qcq() ;
00354       hole.tkij_auto.set_etat_qcq() ;
00355       
00356       for (int i = 0 ; i<3 ; i++)
00357     for (int j = i ; j<3 ; j++) {
00358       star.tkij_tot.set(i,j) = 0.5*star.taij_tot(i,j)/star.nnn() ;
00359       //star.tkij_auto.set(i,j) = 0.5*star.taij_tot(i,j)/star.nnn() ;
00360       //star.tkij_comp.set(i,j) = 0.5*ns_taij_comp(i,j)/star.nnn() ;
00361       hole.tkij_tot.set(i,j) = 0.5*hole.taij_tot(i,j)/hole.n_tot() ;
00362       //hole.tkij_auto.set(i,j) = 0.5*hole.taij_auto(i,j)/hole.n_tot() ;
00363     }
00364     
00365     for (int lig=0 ; lig<3 ; lig++)
00366       for (int col=lig ; col<3 ; col++) {
00367     star.tkij_auto.set(lig, col) = star.tkij_tot(lig, col)*
00368       star.decouple ;
00369     star.tkij_comp.set(lig, col) = star.tkij_tot(lig, col)*
00370       (1-star.decouple) ;
00371     hole.tkij_auto.set(lig, col) = hole.tkij_tot(lig, col)*
00372       hole.decouple ;
00373       }
00374     star.tkij_auto.set_std_base() ;
00375     star.tkij_comp.set_std_base() ;
00376     hole.tkij_auto.set_std_base() ;
00377     }
00378     else {
00379       
00380       hole.tkij_tot.set_etat_qcq() ;
00381       star.tkij_tot.set_etat_qcq() ;
00382       
00383       // On construit a_ij a partir du shift ...
00384       // taij tot doit etre nul sur l'horizon.
00385       hole.fait_taij_auto () ;  
00386       star.fait_taij_auto() ;
00387       
00388       // On trouve les trucs du compagnon
00389       hole.taij_comp.set_etat_qcq() ;
00390       // Pas de membre pour NS
00391       Tenseur_sym ns_taij_comp (star.mp, 2, CON, ref_triad) ;
00392       ns_taij_comp.set_etat_qcq() ;
00393       
00394       Tenseur_sym copie_ns (star.taij_auto) ;
00395     copie_ns.dec2_dzpuis() ;
00396     Tenseur_sym copie_bh (hole.taij_auto) ;
00397     copie_bh.dec2_dzpuis() ;
00398     
00399     // Les importations :
00400     if (hole.taij_auto.get_etat() == ETATZERO)
00401       ns_taij_comp.set_etat_zero() ;
00402     else {
00403       ns_taij_comp.set(0, 0).import_asymy(copie_bh(0, 0)) ;
00404       ns_taij_comp.set(0, 1).import_symy(copie_bh(0, 1)) ;
00405       ns_taij_comp.set(0, 2).import_asymy(copie_bh(0, 2)) ;
00406       ns_taij_comp.set(1, 1).import_asymy(copie_bh(1, 1)) ;
00407       ns_taij_comp.set(1, 2).import_symy(copie_bh(1, 2)) ;
00408       ns_taij_comp.set(2, 2).import_asymy(copie_bh(2, 2)) ;
00409       ns_taij_comp.set_triad(*copie_bh.get_triad()) ;
00410       ns_taij_comp.change_triad(star.ref_triad) ;
00411     }
00412     
00413     if (star.taij_auto.get_etat() == ETATZERO)
00414       hole.taij_comp.set_etat_zero() ;
00415     else {
00416       hole.taij_comp.set(0, 0).import_asymy(copie_ns(0, 0)) ;
00417       hole.taij_comp.set(0, 1).import_symy(copie_ns(0, 1)) ;
00418       hole.taij_comp.set(0, 2).import_asymy(copie_ns(0, 2)) ;
00419       hole.taij_comp.set(1, 1).import_asymy(copie_ns(1, 1)) ;
00420       hole.taij_comp.set(1, 2).import_symy(copie_ns(1, 2)) ;
00421       hole.taij_comp.set(2, 2).import_asymy(copie_ns(2, 2)) ;
00422       hole.taij_comp.set_triad(*copie_ns.get_triad()) ;
00423       hole.taij_comp.change_triad (hole.mp.get_bvect_cart()) ;
00424     }
00425     
00426     hole.taij_comp.set_std_base() ;
00427     ns_taij_comp.set_std_base() ;
00428     hole.taij_comp.inc2_dzpuis() ;
00429     ns_taij_comp.inc2_dzpuis() ;
00430        
00431     // Et enfin les trucs totaux...
00432     hole.taij_tot = hole.taij_auto + hole.taij_comp ;
00433     Tenseur_sym ns_taij_tot (star.taij_auto + ns_taij_comp) ;
00434     star.taij_tot = ns_taij_tot ;
00435     
00436     int nz_ns = star.mp.get_mg()->get_nzone() ;
00437     Cmp ntot_ns (star.get_nnn()()) ;
00438     
00439     Cmp ntot_bh (hole.n_tot()) ;
00440     //des_coupe_z (ntot_bh, 0, -5, 0, -2.5, 2.5, "N") ;
00441     ntot_bh = division_xpun (ntot_bh, 0) ;
00442     ntot_bh.raccord(1) ;
00443 
00444     //des_coupe_z (ntot_bh, 0, -5, 0, -2.5, 2.5, "N/ (x+1)") ;
00445     
00446     // Boucle sur les composantes :
00447     for (int lig = 0 ; lig<3 ; lig++)
00448       for (int col = lig ; col<3 ; col++) {
00449     
00450     // Dans la grille du BH (pas de pb sauf pres horizon :
00451     Cmp auxi_bh (hole.taij_tot(lig, col)/2.) ;
00452     auxi_bh.dec2_dzpuis() ;
00453     auxi_bh = division_xpun (auxi_bh, 0) ;
00454     
00455     //des_coupe_z (auxi_bh, 0, -10, 20, -7, 7, "Aij/ (x+1)") ;
00456     auxi_bh = auxi_bh / ntot_bh ;
00457     auxi_bh.raccord(1) ;
00458 
00459     // Pour la NS on doit faire attention a pas etre pres du trou
00460     Cmp auxi_ns (star.mp) ;
00461     auxi_ns.allocate_all() ;
00462     
00463     // copie :
00464     Cmp copie_ns_bis (ns_taij_tot(lig, col)) ;
00465     copie_ns_bis.dec2_dzpuis() ;
00466     
00467     // Double le rayon limite :
00468     double lim_bh = hole.mp.get_alpha()[1] + hole.mp.get_beta()[1] ;
00469     
00470     Mtbl xabs_ns (star.mp.xa) ;
00471     Mtbl yabs_ns (star.mp.ya) ;
00472     Mtbl zabs_ns (star.mp.za) ;
00473     
00474     double xabs, yabs, zabs, air, theta, phi ;
00475     
00476     // On boucle sur les zones
00477     for (int l=0 ; l<nz_ns ; l++) {
00478       
00479       int nr = star.mp.get_mg()->get_nr (l) ;
00480       
00481       if (l==nz_ns-1)
00482         nr -- ;
00483       
00484       int np = star.mp.get_mg()->get_np (l) ;
00485       int nt = star.mp.get_mg()->get_nt (l) ;
00486       
00487       for (int k=0 ; k<np ; k++)
00488         for (int j=0 ; j<nt ; j++)
00489           for (int i=0 ; i<nr ; i++) {
00490         
00491         xabs = xabs_ns (l, k, j, i) ;
00492         yabs = yabs_ns (l, k, j, i) ;
00493         zabs = zabs_ns (l, k, j, i) ;
00494         
00495         // les coordonnees du point vis a vis BH :
00496         hole.mp.convert_absolute 
00497           (xabs, yabs, zabs, air, theta, phi) ;
00498         
00499         if (air >= lim_bh)
00500           // On est loin du trou 2 : pas de pb :
00501           auxi_ns.set(l, k, j, i) = 
00502             copie_ns_bis(l, k, j, i) / ntot_ns (l, k, j, i)/2. ;
00503         else 
00504           // On est pres du trou (faut pas tomber dedans !) :
00505           auxi_ns.set(l, k, j, i) =  auxi_bh.val_point (air, theta, phi) ;
00506           }
00507       
00508       // Cas infini :
00509       if (l==nz_ns-1)
00510         for (int k=0 ; k<np ; k++)
00511           for (int j=0 ; j<nt ; j++)
00512         auxi_ns.set(nz_ns-1, k, j, nr) = 0 ;
00513     }
00514     
00515     
00516     star.tkij_tot.set(lig, col) = auxi_ns ;
00517     hole.tkij_tot.set(lig, col) = auxi_bh ;
00518       }
00519 
00520     star.tkij_tot.set_std_base() ;
00521     hole.tkij_tot.set_std_base() ;
00522     star.tkij_tot.inc2_dzpuis() ;
00523 
00524     hole.tkij_tot.inc2_dzpuis() ;
00525      
00526     //Cmp dessin_un (hole.get_tkij_tot()(0,0)) ;
00527     //des_coupe_z (dessin_un, 0, -10, 20, -7, 7, "Kij tot BH") ;
00528     //Cmp dessin_deux (ns_tkij_tot(0,0)) ;
00529     //des_coupe_z (dessin_deux, 0, -10, 20, -7, 7, "Kij tot NS") ;
00530     
00531     star.tkij_auto.set_etat_qcq() ;
00532     star.tkij_comp.set_etat_qcq() ;
00533     hole.tkij_auto.set_etat_qcq() ;
00534     
00535     for (int lig=0 ; lig<3 ; lig++)
00536       for (int col=lig ; col<3 ; col++) {
00537     star.tkij_auto.set(lig, col) = star.tkij_tot(lig, col)*
00538       star.decouple ;
00539     star.tkij_comp.set(lig, col) = star.tkij_tot(lig, col)*
00540       (1-star.decouple) ;
00541     hole.tkij_auto.set(lig, col) = hole.tkij_tot(lig, col)*
00542       hole.decouple ;
00543       }
00544     star.tkij_auto.set_std_base() ;
00545     star.tkij_comp.set_std_base() ;
00546     hole.tkij_auto.set_std_base() ;
00547 
00548     }
00549 
00550     // On doit mettre a jour les champs akcar de NS :
00551     star.akcar_auto.set_etat_qcq() ; 
00552     star.akcar_auto.set() = 0 ; 
00553     
00554     for (int i=0; i<3; i++)
00555       for (int j=0; j<3; j++)
00556     star.akcar_auto.set() += star.tkij_auto(i, j) % star.tkij_auto(i, j) ;
00557     
00558     star.akcar_auto.set_std_base() ;
00559     star.akcar_auto = star.a_car % star.akcar_auto ; 
00560     
00561     star.akcar_comp.set_etat_qcq() ;
00562     star.akcar_comp.set() = 0 ;
00563     
00564     for (int i=0; i<3; i++)
00565       for (int j=0; j<3; j++)
00566     star.akcar_comp.set() += star.tkij_auto(i, j) % star.tkij_comp(i, j) ;
00567     
00568     star.akcar_comp.set_std_base() ;
00569     star.akcar_comp = star.a_car % star.akcar_comp ;
00570   }
00571 }

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