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