H.1 Monomial Class Code Listing

The main documentation of the Monomial 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: 01/31/05
! CVS Info:   $Id: monomial.F90,v 1.25 2009/09/07 23:27:25 hall Exp $

module Caesar_Monomial_Class

  ! Global use associations.

  use Caesar_Linear_Algebra_Module
  use Caesar_Multi_Mesh_Class

  ! Start up with everything untyped and private.

  implicit none

  ! Public procedures.

  public :: Initialize, Finalize, Valid_State, Initialized
  public :: Add_to_Matrix_Equation, Locus, Name, Output

  interface Initialize
    module procedure Initialize_Monomial
  end interface

  interface Finalize
    module procedure Finalize_Monomial
  end interface

  interface Valid_State
    module procedure Valid_State_Monomial
  end interface

  interface Initialized
    module procedure Initialized_Monomial
  end interface

  interface Add_to_Matrix_Equation
    module procedure Add_to_Matrix_Equation_Monomial
  end interface

  interface Locus
    module procedure Get_Locus_Monomial
  end interface

  interface Name
    module procedure Get_Name_Monomial
  end interface

  interface Output
    module procedure Output_Monomial
  end interface

  ! Public type definitions.

  public :: Monomial_type

  type Monomial_type

    ! Initialization flag.

    type(integer) :: Initialized

    ! The name for this variable.

    type(character,name_length) :: Name

    ! The coefficient of the monomial.

    type(real,1) :: Coefficient

    ! The degree of the monomial.

    type(real) :: Exponent

    ! The independent variable at the linearization value (previous iterate).

    type(real,1) :: Phi_k

    ! The independent variable at the past time step, only used for time 
    ! derivative monomials.

    type(real,1) :: Phi_n

    ! Logical value which is true for time derivative monomials.

    type(logical) :: Derivative

    ! The time step size, only used for time derivative monomials.

    type(real) :: Delta_t

    ! Mesh that this monomial is defined on.

    type(Multi_Mesh_type), pointer :: Mesh

    ! Evaluation locus. (to be used in a future version -- for now, 
    !                    assumed to be "Cells".)

    type(character,name_length) :: Locus

    ! Locus Base_Structure.

    type(Base_Structure_type), pointer :: Structure

    ! Variable number, equation number and total number of equations for 
    ! this monomial.

    type(integer) :: Variable, Equation, NEquations

  end type Monomial_type


The Monomial Class contains the following routines which are listed in separate sections:

* Initialize_Monomial
* Finalize_Monomial
* Valid_State_Monomial
* Initialized_Monomial
* Add_to_Matrix_Equation_Monomial
* Get Value Monomial
* Output_Monomial

end module Caesar_Monomial_Class


Michael L. Hall