31char vector_poisson_boundary_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Tensor/vector_poisson_boundary.C,v 1.3 2014/10/13 08:53:45 j_novak Exp $" ;
60#include "param_elliptic.h"
62#include "utilitaires.h"
72 for (
int i=0;
i<3;
i++)
82 cout <<
"Not implemented yet !!" <<
endl ;
99 if (
S_r.get_etat() == ETATZERO)
S_r.annule_hard() ;
101 if (
S_eta.get_etat() == ETATZERO)
S_eta.annule_hard() ;
102 S_r.set_spectral_va().ylm() ;
103 S_eta.set_spectral_va().ylm() ;
117 for (
int l=0;
l<nz;
l++)
132 int l_q = 0 ;
int m_q = 0;
int base_r = 0 ;
133 double alpha, beta,
ech ;
147 for (
int k=0 ;
k<np+1 ;
k++) {
148 for (
int j=0 ;
j<nt ;
j++) {
150 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q != 0) ) {
193 Tbl sr(nr) ;
sr.set_etat_qcq() ;
195 for (
int i=0;
i<nr;
i++) {
201 multx2_1d(nr, &
x2sr.t, base_r) ; multx_1d(nr, &xsr.
t, base_r) ;
202 multx2_1d(nr, &
x2seta.t, base_r) ; multx_1d(nr, &
xseta.t, base_r) ;
209 + alpha*(alpha*
x2sr(
i) + 2*beta*xsr(
i)) ;
231 for (
int i=0 ;
i<nr ;
i++) {
255 for (
int k=0 ;
k<np+1 ;
k++) {
256 for (
int j=0 ;
j<nt ;
j++) {
258 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q != 0) ) {
327 for (
int i=0 ;
i<nr ;
i++) {
344 vr.set_spectral_base(base) ;
345 vr.set_spectral_va().set_etat_cf_qcq() ;
347 cf_vr.annule_hard() ;
349 het.set_spectral_base(base) ;
350 het.set_spectral_va().set_etat_cf_qcq() ;
361 for (
int k=0 ;
k<np+1 ;
k++)
362 for (
int j=0 ;
j<nt ;
j++) {
364 if ((nullite_plm(
j, nt,
k, np, base) == 1)&&(
l_q != 0)) {
373 for (
int l=0;
l<taille;
l++)
374 for (
int c=0; c<taille; c++)
392 for (
int i=0 ;
i<nr ;
i++)
404 for (
int i=0 ;
i<nr ;
i++)
423 for (
int i=0 ;
i<nr ;
i++)
432 for (
int i=0 ;
i<nr ;
i++)
450 for (
int i=0 ;
i<nr ;
i++)
462 for (
int i=0 ;
i<nr ;
i++)
483 for (
int i=0 ;
i<nr ;
i++)
493 for (
int i=0 ;
i<nr ;
i++)
511 for (
int i=0 ;
i<nr ;
i++)
526 for (
int i=0 ;
i<nr ;
i++)
541 for (
int i=0 ;
i<nr ;
i++)
550 for (
int i=0 ;
i<nr ;
i++)
566 for (
int i=0 ;
i<nr ;
i++)
578 for (
int i=0 ;
i<nr ;
i++)
593 for (
int i=0 ;
i<nr ;
i++)
599 for (
int i=0 ;
i<nr ;
i++)
608 for (
int i=0 ;
i<nr ;
i++)
618 for (
int i=0 ;
i<nr ;
i++)
627 if (taille > 2)
systeme.set_band(5,5) ;
639 for (
int i=0 ;
i<nr ;
i++) {
655 for (
int i=0 ;
i<nr ;
i++) {
666 vr.set_spectral_va().ylm_i() ;
668 het.set_spectral_va().ylm_i() ;
721 int nz =
mp->get_mg()->get_nzone() ;
722 for (
int l=0;
l<nz;
l++)
723 for (
int j=0;
j<
mp->get_mg()->get_nt(
l);
j++)
724 for (
int k=0;
k<
mp->get_mg()->get_np(
l);
k++) {
750 int nnp = (*mp).get_mg()->get_np(1) ;
751 int nnt = (*mp).get_mg()->get_nt(1) ;
753 for (
int k=0 ;
k<
nnp ;
k++)
754 for (
int j=0 ;
j<
nnt ;
j++)
765 for (
int k=0 ;
k<
nnp ;
k++)
766 for (
int j=0 ;
j<
nnt ;
j++)
777 for (
int i=0;
i<3;
i++) {
779 if (
cmp[
i]->get_etat() != ETATZERO ||
bound_vr.get_etat() != ETATZERO ||
786 resu.set_etat_zero() ;
Bases of the spectral expansions.
void give_quant_numbers(int, int, int, int &, int &, int &) const
Computes the various quantum numbers and 1d radial base.
Spherical orthonormal vectorial bases (triads).
Class for the elementary differential operator (see the base class Diff ).
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 (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Time evolution with partial storage (*** under development ***).
const Mg3d * get_angu() const
Returns the pointer on the associated angular grid.
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_nzone() const
Returns the number of domains.
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
int get_type_r(int l) const
Returns the type of sampling in the radial direction in domain no.
Coefficients storage for the multi-domain spectral method.
This class contains the parameters needed to call the general elliptic solver.
Tensor field of valence 0 (or component of a tensorial field).
double * t
The array of double.
Values and coefficients of a (real-value) function.
Tensor field of valence 1.
void poisson_boundary(double lambda, const Mtbl_cf &limit_vr, const Mtbl_cf &limit_eta, const Mtbl_cf &limit_mu, int num_front, double fact_dir, double fact_neu, Vector &resu) const
Solves the vector Poisson equation with *this as a source with a boundary condition on the excised sp...
virtual const Scalar & mu() const
Gives the field such that the angular components of the vector are written:
Vector poisson_neumann(double lambda, const Valeur &limit_vr, const Valeur &limit_vt, const Valeur &limit_vp, int num_front) const
Solves the vector Poisson equation with *this as a source with a boundary condition on the excised sp...
virtual const Scalar & eta() const
Gives the field such that the angular components of the vector are written:
Vector poisson_robin(double lambda, const Valeur &limit_vr, const Valeur &limit_vt, const Valeur &limit_vp, double fact_dir, double fact_neu, int num_front) const
Solves the vector Poisson equation with *this as a source with a boundary condition on the excised sp...
Tbl norme(const Cmp &)
Sums of the absolute values of all the values of the Cmp in each domain.
Cmp pow(const Cmp &, int)
Power .
const Map *const mp
Mapping on which the numerical values at the grid points are defined.
Scalar ** cmp
Array of size n_comp of pointers onto the components.
const Base_vect * triad
Vectorial basis (triad) with respect to which the tensor components are defined.