1*59599516SKenneth E. Jansen module ramg_data 2*59599516SKenneth E. Jansen 3*59599516SKenneth E. Jansen parameter (MAXAMGLVL=15) 4*59599516SKenneth E. Jansen 5*59599516SKenneth E. Jansen type r1d 6*59599516SKenneth E. Jansen real*8, pointer :: p(:) 7*59599516SKenneth E. Jansen end type 8*59599516SKenneth E. Jansenc 9*59599516SKenneth E. Jansen type r2d 10*59599516SKenneth E. Jansen real*8, pointer :: p(:,:) 11*59599516SKenneth E. Jansen end type 12*59599516SKenneth E. Jansenc 13*59599516SKenneth E. Jansen type r3d 14*59599516SKenneth E. Jansen real*8, pointer :: p(:,:,:) 15*59599516SKenneth E. Jansen end type 16*59599516SKenneth E. Jansenc 17*59599516SKenneth E. Jansen type i1d 18*59599516SKenneth E. Jansen integer, pointer :: p(:) 19*59599516SKenneth E. Jansen end type 20*59599516SKenneth E. Jansenc 21*59599516SKenneth E. Jansen type i2d 22*59599516SKenneth E. Jansen integer, pointer :: p(:,:) 23*59599516SKenneth E. Jansen end type 24*59599516SKenneth E. Jansenc 25*59599516SKenneth E. Jansen type i3d 26*59599516SKenneth E. Jansen integer, pointer :: p(:,:,:) 27*59599516SKenneth E. Jansen end type 28*59599516SKenneth E. Jansenc 29*59599516SKenneth E. Jansen type i2dd 30*59599516SKenneth E. Jansen type(i1d),pointer :: pp(:) 31*59599516SKenneth E. Jansen end type 32*59599516SKenneth E. Jansenc 33*59599516SKenneth E. Jansen type r2dd 34*59599516SKenneth E. Jansen type(r1d),pointer :: pp(:) 35*59599516SKenneth E. Jansen end type 36*59599516SKenneth E. Jansenc 37*59599516SKenneth E. Jansen type r12dd 38*59599516SKenneth E. Jansen type(r2d),pointer :: pp(:) 39*59599516SKenneth E. Jansen end type 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansen ! For communication pattern 42*59599516SKenneth E. Jansen type(i2dd) :: sub_map,sub_revmap,sub_rowpmap 43*59599516SKenneth E. Jansen type(i2dd) :: sub_colm,sub_colm2,sub_rowp,sub_rowp2 44*59599516SKenneth E. Jansen type(r12dd) :: sub_mtx,sub_mtx2 45*59599516SKenneth E. Jansen type(i1d) :: sub_nnz,sub_nnz2,sub_nshg 46*59599516SKenneth E. Jansen 47*59599516SKenneth E. Jansen 48*59599516SKenneth E. Jansen ! For AMG 49*59599516SKenneth E. Jansen 50*59599516SKenneth E. Jansen integer,allocatable,dimension(:) :: levelbaseflag 51*59599516SKenneth E. Jansen integer,allocatable,dimension(:) :: reducecolm 52*59599516SKenneth E. Jansen integer,allocatable,dimension(:) :: reducerowp 53*59599516SKenneth E. Jansen real(kind=8),allocatable,dimension(:) :: reducelhs 54*59599516SKenneth E. Jansen 55*59599516SKenneth E. Jansen type(r2d),dimension(MAXAMGLVL) :: amg_A_lhs 56*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: amg_A_rowp 57*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: amg_A_colm 58*59599516SKenneth E. Jansen type(r1d),dimension(MAXAMGLVL) :: amg_A_rhs 59*59599516SKenneth E. Jansen 60*59599516SKenneth E. Jansen integer,dimension(MAXAMGLVL) :: amg_nshg 61*59599516SKenneth E. Jansen integer,dimension(MAXAMGLVL) :: amg_nnz 62*59599516SKenneth E. Jansen 63*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: amg_paramap 64*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: amg_paraext 65*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: amg_ilwork 66*59599516SKenneth E. Jansen integer,dimension(MAXAMGLVL) :: amg_nlwork 67*59599516SKenneth E. Jansen integer,dimension(:),allocatable :: amg_cfmap 68*59599516SKenneth E. Jansen 69*59599516SKenneth E. Jansen integer :: ramg_flag 70*59599516SKenneth E. Jansen real(kind=8),dimension(10) :: ramg_window 71*59599516SKenneth E. Jansen integer :: ramg_winct 72*59599516SKenneth E. Jansen integer :: ramg_redo 73*59599516SKenneth E. Jansen real(kind=8),dimension(30) :: ramg_time 74*59599516SKenneth E. Jansen 75*59599516SKenneth E. Jansen integer :: ramg_verb 76*59599516SKenneth E. Jansen integer :: ramg_setup_flag 77*59599516SKenneth E. Jansen integer :: ramg_levelx 78*59599516SKenneth E. Jansen 79*59599516SKenneth E. Jansen integer,allocatable,dimension(:) :: ncorp_map 80*59599516SKenneth E. Jansen 81*59599516SKenneth E. Jansen type(r2d) :: ramg_flowDiag 82*59599516SKenneth E. Jansen type(r1d),dimension(MAXAMGLVL) :: amg_ppeDiag 83*59599516SKenneth E. Jansen 84*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: CF_map,CF_revmap 85*59599516SKenneth E. Jansen type(r1d),dimension(MAXAMGLVL) :: I_fc 86*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: I_fc_rowp 87*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: I_fc_colm 88*59599516SKenneth E. Jansen type(r1d),dimension(MAXAMGLVL) :: I_cf 89*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: I_cf_rowp 90*59599516SKenneth E. Jansen type(i1d),dimension(MAXAMGLVL) :: I_cf_colm 91*59599516SKenneth E. Jansen 92*59599516SKenneth E. Jansen type(r2d),dimension(MAXAMGLVL) :: sI_fc 93*59599516SKenneth E. Jansen type(r2d),dimension(MAXAMGLVL) :: sI_cf 94*59599516SKenneth E. Jansen 95*59599516SKenneth E. Jansen ! GGB parameters 96*59599516SKenneth E. Jansen 97*59599516SKenneth E. Jansen real(kind=8),dimension(:,:),allocatable :: ramg_ggb_ev 98*59599516SKenneth E. Jansen real(kind=8),dimension(:,:),allocatable :: ramg_ggb_eA 99*59599516SKenneth E. Jansen ! dense coarsest 100*59599516SKenneth E. Jansen real(kind=8),dimension(:,:),allocatable :: cmtxA 101*59599516SKenneth E. Jansen real(kind=8),dimension(:),allocatable :: cindx 102*59599516SKenneth E. Jansen 103*59599516SKenneth E. Jansen ! MLS paramters 104*59599516SKenneth E. Jansen real(kind=8),dimension(MAXAMGLVL,10) :: mlsCf,mlsOm 105*59599516SKenneth E. Jansen ! for system: 106*59599516SKenneth E. Jansen real(kind=8),dimension(MAXAMGLVL,10) :: smlsCf,smlsOm 107*59599516SKenneth E. Jansen 108*59599516SKenneth E. Jansen ! reduced case 109*59599516SKenneth E. Jansen integer,allocatable,dimension(:,:) :: reducemap,rmap1d 110*59599516SKenneth E. Jansen integer :: rmapmax 111*59599516SKenneth E. Jansen 112*59599516SKenneth E. Jansen end module 113*59599516SKenneth E. Jansen 114*59599516SKenneth E. Jansen 115