Integrates a spectrum instance forward in time using the exact exponential.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(spectrum_type), | intent(in) | :: | initial | Initial spectrum instance | ||
| type(spectrum_type), | intent(in) | :: | tendency | Spectrum tendency instance | ||
| real(kind=rk), | intent(in) | :: | dt | Time step [s] | 
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module.
pure elemental type(spectrum_type) function exact_exponential_spectrum(initial,&
  tendency,dt) result(spec)
  !! Integrates a spectrum instance forward in time using the exact exponential.
  type(spectrum_type),intent(in) :: initial !! Initial spectrum instance
  type(spectrum_type),intent(in) :: tendency !! Spectrum tendency instance
  real(kind=rk),intent(in) :: dt !! Time step [s]
  spec = initial
  call spec % setSpectrum(exp(tendency % getSpectrum() * dt))
  !spec = (initial * exp(tendency % getSpectrum() * dt))
  spec = initial * spec
endfunction exact_exponential_spectrum