Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
soln_mod.F90
Go to the documentation of this file.
1 module soln
2  use kinds, only : dp
3  use size_m
4  implicit none
5 
6  integer, parameter :: lvt1 = lx1*ly1*lz1*lelv
7  integer, parameter :: lvt2 = lx2*ly2*lz2*lelv
8  integer, parameter :: lbt1 = lbx1*lby1*lbz1*lbelv
9  integer, parameter :: lbt2 = lbx2*lby2*lbz2*lbelv
10 
11  integer, parameter :: lptmsk = lvt1*(5+2*ldimt) + 4*lbt1
12  integer, parameter :: lptsol &
13  = lvt1*(12 + 4*ldimt + 2*ldimt1 + (3+ldimt)*(lorder-1)) &
14  + lvt2*(lorder-1) &
15  + lbt1*(12 + 3*(lorder-1)) &
16  + lbt2*(lorder-1)
17 
18  integer, parameter :: lorder2 = max(1,lorder-2)
19 
20 ! Solution and data
21  real(DP), allocatable :: bq(:,:,:,:,:)
22 ! Can be used for post-processing runs (SIZE .gt. 10+3*LDIMT flds)
23  real(DP), allocatable, dimension(:,:,:,:,:) :: vxlag, vylag, vzlag
24  real(DP), allocatable :: tlag(:,:,:,:,:,:)
25  real(DP), allocatable, dimension(:,:,:,:,:) :: vgradt1, vgradt2
26  real(DP), allocatable, dimension(:,:,:,:) :: abx1, aby1, abz1
27  real(DP), allocatable, dimension(:,:,:,:) :: abx2, aby2, abz2
28  real(DP), allocatable, dimension(:,:,:,:) :: vdiff_e
29 ! Solution data
30  real(DP), allocatable, dimension(:,:,:,:) :: vx, vy, vz
31  real(DP), allocatable, dimension(:,:,:,:,:) :: t, vtrans, vdiff
32  real(DP), allocatable, dimension(:,:,:,:) :: bfx, bfy, bfz
33  real(DP), allocatable, dimension(:,:,:,:) :: cflf
34  real(DP), allocatable :: c_vx(:,:)
35 ! Solution data for magnetic field
36  real(DP), allocatable, dimension(:,:,:,:) :: bx, by, bz, pm
37  real(DP), allocatable, dimension(:,:,:,:) :: bmx, bmy, bmz ! Magnetic field RHS
38 ! Extrapolation terms for magnetic field rhs
39  real(DP), allocatable, dimension(:,:,:,:) :: bbx1, bby1, bbz1
40  real(DP), allocatable, dimension(:,:,:,:) :: bbx2, bby2, bbz2
41  real(DP), allocatable :: bxlag(:,:), bylag(:,:), bzlag(:,:), pmlag(:,:)
42 
43  real(DP) :: nu_star
44 
45  real(DP), allocatable :: pr(:,:,:,:), prlag(:,:,:,:,:)
46 
47  real(DP), allocatable :: qtl(:,:,:,:), usrdiv(:,:,:,:)
48 
49  real(DP), allocatable, target, dimension(:,:,:,:) :: v1mask
50  real(DP), pointer, dimension(:,:,:,:) :: v2mask, v3mask, pmask
51  real(DP), allocatable, target, dimension(:,:,:,:,:) :: tmask
52  real(DP), pointer, dimension(:,:,:,:) :: omask, vmult
53  real(DP), allocatable, target, dimension(:,:,:,:,:) :: tmult
54  real(DP), allocatable, dimension(:,:,:,:) :: b1mask, b2mask, b3mask! masks for mag. field
55  real(DP), allocatable, dimension(:,:,:,:) :: bpmask ! magnetic pressure
56 
57 ! Solution and data for perturbation fields
58  real(DP), allocatable, dimension(:,:) :: vxp, vyp, vzp, prp
59  real(DP), allocatable, dimension(:,:,:) :: tp, bqp
60  real(DP), allocatable, dimension(:,:) :: bfxp, bfyp, bfzp! perturbation field RHS
61  real(DP), allocatable, dimension(:,:,:) :: vxlagp, vylagp, vzlagp, prlagp
62  real(DP), allocatable, dimension(:,:,:,:) :: tlagp
63 ! Extrapolation terms for perturbation field rhs
64  real(DP), allocatable, dimension(:,:) :: exx1p, exy1p, exz1p, exx2p, exy2p, exz2p
65  real(DP), allocatable, dimension(:,:,:) :: vgradt1p, vgradt2p
66 
67  integer :: jp
68 
69  contains
70 
71  subroutine init_soln()
72  use kinds, only : dp
73  use size_m
74  implicit none
75 
76  allocate(bq(lx1,ly1,lz1,lelt,ldimt))
77  bq = 0_dp
78 
79  allocate( &
80 ! Can be used for post-processing runs (SIZE .gt. 10+3*LDIMT flds)
81  vxlag(lx1,ly1,lz1,lelv,2) &
82  , vylag(lx1,ly1,lz1,lelv,2) &
83  , vzlag(lx1,ly1,lz1,lelv,2) &
84  , tlag(lx1,ly1,lz1,lelt,lorder-1,ldimt))
85  vxlag = 0._dp; vylag = 0._dp; vzlag = 0._dp; tlag = 0._dp
86 
87  allocate( &
88  vgradt1(lx1,ly1,lz1,lelt,ldimt) &
89  , vgradt2(lx1,ly1,lz1,lelt,ldimt) )
90  allocate( &
91  abx1(lx1,ly1,lz1,lelv) &
92  , aby1(lx1,ly1,lz1,lelv) &
93  , abz1(lx1,ly1,lz1,lelv) &
94  , abx2(lx1,ly1,lz1,lelv) &
95  , aby2(lx1,ly1,lz1,lelv) &
96  , abz2(lx1,ly1,lz1,lelv) &
97 ! , VDIFF_E(LX1,LY1,LZ1,LELT) &
98 ! Solution data
99  , vx(lx1,ly1,lz1,lelv) &
100  , vy(lx1,ly1,lz1,lelv) &
101  , vz(lx1,ly1,lz1,lelv) &
102  , t(lx1,ly1,lz1,lelt,ldimt) &
103  , vtrans(lx1,ly1,lz1,lelt,ldimt1) &
104  , vdiff(lx1,ly1,lz1,lelt,ldimt1) &
105  , bfx(lx1,ly1,lz1,lelv) &
106  , bfy(lx1,ly1,lz1,lelv) &
107  , bfz(lx1,ly1,lz1,lelv) &
108 ! , cflf (lx1,ly1,lz1,lelv) &
109 ! , c_vx (lxd*lyd*lzd*lelv*ldim,lorder+1) & ! characteristics
110 ! Solution data for magnetic field
111  , bx(lbx1,lby1,lbz1,lbelv) &
112  , by(lbx1,lby1,lbz1,lbelv) &
113  , bz(lbx1,lby1,lbz1,lbelv) &
114  , pm(lbx2,lby2,lbz2,lbelv) &
115  , bmx(lbx1,lby1,lbz1,lbelv) & ! Magnetic field RHS
116  , bmy(lbx1,lby1,lbz1,lbelv) &
117  , bmz(lbx1,lby1,lbz1,lbelv) &
118  , bbx1(lbx1,lby1,lbz1,lbelv) & ! Extrapolation terms for
119  , bby1(lbx1,lby1,lbz1,lbelv) & ! magnetic field rhs
120  , bbz1(lbx1,lby1,lbz1,lbelv) &
121  , bbx2(lbx1,lby1,lbz1,lbelv) &
122  , bby2(lbx1,lby1,lbz1,lbelv) &
123  , bbz2(lbx1,lby1,lbz1,lbelv) &
124  , bxlag(lbx1*lby1*lbz1*lbelv,lorder-1) &
125  , bylag(lbx1*lby1*lbz1*lbelv,lorder-1) &
126  , bzlag(lbx1*lby1*lbz1*lbelv,lorder-1) &
127  , pmlag(lbx2*lby2*lbz2*lbelv,lorder2) )
128 
129  allocate(pr(lx2,ly2,lz2,lelv))
130 ! allocate(PRLAG(LX2,LY2,LZ2,LELV,LORDER2))
131 
133  !allocate(QTL(LX2,LY2,LZ2,LELT))
134 ! allocate(USRDIV(LX2,LY2,LZ2,LELT))
135 
136  allocate(v1mask(lx1,ly1,lz1,lelv) &
137  , v2mask(lx1,ly1,lz1,lelv) &
138  , v3mask(lx1,ly1,lz1,lelv) &
139 ! , PMASK (LX1,LY1,LZ1,LELV) &
140  , tmask(lx1,ly1,lz1,lelt,ldimt) &
141 ! , OMASK (LX1,LY1,LZ1,LELT) &
142 ! , VMULT (LX1,LY1,LZ1,LELV) &
143 ! , TMULT (LX1,LY1,LZ1,LELT,LDIMT) &
144  , b1mask(lbx1,lby1,lbz1,lbelv) & ! masks for mag. field
145  , b2mask(lbx1,lby1,lbz1,lbelv) &
146  , b3mask(lbx1,lby1,lbz1,lbelv) &
147  , bpmask(lbx1,lby1,lbz1,lbelv) ) ! magnetic pressure
148 
149 ! Solution and data for perturbation fields
150  allocate(vxp(lpx1*lpy1*lpz1*lpelv,lpert) &
151  , vyp(lpx1*lpy1*lpz1*lpelv,lpert) &
152  , vzp(lpx1*lpy1*lpz1*lpelv,lpert) &
153  , prp(lpx2*lpy2*lpz2*lpelv,lpert) &
154  , tp(lpx1*lpy1*lpz1*lpelt,ldimt,lpert) &
155  , bqp(lpx1*lpy1*lpz1*lpelt,ldimt,lpert) &
156  , bfxp(lpx1*lpy1*lpz1*lpelv,lpert) & ! perturbation field RHS
157  , bfyp(lpx1*lpy1*lpz1*lpelv,lpert) &
158  , bfzp(lpx1*lpy1*lpz1*lpelv,lpert) &
159  , vxlagp(lpx1*lpy1*lpz1*lpelv,lorder-1,lpert) &
160  , vylagp(lpx1*lpy1*lpz1*lpelv,lorder-1,lpert) &
161  , vzlagp(lpx1*lpy1*lpz1*lpelv,lorder-1,lpert) &
162  , prlagp(lpx2*lpy2*lpz2*lpelv,lorder2,lpert) &
163  , tlagp(lpx1*lpy1*lpz1*lpelt,ldimt,lorder-1,lpert) &
164  , exx1p(lpx1*lpy1*lpz1*lpelv,lpert) & ! Extrapolation terms for
165  , exy1p(lpx1*lpy1*lpz1*lpelv,lpert) & ! perturbation field rhs
166  , exz1p(lpx1*lpy1*lpz1*lpelv,lpert) &
167  , exx2p(lpx1*lpy1*lpz1*lpelv,lpert) &
168  , exy2p(lpx1*lpy1*lpz1*lpelv,lpert) &
169  , exz2p(lpx1*lpy1*lpz1*lpelv,lpert) &
170  ,vgradt1p(lpx1*lpy1*lpz1*lpelt,ldimt,lpert) &
171  ,vgradt2p(lpx1*lpy1*lpz1*lpelt,ldimt,lpert) )
172 
173  end subroutine init_soln
174 
175 end module soln
subroutine init_soln()
Definition: soln_mod.F90:71
Definition: soln_mod.F90:1