MODULE: MAPL_HashMod 
Author: GMAO SI-Team
MAPL_HashMod  – A utility to manage hash tables.
MAPL_HashMod is a FORTRAN binding to a simple C has facility.
The API is:
    ! Create a hash table with Nbuckets 
        integer  function  MAPL_HashCreate ( Nbuckets ) 
          integer ,   intent ( IN )   ::   Nbuckets 
    ! Update table Hash with integer[s] i[,j] 
    ! The return value is the order of occurence of the integer[s]. 
    ! If i is new, the return value is the new hash size. 
        integer  function  MAPL_HashIncrement ( Hash , i , j ) 
          integer ,             intent ( IN )   ::   Hash 
          integer ,             intent ( IN )   ::   i 
          integer ,   optional ,   intent ( IN )   ::   j 
    ! Dump the list of integers or integer pairs in the hash. 
    !  The list is in no particular order. 
    ! If the arrays are not long enough, nothing is dumped and -1 
    !  is returned; otherwise it returns the current hash size  
    !  (the length of the list). 
        integer  function  MAPL_HashDump ( Hash , i , j ) 
          integer ,             intent ( IN )    ::   Hash 
          integer ,             intent ( OUT )   ::   i (:) 
          integer ,   optional ,   intent ( OUT )   ::   j (:) 
    ! Get the size of a hash 
        integer  function  MAPL_HashSize ( Hash ) 
          integer ,   intent ( IN )   ::   Hash 
    ! Destroy a hash table 
        subroutine  MAPL_HashDestroy ( Hash ) 
          integer ,   intent ( IN )   ::   Hash 
The following is a sample usage that makes a list of
 unique integers in the large array II. It can similarly
 be used to find ordered pairs of integers. The asserts
 are put in to clarify the usage.
        integer   ::   Hash ,   k ,   II ( 100000 ),   FoundOrder ( 10000 ) 
        Hash   =   MAPL_HashCreate ( 1000 ) 
        latest   =   0 
        do  i = 1 , 100000 
          k   =   MAPL_HashIncrement ( Hash , ii ( i )) 
          if ( k > latest )   then 
            latest     =   k 
            isnew      =   . true . 
            FoundOrder ( k )   =   ii ( i ) 
            if ( MAPL_Assert ( k == MAPL_HashSize ( Hash ), 'needs informative message' , 1 , "/home/runner/work/MAPL/MAPL/shared/MAPL_Hash.F90" , 76   , rc ))   return 
         else 
            isnew   =   . false . 
            if ( MAPL_Assert ( FoundOrder ( k ) == ii ( i ), 'needs informative message' , 1 , "/home/runner/work/MAPL/MAPL/shared/MAPL_Hash.F90" , 79   , rc ))   return 
         endif 
       enddo 
      
      
        
            
              
             
            
              
module~~mapl_hashmod~~UsesGraph 
module~mapl_hashmod 
MAPL_HashMod 
 
module~mapl_exceptionhandling 
MAPL_ExceptionHandling 
 
 
module~mapl_hashmod->module~mapl_exceptionhandling 
 
module~mapl_errorhandlingmod 
MAPL_ErrorHandlingMod 
 
 
module~mapl_exceptionhandling->module~mapl_errorhandlingmod 
 
module~mapl_throwmod 
MAPL_ThrowMod 
 
 
module~mapl_exceptionhandling->module~mapl_throwmod 
 
module~mapl_errorhandlingmod->module~mapl_throwmod 
 
mpi 
mpi 
 
module~mapl_errorhandlingmod->mpi 
 
 
 
         
          
            
              
                
              
Nodes of different colours represent the following: 
Graph Key 
Module 
Module 
 
Submodule 
Submodule 
 
Subroutine 
Subroutine 
 
Function 
Function 
 
Program 
Program 
 
This Page's Entity 
This Page's Entity 
 
 
 
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to 
modules which it uses.
 Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
 
             
           
         
             
         
       
     
          
      
      
        
            
              
module~~mapl_hashmod~~UsedByGraph 
module~mapl_hashmod 
MAPL_HashMod 
 
module~mapl_locstreammod 
MAPL_LocStreamMod 
 
 
module~mapl_locstreammod->module~mapl_hashmod 
 
module~maplbase_mod 
MAPLBase_Mod 
 
 
module~maplbase_mod->module~mapl_hashmod 
 
module~maplbase_mod->module~mapl_locstreammod 
 
module~maplshared 
MaplShared 
 
 
module~maplshared->module~mapl_hashmod 
 
module~extdatautroot_gridcompmod 
ExtDataUtRoot_GridCompMod 
 
 
module~extdatautroot_gridcompmod->module~maplshared 
 
module~mapl 
MAPL 
 
 
module~extdatautroot_gridcompmod->module~mapl 
 
module~varspecdescriptionmod 
VarspecDescriptionMod 
 
 
module~extdatautroot_gridcompmod->module~varspecdescriptionmod 
 
module~mapl->module~maplbase_mod 
 
module~mapl_genericmod 
MAPL_GenericMod 
 
 
module~mapl->module~mapl_genericmod 
 
module~mapl_capgridcompmod 
MAPL_CapGridCompMod 
 
 
module~mapl_capgridcompmod->module~mapl_locstreammod 
 
module~mapl_capgridcompmod->module~mapl_genericmod 
 
module~mapl_historygridcompmod 
MAPL_HistoryGridCompMod 
 
 
module~mapl_capgridcompmod->module~mapl_historygridcompmod 
 
module~mapl_extdatagridcomp2g 
MAPL_ExtDataGridComp2G 
 
 
module~mapl_capgridcompmod->module~mapl_extdatagridcomp2g 
 
module~mapl_extdatagridcompmod 
MAPL_ExtDataGridCompMod 
 
 
module~mapl_capgridcompmod->module~mapl_extdatagridcompmod 
 
module~mapl_genericmod->module~mapl_locstreammod 
 
module~mapl_genericmod->module~maplshared 
 
module~mapl_historygridcompmod->module~mapl_locstreammod 
 
module~mapl_historygridcompmod->module~mapl_genericmod 
 
module~mapl_nuopcwrappermod 
MAPL_NUOPCWrapperMod 
 
 
module~mapl_nuopcwrappermod->module~maplbase_mod 
 
module~mapl_capmod 
MAPL_CapMod 
 
 
module~mapl_nuopcwrappermod->module~mapl_capmod 
 
module~rutmod 
RUTMod 
 
 
module~rutmod->module~maplbase_mod 
 
module~rutmod->module~mapl_extdatagridcompmod 
 
module~test_cfio_bundle 
Test_CFIO_Bundle 
 
 
module~test_cfio_bundle->module~maplbase_mod 
 
program~tstqsat 
tstqsat 
 
 
program~tstqsat->module~maplbase_mod 
 
program~ut_extdata 
ut_ExtData 
 
 
program~ut_extdata->module~maplbase_mod 
 
program~ut_extdata->module~rutmod 
 
program~ut_extdata->module~mapl_extdatagridcompmod 
 
program~utcfio~3 
utCFIO 
 
 
program~utcfio~3->module~maplbase_mod 
 
module~extdata_drivergridcompmod 
ExtData_DriverGridCompMod 
 
 
module~extdata_drivergridcompmod->module~mapl 
 
module~extdata_drivergridcompmod->module~mapl_historygridcompmod 
 
module~extdata_drivergridcompmod->module~mapl_extdatagridcomp2g 
 
module~extdata_drivergridcompmod->module~mapl_extdatagridcompmod 
 
module~extdatadrivermod 
ExtDataDriverMod 
 
 
module~extdatadrivermod->module~extdatautroot_gridcompmod 
 
module~extdatadrivermod->module~mapl 
 
module~extdatadrivermod->module~extdata_drivergridcompmod 
 
module~mapl_capmod->module~mapl_capgridcompmod 
 
module~mapl_extdatagridcomp2g->module~mapl_genericmod 
 
module~mapl_extdatagridcompmod->module~mapl_genericmod 
 
module~mapl_mod 
MAPL_Mod 
 
 
module~mapl_mod->module~mapl 
 
module~mapl_orbgridcompmod 
MAPL_OrbGridCompMod 
 
 
module~mapl_orbgridcompmod->module~mapl_genericmod 
 
module~regrid_util_support_mod 
regrid_util_support_mod 
 
 
module~regrid_util_support_mod->module~mapl 
 
module~varspecdescriptionmod->module~mapl 
 
program~comp_testing_driver 
comp_testing_driver 
 
 
program~comp_testing_driver->module~mapl 
 
program~comp_testing_driver->module~mapl_capgridcompmod 
 
program~comp_testing_driver->module~mapl_genericmod 
 
program~extdata_driver 
ExtData_Driver 
 
 
program~extdata_driver->module~extdatautroot_gridcompmod 
 
program~extdata_driver->module~mapl 
 
program~extdata_driver->module~extdata_drivergridcompmod 
 
program~extdata_driver->module~extdatadrivermod 
 
program~main 
main 
 
 
program~main->module~mapl 
 
program~main~3 
main 
 
 
program~main~3->module~mapl 
 
program~time_ave 
time_ave 
 
 
program~time_ave->module~mapl 
 
module~mapl_gridcompsmod 
MAPL_GridCompsMod 
 
 
module~mapl_gridcompsmod->module~mapl_capmod 
 
module~varspecdescriptionvectormod 
VarspecDescriptionVectorMod 
 
 
module~varspecdescriptionvectormod->module~varspecdescriptionmod 
 
program~regrid_util 
Regrid_Util 
 
 
program~regrid_util->module~regrid_util_support_mod 
 
 
 
                         
          
            
              
                
              
Nodes of different colours represent the following: 
Graph Key 
Module 
Module 
 
Submodule 
Submodule 
 
Subroutine 
Subroutine 
 
Function 
Function 
 
Program 
Program 
 
This Page's Entity 
This Page's Entity 
 
 
 
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to 
modules which it uses.
 Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
 
             
           
         
             
         
       
     
      
        
          Functions 
              
    
    
          
  
  Arguments 
      
    
      
        Type 
Intent Optional         Attributes 
        Name 
          
    
        
            
               
intent(in) 
              
              
             
            :: 
            Nbuckets 
             
         
     
  
    
    Return Value
    integer 
     
    
     
   
              
    
    
          
  
  Arguments 
      
    
      
        Type 
Intent Optional         Attributes 
        Name 
          
    
        
            
               
intent(in) 
              
              
             
            :: 
            Hash 
             
         
        
            
               
intent(out) 
              
              
             
            :: 
            i (:)
             
         
        
            
               
intent(out), 
              optional             
              
             
            :: 
            j (:)
             
         
     
  
    
    Return Value
    integer 
     
    
     
   
              
    
    
          
  
  Arguments 
      
    
      
        Type 
Intent Optional         Attributes 
        Name 
          
    
        
            
               
intent(in) 
              
              
             
            :: 
            Hash 
             
         
        
            
               
intent(in) 
              
              
             
            :: 
            i 
             
         
        
            
               
intent(in), 
              optional             
              
             
            :: 
            j 
             
         
        
            
               
intent(in), 
              optional             
              
             
            :: 
            k 
             
         
     
  
    
    Return Value
    integer 
     
    
     
   
              
    
    
          
  
  Arguments 
      
    
      
        Type 
Intent Optional         Attributes 
        Name 
          
    
        
            
               
intent(in) 
              
              
             
            :: 
            Hash 
             
         
     
  
    
    Return Value
    integer 
     
    
     
   
         
        
        
          Subroutines 
              
    
    
          
  
  Arguments 
      
    
      
        Type 
Intent Optional         Attributes 
        Name 
          
    
        
            
               
intent(in) 
              
              
             
            :: 
            Hash