9 use size_m
, only : nx1, ny1, nz1, nelv, lx1, ly1, lz1
10 use geom, only : rxm1, rym1, rzm1, jacmi, sxm1, sym1, szm1, txm1, tym1, tzm1
11 use input, only : if3d
14 use mesh, only : if_ortho
18 real(DP) :: u(nx1,ny1,nz1,nelv),v(nx1,ny1,nz1,nelv),w(nx1,ny1,nz1,nelv)
21 real(DP) :: dri(lx1), dsi(ly1), dti(lz1)
23 integer :: e, i, j, k, l, nxyz
24 integer,
save :: icalld = 0
25 real(DP) :: ur, us, ut, cflr, cfls, cflt, cflm
26 real(DP),
external :: glmax
31 call
getdr(dri,zgm1(1,1),nx1)
32 call
getdr(dsi,zgm1(1,2),ny1)
33 if (if3d) call
getdr(dti,zgm1(1,3),nz1)
47 ur = ( u(i,j,k,e)*rxm1(i,j,k,e) ) * jacmi(i,j,k,e)
48 us = ( v(i,j,k,e)*sym1(i,j,k,e) ) * jacmi(i,j,k,e)
49 ut = ( w(i,j,k,e)*tzm1(i,j,k,e) ) * jacmi(i,j,k,e)
51 ur = ( u(i,j,k,e)*rxm1(i,j,k,e) &
52 + v(i,j,k,e)*rym1(i,j,k,e) &
53 + w(i,j,k,e)*rzm1(i,j,k,e) ) * jacmi(i,j,k,e)
54 us = ( u(i,j,k,e)*sxm1(i,j,k,e) &
55 + v(i,j,k,e)*sym1(i,j,k,e) &
56 + w(i,j,k,e)*szm1(i,j,k,e) ) * jacmi(i,j,k,e)
57 ut = ( u(i,j,k,e)*txm1(i,j,k,e) &
58 + v(i,j,k,e)*tym1(i,j,k,e) &
59 + w(i,j,k,e)*tzm1(i,j,k,e) ) * jacmi(i,j,k,e)
61 cflr = abs(dt*ur*dri(i))
62 cfls = abs(dt*us*dsi(j))
63 cflt = abs(dt*ut*dti(k))
65 cflm = cflr + cfls + cflt
81 ur = ( u(i,j,1,e)*rxm1(i,j,1,e) &
82 + v(i,j,1,e)*rym1(i,j,1,e) ) * jacmi(l,1)
83 us = ( u(i,j,1,e)*sxm1(i,j,1,e) &
84 + v(i,j,1,e)*sym1(i,j,1,e) ) * jacmi(l,1)
86 cflr = abs(dt*ur*dri(i))
87 cfls = abs(dt*us*dsi(j))
110 real(DP) :: dri(nx1),zgm1(nx1)
114 dri(1) = zgm1(2) - zgm1(1)
116 dri(i) = 0.5*( zgm1(i+1) - zgm1(i-1) )
118 dri(nx1) = zgm1(nx1) - zgm1(nx1-1)
130 use size_m
, only : nx1, ny1, nz1, nxd, nyd, nzd, lxd, nelv, ldim
131 use geom, only : ifgeom, rx
132 use geom, only : rxm1, rym1, rzm1, sxm1, sym1, szm1, txm1, tym1, tzm1
133 use input, only : if3d
134 use tstep , only : istep
136 use mesh, only : if_ortho
137 use interp, only : jgl, jgt
141 real(DP) :: zd(lxd),wd(lxd)
142 integer :: e, i, j, k, l, ii
143 integer :: nxyz1, nxyzd
146 real(DP) :: w2((2*lxd)**ldim,2)
147 integer,
parameter :: ldw = 2*(2*lxd)**ldim
150 integer,
save :: ilstep = -1
152 if ( .NOT. ifgeom .AND. ilstep > 1)
return
153 if (ifgeom .AND. ilstep == istep)
return
171 call
specmpn(rx(1,1,e),nxd,rxm1(1,1,1,e),nx1,jgl(iptr),jgt(iptr),if3d,w2,ldw)
172 call
specmpn(rx(1,2,e),nxd,sym1(1,1,1,e),nx1,jgl(iptr),jgt(iptr),if3d,w2,ldw)
173 call
specmpn(rx(1,3,e),nxd,tzm1(1,1,1,e),nx1,jgl(iptr),jgt(iptr),if3d,w2,ldw)
175 call intp_rstd(rx(1,1,e),rxm1(1,1,1,e),nx1,nxd,if3d,0)
176 call intp_rstd(rx(1,2,e),sym1(1,1,1,e),nx1,nxd,if3d,0)
177 call intp_rstd(rx(1,3,e),tzm1(1,1,1,e),nx1,nxd,if3d,0)
181 call intp_rstd(rx(1,1,e),rxm1(1,1,1,e),nx1,nxd,if3d,0)
182 call intp_rstd(rx(1,2,e),rym1(1,1,1,e),nx1,nxd,if3d,0)
183 call intp_rstd(rx(1,3,e),rzm1(1,1,1,e),nx1,nxd,if3d,0)
184 call intp_rstd(rx(1,4,e),sxm1(1,1,1,e),nx1,nxd,if3d,0)
185 call intp_rstd(rx(1,5,e),sym1(1,1,1,e),nx1,nxd,if3d,0)
186 call intp_rstd(rx(1,6,e),szm1(1,1,1,e),nx1,nxd,if3d,0)
187 call intp_rstd(rx(1,7,e),txm1(1,1,1,e),nx1,nxd,if3d,0)
188 call intp_rstd(rx(1,8,e),tym1(1,1,1,e),nx1,nxd,if3d,0)
189 call intp_rstd(rx(1,9,e),tzm1(1,1,1,e),nx1,nxd,if3d,0)
198 w = wd(i)*wd(j)*wd(k)
199 rx(l,:,e) = w*rx(l,:,e)
211 call intp_rstd(rx(1,1,e),rxm1(1,1,1,e),nx1,nxd,if3d,0)
212 call intp_rstd(rx(1,2,e),rym1(1,1,1,e),nx1,nxd,if3d,0)
213 call intp_rstd(rx(1,3,e),sxm1(1,1,1,e),nx1,nxd,if3d,0)
214 call intp_rstd(rx(1,4,e),sym1(1,1,1,e),nx1,nxd,if3d,0)
222 rx(l,ii,e) = w*rx(l,ii,e)
subroutine compute_cfl(cfl, u, v, w, dt)
Given velocity field (u,v,w) and dt, compute current CFL number.
Module containing memoized interpolation matrices.
subroutine get_int_ptr(ip, mx, md)
Get pointer to jgl() for interpolation pair (mx,md)
subroutine set_dealias_rx
Eulerian scheme, add convection term to forcing function.
subroutine specmpn(b, nb, a, na, ba, ab, if3d, w, ldw)
Spectral interpolation from A to B via tensor products.
subroutine getdr(dri, zgm1, nx1)
subroutine, public zwgl(Z, W, NP)
Generate NP Gauss Legendre points (Z) and weights (W) associated with Jacobi polynomial P(N)(alpha=0...