GS2 calculates response matrices to be used as a part of the implicit time advance algorithm. For large problems the calculation of these matrices can become expensive in both time and memory. Here we discuss various topics of relevance to these matries.

When using field_option = 'local' we calculate the condition number of the response matrix. There are several ways to view this condition number:

- Set
`GK_VERBOSITY >= 1`

to write the condition number to screen. - When running with dump_response = T
we write the condition number into the netcdf file storing the response matrix. View
with
`ncdump -v condition <response_file> | tail -n 2`

When the condition number is large we consider the matrix to be ill-conditioned. In this
case we also display the condition number in the `<runname>.error`

file and will write to
screen a warning if the module level parameter `debug`

is true.

As the response matrices can be relatively expensive to calculate it is desirable to be
able to reuse these across restarted runs etc. Both `field_option = 'local'`

and
`field_option = 'implicit'`

offer the option to dump and read response matrices too/from
file. To write the response matrices set
dump_response true and to read existing
response matrices set read_response.

If `read_response`

is true but the expected files are not found then the code will
fallback to calculating the response matrices directly. As such, it is recommended that
users set both `dump_response = T`

and `read_response = T`

for non-linear simulations. One
file is written per response matrix and we may have up to around `nx*ny`

response matrices
per time step. The response_dir input
can be used to indicate a directory in which to write/read response matrices to/from,
avoiding cluttering the run directory.

The response matrix files generated can be reused on any processor count and are
compatible between `field_option = 'implicit'`

and `field_option = 'local'`

choices.