Compute how much of the domain is covered by each grid level. This routine does not take a non-Cartesian geometry into account.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(out) | :: | vol_cov(1:refine_max_level) |
subroutine get_volume_coverage(vol_cov) use mod_global_parameters double precision, intent(out) :: vol_cov(1:refine_max_level) double precision :: dsum_recv(1:refine_max_level) integer :: iigrid, igrid, iw, level ! First determine the total 'flat' volume in each level vol_cov(1:refine_max_level)=zero do iigrid = 1, igridstail igrid = igrids(iigrid); level = node(plevel_,igrid) vol_cov(level) = vol_cov(level)+ (rnode(rpxmax1_,igrid)-rnode(rpxmin1_,& igrid))*(rnode(rpxmax2_,igrid)-rnode(rpxmin2_,& igrid))*(rnode(rpxmax3_,igrid)-rnode(rpxmin3_,igrid)) end do ! Make the information available on all tasks call MPI_ALLREDUCE(vol_cov, dsum_recv, refine_max_level,& MPI_DOUBLE_PRECISION, MPI_SUM, icomm, ierrmpi) ! Normalize vol_cov = dsum_recv / sum(dsum_recv) end subroutine get_volume_coverage