Changes to how the io works for writing restart and merging
This commit is contained in:
parent
1a30968dca
commit
9038242b98
51
src/io.f90
51
src/io.f90
@ -373,7 +373,8 @@ module io
|
|||||||
!NOTE: This code doesn't work for arbitrary number of basis atoms per node. It assumes that the
|
!NOTE: This code doesn't work for arbitrary number of basis atoms per node. It assumes that the
|
||||||
!each element has only 1 atom type at the node.
|
!each element has only 1 atom type at the node.
|
||||||
character(len=100), intent(in) :: file
|
character(len=100), intent(in) :: file
|
||||||
integer :: interp_max, i, j, inod, ibasis, ip, unique_index(10), unique_num
|
integer :: interp_max, i, j, inod, ibasis, ip, unique_index(50), unique_size(50), unique_num, &
|
||||||
|
etype
|
||||||
real(kind=dp) :: box_vec(3)
|
real(kind=dp) :: box_vec(3)
|
||||||
|
|
||||||
1 format('time' / i16, f23.15)
|
1 format('time' / i16, f23.15)
|
||||||
@ -405,6 +406,22 @@ module io
|
|||||||
|
|
||||||
!Below writes the header information for the restart file
|
!Below writes the header information for the restart file
|
||||||
|
|
||||||
|
|
||||||
|
!First figure out all of the unique element types
|
||||||
|
unique_num = 0
|
||||||
|
unique_index(:) = 0
|
||||||
|
eleloop:do i = 1, ele_num
|
||||||
|
do j =1 , unique_num
|
||||||
|
if ( ( size_ele(i) == size_ele( unique_index(j) ) ).and. &
|
||||||
|
( lat_ele(i) == lat_ele(unique_index(j)) ) ) then
|
||||||
|
cycle eleloop
|
||||||
|
end if
|
||||||
|
end do
|
||||||
|
unique_num = unique_num + 1
|
||||||
|
unique_index(unique_num) = i
|
||||||
|
unique_size(unique_num) = size_ele(i)
|
||||||
|
end do eleloop
|
||||||
|
|
||||||
!Calculate the max number of atoms per element
|
!Calculate the max number of atoms per element
|
||||||
select case(max_ng_node)
|
select case(max_ng_node)
|
||||||
case(8)
|
case(8)
|
||||||
@ -415,7 +432,7 @@ module io
|
|||||||
write(11,20) interp_max
|
write(11,20) interp_max
|
||||||
write(11,3) node_num
|
write(11,3) node_num
|
||||||
write(11,19) max_ng_node
|
write(11,19) max_ng_node
|
||||||
write(11,4) lattice_types
|
write(11,4) unique_num
|
||||||
write(11,5) atom_num
|
write(11,5) atom_num
|
||||||
write(11,6) 1 !Grain_num is ignored
|
write(11,6) 1 !Grain_num is ignored
|
||||||
write(11,16) lattice_types, atom_types
|
write(11,16) lattice_types, atom_types
|
||||||
@ -454,26 +471,21 @@ module io
|
|||||||
!write the element information
|
!write the element information
|
||||||
if(ele_num > 0) then
|
if(ele_num > 0) then
|
||||||
write(11,12)
|
write(11,12)
|
||||||
!First figure out all of the unique element types
|
|
||||||
unique_num = 0
|
|
||||||
unique_index(:) = 0
|
|
||||||
eleloop:do i = 1, ele_num
|
|
||||||
do j =1 , unique_num
|
|
||||||
if ( ( size_ele(i) == size_ele( unique_index(j) ) ).and. &
|
|
||||||
( lat_ele(i) == lat_ele(unique_index(j)) ) ) then
|
|
||||||
cycle eleloop
|
|
||||||
end if
|
|
||||||
end do
|
|
||||||
unique_num = unique_num + 1
|
|
||||||
unique_index(unique_num) = i
|
|
||||||
end do eleloop
|
|
||||||
do i = 1, unique_num
|
do i = 1, unique_num
|
||||||
write(11,'(3i16)') i, size_ele(i)-1, basis_type(1,i)
|
write(11,'(3i16)') i, size_ele(unique_index(i))-1, basis_type(1,lat_ele(unique_index(i)))
|
||||||
end do
|
end do
|
||||||
ip = 0
|
ip = 0
|
||||||
write(11,13)
|
write(11,13)
|
||||||
do i = 1, ele_num
|
do i = 1, ele_num
|
||||||
write(11, '(4i16)') i, lat_ele(i), 1, basis_type(1,lat_ele(i))
|
!Figure out the ele type
|
||||||
|
do j = 1, unique_num
|
||||||
|
if ( unique_size(j) == size_ele(i)) then
|
||||||
|
etype = j
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
end do
|
||||||
|
write(11, '(4i16)') i, etype, 1, basis_type(1,lat_ele(i))
|
||||||
do inod = 1, ng_node(lat_ele(i))
|
do inod = 1, ng_node(lat_ele(i))
|
||||||
do ibasis = 1, basisnum(lat_ele(i))
|
do ibasis = 1, basisnum(lat_ele(i))
|
||||||
ip = ip + 1
|
ip = ip + 1
|
||||||
@ -633,15 +645,16 @@ module io
|
|||||||
|
|
||||||
print *, "displace", displace
|
print *, "displace", displace
|
||||||
do i = 1, 3
|
do i = 1, 3
|
||||||
if (displace(i) > lim_zero) then
|
if (abs(displace(i)) > lim_zero) then
|
||||||
newdisplace(i) = displace(i) - temp_box_bd(2*i-1)
|
newdisplace(i) = displace(i) - temp_box_bd(2*i-1)
|
||||||
else
|
else
|
||||||
newdisplace=displace(i)
|
newdisplace(i)=displace(i)
|
||||||
end if
|
end if
|
||||||
temp_box_bd(2*i-1) = temp_box_bd(2*i-1) + newdisplace(i)
|
temp_box_bd(2*i-1) = temp_box_bd(2*i-1) + newdisplace(i)
|
||||||
temp_box_bd(2*i) = temp_box_bd(2*i) + newdisplace(i)
|
temp_box_bd(2*i) = temp_box_bd(2*i) + newdisplace(i)
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
print *, "newdisplace", newdisplace
|
||||||
call grow_box(temp_box_bd)
|
call grow_box(temp_box_bd)
|
||||||
!Read in the number of sub_boxes and allocate the variables
|
!Read in the number of sub_boxes and allocate the variables
|
||||||
read(11, *) n
|
read(11, *) n
|
||||||
|
Loading…
x
Reference in New Issue
Block a user