26 char spheroid_C[] =
"$Header: /cvsroot/Lorene/C++/Source/App_hor/spheroid.C,v 1.21 2014/10/13 08:52:38 j_novak Exp $" ;
96 jac2d(map, 2, COV, map.get_bvect_spher()),
97 proj(map, 2, COV, map.get_bvect_spher()),
98 qq(map, COV, map.get_bvect_spher()),
99 ss (map, COV, map.get_bvect_spher()),
100 ephi(map, CON, map.get_bvect_spher()),
101 qab(map.flat_met_spher()),
103 hh(map, COV, map.get_bvect_spher()),
105 ll(map, COV, map.get_bvect_spher()),
106 jj(map, COV, map.get_bvect_spher()),
119 assert(radius > 1.e-15) ;
137 for (
int i=1; i<=3; i++)
138 hh.
set(i,i) = 2./radius ;
152 jac2d(h_in.get_mp(),2, COV, h_in.get_mp().get_bvect_spher()),
153 proj(h_in.get_mp(),2, COV, h_in.get_mp().get_bvect_spher()),
154 qq(h_in.get_mp(), COV, h_in.get_mp().get_bvect_spher()),
155 ss (h_in.get_mp(), COV, h_in.get_mp().get_bvect_spher()),
156 ephi(h_in.get_mp(), CON, h_in.get_mp().get_bvect_spher()),
157 qab(h_in.get_mp().flat_met_spher()),
158 ricci(h_in.get_mp()),
159 hh(h_in.get_mp(), COV, h_in.get_mp().get_bvect_spher()),
161 ll(h_in.get_mp(), COV, h_in.get_mp().get_bvect_spher()),
162 jj(h_in.get_mp(), COV, h_in.get_mp().get_bvect_spher()),
175 assert(mp_rad != 0x0) ;
180 int np = gri2d.
get_np(0) ;
181 int nt = gri2d.
get_nt(0) ;
183 int nr3 = gri3d.
get_nr(0) ;
184 int nt3 = gri3d.
get_nt(0) ;
185 int np3 = gri3d.
get_np(0) ;
187 assert( nt == nt3 ) ;
188 assert ( np == np3 );
208 for (
int f= 0; f<nz; f++)
209 for (
int k=0; k<np3; k++)
210 for (
int j=0; j<nt3; j++) {
211 for (
int l=0; l<nr3; l++) {
241 for (
int l=1; l<4; l++)
242 for (
int m=1; m<4; m++)
243 for (
int k=0; k<np; k++)
244 for (
int j=0; j<nt; j++) {
246 j, k, pipo, lz, xi) ;
248 jac(l,m).get_spectral_va().val_point_jk(lz, xi, j, k) ;
253 jac_inv.
set(1,2) = - jac_inv(1,2);
254 jac_inv.
set(1,3) = - jac_inv(1,3) ;
264 ss3d = ss3d /
sqrt (ssnorm) ;
265 ss3dcon = ss3dcon /
sqrt (ssnorm) ;
280 for (
int ii=1; ii <=3; ii++){
284 for (
int ii=1; ii <=3; ii++)
285 for (
int jjy = 1; jjy <=3; jjy ++){
286 jac_inv.
set(ii, jjy).
dec_dzpuis(jac_inv(ii, jjy).get_dzpuis());
295 ss3 =
contract(jac_inv, 0, ss3d, 0);
299 for (
int l=1; l<4; l++)
300 for (
int k=0; k<np; k++)
301 for (
int j=0; j<nt; j++) {
305 ss3(l).get_spectral_va().val_point_jk(lz, xi, j, k) ;
315 ephi3.
set(3) = ephi33;
321 for (
int l=1; l<4; l++)
322 for (
int k=0; k<np; k++)
323 for (
int j=0; j<nt; j++) {
325 j, k, pipo, lz, xi) ;
327 ephi3(l).get_spectral_va().val_point_jk(lz, xi, j, k) ;
332 Tensor proj_prov = gamij.
con().
down(1, gamij) - ss3dcon*ss3d;
339 for (
int l=1; l<4; l++)
340 for (
int m=1; m<4; m++)
341 for (
int k=0; k<np; k++)
342 for (
int j=0; j<nt; j++) {
344 j, k, pipo, lz, xi) ;
346 proj3d(l,m).get_spectral_va().val_point_jk(lz, xi, j, k) ;
360 + 2* gamij.
cov()(1,2)* (h_surf3.
srdsdt()) + gamij.
cov()(2,2);
372 for (
int l=1; l<4; l++)
373 for (
int m=1; m<4; m++)
374 for (
int k=0; k<np; k++)
375 for (
int j=0; j<nt; j++) {
377 j, k, pipo, lz, xi) ;
379 qq3d(l,m).get_spectral_va().val_point_jk(lz, xi, j, k) ;
385 - ss3d * ss3d) , 0), 1) ;
388 for (
int l=1; l<4; l++)
389 for (
int m=1; m<4; m++)
390 for (
int k=0; k<np; k++)
391 for (
int j=0; j<nt; j++) {
393 j, k, pipo, lz, xi) ;
395 qqq(l,m).get_spectral_va().val_point_jk(lz, xi, j, k) ;
401 for (
int k=0; k<np; k++)
402 for (
int j=0; j<nt; j++) {
404 j, k, pipo, lz, xi) ;
414 for (
int k=0; k<np; k++)
415 for (
int j=0; j<nt; j++) {
427 for (
int k=0; k<np; k++)
428 for (
int j=0; j<nt; j++) {
437 double rayon =
sqrt(
area()/(4.*M_PI));
438 ftilde = -ftilde/(rayon*rayon);
446 double *a_tilde =
new double[nombre];
450 for (
int k=0; k<np+1; k++)
451 for (
int j=0; j<nt; j++) {
452 int l_q, m_q, base_r ;
454 if (nullite_plm(j, nt, k, np, base) == 1) {
455 donne_lm(1, lz, j, k, base, m_q, l_q,base_r) ;
457 a_tilde[l_q] = (*coefftilde)(0, k, j, 0);
467 for (
int k=0; k<np+1; k++)
468 for (
int j=0; j<nt; j++) {
469 int l_q2, m_q2, base_r2 ;
471 if (nullite_plm(j, nt, k, np, base2) == 1) {
472 donne_lm(1, lz, j, k, base2, m_q2, l_q2,base_r2) ;
475 (*dzeta).set(0,k,j,0) = a_tilde[0] + (a_tilde[1]/3.)*
sqrt(2.*1. + 1.);
478 (*dzeta).set(0,k,j,0) =
479 (a_tilde[l_q2 +1]/(2.*l_q2 + 3.))*
sqrt((2.*(l_q2 +1.)+1.)/(2.*l_q2 + 1.))
480 - (a_tilde[l_q2 -1]/(2.*l_q2 - 1.))
481 *
sqrt((2.*(l_q2 - 1.)+1.)/(2.*l_q2 + 1.));
498 for (
int l=1; l<4; l++)
499 for (
int k=0; k<np; k++)
500 for (
int j=0; j<nt; j++) {
504 ll3(l).get_spectral_va().val_point_jk(lz, xi, j, k) ;
513 Tensor jj3d = Kij - ss3d*ll3d - ll3d*ss3d
514 -
contract(Kij, 0 , 1, sxss3dcon , 0, 1)* sxss3d ;
518 for (
int l=1; l<4; l++)
519 for (
int m=1; m<4; m++)
520 for (
int k=0; k<np; k++)
521 for (
int j=0; j<nt; j++) {
523 j, k, pipo, lz, xi) ;
525 jj3(l,m).get_spectral_va().val_point_jk(lz, xi, j, k) ;
535 for (
int l=1; l<4; l++)
536 for (
int m=1; m<4; m++)
537 for (
int k=0; k<np; k++)
538 for (
int j=0; j<nt; j++) {
540 j, k, pipo, lz, xi) ;
542 hh3(l,m).get_spectral_va().val_point_jk(lz, xi, j, k) ;
547 Tensor hh3dupdown = hh3d.
up(0, gamij);
553 Tensor hh3dupup = hh3dupdown.
up(1,gamij);
558 Scalar ricci22 = ricciscal3
564 ricci22 += (hh3d.
trace(gamij)*hh3d.
trace(gamij))
572 for (
int k=0; k<np; k++)
573 for (
int j=0; j<nt; j++) {
606 issphere(sph_in.issphere)
657 if (p_epsilon_A_minus_one != 0x0)
delete p_epsilon_A_minus_one ;
662 if (p_delta != 0x0)
delete p_delta ;
673 p_epsilon_A_minus_one = 0x0;
738 double rayon =
sqrt(
area()/(4.*M_PI));
750 double rayon =
sqrt(
area()/(4.*M_PI));
752 double factor =
mass()/(8. * M_PI);
754 {
for (
int compte=0; compte <=order -1; compte++)
755 factor = factor*rayon;
765 for (
int nn=1; nn<order; nn++){
767 Scalar Pnnew = (2.*nn +1.)*Pn;
769 Pnnew = Pnnew - nn*Pnold;
770 Pnnew = Pnnew/(double(nn) + 1.);
807 double rayon =
sqrt(
area()/(4.*M_PI));
809 double factor = 1./(8. * M_PI);
811 {
for (
int compte=0; compte <=order -2; compte++)
812 factor = factor*rayon;
825 for (
int nn=1; nn<order; nn++){
827 Scalar Pnnew = (2.*nn +1.)*Pn;
829 Pnnew = Pnnew - nn*Pnold;
830 Pnnew = Pnnew/(double(nn) + 1.);
839 dPn = Pn* zeta; dPn = dPn - Pnold; dPn = double(order)*dPn;
842 quotient = quotient*zeta*zeta; quotient = quotient -1.;
865 if (p_epsilon_A_minus_one == 0x0) {
870 return *p_epsilon_A_minus_one;
960 int valence1 = valence0 + 1 ;
961 int valence1m1 = valence1 - 1 ;
982 Itbl tipe(valence1) ;
984 for (
int id = 0;
id<valence0;
id++) {
985 tipe.
set(
id) = tipeuu(
id) ;
987 tipe.
set(valence1m1) = COV ;
1004 Itbl ind1(valence1) ;
1005 Itbl ind0(valence0) ;
1006 Itbl ind(valence0) ;
1026 for (
int ic=0; ic<ncomp1; ic++) {
1035 for (
int id = 0;
id < valence0;
id++) {
1036 ind0.
set(
id) = ind1(
id) ;
1040 int k = ind1(valence1m1) ;
1056 cresu = (uu(ind0)).srdsdt() ;
1059 for (
int id=0;
id<valence0;
id++) {
1061 switch ( ind0(
id) ) {
1093 cerr <<
"Connection_fspher::p_derive_cov : index problem ! "
1107 cresu = (uu(ind0)).srstdsdp() ;
1110 for (
int id=0;
id<valence0;
id++) {
1112 switch ( ind0(
id) ) {
1159 cerr <<
"Connection_fspher::p_derive_cov : index problem ! \n"
1171 cerr <<
"Connection_fspher::p_derive_cov : index problem ! \n" ;
1188 cout <<
"c'est pas fait!" << endl ;
1205 if (p_delta == 0x0) {
1214 for (
int k=1; k<=3; k++) {
1215 for (
int i=1; i<=3; i++) {
1216 for (
int j=1; j<=i; j++) {
1218 for (
int l=1; l<=3; l++) {
1219 cc += qab.
con()(k,l) * (
1220 dgam(l,j,i) + dgam(i,l,j) - dgam(i,j,l) ) ;
1228 p_delta =
new Tensor (christoflat) ;
1245 for (
int y=1; y<=nbboucle; y++){