mirror of https://gitlab.com/scemama/eplf
46 lines
960 B
Fortran
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
|
|
|