00001        
00002        integer, parameter :: IDXL_FIRST_DATATYPE=1510000000
00003        integer, parameter :: IDXL_BYTE=(IDXL_FIRST_DATATYPE+0)
00004        integer, parameter :: IDXL_INT=(IDXL_FIRST_DATATYPE+1)
00005        integer, parameter :: IDXL_REAL=(IDXL_FIRST_DATATYPE+2)
00006        integer, parameter :: IDXL_DOUBLE=(IDXL_FIRST_DATATYPE+3)
00007        integer, parameter :: IDXL_INDEX_0=(IDXL_FIRST_DATATYPE+4)
00008        integer, parameter :: IDXL_INDEX_1=(IDXL_FIRST_DATATYPE+5)
00009        
00010        integer, parameter :: IDXL_FIRST_REDTYPE=1520000000
00011        integer, parameter :: IDXL_SUM=(IDXL_FIRST_REDTYPE+0)
00012        integer, parameter :: IDXL_PROD=(IDXL_FIRST_REDTYPE+1)
00013        integer, parameter :: IDXL_MAX=(IDXL_FIRST_REDTYPE+2)
00014        integer, parameter :: IDXL_MIN=(IDXL_FIRST_REDTYPE+3)
00015        
00016        external IDXL_Comm_sendrecv
00017        external IDXL_Comm_sendsum
00018        
00019        external IDXL_Comm_send
00020        external IDXL_Comm_recv
00021        external IDXL_Comm_sum
00022        
00023        
00024        interface
00025        subroutine IDXL_Init(mpi_comm)
00026          integer,intent (in) :: mpi_comm
00027        end subroutine
00028        integer function IDXL_Create()
00029        end function
00030        subroutine IDXL_Print(l)
00031          integer,intent (in) :: l
00032        end subroutine    
00033        subroutine IDXL_Copy(l,src)
00034          integer,intent (in) :: l, src
00035        end subroutine    
00036        subroutine IDXL_Shift(l,startSend,startRecv)
00037          integer, intent (in) :: l
00038          integer, intent(in) :: startSend, startRecv
00039        end subroutine    
00040        subroutine IDXL_Combine(l,src,startSend,startRecv)
00041          integer, intent (in) :: l, src
00042          integer, intent(in) :: startSend, startRecv
00043        end subroutine    
00044        subroutine IDXL_Add_entity(l,newIdx,nBetween,between)
00045          integer, intent (in) :: l
00046          integer, intent(in) :: newIdx, nBetween
00047          integer, intent(in) :: between(nBetween)
00048        end subroutine  
00049        subroutine IDXL_Sort_2d(l,coord2d)
00050          integer, intent (in) :: l
00051          double precision, intent(in) :: coord2d(:)
00052        end subroutine    
00053        subroutine IDXL_Sort_3d(l,coord3d)
00054          integer, intent (in) :: l
00055          double precision, intent(in) :: coord3d(:)
00056        end subroutine    
00057        subroutine IDXL_Destroy(l)
00058          integer,intent (in) :: l
00059        end subroutine    
00060        
00061        integer function IDXL_Get_send(l) 
00062          integer,intent(in) :: l
00063        end function
00064        integer function IDXL_Get_recv(l) 
00065          integer,intent(in) :: l
00066        end function
00067        integer function IDXL_Get_partners(s) 
00068          integer,intent(in) :: s
00069        end function
00070        integer function IDXL_Get_partner(s,partnerNo) 
00071          integer,intent(in) :: s, partnerNo
00072        end function
00073        integer function IDXL_Get_count(s,partnerNo) 
00074          integer,intent(in) :: s, partnerNo
00075        end function
00076        subroutine IDXL_Get_list(s,partnerNo,list) 
00077          integer,intent(in) :: s, partnerNo
00078          integer,intent(out) :: list(*)
00079        end subroutine
00080        integer function IDXL_Get_index(s,partnerNo,index) 
00081          integer,intent(in) :: s, partnerNo, index
00082        end function
00083        subroutine IDXL_Get_end(s) 
00084          integer,intent(in) :: s
00085        end subroutine
00086        integer function IDXL_Get_source(l,localNo)
00087           integer, intent(in) :: l,localNo
00088        end function
00089 
00090        integer function IDXL_Layout_create(type,width)
00091           integer, intent(in) :: type, width
00092        end function
00093        integer function IDXL_Layout_offset(type,width,off,dist,skew)
00094           integer, intent(in) :: type, width, off, dist, skew
00095        end function
00096        integer function IDXL_Get_layout_type(l)
00097           integer, intent(in) :: l
00098        end function
00099        integer function IDXL_Get_layout_width(l)
00100           integer, intent(in) :: l
00101        end function
00102        integer function IDXL_Get_layout_distance(l)
00103           integer, intent(in) :: l
00104        end function
00105        subroutine IDXL_Layout_destroy(l)
00106          integer,intent (in) :: l
00107        end subroutine
00108        
00109        integer function IDXL_Comm_begin(tag,context) 
00110          integer,intent (in) :: tag,context
00111        end function
00112        subroutine IDXL_Comm_flush(comm)
00113          integer,intent (in) :: comm
00114        end subroutine
00115        subroutine IDXL_Comm_wait(comm)
00116          integer,intent (in) :: comm
00117        end subroutine
00118        
00119        end interface