The main documentation of the Solver Class contains additional explanation of this code listing.
!
! Author: Michael L. Hall
! P.O. Box 1663, MS-D413, LANL
! Los Alamos, NM 87545
! ph: 505-665-4312
! email: Hall@LANL.gov
!
! Created on: 03/08/04
! CVS Info: $Id: solver.F90,v 1.11 2008/09/23 00:23:59 hall Exp $
module Caesar_Solver_Class
! Global use associations.
use Caesar_Data_Structures_Module
use Caesar_Mathematic_Vector_Class
use Caesar_ELL_Matrix_Class
! Start up with everything untyped and private.
implicit none
private
! Public procedures.
public :: Initialize, Finalize, Valid_State, Initialized
public :: Set, Solve
ifdef([USE_LAMG],[
public :: Convert
])
interface Initialize
module procedure Initialize_Solver
end interface
interface Finalize
module procedure Finalize_Solver
end interface
interface Valid_State
module procedure Valid_State_Solver
end interface
interface Initialized
module procedure Initialized_Solver
end interface
ifdef([USE_LAMG],[
interface Convert
module procedure Convert_ELL_to_LAMG
end interface
])
interface Set
module procedure Set_Solver_Variable
end interface
interface Solve
module procedure Solve
end interface
! Public type definitions.
public :: Solver_type
type Solver_type
! Initialization flag.
type(integer) :: Initialized
! Package name.
type(character,name_length) :: Package
! Non-Package-Dependent info.
type(character,name_length) :: Stopping_Test ! Test used to signify
! convergence.
type(real) :: Epsilon ! Error tolerance.
type(integer) :: Maximum_Iterations ! Maximum iteration count
! allowed.
! LAMG package information.
type(integer) :: LAMG_levout ! Package output: 0=silent, 4=verbose.
end type Solver_type
contains
The Solver Class contains the following routines which are listed in separate sections:
end module Caesar_Solver_Class