24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3300  |  回复: 9
【悬赏金币】回答本帖问题,作者量子海洋将赠送您 50 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

量子海洋

新虫 (小有名气)

[求助] R.I.N.G.S. code运行报错

用VASP跑完AIMD后,想用RINGS(https://rings-code.sourceforge.net/)处理下数据,按照官网的example写好输入input(重命名为my-input)和options文件,也吧XDATCAR放在了data文件夹里,在终端中运行 rings my-input 出现报错“At line 230 of file input.f90 (unit = 10, file = 'options')
Fortran runtime error: Bad logical value while reading item 2”,不知道问题出在哪里,怎么解决?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

我是Alun

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by 量子海洋 at 2021-07-30 10:10:52
好的,谢谢你。...

您好,我运行时候报错 Number of species in step  1 has changed, see input file line 3
请问您有遇到这种情况吗?该如何解决?
7楼2021-12-30 15:11:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

量子海洋

新虫 (小有名气)

2楼2021-07-28 11:45:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

get-it

新虫 (小有名气)

At line 230 of file input.f90 (unit = 10, file = 'options')
它叫你检查options 230行
3楼2021-07-28 16:43:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

量子海洋

新虫 (小有名气)

引用回帖:
3楼: Originally posted by get-it at 2021-07-28 16:43:58
At line 230 of file input.f90 (unit = 10, file = 'options')
它叫你检查options 230行

options文件没有230行,是input.f90文件的第230行,但是我不知道是什么问题,以下是input.f90文件。

! Copyright

! The University Montpellier 2, a scientific, cultural and professional
! public establishment whose registered office is at
! Place Eugène Bataillon - 34095 Montpellier CEDEX 05 - France.
! N° SIREN 193 410 883, APE Code 803Z
! represented by its President, Danièle HERIN.

! Authors : Dr. Sébastien Le Roux (sebastien.leroux@ipcms.unistra.fr)
!           Pr. Philippe Jund (pjund@univ-montp2.fr)

! This software is a computer program whose purpose is to analyse
! the results of molecular dynamics simulations.
! This code is named R.I.N.G.S “Rigorous Investigation of Networks
! Generated using Simulations” and its main feature is the analysis of
! the connectivity using ring statistics.

! This software is governed by the CeCILL-B license under French law and
! abiding by the rules of distribution of free software.
! You can  use, modify and/ or redistribute the software under the terms
! of the [CeCILL|CeCILL-B|CeCILL-C] license as circulated by CEA, CNRS
! and INRIA at the following URL:
! "https://www.cecill.info".

! As a counterpart to the access to the source code and  rights to copy,
! modify and redistribute granted by the license, users are provided only
! with a limited warranty  and the software's author, the holder of the
! economic rights,  and the successive licensors have only limited
! liability.

! In this respect, the user's attention is drawn to the risks associated
! with loading,  using,  modifying and/or developing or reproducing the
! software by the user in light of its specific status of free software,
! that may mean  that it is complicated to manipulate,  and  that  also
! therefore means  that it is reserved for developers  and  experienced
! professionals having in-depth computer knowledge. Users are therefore
! encouraged to load and test the software's suitability as regards their
! requirements in conditions enabling the security of their systems and/or
! data to be ensured and,  more generally, to use and operate it in the
! same conditions as regards security.

! The fact that you are presently reading this means that you have had
! knowledge of the CeCILL-B license and that you accept its terms.

SUBROUTINE READ_INPUT

!
! Read the user input file and the 'options' file
!

USE PARAMETERS
USE EXTRA

LOGICAL :: CALC_R=.false.

open (unit=9, file=NOM_FILE, action='read', status='old')

  read (9, *)
  read (9, *)
  read (9, *)
  read (9, *) SYSTLABEL
  if (DEBUGINP) write (6, *) SYSTLABEL
  read (9, *) NA
  if (DEBUGINP) write (6, *) NA
  read (9, *) NSP
  if (DEBUGINP) write (6, *) NSP
!allocate (S_LENGTH(NSP), STAT=ERR)
!if (ERR .ne. 0) then
!   write (6, 001) t_p, "S_LENGTH"
!  STOP
!endif
allocate (LABEL(NSP), STAT=ERR)
if (ERR .ne. 0) then
   write (6, 001) t_p, "LABEL"
  STOP
endif
!allocate (M_SS(NSP), STAT=ERR)
!if (ERR .ne. 0) then
!   write (6, 001) t_p, "M_SS"
!endif
!allocate (R_DW(NSP), STAT=ERR)
!if (ERR .ne. 0) then
!   write (6, 001) t_p, "R_DW"
!endif

  do i=1, NSP
    LABEL(i)=""
  enddo
!    S_LENGTH(i)=0.0d0
!    M_SS(i)=0.0d0
!    R_DW(i)=0.0d0
  read (9, *) LABEL!, S_LENGTH(i), M_SS(i), R_DW(i)
  if (DEBUGINP) then
    do i=1, NSP
      write (6, *) LABEL(i)!, S_LENGTH(i), M_SS(i), R_DW(i)
    enddo
  endif
  read (9, *) NS
  if (DEBUGINP) write (6, *) NS
  do i=1,3
  do j=1, 3
    lvect(i,j)=0.0d0
  enddo
  enddo
  read (9, *) LATTYPE
  if (LATTYPE .eq. 1) then
    read (9, *) lvect(1,1), lvect(1,2), lvect(1,3)
    if (DEBUGINP) write (6, *) lvect(1,1), lvect(1,2), lvect(1,3)
    read (9, *) lvect(2,1), lvect(2,2), lvect(2,3)
    if (DEBUGINP) write (6, *) lvect(2,1), lvect(2,2), lvect(2,3)
    read (9, *) lvect(3,1), lvect(3,2), lvect(3,3)
    if (DEBUGINP) write (6, *) lvect(3,1), lvect(3,2), lvect(3,3)
  else
    read (9, *) modv(1), modv(2), modv(3)
    if (DEBUGINP) write (6, *) modv(1), modv(2), modv(3)
    ALPHA=0.0d0
    BETA=0.0d0
    GAMA=0.0d0
    read (9, *) ALPHA, BETA, GAMA
    if (DEBUGINP) write (6, *) ALPHA, BETA, GAMA
  endif
  DELTA_T=0.0d0
  read (9, *) DELTA_T
  if (DEBUGINP) write (6, *) DELTA_T
  read (9, *) DATA_FORM
  if (DEBUGINP) write (6, *) DATA_FORM
  if (DATA_FORM .eq. "MSF") then
    read (9, 106) MSF_ROOT
    if (DEBUGINP) write (6, 106) MSF_ROOT
    read (9, *) FIRST_INDEX
    if (DEBUGINP) write (6, *) FIRST_INDEX
    read (9, *) LAST_INDEX
    if (DEBUGINP) write (6, *) LAST_INDEX
    read (9, *) NSBG
    if (NSBG .eq. 0) NSBG=1
    if (DEBUGINP) write (6, *) NSBG
  else
    read (9, *) NOM_FILE
    if (DEBUGINP) write (6, *) NOM_FILE
    if (DATA_FORM.eq."VAS" .or. DATA_FORM.eq."TRJ") then
      allocate (NBSPBS(NSP), STAT=ERR)
      if (ERR .ne. 0) then
        write (6, 001) t_p, "NBSPBS"
        STOP
      endif
      do i=1, NSP
        read (9, *) LABEL(i), NBSPBS(i)
        if (DEBUGINP) write (6, *) LABEL(i), NBSPBS(i)
      enddo
    else if (DATA_FORM.eq."PDB" .and. NS.gt.1) then
      write (6, '("Error: for PDB files the number of steps, NS, must be 1")')
      STOP
    endif
  endif
  read (9, *) NUMBER_OF_DELTA_R
  NUMBER_OF_DELTA_R=2*NUMBER_OF_DELTA_R
  if (DEBUGINP) write (6, *) NUMBER_OF_DELTA_R
  read (9, *) NUMBER_OF_Q_POINTS
  if (DEBUGINP) write (6, *) NUMBER_OF_Q_POINTS
  QMAX=0.0d0
  read (9, *) QMAX
  if (DEBUGINP) write (6, *) QMAX
  SIGMA_LISS=0.0d0
  read (9, *) SIGMA_LISS
  if (DEBUGINP) write (6, *) SIGMA_LISS
  read (9, *) NUMBER_OF_DELTA_ANG
  if (DEBUGINP) write (6, *) NUMBER_OF_DELTA_ANG
  read (9, *) NDV
  if (DEBUGINP) write (6, *) NDV
  read (9, *) TAILLE_REF
  TAILLD=2*TAILLE_REF
  if (TAILLD .lt. 3) then
    write (6, '(" Changing option =>  Max. ring size must be >= 3")')
    TAILLD=4
    TAILLE_REF=2
  endif
  if (DEBUGINP) write (6, *) TAILLE_REF
  read (9, *) TAILLC
  if (TAILLC .lt. 2) then
    write (6, '(" Changing option =>  Max. chain length must be >= 2")')
    TAILLC=2
  endif
  if (DEBUGINP) write (6, *) TAILLC

  read (9, *)
  NL=NSP*(NSP+1)/2
  allocate (GCUT(NSP,NSP), STAT=ERR)
  if (ERR .ne. 0) then
     write (6, 001) t_p, "GCUT"
    STOP
  endif

  do i=1, NL

    read (9, *) A1, A2, DC
    if (DEBUGINP) write (6, *) A1, " ", A2, DC
    j=1
    do while (LABEL(j) .ne. A1)

      j=j+1

    enddo
    l=1
    do while (LABEL(l) .ne. A2)

      l=l+1

    enddo

    GCUT(j,l)=0.0d0
    GCUT(l,j)=0.0d0
    GCUT(j,l)=DC
    GCUT(l,j)=DC

  enddo

  Gr_cutoff=0.0d0
  read (9, *) ATOT, Gr_cutoff
  if (DEBUGINP) write (6, *) ATOT, Gr_cutoff

close (9)

! Now read 'options' file

  open (unit=10, file="options", action="read", status='old')
  if(t_p .eq. 0) write (6, '(/,"==========      Options      ==========",/)')
  read (10, *)
  read (10, *)
  read (10, *)
  read (10, *) Nom1, PBC
  if (PBC) then
    if(t_p .eq. 0) write (6, '("  =>  Periodic Boundary Conditions applied")')
  else
    if(t_p .eq. 0) write (6, '("  =>  No Periodic Boundary Conditions applied")')
  endif
  read (10, *) Nom1, FRAC
  if (FRAC) then
    if(t_p .eq. 0) write (6, '("  =>  Atomic positions in fractional coordinates")')
  else
    if(t_p .eq. 0) write (6, '("  =>  Atomic positions in real coordinates")')
  endif
  read (10, *) Nom1, CALC_GR
  if(t_p .eq. 0) then
    if (CALC_GR) write (6, '("  =>  Calculate g(r) radial distribution functions")')
  endif
  read (10, *) Nom1, CALC_SQ
  if (CALC_SQ .and. .not.(CALC_GR)) then
    if(t_p .eq. 0) write (6, '(" Changing option =>  Calculate g(r) is needed to compute S(q)")')
    CALC_GR=.true.
  endif
  if(t_p .eq. 0) then
    if (CALC_SQ) write (6, '("  =>  Calculate S(q) structure factor from FFT[g(r)]")')
  endif
  read (10, *) Nom1, CALC_SK
  if(t_p .eq. 0) then
    if (CALC_SK) write (6, '("  =>  Calculate S(k) structure factor from Debye equation")')
  endif
  read (10, *) Nom1, CALC_GK
  if (CALC_GK .and. .not.(CALC_SK)) then
    if(t_p .eq. 0) write (6, '(" Changing option =>  Calculate S(k) Debye is needed to compute g(r) from FFT[S(k) Debye]")')
    CALC_SK=.true.
  endif
  if(t_p .eq. 0) then
    if (CALC_GK) write (6, '("  =>  Calculate g(r) from FFT[S(k) Debye]")')
  endif
  read (10, *) Nom1, CALC_MSD
  if(t_p .eq. 0) then
    if (CALC_MSD) write (6, '("  =>  Calculate Mean Square Displacement MSD")')
  endif
  read (10, *) Nom1, MSDEA
  if(t_p .eq. 0) then
    if (MSDEA) write (6, '("  =>  Calculate single atom MSDs")')
  endif
  read (10, *) Nom1, CALC_BONDS
  if(t_p .eq. 0) then
    if (CALC_BONDS) write (6, '("  =>  Calculate bond properties")')
  endif
  read (10, *) Nom1, CALC_ANG
  if(t_p .eq. 0) then
    if (CALC_ANG) write (6, '("  =>  Calculate angles distribution")')
  endif
! Chains statistics:
  read (10, *) Nom1, CALC_CHAINS
  read (10, *)
  read (10, *) Nom1, CTLT
  read (10, *) Nom1, AAAA
  read (10, *) Nom1, ACAC
  read (10, *) Nom1, ISOLATED
  if(t_p .eq. 0) then
    if (CALC_CHAINS) write (6, '("  =>  Calculate chains statistics")')
    if (CALC_CHAINS .and. CTLT .eq. 0)then
      write (6, '(3x," =>  Using all atoms as nodes")')
    elseif (CALC_CHAINS .and. (CTLT.le.NSP .and. CTLT.gt.0)) then
      write (6, '(3x," =>  Using species ",I2," as nodes")') CTLT
    elseif (CALC_CHAINS) then
      write (6, '(" Problem in ''options'' file => check chains statistics options")')
      STOP
    endif
    if (CALC_CHAINS .and. AAAA .and. ACAC) then
      write (6, '(" Problem in ''options'' file => check chains statistics options")')
      write (6, '(" Problem in ''options'' file => AAAA, ABAB or none, not both !")')
      STOP
    endif
    if (CALC_CHAINS .and. AAAA) write (6, '(3x," =>  Pure AAAA chains")')
    if (CALC_CHAINS .and. ACAC) write (6, '(3x," =>  Pure ABAB chains")')
    if (CALC_CHAINS .and. ISOLATED) write (6, '(3x," =>  Only 1-(2)n-1 coordinations chains")')
    if (CALC_CHAINS .and. .not.(CALC_BONDS)) then
      if(t_p .eq. 0) then
        write (6, '(" Changing option =>  Bond properties are needed to compute chains statistics")')
      endif
      CALC_BONDS=.true.
    endif
  endif
  read (10, *)
! Rings statistics:
  read (10, *) Nom1, CALC_R
  read (10, *)
  read (10, *) Nom1, LTLT
  read (10, *) Nom1, ABAB
  read (10, *) Nom1, CALC_R0
  read (10, *) Nom1, CALC_R1
  read (10, *) Nom1, CALC_R2
  read (10, *) Nom1, CALC_R3
  read (10, *) Nom1, CALC_R4
  read (10, *) Nom1, CALC_PRINGS
  read (10, *) Nom1, CALC_STRINGS
  read (10, *) Nom1, BARYCROUT
  read (10, *) Nom1, RING_P1
  read (10, *) Nom1, RING_P2
  read (10, *) Nom1, RING_P3
  read (10, *) Nom1, RING_P4
  read (10, *) Nom1, RING_P5
  if (CALC_R .and. (CALC_R0.or.CALC_R1.or.CALC_R2.or.CALC_R3.or.CALC_R4.or.CALC_PRINGS.or.CALC_STRINGS)) then
    CALC_RINGS=.true.
    if (CALC_R1.or.CALC_R2.or.CALC_R3.or.CALC_R4) DOAMPAT=.true.
  else
    CALC_RINGS=.false.
    ABAB=.false.
  endif
  if (RING_P1 .or. RING_P2 .or. RING_P3 .or. RING_P4 .or. RING_P5) then
    CALC_RPROP=.true.
  else
    CALC_RPROP=.false.
  endif
  if(t_p .eq. 0) then
    if (CALC_RINGS) write (6, '("  =>  Calculate rings statistics")')
    if (CALC_RINGS .and. LTLT .eq. 0)then
      write (6, '(3x," =>  Using all atoms as nodes")')
    elseif (CALC_RINGS .and. (LTLT.le.NSP .and. LTLT.gt.0)) then
      write (6, '(3x," =>  Using species ",I2," as nodes")') LTLT
    elseif (CALC_RINGS) then
      write (6, '(" Problem in ''options'' file => check rings statistics options")')
      STOP
    endif
    if (CALC_RINGS .and. ABAB) write (6, '(3x," =>  Pure ABAB rings")')
    if (CALC_RINGS .and. CALC_R0) write (6, '(3x," =>  Find all rings in the simulation box")')
    if (CALC_RINGS .and. CALC_R1) write (6, '(3x," =>  King''s rings statistics")')
    if (CALC_RINGS .and. CALC_R2) write (6, '(3x," =>  Guttman''s rings statistics")')
    if (CALC_RINGS .and. CALC_R3) write (6, '(3x," =>  King''s + homopolar bonds rings statistics")')
    if (CALC_RINGS .and. CALC_R4) write (6, '(3x," =>  Guttman''s + homopolar bonds rings statistics")')
    if (CALC_RINGS .and. CALC_PRINGS) write (6, '(3x," =>  Primitive rings statistics")')
    if (CALC_RINGS .and. CALC_STRINGS) write (6, '(3x," =>  Strong rings statistics")')
    if (CALC_RINGS .and. BARYCROUT) write (6, '(3x," =>  Output OpenDX rings barycenters positions")')
    if (CALC_RINGS .and. CALC_RPROP) write (6, '(3x," =>  Compute detailed rings properties")')
    if (CALC_RINGS .and. .not.CALC_BONDS) then
      write (6, '(" Changing option =>  Bond properties are needed to compute rings statistics")')
      CALC_BONDS=.true.
    endif
  endif
  read (10, *)
  read (10, *) Nom1, CALC_VAC
  if(t_p .eq. 0) then
    if (CALC_VAC) write (6, '("  =>  Calculate voids distribution")')
  endif
  if (CALC_VAC .and. .not.(CALC_BONDS)) then
    if(t_p .eq. 0) then
      write (6, '(" Changing option =>  Bond properties are needed to evaluate void distribution")')
    endif
    CALC_BONDS=.true.
  endif
  read (10, *)
  read (10, *)
  read (10, *)
  read (10, *) Nom1, EVOLOUT
  if(t_p .eq. 0) then
    if (EVOLOUT) write (6, '("  =>  Ouptut calculations results for each MD steps")')
  endif
  read (10, *) Nom1, DXOUT
  if(t_p .eq. 0) then
    if (DXOUT) then
      write (6, '("  =>  Ouptut OpenDX .dx file(s)")')
      write (6, '("      Main file = ''SYSTEM.dx''")')
    endif
  endif
  read (10, *)
  read (10, *) Nom1, RADOUT
  if (DXOUT .and. RADOUT) then
    if(t_p .eq. 0) write (6, '(3x," =>  Using atomic radius as color map")')
    IDOUT=.false.
  endif
  read (10, *) Nom1, RNGOUT
  if (DXOUT .and. RNGOUT) then
    if (LTLT .ne. 0) then
      if(t_p .eq. 0) then
        write (6, '(3x," =>  Atomic ring factor can''t be used as color map")')
        write (6, '(3x,"     if rings search options are not changed")')
        write (6, '(3x,"     Uing atomic mass as color map instead")')
      endif
    else
      if(t_p .eq. 0) write (6, '(3x," =>  Using atomic ring factor as color map")')
      IDOUT=.false.
      FACTATPNA=.true.
    endif
  endif
  read (10, *) Nom1, DRNGOUT
  if (DXOUT .and. DRNGOUT) then
    if (LTLT .ne. 0) then
      if(t_p .eq. 0) then
        write (6, '(3x," =>  Delta ring factor can''t be used as color map")')
        write (6, '(3x,"     if rings search options are not changed")')
        write (6, '(3x,"     Uing atomic mass as color map instead")')
      endif
    else
      if(t_p .eq. 0) write (6, '(3x," =>  Using Delta ring factor as color map")')
      IDOUT=.false.
      FACTATPNA=.true.
    endif
  endif
  if (DXOUT .and. IDOUT) then
    if(t_p .eq. 0) write (6, '(3x," =>  Using atomic mass as color map")')
  endif
  read (10, *) Nom1, VACOUT
  if (DXOUT .and. VACOUT) then
    if(t_p .eq. 0) write (6, '(3x," =>  Voids visualization using OpenDX")')
    if (.not.(CALC_VAC)) then
      if(t_p .eq. 0) write (6, '(" Changing option =>  Evaluate voids distribution is needed to visualize voids")')
      CALC_VAC=.true.
      if (.not.(CALC_BONDS)) then
        if(t_p .eq. 0) then
          write (6, '(" Changing option =>  Bond properties are needed to evaluate voids distribution")')
        endif
        CALC_BONDS=.true.
      endif
    endif
  endif
  read (10, *) Nom1, DXTETRA
  if (DXOUT .and. DXTETRA) then
    if(t_p .eq. 0) write (6, '(3x," =>  Tetrahedra visualization using OpenDX")')
      if (.not.(CALC_BONDS)) then
        if(t_p .eq. 0) then
          write (6, '(" Changing option =>  Bond properties are needed to visualize tetrahedra")')
        endif
        CALC_BONDS=.true.
      endif
  endif
  read (10, *) Nom1, PATHDX
  if (PATHDX) then
    if(t_p .eq. 0) write (6, '(3x," =>  Trajectories of the ",I4," particles of highest MSD")') NVALT
    if (.not.CALC_MSD) then
      if (t_p .eq. 0) write (6, '(" Changing option =>  MSD has to be computed to output trajectories")')
      CALC_MSD=.true.
    endif
    if (.not.MSDEA) then
      if (t_p .eq. 0) write (6, '(" Changing option =>  MSD for single atoms have to be computed to output trajectories")')
      MSDEA=.true.
    endif
  endif
  read (10, *)
  read (10, *) Nom1, NOM_OUT
  if(t_p .eq. 0) write (6, '(/,"========      End Options      ========",//)')

  close (10)

!101 FORMAT (I4)
!102 FORMAT (I2)
!103 FORMAT (I5)
!104 FORMAT (f15.10)
!105 FORMAT (A3)
106 FORMAT (A13)
!107 FORMAT (I10)
!109 FORMAT (A17)
!111 FORMAT (A2,2x,f9.6)
!113 FORMAT (A15)
!114 FORMAT (f7.5)
001 FORMAT (/," Allocation Problem -> No space left ?! :: node ",i3," READ_INPUT allocation of ",A15)

END SUBROUTINE READ_INPUT
4楼2021-07-29 20:11:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见