Newer
Older
!------------------------------------------------------------------------------|
!------------------------------------------------------------------------------|
! |
! ||===\\ |
! || \\ |
! || || //==\\ || || //==|| ||/==\\ |
! || || || || || || || || || || |
! || // || || || || || || || |
! ||===// \\==// \\==\\ \\==\\ || |
! |
!------------------------------------------------------------------------------|
!------------------------------------------------------------------------------|
! |
! FIND MAT NUMBERS FROM CLOUD OCT. 2012 |
! |
!------------------------------------------------------------------------------|
!------------------------------------------------------------------------------|
subroutine find_mat_numbers_from_cloud(params,cl,osolve,cloud_elem_mat_bins)
use definitions
!------------------------------------------------------------------------------|
!(((((((((((((((( Purpose of the routine ))))))))))))))))))))))))))))))))))))))
!------------------------------------------------------------------------------|
! This routine loops over all of the cloud particles and fills an array of |
! size nelem x nmat with the material numbers for the cloud particles within |
! each element |
!------------------------------------------------------------------------------|
!(((((((((((((((( declaration of the subroutine arguments ))))))))))))))))))))
!------------------------------------------------------------------------------|
implicit none
type (parameters) params
type (octreesolve) osolve
type (cloud) cl
integer :: cloud_elem_mat_bins(osolve%nleaves,0:params%nmat)
!------------------------------------------------------------------------------|
!(((((((((((((((( declaration of the subroutine internal variables )))))))))))))
!------------------------------------------------------------------------------|
double precision :: x0,y0,z0,dxyz
integer :: i,iproc,nproc,ierr,leaf,level,locc,cl_matnum
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
call mpi_comm_size (mpi_comm_world,nproc,ierr)
call mpi_comm_rank (mpi_comm_world,iproc,ierr)
! Initialize cloud material bins array
cloud_elem_mat_bins=0
! Loop over all cloud particles, find associated element and store mat num
do i = 1,cl%np
call octree_find_leaf (osolve%octree,osolve%noctree,cl%x(i),cl%y(i),cl%z(i), &
leaf,level,locc,x0,y0,z0,dxyz)
cl_matnum = cl%matnum(i)
cloud_elem_mat_bins(leaf,cl_matnum)=cloud_elem_mat_bins(leaf,cl_matnum)+1
osolve%matnump(leaf) = cl%ematnump(i)
enddo
end subroutine find_mat_numbers_from_cloud
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------