@brief Base type for SCF converger results
@detail It is used by main SCF convergence driver scf_conv
The extending type should provide the following interfaces:
init : preliminary initialization of internal subconverger data
clean : destructor
setup : setting-up of the sub-converger equations, taking into the account the new data
added in main SCF driver
run : solving the equations, returns scf_conv_result datatype. Multiple subsequent calls to
this procedure without re-running setup should not change internal state and have to give same results
@brief Main class which knows how to compute XC functional values, AO and MO
values and gradients on a grid
@details It is complemented with xc_consumer_t class to use calculation results
Nodes of different colours represent the following:
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).