solvers Module Reference
Module for shared solver code; the individual solvers are in the solver_* modules. More...
Data Types | |
type | solver_options |
Solver settings structure. More... | |
Detailed Description
Module for shared solver code; the individual solvers are in the solver_* modules.
The below is not true for the CRAM solver! see kernel_cram(), kernel_cram_from_fortran(), kernel_cram_from_fortran_interface()
Each of the available solvers kernels has a wrapper routine *_solve
, which is contained in a kernel_*
module. All the methods have the same signature:
subroutine *_solve(lib, n0, n, delta_t, diag, a, b, zero_flux_step, is_adjoint, r)
type(origen_library_class), intent(in) :: lib
real(C_DOUBLE), intent(in) :: diag(lib%itot)
real(C_DOUBLE), intent(in) :: a(lib%non)
real(C_DOUBLE), intent(in) :: b(lib%itot)
real(C_DOUBLE), intent(in) :: n0(lib%itot)
real(C_DOUBLE), intent(out) :: n(lib%itot)
real(C_DOUBLE), intent(in) :: delta_t
logical, intent(in) :: zero_flux_step
logical, intent(in) :: is_adjoint
The library object (lib
) is used only for sizes and indexes; the true data are taken from the diag
and a
arrays.