# [LORENE] New display of spectral coefficients

Eric Gourgoulhon Eric.Gourgoulhon at obspm.fr
Mon Oct 27 18:13:48 CET 2003

```Dear All,

A new kind of display of the coefficients of spectral expansions
has been introduced in Lorene: instead of giving the coefficient
index (i,j,k), it shows the name of the basis function in

T2   for the second order Chebyshev polynomial
cos3t   for cos(3 theta)
sin2p   for sin(2 phi)
P_2^1  for the associated Legendre function P_l^m(cos(theta)
with l=2 and m=1
etc...

This new display relies on the new methods of class Base_val:

*void Base_val::name_r(int l, int k, int j, int i, char* basename) **const
void Base_val::name_theta(int l, int k, int j, char* basename) const**
void Base_val::name_phi(int l, int k, char* basename) const

*These functions are used in the new method
*
void Mtbl_cf::display(double threshold = 1.e-7, int precision = 4,
ostream& ostr = cout) const*

which itself is used at the Valeur and Scalar levels:

*void Valeur::display_coef(double threshold = 1.e-7, int precision = 4,
ostream& ostr = cout) const*

*void Scalar::spectral_display(double threshold = 1.e-7, int precision = 4,
ostream& ostr = cout) const*

These new functions can be used instead of affiche_seuil.

Here is an example of usage:

#include <stdlib.h>
#include "tensor.h"

int main() {

// Construction of a multi-grid
Mg3d mgrid(2, 9, 5, 8, SYM, NONSYM, false) ;

// Construction of an affine mapping
double r_limits[] = {0., 1., 2.} ;
Map_af map(mgrid, r_limits) ;

// Construction of a scalar field
const Coord& x = map.x ;
const Coord& y = map.y ;
const Coord& z = map.z ;

Scalar uu(map) ;

uu = 1 + x + 2*y - z*z + x*y + x*x*y - z*z*y  ;

uu.std_spectral_base() ;   // sets the "standard" spectral basis
cout << "uu : " << endl ;
uu.spectral_display() ;

return EXIT_SUCCESS ;
}

The output is:

uu :
Spectral expansion (Mtbl_cf, threshold for display = 1e-07)
Bases of spectral expansions:
Domain #0 : r: R_CHEBPIM_P,  theta: T_COSSIN_CP,  phi: P_COSSIN
Domain #1 : r: R_CHEB     ,  theta: T_COSSIN_CP,  phi: P_COSSIN

--------- Domain no. 0 ------- nr x nt x np = 9 x 5 x 8 ------
# cos0p cos0t : 0.7500 T0 -0.2500 T2
# cos0p cos2t : -0.2500 T0 -0.2500 T2
# cos1p sin1t : 1.0000 T1
# sin1p sin1t : 1.953 T1 -0.01562 T3
# sin1p sin3t : -0.2344 T1 -0.07812 T3
# sin2p cos0t : 0.1250 T0 +0.1250 T2
# sin2p cos2t : -0.1250 T0 -0.1250 T2
# sin3p sin1t : 0.1406 T1 +0.04687 T3
# sin3p sin3t : -0.04688 T1 -0.01562 T3

--------- Domain no. 1 ------- nr x nt x np = 9 x 5 x 8 ------
# cos0p cos0t : -0.1875 T0 -0.7500 T1 -0.06250 T2
# cos0p cos2t : -1.187 T0 -0.7500 T1 -0.06250 T2
# cos1p sin1t : 1.500 T0 +0.5000 T1
# sin1p sin1t : 2.754 T0 +0.7832 T1 -0.03516 T2 -0.001953 T3
# sin1p sin3t : -1.230 T0 -1.084 T1 -0.1758 T2 -0.009766 T3
# sin2p cos0t : 0.5937 T0 +0.3750 T1 +0.03125 T2
# sin2p cos2t : -0.5938 T0 -0.3750 T1 -0.03125 T2
# sin3p sin1t : 0.7383 T0 +0.6504 T1 +0.1055 T2 +0.005859 T3
# sin3p sin3t : -0.2461 T0 -0.2168 T1 -0.03516 T2 -0.001953 T3

Best wishes,

Eric.

--
Eric Gourgoulhon
Laboratoire de l'Univers et de ses THeories (LUTH)
UMR 8102 du CNRS / Observatoire de Paris, F-92195 Meudon Cedex, France
tel: +33 1.45.07.74.33 (secretariat : +33 1.45.07.75.10)
e-mail: Eric.Gourgoulhon at obspm.fr    WWW: http://www.luth.obspm.fr/

```