Skip to content

Commit

Permalink
bdf checkdata; grad; updated umv format
Browse files Browse the repository at this point in the history
  • Loading branch information
zorkzou committed Jan 18, 2023
1 parent eb21b2f commit 8093451
Show file tree
Hide file tree
Showing 12 changed files with 345 additions and 116 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ A unified interface for molecular harmonic vibrational frequency calculations.
The UniMoVib program was originally written by Wenli Zou in FORTRAN 77 during 2014 and 2015 at Southern Methodist University (SMU), Dallas, Texas, within the framework of the LocalMode (now LModeA) program of the Computational and Theoretical Chemistry Group (CATCO) of SMU. This work was supported by the NSF grants CHE 1152357 and CHE 1464906. Guidance from the late Dr. Dieter Cremer is acknowledged. After being rewritten in Fortran 90 in the spring of 2017, UniMoVib has been released as a stand-alone program.

## Latest Versions
Version 1.5.0 (Jan/19/2023).

1. Checkdata is printed for [BDF](http://bdf.theochem.cn:7226).
2. Gradient information is printed for [Gaussian](http://www.gaussian.com/), [CFour](http://www.cfour.de/) (analytical Hessian only), and UniMoVib.
3. The format of the UniMoVib data file has been updated.

Version 1.4.4 (Dec/28/2021).

1. Improved GCC version 10 (gfortran) compatibility.
Expand Down
Binary file modified bin/win32.zip
Binary file not shown.
Binary file modified manual/manual-cn/manual-cn.pdf
Binary file not shown.
53 changes: 29 additions & 24 deletions manual/manual-cn/manual-cn.tex
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
\title{
\vspace{-3cm}
\zihao{1}\hei\textsc{UniMoVib}使用手册 \\
\vspace{1cm} \zihao{3}(1.4.4版\vspace{20 mm} \\
\vspace{1cm} \zihao{3}(1.5.0版\vspace{20 mm} \\
\includegraphics[width=50.0mm]{fig/logo} \vspace{10 mm}}

\author{
Expand Down Expand Up @@ -585,19 +585,20 @@ \chapter{附录} \label{part:appdx}

\section{UniMoVib数据文件格式} \label{sec:almfmt}

\textsc{UniMoVib}数据文件是不区分大小写的纯文本自由格式,其中前三行的顺序是固定的,之后\verb|END|除外的数据区顺序任意。
\textsc{UniMoVib}数据文件是不区分大小写的纯文本自由格式,其中第一行为标题行,之后关键词\verb|END|除外的数据区顺序任意。
所有的关键词必须从第一列开始。注释行以空格或“!”打头,但不能出现在\{关键词$\ldots$数据\}之内。

\noindent
1.1.0版(2020.10.24)
\vskip 0.5em \noindent
1.2.0版(2023.01.19)
\begin{colorboxed}[oval=false,boxcolor=blue!75!black,bgcolor=blue!5!white]
\ttfamily
\begin{lstlisting}
(一个标题行)
(一个标题行;如果续行,则其余标题行的第一列必须是空格或“!”
NATM
(一个正整数)
AMASS
(NATM个原子质量;若不提供原子质量,可以忽略这部分内容或改用NOMASS,
程序默认用最丰同位素质量
(NATM个原子质量;若不提供原子质量,可以忽略这部分内容或改用NOMASS,程序将使用
最丰同位素质量
ZA
(NATM个核电荷数)
XYZ
Expand All @@ -607,13 +608,13 @@ \section{UniMoVib数据文件格式} \label{sec:almfmt}
FFX
(3NATM*3NATM,Hessian矩阵元;若为下三角矩阵数据,改用 FFXLT)
APT
(3*3NATM,APT数据值;若不提供 APT数据,可以忽略这部分内容或改用 NOAPT)
(3*3NATM,APT数据值用于计算红外强度;若不提供 APT数据,可以忽略这部分内容
或改用 NOAPT)
DPR
(6*3NATM,极化率导数数据值;若以9*3NATM格式给出,改用DPRSQ;
(6*3NATM,极化率导数数据值用于计算拉曼活性;若以9*3NATM格式给出,改用DPRSQ;
若不提供 DPR数据,可以忽略这部分内容或改用 NODPR)
END (可选的结束行)
\end{lstlisting}\end{colorboxed}
目前\verb|GRD|数据仅用于某些外部程序。

\section{开发人员:到其它量子化学程序的接口} \label{sec:interface}

Expand All @@ -627,29 +628,33 @@ \section{开发人员:到其它量子化学程序的接口} \label{sec:interfa
! Read NAtm from XXXX output
!-----------------------------------------------------------------------
subroutine RdNAtmXXXX(ifchk,NAtm,tag,ctmp)
implicit real(kind=8) (a-h,o-z)
character*100 :: ctmp
character*100 :: tag
(...)
return
implicit real(kind=8) (a-h,o-z)
character*100 :: ctmp
character*100 :: tag
(...)
return
end
\end{lstlisting}\end{colorboxed}
\begin{enumerate}
\item[2] 读取原子单位的直角坐标(\verb|XYZ|),原子核电荷数(\verb|ZA|),原子单位的原子量或同位素质量(\verb|AMass|;可选),原子单位的直角坐标力常数矩阵(\verb|FFx|,必须是未做质量加权的对称方阵),原子单位的偶极矩梯度(即原子极化张量,\verb|APT|;可选),以及原子单位的极化率导数(\verb|DPol|;可选)。该子例程在\verb|subroutine RdData1|中调用。例如:
\item[2] 读取原子单位的直角坐标(\verb|XYZ|),原子核电荷数(\verb|ZA|),原子单位的原子量或同位素质量(\verb|AMass|;可选),
原子单位的直角梯度(\verb|Grad|;可选;读入后把\verb|IGrd|设为1),原子单位的直角坐标力常数矩阵(\verb|FFx|,必须是未做质量加权的对称方阵),
原子单位的偶极矩梯度(即原子极化张量,\verb|APT|;可选;读入后把\verb|Infred|设为1),
以及原子单位的极化率导数(\verb|DPol|;可选;读入后把\verb|IRaman|设为1)。该子例程在\verb|subroutine RdData1|中调用。例如:
\end{enumerate}
\begin{colorboxed}[oval=false,boxcolor=blue!75!black,bgcolor=blue!5!white]
\begin{lstlisting}[language={[90]Fortran}]
!-----------------------------------------------------------------------
! Read data from XXXX output
!-----------------------------------------------------------------------
subroutine RdXXXX(ifchk,tag,ctmp,NAtm,AMass,ZA,XYZ,FFx,APT,DPol)
implicit real(kind=8) (a-h,o-z)
real(kind=8) :: AMass(NAtm),ZA(NAtm),XYZ(3,NAtm),FFx(3*NAtm,3*NAtm), &
APT(3,3*NAtm),DPol(6,3*NAtm)
character*100 :: ctmp
character*100 :: tag
(...)
return
subroutine RdXXXX(ifchk,tag,ctmp,IGrd,Infred,IRaman,NAtm,AMass,ZA,XYZ, &
Grad,FFx,APT,DPol)
implicit real(kind=8) (a-h,o-z)
real(kind=8) :: AMass(NAtm),ZA(NAtm),XYZ(3,NAtm),Grad(3,NAtm), &
FFx(3*NAtm,3*NAtm),APT(3,3*NAtm),DPol(6,3*NAtm)
character*100 :: ctmp
character*100 :: tag
(...)
return
end
\end{lstlisting}\end{colorboxed}
\begin{enumerate}
Expand Down
Binary file modified manual/manual-en/manual-en.pdf
Binary file not shown.
55 changes: 30 additions & 25 deletions manual/manual-en/manual-en.tex
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
\begin{document}

\title{User's Guide of the Program \textsc{UniMoVib} \\
\vspace{10 mm} (Ver. 1.4.4) \vspace{30 mm} \\
\vspace{10 mm} (Ver. 1.5.0) \vspace{30 mm} \\
\includegraphics[width=50.0mm]{fig/logo} \vspace{30 mm} }

\date{\today}
Expand Down Expand Up @@ -838,11 +838,14 @@ \section{Appendix} \label{part:appdx}
\subsection{Format of the UniMoVib data file} \label{sec:almfmt}
\index{{UniMoVib format}@{UniMoVib format}}

The \textsc{UniMoVib} data file is a case-insensitive ASCII one in free format, where the order of the first three lines is fixed and the other data blocks except \verb|END| can be in any order.
\begin{Verbatim}[frame=single,label=Format(Ver.1.1.0 2020.10.24),labelposition=topline,rulecolor=\color{blue},fontsize=\small,baselinestretch=1.0]
(One title line)
The \textsc{UniMoVib} data file is a case-insensitive ASCII one in free format, where the first line is reserved for the title and the other data blocks except the keyword \verb|END| may be defined in any order.
All the keywords must start from the first column. The comment line starts with a space or !, but cannot be in the \{Keyword$\ldots$Data\} block.

\begin{Verbatim}[frame=single,label=Format(Ver.1.2.0 2023.01.19),labelposition=topline,rulecolor=\color{blue},fontsize=\small,baselinestretch=1.0]
(One title line; for continuous multiple title lines, the first column must
be a space or !)
NATM
(An positive integer)
(A positive integer)
AMASS
(NATM number of atomic masses;
Use NOMASS instead or omit this block if no atomic masses provided;
Expand All @@ -859,15 +862,14 @@ \subsection{Format of the UniMoVib data file} \label{sec:almfmt}
(3NATM*3NATM elements of Hessian matrix;
Use FFXLT instead for L.T. matrix)
APT
(3*3NATM elements of APT data;
(3*3NATM elements of APT data for IR intensity;
Use NOAPT instead or omit this block if no APT data provided)
DPR
(6*3NATM elements of polarizability derivatives;
(6*3NATM elements of polarizability derivatives for Raman activities;
Use DPRSQ instead if in the form of 9*3NATM;
Use NODPR instead or omit this block if no DPR data provided)
END (An optional end line)
\end{Verbatim}
At present only some external programs need the \verb|GRD| data.

\pagebreak{}

Expand All @@ -883,30 +885,33 @@ \subsection{For developers: interface to other QC programs} \label{sec:interface
! Read NAtm from XXXX output
!-----------------------------------------------------------------------
subroutine RdNAtmXXXX(ifchk,NAtm,tag,ctmp)
implicit real(kind=8) (a-h,o-z)
character*100 :: ctmp
character*100 :: tag
(...)
return
implicit real(kind=8) (a-h,o-z)
character*100 :: ctmp
character*100 :: tag
(...)
return
end
\end{lstlisting}

\item Read in Cartesian coordinates in \emph{a.u.} (\verb|XYZ|), atomic nuclear charge number (\verb|ZA|), atomic or isotopic masses in \emph{a.u.} (\verb|AMass|; optional), Cartesian force constant matrix in \emph{a.u.}
(\verb|FFx|; a mass-unweighted square matrix), dipole moment gradient (\emph{i.e.} atomic polar tensor; APT) in \emph{a.u.}
(\verb|APT|; optional), and polarizability derivatives in \emph{a.u.}
(\verb|DPol|; optional). This subroutine is called in \verb|subroutine RdData1| . Example:
\item Read in Cartesian coordinates in \emph{a.u.} (\verb|XYZ|), atomic nuclear charge number (\verb|ZA|), atomic or isotopic masses in \emph{a.u.}
(\verb|AMass|; optional), Cartesian gradients in \emph{a.u.} (\verb|Grad|; optional; set \verb|IGrd=1| after reading the data),
Cartesian force constant matrix in \emph{a.u.} (\verb|FFx|; a mass-unweighted square matrix),
dipole moment gradient (\emph{i.e.} atomic polar tensor; APT) in \emph{a.u.} (\verb|APT|; optional; set \verb|Infred=1| after reading the data),
and polarizability derivatives in \emph{a.u.} (\verb|DPol|; optional; set \verb|IRaman=1| after reading the data).
This subroutine is called in \verb|subroutine RdData1| . Example:
\begin{lstlisting}[language={[90]Fortran}]
!-----------------------------------------------------------------------
! Read data from XXXX output
!-----------------------------------------------------------------------
subroutine RdXXXX(ifchk,tag,ctmp,NAtm,AMass,ZA,XYZ,FFx,APT,DPol)
implicit real(kind=8) (a-h,o-z)
real(kind=8) :: AMass(NAtm),ZA(NAtm),XYZ(3,NAtm),FFx(3*NAtm,3*NAtm), &
APT(3,3*NAtm),DPol(6,3*NAtm)
character*100 :: ctmp
character*100 :: tag
(...)
return
subroutine RdXXXX(ifchk,tag,ctmp,IGrd,Infred,IRaman,NAtm,AMass,ZA,XYZ, &
Grad,FFx,APT,DPol)
implicit real(kind=8) (a-h,o-z)
real(kind=8) :: AMass(NAtm),ZA(NAtm),XYZ(3,NAtm),Grad(3,NAtm), &
FFx(3*NAtm,3*NAtm),APT(3,3*NAtm),DPol(6,3*NAtm)
character*100 :: ctmp
character*100 :: tag
(...)
return
end
\end{lstlisting}

Expand Down
Loading

0 comments on commit 8093451

Please sign in to comment.