Merge branch 'master' into reconnection
This commit is contained in:
commit
a0cb8a4114
@ -1135,12 +1135,6 @@ module evolution
|
||||
|
||||
end if ! toplev > 1
|
||||
|
||||
#ifdef DEBUG
|
||||
! check variables for NaNs
|
||||
!
|
||||
call check_variables()
|
||||
#endif /* DEBUG */
|
||||
|
||||
! error entry point
|
||||
!
|
||||
100 continue
|
||||
@ -4319,73 +4313,6 @@ module evolution
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
end subroutine update_errors_max
|
||||
#ifdef DEBUG
|
||||
!
|
||||
!===============================================================================
|
||||
!
|
||||
! subroutine CHECK_VARIABLES:
|
||||
! --------------------------
|
||||
!
|
||||
! Subroutine iterates over all data blocks and converts the conservative
|
||||
! variables to their primitive representation.
|
||||
!
|
||||
!
|
||||
!===============================================================================
|
||||
!
|
||||
subroutine check_variables()
|
||||
|
||||
use coordinates , only : nn => bcells
|
||||
use equations , only : nv, pvars, cvars
|
||||
use ieee_arithmetic, only : ieee_is_nan
|
||||
|
||||
use blocks , only : block_meta
|
||||
use blocks , only : block_data, list_data
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: i, j, k, p
|
||||
|
||||
type(block_meta), pointer :: pmeta
|
||||
type(block_data), pointer :: pdata
|
||||
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
#if NDIMS == 2
|
||||
k = 1
|
||||
#endif /* NDIMS == 2 */
|
||||
|
||||
pdata => list_data
|
||||
|
||||
do while (associated(pdata))
|
||||
|
||||
pmeta => pdata%meta
|
||||
|
||||
#if NDIMS == 3
|
||||
do k = 1, nn
|
||||
#endif /* NDIMS == 3 */
|
||||
do j = 1, nn
|
||||
do i = 1, nn
|
||||
do p = 1, nv
|
||||
if (ieee_is_nan(pdata%u(p,i,j,k))) then
|
||||
print *, 'U NaN:', cvars(p), pdata%meta%id, i, j, k
|
||||
end if
|
||||
if (ieee_is_nan(pdata%q(p,i,j,k))) then
|
||||
print *, 'Q NaN:', pvars(p), pdata%meta%id, i, j, k
|
||||
end if
|
||||
end do ! p = 1, nv
|
||||
end do ! i = 1, nn
|
||||
end do ! j = 1, nn
|
||||
#if NDIMS == 3
|
||||
end do ! k = 1, nn
|
||||
#endif /* NDIMS == 3 */
|
||||
|
||||
pdata => pdata%next
|
||||
end do
|
||||
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
end subroutine check_variables
|
||||
#endif /* DEBUG */
|
||||
|
||||
!===============================================================================
|
||||
!
|
||||
|
@ -1212,33 +1212,28 @@ module forcing
|
||||
!
|
||||
subroutine inject_eddy(xp, ap)
|
||||
|
||||
use blocks, only : block_data, list_data
|
||||
use blocks, only : block_data, data_blocks, get_dblocks
|
||||
|
||||
implicit none
|
||||
|
||||
real(kind=8), dimension(3), intent(in) :: xp, ap
|
||||
|
||||
integer :: m, n
|
||||
|
||||
type(block_data), pointer :: pdata
|
||||
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
! assign pdata with the first block on the data block list
|
||||
!
|
||||
pdata => list_data
|
||||
n = get_dblocks()
|
||||
|
||||
! iterate over all data blocks
|
||||
!
|
||||
do while (associated(pdata))
|
||||
!$omp parallel do default(shared) private(pdata)
|
||||
do m = 1, n
|
||||
pdata => data_blocks(m)%ptr
|
||||
|
||||
! inject eddy into the current block
|
||||
!
|
||||
call inject_eddy_block(pdata, xp(:), ap(:))
|
||||
|
||||
! assign pdata to the next block
|
||||
!
|
||||
pdata => pdata%next
|
||||
|
||||
end do ! over data blocks
|
||||
end do
|
||||
!$omp end parallel do
|
||||
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
@ -1695,45 +1690,50 @@ module forcing
|
||||
subroutine get_vcoefs()
|
||||
|
||||
use blocks , only : block_data, data_blocks, get_dblocks
|
||||
use helpers , only : print_message
|
||||
#ifdef MPI
|
||||
use mpitools, only : reduce_sum
|
||||
#endif /* MPI */
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: m, n, nt
|
||||
integer :: m, n, status
|
||||
|
||||
type(block_data), pointer :: pdata
|
||||
|
||||
complex(kind=8), dimension(:,:,:), allocatable :: vc
|
||||
|
||||
!$ integer :: omp_get_num_threads, omp_get_thread_num
|
||||
character(len=*), parameter :: loc = 'FORCING:get_vcoefs()'
|
||||
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
nt = 0
|
||||
!$omp parallel
|
||||
!$ nt = omp_get_num_threads() - 1
|
||||
!$omp end parallel
|
||||
allocate(vc(nmodes, NDIMS, 0:nt))
|
||||
n = get_dblocks()
|
||||
|
||||
allocate(vc(nmodes, NDIMS, n), stat=status)
|
||||
if (status /= 0) then
|
||||
call print_message(loc, &
|
||||
"Could not allocate memory for the Fourier coefficients!")
|
||||
go to 100
|
||||
end if
|
||||
|
||||
vc(:,:,:) = cmplx(0.0d+00, 0.0d+00, kind=8)
|
||||
|
||||
n = get_dblocks()
|
||||
!$omp parallel default(shared) private(pdata,nt)
|
||||
!$ nt = omp_get_thread_num()
|
||||
!$omp do
|
||||
!$omp parallel do default(shared) private(pdata)
|
||||
do m = 1, n
|
||||
pdata => data_blocks(m)%ptr
|
||||
|
||||
call get_vcoefs_block(pdata, vc(:,:,nt))
|
||||
call get_vcoefs_block(pdata, vc(:,:,m))
|
||||
end do
|
||||
!$omp end do
|
||||
!$omp end parallel
|
||||
!$omp end parallel do
|
||||
|
||||
vcoefs = sum(vc, 3)
|
||||
|
||||
deallocate(vc)
|
||||
deallocate(vc, stat=status)
|
||||
if (status /= 0) &
|
||||
call print_message(loc, &
|
||||
"Could not release memory of the Fourier coefficients!")
|
||||
|
||||
100 continue
|
||||
|
||||
#ifdef MPI
|
||||
call reduce_sum(vcoefs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user