The main documentation of the Data_Index 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/15/99
! CVS Info: $Id: data_index.F90,v 8.4 2006/10/17 23:01:53 hall Exp $
module Caesar_Data_Index_Class
! Global use associations.
use Caesar_Intrinsics_Module
use Caesar_Trace_Class
use Caesar_Communication_Class
use Caesar_Base_Structure_Class
use Caesar_Numbers_Module, only: zero
! Start up with everything untyped and private.
implicit none
private
! Public procedures.
public :: Initialize, Finalize, Valid_State, Initialized
public :: Assignment (=), Get_Values, Initialize_Shell_Partition, Output
interface Initialize
module procedure Initialize_Data_Index
end interface
interface Finalize
module procedure Finalize_Data_Index
end interface
interface Valid_State
module procedure Valid_State_Data_Index
end interface
interface Initialized
module procedure Initialized_Data_Index
end interface
interface Assignment (=)
module procedure Get_Values_Data_Index_1
module procedure Get_Values_Data_Index_2
end interface
interface Get_Values
module procedure Get_Values_Data_Index_1
module procedure Get_Values_Data_Index_2
end interface
interface Output
module procedure Output_Data_Index
end interface
! Public type definitions.
public :: Data_Index_type
type Data_Index_type
! Initialization flag.
type(integer) :: Initialized
! Basic data structures. The Many_Structure corresponds to the columns in
! the index array. The One_Structure corresponds to the rows in the index
! array. The index array can be thought of as a "Many of One" relationship
! (e.g. Many Faces of Each Cell, or Faces_of_Cells), with each row of the
! array signifying all the "Many" items that correspond to that "One" row.
type(Base_Structure_type), pointer :: Many_Structure
type(Base_Structure_type), pointer :: One_Structure
! The number of dimensions that the index has. "Ragged_Right" indices
! are signified by a Dimensionality of -1, and are equivalent to a
! Dimensionality of 2 where the number of columns per row varies.
type(integer) :: Dimensionality
! The index values, which are modified: 1. to reflect off-PE locations
! with a negative number corresponding to the location in Off_PE_Index
! of the original value; and 2. to have a local numbering instead of a
! global numbering.
type(integer,1) :: Index1
type(integer,2) :: Index2
! Needed for polyhedral "Faces of Cells", "Nodes of Faces".
! type(Ragged_Integer_type) :: IndexRR
! The trace for the communication associated with the index.
type(Trace_type) :: Trace
! The values of the index which are not local to this PE.
type(integer,1) :: Off_PE_Index
! The number of Off-PE values.
type(integer) :: NOff_PE
! The trace for the communication associated with the Off_PE_Index.
type(Trace_type) :: Off_PE_Trace
end type Data_Index_type
contains
The Data_Index Class contains the following routines which are listed in separate sections:
end module Caesar_Data_Index_Class