source: CIVL/examples/fortran/nek5000/core/HSMG

main
Last change on this file was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100755
File size: 4.0 KB
Line 
1c
2c Variables for the Hybrid Schwarz Multigrid
3c
4c Allocate MHD memory only if lbx1==lx1
5c
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
20c
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
35c
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
41c
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
51c
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)
59c
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
64c
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
78c 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
Note: See TracBrowser for help on using the repository browser.