eplf/src/aim.irp.f

46 lines
960 B
Fortran

program aim
implicit none
provide mpi_rank
integer :: isize
double precision, allocatable :: population(:), variance(:)
isize = int(maxval(grid_density_partition))
allocate ( population(0:isize) )
allocate ( variance(0:isize) )
integer :: i,j,k,l
do i=1,isize
population(i) = 0.d0
variance(i) = 0.d0
enddo
do i=1,grid_z_num
do j=1,grid_y_num
do k=1,grid_x_num
l = int(grid_density_partition(k,j,i))
population(l) += grid_density(k,j,i)
variance(l) += grid_density(k,j,i)*grid_density(k,j,i)
enddo
enddo
enddo
real :: factor
factor = grid_step(1)*grid_step(2)*grid_step(3)
do i=1,isize
variance(i) -= population(i)*population(i)
population(i) *= factor
variance(i) *= factor*factor
enddo
print *, 'Basin Population '
do i=0,isize
print *, i, population(i) !, abs(variance(i)), sqrt(abs(variance(i)))
enddo
print *, 'Total : ', sum(population)
deallocate (population, variance)
call finish()
end