LORENE
Lorene::Scalar Class Reference

Tensor field of valence 0 (or component of a tensorial field). More...

#include <scalar.h>

Inheritance diagram for Lorene::Scalar:
Lorene::Tensor

Public Member Functions

 Scalar (const Map &mpi)
 Constructor from mapping.
 
 Scalar (const Tensor &a)
 Constructor from a Tensor (must be of valence 0)
 
 Scalar (const Scalar &a)
 Copy constructor.
 
 Scalar (const Cmp &a)
 Constructor by conversion of a Cmp.
 
 Scalar (const Map &, const Mg3d &, FILE *)
 Constructor from a file (see sauve(FILE*) )
 
virtual ~Scalar ()
 Destructor.
 
virtual void set_etat_nondef ()
 Sets the logical state to ETATNONDEF (undefined).
 
virtual void set_etat_zero ()
 Sets the logical state to ETATZERO (zero).
 
virtual void set_etat_qcq ()
 Sets the logical state to ETATQCQ (ordinary state).
 
void set_etat_one ()
 Sets the logical state to ETATUN (one).
 
virtual void allocate_all ()
 Sets the logical state to ETATQCQ (ordinary state) and performs the memory allocation of all the elements, down to the double arrays of the Tbl s.
 
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).
 
int get_dzpuis () const
 Returns dzpuis.
 
bool dz_nonzero () const
 Returns true if the last domain is compactified and *this is not zero in this domain.
 
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 not equal to dzi , otherwise return true.
 
bool is_nan (bool verbose=false) const
 Looks for NaNs (not a number) in the scalar field.
 
void operator= (const Scalar &a)
 Assignment to another Scalar defined on the same mapping.
 
virtual void operator= (const Tensor &a)
 Assignment to a Tensor (of valence 0)
 
void operator= (const Cmp &a)
 Assignment to a Cmp.
 
void operator= (const Valeur &a)
 Assignment to a Valeur.
 
void operator= (const Mtbl &a)
 Assignment to a Mtbl.
 
void operator= (double)
 Assignment to a double.
 
void operator= (int)
 Assignment to an int.
 
 operator Cmp () const
 Conversion to a Cmp.
 
const Valeurget_spectral_va () const
 Returns va (read only version)
 
Valeurset_spectral_va ()
 Returns va (read/write version)
 
Tblset_domain (int l)
 Read/write of the value in a given domain.
 
const Tbldomain (int l) const
 Read-only of the value in a given domain.
 
double val_grid_point (int l, int k, int j, int i) const
 Returns the value of the field at a specified grid point.
 
double val_point (double r, double theta, double phi) const
 Computes the value of the field at an arbitrary point $(r, \theta, \phi)$, by means of the spectral expansion.
 
doubleset_grid_point (int l, int k, int j, int i)
 Setting the value of the field at a given grid point.
 
virtual void annule (int l_min, int l_max)
 Sets the Scalar to zero in several domains.
 
void set_inner_boundary (int l, double x)
 Sets the value of the Scalar at the inner boundary of a given domain.
 
void set_outer_boundary (int l, double x)
 Sets the value of the Scalar at the outer boundary of a given domain.
 
Tbl multipole_spectrum () const
 Gives the spectrum in terms of multipolar modes l .
 
Tbl tbl_out_bound (int l_dom, bool leave_ylm=false)
 Returns the Tbl containing the values of angular coefficients at the outer boundary.
 
Tbl tbl_in_bound (int n, bool leave_ylm=false)
 Returns the Tbl containing the values of angular coefficients at the inner boundary.
 
Scalar scalar_out_bound (int n, bool leave_ylm=false)
 Returns the Scalar containing the values of angular coefficients at the outer boundary.
 
const Scalardsdr () const
 Returns $\partial / \partial r$ of *this .
 
const Scalarsrdsdt () const
 Returns $1/r \partial / \partial \theta$ of *this .
 
const Scalarsrstdsdp () const
 Returns $1/(r\sin\theta) \partial / \partial \phi$ of *this .
 
const Scalardsdt () const
 Returns $\partial / \partial \theta$ of *this .
 
const Scalardsdradial () const
 Returns $\partial / \partial r$ of *this if the mapping is affine (class Map_af) and $\partial / \partial \ln r$ of *this if the mapping is logarithmic (class Map_log).
 
const Scalardsdrho () const
 Returns $\partial / \partial \rho $ of *this .
 
const Scalarstdsdp () const
 Returns $1/\sin\theta \partial / \partial \phi$ of *this .
 
const Scalardsdx () const
 Returns $\partial/\partial x$ of *this , where $x=r\sin\theta \cos\phi$.
 
const Scalardsdy () const
 Returns $\partial/\partial y$ of *this , where $y=r\sin\theta \sin\phi$.
 
const Scalardsdz () const
 Returns $\partial/\partial z$ of *this , where $z=r\cos\theta$.
 
const Scalarderiv (int i) const
 Returns $\partial/\partial x_i$ of *this , where $x_i = (x, y, z)$.
 
const Vectorderive_cov (const Metric &gam) const
 Returns the gradient (1-form = covariant vector) of *this

 
const Vectorderive_con (const Metric &gam) const
 Returns the "contravariant" derivative of *this with respect to some metric $\gamma$, by raising the index of the gradient (cf.
 
Scalar derive_lie (const Vector &v) const
 Computes the derivative of this along a vector field v.
 
const Scalarlaplacian (int ced_mult_r=4) const
 Returns the Laplacian of *this.
 
const Scalarlapang () const
 Returns the angular Laplacian $\Delta_{\theta\varphi}$ of *this , where $\Delta_{\theta\varphi} f = \frac{\partial^2 f}
{\partial \theta^2} + \frac{1}{\tan \theta} \frac{\partial f}
{\partial \theta} +\frac{1}{\sin^2 \theta}\frac{\partial^2 f}
{\partial \varphi^2}$.
 
void div_r ()
 Division by r everywhere; dzpuis is not changed.
 
void div_r_dzpuis (int ced_mult_r)
 Division by r everywhere but with the output flag dzpuis
set to ced_mult_r .
 
void div_r_ced ()
 Division by r in the compactified external domain (CED), the dzpuis flag is not changed.
 
void mult_r ()
 Multiplication by r everywhere; dzpuis is not changed.
 
void mult_r_dzpuis (int ced_mult_r)
 Multiplication by r everywhere but with the output flag dzpuis
set to ced_mult_r .
 
void mult_r_ced ()
 Multiplication by r in the compactified external domain (CED), the dzpuis flag is not changed.
 
void mult_rsint ()
 Multiplication by $r\sin\theta$ everywhere; dzpuis is not changed.
 
void mult_rsint_dzpuis (int ced_mult_r)
 Multiplication by $r\sin\theta$ but with the output flag dzpuis set to ced_mult_r .
 
void div_rsint ()
 Division by $r\sin\theta$ everywhere; dzpuis is not changed.
 
void div_rsint_dzpuis (int ced_mult_r)
 Division by $r\sin\theta$ but with the output flag dzpuis set to ced_mult_r .
 
void mult_cost ()
 Multiplication by $\cos\theta$.
 
void div_cost ()
 Division by $\cos\theta$.
 
void mult_sint ()
 Multiplication by $\sin\theta$.
 
void div_sint ()
 Division by $\sin\theta$.
 
void div_tant ()
 Division by $\tan\theta$.
 
Scalar primr (bool null_infty=true) const
 Computes the radial primitive which vanishes for $r\to \infty$.
 
double integrale () const
 Computes the integral over all space of *this .
 
const Tblintegrale_domains () const
 Computes the integral in each domain of *this .
 
virtual void dec_dzpuis (int dec=1)
 Decreases by dec units the value of dzpuis and changes accordingly the values of the Scalar in the compactified external domain (CED).
 
virtual void inc_dzpuis (int inc=1)
 Increases by inc units the value of dzpuis and changes accordingly the values of the Scalar in the compactified external domain (CED).
 
virtual void change_triad (const Base_vect &new_triad)
 Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.
 
void filtre (int n)
 Sets the n lasts coefficients in r to 0 in the external domain.
 
void filtre_r (int *nn)
 Sets the n lasts coefficients in r to 0 in all domains.
 
void filtre_r (int n, int nzone)
 Sets the n last coefficients in r to 0 in the domain nzone .
 
virtual void exponential_filter_r (int lzmin, int lzmax, int p, double alpha=-16.)
 Applies an exponential filter to the spectral coefficients in the radial direction.
 
void sarra_filter_r (int lzmin, int lzmax, double p, double alpha=-1E-16)
 Applies an exponential filter to the spectral coefficients in the radial direction.
 
void exp_filter_r_all_domains (Scalar &ss, int p, double alpha=-16.)
 Applies an exponential filter in radial direction in all domains.
 
void sarra_filter_r_all_domains (double p, double alpha=1E-16)
 Applies an exponential filter in radial direction in all domains for the case where p is a double (see Scalar:sarra_filter_r ).
 
virtual void exponential_filter_ylm (int lzmin, int lzmax, int p, double alpha=-16.)
 Applies an exponential filter to the spectral coefficients in the angular directions.
 
void annule_l (int l_min, int l_max, bool ylm_output=false)
 Sets all the multipolar components between l_min and l_max to zero.
 
void filtre_phi (int n, int zone)
 Sets the n lasts coefficients in $\Phi$ to 0 in the domain zone .
 
void filtre_tp (int nn, int nz1, int nz2)
 Sets the n lasts coefficients in $\theta$ to 0 in the domain nz1 to nz2 when expressed in spherical harmonics.
 
void fixe_decroissance (int puis)
 Substracts all the components behaving like $r^{-n}$ in the external domain, with n strictly lower than puis , so that *this
decreases at least like $r^{\tt puis} $ at infinity.
 
void smooth_decay (int k, int n)
 Performs a $C^k$ matching of the last non-compactified shell with a decaying function $\sum_{j=0}^k {\alpha_j \over r^{\ell+n+j}}$ where $\ell$ is the spherical harmonic index and n is some specifiable parameter.
 
void raccord (int n)
 Performs the $C^n$ matching of the nucleus with respect to the first shell.
 
void raccord_c1_zec (int puis, int nbre, int lmax)
 Performs the $C^1$ matching of the external domain with respect to the last shell using function like $\frac{1}{r^i}$ with ${\tt puis}  \leq i \leq {\tt puis+nbre}$ for each spherical harmonics with $l \leq {\tt lmax}$.
 
void raccord_externe (int puis, int nbre, int lmax)
 Matching of the external domain with the outermost shell.
 
void match_tau (Param &par_bc, Param *par_mat=0x0)
 Method for matching accross domains and imposing boundary condition.
 
void match_tau_shell (Param &par_bc, Param *par_mat=0x0)
 Method for matching accross domains and imposing boundary condition.
 
void match_collocation (Param &par_bc, Param *par_mat=0x0)
 Method for matching accross domains and imposing boundary condition.
 
virtual void sauve (FILE *) const
 Save in a file.
 
virtual void spectral_display (const char *comment=0x0, double threshold=1.e-7, int precision=4, ostream &ostr=cout) const
 Displays the spectral coefficients and the associated basis functions.
 
void visu_section (const char section_type, double aa, double umin, double umax, double vmin, double vmax, const char *title=0x0, const char *filename=0x0, bool start_dx=true, int nu=200, int nv=200) const
 3D visualization via a plane section.
 
void visu_section (const Tbl &plane, double umin, double umax, double vmin, double vmax, const char *title=0x0, const char *filename=0x0, bool start_dx=true, int nu=200, int nv=200) const
 3D visualization via a plane section.
 
void visu_section_anim (const char section_type, double aa, double umin, double umax, double vmin, double vmax, int jtime, double ttime, int jgraph=1, const char *title=0x0, const char *filename_root=0x0, bool start_dx=false, int nu=200, int nv=200) const
 3D visualization via time evolving plane section (animation).
 
void visu_box (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, const char *title0=0x0, const char *filename0=0x0, bool start_dx=true, int nx=40, int ny=40, int nz=40) const
 3D visualization (volume rendering) via OpenDX.
 
void operator+= (const Scalar &)
 += Scalar
 
void operator-= (const Scalar &)
 -= Scalar
 
void operator*= (const Scalar &)
 *= Scalar
 
virtual void std_spectral_base ()
 Sets the spectral bases of the Valeur va to the standard ones for a scalar field.
 
virtual void std_spectral_base_odd ()
 Sets the spectral bases of the Valeur va to the standard odd ones for a scalar field.
 
void set_spectral_base (const Base_val &)
 Sets the spectral bases of the Valeur va

 
const Base_valget_spectral_base () const
 Returns the spectral bases of the Valeur va

 
void set_dzpuis (int)
 Modifies the dzpuis flag.
 
Valeur ** asymptot (int n, const int flag=0) const
 Asymptotic expansion at r = infinity.
 
Scalar poisson () const
 Solves the scalar Poisson equation with *this as a source.
 
void poisson (Param &par, Scalar &uu) const
 Solves the scalar Poisson equation with *this as a source (version with parameters to control the resolution).
 
Scalar poisson_tau () const
 Solves the scalar Poisson equation with *this as a source using a real Tau method The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this .
 
void poisson_tau (Param &par, Scalar &uu) const
 Solves the scalar Poisson equation with *this as a source using a real Tau method (version with parameters to control the resolution) The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this .
 
Scalar poisson_dirichlet (const Valeur &limite, int num) const
 Is identicall to Scalar::poisson() .
 
Scalar poisson_neumann (const Valeur &, int) const
 Idem as Scalar::poisson_dirichlet , the boundary condition being on the radial derivative of the solution.
 
Scalar poisson_dir_neu (const Valeur &limite, int num, double fact_dir, double fact_neu) const
 Is identicall to Scalar::poisson() .
 
Scalar poisson_frontiere_double (const Valeur &, const Valeur &, int) const
 Idem as Scalar::poisson_dirichlet , the boundary condition being on both the function and its radial derivative.
 
void poisson_regular (int k_div, int nzet, double unsgam1, Param &par, Scalar &uu, Scalar &uu_regu, Scalar &uu_div, Tensor &duu_div, Scalar &source_regu, Scalar &source_div) const
 Solves the scalar Poisson equation with *this as a source (version with parameters to control the resolution).
 
Tbl test_poisson (const Scalar &uu, ostream &ostr, bool detail=false) const
 Checks if a Poisson equation with *this as a source has been correctly solved.
 
Scalar poisson_angu (double lambda=0) const
 Solves the (generalized) angular Poisson equation with *this
as source.
 
Scalar avance_dalembert (Param &par, const Scalar &fJm1, const Scalar &source) const
 Performs one time-step integration (from $t=J \to J+1$) of the scalar d'Alembert equation with *this being the value of the function f at time J .
 
Scalar sol_elliptic (Param_elliptic &params) const
 Resolution of a general elliptic equation, putting zero at infinity.
 
Scalar sol_elliptic_boundary (Param_elliptic &params, const Mtbl_cf &bound, double fact_dir, double fact_neu) const
 Resolution of a general elliptic equation, putting zero at infinity and with inner boundary conditions.
 
Scalar sol_elliptic_boundary (Param_elliptic &params, const Scalar &bound, double fact_dir, double fact_neu) const
 Resolution of general elliptic equation, with inner boundary conditions as Scalars on mono-domain angulare grids.
 
Scalar sol_elliptic_2d (Param_elliptic &) const
 Solves the scalar 2-dimensional elliptic equation with *this as a source.
 
Scalar sol_elliptic_pseudo_1d (Param_elliptic &) const
 Solves a pseudo-1d elliptic equation with *this as a source.
 
Scalar sol_elliptic_no_zec (Param_elliptic &params, double val=0) const
 Resolution of a general elliptic equation, putting a given value at the outermost shell and not solving in the compactified domain.
 
Scalar sol_elliptic_only_zec (Param_elliptic &params, double val) const
 Resolution of a general elliptic equation solving in the compactified domain and putting a given value at the inner boundary.
 
Scalar sol_elliptic_sin_zec (Param_elliptic &params, double *coefs, double *phases) const
 General elliptic solver.
 
Scalar sol_elliptic_fixe_der_zero (double val, Param_elliptic &params) const
 Resolution of a general elliptic equation fixing the dericative at the origin and relaxing one continuity condition.
 
Scalar sol_divergence (int n) const
 Resolution of a divergence-like equation.
 
void import (const Scalar &ci)
 Assignment to another Scalar defined on a different mapping.
 
void import_symy (const Scalar &ci)
 Assignment to another Scalar defined on a different mapping.
 
void import_asymy (const Scalar &ci)
 Assignment to another Scalar defined on a different mapping.
 
void import (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping.
 
void import_symy (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping.
 
void import_asymy (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping.
 
void set_triad (const Base_vect &new_triad)
 Assigns a new vectorial basis (triad) of decomposition.
 
Scalarset (const Itbl &ind)
 Returns the value of a component (read/write version).
 
Scalarset (int i1, int i2)
 Returns the value of a component for a tensor of valence 2 (read/write version).
 
Scalarset (int i1, int i2, int i3)
 Returns the value of a component for a tensor of valence 3 (read/write version).
 
Scalarset (int i1, int i2, int i3, int i4)
 Returns the value of a component for a tensor of valence 4 (read/write version).
 
void annule_domain (int l)
 Sets the Tensor to zero in a given domain.
 
void annule_extern_cn (int l_0, int deg)
 Performs a smooth (C^n) transition in a given domain to zero.
 
const Tensordivergence (const Metric &gam) const
 Computes the divergence of this with respect to some metric $\gamma$.
 
Tensor up (int ind, const Metric &gam) const
 Computes a new tensor by raising an index of *this.
 
Tensor down (int ind, const Metric &gam) const
 Computes a new tensor by lowering an index of *this.
 
Tensor up_down (const Metric &gam) const
 Computes a new tensor by raising or lowering all the indices of *this .
 
Tensor trace (int ind1, int ind2) const
 Trace on two different type indices.
 
Tensor trace (int ind1, int ind2, const Metric &gam) const
 Trace with respect to a given metric.
 
Scalar trace () const
 Trace on two different type indices for a valence 2 tensor.
 
Scalar trace (const Metric &gam) const
 Trace with respect to a given metric for a valence 2 tensor.
 
virtual int position (const Itbl &ind) const
 Returns the position in the array cmp of a component given by its indices.
 
virtual Itbl indices (int pos) const
 Returns the indices of a component given by its position in the array cmp .
 
const Mapget_mp () const
 Returns the mapping.
 
const Base_vectget_triad () const
 Returns the vectorial basis (triad) on which the components are defined.
 
int get_valence () const
 Returns the valence.
 
int get_n_comp () const
 Returns the number of stored components.
 
int get_index_type (int i) const
 Gives the type (covariant or contravariant) of the index number i .
 
Itbl get_index_type () const
 Returns the types of all the indices.
 
intset_index_type (int i)
 Sets the type of the index number i .
 
Itblset_index_type ()
 Sets the types of all the indices.
 
const Scalaroperator() (const Itbl &ind) const
 Returns the value of a component (read-only version).
 
const Scalaroperator() (int i1, int i2) const
 Returns the value of a component for a tensor of valence 2 (read-only version).
 
const Scalaroperator() (int i1, int i2, int i3) const
 Returns the value of a component for a tensor of valence 3 (read-only version).
 
const Scalaroperator() (int i1, int i2, int i3, int i4) const
 Returns the value of a component for a tensor of valence 4 (read-only version).
 
void operator+= (const Tensor &)
 += Tensor
 
void operator-= (const Tensor &)
 -= Tensor
 

Protected Member Functions

void del_t ()
 Logical destructor.
 
virtual void del_deriv () const
 Logical destructor of the derivatives.
 
void set_der_0x0 () const
 Sets the pointers for derivatives to 0x0.
 
void import_gal (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings do not have a particular relative orientation.
 
void import_align (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings have aligned Cartesian axis.
 
void import_anti (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings have anti-aligned Cartesian axis (i.e.
 
void import_align_symy (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings have aligned Cartesian axis.
 
void import_anti_symy (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings have anti-aligned Cartesian axis (i.e.
 
void import_align_asymy (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings have aligned Cartesian axis.
 
void import_anti_asymy (int nzet, const Scalar &ci)
 Assignment to another Scalar defined on a different mapping, when the two mappings have anti-aligned Cartesian axis (i.e.
 
virtual void del_derive_met (int) const
 Logical destructor of the derivatives depending on the i-th element of met_depend .
 
void set_der_met_0x0 (int) const
 Sets all the i-th components of met_depend , p_derive_cov , etc... to 0x0.
 
void set_dependance (const Metric &) const
 To be used to describe the fact that the derivatives members have been calculated with met .
 
int get_place_met (const Metric &) const
 Returns the position of the pointer on metre in the array met_depend .
 
void compute_derive_lie (const Vector &v, Tensor &resu) const
 Computes the Lie derivative of this with respect to some vector field v (protected method; the public interface is method derive_lie ).
 

Protected Attributes

int etat
 The logical state ETATNONDEF (undefined), ETATZERO (null), ETATUN (one), or ETATQCQ (ordinary).
 
int dzpuis
 Power of r by which the quantity represented by this
must be divided in the compactified external domain (CED) in order to get the correct physical values.
 
Valeur va
 The numerical value of the Scalar

 
Scalarp_dsdr
 Pointer on $\partial/\partial r$ of *this (0x0 if not up to date)
 
Scalarp_srdsdt
 Pointer on $1/r \partial/\partial \theta$ of *this
(0x0 if not up to date)
 
Scalarp_srstdsdp
 Pointer on $1/(r\sin\theta) \partial/\partial \phi$ of *this (0x0 if not up to date)
 
Scalarp_dsdt
 Pointer on $\partial/\partial \theta$ of *this (0x0 if not up to date)
 
Scalarp_stdsdp
 Pointer on $1/\sin\theta \partial/\partial \phi$ of *this (0x0 if not up to date)
 
Scalarp_dsdx
 Pointer on $\partial/\partial x$ of *this , where $x=r\sin\theta \cos\phi$ (0x0 if not up to date)
 
Scalarp_dsdy
 Pointer on $\partial/\partial y$ of *this , where $y=r\sin\theta \sin\phi$(0x0 if not up to date)
 
Scalarp_dsdz
 Pointer on $\partial/\partial z$ of *this , where $z=r\cos\theta$ (0x0 if not up to date)
 
Scalarp_lap
 Pointer on the Laplacian of *this (0x0 if not up to date)
 
Scalarp_lapang
 Pointer on the Laplacian of *this (0x0 if not up to date)
 
Scalarp_dsdradial
 Pointer on $\partial/\partial radial $ of *this

 
Scalarp_dsdrho
 Pointer on $\partial/\partial \rho $ of *this

 
int ind_lap
 Power of r by which the last computed Laplacian has been multiplied in the compactified external domain.
 
Tblp_integ
 Pointer on the space integral of *this (values in each domain) (0x0 if not up to date)
 
const Map *const mp
 Mapping on which the numerical values at the grid points are defined.
 
int valence
 Valence of the tensor (0 = scalar, 1 = vector, etc...)
 
const Base_vecttriad
 Vectorial basis (triad) with respect to which the tensor components are defined.
 
Itbl type_indice
 1D array of integers (class Itbl ) of size valence
containing the type of each index: COV for a covariant one and CON for a contravariant one.
 
int n_comp
 Number of stored components, depending on the symmetry.
 
Scalar ** cmp
 Array of size n_comp of pointers onto the components.
 
const Metricmet_depend [N_MET_MAX]
 Array on the Metric 's which were used to compute derived quantities, like p_derive_cov , etc... The i-th element of this array is the Metric used to compute the i-th element of p_derive_cov , etc.
 
Tensorp_derive_cov [N_MET_MAX]
 Array of pointers on the covariant derivatives of this with respect to various metrics.
 
Tensorp_derive_con [N_MET_MAX]
 Array of pointers on the contravariant derivatives of this with respect to various metrics.
 
Tensorp_divergence [N_MET_MAX]
 Array of pointers on the divergence of this with respect to various metrics.
 

Friends

ostreamoperator<< (ostream &, const Scalar &)
 Display.
 
Scalar operator- (const Scalar &)
 - Scalar
 
Scalar operator+ (const Scalar &, const Scalar &)
 Scalar + Scalar.
 
Scalar operator+ (const Scalar &, const Mtbl &)
 Scalar + Mbtl.
 
Scalar operator+ (const Scalar &, double)
 Scalar + double.
 
Scalar operator- (const Scalar &, const Scalar &)
 Scalar - Scalar.
 
Scalar operator- (const Scalar &, const Mtbl &)
 Scalar - Mbtl.
 
Scalar operator- (const Scalar &, double)
 Scalar - double.
 
Scalar operator* (const Scalar &, const Scalar &)
 Scalar * Scalar.
 
Scalar operator% (const Scalar &, const Scalar &)
 Scalar * Scalar with desaliasing.
 
Scalar operator| (const Scalar &, const Scalar &)
 Scalar * Scalar with desaliasing only in r.
 
Scalar operator* (const Mtbl &, const Scalar &)
 Mtbl * Scalar.
 
Scalar operator* (double, const Scalar &)
 double * Scalar
 
Scalar operator/ (const Scalar &, const Scalar &)
 Scalar / Scalar.
 
Scalar operator/ (const Scalar &, const Mtbl &)
 Scalar / Mtbl

 
Scalar operator/ (const Mtbl &, const Scalar &)
 Mtbl / Scalar.
 
Scalar operator/ (const Scalar &, double)
 Scalar / double.
 
Scalar operator/ (double, const Scalar &)
 double / Scalar
 
Scalar sin (const Scalar &)
 Sine.
 
Scalar cos (const Scalar &)
 Cosine.
 
Scalar tan (const Scalar &)
 Tangent.
 
Scalar asin (const Scalar &)
 Arcsine.
 
Scalar acos (const Scalar &)
 Arccosine.
 
Scalar atan (const Scalar &)
 Arctangent.
 
Scalar exp (const Scalar &)
 Exponential.
 
Scalar Heaviside (const Scalar &)
 Heaviside function.
 
Scalar log (const Scalar &)
 Neperian logarithm.
 
Scalar log10 (const Scalar &)
 Basis 10 logarithm.
 
Scalar sqrt (const Scalar &)
 Square root.
 
Scalar racine_cubique (const Scalar &)
 Cube root.
 
Scalar pow (const Scalar &, int)
 Power ${\tt Scalar}^{\tt int}$.
 
Scalar pow (const Scalar &, double)
 Power ${\tt Scalar}^{\tt double}$.
 
Scalar abs (const Scalar &)
 Absolute value.
 
double totalmax (const Scalar &)
 Maximum values of a Scalar in each domain.
 
double totalmin (const Scalar &)
 Minimum values of a Scalar in each domain.
 
Tbl max (const Scalar &)
 Maximum values of a Scalar in each domain.
 
Tbl min (const Scalar &)
 Minimum values of a Scalar in each domain.
 
Tbl norme (const Scalar &)
 Sums of the absolute values of all the values of the Scalar in each domain.
 
Tbl diffrel (const Scalar &a, const Scalar &b)
 Relative difference between two Scalar (norme version).
 
Tbl diffrelmax (const Scalar &a, const Scalar &b)
 Relative difference between two Scalar (max version).
 

Detailed Description

Tensor field of valence 0 (or component of a tensorial field).

()

Definition at line 387 of file scalar.h.

Constructor & Destructor Documentation

◆ Scalar() [1/5]

Lorene::Scalar::Scalar ( const Map mpi)
explicit

Constructor from mapping.

Definition at line 204 of file scalar.C.

References Lorene::Tensor::cmp, and set_der_0x0().

◆ Scalar() [2/5]

Lorene::Scalar::Scalar ( const Tensor a)

Constructor from a Tensor (must be of valence 0)

Definition at line 215 of file scalar.C.

References Lorene::Tensor::cmp, and set_der_0x0().

◆ Scalar() [3/5]

Lorene::Scalar::Scalar ( const Scalar a)

Copy constructor.

Definition at line 228 of file scalar.C.

References Lorene::Tensor::cmp, and set_der_0x0().

◆ Scalar() [4/5]

Lorene::Scalar::Scalar ( const Cmp a)

Constructor by conversion of a Cmp.

Definition at line 238 of file scalar.C.

References Lorene::Tensor::cmp, and set_der_0x0().

◆ Scalar() [5/5]

Lorene::Scalar::Scalar ( const Map mpi,
const Mg3d mgi,
FILE fd 
)

Constructor from a file (see sauve(FILE*) )

Definition at line 248 of file scalar.C.

References Lorene::Tensor::cmp, dzpuis, etat, Lorene::fread_be(), and set_der_0x0().

◆ ~Scalar()

Lorene::Scalar::~Scalar ( )
virtual

Destructor.

Definition at line 267 of file scalar.C.

References Lorene::Tensor::cmp, and del_t().

Member Function Documentation

◆ allocate_all()

void Lorene::Scalar::allocate_all ( )
virtual

Sets the logical state to ETATQCQ (ordinary state) and performs the memory allocation of all the elements, down to the double arrays of the Tbl s.

This function performs in fact recursive calls to set_etat_qcq() on each element of the chain Scalar -> Valeur -> Mtbl -> Tbl .

Reimplemented from Lorene::Tensor.

Definition at line 365 of file scalar.C.

References Lorene::Valeur::c, Lorene::Valeur::set_etat_c_qcq(), set_etat_qcq(), and va.

◆ annule()

void Lorene::Scalar::annule ( int  l_min,
int  l_max 
)
virtual

Sets the Scalar to zero in several domains.

Parameters
l_min[input] The Scalar will be set (logically) to zero in the domains whose indices are in the range [l_min,l_max] .
l_max[input] see the comments for l_min .

Note that annule(0,va.mg->get_nzone()-1) is equivalent to set_etat_zero() .

Reimplemented from Lorene::Tensor.

Definition at line 391 of file scalar.C.

References Lorene::Valeur::annule(), annule(), etat, Lorene::Valeur::mg, p_dsdr, p_dsdradial, p_dsdt, p_dsdx, p_dsdy, p_dsdz, p_integ, p_lap, p_lapang, p_srdsdt, p_srstdsdp, p_stdsdp, set_etat_zero(), and va.

◆ annule_hard()

void Lorene::Scalar::annule_hard ( )

Sets the Scalar to zero in a hard way.

1/ Sets the logical state to ETATQCQ , i.e. to an ordinary state. 2/ Fills the Valeur va with zeros. NB: this function must be used for debugging purposes only. For other operations, the functions set_etat_zero() or annule(int,int) must be perferred.

Definition at line 380 of file scalar.C.

References Lorene::Valeur::annule_hard(), del_deriv(), etat, and va.

◆ annule_l()

void Lorene::Scalar::annule_l ( int  l_min,
int  l_max,
bool  ylm_output = false 
)

Sets all the multipolar components between l_min and l_max to zero.

This is done for [ l_min , l_max ] and all relevant m in the spherical harmonics expansion basis. If ylm_output is set to true , then the spectral expansion basis of this is left to be that of spherical harmonics.

Definition at line 111 of file scalar_manip.C.

References Lorene::Valeur::base, Lorene::Valeur::c, Lorene::Valeur::c_cf, etat, get_etat(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, set_etat_zero(), va, Lorene::Valeur::ylm(), and Lorene::Valeur::ylm_i().

◆ asymptot()

Valeur ** Lorene::Scalar::asymptot ( int  n,
const int  flag = 0 
) const

Asymptotic expansion at r = infinity.

Determines the coefficients $a_k(\theta, \phi)$ of the expansion

\[
  \sum_{k=0}^n {a_k(\theta, \phi) \over r^k}
\]

of *this when $r \rightarrow \infty$.

Parameters
norder of the expansion
flag: output
Returns
Array of n +1 Valeur s on mg->angu
describing the coefficients $a_k(\theta, \phi)$. This array is allocated by the routine.

Definition at line 63 of file scalar_asymptot.C.

References dzpuis, Lorene::Mg3d::get_angu(), Lorene::Mg3d::get_np(), Lorene::Mg3d::get_nr(), Lorene::Mg3d::get_nt(), Lorene::Mg3d::get_nzone(), Lorene::Mg3d::get_type_r(), and Lorene::Tensor::mp.

◆ avance_dalembert()

Scalar Lorene::Scalar::avance_dalembert ( Param par,
const Scalar fJm1,
const Scalar source 
) const

Performs one time-step integration (from $t=J \to J+1$) of the scalar d'Alembert equation with *this being the value of the function f at time J .

Works only with an affine mapping (class Map_af ) and, if the last domain is a compactified one, it simply copies the value of the field in this last domain at the time-step J to the last domain of the returned solution.

Parameters
par[input/output] possible parameters to control the resolution of the d'Alembert equation:
  • par.get_double(0) : [input] the time step dt ,
  • par.get_int(0) : [input] the type of boundary conditions set at the outer boundary (0 : reflexion, 1 : Sommerfeld outgoing wave, valid only for l=0 components, 2 : Bayliss & Turkel outgoing wave, valid for l=0, 1, 2 components)
  • par.get_int_mod(0) : [input/output] set to 0 at first call, is used as a working flag after (must not be modified after first call)
  • par.get_tensor_mod(0) : [input] (optional) if the wave equation is on a curved space-time, this is the potential in front of the Laplace operator. It has to be a Scalar and updated at every time-step (for a potential depending on time). Note: there are many other working objects attached to this Param , so one should not modify it. There should be exactly one Param for each wave equation to be solved.
fJm1[input] solution $f^{J-1}$ at time J-1
source[input] source $\sigma$ of the d'Alembert equation $\diamond u = \sigma$.
Returns
solution $f^{J+1}$ at time J+1 with boundary conditions defined by par.get_int(0) .

Definition at line 217 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ change_triad()

void Lorene::Scalar::change_triad ( const Base_vect new_triad)
virtual

Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.

Reimplemented from Lorene::Tensor.

Definition at line 997 of file scalar.C.

◆ check_dzpuis()

bool Lorene::Scalar::check_dzpuis ( int  dzi) const

Returns false if the last domain is compactified and *this is not zero in this domain and dzpuis is not equal to dzi , otherwise return true.

Definition at line 873 of file scalar.C.

References dz_nonzero(), and dzpuis.

◆ dec_dzpuis()

void Lorene::Scalar::dec_dzpuis ( int  dec = 1)
virtual

Decreases by dec units the value of dzpuis and changes accordingly the values of the Scalar in the compactified external domain (CED).

Reimplemented from Lorene::Tensor.

Definition at line 418 of file scalar_r_manip.C.

References del_deriv(), etat, and Lorene::Tensor::mp.

◆ del_deriv()

void Lorene::Scalar::del_deriv ( ) const
protectedvirtual

Logical destructor of the derivatives.

Reimplemented from Lorene::Tensor.

Definition at line 287 of file scalar.C.

References Lorene::Tensor::del_deriv(), p_dsdr, p_dsdradial, p_dsdrho, p_dsdt, p_dsdx, p_dsdy, p_dsdz, p_integ, p_lap, p_lapang, p_srdsdt, p_srstdsdp, p_stdsdp, and set_der_0x0().

◆ del_t()

void Lorene::Scalar::del_t ( )
protected

Logical destructor.

Definition at line 279 of file scalar.C.

References del_deriv(), Lorene::Valeur::del_t(), Lorene::Valeur::set_etat_nondef(), and va.

◆ deriv()

const Scalar & Lorene::Scalar::deriv ( int  i) const

Returns $\partial/\partial x_i$ of *this , where $x_i = (x, y, z)$.

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Parameters
i[input] i=1 for x , i=2 for y , i=3 for z .

Definition at line 359 of file scalar_deriv.C.

References dsdx(), dsdy(), and dsdz().

◆ derive_con()

const Vector & Lorene::Scalar::derive_con ( const Metric gam) const

Returns the "contravariant" derivative of *this with respect to some metric $\gamma$, by raising the index of the gradient (cf.

method derive_cov() ) with $\gamma$.

Definition at line 402 of file scalar_deriv.C.

References Lorene::Tensor::derive_con().

◆ derive_cov()

const Vector & Lorene::Scalar::derive_cov ( const Metric gam) const

Returns the gradient (1-form = covariant vector) of *this

Parameters
gammetric components only used to get the triad with respect to which the components of the result are defined

Definition at line 390 of file scalar_deriv.C.

References Lorene::Tensor::derive_cov().

◆ derive_lie()

Scalar Lorene::Scalar::derive_lie ( const Vector v) const

Computes the derivative of this along a vector field v.

Definition at line 419 of file scalar_deriv.C.

References Lorene::Tensor::compute_derive_lie(), and Lorene::Tensor::mp.

◆ div_cost()

void Lorene::Scalar::div_cost ( )

Division by $\cos\theta$.

Definition at line 70 of file scalar_th_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ div_r()

void Lorene::Scalar::div_r ( )

Division by r everywhere; dzpuis is not changed.

Definition at line 133 of file scalar_r_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ div_r_ced()

void Lorene::Scalar::div_r_ced ( )

Division by r in the compactified external domain (CED), the dzpuis flag is not changed.

Definition at line 196 of file scalar_r_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ div_r_dzpuis()

void Lorene::Scalar::div_r_dzpuis ( int  ced_mult_r)

Division by r everywhere but with the output flag dzpuis
set to ced_mult_r .

Parameters
ced_mult_r[input] value of dzpuis of the result.

Definition at line 147 of file scalar_r_manip.C.

References annule(), Lorene::Valeur::base, dec_dzpuis(), del_deriv(), div_r(), domain(), dzpuis, etat, Lorene::Valeur::get_base(), inc_dzpuis(), Lorene::Tensor::mp, set_domain(), set_etat_qcq(), set_spectral_base(), and va.

◆ div_rsint()

void Lorene::Scalar::div_rsint ( )

Division by $r\sin\theta$ everywhere; dzpuis is not changed.

Definition at line 348 of file scalar_r_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ div_rsint_dzpuis()

void Lorene::Scalar::div_rsint_dzpuis ( int  ced_mult_r)

Division by $r\sin\theta$ but with the output flag dzpuis set to ced_mult_r .

Parameters
ced_mult_r[input] value of dzpuis of the result.

Definition at line 362 of file scalar_r_manip.C.

References annule(), Lorene::Valeur::base, del_deriv(), div_rsint(), domain(), dzpuis, etat, Lorene::Valeur::get_base(), Lorene::Tensor::mp, set_domain(), set_etat_qcq(), set_spectral_base(), and va.

◆ div_sint()

void Lorene::Scalar::div_sint ( )

Division by $\sin\theta$.

Definition at line 98 of file scalar_th_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ div_tant()

void Lorene::Scalar::div_tant ( )

Division by $\tan\theta$.

Definition at line 111 of file scalar_th_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ domain()

const Tbl & Lorene::Scalar::domain ( int  l) const
inline

Read-only of the value in a given domain.

Parameters
l[input] domain index
Returns
Tbl containing the value of the field in domain l .

Definition at line 625 of file scalar.h.

References etat, and va.

◆ dsdr()

const Scalar & Lorene::Scalar::dsdr ( ) const

Returns $\partial / \partial r$ of *this .

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 113 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_dsdr, set_dzpuis(), and set_etat_zero().

◆ dsdradial()

const Scalar & Lorene::Scalar::dsdradial ( ) const

Returns $\partial / \partial r$ of *this if the mapping is affine (class Map_af) and $\partial / \partial \ln r$ of *this if the mapping is logarithmic (class Map_log).

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 491 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_dsdradial, set_dzpuis(), and set_etat_zero().

◆ dsdrho()

const Scalar & Lorene::Scalar::dsdrho ( ) const

Returns $\partial / \partial \rho $ of *this .

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 522 of file scalar_deriv.C.

References dsdr(), dzpuis, etat, Lorene::Tensor::mp, p_dsdrho, set_dzpuis(), set_etat_zero(), and srdsdt().

◆ dsdt()

const Scalar & Lorene::Scalar::dsdt ( ) const

Returns $\partial / \partial \theta$ of *this .

Definition at line 208 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_dsdt, set_dzpuis(), and set_etat_zero().

◆ dsdx()

const Scalar & Lorene::Scalar::dsdx ( ) const

Returns $\partial/\partial x$ of *this , where $x=r\sin\theta \cos\phi$.

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 266 of file scalar_deriv.C.

References dsdr(), dzpuis, etat, Lorene::Tensor::mp, p_dsdx, set_dzpuis(), set_etat_zero(), srdsdt(), and srstdsdp().

◆ dsdy()

const Scalar & Lorene::Scalar::dsdy ( ) const

Returns $\partial/\partial y$ of *this , where $y=r\sin\theta \sin\phi$.

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 297 of file scalar_deriv.C.

References dsdr(), dzpuis, etat, Lorene::Tensor::mp, p_dsdy, set_dzpuis(), set_etat_zero(), srdsdt(), and srstdsdp().

◆ dsdz()

const Scalar & Lorene::Scalar::dsdz ( ) const

Returns $\partial/\partial z$ of *this , where $z=r\cos\theta$.

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 328 of file scalar_deriv.C.

References dsdr(), dzpuis, etat, Lorene::Tensor::mp, p_dsdz, set_dzpuis(), set_etat_zero(), and srdsdt().

◆ dz_nonzero()

bool Lorene::Scalar::dz_nonzero ( ) const

Returns true if the last domain is compactified and *this is not zero in this domain.

Definition at line 814 of file scalar.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, etat, Lorene::Valeur::etat, Lorene::Mg3d::get_nzone(), Lorene::Mg3d::get_type_r(), Lorene::Tensor::mp, and va.

◆ exp_filter_r_all_domains()

void Lorene::Scalar::exp_filter_r_all_domains ( Scalar ss,
int  p,
double  alpha = -16. 
)

Applies an exponential filter in radial direction in all domains.

(see Scalar:exponential_filter_r ). Note that this may cause regularity problems at the origin if applied in a nucleus.

◆ exponential_filter_r()

void Lorene::Scalar::exponential_filter_r ( int  lzmin,
int  lzmax,
int  p,
double  alpha = -16. 
)
virtual

Applies an exponential filter to the spectral coefficients in the radial direction.

The filter is of the type: $ \forall n\leq N,\, b_n = \sigma(n/N ) a_n$, with $ \sigma(x) = \exp\left( -\ln (10^\alpha ) x^{2p} \right) $ and N the number of radial coefficients.

Parameters
lzmin,lzmax[input] the indices of the domain where the filter is applied (in [lzmin , lzmax ])
p[input] the order of the filter
alpha[input] $\alpha$ appearing in the above formula.

Reimplemented from Lorene::Tensor.

Definition at line 60 of file scalar_exp_filter.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Valeur::coef(), Lorene::Valeur::del_deriv(), del_deriv(), etat, exp, log, Lorene::Tensor::mp, pow, Lorene::Mtbl_cf::set(), and va.

◆ exponential_filter_ylm()

void Lorene::Scalar::exponential_filter_ylm ( int  lzmin,
int  lzmax,
int  p,
double  alpha = -16. 
)
virtual

Applies an exponential filter to the spectral coefficients in the angular directions.

The filter is of the type: $ \forall \ell \leq \ell_{\rm max},\, \forall m,\, b_{\ell m} = \sigma(\ell/\ell_{\rm max} ) a_{\ell m}$, with $ \sigma(x) $ defined for Scalar::exponential_filter_r and $\ell_{\rm max}$ the number of spherical harmonics used.

Reimplemented from Lorene::Tensor.

Definition at line 142 of file scalar_exp_filter.C.

References Lorene::Valeur::base, Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Valeur::del_deriv(), del_deriv(), etat, exp, Lorene::Base_val::give_lmax(), Lorene::Base_val::give_quant_numbers(), log, Lorene::Tensor::mp, pow, Lorene::Mtbl_cf::set(), va, Lorene::Valeur::ylm(), and Lorene::Valeur::ylm_i().

◆ filtre()

void Lorene::Scalar::filtre ( int  n)

Sets the n lasts coefficients in r to 0 in the external domain.

Definition at line 151 of file scalar_manip.C.

References Lorene::Valeur::c_cf, Lorene::Valeur::coef(), del_deriv(), etat, Lorene::Tensor::mp, Lorene::Mtbl_cf::set(), Lorene::Valeur::set_etat_cf_qcq(), and va.

◆ filtre_phi()

void Lorene::Scalar::filtre_phi ( int  n,
int  zone 
)

Sets the n lasts coefficients in $\Phi$ to 0 in the domain zone .

Definition at line 249 of file scalar_manip.C.

References Lorene::Valeur::c_cf, Lorene::Valeur::coef(), del_deriv(), etat, Lorene::Tensor::mp, Lorene::Mtbl_cf::set(), Lorene::Valeur::set_etat_cf_qcq(), and va.

◆ filtre_r() [1/2]

void Lorene::Scalar::filtre_r ( int nn)

Sets the n lasts coefficients in r to 0 in all domains.

Definition at line 180 of file scalar_manip.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Valeur::coef(), del_deriv(), etat, Lorene::Tensor::mp, Lorene::Mtbl_cf::set(), Lorene::Valeur::set_etat_cf_qcq(), and va.

◆ filtre_r() [2/2]

void Lorene::Scalar::filtre_r ( int  n,
int  nzone 
)

Sets the n last coefficients in r to 0 in the domain nzone .

Definition at line 218 of file scalar_manip.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Valeur::coef(), del_deriv(), etat, Lorene::Tensor::mp, Lorene::Mtbl_cf::set(), Lorene::Valeur::set_etat_cf_qcq(), and va.

◆ filtre_tp()

void Lorene::Scalar::filtre_tp ( int  nn,
int  nz1,
int  nz2 
)

Sets the n lasts coefficients in $\theta$ to 0 in the domain nz1 to nz2 when expressed in spherical harmonics.

Definition at line 270 of file scalar_manip.C.

References Lorene::Valeur::filtre_tp(), and va.

◆ fixe_decroissance()

void Lorene::Scalar::fixe_decroissance ( int  puis)

Substracts all the components behaving like $r^{-n}$ in the external domain, with n strictly lower than puis , so that *this
decreases at least like $r^{\tt puis} $ at infinity.

Definition at line 346 of file scalar_manip.C.

References Lorene::Valeur::c_cf, Lorene::Valeur::coef(), cos, dzpuis, Lorene::Map_af::get_alpha(), Lorene::Tensor::mp, pow, R_CHEBU, Lorene::Mtbl_cf::set(), Lorene::Valeur::set_etat_cf_qcq(), and va.

◆ get_dzpuis()

int Lorene::Scalar::get_dzpuis ( ) const
inline

Returns dzpuis.

Definition at line 557 of file scalar.h.

References dzpuis.

◆ get_etat()

int Lorene::Scalar::get_etat ( ) const
inline

Returns the logical state ETATNONDEF (undefined), ETATZERO (null) or ETATQCQ (ordinary).

Definition at line 554 of file scalar.h.

References etat.

◆ get_spectral_base()

const Base_val & Lorene::Scalar::get_spectral_base ( ) const
inline

Returns the spectral bases of the Valeur va

Definition at line 1294 of file scalar.h.

References Lorene::Valeur::base, and va.

◆ get_spectral_va()

const Valeur & Lorene::Scalar::get_spectral_va ( ) const
inline

Returns va (read only version)

Definition at line 601 of file scalar.h.

References va.

◆ import() [1/2]

void Lorene::Scalar::import ( const Scalar ci)

Assignment to another Scalar defined on a different mapping.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
ci[input] Scalar to be imported.

Definition at line 68 of file scalar_import.C.

References Lorene::Tensor::mp.

◆ import() [2/2]

void Lorene::Scalar::import ( int  nzet,
const Scalar ci 
)

Assignment to another Scalar defined on a different mapping.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 80 of file scalar_import.C.

References import_align(), import_anti(), import_gal(), and Lorene::Tensor::mp.

◆ import_align()

void Lorene::Scalar::import_align ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings have aligned Cartesian axis.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 532 of file scalar_import.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_align_asymy()

void Lorene::Scalar::import_align_asymy ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings have aligned Cartesian axis.

Case where the Scalar is antisymmetric with respect to the plane y=0.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 378 of file scalar_import_asymy.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_align_symy()

void Lorene::Scalar::import_align_symy ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings have aligned Cartesian axis.

Case where the Scalar is symmetric with respect to the plane y=0.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 349 of file scalar_import_symy.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_anti()

void Lorene::Scalar::import_anti ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings have anti-aligned Cartesian axis (i.e.

$x_1 = - x_2$, $y_1 = - y_2$, $z_1 = z_2$).

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 335 of file scalar_import.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_anti_asymy()

void Lorene::Scalar::import_anti_asymy ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings have anti-aligned Cartesian axis (i.e.

$x_1 = - x_2$, $y_1 = - y_2$, $z_1 = z_2$). Case where the Scalar is antisymmetric with respect to the plane y=0.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 131 of file scalar_import_asymy.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_anti_symy()

void Lorene::Scalar::import_anti_symy ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings have anti-aligned Cartesian axis (i.e.

$x_1 = - x_2$, $y_1 = - y_2$, $z_1 = z_2$). Case where the Scalar is symmetric with respect to the plane y=0.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 131 of file scalar_import_symy.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_asymy() [1/2]

void Lorene::Scalar::import_asymy ( const Scalar ci)

Assignment to another Scalar defined on a different mapping.

Case where the Scalar is antisymmetric with respect to the plane y=0. This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
ci[input] Scalar to be imported.

Definition at line 72 of file scalar_import_asymy.C.

References import_asymy(), and Lorene::Tensor::mp.

◆ import_asymy() [2/2]

void Lorene::Scalar::import_asymy ( int  nzet,
const Scalar ci 
)

Assignment to another Scalar defined on a different mapping.

Case where the Scalar is antisymmetric with respect to the plane y=0. This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 84 of file scalar_import_asymy.C.

References import_align_asymy(), import_anti_asymy(), and Lorene::Tensor::mp.

◆ import_gal()

void Lorene::Scalar::import_gal ( int  nzet,
const Scalar ci 
)
protected

Assignment to another Scalar defined on a different mapping, when the two mappings do not have a particular relative orientation.

This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 131 of file scalar_import.C.

References annule(), Lorene::Valeur::c, del_t(), Lorene::Tensor::mp, set_dzpuis(), Lorene::Valeur::set_etat_c_qcq(), set_etat_one(), Lorene::Mtbl::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), sqrt, Lorene::Mtbl::t, and va.

◆ import_symy() [1/2]

void Lorene::Scalar::import_symy ( const Scalar ci)

Assignment to another Scalar defined on a different mapping.

Case where the Scalar is symmetric with respect to the plane y=0. This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
ci[input] Scalar to be imported.

Definition at line 72 of file scalar_import_symy.C.

References import_symy(), and Lorene::Tensor::mp.

◆ import_symy() [2/2]

void Lorene::Scalar::import_symy ( int  nzet,
const Scalar ci 
)

Assignment to another Scalar defined on a different mapping.

Case where the Scalar is symmetric with respect to the plane y=0. This assignment is performed point to point by means of the spectral expansion of the original Scalar.

Parameters
nzet[input] Number of domains of the destination mapping (i.e. this->mp ) where the importation is performed: the assignment is done for the domains whose indices are between 0 and nzet-1 . In the other domains, *this is set to zero.
ci[input] Scalar to be imported.

Definition at line 84 of file scalar_import_symy.C.

References import_align_symy(), import_anti_symy(), and Lorene::Tensor::mp.

◆ inc_dzpuis()

void Lorene::Scalar::inc_dzpuis ( int  inc = 1)
virtual

Increases by inc units the value of dzpuis and changes accordingly the values of the Scalar in the compactified external domain (CED).

Reimplemented from Lorene::Tensor.

Definition at line 470 of file scalar_r_manip.C.

References del_deriv(), etat, and Lorene::Tensor::mp.

◆ integrale()

double Lorene::Scalar::integrale ( ) const

Computes the integral over all space of *this .

The computed quantity is (u being the field represented by *this ) $\int u \, r^2 \sin\theta \,  dr\, d\theta \, d\phi$. Note that in the compactified external domain (CED), dzpuis
must be 4 for the computation to take place.

Definition at line 61 of file scalar_integ.C.

References integrale_domains(), and Lorene::Tensor::mp.

◆ integrale_domains()

const Tbl & Lorene::Scalar::integrale_domains ( ) const

Computes the integral in each domain of *this .

The computed quantity is (u being the field represented by *this ) $\int u \, r^2 \sin\theta \,  dr\, d\theta \, d\phi$ in each domain. The result is returned a Tbl on the various domains. Note that in the compactified external domain (CED), dzpuis
must be 4 for the computation to take place.

Definition at line 79 of file scalar_integ.C.

References etat, Lorene::Tensor::mp, and p_integ.

◆ is_nan()

bool Lorene::Scalar::is_nan ( bool  verbose = false) const

Looks for NaNs (not a number) in the scalar field.

If at least one NaN is found, it returns true. If the flag verbose is set to true, it outputs to the standard output the indices where NaNs have been found.

Definition at line 1008 of file scalar.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, etat, Lorene::Mtbl::get_etat(), Lorene::Mtbl_cf::get_etat(), Lorene::Tensor::mp, and va.

◆ lapang()

const Scalar & Lorene::Scalar::lapang ( ) const

Returns the angular Laplacian $\Delta_{\theta\varphi}$ of *this , where $\Delta_{\theta\varphi} f = \frac{\partial^2 f}
{\partial \theta^2} + \frac{1}{\tan \theta} \frac{\partial f}
{\partial \theta} +\frac{1}{\sin^2 \theta}\frac{\partial^2 f}
{\partial \varphi^2}$.

Definition at line 461 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_lapang, set_dzpuis(), and set_etat_zero().

◆ laplacian()

const Scalar & Lorene::Scalar::laplacian ( int  ced_mult_r = 4) const

Returns the Laplacian of *this.

Parameters
ced_mult_r[input] Determines the quantity computed in the compactified external domain (CED) (u in the field represented by *this ) :
  • ced_mult_r = 0 : $\Delta u$
  • ced_mult_r = 2 : $r^2 \,  \Delta u$
  • ced_mult_r = 4 (default) : $r^4 \, \Delta u$

Definition at line 436 of file scalar_deriv.C.

References etat, ind_lap, Lorene::Tensor::mp, and p_lap.

◆ match_collocation()

void Lorene::Scalar::match_collocation ( Param par_bc,
Param par_mat = 0x0 
)

Method for matching accross domains and imposing boundary condition.

Matching of the field represented by this accross domains and imposition of the boundary condition using the collocation method.

Parameters
par_bc[input] Param to control the boundary conditions
par_mat[input/output] optional Param in which the matching matrices are stored (together with their LU decomposition).

◆ match_tau()

void Lorene::Scalar::match_tau ( Param par_bc,
Param par_mat = 0x0 
)

Method for matching accross domains and imposing boundary condition.

Matching of the field represented by this accross domains and imposition of the boundary condition using the tau method.

Parameters
par_bc[input] Param to control the boundary conditions par_bc must contain (at a minimum) a modifiable Tbl which specifies a physical boundary two integers, one specifying the domain that has the boundary the other specifying the number of conditions 1 -> Dirichlet 2 -> Robin (which may reduce to von Neumann, see below) two doubles, specifying the Robin BC parameters. If the first is zero, we see that Robin will reduce to von Neumann
par_mat[input/output] optional Param in which the matching matrices are stored (together with their LU decomposition).

Definition at line 66 of file scalar_match_tau.C.

References annule_hard(), Lorene::Tbl::annule_hard(), Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Valeur::coef(), etat, Lorene::Map_af::get_alpha(), Lorene::Tbl::get_etat(), Lorene::Map::get_mg(), get_spectral_base(), Lorene::Base_val::give_quant_numbers(), Lorene::Tensor::mp, R_CHEBI, R_CHEBP, Lorene::Mtbl_cf::set(), va, and Lorene::Valeur::ylm().

◆ match_tau_shell()

void Lorene::Scalar::match_tau_shell ( Param par_bc,
Param par_mat = 0x0 
)

Method for matching accross domains and imposing boundary condition.

Matching of the field represented by this accross domains and imposition of the boundary condition using the tau method.

Parameters
par_bc[input] Param to control the boundary conditions
par_mat[input/output] optional Param in which the matching matrices are stored (together with their LU decomposition).

◆ mult_cost()

void Lorene::Scalar::mult_cost ( )

Multiplication by $\cos\theta$.

Definition at line 58 of file scalar_th_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ mult_r()

void Lorene::Scalar::mult_r ( )

Multiplication by r everywhere; dzpuis is not changed.

Definition at line 208 of file scalar_r_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ mult_r_ced()

void Lorene::Scalar::mult_r_ced ( )

Multiplication by r in the compactified external domain (CED), the dzpuis flag is not changed.

Definition at line 269 of file scalar_r_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ mult_r_dzpuis()

void Lorene::Scalar::mult_r_dzpuis ( int  ced_mult_r)

Multiplication by r everywhere but with the output flag dzpuis
set to ced_mult_r .

Parameters
ced_mult_r[input] value of dzpuis of the result.

Definition at line 221 of file scalar_r_manip.C.

References annule(), Lorene::Valeur::base, dec_dzpuis(), del_deriv(), domain(), dzpuis, etat, Lorene::Valeur::get_base(), inc_dzpuis(), Lorene::Tensor::mp, mult_r(), set_domain(), set_etat_qcq(), set_spectral_base(), and va.

◆ mult_rsint()

void Lorene::Scalar::mult_rsint ( )

Multiplication by $r\sin\theta$ everywhere; dzpuis is not changed.

Definition at line 281 of file scalar_r_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ mult_rsint_dzpuis()

void Lorene::Scalar::mult_rsint_dzpuis ( int  ced_mult_r)

Multiplication by $r\sin\theta$ but with the output flag dzpuis set to ced_mult_r .

Parameters
ced_mult_r[input] value of dzpuis of the result.

Definition at line 294 of file scalar_r_manip.C.

References annule(), Lorene::Valeur::base, del_deriv(), domain(), dzpuis, etat, Lorene::Valeur::get_base(), Lorene::Tensor::mp, mult_rsint(), set_domain(), set_etat_qcq(), set_spectral_base(), and va.

◆ mult_sint()

void Lorene::Scalar::mult_sint ( )

Multiplication by $\sin\theta$.

Definition at line 84 of file scalar_th_manip.C.

References del_deriv(), and Lorene::Tensor::mp.

◆ multipole_spectrum()

Tbl Lorene::Scalar::multipole_spectrum ( ) const

Gives the spectrum in terms of multipolar modes l .

Returns
a Tbl of size (nzone, lmax), where lmax is the maximal multipolar momentum over all domains. The l -th element contains the L1 norm of the l -th multipole (i.e. a sum over all m of the norms (coefficient space) of the component of a given $Y_l^m$.

Definition at line 956 of file scalar.C.

References etat, Lorene::Mg3d::get_np(), Lorene::Mg3d::get_nr(), Lorene::Mg3d::get_nt(), Lorene::Mg3d::get_nzone(), Lorene::Tensor::mp, and va.

◆ operator Cmp()

Lorene::Scalar::operator Cmp ( ) const

Conversion to a Cmp.

Definition at line 674 of file scalar.C.

◆ operator*=()

void Lorene::Scalar::operator*= ( const Scalar ci)

◆ operator+=()

void Lorene::Scalar::operator+= ( const Scalar ci)

◆ operator-=()

void Lorene::Scalar::operator-= ( const Scalar ci)

◆ operator=() [1/7]

void Lorene::Scalar::operator= ( const Cmp a)

Assignment to a Cmp.

Definition at line 499 of file scalar.C.

References del_deriv(), Lorene::Valeur::del_t(), dzpuis, Lorene::Tensor::mp, set_etat_nondef(), set_etat_qcq(), set_etat_zero(), and va.

◆ operator=() [2/7]

void Lorene::Scalar::operator= ( const Mtbl a)

Assignment to a Mtbl.

Definition at line 592 of file scalar.C.

References Lorene::Valeur::c, del_deriv(), Lorene::Valeur::del_t(), set_etat_qcq(), set_etat_zero(), and va.

◆ operator=() [3/7]

void Lorene::Scalar::operator= ( const Scalar a)

Assignment to another Scalar defined on the same mapping.

Definition at line 446 of file scalar.C.

References del_deriv(), Lorene::Valeur::del_t(), dzpuis, Lorene::Tensor::mp, Lorene::Valeur::set_base(), set_etat_nondef(), set_etat_one(), set_etat_qcq(), set_etat_zero(), and va.

◆ operator=() [4/7]

void Lorene::Scalar::operator= ( const Tensor a)
virtual

Assignment to a Tensor (of valence 0)

Reimplemented from Lorene::Tensor.

Definition at line 436 of file scalar.C.

References operator=().

◆ operator=() [5/7]

void Lorene::Scalar::operator= ( const Valeur a)

Assignment to a Valeur.

Definition at line 549 of file scalar.C.

References del_deriv(), Lorene::Valeur::del_t(), set_etat_qcq(), set_etat_zero(), and va.

◆ operator=() [6/7]

void Lorene::Scalar::operator= ( double  x)

Assignment to a double.

Definition at line 632 of file scalar.C.

References del_deriv(), dzpuis, set_etat_one(), set_etat_qcq(), set_etat_zero(), and va.

◆ operator=() [7/7]

void Lorene::Scalar::operator= ( int  n)

Assignment to an int.

Definition at line 653 of file scalar.C.

References del_deriv(), dzpuis, set_etat_one(), set_etat_qcq(), set_etat_zero(), and va.

◆ poisson() [1/2]

Scalar Lorene::Scalar::poisson ( ) const

Solves the scalar Poisson equation with *this as a source.

The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this . Note that dzpuis must be equal to 2 or 4, i.e. that the quantity stored in *this is in fact $r^2 \sigma$ or $r^4 \sigma$ in the compactified external domain. The solution u with the boundary condition u =0 at spatial infinity is the returned Scalar.

Definition at line 136 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ poisson() [2/2]

void Lorene::Scalar::poisson ( Param par,
Scalar uu 
) const

Solves the scalar Poisson equation with *this as a source (version with parameters to control the resolution).

The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this . Note that dzpuis must be equal to 2 or 4, i.e. that the quantity stored in *this is in fact $r^2 \sigma$ or $r^4 \sigma$ in the compactified external domain.

Parameters
par[input/output] possible parameters
uu[input/output] solution u with the boundary condition u =0 at spatial infinity.

Definition at line 152 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ poisson_angu()

Scalar Lorene::Scalar::poisson_angu ( double  lambda = 0) const

Solves the (generalized) angular Poisson equation with *this
as source.

The generalized angular Poisson equation is $\Delta_{\theta\varphi} u + \lambda u = \sigma$, where $\Delta_{\theta\varphi} u := \frac{\partial^2 u}
 {\partial \theta^2} + \frac{1}{\tan \theta} \frac{\partial u}
 {\partial \theta} +\frac{1}{\sin^2 \theta}\frac{\partial^2 u}
 {\partial \varphi^2}$.

  @param lambda [input] coefficient \f$\lambda\f$ in the above equation
    (default value = 0)
Returns
solution u .

Definition at line 200 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ poisson_dir_neu()

Scalar Lorene::Scalar::poisson_dir_neu ( const Valeur limite,
int  num,
double  fact_dir,
double  fact_neu 
) const

Is identicall to Scalar::poisson() .

The regularity condition at the origin is replace by a mixed boundary condition (Dirichlet + Neumann).

Parameters
limite[input] : angular function. The boundary condition is given by limite[num] .
num[input] : index of the boudary at which the condition is to be fullfilled.
fact_dir[input] : double in front of $\Psi$ (if $\Psi$ is the variable solved).
fact_neu[input] : double in front of the radial derivative of $\Psi$.

More precisely we impose $ fact\_dir.\Psi + fact\_neu.\frac{\partial 
\Phi}{\partial r}$ is equal to the source at the boundary between the domains num and num+1 (the latter one being a shell).

Definition at line 80 of file scalar_pde_frontiere.C.

References Lorene::Tensor::mp.

◆ poisson_dirichlet()

Scalar Lorene::Scalar::poisson_dirichlet ( const Valeur limite,
int  num 
) const

Is identicall to Scalar::poisson() .

The regularity condition at the origin is replace by a boundary condition of the Dirichlet type.

Parameters
limite[input] : angular function. The boundary condition is given by limite[num] .
num[input] : index of the boudary at which the condition is to be fullfilled.

More precisely we impose the solution is equal to limite[num] at the boundary between the domains num and num+1 (the latter one being a shell).

Definition at line 64 of file scalar_pde_frontiere.C.

References Lorene::Tensor::mp.

◆ poisson_frontiere_double()

Scalar Lorene::Scalar::poisson_frontiere_double ( const Valeur lim_func,
const Valeur lim_der,
int  num_zone 
) const

Idem as Scalar::poisson_dirichlet , the boundary condition being on both the function and its radial derivative.

The boundary condition at infinity is relaxed.

Definition at line 115 of file scalar_pde_frontiere.C.

References Lorene::Tensor::mp.

◆ poisson_neumann()

Scalar Lorene::Scalar::poisson_neumann ( const Valeur limite,
int  num_front 
) const

Idem as Scalar::poisson_dirichlet , the boundary condition being on the radial derivative of the solution.

Definition at line 98 of file scalar_pde_frontiere.C.

References Lorene::Tensor::mp.

◆ poisson_regular()

void Lorene::Scalar::poisson_regular ( int  k_div,
int  nzet,
double  unsgam1,
Param par,
Scalar uu,
Scalar uu_regu,
Scalar uu_div,
Tensor duu_div,
Scalar source_regu,
Scalar source_div 
) const

Solves the scalar Poisson equation with *this as a source (version with parameters to control the resolution).

The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this . The regularized source $\sigma_{\rm regu} = \sigma - \sigma_{\rm div}$ is constructed and solved. Note that dzpuis must be equal to 2 or 4, i.e. that the quantity stored in *this is in fact $r^2 \sigma$ or $r^4 \sigma$ in the compactified external domain.

Parameters
k_div[input] regularization degree of the procedure
nzet[input] number of domains covering the star
unsgam1[input] parameter $1/(\gamma-1)$ where $\gamma$ denotes the adiabatic index
par[input/output] possible parameters
uu[input/output] solution
uu_regu[output] solution of the regular part of the source.
uu_div[output] solution of the diverging part of the source.
duu_div[output] derivative of the diverging potential.
source_regu[output] regularized source
source_div[output] diverging part of the source

Definition at line 62 of file scalar_poisson_regu.C.

References Lorene::Tensor::mp.

◆ poisson_tau() [1/2]

Scalar Lorene::Scalar::poisson_tau ( ) const

Solves the scalar Poisson equation with *this as a source using a real Tau method The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this .

Note that dzpuis must be equal to 2, 3 or 4, i.e. that the quantity stored in *this is in fact $r^2 \sigma$, $r^3 \sigma$ or $r^4 \sigma$ in the compactified external domain. The solution u with the boundary condition u =0 at spatial infinity is the returned Scalar.

Definition at line 169 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ poisson_tau() [2/2]

void Lorene::Scalar::poisson_tau ( Param par,
Scalar uu 
) const

Solves the scalar Poisson equation with *this as a source using a real Tau method (version with parameters to control the resolution) The source $\sigma$ of the equation $\Delta u = \sigma$ is represented by the Scalar *this .

Note that dzpuis must be equal to 2, 3 or 4, i.e. that the quantity stored in *this is in fact $r^2 \sigma$, $r^3 \sigma$ or $r^4 \sigma$ in the compactified external domain. The solution u with the boundary condition u =0 at spatial infinity is the returned Scalar.

Definition at line 184 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ primr()

Scalar Lorene::Scalar::primr ( bool  null_infty = true) const

Computes the radial primitive which vanishes for $r\to \infty$.

i.e. the function $ F(r,\theta,\varphi) = \int_r^\infty f(r',\theta,\varphi) \, dr' $ where f is the function represented by *this (and must have a dzpuis = 2).

Parameters
null_inftyif true (default), the primitive is null at infinity (or on the grid boundary). F is null at the center otherwise
Returns
function F

Definition at line 101 of file scalar_integ.C.

References Lorene::Tensor::mp.

◆ raccord()

◆ raccord_c1_zec()

void Lorene::Scalar::raccord_c1_zec ( int  puis,
int  nbre,
int  lmax 
)

◆ raccord_externe()

◆ sarra_filter_r()

void Lorene::Scalar::sarra_filter_r ( int  lzmin,
int  lzmax,
double  p,
double  alpha = -1E-16 
)

Applies an exponential filter to the spectral coefficients in the radial direction.

The filter is of the type: $ \forall n\leq N,\, b_n = \sigma(n/N ) a_n$, with $ \sigma(x) = \exp\left( \alpha x^{p} \right) $ and N the number of radial coefficients.

Parameters
lzmin,lzmax[input] the indices of the domain where the filter is applied (in [lzmin , lzmax ])
p[input] the order of the filter
alpha[input] $\alpha$ appearing in the above formula.

Definition at line 96 of file scalar_exp_filter.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, Lorene::Valeur::coef(), Lorene::Valeur::del_deriv(), del_deriv(), etat, exp, Lorene::Tensor::mp, pow, Lorene::Mtbl_cf::set(), and va.

◆ sarra_filter_r_all_domains()

void Lorene::Scalar::sarra_filter_r_all_domains ( double  p,
double  alpha = 1E-16 
)

Applies an exponential filter in radial direction in all domains for the case where p is a double (see Scalar:sarra_filter_r ).

Note that this may cause regularity problems at the origin if applied in a nucleus.

Definition at line 136 of file scalar_exp_filter.C.

References Lorene::Tensor::get_mp(), and sarra_filter_r().

◆ sauve()

void Lorene::Scalar::sauve ( FILE fd) const
virtual

Save in a file.

Reimplemented from Lorene::Tensor.

Definition at line 686 of file scalar.C.

References dzpuis, etat, Lorene::fwrite_be(), Lorene::Valeur::sauve(), and va.

◆ scalar_out_bound()

Scalar Lorene::Scalar::scalar_out_bound ( int  n,
bool  leave_ylm = false 
)

Returns the Scalar containing the values of angular coefficients at the outer boundary.

Parameters
l_dom[input] domain index
leave_ylm[input] flag to decide whether the coefficients are expressed in spherical harmonics or Fourier base

Definition at line 467 of file scalar_manip.C.

References Lorene::Valeur::base, Lorene::Valeur::c_cf, Lorene::Valeur::coef(), etat, Lorene::Base_val::get_base_t(), Lorene::Tensor::mp, Lorene::Base_val::set_base_t(), va, Lorene::Mtbl_cf::val_out_bound_jk(), and Lorene::Valeur::ylm().

◆ set_der_0x0()

void Lorene::Scalar::set_der_0x0 ( ) const
protected

Sets the pointers for derivatives to 0x0.

Definition at line 306 of file scalar.C.

References ind_lap, p_dsdr, p_dsdradial, p_dsdrho, p_dsdt, p_dsdx, p_dsdy, p_dsdz, p_integ, p_lap, p_lapang, p_srdsdt, p_srstdsdp, and p_stdsdp.

◆ set_domain()

Tbl & Lorene::Scalar::set_domain ( int  l)
inline

Read/write of the value in a given domain.

This method should be used only to set the value in a given domain (it performs a call to del_deriv); for reading the value in a domain without changing it, the method domain(int ) is preferable.

Parameters
l[input] domain index
Returns
writable Tbl containing the value of the field in domain l .

Definition at line 615 of file scalar.h.

References del_deriv(), etat, Lorene::Valeur::set(), and va.

◆ set_dzpuis()

void Lorene::Scalar::set_dzpuis ( int  dzi)

Modifies the dzpuis flag.

NB: this method does not change the field values stored in the compactified external domain (use methods dec_dzpuis() , etc... for this purpose).

Definition at line 808 of file scalar.C.

References dzpuis.

◆ set_etat_nondef()

void Lorene::Scalar::set_etat_nondef ( )
virtual

Sets the logical state to ETATNONDEF (undefined).

Calls the logical destructor of the Valeur va
deallocates the memory occupied by all the derivatives.

Reimplemented from Lorene::Tensor.

Definition at line 344 of file scalar.C.

References del_t(), and etat.

◆ set_etat_one()

void Lorene::Scalar::set_etat_one ( )

Sets the logical state to ETATUN (one).

Fills the Valeur va with ones and deallocates the memory occupied by all the derivatives.

Definition at line 334 of file scalar.C.

References del_deriv(), etat, and va.

◆ set_etat_qcq()

void Lorene::Scalar::set_etat_qcq ( )
virtual

Sets the logical state to ETATQCQ (ordinary state).

If the state is already ETATQCQ , this function does nothing. Otherwise, it calls the logical destructor of the Valeur va and deallocates the memory occupied by all the derivatives.

Reimplemented from Lorene::Tensor.

Definition at line 353 of file scalar.C.

References del_t(), and etat.

◆ set_etat_zero()

void Lorene::Scalar::set_etat_zero ( )
virtual

Sets the logical state to ETATZERO (zero).

Calls the logical destructor of the Valeur va and deallocates the memory occupied by all the derivatives.

Reimplemented from Lorene::Tensor.

Definition at line 324 of file scalar.C.

References del_deriv(), etat, Lorene::Valeur::set_etat_zero(), and va.

◆ set_grid_point()

double & Lorene::Scalar::set_grid_point ( int  l,
int  k,
int  j,
int  i 
)
inline

Setting the value of the field at a given grid point.

CAUTION: to gain in efficiency (especially when this method is invoqued inside a loop), the method del_deriv() (to delete the derived members) is not called by set_grid_point . It must thus be invoqued by the user, after all the calls to set_grid_point have been performed.

Parameters
l[input] domain index
k[input] $\phi$ index
j[input] $\theta$ index
i[input] r ( $\xi$) index
Returns
writable value of the field at the specified grid point

Definition at line 684 of file scalar.h.

References etat, Lorene::Valeur::set(), and va.

◆ set_inner_boundary()

void Lorene::Scalar::set_inner_boundary ( int  l,
double  x 
)

Sets the value of the Scalar at the inner boundary of a given domain.

Parameters
l[input] domain index
x[input] (constant) value at the inner boundary of domain no. l

Definition at line 283 of file scalar_manip.C.

References annule_hard(), Lorene::Valeur::coef_i(), del_deriv(), etat, Lorene::Tensor::mp, Lorene::Valeur::set(), Lorene::Valeur::set_etat_c_qcq(), and va.

◆ set_outer_boundary()

void Lorene::Scalar::set_outer_boundary ( int  l,
double  x 
)

Sets the value of the Scalar at the outer boundary of a given domain.

Parameters
l[input] domain index
x[input] (constant) value at the outer boundary of domain no. l

Definition at line 315 of file scalar_manip.C.

References annule_hard(), Lorene::Valeur::coef_i(), del_deriv(), etat, Lorene::Tensor::mp, Lorene::Valeur::set(), Lorene::Valeur::set_etat_c_qcq(), and va.

◆ set_spectral_base()

void Lorene::Scalar::set_spectral_base ( const Base_val bi)

Sets the spectral bases of the Valeur va

Definition at line 797 of file scalar.C.

References Lorene::Valeur::set_base(), and va.

◆ set_spectral_va()

Valeur & Lorene::Scalar::set_spectral_va ( )
inline

Returns va (read/write version)

Definition at line 604 of file scalar.h.

References va.

◆ smooth_decay()

void Lorene::Scalar::smooth_decay ( int  k,
int  n 
)

Performs a $C^k$ matching of the last non-compactified shell with a decaying function $\sum_{j=0}^k {\alpha_j \over r^{\ell+n+j}}$ where $\ell$ is the spherical harmonic index and n is some specifiable parameter.

Definition at line 213 of file scalar_raccord_zec.C.

References Lorene::Valeur::c, Lorene::Valeur::c_cf, etat, Lorene::Valeur::get_base(), Lorene::Valeur::get_etat(), Lorene::Tensor::mp, pow, Lorene::Mtbl_cf::t, va, Lorene::Valeur::ylm(), and Lorene::Valeur::ylm_i().

◆ sol_divergence()

Scalar Lorene::Scalar::sol_divergence ( int  n) const

Resolution of a divergence-like equation.

The equation solved reads: $ \frac{\partial \phi}{\partial r} + \frac{n}{r} 
\phi = \sigma$, with $\phi$ the unknown and $\sigma$ the source represented by this.

Parameters
n[input] the coefficient in front of the 1/r term.
Returns
the solution to the equation.

Definition at line 68 of file scalar_sol_div.C.

References check_dzpuis(), etat, Lorene::Diff_sx::get_matrice(), Lorene::Mg3d::get_np(), Lorene::Mg3d::get_nr(), Lorene::Mg3d::get_nt(), Lorene::Mg3d::get_nzone(), get_spectral_base(), Lorene::Mg3d::get_type_r(), Lorene::Tensor::mp, pow, R_CHEB, R_CHEBI, R_CHEBP, R_CHEBU, and va.

◆ sol_elliptic()

Scalar Lorene::Scalar::sol_elliptic ( Param_elliptic params) const

Resolution of a general elliptic equation, putting zero at infinity.

Parameters
params[input] the operators and variables to be used.

Definition at line 234 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_2d()

Scalar Lorene::Scalar::sol_elliptic_2d ( Param_elliptic ope_var) const

Solves the scalar 2-dimensional elliptic equation with *this as a source.

Note that dzpuis must be equal to 2, 3 or 4, i.e. The solution u with the boundary condition u =0 at spatial infinity is the returned Scalar.

Definition at line 409 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_boundary() [1/2]

Scalar Lorene::Scalar::sol_elliptic_boundary ( Param_elliptic params,
const Mtbl_cf bound,
double  fact_dir,
double  fact_neu 
) const

Resolution of a general elliptic equation, putting zero at infinity and with inner boundary conditions.

Parameters
params[input] the operators and variables to be used.
bound[input] : the boundary condition
fact_dir: 1 Dirchlet condition, 0 Neumann condition
fact_neu: 0 Dirchlet condition, 1 Neumann condition

Definition at line 256 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_boundary() [2/2]

Scalar Lorene::Scalar::sol_elliptic_boundary ( Param_elliptic params,
const Scalar bound,
double  fact_dir,
double  fact_neu 
) const

Resolution of general elliptic equation, with inner boundary conditions as Scalars on mono-domain angulare grids.

Definition at line 282 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_fixe_der_zero()

Scalar Lorene::Scalar::sol_elliptic_fixe_der_zero ( double  val,
Param_elliptic params 
) const

Resolution of a general elliptic equation fixing the dericative at the origin and relaxing one continuity condition.

Parameters
val[input] value of the derivative.
params[input] the operators and variables to be used.

Definition at line 386 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_no_zec()

Scalar Lorene::Scalar::sol_elliptic_no_zec ( Param_elliptic params,
double  val = 0 
) const

Resolution of a general elliptic equation, putting a given value at the outermost shell and not solving in the compactified domain.

Parameters
params[input] the operators and variables to be used.
val[input] value at the last shell.

Definition at line 314 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_only_zec()

Scalar Lorene::Scalar::sol_elliptic_only_zec ( Param_elliptic params,
double  val 
) const

Resolution of a general elliptic equation solving in the compactified domain and putting a given value at the inner boundary.

Parameters
params[input] the operators and variables to be used.
val[input] value at the inner boundary of the external domain.

Definition at line 341 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_pseudo_1d()

Scalar Lorene::Scalar::sol_elliptic_pseudo_1d ( Param_elliptic ope_var) const

Solves a pseudo-1d elliptic equation with *this as a source.

Definition at line 430 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ sol_elliptic_sin_zec()

Scalar Lorene::Scalar::sol_elliptic_sin_zec ( Param_elliptic params,
double coefs,
double phases 
) const

General elliptic solver.

The equation is not solved in the compactified domain and the matching is done with an homogeneous solution.

Parameters
params[input] the operators and variables to be used.
coef[output] : coefficient of the oscillatory solution in the external domain.
phases[output] : phases (i.e. choice of the homogeneous solution to match with).

Definition at line 363 of file scalar_pde.C.

References Lorene::Tensor::mp.

◆ spectral_display()

void Lorene::Scalar::spectral_display ( const char comment = 0x0,
double  threshold = 1.e-7,
int  precision = 4,
ostream ostr = cout 
) const
virtual

Displays the spectral coefficients and the associated basis functions.

This function shows only the values greater than a given threshold.

Parameters
commentcomment to be printed at top of the display (default: 0x0 = nothing printed)
threshold[input] Value above which a coefficient is printed (default: 1.e-7)
precision[input] Number of printed digits (default: 4)
ostr[input] Output stream used for the printing (default: cout)

Reimplemented from Lorene::Tensor.

Definition at line 741 of file scalar.C.

References Lorene::Valeur::display_coef(), dzpuis, etat, and va.

◆ srdsdt()

const Scalar & Lorene::Scalar::srdsdt ( ) const

Returns $1/r \partial / \partial \theta$ of *this .

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 145 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_srdsdt, set_dzpuis(), and set_etat_zero().

◆ srstdsdp()

const Scalar & Lorene::Scalar::srstdsdp ( ) const

Returns $1/(r\sin\theta) \partial / \partial \phi$ of *this .

If dzpuis is zero, then the returned Scalar has dzpuis = 2. It is increased by 1 otherwise.

Definition at line 177 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_srstdsdp, set_dzpuis(), and set_etat_zero().

◆ std_spectral_base()

void Lorene::Scalar::std_spectral_base ( )
virtual

Sets the spectral bases of the Valeur va to the standard ones for a scalar field.

Reimplemented from Lorene::Tensor.

Definition at line 784 of file scalar.C.

References Lorene::Valeur::std_base_scal(), and va.

◆ std_spectral_base_odd()

void Lorene::Scalar::std_spectral_base_odd ( )
virtual

Sets the spectral bases of the Valeur va to the standard odd ones for a scalar field.

Reimplemented from Lorene::Tensor.

Definition at line 791 of file scalar.C.

References Lorene::Valeur::std_base_scal_odd(), and va.

◆ stdsdp()

const Scalar & Lorene::Scalar::stdsdp ( ) const

Returns $1/\sin\theta \partial / \partial \phi$ of *this .

Definition at line 238 of file scalar_deriv.C.

References dzpuis, etat, Lorene::Tensor::mp, p_stdsdp, set_dzpuis(), and set_etat_zero().

◆ tbl_in_bound()

Tbl Lorene::Scalar::tbl_in_bound ( int  n,
bool  leave_ylm = false 
)

Returns the Tbl containing the values of angular coefficients at the inner boundary.

Parameters
l_dom[input] domain index
leave_ylm[input] flag to decide whether the coefficients are expressed in spherical harmonics or Fourier base

Definition at line 448 of file scalar_manip.C.

References Lorene::Valeur::c_cf, Lorene::Valeur::coef(), etat, Lorene::Tensor::mp, va, Lorene::Mtbl_cf::val_in_bound_jk(), and Lorene::Valeur::ylm().

◆ tbl_out_bound()

Tbl Lorene::Scalar::tbl_out_bound ( int  l_dom,
bool  leave_ylm = false 
)

Returns the Tbl containing the values of angular coefficients at the outer boundary.

Parameters
l_dom[input] domain index
leave_ylm[input] flag to decide whether the coefficients are expressed in spherical harmonics or Fourier base

Definition at line 430 of file scalar_manip.C.

References Lorene::Valeur::c_cf, Lorene::Valeur::coef(), etat, Lorene::Tensor::mp, va, Lorene::Mtbl_cf::val_out_bound_jk(), and Lorene::Valeur::ylm().

◆ test_poisson()

Tbl Lorene::Scalar::test_poisson ( const Scalar uu,
ostream ostr,
bool  detail = false 
) const

Checks if a Poisson equation with *this as a source has been correctly solved.

Parameters
uu[input] Solution u of the Poisson equation $\Delta u = \sigma$, $\sigma$ being represented by the Scalar *this .
ostr[input/output] Output stream used for displaying err .
detail[input]
  • if true displays err(0,*) , err(1,*) and err(2,*)
  • if false (default), displays only the relative error err(0,*) .
Returns
2-D Tbl err decribing the errors in each domain:
  • err(0,l) : Relative error in domain no. l , defined as the maximum value of $|\Delta u - \sigma|$ in that domain divided by M , where M is the maximum value of $|\sigma|$ over all domains if dzpuis = 0 or $\sigma$ is zero in the compactified external domain (CED). If dzpuis != 0 and $\sigma$ does not vanish in the CED, the value of M used in the non-compactified domains is the maximum value over these domains, whereas the value of M used in the compactified external domain is the maximum value on that particular domain.
  • err(1,l) : Maximum value of the absolute error $|\Delta u - \sigma|$ in domain no. l
  • err(2,l) : Maximum value of $|\sigma|$ in domain no. l

Definition at line 60 of file scalar_test_poisson.C.

References abs, check_dzpuis(), dzpuis, max, and Lorene::Tensor::mp.

◆ val_grid_point()

double Lorene::Scalar::val_grid_point ( int  l,
int  k,
int  j,
int  i 
) const
inline

Returns the value of the field at a specified grid point.

Parameters
l[input] domain index
k[input] $\phi$ index
j[input] $\theta$ index
i[input] r ( $\xi$) index

Definition at line 637 of file scalar.h.

References etat, and va.

◆ val_point()

double Lorene::Scalar::val_point ( double  r,
double  theta,
double  phi 
) const

Computes the value of the field at an arbitrary point $(r, \theta, \phi)$, by means of the spectral expansion.

NB: if $(r, \theta, \phi)$ is a point of the spectral grid, the method val_grid_point is to be preferred, being much more efficient.

Parameters
r[input] value of the coordinate r
theta[input] value of the coordinate $\theta$
phi[input] value of the coordinate $\phi$
Returns
value at the point $(r, \theta, \phi)$ of the field represented by *this . NB: in the compactified external domain, the returned value is the actual value of the field, i.e. the stored value divided by $ r^{\rm dzpuis} $.

Definition at line 890 of file scalar.C.

References dzpuis, etat, Lorene::Tensor::mp, va, and Lorene::Valeur::val_point().

◆ visu_box()

void Lorene::Scalar::visu_box ( double  xmin,
double  xmax,
double  ymin,
double  ymax,
double  zmin,
double  zmax,
const char title0 = 0x0,
const char filename0 = 0x0,
bool  start_dx = true,
int  nx = 40,
int  ny = 40,
int  nz = 40 
) const

3D visualization (volume rendering) via OpenDX.

Prepares files for visualization by OpenDX of the values of the field in some rectangular box.

Parameters
xmin[input] defines with xmax the x range of the visualization box
xmax[input] defines with xmin the x range of the visualization box
ymin[input] defines with ymax the y range of the visualization box
ymax[input] defines with ymin the y range of the visualization box
zmin[input] defines with zmax the z range of the visualization box
zmax[input] defines with zmin the z range of the visualization box
title[input] title for the graph (for OpenDX legend)
filename[input] name for the file which will be the input for OpenDX; the default 0x0 is transformed into "scalar_box"
start_dx[input] determines whether OpenDX must be launched (as a subprocess) to view the field; if set to false , only input files for future usage of OpenDX are created
nx[input] number of points in the x direction (uniform sampling)
ny[input] number of points in the y direction (uniform sampling)
nz[input] number of points in the z direction (uniform sampling)

Definition at line 342 of file scalar_visu.C.

References Lorene::Valeur::c_cf, check_dzpuis(), Lorene::Valeur::coef(), dzpuis, and Lorene::Tensor::mp.

◆ visu_section() [1/2]

void Lorene::Scalar::visu_section ( const char  section_type,
double  aa,
double  umin,
double  umax,
double  vmin,
double  vmax,
const char title = 0x0,
const char filename = 0x0,
bool  start_dx = true,
int  nu = 200,
int  nv = 200 
) const

3D visualization via a plane section.

Prepares files for visualization by OpenDX of the values of the field in a plane x=const, y=const or z=const

Parameters
section_type[input] defines the type of section :
  • 'x' for a plane x = a with a = const (parameter aa )
  • 'y' for a plane y = a with a = const (parameter aa )
  • 'z' for a plane z = a with a = const (parameter aa )
aa[input] constant a defining the section plane
umin[input] defines with umax the range of the plane coordinate u
umax[input] defines with umin the range of the plane coordinate u
vmin[input] defines with vmax the range of the plane coordinate v
vmax[input] defines with vmin the range of the plane coordinate v
title[input] title for the graph (for OpenDX legend)
filename[input] name for the file which will be the input for OpenDX; the default 0x0 is transformed into "scalar_section"
start_dx[input] determines whether OpenDX must be launched (as a subprocess) to view the field; if set to false , only input files for future usage of OpenDX are created
nu[input] number of points in the u direction (uniform sampling)
nv[input] number of points in the v direction (uniform sampling)

Definition at line 78 of file scalar_visu.C.

References visu_section().

◆ visu_section() [2/2]

void Lorene::Scalar::visu_section ( const Tbl plane,
double  umin,
double  umax,
double  vmin,
double  vmax,
const char title = 0x0,
const char filename = 0x0,
bool  start_dx = true,
int  nu = 200,
int  nv = 200 
) const

3D visualization via a plane section.

Prepares files for visualization by OpenDX of the values of the field in any given plane.

Parameters
plane[input] : 2D Tbl defining the section plane: plane must of dimension 3x3 with the following content:
  • plane(0,i) : absolute Cartesian coordinates (xa0,ya0,za0) of some point in the plane considered as the origin for the plane coordinates (u,v): plane(0,0) = xa0 , plane(0,1) = ya0 ,
  • plane(0,2) = za0
  • plane(1,i) : components w.r.t. absolute Cartesian coordinates of the u-coordinate unit vector in the section plane
  • plane(2,i) : components w.r.t. absolute Cartesian coordinates of the v-coordinate unit vector in the section plane
umin[input] defines with umax the range of the plane coordinate u
umax[input] defines with umin the range of the plane coordinate u
vmin[input] defines with vmax the range of the plane coordinate v
vmax[input] defines with vmin the range of the plane coordinate v
title[input] title for the graph (for OpenDX legend)
filename[input] name for the file which will be the input for OpenDX; the default 0x0 is transformed into "scalar_section"
start_dx[input] determines whether OpenDX must be launched (as a subprocess) to view the field; if set to false , only input files for future usage of OpenDX are created
nu[input] number of points in the u direction (uniform sampling)
nv[input] number of points in the v direction (uniform sampling)

Definition at line 156 of file scalar_visu.C.

References Lorene::Valeur::c_cf, Lorene::Valeur::coef(), Lorene::Tensor::mp, and va.

◆ visu_section_anim()

void Lorene::Scalar::visu_section_anim ( const char  section_type,
double  aa,
double  umin,
double  umax,
double  vmin,
double  vmax,
int  jtime,
double  ttime,
int  jgraph = 1,
const char title = 0x0,
const char filename_root = 0x0,
bool  start_dx = false,
int  nu = 200,
int  nv = 200 
) const

3D visualization via time evolving plane section (animation).

Prepares files for visualization by OpenDX of the values of the field in a plane x=const, y=const or z=const at successive time steps

Parameters
section_type[input] defines the type of section :
  • 'x' for a plane x = a with a = const (parameter aa )
  • 'y' for a plane y = a with a = const (parameter aa )
  • 'z' for a plane z = a with a = const (parameter aa )
aa[input] constant a defining the section plane
umin[input] defines with umax the range of the plane coordinate u
umax[input] defines with umin the range of the plane coordinate u
vmin[input] defines with vmax the range of the plane coordinate v
vmax[input] defines with vmin the range of the plane coordinate v
jtime[input] time step label
ttime[input] time t corresponding to jtime
jgraph[input] number of time steps between two graphs: the graph will be generated only if jtime is a multiple of jgraph
title[input] title for the graph (for OpenDX legend)
filename_root[input] beginning of the names for the files which will be the input for OpenDX (the end of names will be automatically generated from the time steps); the default 0x0 is transformed into "anim"
start_dx[input] determines whether OpenDX must be launched (as a subprocess) to view the field; if set to false , only input files for future usage of OpenDX are created
nu[input] number of points in the u direction (uniform sampling)
nv[input] number of points in the v direction (uniform sampling)

Definition at line 535 of file scalar_visu.C.

References visu_section().

Friends And Related Symbol Documentation

◆ abs

Scalar abs ( const Scalar ci)
friend

Absolute value.

Definition at line 523 of file scalar_math.C.

◆ acos

Scalar acos ( const Scalar ci)
friend

Arccosine.

Definition at line 199 of file scalar_math.C.

◆ asin

Scalar asin ( const Scalar ci)
friend

Arcsine.

Definition at line 167 of file scalar_math.C.

◆ atan

Scalar atan ( const Scalar ci)
friend

Arctangent.

Definition at line 231 of file scalar_math.C.

◆ cos

Scalar cos ( const Scalar ci)
friend

Cosine.

Definition at line 104 of file scalar_math.C.

◆ diffrel

Tbl diffrel ( const Scalar a,
const Scalar b 
)
friend

Relative difference between two Scalar (norme version).

Returns
1-D Tbl of size the number of domains, the elements of which are norme[a(l)-b(l)]/norme[b(l)] if b(l)!=0 and norme[a(l)-b(l)] if b(l)=0 , where a(l) and b(l) denote symbolically the values of a and b
in domain no. l .

Definition at line 695 of file scalar_math.C.

◆ diffrelmax

Tbl diffrelmax ( const Scalar a,
const Scalar b 
)
friend

Relative difference between two Scalar (max version).

Returns
1-D Tbl of size the number of domains, the elements of which are max[abs(a(l)-b(l))]/max[abs(b(l))] if b(l)!=0 and max[abs(a(l)-b(l))] if b(l)=0 , where a(l) and b(l) denote symbolically the values of a and b
in domain no. l .

Definition at line 730 of file scalar_math.C.

◆ exp

Scalar exp ( const Scalar ci)
friend

Exponential.

Definition at line 323 of file scalar_math.C.

◆ Heaviside

Scalar Heaviside ( const Scalar ci)
friend

Heaviside function.

Definition at line 355 of file scalar_math.C.

◆ log

Scalar log ( const Scalar ci)
friend

Neperian logarithm.

Definition at line 385 of file scalar_math.C.

◆ log10

Scalar log10 ( const Scalar ci)
friend

Basis 10 logarithm.

Definition at line 418 of file scalar_math.C.

◆ max

Tbl max ( const Scalar ci)
friend

Maximum values of a Scalar in each domain.

Returns
1-D Tbl of size the number of domains, the elements of which are the set of the maximum values in each domain.

Definition at line 611 of file scalar_math.C.

◆ min

Tbl min ( const Scalar ci)
friend

Minimum values of a Scalar in each domain.

Returns
1-D Tbl of size the number of domains, the elements of which are the set of the minimum values in each domain.

Definition at line 639 of file scalar_math.C.

◆ norme

Tbl norme ( const Scalar ci)
friend

Sums of the absolute values of all the values of the Scalar in each domain.

Returns
1-D Tbl of size the number of domains, the elements of which are the set of the sums of the absolute values in each domain.

Definition at line 667 of file scalar_math.C.

◆ operator%

Scalar operator% ( const Scalar c1,
const Scalar c2 
)
friend

Scalar * Scalar with desaliasing.

Definition at line 457 of file scalar_arithm.C.

◆ operator* [1/3]

Scalar operator* ( const Mtbl mi,
const Scalar c1 
)
friend

Mtbl * Scalar.

Definition at line 527 of file scalar_arithm.C.

◆ operator* [2/3]

Scalar operator* ( const Scalar c1,
const Scalar c2 
)
friend

Scalar * Scalar.

Definition at line 423 of file scalar_arithm.C.

◆ operator* [3/3]

Scalar operator* ( double  a,
const Scalar c1 
)
friend

double * Scalar

Definition at line 568 of file scalar_arithm.C.

◆ operator+ [1/3]

Scalar operator+ ( const Scalar c1,
const Mtbl mi 
)
friend

Scalar + Mbtl.

Definition at line 163 of file scalar_arithm.C.

◆ operator+ [2/3]

Scalar operator+ ( const Scalar c1,
const Scalar c2 
)
friend

Scalar + Scalar.

Definition at line 113 of file scalar_arithm.C.

◆ operator+ [3/3]

Scalar operator+ ( const Scalar t1,
double  x 
)
friend

Scalar + double.

Definition at line 207 of file scalar_arithm.C.

◆ operator- [1/4]

Scalar operator- ( const Scalar ci)
friend

- Scalar

Definition at line 90 of file scalar_arithm.C.

◆ operator- [2/4]

Scalar operator- ( const Scalar t1,
const Mtbl mi 
)
friend

Scalar - Mbtl.

Definition at line 320 of file scalar_arithm.C.

◆ operator- [3/4]

Scalar operator- ( const Scalar c1,
const Scalar c2 
)
friend

Scalar - Scalar.

Definition at line 270 of file scalar_arithm.C.

◆ operator- [4/4]

Scalar operator- ( const Scalar t1,
double  x 
)
friend

Scalar - double.

Definition at line 360 of file scalar_arithm.C.

◆ operator/ [1/5]

Scalar operator/ ( const Mtbl mi,
const Scalar c2 
)
friend

Mtbl / Scalar.

Definition at line 707 of file scalar_arithm.C.

◆ operator/ [2/5]

Scalar operator/ ( const Scalar c1,
const Mtbl mi 
)
friend

Scalar / Mtbl

Definition at line 675 of file scalar_arithm.C.

◆ operator/ [3/5]

Scalar operator/ ( const Scalar c1,
const Scalar c2 
)
friend

Scalar / Scalar.

Definition at line 637 of file scalar_arithm.C.

◆ operator/ [4/5]

Scalar operator/ ( const Scalar c1,
double  x 
)
friend

Scalar / double.

Definition at line 741 of file scalar_arithm.C.

◆ operator/ [5/5]

Scalar operator/ ( double  x,
const Scalar c2 
)
friend

double / Scalar

Definition at line 775 of file scalar_arithm.C.

◆ operator<<

ostream & operator<< ( ostream ost,
const Scalar ci 
)
friend

Display.

Definition at line 702 of file scalar.C.

◆ operator|

Scalar operator| ( const Scalar c1,
const Scalar c2 
)
friend

Scalar * Scalar with desaliasing only in r.

Definition at line 491 of file scalar_arithm.C.

◆ pow [1/2]

Scalar pow ( const Scalar ci,
double  x 
)
friend

Power ${\tt Scalar}^{\tt double}$.

Definition at line 487 of file scalar_math.C.

◆ pow [2/2]

Scalar pow ( const Scalar ci,
int  n 
)
friend

Power ${\tt Scalar}^{\tt int}$.

Definition at line 451 of file scalar_math.C.

◆ racine_cubique

Scalar racine_cubique ( const Scalar ci)
friend

Cube root.

Definition at line 293 of file scalar_math.C.

◆ sin

Scalar sin ( const Scalar ci)
friend

Sine.

Definition at line 72 of file scalar_math.C.

◆ sqrt

Scalar sqrt ( const Scalar ci)
friend

Square root.

Definition at line 263 of file scalar_math.C.

◆ tan

Scalar tan ( const Scalar ci)
friend

Tangent.

Definition at line 136 of file scalar_math.C.

◆ totalmax

double totalmax ( const Scalar ci)
friend

Maximum values of a Scalar in each domain.

Returns
1-D Tbl of size the number of domains, the elements of which are the set of the maximum values in each domain.

Definition at line 553 of file scalar_math.C.

◆ totalmin

double totalmin ( const Scalar ci)
friend

Minimum values of a Scalar in each domain.

Returns
1-D Tbl of size the number of domains, the elements of which are the set of the minimum values in each domain.

Definition at line 582 of file scalar_math.C.

Member Data Documentation

◆ dzpuis

int Lorene::Scalar::dzpuis
protected

Power of r by which the quantity represented by this
must be divided in the compactified external domain (CED) in order to get the correct physical values.

Definition at line 403 of file scalar.h.

◆ etat

int Lorene::Scalar::etat
protected

The logical state ETATNONDEF (undefined), ETATZERO (null), ETATUN (one), or ETATQCQ (ordinary).

Definition at line 396 of file scalar.h.

◆ ind_lap

int Lorene::Scalar::ind_lap
mutableprotected

Power of r by which the last computed Laplacian has been multiplied in the compactified external domain.


Definition at line 463 of file scalar.h.

◆ p_dsdr

Scalar* Lorene::Scalar::p_dsdr
mutableprotected

Pointer on $\partial/\partial r$ of *this (0x0 if not up to date)

Definition at line 411 of file scalar.h.

◆ p_dsdradial

Scalar* Lorene::Scalar::p_dsdradial
mutableprotected

Pointer on $\partial/\partial radial $ of *this

Definition at line 455 of file scalar.h.

◆ p_dsdrho

Scalar* Lorene::Scalar::p_dsdrho
mutableprotected

Pointer on $\partial/\partial \rho $ of *this

Definition at line 458 of file scalar.h.

◆ p_dsdt

Scalar* Lorene::Scalar::p_dsdt
mutableprotected

Pointer on $\partial/\partial \theta$ of *this (0x0 if not up to date)

Definition at line 424 of file scalar.h.

◆ p_dsdx

Scalar* Lorene::Scalar::p_dsdx
mutableprotected

Pointer on $\partial/\partial x$ of *this , where $x=r\sin\theta \cos\phi$ (0x0 if not up to date)

Definition at line 434 of file scalar.h.

◆ p_dsdy

Scalar* Lorene::Scalar::p_dsdy
mutableprotected

Pointer on $\partial/\partial y$ of *this , where $y=r\sin\theta \sin\phi$(0x0 if not up to date)

Definition at line 439 of file scalar.h.

◆ p_dsdz

Scalar* Lorene::Scalar::p_dsdz
mutableprotected

Pointer on $\partial/\partial z$ of *this , where $z=r\cos\theta$ (0x0 if not up to date)

Definition at line 444 of file scalar.h.

◆ p_integ

Tbl* Lorene::Scalar::p_integ
mutableprotected

Pointer on the space integral of *this (values in each domain) (0x0 if not up to date)

Definition at line 468 of file scalar.h.

◆ p_lap

Scalar* Lorene::Scalar::p_lap
mutableprotected

Pointer on the Laplacian of *this (0x0 if not up to date)

Definition at line 448 of file scalar.h.

◆ p_lapang

Scalar* Lorene::Scalar::p_lapang
mutableprotected

Pointer on the Laplacian of *this (0x0 if not up to date)

Definition at line 452 of file scalar.h.

◆ p_srdsdt

Scalar* Lorene::Scalar::p_srdsdt
mutableprotected

Pointer on $1/r \partial/\partial \theta$ of *this
(0x0 if not up to date)

Definition at line 416 of file scalar.h.

◆ p_srstdsdp

Scalar* Lorene::Scalar::p_srstdsdp
mutableprotected

Pointer on $1/(r\sin\theta) \partial/\partial \phi$ of *this (0x0 if not up to date)

Definition at line 421 of file scalar.h.

◆ p_stdsdp

Scalar* Lorene::Scalar::p_stdsdp
mutableprotected

Pointer on $1/\sin\theta \partial/\partial \phi$ of *this (0x0 if not up to date)

Definition at line 429 of file scalar.h.

◆ va

Valeur Lorene::Scalar::va
protected

The numerical value of the Scalar

Definition at line 405 of file scalar.h.


The documentation for this class was generated from the following files: