40 subroutine xyz_writer(filename, configuration, setup, trajectory)
46 integer(array_int),
dimension(:,:,:,:),
intent(in) :: configuration
49 logical,
optional :: trajectory
52 integer,
dimension(4) :: grid_sizes
55 character(len=*),
intent(in) :: filename
57 integer :: n_particles, i, j, k, l
59 real(real64),
dimension(3) :: pos
63 grid_sizes = shape(configuration)
66 if (
present(trajectory))
then
69 inquire(file=filename, exist=exist)
71 open(7, file=filename, status=
"old", position=
"append", action=
"write")
73 open(7, file=filename, status=
"new", action=
"write")
79 open(unit=7, file=filename)
83 write(7, *) n_particles
85 write(7,*)
'Lattice="',setup%lattice_parameter*setup%n_1, 0.0, 0.0 , &
86 & 0.0, setup%lattice_parameter*setup%n_2, 0.0 , &
87 & 0.0, 0.0, setup%lattice_parameter*setup%n_3,
'"'
100 do j=1, grid_sizes(2)
101 do k=1, grid_sizes(3)
102 do l=1, grid_sizes(4)
103 if (configuration(i,j,k,l) .eq. 0) cycle
104 pos = real(j-1)*setup%lattice_vectors(1,:) + &
105 real(k-1)*setup%lattice_vectors(2,:) + &
106 real(l-1)*setup%lattice_vectors(3,:) + &
107 real(i)*setup%basis_vectors
108 pos = pos*setup%lattice_parameter
109 write(7,*) setup%species_names(configuration(i,j,k,l)), pos(1),pos(2),pos(3)