±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 4085  |  »Ø¸´: 59
±¾Ìû²úÉú 3 ¸ö ³ÌÐòÇ¿Ìû £¬µã»÷ÕâÀï½øÐв鿴
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

Gina88

ľ³æ (ÕýʽдÊÖ)

[ÇóÖú] дÁËÒ»¸öfortran90µÄС³ÌÐò£¬±àÒëͨ²»¹ý£¬Çë´óÏÀ°ïæ

program cell-POSCAR

!announcement begin***********************************
implicit none
real(8)::cellcon(3,3)       !lattice constance
real(8),allocatable::atomcoor(:,  !direct coordinate of atoms
integer,allocatable::type(
integer i,j,k,m,n           !m:atom number,n:type number
character(len=1) nonsense    !to contain something that will not be used
character(len=2) position   !to read %
character(len=2) element1,element2  
!End announcement************************************

!Begin reading data from "cell"****************************
open(unit=18,file="cell",status="old"
read(18,*)nonsense
do i=1,3  
  read(18,*)cellcon(i,1),cellcon(i,2),cellcon(i,3)
end do
read(18,*)position
read(18,*)nonsense
read(18,*)nonsense
n=0;m=0
read(18,*)element2
do while(position/=element2)
  n=n+1
  element1=element2
  do while(element1==element2)
    m=m+1
    read(18,*)element2
  end do
end do
close(18)

allocate(type(n))
allocate(atomcoor(m,3))

open(unit=28,file="cell",status="old"
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)element2,atomcoor(1,1),atomcoor(1,2),atomcoor(1,3)
i=1;k=1
element1=element2
if (m==1) then
  type(1)=1
else if
  do j=2,m
    read(28,*)element2,atomcoor(j,1),atomcoor(j,2),atomcoor(j,3)
    if(element1==element2) then
      k=k+1
      if(m==j) type(i)=k
    else if
      type(i)=k
      i=i+1
      element1=element2
      k=1
      if(m==j) type(i)=k
    end if   
  end do
end if
close(28)
!End reading data from "cell"****************************

!Begin writing to "POSCAR"******************************
open(unit=38,file="POSCAR",status="replace"
write(38,10)System
write(38,100)cellcon(1,1)
do i=1,3
  write(38,200)(cellcon(i,j)/cellcon(1,1),j=1,3)
end do
write(38,60)(type(i),i=1,n)
write(38,20)Selective,dynamic
write(38,30)Direct
do i=1,m
  write(38,300)(atomcoor(i,j),j=1,3)
end do
10 FORMAT(1X,A6)
20 FORMAT(1X,A9,1X,A7)
30 FORMAT(1X,A6)
60 FORMAT(1X,n(I3,2X))
100 FORMAT(1X,F18.16)
200 FORMAT(1X,3(F18.16,3X))
300 FORMAT(1X,F18.16,2X,F18.16,2X,F18.16,2X,'T',2X,'T',2X,'T')
close(38)
!End writing to "POSCAR"********************************

end
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

snoopyzhao

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï ¡ï ¡ï
ÓàÔó³É(½ð±Ò+3): ÐÁ¿àÁË£¡ 2011-05-19 19:21:37
ÒýÓûØÌû:
Originally posted by Gina88 at 2011-05-08 17:54:09:
¸½¼þÊÇÎÒÉÏ´«µÄCHGCAR£¬Äú¿ÉÒÔ½«Ëü¸´ÖÆÒ»Ï£¬Ò»·ÝÃüÃûΪCHGCAR1£¬ÁíÒ»·ÝÃüÃûΪCHGCAR2

Ä㻹ÊÇûÓиøÈ«£¬ºÇºÇ£¬²»¹ý²»Òª½ô£¬ÄãµÄÎÊÌâÔÚÓÚelement²»ÄÜÄÇô¶Á, read(12,*) ÕâÖÖÖ»¶ÔÊý×ÖÓÐÓã¬ËùÒÔ£¬¹ØÓÚ×Ö·û´®£¬Ö»ÄÜÈ˹¤½âÎö¡£

ÏÂÃæÊÇÒ»¸öʵÏÖ£¬ÎÒûÓÐÔÚÄãµÄÄǸö³ÌÐòÉϸģ¬Äã×Ô¼º¿´¿´Äܲ»ÄÜÀí½â¡­¡­
CODE:
program test
implicit none
integer :: i, k
integer :: line_len ! length of element line without leading and tailing space.
integer :: atomsum
character(len=80) :: line
character(len=2), dimension(:), allocatable :: element
integer, dimension(:), allocatable :: atomnum

open(unit=12, file = 'CHGCAR')

do i=1,5
read(12,*)
end do

read(12,'(a)') line
line = adjustl(line)
line_len = len_trim(line)

atomsum=1
do i=1,line_len
   if(line(i:i) == ' ' .and. line(i:i+1) /= ' ') atomsum=atomsum+1
end do

write(*,*) atomsum

allocate(element(atomsum))
allocate(atomnum(atomsum))

k = 1
do i=1,line_len
   if(line(i:i) /= ' ' .and. line(i:i+1) == ' ') then
       element(k) = line(i:i)
       k = k + 1
    end if
   if(line(i:i) /= ' ' .and. line(i:i+1) /= ' ') then
       element(k) = line(i:i+1)
       line(i+1:i+1) = ' '
       k = k + 1
    end if
end do


read(12, *) (atomnum(i), i=1,atomsum)

write(*, *) (atomnum(i), i=1,atomsum)
write(*, '(a5)') (element(i), i=1,atomsum)

end program test

34Â¥2011-05-08 19:31:46
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 60 ¸ö»Ø´ð

Gina88

ľ³æ (ÕýʽдÊÖ)

Õâ¸öÊÇcellµÄÄÚÈÝ
%BLOCK LATTICE_CART
      12.782529349912258      -0.000000000000028       0.000000000000001
      -0.000000000000000      13.529995000000000       0.000000000000001
       0.000000000000000       0.000000000000000      10.000000000000000
%ENDBLOCK LATTICE_CART

%BLOCK POSITIONS_FRAC
  H   0.0555000007152556   0.1666999995708470   0.5000000000000000
  H   0.2221666673819220   0.0666999995708464   0.5000000000000000
  H   0.1110555562708110   0.0666999995708466   0.5000000000000000
  H   0.1110555562708110   0.0666999995708466   0.5000000000000000
  C   0.2777222229374780   0.1666999995708470   0.5000000000000000
  C   0.3888333340485890   0.1666999995708470   0.5000000000000000
  C   0.5555000007152560   0.0666999995708465   0.5000000000000000
  S   0.4443888896041450   0.0666999995708466   0.5000000000000000
  S   0.6110555562708110   0.1666999995708470   0.5000000000000000
  si   0.6110555562708110   0.1666999995708470   0.5000000000000000
%ENDBLOCK POSITIONS_FRAC
2Â¥2011-05-04 17:52:59
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Gina88

ľ³æ (ÕýʽдÊÖ)

ÄǸöЦÁ³£º£©ÊÇ
ðºÅ+ÓÒÀ¨ºÅ

ÄǸöºìÁ³¡±£©ÊÇ
ÓÒÀ¨ºÅ
3Â¥2011-05-04 17:56:30
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Gina88

ľ³æ (ÕýʽдÊÖ)

program cell-POSCAR

!announcement begin***********************************
implicit none
real(8)::cellcon(3,3)       !lattice constance
real(8),allocatable::atomcoor(:,  !direct coordinate of atoms
integer,allocatable::type(
integer i,j,k,m,n           !m:atom number,n:type number
character(len=1) nonsense    !to contain something that will not be used
character(len=2) position   !to read %
character(len=2) element1,element2  
!End announcement************************************

!Begin reading data from "cell"****************************
open(unit=18,file="cell",status="old"
read(18,*)nonsense
do i=1,3  
  read(18,*)cellcon(i,1),cellcon(i,2),cellcon(i,3)
end do
read(18,*)position
read(18,*)nonsense
read(18,*)nonsense
n=0;m=0
read(18,*)element2
do while(position/=element2)
  n=n+1
  element1=element2
  do while(element1==element2)
    m=m+1
    read(18,*)element2
  end do
end do
close(18)

allocate(type(n))
allocate(atomcoor(m,3))

open(unit=28,file="cell",status="old"
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)nonsense
read(28,*)element2,atomcoor(1,1),atomcoor(1,2),atomcoor(1,3)
i=1;k=1
element1=element2
if (m==1) then
  type(1)=1
else if
  do j=2,m
    read(28,*)element2,atomcoor(j,1),atomcoor(j,2),atomcoor(j,3)
    if(element1==element2) then
      k=k+1
      if(m==j) type(i)=k
    else if
      type(i)=k
      i=i+1
      element1=element2
      k=1
      if(m==j) type(i)=k
    end if   
  end do
end if
close(28)
!End reading data from "cell"****************************

!Begin writing to "POSCAR"******************************
open(unit=38,file="POSCAR",status="replace"
write(38,10)System
write(38,100)cellcon(1,1)
do i=1,3
  write(38,200)(cellcon(i,j)/cellcon(1,1),j=1,3)
end do
write(38,60)(type(i),i=1,n)
write(38,20)Selective,dynamic
write(38,30)Direct
do i=1,m
  write(38,300)(atomcoor(i,j),j=1,3)
end do
10 FORMAT(1X,A6)
20 FORMAT(1X,A9,1X,A7)
30 FORMAT(1X,A6)
60 FORMAT(1X,n(I3,2X))
100 FORMAT(1X,F18.16)
200 FORMAT(1X,3(F18.16,3X))
300 FORMAT(1X,F18.16,2X,F18.16,2X,F18.16,2X,'T',2X,'T',2X,'T')
close(38)
!End writing to "POSCAR"********************************

end
4Â¥2011-05-04 17:58:28
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 0703 »¯Ñ§ Çóµ÷¼Á£¬Ò»Ö¾Ô¸É½¶«´óѧ 342 ·Ö +3 Shern¡ª- 2026-03-28 3/150 2026-03-28 21:24 by ÌÆãå¶ù
[¿¼ÑÐ] Ò»Ö¾Ô¸±±»¯085600²ÄÁÏר˶275|ÓÐÎÄÕÂרÀû£üÇóµ÷¼Á +7 Micky11223 2026-03-25 7/350 2026-03-28 18:34 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 0703»¯Ñ§ +10 ÄÝÄÝninicgb 2026-03-27 10/500 2026-03-28 14:07 by ßÕßÕßÕßÉßÉßÉ
[¿¼ÑÐ] 0856Çóµ÷¼Á +11 zhn03 2026-03-25 12/600 2026-03-28 13:32 by ÌÆãå¶ù
[¿¼ÑÐ] 292Çóµ÷¼Á +14 ¶ì¶ì¶ì¶î¶î¶î¶î¶ 2026-03-25 15/750 2026-03-28 08:45 by WYUMater
[¿¼ÑÐ] ²ÄÁÏÇóµ÷¼Á Ò»Ö¾Ô¸¹þ¹¤´ó×Ü·Ö298·Ö£¬Ç°Èý¿Æ223·Ö +5 dongfang59 2026-03-27 5/250 2026-03-28 04:53 by wxiongid
[¿¼ÑÐ] 328Çóµ÷¼Á +7 àŵεĻù±¾¶¼ 2026-03-27 7/350 2026-03-28 04:19 by fmesaito
[¿¼ÑÐ] 085701»·¾³¹¤³ÌÇóµ÷¼Á +9 ¶à¾ÃÉϿΠ2026-03-27 9/450 2026-03-28 03:58 by fmesaito
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤085600£¬×Ü·Ö304£¬±¾¿ÆÓÐÁ½Æªsci²ÎÓ룬Çóµ÷¼Á +10 ÐÒÔ˵Ľ´½´ 2026-03-22 12/600 2026-03-27 16:08 by muchong357
[¿¼²©] 26É격 +3 ¼ÓÓͳ尡£¡ 2026-03-26 3/150 2026-03-27 15:38 by cls512
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤µ÷¼Á +10 A-¶ßÀ²ZÃÎ 2026-03-23 16/800 2026-03-27 15:13 by caszguilin
[¿¼ÑÐ] 085601 ²ÄÁϹ¤³Ì 313·Ö Çóµ÷¼Á +5 Ong3 2026-03-27 5/250 2026-03-27 12:24 by goldfish51
[¿¼ÑÐ] 303Çóµ÷¼Á +7 °²ÒäÁé 2026-03-22 8/400 2026-03-27 11:46 by sanrepian
[ÂÛÎÄͶ¸å] Journal of Mechanical Science and Technology +3 Russ_ss 2026-03-25 5/250 2026-03-27 10:49 by ½С¹û»­´ó±ý
[¿¼ÑÐ] µ÷¼ÁÇóÊÕÁô +7 ¹ûÈ»ÓÐÎÒ 2026-03-26 7/350 2026-03-27 00:26 by wxiongid
[¿¼ÑÐ] ²ÄÁϵ÷¼Á 5+4 ÏëÒªÒ»ºøÌÒ»¨Ë® 2026-03-25 10/500 2026-03-26 19:56 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] ×Ü·Ö322ÇóÉúÎïѧ/Éú»¯Óë·Ö×Ó/ÉúÎïÐÅϢѧÏà¹Øµ÷¼Á +5 ÐdzÁuu 2026-03-26 6/300 2026-03-26 19:02 by macy2011
[¿¼ÑÐ] »úеѧ˶310·Ö£¬ÊýÒ»Ó¢Ò»£¬Ò»Ö¾Ô¸211±¾¿ÆË«·ÇÕÒµ÷¼ÁÐÅÏ¢ +3 @357 2026-03-25 3/150 2026-03-26 16:34 by by.MENG
[¿¼ÑÐ] 085600 ²ÄÁÏÓ뻯¹¤ 329·ÖÇóµ÷¼Á +9 Mr. Z 2026-03-25 9/450 2026-03-26 10:36 by baoball
[¿¼ÑÐ] һ־Ըɽ¶«´óѧҩѧѧ˶Çóµ÷¼Á +3 ¿ª¿ªÐÄÐÄû·³ÄÕ 2026-03-23 4/200 2026-03-24 00:06 by ¿ª¿ªÐÄÐÄû·³ÄÕ
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û