| 1 | c
|
|---|
| 2 | c Variables for the Hybrid Schwarz Multigrid
|
|---|
| 3 | c
|
|---|
| 4 | c Allocate MHD memory only if lbx1==lx1
|
|---|
| 5 | c
|
|---|
| 6 | integer lmg_mhd,lmgs,lmgn,lmgx,lxm,lym,lzm,lmg_rwt,lmg_fasts,
|
|---|
| 7 | $ lmg_fastd,lmg_swt,lmg_g,lmg_solve
|
|---|
| 8 |
|
|---|
| 9 | parameter (lmg_mhd=1-(lx1-lbx1)/(lx1-1))!1 if MHD is true, 0 otherwise
|
|---|
| 10 | parameter (lmgs=1 + lmg_mhd) ! max number of multigrid solvers
|
|---|
| 11 | parameter (lmgn=3) ! max number of multigrid levels
|
|---|
| 12 | parameter (lmgx=lmgn+1) ! max number of mg index levels
|
|---|
| 13 | parameter (lxm=lx2+2,lym=lxm,lzm=lz2+2*(ldim-2)) ! mgrid sizes
|
|---|
| 14 | parameter (lmg_rwt=2*lxm*lzm) ! restriction weight max size
|
|---|
| 15 | parameter (lmg_fasts=2*lxm*lxm) ! FDM S max size
|
|---|
| 16 | parameter (lmg_fastd=2*lxm*lym*lzm) ! FDM D max size
|
|---|
| 17 | parameter (lmg_swt=2*lxm*lzm) ! schwarz weight max size
|
|---|
| 18 | parameter (lmg_g=2*lx2*ly2*lz2) ! metrics max size
|
|---|
| 19 | parameter (lmg_solve=2*lxm*lym*lzm) ! solver r,e max size
|
|---|
| 20 | c
|
|---|
| 21 | integer mg_lmax !number of multigrid levels
|
|---|
| 22 | $ , mg_nx(lmgn) !level poly. order (for GLL pts)
|
|---|
| 23 | $ , mg_ny(lmgn), mg_nz (lmgn)
|
|---|
| 24 | $ , mg_nh(lmgn), mg_nhz(lmgn) !number of 1d nodes
|
|---|
| 25 | $ , mg_gsh_schwarz_handle(lmgn,lmgs) !dssum schwarz handles
|
|---|
| 26 | $ , mg_gsh_handle (lmgn,lmgs) !dssum handle
|
|---|
| 27 | $ , mg_rstr_wt_index (lmgx,0:lmgs)
|
|---|
| 28 | $ , mg_mask_index (lmgx,0:lmgs)
|
|---|
| 29 | $ , mg_solve_index (lmgx,0:lmgs)
|
|---|
| 30 | $ , mg_fast_s_index (lmgx,0:lmgs)
|
|---|
| 31 | $ , mg_fast_d_index (lmgx,0:lmgs)
|
|---|
| 32 | $ , mg_schwarz_wt_index (lmgx,0:lmgs)
|
|---|
| 33 | $ , mg_g_index (lmgx,0:lmgs)
|
|---|
| 34 | $ , mg_fld !active mg field
|
|---|
| 35 | c
|
|---|
| 36 | common /mghs/ mg_lmax, mg_nx, mg_ny, mg_nz, mg_nh, mg_nhz
|
|---|
| 37 | $ , mg_gsh_schwarz_handle, mg_gsh_handle
|
|---|
| 38 | $ , mg_rstr_wt_index, mg_mask_index,mg_solve_index
|
|---|
| 39 | $ , mg_fast_s_index, mg_fast_d_index
|
|---|
| 40 | $ , mg_schwarz_wt_index, mg_g_index, mg_fld
|
|---|
| 41 | c
|
|---|
| 42 | real mg_jh(lxm*lxm,lmgn) !c-to-f interpolation matrices
|
|---|
| 43 | $ , mg_jht(lxm*lxm,lmgn) !transpose of mg_jh
|
|---|
| 44 | $ , mg_jhfc (lxm*lxm,lmgn) !f-to-c interpolation
|
|---|
| 45 | $ , mg_jhfct(lxm*lxm,lmgn) !transpose of mg_jhfc
|
|---|
| 46 | $ , mg_ah(lxm*lxm,lmgn) !A hat matrices
|
|---|
| 47 | $ , mg_bh(lxm,lmgn) !B hat matrices
|
|---|
| 48 | $ , mg_dh(lxm*lxm,lmgn) !D hat matrices
|
|---|
| 49 | $ , mg_dht(lxm*lxm,lmgn) !D hat transpose matrices
|
|---|
| 50 | $ , mg_zh(lxm,lmgn) !Nodal coordinates
|
|---|
| 51 | c
|
|---|
| 52 | $ , mg_rstr_wt (0:lmgs*lmg_rwt*2*ldim*lelt-1) !restriction wt
|
|---|
| 53 | $ , mg_mask (0:lmgs*lmg_rwt*4*ldim*lelt-1) !b.c. mask
|
|---|
| 54 | $ , mg_fast_s (0:lmgs*lmg_fasts*2*ldim*lelt-1)
|
|---|
| 55 | $ , mg_fast_d (0:lmgs*lmg_fastd*lelt-1)
|
|---|
| 56 | $ , mg_schwarz_wt(0:lmgs*lmg_swt*4*ldim*lelt-1)
|
|---|
| 57 | $ , mg_solve_e (0:lmg_solve*lelt-1)
|
|---|
| 58 | $ , mg_solve_r (0:lmg_solve*lelt-1)
|
|---|
| 59 | c
|
|---|
| 60 | $ , mg_h1 (0:lmg_g*lelt-1)
|
|---|
| 61 | $ , mg_h2 (0:lmg_g*lelt-1)
|
|---|
| 62 | $ , mg_b (0:lmg_g*lelt-1)
|
|---|
| 63 | $ , mg_g (0:lmg_g*((ldim-1)*3)*lelt-1) !metrics matrices
|
|---|
| 64 | c
|
|---|
| 65 | $ , mg_work (2*lxm*lym*lzm*lelt) ! must be able to hold
|
|---|
| 66 | $ , mg_work2 (lxm*lym*lzm*lelt) ! two lower level extended
|
|---|
| 67 | $ , mg_worke (lxm*lym*lzm,6) ! schwarz arrays
|
|---|
| 68 |
|
|---|
| 69 | common /mghr/ mg_jh,mg_jht,mg_ah,mg_bh,mg_dh,mg_dht,mg_zh
|
|---|
| 70 | $ , mg_jhfc,mg_jhfct, mg_rstr_wt, mg_mask
|
|---|
| 71 | $ , mg_fast_s, mg_fast_d, mg_schwarz_wt
|
|---|
| 72 | $ , mg_solve_e,mg_solve_r, mg_h1,mg_h2,mg_b,mg_g
|
|---|
| 73 | $ , mg_work,mg_work2,mg_worke
|
|---|
| 74 |
|
|---|
| 75 | integer mg_imask(0:lmgs*lmg_rwt*4*ldim*lelt-1) ! For h1mg, mask is a ptr
|
|---|
| 76 | equivalence(mg_imask,mg_mask)
|
|---|
| 77 |
|
|---|
| 78 | c Specific to h1 multigrid:
|
|---|
| 79 |
|
|---|
| 80 | integer mg_h1_lmax
|
|---|
| 81 | $ , mg_h1_n (lmgx,ldimt1)
|
|---|
| 82 | $ , p_mg_h1 (lmgx,ldimt1), p_mg_h2(lmgx,ldimt1)
|
|---|
| 83 | $ , p_mg_b (lmgx,ldimt1), p_mg_g (lmgx,ldimt1)
|
|---|
| 84 | $ , p_mg_msk (lmgx,ldimt1)
|
|---|
| 85 | common /mgh1i/ mg_h1_lmax, mg_h1_n, p_mg_h1, p_mg_h2, p_mg_b
|
|---|
| 86 | $ , p_mg_g, p_mg_msk
|
|---|