1 |
C $Header: /u/gcmpack/MITgcm/pkg/compon_communic/generate_tag.F,v 1.2 2007/10/08 23:58:20 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
!======================================================================= |
5 |
integer function generate_tag( iarg1, iarg2, carg ) |
6 |
implicit none |
7 |
! Predefined constants/arrays |
8 |
#include "CPLR_SIG.h" |
9 |
! Arguments |
10 |
integer iarg1 |
11 |
integer iarg2 |
12 |
character*(*) carg |
13 |
! Local |
14 |
c integer j,hash,pow |
15 |
c integer itrans(MAXLEN_COMP_NAME) |
16 |
! ------------------------------------------------------------------ |
17 |
|
18 |
! Convert the characters to an integer array |
19 |
c call mitcplr_char2int( carg, itrans ) |
20 |
|
21 |
! Hash the integer array |
22 |
c hash=1 |
23 |
c pow=1 |
24 |
c do j=1,MAXLEN_COMP_NAME |
25 |
c hash=abs(hash+itrans(j)*pow) |
26 |
c pow=mod(pow*128,256*256) |
27 |
c enddo |
28 |
|
29 |
c generate_tag=(hash*256+iarg2)*128+iarg1 |
30 |
c generate_tag=abs(mod(generate_tag,256*256*256)) |
31 |
generate_tag = iarg1*MAX_TILES + iarg2 |
32 |
|
33 |
c if (DEBUG) |
34 |
c & write(0,*) 'generate_tag = ',generate_tag,iarg1,iarg2,carg |
35 |
|
36 |
! ------------------------------------------------------------------ |
37 |
return |
38 |
end |
39 |
!======================================================================= |