D.3 Base_Structure Class Code Listing

The main documentation of the Base_Structure 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: 09/13/99
! CVS Info:   $Id: base_structure.F90,v 5.18 2009/08/26 00:40:00 hall Exp $

module Caesar_Base_Structure_Class

  ! Global use associations.

  use Caesar_Intrinsics_Module
  use Caesar_Communication_Class

  ! Start up with everything untyped and private.

  implicit none

  ! Public procedures.

  public :: Initialize, Finalize, Valid_State, Initialized
  public :: Generate_Even_Distribution, Generate_Multiple, First_PE, Last_PE, &
            Length_PE, Length_Total, Length_Vector, Locus, Output, Range_PE

  interface Initialize
    module procedure Initialize_Base_Structure
  end interface

  interface Finalize
    module procedure Finalize_Base_Structure
  end interface

  interface Valid_State
    module procedure Valid_State_Base_Structure
  end interface

  interface Initialized
    module procedure Initialized_Base_Structure
  end interface

  interface Generate_Even_Distribution
    module procedure Generate_Even_Distribution
  end interface

  interface Generate_Multiple
    module procedure Generate_Multiple_Base_Struct
  end interface

  interface Output
    module procedure Output_Base_Structure
  end interface

  fortext([Value],[First_PE Last_PE Length_PE Length_Total dnl
                   Length_Vector Locus Range_PE],[
    interface Value
      module procedure expand(Get_Value_Structure)
    end interface

  ! Public variables.

  public :: name_length

  type(integer), parameter :: &
    name_length = 72   ! Length of the character strings for names.

  ! Public type definitions.

  public :: Base_Structure_type

  type Base_Structure_type

    ! Initialization flag.

    type(integer) :: Initialized

    ! The location or variable name which is distributed over the processors
    ! (Cells, Nodes, Faces, Equations, Variables, etc.).

    type(character,name_length) :: Locus   

    ! Total length of the distributed axis of the entire vector (including
    ! all PEs).

    type(integer) :: Length_Total

    ! Length of the distributed axis on this PE.

    type(integer) :: Length_PE

    ! A vector containing the length of the distributed axis for each PE.

    type(integer,1) :: Length_Vector

    ! First, last and range of global index numbers for this PE.

    type(integer) :: First_PE
    type(integer) :: Last_PE
    type(integer), dimension(2) :: Range_PE

  end type Base_Structure_type


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

* Initialize_Base_Structure
* Finalize_Base_Structure
* Valid_State_Base_Structure
* Initialized_Base_Structure
* Generate_Even_Distribution
* Generate_Multiple_Base_Structure
* Get Value Base_Structure
* Output_Base_Structure

end module Caesar_Base_Structure_Class

Michael L. Hall