diagnostics_configuration Module



Contents


Variables

Type Visibility Attributes Name Initial
type(diagnostics_config_type), public :: diagnostics_config

Derived Types

type, public, extends(abstract_config_type) ::  diagnostics_config_type

Used to represent the input configuration of gs2_diagnostics. This is the version used by the original diagnostics module.

Components

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 :: append_old = .false.

Append output data to a previous output file <run name>.out.nc if it already exists. Grid sizes must be unchanged.

integer, public :: conv_max_step = 80000

Used for Trinity nonlinear convergence check (use_nonlin_convergence). The maximum number of time steps, after which consider the run converged regardless.

integer, public :: conv_min_step = 4000

Used for the Trinity nonlinear convergence check (use_nonlin_convergence). The minimum number of time steps before convergence condition can trigger an exit.

integer, public :: conv_nstep_av = 4000

Used for the Trinity nonlinear convergence check (use_nonlin_convergence). The number of timesteps the convergence condition averages over

integer, public :: conv_nsteps_converged = 10000

Used for the Trinity nonlinear convergence check (use_nonlin_convergence). The number of steps where convergence is true before convergence is accepted

real, public :: conv_test_multiplier = 4e-1

Used for the Trinity nonlinear convergence check (use_nonlin_convergence). Multiplier for the cumulative average of the heat flux

logical, public :: dump_check1 = .false.

Write out the field-line average of to dump.check1. This option is usually used for Rosenbluth-Hinton calculations.

Read more…
logical, public :: dump_check2 = .false.

Write out at igomega to <run name>.dc2.

Read more…
logical, public :: dump_fields_periodically = .false.

Write out to dump.fields.t=(time) every 10 * nwrite timesteps.

Read more…
logical, public :: enable_parallel = .false.

Enable parallel IO in the .out.nc file. Currently disabled by default and doesn't activate feature when set to true as we hard code that parallel IO isn't supported for the .out.nc file.

Read more…
logical, public :: exit_when_converged = .true.

Exit when the run has reached convergence

logical, public :: file_safety_check = .true.

Verify that the restart file(s) can be written before starting the run

integer, public :: igomega = 0

Index in to measure various diagnostics at. By default, this is the outboard midplane , but it may be useful to set this to a non-zero value for tearing parity modes.

logical, public :: make_movie = .false.

Write out in real space over time, suitable for creating animations. Timestep period is controlled with nmovie

Read more…
integer, public :: navg = 10

Number of timesteps to average over for time-averaged diagnostics

Read more…
integer, public :: ncheck = 10

correction by varying collisionality. But doesn't happen on timesteps when diagnostics are written.

Read more…
integer, public :: nc_sync_freq = 10

Sets the number of output steps between syncing the netcdf file. Higher values may reduce disk overheads but increase the risk of data loss on unclean exit.

integer, public :: nmovie = -1

Timestep period to write real space fields

Read more…
integer, public :: nsave = -1

Timestep period for writing restart data if save_for_restart is .true.. Negative values disable the periodic checkpoints.

integer, public :: nwrite = 10

Timestep period for writing outputs

Read more…
integer, public :: nwrite_mult = 10

Timestep period multiplier for certain "large" diagnostics, which are written every nwrite_mult * nwrite timesteps.

Read more…
logical, public :: ob_midplane = .false.

If .true., write moments at the outboard midplane only, as opposed to along the entire flux surface

Read more…
real, public :: omegatinst = 1.0e6

Threshold complex frequency () for detecting a numerical instability. If averaged over navg timesteps is greater than omegatinst, abort the run.

Read more…
real, public :: omegatol = 1e-3

Frequency () convergence tolerance. Consider the simulation converged and finish the run if has changed by less than omegatol over the last navg timesteps.

Read more…
logical, public :: print_flux_line = .false.

Print the instantaneous fluxes to screen/stdout every nwrite timesteps

logical, public :: print_line = .false.

Print estimated frequencies and growth rates to screen/stdout every nwrite timesteps

Read more…
logical, public :: save_distfn = .false.

Write the distribution function to <rootname>.nc.dfn.<processor> files. Only written at end of simulation

logical, public :: save_for_restart = .false.

Write restart files at the end of the simulation. If nsave is positive, then also enable checkpoints by writing restart files every nsave timesteps.

logical, public :: save_glo_info_and_grids = .false.

Save some layout and distribution information in restart files

logical, public :: save_many = .false.

If .true., write one restart file per processor, otherwise write a single restart file.

Read more…
logical, public :: save_velocities = .false.

Save parallel and perpendicular velocities in final restart and/or distribution function files

logical, public :: serial_netcdf4 = .false.

Read more…
logical, public :: use_nonlin_convergence = .false.

For nonlinear runs, stop the run when the averaged differential of the summed averaged heat flux drops below a threshold for a period of time, controlled by conv_test_multiplier, conv_nsteps_converged, gs2_diagnostics_knobs, conv_max_step, and conv_min_step.

logical, public :: write_any = .true.

If .false., skip writing any diagnostics

Read more…
logical, public :: write_apar_over_time = .false.

Write the entire field every nwrite timesteps

Read more…
logical, public :: write_ascii = .true.

Write diagnostics to text files. Generally this creates a different text file for each diagnostic. Note that this independent of whether or not netCDF files are used.

Read more…
logical, public :: write_avg_moments = .false.

Write flux surface averaged low-order moments of every nwrite timesteps

Read more…
logical, public :: write_bpar_over_time = .false.

Write the entire field every nwrite timesteps

Read more…
logical, public :: write_cerr = .false.

Write the collision error every nwrite timesteps to text file with suffix .cres

Read more…
logical, public :: write_collisional = .false.

Write collisional heating (collisional and hyper viscous rate of loss of free energy for each mode) every nwrite timesteps

Read more…
logical, public :: write_correlation = .true.

Write two point parallel correlation function calculated from the electric potential as a function of and parallel separation every nwrite timesteps

Read more…
logical, public :: write_correlation_extend = .false.

Write two point parallel correlation function calculated from the electric potential as a function of and parallel separation, time averaged and calculated along the extended domain every nwrite timesteps once istep > nstep/4.

Read more…
logical, public :: write_cross_phase = .false.

Write the cross phase between electron density and perpendicular electron temperature every nwrite timesteps. Calculated at both the outboard midplane, averaged across and ; and averaged across all space

Read more…
logical, public :: write_density_over_time = .false.

Write the whole non-adiabatic part of the density moment every nwrite timesteps

Read more…
logical, public :: write_eigenfunc = .false.

Write normalised to the value of at the outboard midplane every nwrite timesteps.

Read more…
logical, public :: write_fields = .true.

Enable writing every nwrite timesteps

Read more…
logical, public :: write_final_antot = .false.

Write the right-hand sides of the field equations at the final timestep. If write_ascii is enabled, the file suffix is .antot

logical, public :: write_final_db = .false.

Write at the final timestep. If write_ascii is enabled, the file suffix is .db. This is not written to netCDF!

logical, public :: write_final_epar = .false.

Write at the final timestep. If write_ascii is enabled, the file suffix is .epar

logical, public :: write_final_fields = .false.

Write at the final timestep. If write_ascii is enabled, the file suffix is .fields

logical, public :: write_final_moments = .false.

Write various moments (densities, parallel and perpendicular velocities and temperatures, and heat and momentum fluxes) at the final timestep. If write_ascii is enabled, the file suffix is .fields and contains the moments, their magnitudes, and field-line averages. The netCDF output has only the values.

Read more…
logical, public :: write_flux_line = .false.

Write instantaneous fluxes to output file every nwrite timesteps

Read more…
logical, public :: write_fluxes = .false.

Write fluxes (heat, momentum and particle; total and per-species) every nwrite timesteps.

Read more…
logical, public :: write_fluxes_by_mode = .false.

Write fluxes (heat, momentum and particle; total and per-species) as a function of Fourier mode every nwrite timesteps.

Read more…
logical, public :: write_full_moments_notgc = .false.

Write moments (density, parallel flow, and parallel and perpendicular temperatures) in non-guiding centre coordinates every nwrite timesteps

logical, public :: write_g = .false.

Write at ik=it=is=1, ig=0 to text file <runname>.dist

Read more…
logical, public :: write_gs = .false.

Read more…
logical, public :: write_gyx = .false.

Write as a function of real space every nmovie timesteps to text file ".yxdist"

Read more…
logical, public :: write_heating = .false.

Write out various heating, free energy and energy injection diagnostics. Text file extension is .heat

logical, public :: write_jext = .false.

Write time averaged external current in the antenna, , as a function of . File suffix is .jext

Read more…
logical, public :: write_kinetic_energy_transfer = .false.

Calculates and writes the electrostatic drive of zonal flows every nwrite timesteps. The output kinetic_energy_transfer_theta resolves this over only. kinetic_energy_transfer_theta_kxsource, kinetic_energy_transfer_theta_kxtarget, and kinetic_energy_transfer_theta_kysource give additional insights by resolving over individual source or target scales.

logical, public :: write_kpar = .false.

Write the parallel spectrum of at final timestep. File suffix is .kpar

Read more…
logical, public :: write_line = .true.

Print estimated frequencies and growth rates to text file every nwrite timesteps

logical, public :: write_lorentzian = .false.

Write antenna_w every nwrite timesteps

Read more…
logical, public :: write_max_verr = .false.

Write the estimated maximum error from velocity space integrals for various quantities

Read more…
logical, public :: write_moments = .true.

Write various moments (total and non-adiabatic part of perturbed species density, perturbed parallel flow, perturbed parallel and perpendicular temperatures, parallel heat flux, particule flux and heat flux) every nwrite timesteps

Read more…
logical, public :: write_nl_flux_dist = .false.

Write the poloidal distributions of the fluxes of particles, parallel momentum, perpendicular momentum, and energy every nwrite timesteps.

Read more…
logical, public :: write_ntot_over_time = .false.

Write the whole total density moment every nwrite timesteps

Read more…
logical, public :: write_omavg = .true.

Write time-averaged growth rate and frequency to the output text file every nwrite timesteps. Time average is rolling window over the previous navg timesteps

Read more…
logical, public :: write_omega = .true.

Write instantaneous growth rate and frequency every nwrite timesteps

Read more…
logical, public :: write_parity = .false.

Write parities in distribution and particle fluxes to text file with the suffix .parity

Read more…
logical, public :: write_phi_over_time = .false.

Write the entire field every nwrite timesteps

Read more…
logical, public :: write_ql_metric = .true.

Write a simple quasi-linear metric to netcdf.

logical, public :: write_symmetry = .false.

Write the particle and momentum flux as a function of and velocity space. See gs2_diagnostics_knobs and gs2_diagnostics_knobs

Read more…
logical, public :: write_tperp_over_time = .false.

Write the whole perturbed perpendicular temperature moment every nwrite timesteps

Read more…
logical, public :: write_upar_over_time = .false.

Write the whole perturbed parallel velocity moment every nwrite timesteps

Read more…
logical, public :: write_verr = .false.

Write estimates of error resulting from velocity space integrals in the calculation of various quantities every nwrite timesteps.

Read more…
logical, public :: write_zonal_transfer = .false.

Write the transfer of free energy, , as a function of , averaged over , every nwrite timesteps

Read more…

Type-Bound Procedures

procedure , public , :: is_initialised => is_initialised_generic Function
procedure , public , :: init => init_generic Subroutine
procedure , public , :: setup => setup_generic Subroutine
procedure , public , :: write_namelist_header Subroutine
procedure , public , :: get_name => get_name_generic Function
procedure , public , :: get_requires_index => get_requires_index_generic Function
procedure , public , nopass :: write_namelist_footer Subroutine
generic, public , :: write_key_val => write_key_val_string, write_key_val_real, write_key_val_complex, write_key_val_integer, write_key_val_logical, write_key_val_real_array, write_key_val_complex_array, write_key_val_integer_array
procedure , public :: read => read_diagnostics_config Subroutine
procedure , public :: write => write_diagnostics_config Subroutine
procedure , public :: reset => reset_diagnostics_config Subroutine
procedure , public :: broadcast => broadcast_diagnostics_config Subroutine
procedure , public , nopass :: get_default_name => get_default_name_diagnostics_config Function
procedure , public , nopass :: get_default_requires_index => get_default_requires_index_diagnostics_config Function
procedure , public , :: set_smart_defaults => set_smart_defaults_local Subroutine

Functions

Gets the default name for this namelist

Arguments

None

Return Value character(len=CONFIG_MAX_NAME_LEN)

Gets the default requires index for this namelist

Arguments

None

Return Value logical

public pure function get_diagnostics_config()

Get the module level config instance

Arguments

None

Return Value type(diagnostics_config_type)


Subroutines

public subroutine warn_about_nonfunctional_selection(diagnostic_switch, name)

Prints a warning about a non-functional diagnostic

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: diagnostic_switch

Diagnostic switch

character(len=*), intent(in) :: name

Name of the switch

public subroutine warn_about_deprecated_option(old_switch, old_name, new_switch, new_name)

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: old_switch

Deprecated diagnostic switch

character(len=*), intent(in) :: old_name

Deprecated name of the switch

logical, intent(inout) :: new_switch

New diagnostic switch

character(len=*), intent(in) :: new_name

New name of the switch

public subroutine set_smart_defaults_local(self)

Set the smart defaults for the new_gs2_diagnostics_config_type instance

Arguments

Type IntentOptional Attributes Name
class(diagnostics_config_type), intent(inout) :: self

public subroutine apply_old_defaults(gs2_diagnostics_config_in)

Set values according to the old diagnostics defaults.

Read more…

Arguments

Type IntentOptional Attributes Name
type(diagnostics_config_type), intent(inout) :: gs2_diagnostics_config_in

public subroutine apply_new_defaults(new_gs2_diagnostics_config_in)

Set values according to the new diagnostics defaults.

Read more…

Arguments

Type IntentOptional Attributes Name
type(diagnostics_config_type), intent(inout) :: new_gs2_diagnostics_config_in

public subroutine read_diagnostics_config(self)

Reads in the gs2_diagnostics_knobs namelist and populates the member variables

Arguments

Type IntentOptional Attributes Name
class(diagnostics_config_type), intent(inout) :: self

public subroutine write_diagnostics_config(self, unit)

Writes out a namelist representing the current state of the config object

Arguments

Type IntentOptional Attributes Name
class(diagnostics_config_type), intent(in) :: self
integer, intent(in), optional :: unit

public subroutine reset_diagnostics_config(self)

Resets the config object to the initial empty state

Arguments

Type IntentOptional Attributes Name
class(diagnostics_config_type), intent(inout) :: self

public subroutine broadcast_diagnostics_config(self)

Broadcasts all config parameters so object is populated identically on all processors

Arguments

Type IntentOptional Attributes Name
class(diagnostics_config_type), intent(inout) :: self

public subroutine set_diagnostics_config(diagnostics_config_in)

Set the module level config instance

Arguments

Type IntentOptional Attributes Name
type(diagnostics_config_type), intent(in), optional :: diagnostics_config_in