MESH: Fix coverage and efficiency factors calculation.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit is contained in:
parent
de9316ccc2
commit
39e80d3e55
28
src/mesh.F90
28
src/mesh.F90
@ -258,7 +258,7 @@ module mesh
|
|||||||
!
|
!
|
||||||
use blocks , only : ndims, block_meta, list_meta
|
use blocks , only : ndims, block_meta, list_meta
|
||||||
use blocks , only : get_mblocks, get_nleafs
|
use blocks , only : get_mblocks, get_nleafs
|
||||||
use coordinates , only : ng, im, jm, km, toplev, effres
|
use coordinates , only : ng, nd, im, jm, km, toplev, effres
|
||||||
use mpitools , only : master, nprocs
|
use mpitools , only : master, nprocs
|
||||||
|
|
||||||
! local variables are not implicit by default
|
! local variables are not implicit by default
|
||||||
@ -272,7 +272,7 @@ module mesh
|
|||||||
|
|
||||||
! local variables
|
! local variables
|
||||||
!
|
!
|
||||||
integer(kind=4) :: l
|
integer(kind=4) :: l, n
|
||||||
real(kind=8) :: cv, ef
|
real(kind=8) :: cv, ef
|
||||||
|
|
||||||
! local pointers
|
! local pointers
|
||||||
@ -282,7 +282,8 @@ module mesh
|
|||||||
! local saved variables
|
! local saved variables
|
||||||
!
|
!
|
||||||
logical , save :: first = .true.
|
logical , save :: first = .true.
|
||||||
integer(kind=4), save :: nm = 0, nl = 0, nt = 0, nc = 0
|
integer(kind=4), save :: nm = 0, nl = 0
|
||||||
|
real(kind=8) , save :: fcv = 1.0d+00, fef = 1.0d+00
|
||||||
|
|
||||||
! local arrays
|
! local arrays
|
||||||
!
|
!
|
||||||
@ -311,6 +312,10 @@ module mesh
|
|||||||
!
|
!
|
||||||
if (first) then
|
if (first) then
|
||||||
|
|
||||||
|
! reset the maximum number of base blocks
|
||||||
|
!
|
||||||
|
n = 0
|
||||||
|
|
||||||
! set the pointer to the first block on the meta block list
|
! set the pointer to the first block on the meta block list
|
||||||
!
|
!
|
||||||
pmeta => list_meta
|
pmeta => list_meta
|
||||||
@ -321,7 +326,7 @@ module mesh
|
|||||||
|
|
||||||
! if the block is at the lowest level, count it
|
! if the block is at the lowest level, count it
|
||||||
!
|
!
|
||||||
if (pmeta%level == 1) nt = nt + 1
|
if (pmeta%level == 1) n = n + 1
|
||||||
|
|
||||||
! associate the pointer with the next block
|
! associate the pointer with the next block
|
||||||
!
|
!
|
||||||
@ -331,11 +336,16 @@ module mesh
|
|||||||
|
|
||||||
! calculate the maximum block number
|
! calculate the maximum block number
|
||||||
!
|
!
|
||||||
nt = nt * 2**(ndims*(toplev - 1))
|
n = n * 2**(ndims*(toplev - 1))
|
||||||
|
|
||||||
! calculate the number of cell in one block (including the ghost cells)
|
! prepare coverage and efficiency factors
|
||||||
!
|
!
|
||||||
nc = im * jm * km
|
fcv = 1.0d+00 / n
|
||||||
|
fef = 1.0d+00 * im / (effres(1) + nd)
|
||||||
|
fef = fef * jm / (effres(2) + nd)
|
||||||
|
#if NDIMS == 3
|
||||||
|
fef = fef * km / (effres(3) + nd)
|
||||||
|
#endif /* NDIMS == 3 */
|
||||||
|
|
||||||
! reset the first execution flag
|
! reset the first execution flag
|
||||||
!
|
!
|
||||||
@ -352,8 +362,8 @@ module mesh
|
|||||||
! block number) and the efficiency (the cells count for adaptive mesh
|
! block number) and the efficiency (the cells count for adaptive mesh
|
||||||
! divided by the cell count for corresponding uniform mesh)
|
! divided by the cell count for corresponding uniform mesh)
|
||||||
!
|
!
|
||||||
cv = (1.0d+00 * nl) / nt
|
cv = fcv * nl
|
||||||
ef = (1.0d+00 * nl) * nc / product(effres(1:ndims) + 2 * ng)
|
ef = fef * nl
|
||||||
|
|
||||||
! initialize the level and process block counter
|
! initialize the level and process block counter
|
||||||
!
|
!
|
||||||
|
Loading…
x
Reference in New Issue
Block a user