map_af.C

00001 /*
00002  *  Methods of class Map_af
00003  *
00004  *   (see file map.h for documentation)
00005  *
00006  */
00007 
00008 /*
00009  *   Copyright (c) 1999-2003 Eric Gourgoulhon
00010  *   Copyright (c) 1999-2001 Philippe Grandclement
00011  *
00012  *   This file is part of LORENE.
00013  *
00014  *   LORENE is free software; you can redistribute it and/or modify
00015  *   it under the terms of the GNU General Public License as published by
00016  *   the Free Software Foundation; either version 2 of the License, or
00017  *   (at your option) any later version.
00018  *
00019  *   LORENE is distributed in the hope that it will be useful,
00020  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00021  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00022  *   GNU General Public License for more details.
00023  *
00024  *   You should have received a copy of the GNU General Public License
00025  *   along with LORENE; if not, write to the Free Software
00026  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00027  *
00028  */
00029 
00030 
00031 char map_af_C[] = "$Header: /cvsroot/Lorene/C++/Source/Map/map_af.C,v 1.16 2012/01/17 15:34:35 j_penner Exp $" ;
00032 
00033 /*
00034  * $Id: map_af.C,v 1.16 2012/01/17 15:34:35 j_penner Exp $
00035  * $Log: map_af.C,v $
00036  * Revision 1.16  2012/01/17 15:34:35  j_penner
00037  * *** empty log message ***
00038  *
00039  * Revision 1.15  2012/01/17 10:31:32  j_penner
00040  * added access to computational coordinate xi
00041  *
00042  * Revision 1.14  2008/09/29 13:23:51  j_novak
00043  * Implementation of the angular mapping associated with an affine
00044  * mapping. Things must be improved to take into account the domain index.
00045  *
00046  * Revision 1.13  2008/08/19 06:42:00  j_novak
00047  * Minor modifications to avoid warnings with gcc 4.3. Most of them concern
00048  * cast-type operations, and constant strings that must be defined as const char*
00049  *
00050  * Revision 1.12  2007/12/21 11:05:33  j_novak
00051  * Put back the constructor from a Mg3d and a Tbl (it had disappeared?).
00052  *
00053  * Revision 1.11  2007/12/20 09:11:04  jl_cornou
00054  * Correction of an error in op_sxpun about Jacobi(0,2) polynomials
00055  *
00056  * Revision 1.10  2007/12/11 15:28:14  jl_cornou
00057  * Jacobi(0,2) polynomials partially implemented
00058  *
00059  * Revision 1.9  2006/04/25 07:21:59  p_grandclement
00060  * Various changes for the NS_BH project
00061  *
00062  * Revision 1.8  2005/08/29 15:10:18  p_grandclement
00063  * Addition of things needed :
00064  *   1) For BBH with different masses
00065  *   2) Provisory files for the mixted binaries (Bh and NS) : THIS IS NOT
00066  *   WORKING YET !!!
00067  *
00068  * Revision 1.7  2004/12/02 09:33:06  p_grandclement
00069  * *** empty log message ***
00070  *
00071  * Revision 1.6  2004/03/25 10:29:23  j_novak
00072  * All LORENE's units are now defined in the namespace Unites (in file unites.h).
00073  *
00074  * Revision 1.5  2004/01/29 08:50:03  p_grandclement
00075  * Modification of Map::operator==(const Map&) and addition of the surface
00076  * integrales using Scalar.
00077  *
00078  * Revision 1.4  2003/10/15 10:33:11  e_gourgoulhon
00079  * Added new Coord's : drdt, srdrdp.
00080  *
00081  * Revision 1.3  2002/10/16 14:36:41  j_novak
00082  * Reorganization of #include instructions of standard C++, in order to
00083  * use experimental version 3 of gcc.
00084  *
00085  * Revision 1.2  2001/12/04 21:27:53  e_gourgoulhon
00086  *
00087  * All writing/reading to a binary file are now performed according to
00088  * the big endian convention, whatever the system is big endian or
00089  * small endian, thanks to the functions fwrite_be and fread_be
00090  *
00091  * Revision 1.1.1.1  2001/11/20 15:19:27  e_gourgoulhon
00092  * LORENE
00093  *
00094  * Revision 2.23  2001/02/28  11:04:05  eric
00095  * 1ere version testee de resize.
00096  *
00097  * Revision 2.22  2001/02/26  17:29:22  eric
00098  * Ajout de la fonction resize.
00099  *
00100  * Revision 2.21  2001/01/10  11:03:13  phil
00101  * ajout de homothetie interne
00102  *
00103  * Revision 2.20  2000/01/24  17:09:13  eric
00104  * suppression de la fonction convert.
00105  * suppression du constructeur par convertion d'un Map_et.
00106  * ajout du constructeur par conversion d'un Map.
00107  *
00108  * Revision 2.19  2000/01/24  16:42:48  eric
00109  * Dans operator=(const Map_af& ), appel de set_rot_phi.
00110  * Ajout de la fonction convert(const Map& ).
00111  *
00112  * Revision 2.18  1999/12/21  16:27:26  eric
00113  * Ajout du constructeur par conversion Map_af::Map_af(const Map_et&).
00114  * Ajout des fonctions Map_af::set_alpha et Map_af::set_beta.
00115  *
00116  * Revision 2.17  1999/12/17  09:14:43  eric
00117  * Amelioration de l'affichage.
00118  *
00119  * Revision 2.16  1999/12/06  13:12:23  eric
00120  * Introduction de la fonction homothetie.
00121  *
00122  * Revision 2.15  1999/11/25  16:28:53  eric
00123  * Le calcul des derivees partielles est transfere dans le fichier
00124  *   map_af_deriv.C.
00125  *
00126  * Revision 2.14  1999/11/24  14:32:54  eric
00127  * Les prototypes des fonctions de constructions des coords sont desormais
00128  *   dans map.h.
00129  * Introduction des fonctions get_alpha() et get_beta().
00130  * /
00131  *
00132  * Revision 2.13  1999/11/22  10:36:14  eric
00133  * Introduction de la fonction set_coord().
00134  * Fonction del_coord() rebaptisee reset_coord().
00135  *
00136  * Revision 2.12  1999/10/27  08:46:29  eric
00137  * Introduction de Cmp::va a la place de *(Cmp::c).
00138  *
00139  * Revision 2.11  1999/10/15  09:23:10  eric
00140  * *** empty log message ***
00141  *
00142  * Revision 2.10  1999/10/15  09:16:23  eric
00143  * Changement prototypes: const.
00144  *
00145  * Revision 2.9  1999/10/14  14:27:05  eric
00146  * Depoussierage.
00147  *
00148  * Revision 2.8  1999/04/12  12:54:05  phil
00149  * *** empty log message ***
00150  *
00151  * Revision 2.7  1999/04/12  12:09:03  phil
00152  * Mise a jour des bases dans dsdr()
00153  *
00154  * Revision 2.6  1999/03/04  13:11:48  eric
00155  * Ajout des Coord representant les derivees du changement de variable.
00156  *
00157  * Revision 2.5  1999/03/03  11:19:08  hyc
00158  * *** empty log message ***
00159  *
00160  *
00161  * $Header: /cvsroot/Lorene/C++/Source/Map/map_af.C,v 1.16 2012/01/17 15:34:35 j_penner Exp $
00162  *
00163  */
00164 
00165 // headers C
00166 #include <math.h>
00167 
00168 // headers Lorene
00169 #include "cmp.h"
00170 #include "utilitaires.h"
00171 #include "proto.h"
00172 #include "unites.h"
00173 
00174             //---------------//
00175             // Constructeurs //
00176             //---------------//
00177 
00178 // Constructor from a grid
00179 // -----------------------
00180 Map_af::Map_af(const Mg3d& mgrille, const double* bornes) : Map_radial(mgrille)
00181 {
00182     // Les coordonnees et les derivees du changement de variable
00183     set_coord() ; 
00184     
00185     // Les bornes
00186     int nzone = mg->get_nzone() ;
00187     
00188     alpha = new double[nzone] ;
00189     beta = new double[nzone] ;
00190 
00191     for (int l=0 ; l<nzone ; l++) {
00192     switch (mg->get_type_r(l)) {
00193         case RARE:  {
00194         alpha[l] = bornes[l+1] - bornes[l] ;
00195         beta[l] = bornes[l] ;
00196         break ; 
00197         }
00198         
00199         case FIN:   {
00200         alpha[l] = (bornes[l+1] - bornes[l]) * .5 ;
00201         beta[l] = (bornes[l+1] + bornes[l]) * .5 ;
00202         break ;
00203         }
00204           
00205         case FINJAC: {
00206         alpha[l] = (bornes[l+1] - bornes[l]) * .5 ;
00207         beta[l] = (bornes[l+1] + bornes[l]) * .5 ;
00208         break ;
00209         }
00210         
00211         case UNSURR: {
00212         double umax = 1./bornes[l] ;
00213         double umin = 1./bornes[l+1] ;
00214         alpha[l] = (umin - umax) * .5 ;  // u est une fonction decroissante
00215         beta[l] = (umin + umax) * .5 ;   //  de l'indice i en r
00216         break ;
00217         }
00218         
00219         default:    {
00220         cout << "Map_af::Map_af: unkown type_r ! " << endl ;
00221         abort () ;
00222         break ;
00223         }
00224         
00225     }
00226     }       // Fin de la boucle sur zone
00227 }
00228 
00229 // Constructor from a grid
00230 // -----------------------
00231 Map_af::Map_af(const Mg3d& mgrille, const Tbl& bornes) : Map_radial(mgrille)
00232 {
00233     // Les coordonnees et les derivees du changement de variable
00234     set_coord() ; 
00235     
00236     // Les bornes
00237     int nzone = mg->get_nzone() ;
00238     
00239     alpha = new double[nzone] ;
00240     beta = new double[nzone] ;
00241 
00242     for (int l=0 ; l<nzone ; l++) {
00243     switch (mg->get_type_r(l)) {
00244         case RARE:  {
00245         alpha[l] = bornes(l+1) - bornes(l) ;
00246         beta[l] = bornes(l) ;
00247         break ; 
00248         }
00249         
00250         case FIN:   {
00251         alpha[l] = (bornes(l+1) - bornes(l)) * .5 ;
00252         beta[l] = (bornes(l+1) + bornes(l)) * .5 ;
00253         break ;
00254         }
00255         
00256         case FINJAC: {
00257         alpha[l] = (bornes(l+1) - bornes(l)) * .5 ;
00258         beta[l] = (bornes(l+1) + bornes(l)) * .5 ;
00259         break ;
00260         }
00261         
00262         case UNSURR: {
00263             assert (l==nzone-1) ;
00264         double umax = 1./bornes(l) ;
00265         double umin = 0 ;
00266         alpha[l] = (umin - umax) * .5 ;  // u est une fonction decroissante
00267         beta[l] = (umin + umax) * .5 ;   //  de l'indice i en r
00268         break ;
00269         }
00270         
00271         default:    {
00272         cout << "Map_af::Map_af: unkown type_r ! " << endl ;
00273         abort () ;
00274         break ;
00275         }
00276         
00277     }
00278     }       // Fin de la boucle sur zone
00279 }
00280 
00281 // Copy constructor 
00282 // ----------------
00283 Map_af::Map_af(const Map_af& mp) : Map_radial(mp)
00284 {
00285     // Les coordonnees et les derivees du changement de variable
00286     set_coord() ; 
00287         
00288     // Les bornes
00289     int nzone = mg->get_nzone() ;
00290     
00291     alpha = new double[nzone] ;
00292     beta = new double[nzone] ;
00293 
00294     for (int l=0; l<nzone; l++){
00295     alpha[l] = mp.alpha[l] ; 
00296     beta[l] = mp.beta[l] ; 
00297     }
00298 }
00299     
00300 // Constructor from file
00301 // ---------------------
00302 Map_af::Map_af(const Mg3d& mgi, FILE* fd) : Map_radial(mgi, fd)
00303 {
00304     int nz = mg->get_nzone() ;
00305     alpha = new double[nz] ;
00306     beta = new double[nz] ;
00307     fread_be(alpha, sizeof(double), nz, fd) ;   
00308     fread_be(beta, sizeof(double), nz, fd) ;    
00309 
00310     // Les coordonnees et les derivees du changement de variable
00311     set_coord() ; 
00312 }
00313 
00314 
00315 
00316 // Constructor from a Map
00317 // -----------------------
00318 Map_af::Map_af(const Map& mpi) : Map_radial(*(mpi.get_mg()))
00319 {
00320     // Les coordonnees et les derivees du changement de variable
00321     set_coord() ; 
00322         
00323     // Les bornes
00324     int nz = mg->get_nzone() ; 
00325     
00326     alpha = new double[nz] ;
00327     beta = new double[nz] ;
00328 
00329     const Map_af* mp0 = dynamic_cast<const Map_af*>(&mpi) ;
00330     const Map_et* mp1 = dynamic_cast<const Map_et*>(&mpi) ;
00331      
00332     if( (mp0 == 0x0) && (mp1 == 0x0) ) {
00333     cout << "Map_af::Map_af(const Map& ) : unkown mapping type !" 
00334          << endl ; 
00335     abort() ; 
00336     }
00337 
00338     if (mp0 != 0x0) {
00339     assert( mp1 == 0x0 ) ; 
00340     for (int l=0; l<nz; l++){
00341         alpha[l] = mp0->get_alpha()[l] ; 
00342         beta[l] = mp0->get_beta()[l] ; 
00343     }
00344     }
00345 
00346     
00347     if (mp1 != 0x0) {
00348     assert( mp0 == 0x0 ) ; 
00349     for (int l=0; l<nz; l++){
00350         alpha[l] = mp1->get_alpha()[l] ; 
00351         beta[l] = mp1->get_beta()[l] ; 
00352     }
00353     }
00354 
00355     
00356     set_ori( mpi.get_ori_x(), mpi.get_ori_y(), mpi.get_ori_z() ) ; 
00357     
00358     set_rot_phi( mpi.get_rot_phi() ) ; 
00359     
00360 }
00361 
00362 
00363 
00364 
00365             //--------------//
00366             // Destructeurs //
00367             //--------------//
00368 
00369 Map_af::~Map_af() {
00370     delete [] alpha ;
00371     delete [] beta ;
00372 }
00373 
00374             //-------------//
00375             // Assignement //
00376             //-------------//
00377             
00378 // From another Map_af
00379 // -------------------
00380 
00381 void Map_af::operator=(const Map_af & mpi) {
00382     
00383     assert(mpi.mg == mg) ;
00384     
00385     set_ori( mpi.ori_x, mpi.ori_y, mpi.ori_z ) ; 
00386     
00387     set_rot_phi( mpi.rot_phi ) ; 
00388 
00389     for (int l = 0; l<mg->get_nzone(); l++) {
00390     alpha[l] = mpi.alpha[l] ; 
00391     beta[l] = mpi.beta[l] ; 
00392     }
00393 
00394     reset_coord() ;      
00395 }
00396     
00397 
00398 
00399 
00400         //-------------------------------------------------//
00401         //  Assignement of the Coord building functions    //
00402         //-------------------------------------------------//
00403         
00404 void Map_af::set_coord(){
00405 
00406     // ... Coord's introduced by the base class Map : 
00407     r.set(this, map_af_fait_r) ;
00408     tet.set(this, map_af_fait_tet) ;
00409     phi.set(this, map_af_fait_phi) ;
00410     sint.set(this, map_af_fait_sint) ;
00411     cost.set(this, map_af_fait_cost) ;
00412     sinp.set(this, map_af_fait_sinp) ;
00413     cosp.set(this, map_af_fait_cosp) ;
00414 
00415     x.set(this, map_af_fait_x) ;
00416     y.set(this, map_af_fait_y) ;
00417     z.set(this, map_af_fait_z) ;
00418 
00419     xa.set(this, map_af_fait_xa) ;
00420     ya.set(this, map_af_fait_ya) ;
00421     za.set(this, map_af_fait_za) ;
00422     
00423     // ... Coord's introduced by the base class Map_radial : 
00424     xsr.set(this, map_af_fait_xsr) ;
00425     dxdr.set(this, map_af_fait_dxdr) ;
00426     drdt.set(this, map_af_fait_drdt) ;
00427     stdrdp.set(this, map_af_fait_stdrdp) ;
00428     srdrdt.set(this, map_af_fait_srdrdt) ;
00429     srstdrdp.set(this, map_af_fait_srstdrdp) ;
00430     sr2drdt.set(this, map_af_fait_sr2drdt) ;
00431     sr2stdrdp.set(this, map_af_fait_sr2stdrdp) ;
00432     d2rdx2.set(this, map_af_fait_d2rdx2) ;
00433     lapr_tp.set(this, map_af_fait_lapr_tp) ;
00434     d2rdtdx.set(this, map_af_fait_d2rdtdx) ;
00435     sstd2rdpdx.set(this, map_af_fait_sstd2rdpdx) ;
00436     sr2d2rdt2.set(this, map_af_fait_sr2d2rdt2) ;
00437     
00438 }
00439 // Comparison operator :
00440 bool Map_af::operator==(const Map& mpi) const {
00441   
00442   // Precision of the comparison
00443   double precis = 1e-10 ;
00444   bool resu = true ;
00445 
00446   // Dynamic cast pour etre sur meme Map...
00447   const Map_af* mp0 = dynamic_cast<const Map_af*>(&mpi) ;
00448   if (mp0 == 0x0)
00449     resu = false ;
00450   else {
00451     if (*mg != *(mpi.get_mg()))
00452       resu = false ;
00453     
00454     if (fabs(ori_x-mpi.get_ori_x()) > precis) resu = false ;
00455     if (fabs(ori_y-mpi.get_ori_y()) > precis) resu = false ;
00456     if (fabs(ori_z-mpi.get_ori_z()) > precis)  resu = false ;
00457 
00458     if (bvect_spher != mpi.get_bvect_spher()) resu = false ;
00459     if (bvect_cart != mpi.get_bvect_cart()) resu = false ;
00460 
00461     int nz = mg->get_nzone() ;
00462     for (int i=0 ; i<nz ; i++) {
00463       if (fabs(alpha[i]-mp0->alpha[i])/fabs(alpha[i]) > precis) 
00464     resu = false ;
00465       if ((i!=0) && (i!=nz-1))
00466     if (fabs(beta[i]-mp0->beta[i])/fabs(beta[i]) > precis) 
00467     resu = false ;
00468     }
00469   }
00470 
00471   return resu ;
00472 }
00473 
00474         //--------------------------------------//
00475         // Extraction of the mapping parameters //
00476         //--------------------------------------//
00477 
00478 const double* Map_af::get_alpha() const {
00479     return alpha ; 
00480 }
00481 
00482 const double* Map_af::get_beta() const {
00483     return beta ; 
00484 }
00485 
00486             //------------//
00487             // Sauvegarde //
00488             //------------//
00489 
00490 void Map_af::sauve(FILE* fd) const {
00491 
00492     Map_radial::sauve(fd) ; 
00493 
00494     int nz = mg->get_nzone() ;
00495     fwrite_be(alpha, sizeof(double), nz, fd) ;  
00496     fwrite_be(beta, sizeof(double), nz, fd) ;   
00497     
00498 }
00499     
00500             //------------//
00501             // Impression //
00502             //------------//
00503 
00504 ostream & Map_af::operator>>(ostream & ost) const {
00505 
00506   using namespace Unites ;
00507 
00508     ost << "Affine mapping (class Map_af)" << endl ; 
00509     int nz = mg->get_nzone() ;
00510     for (int l=0; l<nz; l++) {
00511     ost << "     Domain #" << l << " : alpha_l = " << alpha[l] 
00512       << " ,  beta_l = " << beta[l] << endl ;  
00513     }
00514 
00515     ost << endl << "     Values of r at the outer boundary of each domain [km] :" 
00516     << endl ; 
00517     ost << "            val_r :   " ;
00518     for (int l=0; l<nz; l++) {
00519     ost << " " << val_r(l, 1., 0., 0.) / km ; 
00520     }
00521     ost << endl ; 
00522 
00523     ost << "            Coord r : " ; 
00524     for (int l=0; l<nz; l++) {
00525     int nrm1 = mg->get_nr(l) - 1 ; 
00526     ost << " " << (+r)(l, 0, 0, nrm1) / km ; 
00527     }
00528     ost << endl ; 
00529 
00530     return ost ;
00531 }    
00532 
00533             //------------------//
00534             //  Homothetie      //
00535             //------------------//
00536 
00537 
00538 void Map_af::homothetie(double fact) {
00539 
00540     int nz = mg->get_nzone() ; 
00541     
00542     for (int l=0; l<nz; l++) {
00543     if (mg->get_type_r(l) == UNSURR) {
00544         alpha[l] /= fact ;
00545         beta[l] /= fact ;
00546     }
00547     else {
00548         alpha[l] *= fact ;
00549         beta[l] *= fact ;
00550     }
00551     }
00552     
00553     reset_coord() ; 
00554     
00555 }
00556 
00557             //----------------------------//
00558             //  Rescaling of one domain   //
00559             //----------------------------//
00560 
00561 void Map_af::resize(int l, double lambda) {
00562 
00563     // Protections
00564     // -----------
00565     if (mg->get_type_r(l) != FIN) {
00566     cout << "Map_af::resize can be applied only to a shell !" << endl ; 
00567     abort() ;
00568     }
00569 
00570     // New values of alpha and beta in domain l :
00571     // ----------------------------------------
00572     double n_alpha = 0.5 * ( (lambda + 1.) * alpha[l] +  
00573                  (lambda - 1.) * beta[l] ) ; 
00574 
00575     double n_beta = 0.5 * ( (lambda - 1.) * alpha[l] +  
00576                 (lambda + 1.) * beta[l] ) ; 
00577                 
00578     alpha[l] = n_alpha ; 
00579     beta[l] = n_beta ; 
00580     
00581     // New values of alpha and beta in domain l+1 :
00582     // ------------------------------------------
00583     assert(l<mg->get_nzone()-1) ; 
00584     int lp1 = l + 1 ; 
00585     
00586     if (mg->get_type_r(lp1) == UNSURR) {        // compactified case
00587     
00588     alpha[lp1] = - 0.5 / ( alpha[l] + beta[l] ) ; 
00589     beta[lp1] = - alpha[lp1] ; 
00590     
00591     }
00592     else{   // non-compactified case
00593     
00594     assert( mg->get_type_r(lp1) == FIN ) ;
00595     n_alpha = 0.5 * ( alpha[lp1] - alpha[l] + beta[lp1] - beta[l] ) ; 
00596     n_beta =  0.5 * ( alpha[lp1] + alpha[l] + beta[lp1] + beta[l] ) ; 
00597     alpha[lp1] = n_alpha ; 
00598     beta[lp1] = n_beta ; 
00599     }
00600     
00601     // The coords are no longer up to date :
00602     reset_coord() ; 
00603     
00604 } 
00605 
00606             
00607 
00608 
00609 
00610             //---------------------------//
00611             //  Homothetie  partielle   //
00612             //-------------------------//
00613 
00614 
00615 void Map_af::homothetie_interne(double fact) {
00616     
00617     // Dans le noyau
00618     alpha[0] *= fact ;
00619 
00620     // Dans la premiere coquille :
00621     double asauve  = alpha[1] ;
00622     alpha[1] = (1-fact)/2.*beta[1] + (1+fact)/2. * alpha[1] ;
00623     beta[1] = (1+fact)/2.*beta[1]+ (1-fact)/2. * asauve ;
00624     
00625     reset_coord() ; 
00626 }
00627             //------------------------------------------//
00628             //  Modification of the mapping parameters  //
00629             //------------------------------------------//
00630 
00631 void Map_af::set_alpha(double alpha0, int l) {
00632     
00633     assert(l>=0) ; 
00634     assert(l<mg->get_nzone()) ; 
00635     
00636     alpha[l] = alpha0 ; 
00637     
00638     reset_coord() ; 
00639     
00640 }
00641 
00642 void Map_af::set_beta(double beta0, int l) {
00643     
00644     assert(l>=0) ; 
00645     assert(l<mg->get_nzone()) ; 
00646     
00647     beta[l] = beta0 ; 
00648     
00649     reset_coord() ; 
00650     
00651 }
00652 
00653                             //------------------------------------//
00654                             //    Angular part of the mapping     //
00655                             //------------------------------------//
00656 
00657 const Map_af& Map_af::mp_angu(int l_zone) const {
00658 //## the handling of l_zone must be improved 
00659     if (p_mp_angu == 0x0) {
00660     const Mg3d& g_angu = (*get_mg()->get_angu_1dom()) ;
00661     double Rb = val_r_jk(l_zone, 1., 0, 0) ;
00662     Tbl rlim(2) ;
00663     rlim.set_etat_qcq() ;
00664     rlim.set(0) = Rb ;
00665     rlim.set(1) = Rb ;
00666     p_mp_angu = new Map_af(g_angu, rlim) ;
00667     }
00668     return *p_mp_angu ;
00669 }
00670 
00671 // To be done
00672 //-----------
00673 
00674 void Map_af::adapt(const Cmp&, const Param&, int) {
00675     const char* f = __FILE__ ;
00676     c_est_pas_fait(f) ;
00677 }
00678 
00679 
00680 

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