67#include "param_elliptic.h"
92 if (
aaa.get_etat() == ETATZERO) {
110 int nz =
mgrid.get_nzone() ;
125 int nt =
mgrid.get_nt(0) ;
126 int np =
mgrid.get_np(0) ;
133 source.set_spectral_va().ylm() ;
140 tilde_mu.set_spectral_va().set_etat_cf_qcq() ;
141 tilde_mu.set_spectral_va().c_cf->annule_hard() ;
142 x_new.annule_hard() ;
143 x_new.set_spectral_base(base) ;
144 x_new.set_spectral_va().set_etat_cf_qcq() ;
145 x_new.set_spectral_va().c_cf->annule_hard() ;
168 for (
int k=0 ;
k<np+1 ;
k++) {
169 for (
int j=0 ;
j<nt ;
j++) {
172 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
177 for (
int i=0;
i<nr;
i++) {
181 for (
int i=0;
i<nr;
i++) {
203 for (
int k=0 ;
k<np+1 ;
k++) {
204 for (
int j=0 ;
j<nt ;
j++) {
207 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
247 for (
int i=0;
i<nr;
i++) {
254 for (
int i=0;
i<nr;
i++) {
261 for (
int i=0;
i<nr;
i++) {
281 for (
int k=0 ;
k<np+1 ;
k++) {
282 for (
int j=0 ;
j<nt ;
j++) {
285 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
329 for (
int i=0;
i<nr;
i++) {
336 for (
int i=0;
i<nr;
i++) {
348 int taille = 2*
nz_bc ;
349 if (
cedbc) taille-- ;
380 for (
int k=0 ;
k<np+1 ;
k++)
381 for (
int j=0 ;
j<nt ;
j++) {
383 if ((nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
391 int nr =
mgrid.get_nr(1) ;
397 double blob = (*boundmu).val_in_bound_jk(1,
j,
k);
519 nr =
mgrid.get_nr(0) ;
520 for (
int i=0 ;
i<nr ;
i++) {
522 mw.set(0,
k,
j,
i) = 0 ;
524 nr =
mgrid.get_nr(1) ;
525 for (
int i=0 ;
i<nr ;
i++) {
536 for (
int i=0 ;
i<nr ;
i++) {
549 for (
int i=0 ;
i<nr ;
i++) {
560 if (
tilde_mu.set_spectral_va().c != 0x0)
561 delete tilde_mu.set_spectral_va().c ;
562 tilde_mu.set_spectral_va().c = 0x0 ;
563 tilde_mu.set_spectral_va().ylm_i() ;
565 if (
x_new.set_spectral_va().c != 0x0)
566 delete x_new.set_spectral_va().c ;
567 x_new.set_spectral_va().c = 0x0 ;
568 x_new.set_spectral_va().ylm_i();
589 int nz =
mgrid.get_nzone() ;
595 if (
par_bc->get_n_int() > 0)
605 int nt =
mgrid.get_nt(0) ;
606 int np =
mgrid.get_np(0) ;
622 tilde_b.set_spectral_va().ylm();
627 for (
int lz=0;
lz<nz;
lz++) {
629 for (
int k=0;
k<np+1;
k++)
630 for (
int j=0;
j<nt;
j++) {
632 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1))
634 for (
int i=0;
i<nr;
i++)
636 += 2*(*
bb2.get_spectral_va().c_cf)(
lz,
k,
j,
i)
643 if (
tilde_b.set_spectral_va().c != 0x0)
644 delete tilde_b.set_spectral_va().c ;
645 tilde_b.set_spectral_va().c = 0x0 ;
646 tilde_b.set_spectral_va().coef_i();
649 if ( (
tilde_b.get_etat() == ETATZERO) && (hh.
get_etat() == ETATZERO) ) {
668 source.set_spectral_va().ylm() ;
675 hoverr.set_spectral_va().ylm() ;
677 dhdr.set_spectral_va().ylm() ;
679 h_coq.set_spectral_va().ylm() ;
682 dh_coq.set_spectral_va().ylm() ;
693 if ((
par_mat->get_n_int_mod() >= 4)
694 &&(
par_mat->get_n_tbl_mod()>=1)
695 &&(
par_mat->get_n_matrice_mod()>=1)
696 &&(
par_mat->get_n_itbl_mod()>=1)) {
729 pnr->set_etat_qcq() ;
731 for (
int l=0;
l<nz;
l++)
745 hrr.set_spectral_base(base) ;
746 hrr.set_spectral_va().set_etat_cf_qcq() ;
747 hrr.set_spectral_va().c_cf->annule_hard() ;
750 tilde_eta.set_spectral_va().set_etat_cf_qcq() ;
751 tilde_eta.set_spectral_va().c_cf->annule_hard() ;
789 for (
int k=0 ;
k<np+1 ;
k++) {
790 for (
int j=0 ;
j<nt ;
j++) {
793 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
834 ope.set(2*nr-1,
col) = 0 ;
835 ope.set(3*nr-1,
col) = 0 ;
847 ope.set(nr-1, nr-1) = 1 ;
848 ope.set(2*nr-1, 2*nr-1) = 1 ;
849 ope.set(3*nr-1, 3*nr-1) = 1 ;
894 sec.set(3*nr-1) = 0 ;
896 for (
int i=0;
i<nr;
i++) {
912 for (
int i=0;
i<nr;
i++) {
937 for (
int k=0 ;
k<np+1 ;
k++) {
938 for (
int j=0 ;
j<nt ;
j++) {
941 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
1000 sec.set_etat_qcq() ;
1012 sec.set(
lin+nr) = -0.5*(*
h_coq.get_spectral_va().c_cf)
1032 for (
int i=0;
i<nr;
i++) {
1040 for (
int i=0;
i<nr;
i++) {
1048 for (
int i=0;
i<nr;
i++) {
1056 for (
int i=0;
i<nr;
i++) {
1078 for (
int k=0 ;
k<np+1 ;
k++) {
1079 for (
int j=0 ;
j<nt ;
j++) {
1082 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
1084 ope.set_etat_qcq() ;
1144 sec.set_etat_qcq() ;
1156 sec.set(
lin+nr) = -0.5*(*
hoverr.get_spectral_va().c_cf)
1178 for (
int i=0;
i<nr;
i++) {
1186 for (
int i=0;
i<nr;
i++) {
1194 for (
int i=0;
i<nr;
i++) {
1208 int taille = 3*
nz_bc ;
1209 if (
cedbc) taille-- ;
1255 for (
int k=0 ;
k<np+1 ;
k++)
1256 for (
int j=0 ;
j<nt ;
j++) {
1258 if ((nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q > 1)) {
1266 int nr =
mgrid.get_nr(1);
1270 const Coord&
rr = (*mp_aff).r ;
1298 double blob = (*(
bound_eta.get_spectral_va().c_cf)).val_in_bound_jk(1,
j,
k);
1490 nr =
mgrid.get_nr(0) ;
1491 for (
int i=0 ;
i<nr ;
i++) {
1494 mw.set(0,
k,
j,
i) = 0 ;
1498 for (
int i=0 ;
i<nr ;
i++) {
1518 for (
int i=0 ;
i<nr ;
i++) {
1536 if (
hrr.set_spectral_va().c != 0x0)
1537 delete hrr.set_spectral_va().c;
1538 hrr.set_spectral_va().c = 0x0 ;
1539 hrr.set_spectral_va().ylm_i() ;
1541 if (
tilde_eta.set_spectral_va().c != 0x0)
1572 int nz =
mgrid.get_nzone() ;
1582 int nt = mgrid.
get_nt(0) ;
1583 int np = mgrid.
get_np(0) ;
1585 Scalar source = hh ;
1587 Scalar source_coq = hh ;
1589 source_coq.set_spectral_va().ylm() ;
1590 Base_val base = source.get_spectral_base() ;
1592 int lmax = base.give_lmax(mgrid, 0) + 1;
1599 Mtbl_cf sol_part_hrr(mgrid, base) ; sol_part_hrr.annule_hard() ;
1600 Mtbl_cf sol_part_eta(mgrid, base) ; sol_part_eta.annule_hard() ;
1601 Mtbl_cf sol_hom1_hrr(mgrid, base) ; sol_hom1_hrr.annule_hard() ;
1602 Mtbl_cf sol_hom1_eta(mgrid, base) ; sol_hom1_eta.annule_hard() ;
1603 Mtbl_cf sol_hom2_hrr(mgrid, base) ; sol_hom2_hrr.annule_hard() ;
1604 Mtbl_cf sol_hom2_eta(mgrid, base) ; sol_hom2_eta.annule_hard() ;
1606 bool need_calculation = true ;
1611 int l_q, m_q, base_r ;
1612 Itbl mat_done(lmax) ;
1618 int nr = mgrid.
get_nr(lz) ;
1619 double alpha = mp_aff->
get_alpha()[lz] ;
1620 Matrice ope(2*nr, 2*nr) ;
1621 if (need_calculation && (par_mat != 0x0)) mat_done.annule_hard() ;
1623 for (
int k=0 ; k<np+1 ; k++) {
1624 for (
int j=0 ; j<nt ; j++) {
1626 base.give_quant_numbers(lz, k, j, m_q, l_q, base_r) ;
1627 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q < 2)) {
1628 if (need_calculation) {
1629 ope.set_etat_qcq() ;
1630 Diff_dsdx od(base_r, nr) ;
const Matrice& md = od.get_matrice() ;
1631 Diff_sx os(base_r, nr) ;
const Matrice& ms = os.get_matrice() ;
1633 for (
int lin=0; lin<nr; lin++)
1634 for (
int col=0; col<nr; col++)
1635 ope.set(lin,col) = md(lin,col) + 3*ms(lin,col) ;
1636 for (
int lin=0; lin<nr; lin++)
1637 for (
int col=0; col<nr; col++)
1638 ope.set(lin,col+nr) = -l_q*(l_q+1)*ms(lin,col) ;
1639 for (
int lin=0; lin<nr; lin++)
1640 for (
int col=0; col<nr; col++)
1641 ope.set(lin+nr,col) = -0.5*ms(lin,col) ;
1642 for (
int lin=0; lin<nr; lin++)
1643 for (
int col=0; col<nr; col++)
1644 ope.set(lin+nr,col+nr) = md(lin,col) + 3*ms(lin, col);
1647 for (
int col=0; col<2*nr; col++) {
1648 ope.set(nr-1, col) = 0 ;
1649 ope.set(2*nr-1, col) = 0 ;
1653 for (
int col=0; col<nr; col++) {
1654 ope.set(nr-1, col) = pari ;
1655 ope.set(2*nr-1, col+nr) = pari ;
1660 ope.set(nr-1, nr-1) = 1 ;
1661 ope.set(2*nr-1, 2*nr-1) = 1 ;
1665 if ((par_mat != 0x0) && (mat_done(l_q) == 0)) {
1666 Matrice* pope =
new Matrice(ope) ;
1668 mat_done.set(l_q) = 1 ;
1672 const Matrice& oper = (par_mat == 0x0 ? ope :
1675 sec.set_etat_qcq() ;
1676 for (
int lin=0; lin<nr; lin++)
1677 sec.set(lin) = (*source.get_spectral_va().c_cf)(lz, k, j, lin) ;
1678 for (
int lin=0; lin<nr; lin++)
1679 sec.set(nr+lin) = -0.5*(*source.get_spectral_va().c_cf)
1685 for (
int col=0; col<nr; col++) {
1687 (*source_coq.get_spectral_va().c_cf)(lz, k, j, col) ;
1690 sec.set(nr-1) = h0 / 3. ;
1692 sec.set(2*nr-1) = 0 ;
1693 Tbl sol = oper.inverse(sec) ;
1694 for (
int i=0; i<nr; i++) {
1695 sol_part_hrr.set(lz, k, j, i) = sol(i) ;
1696 sol_part_eta.set(lz, k, j, i) = sol(i+nr) ;
1708 for (
int lz=1; lz<nz-1; lz++) {
1709 if (need_calculation && (par_mat != 0x0)) mat_done.annule_hard() ;
1710 int nr = mgrid.
get_nr(lz) ;
1713 assert(mgrid.
get_nt(lz) == nt) ;
1714 assert(mgrid.
get_np(lz) == np) ;
1715 double alpha = mp_aff->
get_alpha()[lz] ;
1716 double ech = mp_aff->
get_beta()[lz] / alpha ;
1717 Matrice ope(2*nr, 2*nr) ;
1719 for (
int k=0 ; k<np+1 ; k++) {
1720 for (
int j=0 ; j<nt ; j++) {
1722 base.give_quant_numbers(lz, k, j, m_q, l_q, base_r) ;
1723 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q < 2)) {
1724 if (need_calculation) {
1725 ope.set_etat_qcq() ;
1726 Diff_xdsdx oxd(base_r, nr) ;
const Matrice& mxd = oxd.get_matrice() ;
1727 Diff_dsdx od(base_r, nr) ;
const Matrice& md = od.get_matrice() ;
1728 Diff_id oid(base_r, nr) ;
const Matrice& mid = oid.get_matrice() ;
1730 for (
int lin=0; lin<nr; lin++)
1731 for (
int col=0; col<nr; col++)
1732 ope.set(lin,col) = mxd(lin,col) + ech*md(lin,col)
1734 for (
int lin=0; lin<nr; lin++)
1735 for (
int col=0; col<nr; col++)
1736 ope.set(lin,col+nr) = -l_q*(l_q+1)*mid(lin,col) ;
1737 for (
int lin=0; lin<nr; lin++)
1738 for (
int col=0; col<nr; col++)
1739 ope.set(lin+nr,col) = -0.5*mid(lin,col) ;
1740 for (
int lin=0; lin<nr; lin++)
1741 for (
int col=0; col<nr; col++)
1742 ope.set(lin+nr,col+nr) = mxd(lin,col) + ech*md(lin,col)
1745 for (
int col=0; col<2*nr; col++) {
1746 ope.set(ind0+nr-1, col) = 0 ;
1747 ope.set(ind1+nr-1, col) = 0 ;
1749 ope.set(ind0+nr-1, ind0) = 1 ;
1750 ope.set(ind1+nr-1, ind1) = 1 ;
1753 if ((par_mat != 0x0) && (mat_done(l_q) == 0)) {
1754 Matrice* pope =
new Matrice(ope) ;
1756 mat_done.set(l_q) = 1 ;
1759 const Matrice& oper = (par_mat == 0x0 ? ope :
1762 sec.set_etat_qcq() ;
1763 for (
int lin=0; lin<nr; lin++)
1764 sec.set(lin) = (*source_coq.get_spectral_va().c_cf)
1766 for (
int lin=0; lin<nr; lin++)
1767 sec.set(nr+lin) = -0.5*(*source_coq.get_spectral_va().c_cf)
1769 sec.set(ind0+nr-1) = 0 ;
1770 sec.set(ind1+nr-1) = 0 ;
1771 Tbl sol = oper.inverse(sec) ;
1773 for (
int i=0; i<nr; i++) {
1774 sol_part_hrr.set(lz, k, j, i) = sol(i) ;
1775 sol_part_eta.set(lz, k, j, i) = sol(i+nr) ;
1778 sec.set(ind0+nr-1) = 1 ;
1779 sol = oper.inverse(sec) ;
1780 for (
int i=0; i<nr; i++) {
1781 sol_hom1_hrr.set(lz, k, j, i) = sol(i) ;
1782 sol_hom1_eta.set(lz, k, j, i) = sol(i+nr) ;
1784 sec.set(ind0+nr-1) = 0 ;
1785 sec.set(ind1+nr-1) = 1 ;
1786 sol = oper.inverse(sec) ;
1787 for (
int i=0; i<nr; i++) {
1788 sol_hom2_hrr.set(lz, k, j, i) = sol(i) ;
1789 sol_hom2_eta.set(lz, k, j, i) = sol(i+nr) ;
1800 if (need_calculation && (par_mat != 0x0)) mat_done.annule_hard() ;
1801 int nr = mgrid.
get_nr(lz) ;
1804 assert(mgrid.
get_nt(lz) == nt) ;
1805 assert(mgrid.
get_np(lz) == np) ;
1806 double alpha = mp_aff->
get_alpha()[lz] ;
1807 Matrice ope(2*nr, 2*nr) ;
1809 for (
int k=0 ; k<np+1 ; k++) {
1810 for (
int j=0 ; j<nt ; j++) {
1812 base.give_quant_numbers(lz, k, j, m_q, l_q, base_r) ;
1813 if ( (nullite_plm(j, nt, k, np, base) == 1) && (l_q < 2)) {
1814 if (need_calculation) {
1815 ope.set_etat_qcq() ;
1816 Diff_dsdx od(base_r, nr) ;
const Matrice& md = od.get_matrice() ;
1817 Diff_sx os(base_r, nr) ;
const Matrice& ms = os.get_matrice() ;
1819 for (
int lin=0; lin<nr; lin++)
1820 for (
int col=0; col<nr; col++)
1821 ope.set(lin,col) = - md(lin,col) + 3*ms(lin,col) ;
1822 for (
int lin=0; lin<nr; lin++)
1823 for (
int col=0; col<nr; col++)
1824 ope.set(lin,col+nr) = -l_q*(l_q+1)*ms(lin,col) ;
1825 for (
int lin=0; lin<nr; lin++)
1826 for (
int col=0; col<nr; col++)
1827 ope.set(lin+nr,col) = -0.5*ms(lin,col) ;
1828 for (
int lin=0; lin<nr; lin++)
1829 for (
int col=0; col<nr; col++)
1830 ope.set(lin+nr,col+nr) = -md(lin,col) + 3*ms(lin, col) ;
1833 for (
int col=0; col<2*nr; col++) {
1834 ope.set(ind0+nr-2, col) = 0 ;
1835 ope.set(ind0+nr-1, col) = 0 ;
1836 ope.set(ind1+nr-2, col) = 0 ;
1837 ope.set(ind1+nr-1, col) = 0 ;
1839 for (
int col=0; col<nr; col++) {
1840 ope.set(ind0+nr-1, col+ind0) = 1 ;
1841 ope.set(ind1+nr-1, col+ind1) = 1 ;
1843 ope.set(ind0+nr-2, ind0+1) = 1 ;
1844 ope.set(ind1+nr-2, ind1+1) = 1 ;
1847 if ((par_mat != 0x0) && (mat_done(l_q) == 0)) {
1848 Matrice* pope =
new Matrice(ope) ;
1850 mat_done.set(l_q) = 1 ;
1853 const Matrice& oper = (par_mat == 0x0 ? ope :
1856 sec.set_etat_qcq() ;
1857 for (
int lin=0; lin<nr; lin++)
1858 sec.set(lin) = (*source.get_spectral_va().c_cf)
1860 for (
int lin=0; lin<nr; lin++)
1861 sec.set(nr+lin) = -0.5*(*source.get_spectral_va().c_cf)
1863 sec.set(ind0+nr-2) = 0 ;
1864 sec.set(ind0+nr-1) = 0 ;
1865 sec.set(ind1+nr-2) = 0 ;
1866 sec.set(ind1+nr-1) = 0 ;
1867 Tbl sol = oper.inverse(sec) ;
1868 for (
int i=0; i<nr; i++) {
1869 sol_part_hrr.set(lz, k, j, i) = sol(i) ;
1870 sol_part_eta.set(lz, k, j, i) = sol(i+nr) ;
1873 sec.set(ind0+nr-2) = 1 ;
1874 sol = oper.inverse(sec) ;
1875 for (
int i=0; i<nr; i++) {
1876 sol_hom1_hrr.set(lz, k, j, i) = sol(i) ;
1877 sol_hom1_eta.set(lz, k, j, i) = sol(i+nr) ;
1879 sec.set(ind0+nr-2) = 0 ;
1880 sec.set(ind1+nr-2) = 1 ;
1881 sol = oper.inverse(sec) ;
1882 for (
int i=0; i<nr; i++) {
1883 sol_hom2_hrr.set(lz, k, j, i) = sol(i) ;
1884 sol_hom2_eta.set(lz, k, j, i) = sol(i+nr) ;
1891 int taille = 2*(nz-1) ;
1895 Tbl sec_membre(taille) ;
1896 Matrice systeme(taille, taille) ;
1897 int ligne ;
int colonne ;
1901 for (
int k=0 ; k<np+1 ; k++)
1902 for (
int j=0 ; j<nt ; j++) {
1903 base.give_quant_numbers(0, k, j, m_q, l_q, base_r) ;
1904 if ((nullite_plm(j, nt, k, np, base) == 1) && (l_q < 2)) {
1907 systeme.annule_hard() ;
1908 sec_membre.annule_hard() ;
1911 int nr = mgrid.
get_nr(0) ;
1913 sec_membre.set(ligne) = -sol_part_hrr.val_out_bound_jk(0, j, k) ;
1916 sec_membre.set(ligne) = -sol_part_eta.val_out_bound_jk(0, j, k) ;
1919 for (
int zone=1 ; zone<nz-1 ; zone++) {
1920 nr = mgrid.
get_nr(zone) ;
1924 systeme.set(ligne, colonne) =
1925 - sol_hom1_hrr.val_in_bound_jk(zone, j, k) ;
1926 systeme.set(ligne, colonne+1) =
1927 - sol_hom2_hrr.val_in_bound_jk(zone, j, k) ;
1929 sec_membre.set(ligne) += sol_part_hrr.val_in_bound_jk(zone, j, k) ;
1932 systeme.set(ligne, colonne) =
1933 - sol_hom1_eta.val_in_bound_jk(zone, j, k) ;
1934 systeme.set(ligne, colonne+1) =
1935 - sol_hom2_eta.val_in_bound_jk(zone, j, k) ;
1937 sec_membre.set(ligne) += sol_part_eta.val_in_bound_jk(zone, j, k) ;
1941 systeme.set(ligne, colonne) =
1942 sol_hom1_hrr.val_out_bound_jk(zone, j, k) ;
1943 systeme.set(ligne, colonne+1) =
1944 sol_hom2_hrr.val_out_bound_jk(zone, j, k) ;
1946 sec_membre.set(ligne) -= sol_part_hrr.val_out_bound_jk(zone, j, k) ;
1949 systeme.set(ligne, colonne) =
1950 sol_hom1_eta.val_out_bound_jk(zone, j, k) ;
1951 systeme.set(ligne, colonne+1) =
1952 sol_hom2_eta.val_out_bound_jk(zone, j, k) ;
1954 sec_membre.set(ligne) -= sol_part_eta.val_out_bound_jk(zone, j, k) ;
1960 nr = mgrid.
get_nr(nz-1) ;
1964 systeme.set(ligne, colonne) =
1965 - sol_hom1_hrr.val_in_bound_jk(nz-1, j, k) ;
1966 systeme.set(ligne, colonne+1) =
1967 - sol_hom2_hrr.val_in_bound_jk(nz-1, j, k) ;
1969 sec_membre.set(ligne) += sol_part_hrr.val_in_bound_jk(nz-1, j, k) ;
1972 systeme.set(ligne, colonne) =
1973 - sol_hom1_eta.val_in_bound_jk(nz-1, j, k) ;
1974 systeme.set(ligne, colonne+1) =
1975 - sol_hom2_eta.val_in_bound_jk(nz-1, j, k) ;
1977 sec_membre.set(ligne) += sol_part_eta.val_in_bound_jk(nz-1, j, k) ;
1983 Tbl facteur = systeme.inverse(sec_membre) ;
1989 for (
int i=0 ; i<nr ; i++) {
1990 mhrr.set(0, k, j, i) = sol_part_hrr(0, k, j, i) ;
1991 meta.set(0, k, j, i) = sol_part_eta(0, k, j, i) ;
1993 for (
int zone=1 ; zone<nz-1 ; zone++) {
1994 nr = mgrid.
get_nr(zone) ;
1995 for (
int i=0 ; i<nr ; i++) {
1996 mhrr.set(zone, k, j, i) = sol_part_hrr(zone, k, j, i)
1997 + facteur(conte)*sol_hom1_hrr(zone, k, j, i)
1998 + facteur(conte+1)*sol_hom2_hrr(zone, k, j, i) ;
2000 meta.set(zone, k, j, i) = sol_part_eta(zone, k, j, i)
2001 + facteur(conte)*sol_hom1_eta(zone, k, j, i)
2002 + facteur(conte+1)*sol_hom2_eta(zone, k, j, i) ;
2006 nr = mgrid.
get_nr(nz-1) ;
2007 for (
int i=0 ; i<nr ; i++) {
2008 mhrr.set(nz-1, k, j, i) = sol_part_hrr(nz-1, k, j, i)
2009 + facteur(conte)*sol_hom1_hrr(nz-1, k, j, i)
2010 + facteur(conte+1)*sol_hom2_hrr(nz-1, k, j, i) ;
2012 meta.set(nz-1, k, j, i) = sol_part_eta(nz-1, k, j, i)
2013 + facteur(conte)*sol_hom1_eta(nz-1, k, j, i)
2014 + facteur(conte+1)*sol_hom2_eta(nz-1, k, j, i) ;
Bases of the spectral expansions.
void mult_x()
The basis is transformed as with a multiplication by .
int give_lmax(const Mg3d &mgrid, int lz) const
Returns the highest multipole for a given grid.
void give_quant_numbers(int, int, int, int &, int &, int &) const
Computes the various quantum numbers and 1d radial base.
Active physical coordinates and mapping derivatives.
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator Identity (see the base class Diff ).
Class for the elementary differential operator division by (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Time evolution with partial storage (*** under development ***).
Basic integer array class.
const double * get_beta() const
Returns the pointer on the array beta.
const double * get_alpha() const
Returns the pointer on the array alpha.
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
int get_np(int l) const
Returns the number of points in the azimuthal direction ( ) in domain no. l.
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
Coefficients storage for the multi-domain spectral method.
void annule_hard()
Sets the Mtbl_cf to zero in a hard way.
int get_n_matrice_mod() const
Returns the number of modifiable Matrice 's addresses in the list.
void add_matrice_mod(Matrice &ti, int position=0)
Adds the address of a new modifiable Matrice to the list.
Matrice & get_matrice_mod(int position=0) const
Returns the reference of a modifiable Matrice stored in the list.
Tensor field of valence 0 (or component of a tensorial field).
void div_r_dzpuis(int ced_mult_r)
Division by r everywhere but with the output flag dzpuis set to ced_mult_r .
bool check_dzpuis(int dzi) const
Returns false if the last domain is compactified and *this is not zero in this domain and dzpuis is n...
const Scalar & dsdr() const
Returns of *this .
Valeur & set_spectral_va()
Returns va (read/write version)
const Valeur & get_spectral_va() const
Returns va (read only version)
void annule_hard()
Sets the Scalar to zero in a hard way.
int get_etat() const
Returns the logical state ETATNONDEF (undefined), ETATZERO (null) or ETATQCQ (ordinary).
const Base_val & get_spectral_base() const
Returns the spectral bases of the Valeur va
void set_spectral_base(const Base_val &)
Sets the spectral bases of the Valeur va
void sol_Dirac_BC2(const Scalar &bb, const Scalar &cc, const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Scalar &ww, Scalar bound_eta, double dir, double neum, double rhor, Param *par_bc, Param *par_mat)
Same resolution as sol_Dirac_tilde_B, but with inner boundary conditions added.
void sol_Dirac_Abound(const Scalar &aaa, Scalar &tilde_mu, Scalar &x_new, Scalar bound_mu, const Param *par_bc)
Same resolution as sol_Dirac_A, but with inner boundary conditions added.
void sol_Dirac_l01(const Scalar &hh, Scalar &hrr, Scalar &tilde_eta, Param *par_mat) const
Solves the same system as Sym_tensor_trans::sol_Dirac_tilde_B but only for .
void set_etat_cf_qcq()
Sets the logical state to ETATQCQ (ordinary state) for values in the configuration space (Mtbl_cf c_c...
void ylm()
Computes the coefficients of *this.
Mtbl * c
Values of the function at the points of the multi-grid
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
void ylm_i()
Inverse of ylm()
#define R_CHEBP
base de Cheb. paire (rare) seulement
const Map *const mp
Mapping on which the numerical values at the grid points are defined.