8 logical :: use_spectral_coarse
11 integer,
parameter :: lmg_mhd=1-(lx1-lbx1)/(lx1-1)
13 integer,
parameter :: lmgs=1 + lmg_mhd
14 integer,
parameter :: lmgn=3
15 integer,
parameter :: lmgx=lmgn+1
16 integer,
parameter :: lxm=lx2+2,lym=lxm,lzm=lz2+2*(ldim-2)
17 integer,
parameter :: lmg_rwt=2*lxm*lzm
18 integer,
parameter :: lmg_fasts=2*lxm*lxm
19 integer,
parameter :: lmg_fastd=2*lxm*lym*lzm
20 integer,
parameter :: lmg_swt=2*lxm*lzm
21 integer,
parameter :: lmg_g=2*lx2*ly2*lz2
22 integer,
parameter :: lmg_solve=2*lxm*lym*lzm
25 integer :: mg_fld !> @var active mg field
26 integer,
allocatable :: mg_nx(:), mg_ny(:), mg_nz(:)
27 integer,
allocatable :: mg_nh(:), mg_nhz(:)
28 integer,
allocatable :: mg_gsh_schwarz_handle(:,:)
29 integer,
allocatable :: mg_gsh_handle(:,:)
30 integer,
allocatable :: mg_rstr_wt_index(:,:), mg_mask_index(:,:)
31 integer,
allocatable :: mg_fast_s_index(:,:), mg_fast_d_index(:,:)
32 integer,
allocatable :: mg_solve_index(:,:)
33 integer,
allocatable :: mg_g_index(:,:), mg_schwarz_wt_index(:,:)
35 real(DP),
allocatable :: mg_jh(:,:)
36 real(DP),
allocatable :: mg_jht(:,:)
40 real(DP),
allocatable :: mg_ah(:,:)
41 real(DP),
allocatable :: mg_bh(:,:)
42 real(DP),
allocatable :: mg_ch(:,:)
43 real(DP),
allocatable :: mg_dh(:,:)
44 real(DP),
allocatable :: mg_dht(:,:)
45 real(DP),
allocatable :: mg_zh(:,:)
46 real(DP),
allocatable :: mg_rstr_wt(:)
48 real(DP),
allocatable :: mg_fast_s(:), mg_fast_d(:)
49 real(DP),
allocatable :: mg_schwarz_wt(:)
50 real(DP),
allocatable :: mg_solve_e(:), mg_solve_r(:)
51 real(DP),
allocatable,
dimension(:) :: mg_h1,mg_h2,mg_b
52 real(DP),
allocatable :: mg_g(:)
55 real(DP),
allocatable :: mg_work(:),mg_work2(:),mg_worke(:,:)
57 integer,
allocatable :: mg_imask(:)
61 integer,
allocatable :: mg_h1_n(:,:)
62 integer,
allocatable,
dimension(:,:) :: p_mg_h1,p_mg_h2,p_mg_b,p_mg_g,p_mg_msk
65 real(DP),
allocatable,
dimension(:) :: lr,ls,lt &
77 use_spectral_coarse = .true.
79 allocate(mg_nx(lmgn), mg_ny(lmgn), mg_nz(lmgn))
80 allocate(mg_nh(lmgn), mg_nhz(lmgn))
81 allocate(mg_gsh_schwarz_handle(lmgn,lmgs), mg_gsh_handle(lmgn,lmgs))
82 allocate(mg_rstr_wt_index(lmgx,0:lmgs), mg_mask_index(lmgx,0:lmgs))
83 allocate(mg_solve_index(lmgx,0:lmgs))
84 allocate(mg_fast_s_index(lmgx,0:lmgs), mg_fast_d_index(lmgx,0:lmgs))
85 allocate(mg_schwarz_wt_index(lmgx,0:lmgs), mg_g_index(lmgx,0:lmgs))
88 allocate(mg_jh(lxm*lxm,lmgn) &
89 , mg_jht(lxm*lxm,lmgn) &
92 , mg_ah(lxm*lxm,lmgn) &
94 , mg_dh(lxm*lxm,lmgn) &
95 , mg_dht(lxm*lxm,lmgn) &
97 , mg_rstr_wt(0:lmgs*lmg_rwt*2*ldim*lelt-1) &
99 , mg_fast_s(0:lmgs*lmg_fasts*2*ldim*lelt-1) &
100 , mg_fast_d(0:lmgs*lmg_fastd*lelt-1) &
101 , mg_schwarz_wt(0:lmgs*lmg_swt*4*ldim*lelt-1) &
111 , mg_worke(lxm*lym*lzm,6) &
115 allocate(mg_imask(0:lmgs*lmg_rwt*4*ldim*lelt-1))
118 allocate(mg_h1_n(lmgx,ldimt1) &
119 , p_mg_h1(lmgx,ldimt1),p_mg_h2(lmgx,ldimt1) &
120 , p_mg_b(lmgx,ldimt1),p_mg_g(lmgx,ldimt1) &
121 , p_mg_msk(lmgx,ldimt1) )
123 allocate(lr(2*lx1+4),ls(2*lx1+4),lt(2*lx1+4) &
124 , llr(lelt),lls(lelt),llt(lelt) &
125 , lmr(lelt),lms(lelt),lmt(lelt) &
126 , lrr(lelt),lrs(lelt),lrt(lelt) )
Module containing data for HSMG.