|
|
|
@ -204,7 +204,7 @@ module io
|
|
|
|
|
write(11, '(a)') 'Atoms'
|
|
|
|
|
write(11, '(a)') ' '
|
|
|
|
|
do i = 1, atom_num
|
|
|
|
|
write(11, '(2i16, 3f23.15)') i, type_atom(i), r_atom(:,i)
|
|
|
|
|
write(11, '(2i16, 3f23.15)') tag_atom(i), type_atom(i), r_atom(:,i)
|
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
!Write refined element atomic positions
|
|
|
|
@ -833,14 +833,16 @@ module io
|
|
|
|
|
real(kind = dp), dimension(6), intent(out) :: temp_box_bd
|
|
|
|
|
|
|
|
|
|
integer :: i, inod, ibasis, j, k, l, in_eles, in_atoms, ele_types, in_lat_num, in_atom_types, &
|
|
|
|
|
atom_type_map(100), etype_map(100), etype, lat_type, new_lattice_map(100), &
|
|
|
|
|
atom_type, stat
|
|
|
|
|
real(kind=dp) :: newdisplace(3), r_in(3,1,8), r_in_atom(3), atomic_masses(10)
|
|
|
|
|
character(len=100) :: textholder, in_lattype_map(10)
|
|
|
|
|
atom_type_map(100), etype_map(100), lat_type, new_lattice_map(100), &
|
|
|
|
|
atom_type, stat, bnum, nnum, esize, btypes(10), tmp, ip, jp
|
|
|
|
|
real(kind=dp) :: newdisplace(3), r_in(3,10,8), r_in_atom(3), atomic_masses(10)
|
|
|
|
|
character(len=100) :: textholder, etype
|
|
|
|
|
character(len=2) :: atomic_element
|
|
|
|
|
!First open the file
|
|
|
|
|
open(unit=11, file=trim(adjustl(file)), action='read',position='rewind')
|
|
|
|
|
|
|
|
|
|
etype = 'fcc'
|
|
|
|
|
|
|
|
|
|
!Read the timestep information
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
read(11,*) timestep, total_time
|
|
|
|
@ -866,7 +868,7 @@ module io
|
|
|
|
|
read(textholder, *) (atomic_masses(i), i=1, j)
|
|
|
|
|
|
|
|
|
|
!Read define atom_types by mass
|
|
|
|
|
do i = 1, in_atom_types
|
|
|
|
|
do i = 1, j
|
|
|
|
|
call atommassspecies(atomic_masses(i), atomic_element)
|
|
|
|
|
call add_atom_type(atomic_element, atom_type_map(i))
|
|
|
|
|
end do
|
|
|
|
@ -876,6 +878,7 @@ module io
|
|
|
|
|
read(11,*) box_bc
|
|
|
|
|
|
|
|
|
|
!Read box boundaries and displace them if necessary
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
read(11,*) temp_box_bd(:)
|
|
|
|
|
do i = 1, 3
|
|
|
|
|
if (abs(displace(i)) > lim_zero) then
|
|
|
|
@ -902,34 +905,39 @@ module io
|
|
|
|
|
sub_box_bd(:, sub_box_num+1) = temp_box_bd
|
|
|
|
|
|
|
|
|
|
!Read in more useless info
|
|
|
|
|
do i = 1, 9
|
|
|
|
|
do i = 1, 4
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
!Now start reading the elements
|
|
|
|
|
if(in_eles > 0) then
|
|
|
|
|
ip = 0
|
|
|
|
|
r_in(:,:,:) = 0
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
do i = 1, in_eles
|
|
|
|
|
read(11,*) j, etype, k, lat_type
|
|
|
|
|
read(11,*) j, bnum, tmp, esize
|
|
|
|
|
do inod = 1, 8
|
|
|
|
|
read(11, *) k, l, r_in(:,1,inod)
|
|
|
|
|
r_in(:,1,inod) = r_in(:,1,inod) + newdisplace
|
|
|
|
|
do ibasis = 1, bnum
|
|
|
|
|
read(11, *) k, l, btypes(l), r_in(:,l,k-ip)
|
|
|
|
|
r_in(:,l,k-ip) = r_in(:,l,k-ip) + newdisplace
|
|
|
|
|
end do
|
|
|
|
|
end do
|
|
|
|
|
call add_element(j, in_lattype_map(lat_type), etype_map(etype), new_lattice_map(lat_type), sub_box_num + 1, r_in)
|
|
|
|
|
ip = ip + 8
|
|
|
|
|
call lattice_map(bnum, btypes, 8, 1.0_dp, lat_type)
|
|
|
|
|
call add_element(j, etype, esize+1, lat_type, sub_box_num + 1, r_in(:,1:max_basisnum, 1:max_ng_node))
|
|
|
|
|
end do
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
if(in_atoms > 0) then
|
|
|
|
|
|
|
|
|
|
if (in_eles > 0) then
|
|
|
|
|
!Read useless data
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
end if
|
|
|
|
|
!Read useless data
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
read(11,*) textholder
|
|
|
|
|
|
|
|
|
|
do i = 1, in_atoms
|
|
|
|
|
read(11,*, iostat=stat) j, k, atom_type, r_in_atom(:)
|
|
|
|
|
read(11,*, iostat=stat) j, atom_type, r_in_atom(:)
|
|
|
|
|
if(stat > 0) then
|
|
|
|
|
print *, j
|
|
|
|
|
stop
|
|
|
|
|