28char vector_poisson_boundary2_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Tensor/vector_poisson_boundary2.C,v 1.9 2014/10/13 08:53:45 j_novak Exp $" ;
71#include "param_elliptic.h"
75#include "utilitaires.h"
80void Vector::poisson_boundary2(
double lam,
Vector&
resu,
Scalar boundvr,
Scalar boundeta,
Scalar boundmu,
double dir_vr,
double neum_vr,
double dir_eta,
double neum_eta,
double dir_mu,
double neum_mu)
const {
84 for (
int i=0;
i<3;
i++)
95 cout <<
" lambda = -1 is not supported by this code!" <<
endl;
126 if (
S_r.get_etat() == ETATZERO) {
127 if (
S_eta.get_etat() == ETATZERO) {
130 S_r.set_spectral_base(
S_eta.get_spectral_base()) ;
131 S_eta.annule_hard() ;
132 S_eta.set_spectral_base(
S_r.get_spectral_base()) ;
136 S_r.set_spectral_base(
S_eta.get_spectral_base()) ;
139 if (
S_eta.get_etat() == ETATZERO) {
140 S_eta.annule_hard() ;
141 S_eta.set_spectral_base(
S_r.get_spectral_base()) ;
144 S_r.set_spectral_va().ylm() ;
145 S_eta.set_spectral_va().ylm() ;
161 sou_l0.set_spectral_va().ylm() ;
164 for (
int l=0;
l<nz;
l++){
182 double alpha =
mpaff->get_alpha()[1] ;
double alp2 = alpha*alpha ;
183 double beta =
mpaff->get_beta()[1] ;
185 int l_q = 0 ;
int m_q = 0;
int base_r = 0 ;
193 double ech = beta / alpha ;
197 for (
int k=0 ;
k<np+1 ;
k++) {
198 for (
int j=0 ;
j<nt ;
j++) {
200 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q != 0) ) {
262 Tbl sr(nr) ;
sr.set_etat_qcq() ;
264 for (
int i=0;
i<nr;
i++) {
270 multx2_1d(nr, &
x2sr.t, base_r) ; multx_1d(nr, &xsr.
t, base_r) ;
271 multx2_1d(nr, &
x2seta.t, base_r) ; multx_1d(nr, &
xseta.t, base_r) ;
280 + alpha*(alpha*
x2sr(
i) + 2*beta*xsr(
i)) ;
287 for (
int i=0;
i<nr;
i++) {
297 for (
int i=0 ;
i<nr ;
i++) {
304 for (
int i=0 ;
i<nr ;
i++) {
311 for (
int i=0 ;
i<nr ;
i++) {
318 for (
int i=0 ;
i<nr ;
i++) {
338 for (
int k=0 ;
k<np+1 ;
k++) {
339 for (
int j=0 ;
j<nt ;
j++) {
341 if ( (nullite_plm(
j, nt,
k, np, base) == 1) && (
l_q != 0) ) {
419 for (
int i=0;
i<nr;
i++) {
431 for (
int i=0 ;
i<nr ;
i++) {
443 for (
int i=0;
i<nr;
i++) {
450 for (
int i=0;
i<nr;
i++) {
464 vr.set_spectral_base(base) ;
465 vr.set_spectral_va().set_etat_cf_qcq() ;
467 cf_vr.annule_hard() ;
469 het.set_spectral_base(base) ;
470 het.set_spectral_va().set_etat_cf_qcq() ;
473 int taille = 4*
nzm1 -2 ;
481 for (
int k=0 ;
k<np+1 ;
k++)
482 for (
int j=0 ;
j<nt ;
j++) {
484 if ((nullite_plm(
j, nt,
k, np, base) == 1)&&(
l_q != 0)) {
516 for (
int i=0;
i<nr;
i++) {
550 for (
int i=0;
i<nr;
i++) {
596 for (
int i=0;
i<nr;
i++) {
612 for (
int i=0;
i<nr;
i++) {
629 cout <<
"WARNING!! Mapping must contain at least 2 shells!!" <<
endl;}
659 for (
int i=0;
i<nr;
i++) {
675 for (
int i=0;
i<nr;
i++) {
714 for (
int i=0;
i<nr;
i++) {
730 for (
int i=0;
i<nr;
i++) {
767 for (
int i=0;
i<nr;
i++) {
779 for (
int i=0;
i<nr;
i++) {
800 for (
int i=0 ;
i<nr ;
i++) {
807 for (
int i=0 ;
i<nr ;
i++) {
823 for (
int i=0 ;
i<nr ;
i++) {
834 vr.set_spectral_va().ylm_i() ;
836 het.set_spectral_va().ylm_i() ;
842 pipo.std_spectral_base();
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 division by (see the base class Diff ).
virtual const Matrice & get_matrice() const
Returns the matrix associated with the operator.
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 ).
Class for the elementary differential operator (see the base class Diff ).
Time evolution with partial storage (*** under development ***).
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.
Tensor field of valence 1.
virtual const Scalar & mu() const
Gives the field such that the angular components of the vector are written:
virtual const Scalar & eta() const
Gives the field such that the angular components of the vector are written:
void poisson_boundary2(double lam, Vector &resu, Scalar boundvr, Scalar boundeta, Scalar boundmu, double dir_vr, double neum_vr, double dir_eta, double neum_eta, double dir_mu, double neum_mu) const
Alternative to previous poisson_boundary method for vectors ; this uses method 6 for vectorial solvin...
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.