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
1.4.6