[Fortran] 纯文本查看 复制代码
program readdata
implicit none
character(len=15)::str
real*8,allocatable::time(:),kinet(:),inter(:),temp(:),dipole(:), &
totenergy(:),poten(:),k(:),pressure(:),rd(:),density(:)
integer::ierr,count,i,j
open(10,file='mdstat.txt',status='old')
open(11,file='mdstat.tem',status='unknown')
count=1
do
read(10,"(a15)",iostat=ierr) str
if(ierr/=0) exit
if (str=='Simulation Time') then
count=count+1
end if
end do
allocate(time(count))
allocate(kinet(count))
allocate(inter(count))
allocate(temp(count))
allocate(dipole(count))
allocate(totenergy(count))
allocate(poten(count))
allocate(pressure(count))
allocate(density(count))
allocate(k(count))
allocate(rd(count))
rewind(10)
do i=1,count
do j=1,3
read(10,*)
end do
read(10,200) time(i)
read(10,200) totenergy(i)
read(10,200) poten(i)
read(10,200) kinet(i)
read(10,200) inter(i)
read(10,200) temp(i)
read(10,200) pressure(i)
read(10,200) density(i)
read(10,200) dipole(i)
! if(dipole(i).gt.32.0)then
! dipole(i)=dipole(i)-4.0
! endif
! if(dipole(i).lt.16.0)then
! dipole(i)=dipole(i)+4.0
! endif
end do
200 format(22x,f14.4)
do i=1,count
write(11,"(3x,9f14.4)") time(i),totenergy(i),poten(i),kinet(i),&
inter(i), temp(i),pressure(i),density(i),dipole(i)
end do
end program readdata