cmp.h

00001 /*
00002  *  Definition of Lorene class Cmp
00003  *
00004  */
00005 
00006 /*
00007  *   Copyright (c) 1999-2000 Jean-Alain Marck
00008  *   Copyright (c) 1999-2002 Eric Gourgoulhon
00009  *   Copyright (c) 1999-2001 Philippe Grandclement
00010  *   Copyright (c) 2000-2002 Jerome Novak
00011  *   Copyright (c) 2000-2001 Keisuke Taniguchi
00012  *
00013  *   This file is part of LORENE.
00014  *
00015  *   LORENE is free software; you can redistribute it and/or modify
00016  *   it under the terms of the GNU General Public License as published by
00017  *   the Free Software Foundation; either version 2 of the License, or
00018  *   (at your option) any later version.
00019  *
00020  *   LORENE is distributed in the hope that it will be useful,
00021  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00022  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023  *   GNU General Public License for more details.
00024  *
00025  *   You should have received a copy of the GNU General Public License
00026  *   along with LORENE; if not, write to the Free Software
00027  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00028  *
00029  */
00030 
00031 
00032 #ifndef __CMP_H_ 
00033 #define __CMP_H_ 
00034 
00035 
00036 /*
00037  * $Id: cmp.h,v 1.19 2010/02/02 13:34:12 e_gourgoulhon Exp $
00038  * $Log: cmp.h,v $
00039  * Revision 1.19  2010/02/02 13:34:12  e_gourgoulhon
00040  * Marked DEPRECATED (in the documentation).
00041  *
00042  * Revision 1.18  2005/08/30 08:35:10  p_grandclement
00043  * Addition of the Tau version of the vectorial Poisson equation for the Tensors
00044  *
00045  * Revision 1.17  2005/08/02 06:09:58  m_saijo
00046  * Modified comment lines (div_r, multi_r, mult_rsint, div_rsint)
00047  *
00048  * Revision 1.16  2004/12/29 16:20:20  k_taniguchi
00049  * Addition of the function poisson_ylm.
00050  *
00051  * Revision 1.15  2004/11/30 20:38:10  k_taniguchi
00052  * Addition of the function poisson_falloff.
00053  *
00054  * Revision 1.14  2004/10/11 15:08:59  j_novak
00055  * The radial manipulation functions take Scalar as arguments, instead of Cmp.
00056  * Added a conversion operator from Scalar to Cmp.
00057  * The Cmp radial manipulation function make conversion to Scalar, call to the
00058  * Map_radial version with a Scalar argument and back.
00059  *
00060  * Revision 1.13  2004/03/31 11:21:02  f_limousin
00061  * Method Cmp::poisson_neumann_interne has been implemented to solve
00062  * the continuity equation for strange stars.
00063  *
00064  * Revision 1.12  2004/03/22 13:12:40  j_novak
00065  * Modification of comments to use doxygen instead of doc++
00066  *
00067  * Revision 1.11  2004/03/01 09:54:58  j_novak
00068  * Suppression of the Cmp version of avance_dalembert (now only with Scalar's)
00069  *
00070  * Revision 1.10  2003/11/06 14:43:37  e_gourgoulhon
00071  * Gave a name to const arguments in certain method prototypes (e.g.
00072  * constructors) to correct a bug of DOC++.
00073  *
00074  * Revision 1.9  2003/09/24 20:52:37  e_gourgoulhon
00075  * Added constructor by conversion of a Scalar.
00076  *
00077  * Revision 1.8  2003/08/26 09:46:10  j_novak
00078  * Added the method multipole_spectrum
00079  *
00080  * Revision 1.7  2003/06/20 14:16:10  f_limousin
00081  * Add the function compare().
00082  *
00083  * Revision 1.6  2003/06/20 09:27:09  j_novak
00084  * Modif commentaires.
00085  *
00086  * Revision 1.5  2002/09/13 09:17:31  j_novak
00087  * Modif. commentaires
00088  *
00089  * Revision 1.4  2002/06/17 14:05:16  j_novak
00090  * friend functions are now also declared outside the class definition
00091  *
00092  * Revision 1.3  2002/05/17 12:08:46  e_gourgoulhon
00093  * Corrected error in the comment about dzpuis: multiplied --> divided
00094  *
00095  * Revision 1.2  2002/01/03 15:30:27  j_novak
00096  * Some comments modified.
00097  *
00098  * Revision 1.1.1.1  2001/11/20 15:19:27  e_gourgoulhon
00099  * LORENE
00100  *
00101  * Revision 2.101  2001/10/29  15:36:03  novak
00102  * Ajout de Cmp::div_r()
00103  *
00104  * Revision 2.100  2001/10/16 10:03:57  novak
00105  * *** empty log message ***
00106  *
00107  * Revision 2.99  2001/08/31 14:52:10  novak
00108  * Back to 2.97 version 2.98 was useless
00109  *
00110  * Revision 2.97  2001/07/19 14:01:39  novak
00111  * new arguments for Cmp::avance_dalembert
00112  *
00113  * Revision 2.96  2001/05/29 16:09:40  eric
00114  * Modif commentaires (mise en conformite Doc++ 3.4.7).
00115  *
00116  * Revision 2.95  2001/05/26  15:07:20  eric
00117  * Ajout de operator% : multiplication de deux Cmp avec desaliasage
00118  *
00119  * Revision 2.94  2001/05/25  09:30:07  phil
00120  * ajout de filtre_phi
00121  *
00122  * Revision 2.93  2001/03/30  13:36:22  phil
00123  * ajout de raccord_externe
00124  *
00125  * Revision 2.92  2001/03/26  08:11:50  eric
00126  * Modif commentaires.
00127  *
00128  * Revision 2.91  2001/03/22  10:25:19  phil
00129  * modification prototypage de raccord_zec.C
00130  *
00131  * Revision 2.90  2001/02/12  18:08:10  phil
00132  * ajout de Cmp::fixe_decroissance
00133  *
00134  * Revision 2.89  2000/12/13  14:50:05  phil
00135  * changement nom variable dzpuis dans raccord_c1_zec
00136  *
00137  * Revision 2.88  2000/12/13  14:35:53  phil
00138  * *** empty log message ***
00139  *
00140  * Revision 2.87  2000/12/13  14:26:42  phil
00141  * *** empty log message ***
00142  *
00143  * Revision 2.86  2000/12/13  14:25:26  phil
00144  * vire commentaires des raccords (provisioire)
00145  *
00146  * Revision 2.85  2000/12/13  14:19:49  phil
00147  * modif commentaires
00148  *
00149  * Revision 2.84  2000/12/13  14:08:36  phil
00150  * ajout procedure raccord_c1_zec
00151  *
00152  * Revision 2.83  2000/12/04  16:48:47  novak
00153  * *** empty log message ***
00154  *
00155  * Revision 2.82  2000/12/04 15:06:15  novak
00156  * *** empty log message ***
00157  *
00158  * Revision 2.81  2000/11/15 13:24:28  phil
00159  * modification de asymptot
00160  *
00161  * Revision 2.80  2000/11/15  13:19:13  phil
00162  * *** empty log message ***
00163  *
00164  * Revision 2.79  2000/11/15  13:17:01  phil
00165  * *** empty log message ***
00166  *
00167  * Revision 2.78  2000/11/15  13:15:45  phil
00168  * gestion affichage dans asymptot
00169  *
00170  * Revision 2.77  2000/10/20  09:43:30  phil
00171  * changement commentaires
00172  *
00173  * Revision 2.76  2000/10/19  14:07:06  novak
00174  * Ajout de la fonction membre avance_dalembert (experimentale)
00175  *
00176  * Revision 2.75  2000/10/19 09:20:36  phil
00177  * *** empty log message ***
00178  *
00179  * Revision 2.74  2000/10/19  09:13:45  phil
00180  * ajout des fonctions :
00181  * filtre(int)
00182  * set_val_inf(double)
00183  * set_val_hor(double,int)
00184  *
00185  * Revision 2.73  2000/10/05  14:18:14  eric
00186  * La fonction check_poisson est rebaptisee test_poisson.
00187  *
00188  * Revision 2.72  2000/10/05  13:56:52  eric
00189  * *** empty log message ***
00190  *
00191  * Revision 2.71  2000/10/05  13:52:25  eric
00192  * Ajout de la fonction check_poisson.
00193  *
00194  * Revision 2.70  2000/09/13  12:21:44  eric
00195  * Modif commentaires.
00196  *
00197  * Revision 2.69  2000/09/13  12:11:48  eric
00198  * Ajout de la fonction allocate_all().
00199  *
00200  * Revision 2.68  2000/09/07  15:26:40  keisuke
00201  * Add a new argument Cmp& uu in Cmp::poisson_regular.
00202  *
00203  * Revision 2.67  2000/09/04  09:11:06  keisuke
00204  * Suppress Cmp::poisson_regular (version without parameter).
00205  *
00206  * Revision 2.66  2000/08/31  13:04:30  eric
00207  * Ajout des fonctions mult_rsint et div_rsint.
00208  *
00209  * Revision 2.65  2000/08/29  13:51:36  keisuke
00210  * *** empty log message ***
00211  *
00212  * Revision 2.64  2000/08/29  13:46:14  keisuke
00213  * Add the polar and azimuthal derivatives of the diverging potential
00214  * in Cmp::poisson_regular.
00215  * Modify the argumants of Cmp::poisson_regular.
00216  *
00217  * Revision 2.63  2000/08/28  15:48:22  keisuke
00218  * Modif Cmp::poisson_regular
00219  *
00220  * Revision 2.62  2000/08/28  15:43:11  keisuke
00221  * Modif Cmp::poisson_regular
00222  *
00223  * Revision 2.61  2000/08/04  12:09:58  eric
00224  * Ajout de l'operator()(int l) et de la fonction set(int l) pour
00225  * l'acces aux Tbl individuels.
00226  *
00227  * Revision 2.60  2000/08/04  09:18:05  keisuke
00228  * Transformation Cmp::poisson_regular_param en Cmp::poisson_regular
00229  *
00230  * Revision 2.59  2000/08/03  14:01:29  keisuke
00231  * Modif Cmp::poisson_regular et ajout de Cmp::poisson_regular_param
00232  *
00233  * Revision 2.58  2000/07/29  12:50:01  keisuke
00234  * Modif Cmp::poisson_regular
00235  *
00236  * Revision 2.57  2000/07/20  13:33:50  keisuke
00237  * Modif Cmp::poisson_regular
00238  *
00239  * Revision 2.56  2000/07/20  10:25:09  keisuke
00240  * Modif Cmp::poisson_regular
00241  *
00242  * Revision 2.55  2000/07/19  15:50:23  keisuke
00243  * Ajout de Cmp::poisson_regular
00244  *
00245  * Revision 2.54  2000/05/22  14:38:32  phil
00246  * ajout de dec_dzpuis et inc_dzpuis
00247  *
00248  * Revision 2.53  2000/04/27  15:18:57  phil
00249  * *** empty log message ***
00250  *
00251  * Revision 2.52  2000/03/28  17:44:41  phil
00252  * Cmp::raccord() -> Cmp::raccord(int)
00253  *
00254  * Revision 2.51  2000/03/28  17:31:31  phil
00255  * *** empty log message ***
00256  *
00257  * Revision 2.50  2000/03/28  17:25:35  phil
00258  * ajout de Cmp::raccord()
00259  *
00260  * Revision 2.49  2000/03/25  12:52:45  eric
00261  * Ajout de la fonction asymptot(int ).
00262  *
00263  * Revision 2.48  2000/03/20  13:33:31  phil
00264  * commentaires
00265  *
00266  * Revision 2.47  2000/03/17  17:32:54  phil
00267  * *** empty log message ***
00268  *
00269  * Revision 2.46  2000/03/17  17:07:14  phil
00270  * *** empty log message ***
00271  *
00272  * Revision 2.45  2000/03/17  16:56:00  phil
00273  * ajout de poisson_dirichlet et de son amie poisson_neumann
00274  *
00275  * Revision 2.44  2000/03/06  10:55:44  eric
00276  * Ajout des methodes import_symy et import_asymy.
00277  *
00278  * Revision 2.43  2000/02/28  16:29:48  eric
00279  * Ajout des fonctions import_gal, import_align, import_anti.
00280  *
00281  * Revision 2.42  2000/01/28  16:08:55  eric
00282  * Ajout des fonctions dz_nonzero et check_dzpuis.
00283  *
00284  * Revision 2.41  2000/01/07  16:28:15  eric
00285  * Suppression de la fonction membre gradient.
00286  *
00287  * Revision 2.40  1999/12/21  13:03:22  eric
00288  * Changement de prototype de la routine poisson avec Param& : la solution est
00289  *  desormais passee en argument (et non plus en valeur de retour)
00290  *  pour permettre l'initialisation de methodes de resolution iteratives.
00291  *
00292  * Revision 2.39  1999/12/21  10:06:52  eric
00293  * Il y a desormais deux versions de poisson: une sans Param et une
00294  * avec Param.
00295  *
00296  * Revision 2.38  1999/12/10  16:19:33  eric
00297  * Modif commentaires.
00298  *
00299  * Revision 2.37  1999/12/10  15:59:01  eric
00300  * Modif commentaires fonction set.
00301  *
00302  * Revision 2.36  1999/12/09  10:45:54  eric
00303  * Ajout du calcul d'integrale (membre p_integ et fonctions
00304  *   integrale et integrale_domains).
00305  *
00306  * Revision 2.35  1999/12/08  12:38:38  eric
00307  * Ajout de la fonction import.
00308  *
00309  * Revision 2.34  1999/12/07  14:53:13  eric
00310  * Changement ordre des arguments (phi,theta,r) --> (r,theta,phi)
00311  *   dans la routine val_point.
00312  *
00313  * Revision 2.33  1999/12/06  16:47:00  eric
00314  * Ajout de la fonction val_point.
00315  *
00316  * Revision 2.32  1999/12/02  17:59:11  phil
00317  * *** empty log message ***
00318  *
00319  * Revision 2.31  1999/12/02  14:28:46  eric
00320  * Reprototypage de la fonction poisson(): const.
00321  * Commentaires.
00322  *
00323  * Revision 2.30  1999/11/30  14:20:54  eric
00324  * Reprototypage des fonctions membres mult_r, mult_r_zec,
00325  *  dec2_dzpuis et inc2_dzpuis : Cmp --> void.
00326  *
00327  * Revision 2.29  1999/11/29  13:18:06  eric
00328  * Modif commentaires.
00329  *
00330  * Revision 2.28  1999/11/29  12:56:11  eric
00331  * Introduction des membres p_lap, ind_lap.
00332  * Changement prototype de la fonction laplacien.
00333  *
00334  * Revision 2.27  1999/11/26  14:22:54  eric
00335  * Ajout du membre dzpuis et des fonctions de manipulation associees.
00336  *
00337  * Revision 2.26  1999/11/25  16:27:00  eric
00338  * Reorganisation complete du calcul et stokage des derivees partielles.
00339  *
00340  * Revision 2.25  1999/11/23  16:21:32  eric
00341  * Suppression du membre statique Cmp_Zero.
00342  * Suppression du constructeur par defaut.
00343  *
00344  * Revision 2.24  1999/11/22  16:48:00  phil
00345  * Cmp_Zero est desormais public
00346  *
00347  * Revision 2.23  1999/11/22  16:34:17  eric
00348  * Ajout de l'element global Cmp_Zero.
00349  *
00350  * Revision 2.22  1999/11/22  15:41:42  eric
00351  * Ajout des operateurs set(l,k,j,i) et (l,k,j,i).
00352  * Ajout de la fonction annule(int l).
00353  *
00354  * Revision 2.21  1999/11/15  14:12:28  eric
00355  * Ajout des fonctions mathematiques cos, sin, ..., min, max, norme,...
00356  *
00357  * Revision 2.20  1999/11/12  17:08:10  eric
00358  * Ajout de la partie manquante de l'arithmetique.
00359  *
00360  * Revision 2.19  1999/10/28  09:36:56  eric
00361  * Ajout de la fonction affiche_seuil.
00362  *
00363  * Revision 2.18  1999/10/28  09:01:24  eric
00364  * Constructeur par lecture de fichier.
00365  * Ajout de la fonction annule(int, int).
00366  *
00367  * Revision 2.17  1999/10/27  16:46:23  phil
00368  * ajout de mult_r_zec
00369  *
00370  * Revision 2.16  1999/10/27  15:38:40  eric
00371  * Suppression du membre c.
00372  *
00373  * Revision 2.15  1999/10/27  08:42:40  eric
00374  * Introduction du membre Valeur va.
00375  * Le pointeur Valeur* c est desormais un membre prive constant qui pointe
00376  * sur va.
00377  * Suppression de la fonction nouveau(), ainsi que du constructeur par
00378  * defaut.
00379  *
00380  * Revision 2.14  1999/10/22  08:14:19  eric
00381  * Depoussierage.
00382  * Documentation.
00383  *
00384  * Revision 2.13  1999/10/19  14:40:51  phil
00385  * ajout de inc2_dzpuis()
00386  *
00387  * Revision 2.12  1999/09/16  13:16:47  phil
00388  * ajout de Cmp mult_r()
00389  *
00390  * Revision 2.11  1999/09/15  10:29:44  phil
00391  * ajout de dec2_dzpuis()
00392  *
00393  * Revision 2.10  1999/09/14  17:13:05  phil
00394  * ajout de Cmp operator*(double,const Cmp&)
00395  *
00396  * Revision 2.9  1999/09/14  13:45:27  phil
00397  * suppression de la divergence
00398  *
00399  * Revision 2.8  1999/09/14  12:50:31  phil
00400  * ajout de Cmp deriv(int) et de Cmp divergence()
00401  *
00402  * Revision 2.7  1999/09/07  16:08:04  phil
00403  * ajout de la fonction membre gradient
00404  *
00405  * Revision 2.6  1999/09/06  14:50:27  phil
00406  * ajout du laplacien
00407  *
00408  * Revision 2.5  1999/09/06  14:35:05  phil
00409  * ajout de poisson
00410  *
00411  * Revision 2.4  1999/03/03  11:13:46  hyc
00412  * *** empty log message ***
00413  *
00414  * Revision 2.3  1999/03/03  11:07:27  hyc
00415  * *** empty log message ***
00416  *
00417  *
00418  * $Header: /cvsroot/Lorene/C++/Include/cmp.h,v 1.19 2010/02/02 13:34:12 e_gourgoulhon Exp $
00419  *
00420  */
00421 
00422 #include <stdio.h>
00423 
00424 #include "valeur.h"
00425 #include "map.h"
00426 
00427 class Param ; 
00428 
00433 class Cmp {
00434 
00435     // Data : 
00436     // -----
00437     private:
00438     const Map* mp ;     
00439 
00441     int etat ;      
00442 
00448     int dzpuis ;    
00449 
00450     public:
00451     Valeur va ;     
00452 
00453     // Derived data : 
00454     // ------------
00455     private:
00457     mutable Cmp* p_dsdr ;   
00459     mutable Cmp* p_srdsdt ; 
00461     mutable Cmp* p_srstdsdp ;
00462     
00466     mutable Cmp* p_dsdx ;   
00467 
00471     mutable Cmp* p_dsdy ;   
00472 
00476     mutable Cmp* p_dsdz ;   
00477 
00480     mutable Cmp* p_lap ;    
00481 
00485     mutable int ind_lap ; 
00486 
00490     mutable Tbl* p_integ ; 
00491 
00492     // Constructors - Destructor
00493     // -------------------------
00494     
00495     public:
00496     explicit Cmp(const Map& map) ;  
00497     explicit Cmp(const Map* p_map) ;    
00498     Cmp(const Cmp& a) ;     
00499 
00501     Cmp(const Map&, const Mg3d&, FILE* ) ;          
00502 
00503     ~Cmp() ;            
00504 
00505     // Assignment
00506     // -----------
00507     public: 
00509     void operator=(const Cmp& a) ;  
00510 
00511     void operator=(const Valeur& a) ; 
00512     void operator=(const Mtbl& a) ;  
00513     void operator=(double ) ;    
00514     void operator=(int ) ;       
00515         
00521     void import(const Cmp& ci) ;     
00522 
00529     void import_symy(const Cmp& ci) ;    
00530 
00538     void import_asymy(const Cmp& ci) ;   
00539 
00551     void import(int nzet, const Cmp& ci) ;   
00552 
00565     void import_symy(int nzet, const Cmp& ci) ;  
00566 
00580     void import_asymy(int nzet, const Cmp& ci) ;     
00581 
00582     private:
00596     void import_gal(int nzet, const Cmp& ci) ;   
00597 
00611     void import_align(int nzet, const Cmp& ci) ;     
00612 
00627     void import_anti(int nzet, const Cmp& ci) ;  
00628 
00643     void import_align_symy(int nzet, const Cmp& ci) ;    
00644 
00660     void import_anti_symy(int nzet, const Cmp& ci) ;     
00661 
00677     void import_align_asymy(int nzet, const Cmp& ci) ;   
00678 
00695     void import_anti_asymy(int nzet, const Cmp& ci) ;    
00696 
00697 
00698 
00699     // Access to individual elements
00700     // -----------------------------
00701     public:
00702 
00711     Tbl& set(int l) {
00712         assert(etat == ETATQCQ) ;
00713         return va.set(l) ;
00714     };
00715     
00720     const Tbl& operator()(int l) const {
00721         assert(etat == ETATQCQ) ;
00722         return va(l) ;
00723     };
00724 
00725 
00736     double& set(int l, int k, int j, int i) {
00737         assert(etat == ETATQCQ) ;
00738         return va.set(l, k, j, i) ;
00739     };
00740     
00741     
00748     double operator()(int l, int k, int j, int i) const {
00749         assert(etat != ETATNONDEF) ;
00750         if (etat == ETATZERO) {
00751         double zero = 0. ;
00752         return zero ; 
00753         }
00754         else{       
00755         return va(l, k, j, i) ;
00756         }
00757     };
00758 
00768     double val_point(double r, double theta, double phi) const ; 
00769 
00770 
00771     // Memory management
00772     // -----------------
00773     private:
00774     void del_t() ;          
00775     void del_deriv() ;      
00776     void set_der_0x0() ;        
00777 
00778     public:
00779 
00785     void set_etat_nondef() ;   
00786 
00792     void set_etat_zero() ;      
00793     
00800     void set_etat_qcq() ;       
00801 
00810     void allocate_all() ; 
00811 
00820     void annule_hard() ;
00821 
00827     void annule(int l) ; 
00828 
00839     void annule(int l_min, int l_max) ; 
00840     
00844     void filtre (int n) ;
00845     
00850     void filtre_phi (int n, int zone) ;
00851     
00857     void set_val_inf (double val) ;
00858     
00864     void set_val_hor (double val, int zone) ;
00870     void fixe_decroissance (int puis) ;
00871 
00880     Tbl multipole_spectrum () ;
00881     
00882     // Extraction of information
00883     // -------------------------
00884     public:
00886     int get_etat() const {return etat;} ;   
00888     const Map* get_mp() const {return mp;};  
00890     int get_dzpuis() const {return dzpuis;} ;
00891     
00895     bool dz_nonzero() const ; 
00896     
00901     bool check_dzpuis(int dzi) const ; 
00902     
00903     
00904     // Outputs
00905     // -------
00906     public:
00907     void sauve(FILE *) const ;      
00908     
00918     void affiche_seuil(ostream& ostr, int type = 0, int precision = 4, 
00919                double threshold = 1.e-7) const ;
00920 
00922     friend ostream& operator<<(ostream& , const Cmp & ) ;   
00923 
00924 
00925     // Member arithmetics
00926     // ------------------
00927     public:
00928     void operator+=(const Cmp &) ;          
00929     void operator-=(const Cmp &) ;          
00930     void operator*=(const Cmp &) ;          
00931 
00932     // Manipulation of spectral bases
00933     // ------------------------------    
00937     void std_base_scal() ;   
00938 
00939 
00940     // Differential operators and others
00941     // ---------------------------------
00942     public:
00947     const Cmp& dsdr() const ; 
00948     
00953     const Cmp& srdsdt() const ; 
00954 
00959     const Cmp& srstdsdp() const ; 
00960 
00966     const Cmp& dsdx() const ;   
00967 
00973     const Cmp& dsdy() const ;   
00974 
00980     const Cmp& dsdz() const ;   
00981 
00988     const Cmp& deriv(int i) const ; 
00989 
00998     const Cmp& laplacien(int zec_mult_r = 4) const ; 
00999 
01001     void div_r() ;
01002 
01004     void mult_r() ;
01005 
01008     void mult_r_zec() ;
01009 
01011     void mult_rsint() ;
01012 
01014     void div_rsint() ;
01015 
01019     void dec_dzpuis() ; 
01020 
01024     void inc_dzpuis() ; 
01025     
01029     void dec2_dzpuis() ; 
01030 
01034     void inc2_dzpuis() ; 
01035 
01036     void set_dzpuis(int ) ;  
01037 
01045     double integrale() const ; 
01046     
01056     const Tbl& integrale_domains() const ; 
01057     
01073     Valeur** asymptot(int n, const int flag = 0) const ; 
01074     
01076 
01077     void compare(FILE* fich, const char* name_i) ;
01078     void compare(const Cmp& comp, const char* name, int ii = -1
01079              , int jj = -1) ;
01080  
01081 
01082 
01083 
01084     // PDE resolution 
01085     // --------------
01086     public:
01096     Cmp poisson() const ;
01097     
01100     Cmp poisson_tau() const ;
01101 
01102     Cmp poisson_falloff(int k_falloff) const ;
01103 
01104     Cmp poisson_ylm(int nylm, double* intvec) const ;
01105 
01117     void poisson(Param& par, Cmp& uu) const ;
01118     
01121     void poisson_tau(Param& par, Cmp& uu) const ;
01122     
01123     void poisson_falloff(Param& par, Cmp& uu, int k_falloff) const ;
01124 
01125     void poisson_ylm(Param& par, Cmp& uu, int nylm, double* intvec) const ;
01126 
01141     Cmp poisson_dirichlet (const Valeur& limite, int num) const ;
01142     
01147     Cmp poisson_neumann (const Valeur&, int) const ;
01148 
01157     Cmp poisson_neumann_interne (const Valeur&, Param& par, Cmp& resu) const ;
01158     Cmp poisson_frontiere_double   (const Valeur&, const Valeur&, int) const ;
01159 
01184     void poisson_regular(int k_div, int nzet, double unsgam1, Param& par,
01185                  Cmp& uu, Cmp& uu_regu, Cmp& uu_div,
01186                  Tenseur& duu_div,
01187                  Cmp& source_regu, Cmp& source_div) const ;
01188 
01223     Tbl test_poisson(const Cmp& uu, ostream& ostr, 
01224                     bool detail = false) const ;    
01229     void raccord(int n) ;
01230     
01237     void raccord_c1_zec (int puis, int nbre, int lmax) ;
01241     void raccord_externe (int puis, int nbre, int lmax) ;
01242 };
01243 ostream& operator<<(ostream& , const Cmp & ) ;  
01244 
01251 Cmp operator+(const Cmp& ) ;            
01252 Cmp operator-(const Cmp& ) ;            
01253 Cmp operator+(const Cmp&, const Cmp &) ;    
01254 Cmp operator+(const Cmp&, double ) ;        
01255 Cmp operator+(double, const Cmp& ) ;        
01256 Cmp operator+(const Cmp&, int ) ;       
01257 Cmp operator+(int, const Cmp& ) ;       
01258 Cmp operator-(const Cmp &, const Cmp &) ;   
01259 Cmp operator-(const Cmp&, double ) ;        
01260 Cmp operator-(double, const Cmp& ) ;        
01261 Cmp operator-(const Cmp&, int ) ;       
01262 Cmp operator-(int, const Cmp& ) ;       
01263 Cmp operator*(const Cmp &, const Cmp &) ;   
01264 Cmp operator%(const Cmp &, const Cmp &) ;   
01265 Cmp operator*(const Cmp&, double ) ;        
01266 Cmp operator*(double, const Cmp &) ;        
01267 Cmp operator*(const Cmp&, int ) ;       
01268 Cmp operator*(int, const Cmp& ) ;       
01269 Cmp operator/(const Cmp &, const Cmp &) ;   
01270 Cmp operator/(const Cmp&, double ) ;        
01271 Cmp operator/(double, const Cmp &) ;        
01272 Cmp operator/(const Cmp&, int ) ;       
01273 Cmp operator/(int, const Cmp &) ;       
01274 
01275 Cmp sin(const Cmp& ) ;      
01276 Cmp cos(const Cmp& ) ;      
01277 Cmp tan(const Cmp& ) ;      
01278 Cmp asin(const Cmp& ) ;     
01279 Cmp acos(const Cmp& ) ;     
01280 Cmp atan(const Cmp& ) ;     
01281 Cmp exp(const Cmp& ) ;      
01282 Cmp log(const Cmp& ) ;      
01283 Cmp log10(const Cmp& ) ;    
01284 Cmp sqrt(const Cmp& ) ;     
01285 Cmp racine_cubique (const Cmp& ) ;      
01286 Cmp pow(const Cmp& , int ) ;    
01287 Cmp pow(const Cmp& , double ) ; 
01288 Cmp abs(const Cmp& ) ;      
01289 
01295 Tbl max(const Cmp& ) ;   
01296 
01302 Tbl min(const Cmp& ) ;   
01303 
01310 Tbl norme(const Cmp& ) ;   
01311 
01320 Tbl diffrel(const Cmp& a, const Cmp& b) ; 
01321 
01330 Tbl diffrelmax(const Cmp& a, const Cmp& b) ; 
01331 
01334 #endif

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