Stellarator-Tools
|
Defines the base class of the type pprofile_class. This module contains all the code necessary to define parameterized profiles. More...
Data Types | |
interface | pprofile_class |
Base class representing a parameterized profile. More... | |
type | pprofile_pointer |
Pointer to a pprofile object. Used for creating arrays of pprofile pointers. This is needed because fortran does not allow arrays of pointers directly. More... | |
Functions/Subroutines | |
type(pprofile_class) function, pointer | pprofile_construct (p_type, b, as, af) |
Construct a pprofile_class. More... | |
subroutine | pprofile_destruct (this) |
Deconstruct a pprofile_class object. More... | |
real(rprec) function | pprofile_get_value (this, s_arg) |
Gets the value of a profile at a radial position. More... | |
character(len=p_type_len) function | pprofile_get_p_type_name (this) |
Gets the name of the profile type. More... | |
real(rprec) function | pprofile_get_gp_ij (this, i, j) |
Get the guassian process kernel value for the two as indicies. More... | |
real(rprec) function | pprofile_get_gp_pi (this, p, i) |
Get the guassian process kernel value for the point and index. More... | |
real(rprec) function | pprofile_get_gp_pp (this, p1, p2) |
Get the guassian process kernel value for two points. More... | |
integer function | pprofile_get_gp_num_hyper_param (this) |
Get the number of hyper parameters for guassian process kernel. More... | |
subroutine | pprofile_write (this, id, iou) |
Write out the profile to an output file. More... | |
subroutine | pprofile_save_state (this) |
Save the internal state of the profile. More... | |
subroutine | pprofile_reset_state (this) |
Reset the internal state of the profile. More... | |
pure real(rprec) function | pprofile_gp_1d_sqexp_k (this, p1, p2) |
Evaluate the one dimensional squared exponential kernel. More... | |
pure real(rprec) function | pprofile_gp_1d_sqexp_ln_k (this, p1, p2) |
Evaluate the one dimensional squared exponential kernel. More... | |
Variables | |
integer, parameter, public | p_type_len =20 |
Maximum size for parameter profile name lengths. | |
integer, parameter, public | ilb_b = 0 |
Lower array bound for function profiles. | |
integer, parameter, public | iub_b = 21 |
Upper array bound for function profiles. | |
integer, parameter, public | iub_asf = 101 |
Array size for spline profiles. | |
Defines the base class of the type pprofile_class. This module contains all the code necessary to define parameterized profiles.
type (pprofile_class) function, pointer pprofile_t::pprofile_construct | ( | character (len=*), intent(in) | p_type, |
real(rprec), dimension(:), intent(in) | b, | ||
real(rprec), dimension(:), intent(in) | as, | ||
real(rprec), dimension(:), intent(in) | af | ||
) |
Construct a pprofile_class.
Allocates memory and initializes a pprofile_class.
[in] | p_type | Profile type discription. |
[in] | b | Array of functional profile coefficients |
[in] | as | Array of segmented radial positions. |
[in] | af | Array of segmented profile values. |
subroutine pprofile_t::pprofile_destruct | ( | type (pprofile_class), intent(inout) | this | ) |
Deconstruct a pprofile_class object.
Deallocates memory and uninitializes a pprofile_class object.
[in,out] | this | A pprofile_class instance. |
real (rprec) function pprofile_t::pprofile_get_gp_ij | ( | class (pprofile_class), intent(in) | this, |
integer, intent(in) | i, | ||
integer, intent(in) | j | ||
) |
Get the guassian process kernel value for the two as indicies.
Indicies are the index of the as array. Only valid for guassian process profiles.
[in] | this | A pprofile_class instance. |
[in] | i | ith profile position. |
[in] | j | jth profile position. |
integer function pprofile_t::pprofile_get_gp_num_hyper_param | ( | class (pprofile_class), intent(in) | this | ) |
Get the number of hyper parameters for guassian process kernel.
Hyper parameters must be set to maximise the log of the evidence. If this profile is not a guassian process return zero.
[in] | this | A pprofile_class instance. |
real (rprec) function pprofile_t::pprofile_get_gp_pi | ( | class (pprofile_class), intent(in) | this, |
real (rprec), intent(in) | p, | ||
integer, intent(in) | i | ||
) |
Get the guassian process kernel value for the point and index.
Index are the index of the as array. Point is a measurement point on the profile. Only valid for guassian process profiles.
[in] | this | A pprofile_class instance. |
[in] | p | Point to evaluate the kernel at. |
[in] | i | Profile position index. |
real (rprec) function pprofile_t::pprofile_get_gp_pp | ( | class (pprofile_class), intent(in) | this, |
real (rprec), intent(in) | p1, | ||
real (rprec), intent(in) | p2 | ||
) |
Get the guassian process kernel value for two points.
Points are a measurement point on the profile. Only valid for guassian process profiles.
[in] | this | A pprofile_class instance. |
[in] | p1 | First point to evaluate the kernel at. |
[in] | p2 | SEOND point to evaluate the kernel at. |
character (len=p_type_len) function pprofile_t::pprofile_get_p_type_name | ( | class (pprofile_class), intent(in) | this | ) |
Gets the name of the profile type.
Convertes a profile type to a string discription.
[in] | this | A pprofile_class instance. |
real (rprec) function pprofile_t::pprofile_get_value | ( | class (pprofile_class), intent(in) | this, |
real (rprec), intent(in) | s_arg | ||
) |
Gets the value of a profile at a radial position.
Evaluates the profile at the specifed radial position. If the radial position is out side the plasma, it returns the baseline value. If there is no profile type specified return the default value.
[in] | this | A pprofile_class instance. |
[in] | s_arg | Radial position to evaluate the profile at. |
pure real (rprec) function pprofile_t::pprofile_gp_1d_sqexp_k | ( | type (pprofile_class), intent(in) | this, |
real (rprec), intent(in) | p1, | ||
real (rprec), intent(in) | p2 | ||
) |
Evaluate the one dimensional squared exponential kernel.
The squared exponential kernel is defined as
b(0)^2*exp(-(x1 - x2)^2/2*b(1)^2) (1)
where b(0) and b(1) are the hyper parameters.
[in] | this | A pprofile_class instance. |
[in] | p1 | First position. |
[in] | p2 | Second position. |
pure real (rprec) function pprofile_t::pprofile_gp_1d_sqexp_ln_k | ( | type (pprofile_class), intent(in) | this, |
real (rprec), intent(in) | p1, | ||
real (rprec), intent(in) | p2 | ||
) |
Evaluate the one dimensional squared exponential kernel.
This kernel is mathmatically the same as the squared exp kernel, but here we treat the amplitude [ b(0) ] differently. The value of b(0) used here is equal to the log of value of b(0) used in the 1d_sqexp. I'm testing this formulation to see if it helps convergence.
exp(2*b(0) - (x1- x2)**2)/2*b(1)**2) (1)
[in] | this | A pprofile_class instance. |
[in] | p1 | first position |
[in] | p2 | second position |
[in] | b | Array of coefficients |
subroutine pprofile_t::pprofile_reset_state | ( | class (pprofile_class), intent(inout) | this | ) |
Reset the internal state of the profile.
Resets the profile af array if using the guassian process.
[in,out] | this | A pprofile_class instance. |
subroutine pprofile_t::pprofile_save_state | ( | class (pprofile_class), intent(inout) | this | ) |
Save the internal state of the profile.
Saves the profile af array if using the guassian process.
[in,out] | this | A pprofile_class instance. |
subroutine pprofile_t::pprofile_write | ( | class (pprofile_class), intent(in) | this, |
character (len=*), intent(in) | id, | ||
integer, intent(in) | iou | ||
) |
Write out the profile to an output file.
This formats and writes out information about a parameterized profile.
[in] | this | A pprofile_class instance. |
[in] | id | Identification of the profle. |
[in] | iou | Input/output unit of the output file. |