A module for finding eigenvalues and eigenmodes Requires SLEPC and PETSC
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private, | parameter | :: | SolverTypePower | = | 1 | |
integer, | private, | parameter | :: | SolverTypeSubspace | = | 2 | |
integer, | private, | parameter | :: | SolverTypeArnoldi | = | 3 | |
integer, | private, | parameter | :: | SolverTypeLanczos | = | 4 | |
integer, | private, | parameter | :: | SolverTypeKrylovSchur | = | 5 | |
integer, | private, | parameter | :: | SolverTypeGD | = | 6 | |
integer, | private, | parameter | :: | SolverTypeJD | = | 7 | |
integer, | private, | parameter | :: | SolverTypeRQCG | = | 8 | |
integer, | private, | parameter | :: | SolverTypeCISS | = | 9 | |
integer, | private, | parameter | :: | SolverTypeLapack | = | 10 | |
integer, | private, | parameter | :: | SolverTypeArpack | = | 11 | |
integer, | private, | parameter | :: | SolverTypeBlzpack | = | 12 | |
integer, | private, | parameter | :: | SolverTypeTrlan | = | 13 | |
integer, | private, | parameter | :: | SolverTypeBlopex | = | 14 | |
integer, | private, | parameter | :: | SolverTypePrimme | = | 15 | |
integer, | private, | parameter | :: | SolverTypeFeast | = | 16 | |
integer, | private, | parameter | :: | SolverTypeNotSpecified | = | 17 | |
integer, | private | :: | solver_option_switch | ||||
integer, | private, | parameter | :: | ExtractionRitz | = | 1 | |
integer, | private, | parameter | :: | ExtractionHarmonic | = | 2 | |
integer, | private, | parameter | :: | ExtractionHarmonicRelative | = | 3 | |
integer, | private, | parameter | :: | ExtractionHarmonicRight | = | 4 | |
integer, | private, | parameter | :: | ExtractionHarmonicLargest | = | 5 | |
integer, | private, | parameter | :: | ExtractionRefined | = | 6 | |
integer, | private, | parameter | :: | ExtractionRefinedHarmonic | = | 7 | |
integer, | private, | parameter | :: | ExtractionNotSpecified | = | 8 | |
integer, | private | :: | extraction_option_switch | ||||
integer, | private, | parameter | :: | WhichLargestMagnitude | = | 1 | |
integer, | private, | parameter | :: | WhichSmallestMagnitude | = | 2 | |
integer, | private, | parameter | :: | WhichLargestReal | = | 3 | |
integer, | private, | parameter | :: | WhichSmallestReal | = | 4 | |
integer, | private, | parameter | :: | WhichLargestImaginary | = | 5 | |
integer, | private, | parameter | :: | WhichSmallestImaginary | = | 6 | |
integer, | private, | parameter | :: | WhichTargetMagnitude | = | 7 | |
integer, | private, | parameter | :: | WhichTargetReal | = | 8 | |
integer, | private, | parameter | :: | WhichTargetImaginary | = | 9 | |
integer, | private, | parameter | :: | WhichAll | = | 10 | |
integer, | private, | parameter | :: | WhichUser | = | 11 | |
integer, | private, | parameter | :: | WhichNotSpecified | = | 12 | |
integer, | private | :: | which_option_switch | ||||
integer, | private, | parameter | :: | TransformShell | = | 1 | |
integer, | private, | parameter | :: | TransformShift | = | 2 | |
integer, | private, | parameter | :: | TransformInvert | = | 3 | |
integer, | private, | parameter | :: | TransformCayley | = | 4 | |
integer, | private, | parameter | :: | TransformFold | = | 5 | |
integer, | private, | parameter | :: | TransformPrecond | = | 6 | |
integer, | private, | parameter | :: | TransformNotSpecified | = | 7 | |
integer, | private | :: | transform_option_switch | ||||
integer, | private | :: | n_eig | ||||
integer, | private | :: | max_iter | ||||
real, | private | :: | tolerance | ||||
real, | private | :: | targ_re | ||||
real, | private | :: | targ_im | ||||
logical, | private | :: | use_ginit | ||||
logical, | private | :: | analyse_ddt_operator | ||||
integer, | private | :: | nadv | ||||
logical, | private | :: | save_restarts | ||||
logical, | private, | parameter | :: | allow_command_line_settings | = | .true. | |
character(len=12), | private, | parameter | :: | nml_name | = | "eigval_knobs" | |
type(eigval_config_type), | private | :: | eigval_config |
A custom type to make it easy to encapsulate specific settings
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | use_ginit | ||||
logical, | public | :: | analyse_ddt_operator | ||||
integer, | public | :: | n_eig | ||||
integer, | public | :: | max_iter | ||||
integer, | public | :: | solver_option_switch | ||||
integer, | public | :: | extraction_option_switch | ||||
integer, | public | :: | which_option_switch | ||||
integer, | public | :: | transform_option_switch | ||||
integer, | public | :: | local_size | ||||
integer, | public | :: | global_size | ||||
real, | public | :: | tolerance | ||||
real, | public | :: | targ_re | ||||
real, | public | :: | targ_im | ||||
complex, | public | :: | target | ||||
complex, | public | :: | target_slepc |
Used to represent the input configuration of eigval. Several of these options are controlling SLEPc settings, which can also be set using the SLEPc command line flags.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | exist | = | .false. |
Does the related namelist exist in the target input file? |
|
integer, | public | :: | index | = | 0 |
Used to hold the specific index of numbered namelists |
|
logical, | public | :: | skip_read | = | .false. |
Do we want to skip the read step in init? |
|
logical, | public | :: | skip_broadcast | = | .false. |
Do we want to skip the broadcast step in init? |
|
logical, | public | :: | skip_smart_defaults | = | .false. |
Do we want to skip the smaart defaults in init? |
|
logical, | public | :: | analyse_ddt_operator | = | .false. |
Determines which operator SLEPc is finding eigenvalues of. If
.false. then SLEPc analyses the time advance operator, so
internally works with the eigenvalue |
|
character(len=20), | public | :: | extraction_option | = | 'default' |
Sets the extraction technique, must be one of: |
|
integer, | public | :: | max_iter | = | 0 |
Sets the maximum number of SLEPC iterations used. If not set (recommended) then let SLEPC decide what to use (varies with different options). |
|
integer, | public | :: | n_eig | = | 1 |
The number of eigenmodes to search for. The actual number of modes found may be larger than this. |
|
integer, | public | :: | nadv | = | 1 |
How many GS2 timesteps to take each time SLEPc wants to advance the distribution function. Useful to separate closely spaced eigenvalues without changing delt. |
|
logical, | public | :: | save_restarts | = | .false. |
If |
|
character(len=20), | public | :: | solver_option | = | 'default' |
Sets the type of solver to use, must be one of: |
|
real, | public | :: | targ_im | = | 0.5 |
Imaginary part of the eigenvalue target. Often beneficial to
set this fairly large (e.g. 10) when looking for unstable
modes. Used with the |
|
real, | public | :: | targ_re | = | 0.5 |
Real part of the eigenvalue target. Often beneficial to set
this fairly small (e.g. ~0). Used with the |
|
real, | public | :: | tolerance | = | 1.0d-6 |
Sets tolerance on SLEPC eigenmode search. Used to determine when an eigenmode has been found. Note this is the tolerance based on the SLEPc eigenvalue, which is the time advance eigenvalue rather than the GS2 eigenvalue, . |
|
character(len=20), | public | :: | transform_option | = | 'default' |
Sets the type of spectral transform to be used. This can help extract interior eigenvalues. Must be one of |
|
logical, | public | :: | use_ginit | = | .false. |
If |
|
character(len=20), | public | :: | which_option | = | 'default' |
Sets SLEPC mode of operation (i.e. what sort of eigenvalues it
looks for). Note that this refers to the SLEPc eigenvalue,
i.e. the time advance eigenvalue
. In other
words one should select |
Returns true if GS2 was compiled with WITH_EIG defined
Gets the default name for this namelist
Gets the default requires index for this namelist
Read the eigval_knobs namelist
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(eigval_config_type), | intent(in), | optional | :: | eigval_config_in |
Reads in the eigval_knobs namelist and populates the member variables
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(eigval_config_type), | intent(inout) | :: | self |
Writes out a namelist representing the current state of the config object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(eigval_config_type), | intent(in) | :: | self | |||
integer, | intent(in), | optional | :: | unit |
Resets the config object to the initial empty state
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(eigval_config_type), | intent(inout) | :: | self |
Broadcasts all config parameters so object is populated identically on all processors
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(eigval_config_type), | intent(inout) | :: | self |
Set the module level config instance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(eigval_config_type), | intent(in), | optional | :: | eigval_config_in |