3.4.16. horton/grid/rtransform.h
– Transformation from uniform 1D to non-uniform 1D grids¶
-
class
RTransform
¶ - #include <rtransform.h>
Transformation of radial grid used for integration in spherical coordinates.
Some conventions
radius
orr
are the transformed values, a function of t.t
is used for the original grid
Subclassed by ExpRTransform, HyperbolicRTransform, IdentityRTransform, LinearRTransform, PowerRTransform
Public Functions
-
RTransform
(int npoint)¶ Create an RTransform object.
- Parameters
npoint
: The number of points on the radial grid.
-
virtual
~RTransform
()¶ Destructor.
-
virtual double
radius
(double t) = 0¶ Compute the radius for a given t. (Forward transformation.)
- Parameters
t
: The value on the untransformed grid.
-
virtual double
deriv
(double t) = 0¶ Compute the derivative of the radius w.r.t. t.
- Parameters
t
: The value on the untransformed grid.
-
virtual double
deriv2
(double t) = 0¶ Compute the second derivative of the radius w.r.t. t.
- Parameters
t
: The value on the untransformed grid.
-
virtual double
deriv3
(double t) = 0¶ Compute the third derivative of the radius w.r.t. t.
- Parameters
t
: The value on the untransformed grid.
-
virtual double
inv
(double r) = 0¶ Compute t for a given radius. (Reverse transform.)
- Parameters
r
: The value on the transformed grid.
-
void
radius_array
(double *t, double *r, int n)¶ Compute the radii for a given array of t values. (Forward transformation.)
- Parameters
t
: The array with values on the untransformed grid.r
: The output array with radii.n
: The number of elements in the array.
-
void
deriv_array
(double *t, double *d, int n)¶ Compute derivatives of the radius for a given array of t values.
- Parameters
t
: The array with values on the untransformed grid.d
: The output array with (d r)/(d t).n
: The number of elements in the array.
-
void
deriv2_array
(double *t, double *d, int n)¶ Compute second derivatives of the radius for a given array of t values.
- Parameters
t
: The array with values on the untransformed grid.d
: The output array with (d^2 r)/(d t^2).n
: The number of elements in the array.
-
void
deriv3_array
(double *t, double *d, int n)¶ Compute third derivatives of the radius for a given array of t values.
- Parameters
t
: The array with values on the untransformed grid.d
: The output array with (d^3 r)/(d t^3).n
: The number of elements in the array.
-
void
inv_array
(double *r, double *t, int n)¶ Compute the t values for a given array radii. (Reverse transformation.)
- Parameters
r
: The array with radii.t
: The output array with values on the untransformed grid.n
: The number of elements in the array.
-
int
get_npoint
()¶ The number of grid points .
Protected Attributes
-
int
npoint
¶ The number of grid points.
-
class
IdentityRTransform
¶ - #include <rtransform.h>
Identity transformation, mostly used for debugging. r(t) = t.
Inherits from RTransform
Public Functions
-
IdentityRTransform
(int npoint)¶ Create an IdentityRTransform object.
- Parameters
npoint
: The number of points on the radial grid.
-
double
radius
(double t)¶ Forward transformation.
-
double
deriv
(double t)¶ (d r)/(d t)
-
double
deriv2
(double t)¶ (d^2 r)/(d t^2)
-
double
deriv3
(double t)¶ (d^3 r)/(d t^3)
-
double
inv
(double r)¶ Reverse transformation.
-
-
class
LinearRTransform
¶ - #include <rtransform.h>
Linear transformation. r(t) = rmin + t*(rmax - rmin)/(npoint - 1)
Inherits from RTransform
Public Functions
-
LinearRTransform
(double rmin, double rmax, int npoint)¶ Create an LinearRTransform object.
- Parameters
rmin
: First radiusrmax
: Last radiusnpoint
: The number of points on the radial grid.
-
double
radius
(double t)¶ Forward transformation.
-
double
deriv
(double t)¶ (d r)/(d t)
-
double
deriv2
(double t)¶ (d^2 r)/(d t^2)
-
double
deriv3
(double t)¶ (d^3 r)/(d t^3)
-
double
inv
(double r)¶ Reverse transformation.
-
double
get_rmin
()¶ First radius.
-
double
get_rmax
()¶ Last radius.
-
double
get_alpha
()¶ Slope.
-
-
class
ExpRTransform
¶ - #include <rtransform.h>
Exponential transformation. r(t) = rmin*exp(t*log(rmax/rmin)/(npoint - 1))
Inherits from RTransform
Public Functions
-
ExpRTransform
(double rmin, double rmax, int npoint)¶ Create an ExpRTransform object.
- Parameters
rmin
: First radiusrmax
: Last radiusnpoint
: The number of points on the radial grid.
-
double
radius
(double t)¶ Forward transformation.
-
double
deriv
(double t)¶ (d r)/(d t)
-
double
deriv2
(double t)¶ (d^2 r)/(d t^2)
-
double
deriv3
(double t)¶ (d^3 r)/(d t^3)
-
double
inv
(double r)¶ Reverse transformation.
-
double
get_rmin
()¶ First radius.
-
double
get_rmax
()¶ Last radius.
-
double
get_alpha
()¶ Exponent.
-
-
class
PowerRTransform
¶ - #include <rtransform.h>
Power transformation. r(t) = rmin*t^power with power = log(rmax/rmin)/log(npoint)
Inherits from RTransform
Public Functions
-
PowerRTransform
(double rmin, double rmax, int npoint)¶ Create a PowerRTransform object.
- Parameters
rmin
: First radiusrmax
: Last radiusnpoint
: The number of points on the radial grid.
-
double
radius
(double t)¶ Forward transformation.
-
double
deriv
(double t)¶ (d r)/(d t)
-
double
deriv2
(double t)¶ (d^2 r)/(d t^2)
-
double
deriv3
(double t)¶ (d^3 r)/(d t^3)
-
double
inv
(double r)¶ Reverse transformation.
-
double
get_rmin
()¶ First radius.
-
double
get_rmax
()¶ Last radius.
-
double
get_power
()¶ The power of t.
-
-
class
HyperbolicRTransform
¶ - #include <rtransform.h>
Hyperbolic transformation. r(t) = a*t/(1 - b*t)
Inherits from RTransform
Public Functions
-
HyperbolicRTransform
(double a, double b, int npoint)¶ Create a HyperbolicRTransform object.
- Parameters
a
: Prefactor in r(t).b
: Parameter in denominator of r(t).npoint
: The number of points on the radial grid.
-
double
radius
(double t)¶ Forward transformation.
-
double
deriv
(double t)¶ (d r)/(d t)
-
double
deriv2
(double t)¶ (d^2 r)/(d t^2)
-
double
deriv3
(double t)¶ (d^3 r)/(d t^3)
-
double
inv
(double r)¶ Reverse transformation.
-
double
get_a
()¶ Prefactor in r(t)
-
double
get_b
()¶ Parameter in denominator of r(t)
-