@@ -27,10 +27,10 @@ module m_initial_condition
2727 use m_patches
2828
2929 use m_assign_variables
30-
31- use m_eigen_solver ! Subroutines to solve eigenvalue problem for
30+
31+ use m_eigen_solver ! Subroutines to solve eigenvalue problem for
3232 ! complex general matrix
33-
33+
3434 ! ==========================================================================
3535 ! ==========================================================================
3636
@@ -298,37 +298,40 @@ contains
298298 subroutine s_superposition_instability_wave () ! ------------------------
299299 real (kind (0d0 )), dimension (5 ,0 :m,0 :n,0 :p) :: wave,wave1,wave2,wave_tmp
300300 real (kind (0d0 )) :: tr,ti
301- real (kind (0d0 )) :: Ly
301+ real (kind (0d0 )) :: Lx,Lz
302302 integer :: i,j,k
303303
304- Ly = y_domain%end - y_domain%beg
305-
304+ Lx = x_domain%end - x_domain%beg
305+ if (p > 0 ) then
306+ Lz = z_domain%end - z_domain%beg
307+ end if
308+
306309 wave = 0d0
307310 wave1 = 0d0
308311 wave2 = 0d0
309312
310313 ! Compute 2D waves
311- call s_instability_wave(2 * pi* 4.0 / Ly ,0d0 ,tr,ti,wave_tmp,0d0 )
314+ call s_instability_wave(2 * pi* 4.0 / Lx ,0d0 ,tr,ti,wave_tmp,0d0 )
312315 wave1 = wave1 + wave_tmp
313- call s_instability_wave(2 * pi* 2.0 / Ly ,0d0 ,tr,ti,wave_tmp,0d0 )
316+ call s_instability_wave(2 * pi* 2.0 / Lx ,0d0 ,tr,ti,wave_tmp,0d0 )
314317 wave1 = wave1 + wave_tmp
315- call s_instability_wave(2 * pi* 1.0 / Ly ,0d0 ,tr,ti,wave_tmp,0d0 )
318+ call s_instability_wave(2 * pi* 1.0 / Lx ,0d0 ,tr,ti,wave_tmp,0d0 )
316319 wave1 = wave1 + wave_tmp
317320 wave = wave1* 0.05
318-
321+
319322 if (p > 0 ) then
320323 ! Compute 3D waves with phase shifts.
321- call s_instability_wave(2 * pi* 4.0 / Ly , 2 * pi* 4.0 / Ly ,tr,ti,wave_tmp,2 * pi* 11d0 / 31d0 )
324+ call s_instability_wave(2 * pi* 4.0 / Lx , 2 * pi* 4.0 / Lz ,tr,ti,wave_tmp,2 * pi* 11d0 / 31d0 )
322325 wave2 = wave2 + wave_tmp
323- call s_instability_wave(2 * pi* 2.0 / Ly , 2 * pi* 2.0 / Ly ,tr,ti,wave_tmp,2 * pi* 13d0 / 31d0 )
326+ call s_instability_wave(2 * pi* 2.0 / Lx , 2 * pi* 2.0 / Lz ,tr,ti,wave_tmp,2 * pi* 13d0 / 31d0 )
324327 wave2 = wave2 + wave_tmp
325- call s_instability_wave(2 * pi* 1.0 / Ly , 2 * pi* 1.0 / Ly ,tr,ti,wave_tmp,2 * pi* 17d0 / 31d0 )
328+ call s_instability_wave(2 * pi* 1.0 / Lx , 2 * pi* 1.0 / Lz ,tr,ti,wave_tmp,2 * pi* 17d0 / 31d0 )
326329 wave2 = wave2 + wave_tmp
327- call s_instability_wave(2 * pi* 4.0 / Ly ,- 2 * pi* 4.0 / Ly ,tr,ti,wave_tmp,2 * pi* 19d0 / 31d0 )
330+ call s_instability_wave(2 * pi* 4.0 / Lx ,- 2 * pi* 4.0 / Lz ,tr,ti,wave_tmp,2 * pi* 19d0 / 31d0 )
328331 wave2 = wave2 + wave_tmp
329- call s_instability_wave(2 * pi* 2.0 / Ly ,- 2 * pi* 2.0 / Ly ,tr,ti,wave_tmp,2 * pi* 23d0 / 31d0 )
332+ call s_instability_wave(2 * pi* 2.0 / Lx ,- 2 * pi* 2.0 / Lz ,tr,ti,wave_tmp,2 * pi* 23d0 / 31d0 )
330333 wave2 = wave2 + wave_tmp
331- call s_instability_wave(2 * pi* 1.0 / Ly ,- 2 * pi* 1.0 / Ly ,tr,ti,wave_tmp,2 * pi* 29d0 / 31d0 )
334+ call s_instability_wave(2 * pi* 1.0 / Lx ,- 2 * pi* 1.0 / Lz ,tr,ti,wave_tmp,2 * pi* 29d0 / 31d0 )
332335 wave2 = wave2 + wave_tmp
333336 wave = wave + 0.15 * wave2
334337 end if
@@ -346,7 +349,7 @@ contains
346349 end do
347350 end do
348351
349- end subroutine s_superposition_instability_wave ! ----------------------
352+ end subroutine s_superposition_instability_wave ! ----------------------
350353
351354 !> This subroutine computes instability waves for a given set of spatial
352355 !! wavenumbers (alpha, beta) in x and z directions.
@@ -360,7 +363,7 @@ contains
360363 real (kind (0d0 )),dimension (0 :n,0 :n) :: d !< differential operator in y dir
361364 real (kind (0d0 )),dimension (0 :5 * (n+1 )- 1 ,0 :5 * (n+1 )- 1 ) :: ar,ai,br,bi,ci !< matrices for eigenvalue problem
362365 real (kind (0d0 )),dimension (0 :5 * (n+1 )- 1 ,0 :5 * (n+1 )- 1 ) :: zr,zi !< eigenvectors
363- real (kind (0d0 )),dimension (0 :5 * (n+1 )- 1 ) :: wr,wi !< eigenvalues
366+ real (kind (0d0 )),dimension (0 :5 * (n+1 )- 1 ) :: wr,wi !< eigenvalues
364367 real (kind (0d0 )),dimension (0 :5 * (n+1 )- 1 ) :: fv1,fv2,fv3 !< temporary memory
365368 real (kind (0d0 )) :: tr,ti !< most unstable eigenvalue
366369 real (kind (0d0 )),dimension (0 :5 * (n+1 )- 1 ) :: vr,vi,vnr,vni !< most unstable eigenvector and normalized one
@@ -380,9 +383,9 @@ contains
380383
381384 ! Assign mean profiles
382385 do j= 0 ,n
383- u_mean(j)= tanh (y_cc(j))
384- t_mean(j)= 1+0.5 * (gam-1 )* mach** 2 * (1 - u_mean(j)** 2 )
385- rho_mean(j)= 1 / T_mean(j)
386+ u_mean(j)= tanh (y_cc(j))
387+ t_mean(j)= 1+0.5 * (gam-1 )* mach** 2 * (1 - u_mean(j)** 2 )
388+ rho_mean(j)= 1 / T_mean(j)
386389 end do
387390
388391 ! Compute differential operator in y- dir
@@ -393,24 +396,24 @@ contains
393396 d(1 ,0 )=- 1 / (2 * dy)
394397 d(1 ,2 )= 1 / (2 * dy)
395398 do j= 2 ,n-2
396- d(j,j-2 )= 1 / (12 * dy)
397- d(j,j-1 )=- 8 / (12 * dy)
398- d(j,j+1 )= 8 / (12 * dy)
399- d(j,j+2 )=- 1 / (12 * dy)
399+ d(j,j-2 )= 1 / (12 * dy)
400+ d(j,j-1 )=- 8 / (12 * dy)
401+ d(j,j+1 )= 8 / (12 * dy)
402+ d(j,j+2 )=- 1 / (12 * dy)
400403 end do
401404 d(n-1 ,n-2 )=- 1 / (2 * dy)
402405 d(n-1 ,n) = 1 / (2 * dy)
403406
404407 ! Compute y- derivatives of rho, u, T
405408 do j= 0 ,n
406- drho_mean(j)= 0
407- du_mean(j)= 0
408- dt_mean(j)= 0
409- do k= 0 ,n
410- drho_mean(j) = drho_mean(j)+ d(j,k)* rho_mean(k)
411- du_mean(j) = du_mean(j)+ d(j,k)* u_mean(k)
412- dt_mean(j) = dt_mean(j)+ d(j,k)* t_mean(k)
413- end do
409+ drho_mean(j)= 0
410+ du_mean(j)= 0
411+ dt_mean(j)= 0
412+ do k= 0 ,n
413+ drho_mean(j) = drho_mean(j)+ d(j,k)* rho_mean(k)
414+ du_mean(j) = du_mean(j)+ d(j,k)* u_mean(k)
415+ dt_mean(j) = dt_mean(j)+ d(j,k)* t_mean(k)
416+ end do
414417 end do
415418
416419 ! Compute B and C, then A = B + C
@@ -455,7 +458,7 @@ contains
455458
456459 ! Compute eigenvalues and eigenvectors
457460 call cg(5 * (n+1 ),5 * (n+1 ),ar,ai,wr,wi,zr,zi,fv1,fv2,fv3,ierr)
458-
461+
459462 ! Generate instability wave
460463 call s_generate_wave(5 * (n+1 ),wr,wi,zr,zi,alpha,beta,wave,shift)
461464
@@ -485,9 +488,9 @@ contains
485488 end do
486489 vr = zr(:,k)
487490 vi = zi(:,k)
488-
491+
489492 ! Normalize the eigenvector by its component with the largest modulus.
490- norm = 0d0
493+ norm = 0d0
491494 do i= 0 ,nl-1
492495 if (dsqrt(vr(i)** 2 + vi(i)** 2 ) .gt. norm) then
493496 idx = i
@@ -502,7 +505,7 @@ contains
502505 vnr(i) = cr
503506 vni(i) = ci
504507 end do
505-
508+
506509 ! Generate an instability wave
507510 do i= 0 ,m
508511 do j= 0 ,n
@@ -512,17 +515,17 @@ contains
512515 else
513516 ang = alpha* x_cc(i)+ beta* z_cc(k)+ shift
514517 end if
515- wave(1 ,i,j,k) = vnr(j)* cos (ang)- vni(j)* sin (ang) ! rho
516- wave(2 ,i,j,k) = vnr((n+1 )+ j)* cos (ang)- vni((n+1 )+ j)* sin (ang) ! u
517- wave(3 ,i,j,k) = vnr(2 * (n+1 )+ j)* cos (ang)- vni(2 * (n+1 )+ j)* sin (ang) ! v
518- wave(4 ,i,j,k) = vnr(3 * (n+1 )+ j)* cos (ang)- vni(3 * (n+1 )+ j)* sin (ang) ! w
519- wave(5 ,i,j,k) = vnr(4 * (n+1 )+ j)* cos (ang)- vni(4 * (n+1 )+ j)* sin (ang) ! T
518+ wave(1 ,i,j,k) = vnr(j)* cos (ang)- vni(j)* sin (ang) ! rho
519+ wave(2 ,i,j,k) = vnr((n+1 )+ j)* cos (ang)- vni((n+1 )+ j)* sin (ang) ! u
520+ wave(3 ,i,j,k) = vnr(2 * (n+1 )+ j)* cos (ang)- vni(2 * (n+1 )+ j)* sin (ang) ! v
521+ wave(4 ,i,j,k) = vnr(3 * (n+1 )+ j)* cos (ang)- vni(3 * (n+1 )+ j)* sin (ang) ! w
522+ wave(5 ,i,j,k) = vnr(4 * (n+1 )+ j)* cos (ang)- vni(4 * (n+1 )+ j)* sin (ang) ! T
520523 end do
521524 end do
522525 end do
523-
524- end subroutine s_generate_wave
525-
526+
527+ end subroutine s_generate_wave
528+
526529 !> Deallocation procedures for the module
527530 subroutine s_finalize_initial_condition_module () ! ---------------------
528531
0 commit comments