294 shell_distances)
result(r_densities)
296 integer(array_int),
dimension(:,:,:,:) :: configuration
297 real(
real64),
dimension(:),
allocatable :: shell_distances
298 real(
real64),
dimension(setup%n_species,setup%n_species, &
n_shells) :: r_densities
299 integer,
intent(in) :: n_shells
300 integer :: i_1,i_2,i_3,j_1,j_2,j_3,j_b,jj_1,jj_2,jj_3, &
301 l, species_i, species_j, i,j, i_b
302 integer :: loop_1, loop_2, loop_3
303 integer,
dimension(setup%n_species) :: particle_counts
304 real(
real64) :: distance, d_x, d_y, d_z
312 r_densities = 0.0_real64
315 do i_3=1, setup%n_3*2
316 do i_2=1, setup%n_2*2
317 do i_1=1, setup%n_1*2
318 do i_b=1, setup%n_basis
319 do l=1, setup%n_species
320 if (configuration(i_b, i_1, i_2, i_3) .eq. &
322 particle_counts(l) = particle_counts(l) + 1
331 do l=1, setup%n_species
332 if (particle_counts(l) .eq. 0)
then
333 print*,
'Warning, one or more particle counts are zero in radial_densities()'
338 loop_1 = min(setup%n_1, 5)
339 loop_2 = min(setup%n_2, 5)
340 loop_3 = min(setup%n_3, 5)
343 do i_3=1, 2*setup%n_3
344 do i_2=1, 2*setup%n_2
345 do i_1=1, 2*setup%n_1
346 do i_b=1, setup%n_basis
348 if (configuration(i_b, i_1, i_2, i_3) .eq. 0_array_int) cycle
351 do jj_3=i_3-loop_3, i_3+loop_3, 1
352 j_3 = modulo(jj_3-1, 2*setup%n_3) + 1
353 do jj_2=i_2-loop_2, i_2+loop_2, 1
354 j_2 = modulo(jj_2-1, 2*setup%n_2) + 1
355 do jj_1=i_1-loop_1, i_1+loop_1, 1
356 j_1 = modulo(jj_1-1, 2*setup%n_1) + 1
357 do j_b=1, setup%n_basis
358 if (configuration(j_b, j_1, j_2, j_3) .eq. 0_array_int) cycle
365 d_x = d_x - float(2*setup%n_1)* &
366 nint(d_x/float(2*setup%n_1))
367 d_y = d_y - float(2*setup%n_2)* &
368 nint(d_y/float(2*setup%n_2))
369 d_z = d_z - float(2*setup%n_3)* &
370 nint(d_z/float(2*setup%n_3))
372 distance = sqrt(d_x**2 + d_y**2 + d_z**2)
376 if (abs(distance - shell_distances(l)) &
377 .lt. 1e-3_real64)
then
380 species_i = configuration(i_b,i_1, i_2, i_3)
381 species_j = configuration(j_b,j_1, j_2, j_3)
382 r_densities(species_i, species_j, l) = &
383 r_densities(species_i, species_j, l) + 1.0_real64
398 do j=1, setup%n_species
399 r_densities(j,:,i) = r_densities(j,:,i)/particle_counts(j)
real(real64) function, dimension(setup%n_species, setup%n_species, n_shells), public radial_densities(setup, configuration, n_shells, shell_distances)
Subroutine to compute radial densities (ASRO parameters)