From 0c0b5f9993c6b08eb9e71f6e67cb8cfa5a0f8cd0 Mon Sep 17 00:00:00 2001 From: tmisawa Date: Fri, 16 Jun 2017 12:51:52 +0900 Subject: [PATCH 01/16] #165 fixed bug --- src/mVMC/calgrn_fsz.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mVMC/calgrn_fsz.c b/src/mVMC/calgrn_fsz.c index 0a361d9b..3eda8725 100644 --- a/src/mVMC/calgrn_fsz.c +++ b/src/mVMC/calgrn_fsz.c @@ -98,7 +98,7 @@ void CalculateGreenFunc_fsz(const double w, const double complex ip, int *eleIdx rk = CisAjsCktAltDCIdx[idx][4]; u = CisAjsCktAltDCIdx[idx][5]; rl = CisAjsCktAltDCIdx[idx][6]; - v = CisAjsCktAltDCIdx[idx][5]; + v = CisAjsCktAltDCIdx[idx][7]; if(s==t && u==v){ tmp = GreenFunc2_fsz(ri,rj,rk,rl,s,u,ip,myEleIdx,eleCfg,myEleNum,eleProjCnt,myEleSpn, From 008d250e9d1553bbac3852f7b9404400c75f738c Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Fri, 16 Jun 2017 16:41:13 +0900 Subject: [PATCH 02/16] refactoring stcopt --- src/mVMC/include/stcopt_dposv.h | 5 +- src/mVMC/include/vmcmain.h | 2 + src/mVMC/stcopt.c | 189 +++++++++++++++++++++++++++++ src/mVMC/stcopt_dposv.c | 206 ++------------------------------ src/mVMC/stcopt_pdposv.c | 168 +------------------------- 5 files changed, 208 insertions(+), 362 deletions(-) create mode 100644 src/mVMC/stcopt.c diff --git a/src/mVMC/include/stcopt_dposv.h b/src/mVMC/include/stcopt_dposv.h index 7ee91b8a..8539de17 100644 --- a/src/mVMC/include/stcopt_dposv.h +++ b/src/mVMC/include/stcopt_dposv.h @@ -4,9 +4,8 @@ #include int StochasticOpt(MPI_Comm comm); -void stcOptInit(double *const s, double *const g, const int nSmat, int *const smatToParaIdx); -int stcOptMain(double *const s, double *const g, const int nSmat); - +void stcOptInit(double *const s, double *const g, const int nSmat, const int *const smatToParaIdx); +int stcOptMain(double *g, const int nSmat, const int *smatToParaIdx, MPI_Comm); #endif #endif diff --git a/src/mVMC/include/vmcmain.h b/src/mVMC/include/vmcmain.h index 7b37753d..1beb9eb7 100644 --- a/src/mVMC/include/vmcmain.h +++ b/src/mVMC/include/vmcmain.h @@ -73,6 +73,8 @@ extern int omp_get_thread_num(void); #include "../stcopt_cg.c" +#include "../stcopt.c" + #include "../gauleg.c" #include "../legendrepoly.c" #include "../avevar.c" diff --git a/src/mVMC/stcopt.c b/src/mVMC/stcopt.c new file mode 100644 index 00000000..5fa0403c --- /dev/null +++ b/src/mVMC/stcopt.c @@ -0,0 +1,189 @@ +/* +mVMC - A numerical solver package for a wide range of quantum lattice models based on many-variable Variational Monte Carlo method +Copyright (C) 2016 The University of Tokyo, All rights reserved. + +This program is developed based on the mVMC-mini program +(https://github.com/fiber-miniapp/mVMC-mini) +which follows "The BSD 3-Clause License". + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see http://www.gnu.org/licenses/. +*/ +/*------------------------------------------------------------- + * Variational Monte Carlo + * Stochastic Reconfiguration method + *------------------------------------------------------------- + * by Satoshi Morita + *-------------------------------------------------------------*/ + +// #define _DEBUG_STCOPT + +int StochasticOpt(MPI_Comm comm) { + const int nPara=NPara; + const int srOptSize=SROptSize; + const double complex *srOptOO=SROptOO; + //const double *srOptOO= SROptOO_real; + + double *r; /* the parameter change */ + int nSmat; + int smatToParaIdx[2*NPara];//TBC + + int cutNum=0,optNum=0; + double sDiag,sDiagMax,sDiagMin; + double diagCutThreshold; + + int si; /* index for matrix S */ + int pi; /* index for variational parameters */ + + double rmax; + int simax; + int info=0; + +// for real + int int_x,int_y,j,i; + + double complex *para=Para; + + int rank,size; + MPI_Comm_rank(comm,&rank); + MPI_Comm_size(comm,&size); + + r = (double*)calloc(2*SROptSize, sizeof(double)); + + StartTimer(50); +//[s] for only real variables TBC + if(AllComplexFlag==0 && iFlgOrbitalGeneral==0){ //real & sz=0 + #pragma omp parallel for default(shared) private(i,int_x,int_y,j) + #pragma loop noalias + for(i=0;i<2*SROptSize*(2*SROptSize+2);i++){ + int_x = i%(2*SROptSize); + int_y = (i-int_x)/(2*SROptSize); + if(int_x%2==0 && int_y%2==0){ + j = int_x/2+(int_y/2)*SROptSize; + SROptOO[i] = SROptOO_real[j];// only real part TBC + }else{ + SROptOO[i] = 0.0+0.0*I; + } + } + } +//[e] + #pragma omp parallel for default(shared) private(pi) + #pragma loop noalias + for(pi=0;pi<2*nPara;pi++) { + //for(pi=0;pisDiagMax) sDiagMax=sDiag; + if(sDiag restricted parameters , pi -> full paramer 0 <-> 2*NPara + si += 1; + } +// e + } + nSmat = si; + for(si=nSmat;si<2*nPara;si++) { + smatToParaIdx[si] = -1; // parameters that will not be optimized + } + +#ifdef _DEBUG_STCOPT + printf("DEBUG in %s (%d): diagCutThreshold = %lg\n", __FILE__, __LINE__, diagCutThreshold); + printf("DEBUG in %s (%d): optNum, cutNum, nSmat, 2*nPara == %d, %d, %d, %d\n", __FILE__, __LINE__, optNum, cutNum, nSmat, 2*nPara); +#endif + + StopTimer(50); + StartTimer(51); + + + //printf("DEBUG: nSmat=%d \n",nSmat); + /* calculate r[i]: global vector [nSmat] */ + info = stcOptMain(r, nSmat, smatToParaIdx, comm); + + StopTimer(51); + StartTimer(52); + + /*** print zqp_SRinfo.dat ***/ + if(rank==0) { + if(info!=0) fprintf(stderr, "StcOpt: DPOSV info=%d\n",info); + rmax = r[0]; simax=0;; + for(si=0;si 2*NPars - - StartTimer(50); - - for(pi=0;pi<2*NPara;pi++) { - /* sDiagElm is temporarily used for diagonal elements of S */ - /* S[i][i] = OO[pi+1][pi+1] - OO[0][pi+1] * OO[0][pi+1]; */ - sDiagElm[pi] = creal(SROptOO[(pi+2)*(2*SROptSize)+(pi+2)]) - creal(SROptOO[pi+2]) * creal(SROptOO[pi+2]); - -#ifdef _DEBUG_STCOPT_DPOSV - fprintf(stderr, "DEBUG in %s (%d): sDiagElm[%d] = %lf\n", __FILE__, __LINE__, pi, sDiagElm[pi]); -#endif - } - - sDiag = sDiagElm[0]; - sDiagMax=sDiag; sDiagMin=sDiag; - for(pi=0;pi<2*NPara;pi++) { - sDiag = sDiagElm[pi]; - if(sDiag>sDiagMax) sDiagMax=sDiag; - if(sDiagsDiagMax) sDiagMax=sDiag; - if(sDiag restricted parameters , pi -> full paramer 0 <-> 2*NPara - si += 1; - } -// e - } - nSmat = si; - for(si=nSmat;si<2*nPara;si++) { - smatToParaIdx[si] = -1; // parameters that will not be optimized - } - -#ifdef _DEBUG_STCOPT_PDPOSV - printf("DEBUG in %s (%d): diagCutThreshold = %lg\n", __FILE__, __LINE__, diagCutThreshold); - printf("DEBUG in %s (%d): optNum, cutNum, nSmat, 2*nPara == %d, %d, %d, %d\n", __FILE__, __LINE__, optNum, cutNum, nSmat, 2*nPara); -#endif - - StopTimer(50); - StartTimer(51); - - - //printf("DEBUG: nSmat=%d \n",nSmat); - /* calculate r[i]: global vector [nSmat] */ - info = stcOptMain(r, nSmat, smatToParaIdx, comm); - - StopTimer(51); - StartTimer(52); - - /*** print zqp_SRinfo.dat ***/ - if(rank==0) { - if(info!=0) fprintf(stderr, "StcOpt: DPOSV info=%d\n",info); - rmax = r[0]; simax=0;; - for(si=0;si Date: Sat, 17 Jun 2017 16:29:26 +0900 Subject: [PATCH 03/16] change include order --- src/mVMC/include/stcopt.h | 9 +++++++++ src/mVMC/include/stcopt_dposv.h | 2 -- src/mVMC/include/stcopt_pdposv.h | 2 -- src/mVMC/include/vmcmain.h | 4 ++-- src/mVMC/stcopt.c | 2 ++ 5 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 src/mVMC/include/stcopt.h diff --git a/src/mVMC/include/stcopt.h b/src/mVMC/include/stcopt.h new file mode 100644 index 00000000..7729aafa --- /dev/null +++ b/src/mVMC/include/stcopt.h @@ -0,0 +1,9 @@ +#ifndef _STCOPT_HEADER +#define _STCOPT_HEADER +#include + +int StochasticOpt(MPI_Comm comm); +void stcOptInit(double *const s, double *const g, const int nSmat, const int *const smatToParaIdx); +int stcOptMain(double *g, const int nSmat, const int *smatToParaIdx, MPI_Comm); + +#endif diff --git a/src/mVMC/include/stcopt_dposv.h b/src/mVMC/include/stcopt_dposv.h index 8539de17..f8b617a9 100644 --- a/src/mVMC/include/stcopt_dposv.h +++ b/src/mVMC/include/stcopt_dposv.h @@ -3,9 +3,7 @@ #define _STCOPT_DPOSV #include -int StochasticOpt(MPI_Comm comm); void stcOptInit(double *const s, double *const g, const int nSmat, const int *const smatToParaIdx); -int stcOptMain(double *g, const int nSmat, const int *smatToParaIdx, MPI_Comm); #endif #endif diff --git a/src/mVMC/include/stcopt_pdposv.h b/src/mVMC/include/stcopt_pdposv.h index 67a4a12d..9259ffe4 100644 --- a/src/mVMC/include/stcopt_pdposv.h +++ b/src/mVMC/include/stcopt_pdposv.h @@ -2,8 +2,6 @@ #ifndef _STCOPT_PDPOSV #define _STCOPT_PDPOSV -int StochasticOpt(MPI_Comm comm); -int stcOptMain(double *r, const int nSmat, const int *smatToParaIdx, MPI_Comm comm); int StochasticOptDiag(MPI_Comm comm); int stcOptMainDiag(double *const r, int const nSmat, int *const smatToParaIdx, MPI_Comm comm, int const optNum); diff --git a/src/mVMC/include/vmcmain.h b/src/mVMC/include/vmcmain.h index 1beb9eb7..8b447045 100644 --- a/src/mVMC/include/vmcmain.h +++ b/src/mVMC/include/vmcmain.h @@ -65,6 +65,8 @@ extern int omp_get_thread_num(void); #include "../vmcclock.c" #include "../workspace.c" +#include "../stcopt.c" + #ifdef _lapack #include "../stcopt_dposv.c" #else @@ -73,8 +75,6 @@ extern int omp_get_thread_num(void); #include "../stcopt_cg.c" -#include "../stcopt.c" - #include "../gauleg.c" #include "../legendrepoly.c" #include "../avevar.c" diff --git a/src/mVMC/stcopt.c b/src/mVMC/stcopt.c index 5fa0403c..d375b2b3 100644 --- a/src/mVMC/stcopt.c +++ b/src/mVMC/stcopt.c @@ -28,6 +28,8 @@ along with this program. If not, see http://www.gnu.org/licenses/. // #define _DEBUG_STCOPT +#include "stcopt.h" + int StochasticOpt(MPI_Comm comm) { const int nPara=NPara; const int srOptSize=SROptSize; From ce6d6123f7f5e4b7cd450969b780471a5d99490e Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Sat, 17 Jun 2017 16:37:21 +0900 Subject: [PATCH 04/16] mod DEBUG output --- src/mVMC/stcopt_pdposv.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mVMC/stcopt_pdposv.c b/src/mVMC/stcopt_pdposv.c index ee2c6ad1..bfcb7c81 100644 --- a/src/mVMC/stcopt_pdposv.c +++ b/src/mVMC/stcopt_pdposv.c @@ -171,15 +171,17 @@ int stcOptMain(double *r, const int nSmat, const int *smatToParaIdx, MPI_Comm co StopTimer(56); #ifdef _DEBUG_STCOPT + fprintf(stderr, "g:\n"); for(ir=0; ir Date: Fri, 30 Jun 2017 23:52:09 +0900 Subject: [PATCH 05/16] BagFix in allocating kvec; it should be 3D vector. --- tool/corplot.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/corplot.F90 b/tool/corplot.F90 index bda7ea44..81bf075c 100644 --- a/tool/corplot.F90 +++ b/tool/corplot.F90 @@ -124,7 +124,7 @@ SUBROUTINE read_cor() READ(fi,*) recipr(1:3,idim) END DO ! - ALLOCATE(kvec(2,nktot), equiv(nktot)) + ALLOCATE(kvec(3,nktot), equiv(nktot)) WRITE(*,*) " Total Number of k : ", nktot WRITE(*,*) " Row for k : ", nk_row WRITE(*,*) " Reciplocal lattice vector :" From 6a77a50b79986d5cf024d8b5ad1e9ca3b9451943 Mon Sep 17 00:00:00 2001 From: takeokato719 Date: Mon, 10 Jul 2017 11:40:01 +0900 Subject: [PATCH 06/16] Expressions in Japanese and English manual are corrected. --- doc/en/chap05_en.tex | 41 ++++++++++------- doc/jp/chap05_jp.tex | 107 +++++++++++++++++++++++++------------------ 2 files changed, 87 insertions(+), 61 deletions(-) diff --git a/doc/en/chap05_en.tex b/doc/en/chap05_en.tex index 59ef1b66..1e1861d5 100644 --- a/doc/en/chap05_en.tex +++ b/doc/en/chap05_en.tex @@ -2,31 +2,40 @@ %---------------------------------------------------------- \chapter{{Algorithm}} \label{Ch:algorithm} -\section{Variational MonteCalro Method} -In Variational MonteCalro (VMC) method, the importance sampling is performed in the system constructed by the Malkov chain toward the appropriate complete system. -Here, we choose the real spatial arrangement $\{| x\rangle\}$ at $S_z = 0$ as the complete system. +\section{Variational Monte Calro Method} + +The variational Monte Carlo (VMC) method is a method for calculating approximate wave functions +of a ground state and low-lying excited states by optimizing variational parameters included in a trial +wave function. +In calculating expectation values of physical quantities for the trial wave functions, +the Markov chain Monte Carlo method is applied for efficient important sampling. + +In the present package, we choose a spatial configuration for electrons as a complete set of bases in sampling: \begin{equation} | x\rangle = \prod_{n=1}^{N/2} c_{r_{n\uparrow}}^{\dag} \prod_{n=1}^{N/2} c_{r_{n\downarrow}}^{\dag} |0 \rangle, \end{equation} -where we set $r_{n\sigma}$ as the position of $n$-th electron with $\sigma (=\uparrow \rm{or} \downarrow)$ spin. - -\subsection{Importance sampling} -When the importance of Malkov chain is defined by +where $r_{n\sigma}$ is a position of $n$-th electron with $\sigma (=\uparrow \rm{or} \downarrow)$ spin, +and $c_{r_{n\sigma}}^{\dag}$ is a creation operator of electrons. +By using this set of bases, the expectation value of an operator $A$ is expressed as \begin{equation} -\rho(x)=\frac{|\langle x| \psi \rangle|^2}{\langle \psi | \psi \rangle} \ge 0, \sum{x} \rho(x)=1, +\langle A \rangle =\frac{\langle \psi| A| \psi \rangle}{\langle \psi | \psi \rangle} +=\sum_x \frac{\langle \psi| A | x\rangle \langle x| \psi \rangle}{\langle \psi |\psi \rangle}. \end{equation} -the expected value of the operator $A$ is given by +If we define a weight of the Markov chain Monte Carlo method as \begin{equation} -\langle A \rangle =\frac{\langle \psi| A| \psi \rangle}{\langle \psi | \psi \rangle} -=\sum_x \frac{\langle \psi| A | x\rangle \langle x| \psi \rangle}{\langle \psi |\psi \rangle} -=\sum_x \rho(x) \frac{\langle \psi| A | x\rangle }{\langle \psi |x \rangle} . +\rho(x)=\frac{|\langle x| \psi \rangle|^2}{\langle \psi | \psi \rangle} \ge 0, \quad \sum_{x} \rho(x)=1, +\end{equation} +we can rewrite $\langle A \rangle$ in the following form: +\begin{equation} +\langle A \rangle =\sum_x \rho(x) \frac{\langle \psi| A | x\rangle }{\langle \psi |x \rangle}. \end{equation} -In VMC, the summation in terms of $x$ is replaced by the importance sampling. -Then, local Green's function $G_{ij\sigma\sigma'}(x)$ is defined by +By using this form, the Markov chain Monte Carlo method is performed for sampling +with respect to $x$. The local Green's function $G_{ij\sigma\sigma'}(x)$, which is defined as \begin{equation} -G_{ij\sigma\sigma'}(x)=\frac{\langle \psi | c_{i\sigma}^{\dag} c_{j\sigma'} | \psi \rangle}{\langle \psi | x \rangle}. +G_{ij\sigma\sigma'}(x)=\frac{\langle \psi | c_{i\sigma}^{\dag} c_{j\sigma'} | \psi \rangle}{\langle \psi | x \rangle}, \end{equation} -In mVMC, the Mersenne twister method is used for sampling as the random number generator \cite{Mutsuo2008}. +is also evaluated by the same sampling method by taking $A = c_{i\sigma}^{\dag} c_{j\sigma'}$. +We adopt the Mersenne twister method as a random number generator for sampling~\cite{Mutsuo2008}. \section{Bogoliubov representation}\label{sec_bogoliubov_rep} diff --git a/doc/jp/chap05_jp.tex b/doc/jp/chap05_jp.tex index 09dca2e7..89520a8f 100644 --- a/doc/jp/chap05_jp.tex +++ b/doc/jp/chap05_jp.tex @@ -3,34 +3,46 @@ \chapter{アルゴリズム} \label{Ch:algorithm} \section{変分モンテカルロ法} -適当な完全系に対するマルコフ連鎖を構成して重みつきサンプリングを行います。 -ここでは完全系として$S_z = 0$ の実空間配置$\{| x\rangle\}$ を使用します。 + +変分モンテカルロ法では, 試行波動関数を用意して, その試行波動関数が含むパラメータを +変分原理に従って最適化することで量子多体系の基底状態(または低励起エネルギー状態)の波動関数を +近似的に求めます。 +試行波動関数に対する物理量の期待値を計算する部分で, マルコフ連鎖モンテカルロ法を利用し, +効率よく重み付きサンプリングを行います。 + +本パッケージでは, サンプリングに用いる完全系として電子の実空間配置$\{| x\rangle\}$をとっています: \begin{equation} | x\rangle = \prod_{n=1}^{N/2} c_{r_{n\uparrow}}^{\dag} \prod_{n=1}^{N/2} c_{r_{n\downarrow}}^{\dag} |0 \rangle \end{equation} -ここで、$n$番目の$\sigma$電子の位置を$r_{n\sigma}$としました。 -\subsection{Importance sampling} -マルコフ連鎖の重みを -\begin{equation} -\rho(x)=\frac{|\langle x| \psi \rangle|^2}{\langle \psi | \psi \rangle} \ge 0, \sum{x} \rho(x)=1 -\end{equation} -とすると演算子$A$の期待値は +ここで, $r_{n\sigma}$は$n$番目の電子(スピン$\sigma$)の位置, $c_{r_{n\sigma}}^{\dag}$はその位置での +電子(スピン$\sigma$)の生成演算子を表します。この基底を用いると, 演算子$A$の期待値は \begin{equation} \langle A \rangle =\frac{\langle \psi| A| \psi \rangle}{\langle \psi | \psi \rangle} =\sum_x \frac{\langle \psi| A | x\rangle \langle x| \psi \rangle}{\langle \psi |\psi \rangle} -=\sum_x \rho(x) \frac{\langle \psi| A | x\rangle }{\langle \psi |x \rangle} \end{equation} -となります。$x$に関する和を重み付きサンプリングに置き換えます。また、Local Green's function $G_{ij\sigma\sigma'}(x)$は +となるため, マルコフ連鎖の重みを +\begin{equation} +\rho(x)=\frac{|\langle x| \psi \rangle|^2}{\langle \psi | \psi \rangle} \ge 0, \quad \sum_{x} \rho(x)=1 +\end{equation} +と定義して, +\begin{equation} +\langle A \rangle =\sum_x \rho(x) \frac{\langle \psi| A | x\rangle }{\langle \psi |x \rangle} +\end{equation} +と書き直した後、$x$に関する和を重み付きサンプリングをマルコフ連鎖モンテカルロ法により +実行しています。Local Green's function $G_{ij\sigma\sigma'}(x)$は \begin{equation} G_{ij\sigma\sigma'}(x)=\frac{\langle \psi | c_{i\sigma}^{\dag} c_{j\sigma'} | \psi \rangle}{\langle \psi | x \rangle} \end{equation} -で定義されます。なお、サンプリングに使用する乱数生成については、メルセンヌツイスター法を使用しています\cite{Mutsuo2008}。 +と定義されますが, これも演算子$A$を$c_{i\sigma}^{\dag} c_{j\sigma'}$ととることで, +同じ方法により重み付きサンプリングを行うことができます。 +なお, サンプリングに使用する乱数生成については, メルセンヌツイスター法を使用しています\cite{Mutsuo2008}。 \section{Bogoliubov表現}\label{sec_bogoliubov_rep} -スピン系の計算において一体項(\verb|transfer|)、\verb|InterAll|形式での相互作用、 +スピン系の計算において一体項(\verb|transfer|), \verb|InterAll|形式での相互作用, 相関関数のインデックスの指定にはBogoliubov表現が使われています。 -スピンの演算子は次のように生成$\cdot$消滅演算子で書き換えられます。 +一般に、スピンの演算子は次のようにフェルミオンの生成$\cdot$消滅演算子$c_{i \sigma}$, +$c_{i \sigma}^\dagger$によって書き換えることができます。 \begin{align} S_{i z} &= \sum_{\sigma = -S}^{S} \sigma c_{i \sigma}^\dagger c_{i \sigma} \\ @@ -42,27 +54,32 @@ \section{Bogoliubov表現}\label{sec_bogoliubov_rep} \sqrt{S(S+1) - \sigma(\sigma+1)} c_{i \sigma}^\dagger c_{i \sigma+1} \end{align} +本パッケージでは、$S=1/2$のスピン系のみ取り扱っており、上記の式で +$S=1/2$と置いたものを用いています。 -\section{{パフィアン行列式とスレータ行列式の関係}} +\section{{パフィアン行列式とスレーター行列式の関係}} \label{sec:PuffAndSlater} -このセクションでは、パフィアン行列式とスレータ行列式の関係および$f_{ij}$の特異値分解の意味について説明します。 + +この節では, パフィアン行列式とスレーター行列式の関係および$f_{ij}$の特異値分解の意味について説明します。 + \subsection{$f_{ij}$と$\Phi_{in\sigma}$の関係~(スピン反平行の場合)} -パフィアンスレーター行列式(多変数変分モンテカルロ法の一体部分)は + +パフィアン-スレーター行列式(多変数変分モンテカルロ法の一体部分)は \begin{equation} |\phi_{\rm Pf}\rangle=\Big(\sum_{i,j=1}^{N_{s}}f_{ij}c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \end{equation} -のように定義されます。ここで、$N_{s}$はサイト数、$N_{e}$は全電子数、$f_{ij}$は変分パラメータとしました。 -簡単化のため、以降$f_{ij}$は実数と仮定します。また、シングルスレーター行列式として +のように定義されます。ここで, $N_{s}$はサイト数, $N_{e}$は全電子数, $f_{ij}$は変分パラメータです。 +簡単化のため, 以降$f_{ij}$は実数と仮定します。また, シングルスレーター行列式として \begin{align} |\phi_{\rm SL}\rangle&=\Big(\prod_{n=1}^{N_{e}/2}\psi_{n\uparrow}^{\dagger}\Big) \Big(\prod_{m=1}^{N_{e}/2}\psi_{m\downarrow}^{\dagger}\Big)|0\rangle, \\ \psi_{n\sigma}^{\dagger}&=\sum_{i=1}^{N_{s}}\Phi_{in\sigma}c^{\dagger}_{i\sigma}. \end{align} -を定義します。ただし、$\Phi$は正規直行基底であり、クロネッカーのデルタ$\delta_{nm}$を用い +を定義します。ただし, $\Phi$は正規直行基底であり, クロネッカーのデルタ$\delta_{nm}$を用い \begin{equation} \sum_{i=1}^{N_{s}}\Phi_{in\sigma}\Phi_{im\sigma}=\delta_{nm}, \end{equation} -で表されます。この直交性の関係から、以下の関係式 +で表されます。この直交性の関係から, 以下の関係式 \begin{align} [\psi^{\dagger}_{n\sigma},\psi_{m\sigma}]_{+}&=\delta_{nm},\\ G_{ij\sigma}=\langle c_{i\sigma}^{\dagger}c_{j\sigma}\rangle @@ -71,15 +88,15 @@ \subsection{$f_{ij}$と$\Phi_{in\sigma}$の関係~(スピン反平行の場合)} \end{align} が導かれます。 -次に、$\phi_{\rm SL}$を変形し、$f_{ij}$と$\Phi_{in\sigma}$の関係をあらわにします。 -$\psi^{\dagger}_{n\sigma}$の交換関係を用いると、$\phi_{\rm SL}$は +次に, $\phi_{\rm SL}$を変形し, $f_{ij}$と$\Phi_{in\sigma}$の関係をあらわにします。 +$\psi^{\dagger}_{n\sigma}$の交換関係を用いると, $\phi_{\rm SL}$は \begin{align} |\phi_{\rm SL}\rangle \propto \prod_{n=1}^{N_{e}/2}\Big(\psi_{n\uparrow}^{\dagger}\psi_{\mu(n)\downarrow}^{\dagger}\Big)|0\rangle, \end{align} -と書き換えられます。ここで、$\mu(n)$は$n= 1, 2, \cdots, N_{e}/2$の置換を表します。 -ここで議論を簡単にするため、同一のペア$n=\mu(n)$を採用します。 -このとき、$K_{n}^{\dagger}=\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}$として、 -$K_{n}^{\dagger}K_{m}^{\dagger}=K_{m}^{\dagger}K_{n}^{\dagger}$の関係を用いることで、 +と書き換えられます。ここで, $\mu(n)$は$n= 1, 2, \cdots, N_{e}/2$の置換を表します。 +ここで議論を簡単にするため, 同一のペア$n=\mu(n)$を採用します。 +このとき, $K_{n}^{\dagger}=\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}$として, +$K_{n}^{\dagger}K_{m}^{\dagger}=K_{m}^{\dagger}K_{n}^{\dagger}$の関係を用いることで, \begin{align} |\phi_{\rm SL}\rangle &\propto \prod_{n=1}^{N_{e}/2}\Big(\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}\Big)|0\rangle =\prod_{n=1}^{N_{e}/2} K_{n}^{\dagger}|0\rangle \\ @@ -91,7 +108,7 @@ \subsection{$f_{ij}$と$\Phi_{in\sigma}$の関係~(スピン反平行の場合)} \begin{align} f_{ij}=\sum_{n=1}^{\frac{N_{e}}{2}}\Phi_{in\uparrow}\Phi_{jn\downarrow}. \end{align} -として表されることが分かります。なお、この形式はシングルスレーター行列式で与えられる$f_{ij}$の表式の一つであり、 +として表されることが分かります。なお, この形式はシングルスレーター行列式で与えられる$f_{ij}$の表式の一つであり, 実際にはペアを組む自由度(どの$\mu(n)$を選ぶか)およびゲージの自由度(すなわち$\Phi$の符号の自由度)に依存します。 この自由度の多さが$f_{ij}$の冗長性につながっています。 @@ -102,12 +119,12 @@ \subsection{$F_{IJ}$と$\Phi_{In}$の関係~(スピン平行も含めた場合)} |\phi_{\rm Pf}\rangle&=\Big(\sum_{I,J=1}^{2N_{s}}f_{IJ}c_{I}^{\dagger}c_{J}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \\ |\phi_{\rm SL}\rangle&=\Big(\prod_{n=1}^{N_{e}}\psi_{n}^{\dagger}\Big)|0\rangle,~~\psi_{n}^{\dagger}=\sum_{I=1}^{2N_{s}}\Phi_{In}c^{\dagger}_{I}. \end{align} -スピン反平行の場合とほぼ同様の議論を用いることで、 +スピン反平行の場合とほぼ同様の議論を用いることで, \begin{align} F_{IJ}=\sum_{n=1}^{\frac{N_{e}}{2}}\Big(\Phi_{In}\Phi_{Jn+1}-\Phi_{Jn}\Phi_{In+1}\Big). \end{align} の関係を示すことができます。 -これはスピン反平行の場合にもそのまま適用できるので、 +これはスピン反平行の場合にもそのまま適用できるので, mVMC ver1.0ではこの表式を使用しています。 \subsection{$f_{ij}$の特異値分解} @@ -118,22 +135,22 @@ \subsection{$f_{ij}$の特異値分解} (\Phi_{\downarrow})_{in}=\Phi_{in\downarrow}, \\ &\Sigma={\rm diag}[1,\cdots,1,0,0,0]~~~\text{({\rm \# of 1} = $N_{e}/2$)}. \end{align} -として定義します。これらの記法を用いると、$f_{ij}$(すなわち$F$)の特異値分解は +として定義します。これらの記法を用いると, $f_{ij}$(すなわち$F$)の特異値分解は \begin{align} F=\Phi_{\uparrow}\Sigma\Phi_{\downarrow}^{t}. \end{align} として記述することができます。 -この結果は、もし非ゼロの特異値が$N_{e}/2$個存在し、 -かつ全ての$F$の非ゼロの特異値が$1$であった場合、 +この結果は, もし非ゼロの特異値が$N_{e}/2$個存在し, +かつ全ての$F$の非ゼロの特異値が$1$であった場合, $f_{ij}$が平均場近似解として記述できることを示しています。 -言い換えると、特異値の非ゼロ成分の数とその値が、 -シングルスレータ行列式からパフィアンスレーター行列式がどのようにしてずれるのか、 +言い換えると, 特異値の非ゼロ成分の数とその値が, +シングルスレータ行列式からパフィアンスレーター行列式がどのようにしてずれるのか, という点について定量的な基準を与えることを示しています。 \section{Power-Lanczos法} -このセクションでは、Power-Lanczos法での最適化パラメータ$\alpha$の決定方法について述べます。 -サンプリング数が有限のため、エネルギーの分散が常に正の値を取るよう計算を行うことが重要になります。 -また、ここではシングルステップのLanczos法を適用した後の物理量の計算についても説明します。 +このセクションでは, Power-Lanczos法での最適化パラメータ$\alpha$の決定方法について述べます。 +サンプリング数が有限のため, エネルギーの分散が常に正の値を取るよう計算を行うことが重要になります。 +また, ここではシングルステップのLanczos法を適用した後の物理量の計算についても説明します。 \subsection{$\alpha$の決定} 最初に, 変分モンテカルロ法のサンプリングに関して簡単に説明します。 物理量$\hat{A}$は以下の手順で計算されます: @@ -141,23 +158,23 @@ \subsection{$\alpha$の決定} &\langle \hat{A}\rangle = \frac{\langle \phi| \hat{A}|\phi \rangle}{\langle \phi| \phi \rangle} = \sum_{x} \rho(x) F(x, {\hat{A}}),\\ & \rho(x)=\frac{|\langle \phi|x\rangle|^2}{\langle \phi | \phi \rangle}, ~~~~F(x, {\hat{A}}) = \frac{\langle x| \hat{A}|\phi \rangle}{\langle x| \phi \rangle}. \end{align} -演算子の積$\hat{A}\hat{B}$を計算する場合には、以下の二通りの方法があります。 +演算子の積$\hat{A}\hat{B}$を計算する場合には, 以下の二通りの方法があります。 \begin{align} &\langle \hat{A} \hat{B}\rangle = \sum_{x} \rho(x) F(x, {\hat{A}\hat{B}}),\\ &\langle \hat{A} \hat{B}\rangle = \sum_{x} \rho(x) F^{\dag}(x, {\hat{A})F(x, \hat{B}}). \end{align} -後述するように、後者の表記の方が数値的には安定します。 -例えば、エネルギーの期待値の分散$\sigma^2=\langle (\hat{H}-\langle \hat{H}\rangle)^2\rangle$を考えてみると、 +後述するように, 後者の表記の方が数値的には安定します。 +例えば, エネルギーの期待値の分散$\sigma^2=\langle (\hat{H}-\langle \hat{H}\rangle)^2\rangle$を考えてみると, 分散は以下の2通りの方法で計算できます。 \begin{align} &\sigma^2=\sum_{x} \rho(x) F(x, (\hat{H}-\langle \hat{H}\rangle)^2) = \sum_{x} \rho(x) F(x, \hat{H}^2) - \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 ,\\ &\sigma^2=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}-\langle \hat{H}\rangle)F(x, \hat{H}-\langle \hat{H}\rangle) = \sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{H})- \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 \end{align} -この定義から、後者の方法では常に正の値となることが保証されているのに対して、前者の方法では分散が正の値になることが必ずしも保証されないことが分かります。次に, シングルステップでのpower-Lanczos波動関数$|\phi\rangle =(1+\alpha \hat{H}) |\psi \rangle$に対するエネルギーの期待値とその分散を考えます。エネルギーは以下の式で計算されます: +この定義から, 後者の方法では常に正の値となることが保証されているのに対して, 前者の方法では分散が正の値になることが必ずしも保証されないことが分かります。次に, シングルステップでのpower-Lanczos波動関数$|\phi\rangle =(1+\alpha \hat{H}) |\psi \rangle$に対するエネルギーの期待値とその分散を考えます。エネルギーは以下の式で計算されます: \begin{align} E_{LS}(\alpha) =\frac{\langle \phi| \hat{H} |\phi\rangle}{\langle \phi|\phi\rangle}=\frac{h_1 + \alpha(h_{2(20)} + h_{2(11)}) + \alpha^2 h_{3(12)}}{1 + 2\alpha h_1 + \alpha^2 h_{2(11)}}, \end{align} -ここで、$h_1$, $h_{2(11)},~h_{2(20)},$ and $h_{3(12)}$を以下のように定義しました: +ここで, $h_1$, $h_{2(11)},~h_{2(20)},$ and $h_{3(12)}$を以下のように定義しました: \begin{align} &h_1 =\sum_{x} \rho(x) F^{\dag}(x, \hat{H}),\\ &h_{2(11)}=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{H}),\\ @@ -171,12 +188,12 @@ \subsection{物理量の計算} \begin{align} A_{LS}(\alpha) =\frac{\langle \phi| \hat{A} |\phi\rangle}{\langle \phi|\phi\rangle}=\frac{A_0 + \alpha(A_{1(10)} + A_{1(01)}) + \alpha^2 A_{2(11)}}{1 + 2\alpha h_1 + \alpha^2 h_{2(11)}}, \end{align} -ここで、$A_0$, $A_{1(10)},~A_{1(01)},$ and $A_{2(11)}$は +ここで, $A_0$, $A_{1(10)},~A_{1(01)},$ and $A_{2(11)}$は \begin{align} &A_0 =\sum_{x} \rho(x) F(x, \hat{A}),\\ &A_{1(10)}=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{A}),\\ &A_{1(01)}=\sum_{x} \rho(x) F(x, \hat{A}\hat{H}),\\ &A_{2(11)}=\sum_{x} \rho(x) F^{\dag}(x, \hat{H})F(x, \hat{A}\hat{H}). \end{align} -として定義される変数を表します。プログラムでは、この表式に基づき一体グリーン関数および二体グリーン関数の計算を行っています。 +として定義される変数を表します。プログラムでは, この表式に基づき一体グリーン関数および二体グリーン関数の計算を行っています。 %---------------------------------------------------------- From 99c0210f84181fc0ed76b8cd4d8f51ef74348ba7 Mon Sep 17 00:00:00 2001 From: takeokato719 Date: Mon, 10 Jul 2017 13:24:49 +0900 Subject: [PATCH 07/16] Further improvement of expressions in Chap. 5 for both Japanese and Engligh manual. --- doc/en/chap05_en.tex | 140 ++++++++++++++++++++++--------------------- doc/jp/chap05_jp.tex | 75 +++++++++++++---------- 2 files changed, 114 insertions(+), 101 deletions(-) diff --git a/doc/en/chap05_en.tex b/doc/en/chap05_en.tex index 1e1861d5..fb207921 100644 --- a/doc/en/chap05_en.tex +++ b/doc/en/chap05_en.tex @@ -10,13 +10,13 @@ \section{Variational Monte Calro Method} In calculating expectation values of physical quantities for the trial wave functions, the Markov chain Monte Carlo method is applied for efficient important sampling. -In the present package, we choose a spatial configuration for electrons as a complete set of bases in sampling: +In the mVMC package, we choose a spatial configuration for electrons as a complete set of bases in sampling: \begin{equation} | x\rangle = \prod_{n=1}^{N/2} c_{r_{n\uparrow}}^{\dag} \prod_{n=1}^{N/2} c_{r_{n\downarrow}}^{\dag} |0 \rangle, \end{equation} where $r_{n\sigma}$ is a position of $n$-th electron with $\sigma (=\uparrow \rm{or} \downarrow)$ spin, and $c_{r_{n\sigma}}^{\dag}$ is a creation operator of electrons. -By using this set of bases, the expectation value of an operator $A$ is expressed as +By using this basis set, the expectation value of an operator $A$ is expressed as \begin{equation} \langle A \rangle =\frac{\langle \psi| A| \psi \rangle}{\langle \psi | \psi \rangle} =\sum_x \frac{\langle \psi| A | x\rangle \langle x| \psi \rangle}{\langle \psi |\psi \rangle}. @@ -39,49 +39,55 @@ \section{Variational Monte Calro Method} \section{Bogoliubov representation}\label{sec_bogoliubov_rep} -In the spin system, -the spin indices in input files of \verb|transfer|, \verb|InterAll|, -and correlation functions are specified as those of the Bogoliubov representation. -Spin operators are written by using creation/annihilation operators as follows: +In the VMC calculation for spin systems, we use the Bogoliubov representation. +In the input files defining the one-body term (\verb|transfer|) and the two-body term (\verb|InterAll|), +and the output files for correlation functions, the indices must be assigned by the Bogoliubov representation, +in which the spin operators are generally expressed by creation/annihilation operators of fermions as \begin{align} - S_{i z} &= \sum_{\sigma = -S}^{S} \sigma c_{i \sigma}^\dagger c_{i \sigma} + S_{i z} &= \sum_{\sigma = -S}^{S} \sigma c_{i \sigma}^\dagger c_{i \sigma}, \\ S_{i}^+ &= \sum_{\sigma = -S}^{S-1} \sqrt{S(S+1) - \sigma(\sigma+1)} - c_{i \sigma+1}^\dagger c_{i \sigma} + c_{i \sigma+1}^\dagger c_{i \sigma}, \\ S_{i}^- &= \sum_{\sigma = -S}^{S-1} \sqrt{S(S+1) - \sigma(\sigma+1)} - c_{i \sigma}^\dagger c_{i \sigma+1} + c_{i \sigma}^\dagger c_{i \sigma+1}. \end{align} +Since the present package support only $S=1/2$ spin systems, the Bogoliubov representation obtained +by substituting $S=1/2$ into the above equations is used. -\section{Relation between Pfaffian Slater determinant and single Slater determinant} +\section{Properties of the Pfaffian-Slater determinant} \label{sec:PuffAndSlater} -In this section, we show relation between Pfaffian Slater determinant and single Slater determinant. -We also discuss meaning of the singular value decomposition of coefficients $f_{ij}$. -\subsection{Relation between $f_{ij}$ and $\Phi_{in\sigma}$~(case of anti-parallel pairing)} -Pfaffian Slater determinant [one-body part of the many-variable variational Monte Carlo (mVMC) method] -is defined as + +In this section, we explain some properties of the Pfaffian-Slater determinant. +We derive the general relation between a Pfaffian-Slater determinant and a single Slater determinant +in Sec.~\ref{sec:PfaffianAP} and~\ref{sec:PfaffianP}. +We also discuss meaning of the singular value decomposition of coefficients $f_{ij}$ +in Sec.~\ref{sec:PfaffianSingular}. + +\subsection{Relation between $f_{ij}$ and $\Phi_{in\sigma}$~(the case of the anti-parallel pairing)} +\label{sec:PfaffianAP} + +In the many-variable variational Monte Carlo (mVMC) method, +the one-body part of the trial wave function is expressed by the Pfaffian Slater determinant defined as \begin{equation} |\phi_{\rm Pf}\rangle=\Big(\sum_{i,j=1}^{N_{s}}f_{ij}c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \end{equation} -where $N_{s}$ is number of sites, -$N_{e}$ is number of total particles, -and $f_{ij}$ are variational parameters. -For simplicity, we assume that $f_{ij}$ are real number. -Single Slater determinant is defined as +where $N_{s}$ is number of sites, $N_{e}$ is number of total particles, and $f_{ij}$ are variational parameters. +For simplicity, we assume that $f_{ij}$ are a real number. +The single Slater determinant is defined as \begin{align} |\phi_{\rm SL}\rangle&=\Big(\prod_{n=1}^{N_{e}/2}\psi_{n\uparrow}^{\dagger}\Big) \Big(\prod_{m=1}^{N_{e}/2}\psi_{m\downarrow}^{\dagger}\Big)|0\rangle, \\ -\psi_{n\sigma}^{\dagger}&=\sum_{i=1}^{N_{s}}\Phi_{in\sigma}c^{\dagger}_{i\sigma}. +\psi_{n\sigma}^{\dagger}&=\sum_{i=1}^{N_{s}}\Phi_{in\sigma}c^{\dagger}_{i\sigma}, \end{align} -We note that $\Phi$ is the normalized orthogonal basis, i.e, +Here, $\Phi_{in\sigma}$ is an orthonormal basis, i.e., satisfies \begin{equation} \sum_{i=1}^{N_{s}}\Phi_{in\sigma}\Phi_{im\sigma}=\delta_{nm}, \end{equation} where $\delta_{nm}$ is the Kronecker's delta. -Due to this normalized orthogonality, we obtain -following relation: +From this orthogonality, we can prove the relation \begin{align} [\psi^{\dagger}_{n\sigma},\psi_{m\sigma}]_{+}&=\delta_{nm},\\ G_{ij\sigma}=\langle c_{i\sigma}^{\dagger}c_{j\sigma}\rangle @@ -89,81 +95,76 @@ \subsection{Relation between $f_{ij}$ and $\Phi_{in\sigma}$~(case of anti-parall &=\sum_{n} \Phi_{in\sigma} \Phi_{jn\sigma}. \end{align} -Here, we rewrite $\phi_{\rm SL}$ and obtain explicit -relation between $f_{ij}$ and $\Phi_{in\sigma}$. -By using the commutation relation for $\psi^{\dagger}_{n\sigma}$, -we rewrite $\phi_{\rm SL}$ as +Next, let us prove the relation between $f_{ij}$ and $\Phi_{in\sigma}$ by modifying $|\phi_{\rm SL}\rangle $. +By the commutation relation for $\psi^{\dagger}_{n\sigma}$, $|\phi_{\rm SL}\rangle$ is rewritten as \begin{align} |\phi_{\rm SL}\rangle \propto \prod_{n=1}^{N_{e}/2}\Big(\psi_{n\uparrow}^{\dagger}\psi_{\mu(n)\downarrow}^{\dagger}\Big)|0\rangle, \end{align} -where $\mu(n)$ represents permutation of sequence of $n= 1, 2, \cdots, N_{e}/2$. -For simplicity, we take identity permutation and obtain the relation +where $\mu(n)$ represents permutation of a sequence of natural numbers, $n= 1, 2, \cdots, N_{e}/2$. +For simplicity, let us take identity permutation ($\mu(n) = n$). +By defining $K_{n}^{\dagger}=\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}$, and by +using the relation $K_{n}^{\dagger}K_{m}^{\dagger}=K_{m}^{\dagger}K_{n}^{\dagger}$, +we can derive the relation \begin{align} |\phi_{\rm SL}\rangle &\propto \prod_{n=1}^{N_{e}/2}\Big(\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}\Big)|0\rangle =\prod_{n=1}^{N_{e}/2} K_{n}^{\dagger}|0\rangle \\ &\propto\Big(\sum_{n=1}^{\frac{N_{e}}{2}}K_{n}^{\dagger}\Big)^{\frac{N_{e}}{2}} |0\rangle =\Big(\sum_{i,j=1}^{N_{s}}\Big[\sum_{n=1}^{\frac{N_{e}}{2}}\Phi_{in\uparrow}\Phi_{jn\downarrow}\Big] -c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)|0\rangle, +c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)|0\rangle. \end{align} -where $K_{n}^{\dagger}=\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}$ and -we use the relation $K_{n}^{\dagger}K_{m}^{\dagger}=K_{m}^{\dagger}K_{n}^{\dagger}$. -This result shows that $f_{ij}$ can be expressed by the -coefficients of the single Slater determinant as +This result indicates that $f_{ij}$ is expressed by the coefficients of the single Slater determinant as \begin{align} f_{ij}=\sum_{n=1}^{\frac{N_{e}}{2}}\Phi_{in\uparrow}\Phi_{jn\downarrow}. \end{align} -We note that this is one of expression of $f_{ij}$ for -single Slater determinant, i.e, $f_{ij}$ depend on -the pairing degrees of freedom (choices of $\mu(n)$) and -gauge degrees of freedom ( we can arbitrary change -the sign of $\Phi$ as $\Phi_{in\sigma}\rightarrow -\Phi_{in\sigma}$). -This large degrees of freedom is the origin of huge redundancy of -$f_{ij}$. +We note that this is one of a number of possible expressions of $f_{ij}$ derived from one single Slater determinant. +Since $f_{ij}$ depends not only on the choice of the pairing degrees of freedom (i.e., the choice of $\mu(n)$) but also on +the choice of the gauge degrees of freedom (i.e., the sign of $\Phi_{in\sigma}$), +the parameter $f_{ij}$ has huge redundancy. -\subsection{Relation between $F_{IJ}$ and $\Phi_{In}$~(case of general pairing including parallel pairing)} -Here, we consider the relation between the general Pfaffian -wave functions that include the parallel pairing and -the Slater determinant. +\subsection{Relation between $F_{IJ}$ and $\Phi_{In\sigma}$~(the case of the general pairing)} +\label{sec:PfaffianP} + +We extend the relation between the Pfaffian-Slater wave function and the single Slater wave function +into the general pairing case including the spin-parallel pairing. +We define the Pfaffian-Slater wave function and the single Slater wave function as \begin{align} -|\phi_{\rm Pf}\rangle&=\Big(\sum_{I,J=1}^{2N_{s}}f_{IJ}c_{I}^{\dagger}c_{J}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \\ +|\phi_{\rm Pf}\rangle&=\Big(\sum_{I,J=1}^{2N_{s}}F_{IJ}c_{I}^{\dagger}c_{J}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \\ |\phi_{\rm SL}\rangle&=\Big(\prod_{n=1}^{N_{e}}\psi_{n}^{\dagger}\Big)|0\rangle,~~\psi_{n}^{\dagger}=\sum_{I=1}^{2N_{s}}\Phi_{In}c^{\dagger}_{I}, \end{align} -where $I,J$ denote the site index including the spin degrees of freedom. - -By using the similar argument in the anti-parallel pairing case, -we obtain the following relation. +respectively, where $I$, $J$ denote the site index including the spin degrees of freedom. +By the similar argument as the anti-parallel pairing case, +we can derive the following relation: \begin{align} F_{IJ}=\sum_{n=1}^{\frac{N_{e}}{2}}\Big(\Phi_{In}\Phi_{Jn+1}-\Phi_{Jn}\Phi_{In+1}\Big). \end{align} -Because this relation hold for the case of anti-parallel pairing, -we employ this relation in mVMC ver 1.0. - - +Because this relation hold for the case of anti-parallel pairing, we employ this relation in mVMC ver 1.0 and later. \subsection{Singular value decomposition of $f_{ij}$} +\label{sec:PfaffianSingular} + We define matrices $F$, $\Phi_{\uparrow}$, $\Phi_{\downarrow}$, and $\Sigma$ as \begin{align} &(F)_{ij}=f_{ij},~~~ (\Phi_{\uparrow})_{in}=\Phi_{in\uparrow},~~~ (\Phi_{\downarrow})_{in}=\Phi_{in\downarrow}, \\ -&\Sigma={\rm diag}[1,\cdots,1,0,0,0]~~~\text{({\rm \# of 1} = $N_{e}/2$)}. +&\Sigma={\rm diag}[\underbrace{1,\cdots,1}_{N_e/2},0,0,0]. \end{align} -By using these notations, we can describe the -singular value decomposition of $f_{ij}$ (or equivalently $F$) as +When $f_{ij}$ (i.e., the matrix $F$) is related with a single Slater determinant +of the wave function, we can show that the singular value decomposition of $F$ becomes \begin{align} F=\Phi_{\uparrow}\Sigma\Phi_{\downarrow}^{t}. \end{align} -This result indicates that $f_{ij}$ can be -described by the mean-field solutions -if the number of -nonzero singular values are $N_{e}/2$ and -all the nonzero singular values of $F$ are one. -In other word, the singular values including their numbers -offers the quantitative criterion how the Pfaffian Slater determinant -deviates from the single Slate determinant. +This result indicates that when the number of nonzero singular values is $N_{e}/2$, +and when all the nonzero singular values of $F$ are one in the singular value decomposition of $F$, +the Pfaffian-Slater wave function parametrized by $f_{ij}$ coincides with a single Slater determinant +(i.e. a solution of the mean-field approximation). +In other words, the numbers of the nonzero singular values and their difference from one offer +a quantitative criterion how the Pfaffian-Slater determinant deviates from the single Slate determinant. \section{Power Lanczos method} -In this section, we show how to determine $\alpha$ in the power-Lanczos method. Within the finite- number sampling, it is important to use the decomposition that guarantees the positive definitive relation for variance. We also explain the calculation of physical quantities after the single-step Lanczos method. + +In this section, we show how to determine $\alpha$ in the power-Lanczos method. +We also explain the calculation of physical quantities after the single-step Lanczos method. \subsection{Determination of $\alpha$} First, we briefly explain the sampling procedure of the variational Monte Carlo (VMC) method. Physical properties $\hat{A}$ are calculated as follows: @@ -180,8 +181,9 @@ \subsection{Determination of $\alpha$} For example, we consider the expectation value of the variance, which is defined as $\sigma^2=\langle (\hat{H}-\langle \hat{H}\rangle)^2\rangle$. There are two ways to calculate the variance. \begin{align} -&\sigma^2=\sum_{x} \rho(x) F(x, (\hat{H}-\langle \hat{H}\rangle)^2) = \sum_{x} \rho(x) F(x, \hat{H}^2) - \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 ,\\ -&\sigma^2=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}-\langle \hat{H}\rangle)F(x, \hat{H}-\langle \hat{H}\rangle) = \sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{H})- \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 +\sigma^2&=\sum_{x} \rho(x) F(x, (\hat{H}-\langle \hat{H}\rangle)^2) = \sum_{x} \rho(x) F(x, \hat{H}^2) - \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 ,\\ +\sigma^2&=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}-\langle \hat{H}\rangle)F(x, \hat{H}-\langle \hat{H}\rangle) \nonumber \\ +&= \sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{H})- \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 \end{align} From its definition, the latter way gives the positive definitive variance even for the finite sampling while the former way does not guarantee the positive definitiveness of the variance. Here, we consider the expectation values of energy and variance for the (single-step) power Lanczos wave function $|\phi\rangle =(1+\alpha \hat{H}) |\psi \rangle$. The energy is calculated as \begin{align} diff --git a/doc/jp/chap05_jp.tex b/doc/jp/chap05_jp.tex index 89520a8f..2772fab9 100644 --- a/doc/jp/chap05_jp.tex +++ b/doc/jp/chap05_jp.tex @@ -28,8 +28,8 @@ \section{変分モンテカルロ法} \begin{equation} \langle A \rangle =\sum_x \rho(x) \frac{\langle \psi| A | x\rangle }{\langle \psi |x \rangle} \end{equation} -と書き直した後、$x$に関する和を重み付きサンプリングをマルコフ連鎖モンテカルロ法により -実行しています。Local Green's function $G_{ij\sigma\sigma'}(x)$は +と書き直した後、$x$に関する和をマルコフ連鎖モンテカルロ法により +評価しています。Local Green's function $G_{ij\sigma\sigma'}(x)$は \begin{equation} G_{ij\sigma\sigma'}(x)=\frac{\langle \psi | c_{i\sigma}^{\dag} c_{j\sigma'} | \psi \rangle}{\langle \psi | x \rangle} \end{equation} @@ -42,7 +42,7 @@ \section{Bogoliubov表現}\label{sec_bogoliubov_rep} スピン系の計算において一体項(\verb|transfer|), \verb|InterAll|形式での相互作用, 相関関数のインデックスの指定にはBogoliubov表現が使われています。 一般に、スピンの演算子は次のようにフェルミオンの生成$\cdot$消滅演算子$c_{i \sigma}$, -$c_{i \sigma}^\dagger$によって書き換えることができます。 +$c_{i \sigma}^\dagger$によって書き換えることができます: \begin{align} S_{i z} &= \sum_{\sigma = -S}^{S} \sigma c_{i \sigma}^\dagger c_{i \sigma} \\ @@ -57,25 +57,28 @@ \section{Bogoliubov表現}\label{sec_bogoliubov_rep} 本パッケージでは、$S=1/2$のスピン系のみ取り扱っており、上記の式で $S=1/2$と置いたものを用いています。 -\section{{パフィアン行列式とスレーター行列式の関係}} +\section{{パフィアン-スレーター行列式の性質}} \label{sec:PuffAndSlater} -この節では, パフィアン行列式とスレーター行列式の関係および$f_{ij}$の特異値分解の意味について説明します。 +この節では, パフィアン-スレーター行列式のもつ性質について簡単にまとめます。 +\ref{sec:PfaffianAP}節と\ref{sec:PfaffianP}節でパフィアン-スレーター行列式と単一スレーター行列式の間の関係を導出し、 +\ref{sec:PfaffianSingular}節で$f_{ij}$の特異値分解の意味について説明します。 \subsection{$f_{ij}$と$\Phi_{in\sigma}$の関係~(スピン反平行の場合)} +\label{sec:PfaffianAP} -パフィアン-スレーター行列式(多変数変分モンテカルロ法の一体部分)は +多変数変分モンテカルロ法で試行波動関数の一体部分として用いられるパフィアン-スレーター行列式は \begin{equation} |\phi_{\rm Pf}\rangle=\Big(\sum_{i,j=1}^{N_{s}}f_{ij}c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \end{equation} のように定義されます。ここで, $N_{s}$はサイト数, $N_{e}$は全電子数, $f_{ij}$は変分パラメータです。 -簡単化のため, 以降$f_{ij}$は実数と仮定します。また, シングルスレーター行列式として +簡単化のため, 以降$f_{ij}$は実数と仮定します。また, 単一スレーター行列式として \begin{align} |\phi_{\rm SL}\rangle&=\Big(\prod_{n=1}^{N_{e}/2}\psi_{n\uparrow}^{\dagger}\Big) \Big(\prod_{m=1}^{N_{e}/2}\psi_{m\downarrow}^{\dagger}\Big)|0\rangle, \\ \psi_{n\sigma}^{\dagger}&=\sum_{i=1}^{N_{s}}\Phi_{in\sigma}c^{\dagger}_{i\sigma}. \end{align} -を定義します。ただし, $\Phi$は正規直行基底であり, クロネッカーのデルタ$\delta_{nm}$を用い +を定義します。ただし, $\Phi$は正規直交基底であり, クロネッカーのデルタ$\delta_{nm}$を用い \begin{equation} \sum_{i=1}^{N_{s}}\Phi_{in\sigma}\Phi_{im\sigma}=\delta_{nm}, \end{equation} @@ -88,13 +91,13 @@ \subsection{$f_{ij}$と$\Phi_{in\sigma}$の関係~(スピン反平行の場合)} \end{align} が導かれます。 -次に, $\phi_{\rm SL}$を変形し, $f_{ij}$と$\Phi_{in\sigma}$の関係をあらわにします。 -$\psi^{\dagger}_{n\sigma}$の交換関係を用いると, $\phi_{\rm SL}$は +次に, $|\phi_{\rm SL}\rangle $を変形し, $f_{ij}$と$\Phi_{in\sigma}$の間に成り立つ関係式を示します。 +$\psi^{\dagger}_{n\sigma}$の交換関係を用いると, $|\phi_{\rm SL}\rangle $は \begin{align} |\phi_{\rm SL}\rangle \propto \prod_{n=1}^{N_{e}/2}\Big(\psi_{n\uparrow}^{\dagger}\psi_{\mu(n)\downarrow}^{\dagger}\Big)|0\rangle, \end{align} と書き換えられます。ここで, $\mu(n)$は$n= 1, 2, \cdots, N_{e}/2$の置換を表します。 -ここで議論を簡単にするため, 同一のペア$n=\mu(n)$を採用します。 +議論を簡単にするため, 同一のペア$n=\mu(n)$となる場合を考えましょう。 このとき, $K_{n}^{\dagger}=\psi_{n\uparrow}^{\dagger}\psi_{n\downarrow}^{\dagger}$として, $K_{n}^{\dagger}K_{m}^{\dagger}=K_{m}^{\dagger}K_{n}^{\dagger}$の関係を用いることで, \begin{align} @@ -102,55 +105,62 @@ \subsection{$f_{ij}$と$\Phi_{in\sigma}$の関係~(スピン反平行の場合)} =\prod_{n=1}^{N_{e}/2} K_{n}^{\dagger}|0\rangle \\ &\propto\Big(\sum_{n=1}^{\frac{N_{e}}{2}}K_{n}^{\dagger}\Big)^{\frac{N_{e}}{2}} |0\rangle =\Big(\sum_{i,j=1}^{N_{s}}\Big[\sum_{n=1}^{\frac{N_{e}}{2}}\Phi_{in\uparrow}\Phi_{jn\downarrow}\Big] -c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)|0\rangle, +c_{i\uparrow}^{\dagger}c_{j\downarrow}^{\dagger}\Big)^{N_e/2}|0\rangle, \end{align} -の関係が得られます。これより$f_{ij}$はシングルスレーター行列式の係数により +の関係が得られます。これより$f_{ij}$は単一スレーター行列式の係数により \begin{align} f_{ij}=\sum_{n=1}^{\frac{N_{e}}{2}}\Phi_{in\uparrow}\Phi_{jn\downarrow}. \end{align} -として表されることが分かります。なお, この形式はシングルスレーター行列式で与えられる$f_{ij}$の表式の一つであり, -実際にはペアを組む自由度(どの$\mu(n)$を選ぶか)およびゲージの自由度(すなわち$\Phi$の符号の自由度)に依存します。 +として表されることが分かります。なお, この形式は単一スレーター行列式で与えられる$f_{ij}$の表式の一つであり, +実際にはペアを組む自由度(どの$\mu(n)$を選ぶか)およびゲージの自由度(すなわち$\Phi_{in\sigma}$の符号の自由度)に依存します。 この自由度の多さが$f_{ij}$の冗長性につながっています。 -\subsection{$F_{IJ}$と$\Phi_{In}$の関係~(スピン平行も含めた場合)} -以下の同種スピンのペアリングも考えたパフィアン波動関数と -スレーター波動関数を考えます(ここで$I,J$はスピン自由度も含めたサイトのインデックス). +\subsection{$F_{IJ}$と$\Phi_{In\sigma}$の関係~(スピン平行も含めた場合)} +\label{sec:PfaffianP} + +前節で考察したパフィアン-スレーター波動関数と単一スレーター波動関数の間の関係は、 +同種スピンのペアリングも考えた場合に拡張することができます。 +パフィアン-スレーター波動関数とスレーター波動関数をそれぞれ \begin{align} -|\phi_{\rm Pf}\rangle&=\Big(\sum_{I,J=1}^{2N_{s}}f_{IJ}c_{I}^{\dagger}c_{J}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \\ +|\phi_{\rm Pf}\rangle&=\Big(\sum_{I,J=1}^{2N_{s}}F_{IJ}c_{I}^{\dagger}c_{J}^{\dagger}\Big)^{N_{\rm e}/2}|0\rangle, \\ |\phi_{\rm SL}\rangle&=\Big(\prod_{n=1}^{N_{e}}\psi_{n}^{\dagger}\Big)|0\rangle,~~\psi_{n}^{\dagger}=\sum_{I=1}^{2N_{s}}\Phi_{In}c^{\dagger}_{I}. \end{align} +と定義します。ここで$I,J$はスピン自由度も含めたサイトのインデックスです。 スピン反平行の場合とほぼ同様の議論を用いることで, \begin{align} F_{IJ}=\sum_{n=1}^{\frac{N_{e}}{2}}\Big(\Phi_{In}\Phi_{Jn+1}-\Phi_{Jn}\Phi_{In+1}\Big). \end{align} -の関係を示すことができます。 -これはスピン反平行の場合にもそのまま適用できるので, -mVMC ver1.0ではこの表式を使用しています。 +の関係を示すことができます。これはスピン反平行のペアリングにもそのまま適用できるので, +mVMC ver1.0以降ではこの表式を使用しています。 \subsection{$f_{ij}$の特異値分解} -行列$F$, $\Phi_{\uparrow}$, $\Phi_{\downarrow}$,$\Sigma$を +\label{sec:PfaffianSingular} + +行列$F$, $\Phi_{\uparrow}$, $\Phi_{\downarrow}$, $\Sigma$を \begin{align} &(F)_{ij}=f_{ij},~~~ (\Phi_{\uparrow})_{in}=\Phi_{in\uparrow},~~~ (\Phi_{\downarrow})_{in}=\Phi_{in\downarrow}, \\ -&\Sigma={\rm diag}[1,\cdots,1,0,0,0]~~~\text{({\rm \# of 1} = $N_{e}/2$)}. +&\Sigma={\rm diag}[\underbrace{1,\cdots,1}_{N_e/2},0,0,0], \end{align} -として定義します。これらの記法を用いると, $f_{ij}$(すなわち$F$)の特異値分解は +として定義します。前節のように$f_{ij}$(すなわち$F$)が単一スレーター行列と関係づけられて +いるとき、$F$の特異値分解は \begin{align} F=\Phi_{\uparrow}\Sigma\Phi_{\downarrow}^{t}. \end{align} -として記述することができます。 -この結果は, もし非ゼロの特異値が$N_{e}/2$個存在し, -かつ全ての$F$の非ゼロの特異値が$1$であった場合, -$f_{ij}$が平均場近似解として記述できることを示しています。 +となることを示すことができます。 +この結果は、一般に$F$を特異値分解したとき、非ゼロの特異値が$N_{e}/2$個存在し, +かつ全ての$F$の非ゼロの特異値が$1$であった場合, $f_{ij}$が単一スレーター波動関数を +記述すること(つまり平均場近似解として記述できること)を表しています。 言い換えると, 特異値の非ゼロ成分の数とその値が, シングルスレータ行列式からパフィアンスレーター行列式がどのようにしてずれるのか, という点について定量的な基準を与えることを示しています。 \section{Power-Lanczos法} + このセクションでは, Power-Lanczos法での最適化パラメータ$\alpha$の決定方法について述べます。 -サンプリング数が有限のため, エネルギーの分散が常に正の値を取るよう計算を行うことが重要になります。 また, ここではシングルステップのLanczos法を適用した後の物理量の計算についても説明します。 + \subsection{$\alpha$の決定} 最初に, 変分モンテカルロ法のサンプリングに関して簡単に説明します。 物理量$\hat{A}$は以下の手順で計算されます: @@ -167,8 +177,9 @@ \subsection{$\alpha$の決定} 例えば, エネルギーの期待値の分散$\sigma^2=\langle (\hat{H}-\langle \hat{H}\rangle)^2\rangle$を考えてみると, 分散は以下の2通りの方法で計算できます。 \begin{align} -&\sigma^2=\sum_{x} \rho(x) F(x, (\hat{H}-\langle \hat{H}\rangle)^2) = \sum_{x} \rho(x) F(x, \hat{H}^2) - \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 ,\\ -&\sigma^2=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}-\langle \hat{H}\rangle)F(x, \hat{H}-\langle \hat{H}\rangle) = \sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{H})- \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 +\sigma^2 &=\sum_{x} \rho(x) F(x, (\hat{H}-\langle \hat{H}\rangle)^2) = \sum_{x} \rho(x) F(x, \hat{H}^2) - \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 ,\\ +\sigma^2 &=\sum_{x} \rho(x) F^{\dag}(x, \hat{H}-\langle \hat{H}\rangle)F(x, \hat{H}-\langle \hat{H}\rangle) \nonumber \\ +&= \sum_{x} \rho(x) F^{\dag}(x, \hat{H}) F(x, \hat{H})- \left[ \sum_{x} \rho(x) F(x, \hat{H})\right]^2 \end{align} この定義から, 後者の方法では常に正の値となることが保証されているのに対して, 前者の方法では分散が正の値になることが必ずしも保証されないことが分かります。次に, シングルステップでのpower-Lanczos波動関数$|\phi\rangle =(1+\alpha \hat{H}) |\psi \rangle$に対するエネルギーの期待値とその分散を考えます。エネルギーは以下の式で計算されます: \begin{align} From 4f1905185894b9cc756e5016507779cfa29c9b93 Mon Sep 17 00:00:00 2001 From: tmisawa Date: Wed, 12 Jul 2017 15:25:12 +0900 Subject: [PATCH 08/16] #172 make fij for only APorbital --- src/ComplexUHF/output.c | 143 ++++++++++++++++++++++++++++------------ src/ComplexUHF/src/UHF | Bin 0 -> 317693 bytes 2 files changed, 102 insertions(+), 41 deletions(-) create mode 100755 src/ComplexUHF/src/UHF diff --git a/src/ComplexUHF/output.c b/src/ComplexUHF/output.c index 823293af..04e96278 100644 --- a/src/ComplexUHF/output.c +++ b/src/ComplexUHF/output.c @@ -27,6 +27,7 @@ along with this program. If not, see http://www.gnu.org/licenses/. int MakeOrbitalFile(struct BindStruct *X); void cal_cisajs(struct BindStruct *X); void OutputAntiParallel(struct BindStruct *X,double complex **UHF_Fij,double complex *ParamOrbital,int *CountOrbital); +void OutputAntiParallel_2(struct BindStruct *X,double complex **UHF_Fij,double complex *ParamOrbital,int *CountOrbital); void OutputParallel(struct BindStruct *X,double complex **UHF_Fij,double complex *ParamOrbital,int *CountOrbital); void OutputGeneral(struct BindStruct *X,double complex **UHF_Fij,double complex *ParamOrbital,int *CountOrbital); @@ -122,51 +123,79 @@ int MakeOrbitalFile(struct BindStruct *X){ int isite, jsite; double complex **UHF_Fij; double complex *ParamOrbital; + int *CountOrbital; - //int Orbitalidx; - //int int_i,int_j,int_k,int_l,xMsize; - //double complex **tmp_mat,**vec; - //double *r; - //char fileName[256]; - //int ini,fin,tmp_i; +/*this part only for anti-parallel*/ + int Orbitalidx; + int int_i,int_j,int_k,int_l,xMsize; + double complex **tmp_mat,**vec,**tmp_SLT_U,**tmp_SLT_D,**AP_UHF_fij; + double complex tmp; + double *r; + char fileName[256]; + int ini,fin,tmp_i; -/*this part only for anti-parallel +/*this part only for anti-parallel*/ //[s] for anti-pararell, rediag - xMsize = X->Def.Nsite; - c_malloc2(tmp_mat,xMsize,xMsize); - c_malloc2(vec,xMsize,xMsize); - d_malloc1(r,xMsize); - for(int_l = 0; int_l < 2*xMsize; int_l++){ - for(int_k = 0; int_k < 2*X->Def.Ne; int_k++){ - X->Large.R_SLT[int_l][int_k] = 0.0; - } - } -// for up - for(int_i = 0;int_i < xMsize; int_i++){ - for(int_j = 0;int_j < xMsize; int_j++){ - tmp_mat[int_i][int_j] = X->Large.Ham[int_i][int_j]; - } - } - ZHEEVall(xMsize,tmp_mat,r,vec); - for(int_k = 0; int_k < X->Def.Ne; int_k++){ - for(int_l = 0; int_l < xMsize; int_l++){ - X->Large.R_SLT[int_l][2*int_k] = (vec[int_k][int_l]); - } - } -// for down - for(int_i = 0;int_i < xMsize; int_i++){ - for(int_j = 0;int_j < xMsize; int_j++){ - tmp_mat[int_i][int_j] = X->Large.Ham[int_i+xMsize][int_j+xMsize]; - } - } - ZHEEVall(xMsize,tmp_mat,r,vec); - for(int_k = 0; int_k < X->Def.Ne; int_k++){ - for(int_l = 0; int_l < xMsize; int_l++){ - X->Large.R_SLT[int_l+xMsize][2*int_k+1] = (vec[int_k][int_l]); - } - } + if(X->Def.NOrbitalIdx>0){/*[s]X->Def.NOrbitalIdx>0 */ + if(X->Def.OrbitalOutputMode==1){/*[s]X->Def.OrbitalOutputMode==1 */ + xMsize = X->Def.Nsite; + c_malloc2(tmp_mat,xMsize,xMsize); + c_malloc2(vec,xMsize,xMsize); + c_malloc2(tmp_SLT_U,xMsize,xMsize); + c_malloc2(tmp_SLT_D,xMsize,xMsize); + c_malloc2(AP_UHF_fij,xMsize,xMsize); + d_malloc1(r,xMsize); + for(int_l = 0; int_l < xMsize; int_l++){ + for(int_k = 0; int_k < xMsize; int_k++){ + tmp_SLT_U[int_l][int_k] = 0.0; + tmp_SLT_D[int_l][int_k] = 0.0; + } + } + // for up + for(int_i = 0;int_i < xMsize; int_i++){ + for(int_j = 0;int_j < xMsize; int_j++){ + tmp_mat[int_i][int_j] = X->Large.Ham[int_i][int_j]; + } + } + ZHEEVall(xMsize,tmp_mat,r,vec); + for(int_k = 0; int_k < xMsize; int_k++){ // int_k = n + for(int_l = 0; int_l < xMsize; int_l++){ + tmp_SLT_U[int_l][int_k] = vec[int_k][int_l]; + } + } + // for down + for(int_i = 0;int_i < xMsize; int_i++){ + for(int_j = 0;int_j < xMsize; int_j++){ + tmp_mat[int_i][int_j] = X->Large.Ham[int_i+xMsize][int_j+xMsize]; + } + } + ZHEEVall(xMsize,tmp_mat,r,vec); + for(int_k = 0; int_k < xMsize; int_k++){ // int_k: Ne + for(int_l = 0; int_l < xMsize; int_l++){ + tmp_SLT_D[int_l][int_k] = (vec[int_k][int_l]); + } + } + + for(int_i = 0; int_i < xMsize; int_i++){ // int_k: Ne + for(int_j = 0; int_j < xMsize; int_j++){ + tmp = 0.0; + for(n=0;n< X->Def.Ne;n++){ + tmp += tmp_SLT_U[int_i][n]*tmp_SLT_D[int_j][n]; + } + printf(" %d %d %lf %lf \n",int_i,int_j,creal(tmp),cimag(tmp)); + AP_UHF_fij[int_i][int_j] = tmp; + } + } + + c_malloc1(ParamOrbital, X->Def.NOrbitalIdx); + i_malloc1(CountOrbital, X->Def.NOrbitalIdx); + OutputAntiParallel_2(X,AP_UHF_fij,ParamOrbital,CountOrbital); + c_free1(ParamOrbital, X->Def.NOrbitalIdx); + i_free1(CountOrbital, X->Def.NOrbitalIdx); + }/*[s]X->Def.OrbitalOutputMode==1 */ + }/*[s]X->Def.NOrbitalIdx > 0 */ //[e] for anti-pararell -*/ + if(X->Def.NOrbitalIdx>0){ c_malloc2(UHF_Fij, X->Def.Nsite*2, X->Def.Nsite*2); for(ispin=0; ispin<2; ispin++){ @@ -209,6 +238,38 @@ int MakeOrbitalFile(struct BindStruct *X){ return 0; } +void OutputAntiParallel_2(struct BindStruct *X,double complex **UHF_Fij,double complex *ParamOrbital,int *CountOrbital){ + int i,j,Orbitalidx,isite,jsite; + char fileName[256]; + + for (i = 0; i < X->Def.NOrbitalIdx; i++) { // all clear + ParamOrbital[i] = 0; + CountOrbital[i] = 0; + } + for(i = 0; i < X->Def.Nsite; i++) { + for(j = 0; j < X->Def.Nsite; j++) { + isite = i + 0 * X->Def.Nsite; + jsite = j + 1 * X->Def.Nsite; + Orbitalidx = X->Def.OrbitalIdx[isite][jsite]; + printf(" %d %d %d \n", isite,jsite,Orbitalidx); + if(Orbitalidx != -1) { + ParamOrbital[Orbitalidx] += UHF_Fij[i][j]; + CountOrbital[Orbitalidx] += 1; + printf(" %d %d %d %lf %lf \n", isite,jsite,Orbitalidx,creal(ParamOrbital[Orbitalidx]),cimag(ParamOrbital[Orbitalidx])); + } + } + } + for (i = 0; i < X->Def.NOrbitalAP; i++) { + ParamOrbital[i] /= (double) CountOrbital[i]; + ParamOrbital[i] += genrand_real2() * pow(10.0, -X->Def.eps_int_slater); + } + sprintf(fileName, "Only_%s_APOrbital_opt.dat", X->Def.CParaFileHead); + Child_OutputOptData(fileName, "NOrbitalAP", ParamOrbital, X->Def.NOrbitalAP); + printf("fij for mVMC are outputted to %s.\n", fileName); +} + + + void OutputAntiParallel(struct BindStruct *X,double complex **UHF_Fij,double complex *ParamOrbital,int *CountOrbital){ int i,j,Orbitalidx,isite,jsite; char fileName[256]; diff --git a/src/ComplexUHF/src/UHF b/src/ComplexUHF/src/UHF new file mode 100755 index 0000000000000000000000000000000000000000..d40330df3c29d19035eb63fa3f4da585fa708869 GIT binary patch literal 317693 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

{sq_umO?!CcKSptba7ZpW)-qY8 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�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

-^9q^gR1!eU7 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 HZY%P?MBYAQ literal 0 HcmV?d00001 From e57e92009e9cb501da13b4650d880aaf7c888b02 Mon Sep 17 00:00:00 2001 From: k-yoshimi Date: Wed, 12 Jul 2017 22:37:22 +0900 Subject: [PATCH 09/16] #173 change file name from ls.dat to ls_out.dat --- src/mVMC/initfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mVMC/initfile.c b/src/mVMC/initfile.c index 7765b207..815f971f 100644 --- a/src/mVMC/initfile.c +++ b/src/mVMC/initfile.c @@ -106,7 +106,7 @@ void InitFilePhysCal(int i, int rank) { } if(NLanczosMode>0){ - sprintf(fileName, "%s_ls_%03d.dat", CDataFileHead, idx); + sprintf(fileName, "%s_ls_out_%03d.dat", CDataFileHead, idx); FileLS = fopen(fileName, "w"); sprintf(fileName, "%s_ls_qqqq_%03d.dat", CDataFileHead, idx); From fdd3b2eb116d3f428bfde7f25f75b257770c0667 Mon Sep 17 00:00:00 2001 From: tmisawa Date: Thu, 20 Jul 2017 14:45:48 +0900 Subject: [PATCH 10/16] #172 rename output files --- src/ComplexUHF/output.c | 65 ++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/src/ComplexUHF/output.c b/src/ComplexUHF/output.c index 04e96278..5b5b1409 100644 --- a/src/ComplexUHF/output.c +++ b/src/ComplexUHF/output.c @@ -193,48 +193,47 @@ int MakeOrbitalFile(struct BindStruct *X){ c_free1(ParamOrbital, X->Def.NOrbitalIdx); i_free1(CountOrbital, X->Def.NOrbitalIdx); }/*[s]X->Def.OrbitalOutputMode==1 */ - }/*[s]X->Def.NOrbitalIdx > 0 */ //[e] for anti-pararell - - if(X->Def.NOrbitalIdx>0){ - c_malloc2(UHF_Fij, X->Def.Nsite*2, X->Def.Nsite*2); - for(ispin=0; ispin<2; ispin++){ - for(jspin=0; jspin<2; jspin++){ - for(i=0;i< X->Def.Nsite;i++){ - for(j=0;j< X->Def.Nsite;j++){ - isite = i+ispin*X->Def.Nsite; - jsite = j+jspin*X->Def.Nsite; - UHF_Fij[isite][jsite]=0; - for(n=0;n< 2*X->Def.Ne;n+=2){ - UHF_Fij[isite][jsite] += conj(X->Large.R_SLT[isite][n])*conj(X->Large.R_SLT[jsite][n+1])- conj(X->Large.R_SLT[isite][n+1])*conj(X->Large.R_SLT[jsite][n]); + else{ + c_malloc2(UHF_Fij, X->Def.Nsite*2, X->Def.Nsite*2); + for(ispin=0; ispin<2; ispin++){ + for(jspin=0; jspin<2; jspin++){ + for(i=0;i< X->Def.Nsite;i++){ + for(j=0;j< X->Def.Nsite;j++){ + isite = i+ispin*X->Def.Nsite; + jsite = j+jspin*X->Def.Nsite; + UHF_Fij[isite][jsite]=0; + for(n=0;n< 2*X->Def.Ne;n+=2){ + UHF_Fij[isite][jsite] += conj(X->Large.R_SLT[isite][n])*conj(X->Large.R_SLT[jsite][n+1])- conj(X->Large.R_SLT[isite][n+1])*conj(X->Large.R_SLT[jsite][n]); + } } } } } - } - //printf(" %d %d %d \n",X->Def.NOrbitalAP,X->Def.NOrbitalP,X->Def.NOrbitalIdx); - if(X->Def.OrbitalOutputMode>0){ - c_malloc1(ParamOrbital, X->Def.NOrbitalIdx); - i_malloc1(CountOrbital, X->Def.NOrbitalIdx); + //printf(" %d %d %d \n",X->Def.NOrbitalAP,X->Def.NOrbitalP,X->Def.NOrbitalIdx); + if(X->Def.OrbitalOutputMode==2){ // AP+P + c_malloc1(ParamOrbital, X->Def.NOrbitalIdx); + i_malloc1(CountOrbital, X->Def.NOrbitalIdx); // - OutputAntiParallel(X,UHF_Fij,ParamOrbital,CountOrbital); - if(X->Def.OrbitalOutputMode==2){ - OutputParallel(X,UHF_Fij,ParamOrbital,CountOrbital); - } + OutputAntiParallel(X,UHF_Fij,ParamOrbital,CountOrbital); + if(X->Def.OrbitalOutputMode==2){ + OutputParallel(X,UHF_Fij,ParamOrbital,CountOrbital); + } // - c_free1(ParamOrbital, X->Def.NOrbitalIdx); - i_free1(CountOrbital, X->Def.NOrbitalIdx); - }else if(X->Def.OrbitalOutputMode==0){ - c_malloc1(ParamOrbital, X->Def.NOrbitalIdx); - i_malloc1(CountOrbital, X->Def.NOrbitalIdx); + c_free1(ParamOrbital, X->Def.NOrbitalIdx); + i_free1(CountOrbital, X->Def.NOrbitalIdx); + }else if(X->Def.OrbitalOutputMode==0){ // Only General + c_malloc1(ParamOrbital, X->Def.NOrbitalIdx); + i_malloc1(CountOrbital, X->Def.NOrbitalIdx); // - OutputGeneral(X,UHF_Fij,ParamOrbital,CountOrbital); + OutputGeneral(X,UHF_Fij,ParamOrbital,CountOrbital); // - c_free1(ParamOrbital, X->Def.NOrbitalIdx); - i_free1(CountOrbital, X->Def.NOrbitalIdx); + c_free1(ParamOrbital, X->Def.NOrbitalIdx); + i_free1(CountOrbital, X->Def.NOrbitalIdx); + } + c_free2(UHF_Fij, X->Def.Nsite * 2, X->Def.Nsite * 2); } - c_free2(UHF_Fij, X->Def.Nsite * 2, X->Def.Nsite * 2); - } + }/*[e]X->Def.NOrbitalIdx>0 */ return 0; } @@ -263,7 +262,7 @@ void OutputAntiParallel_2(struct BindStruct *X,double complex **UHF_Fij,double c ParamOrbital[i] /= (double) CountOrbital[i]; ParamOrbital[i] += genrand_real2() * pow(10.0, -X->Def.eps_int_slater); } - sprintf(fileName, "Only_%s_APOrbital_opt.dat", X->Def.CParaFileHead); + sprintf(fileName, "%s_APOrbital_opt.dat", X->Def.CParaFileHead); Child_OutputOptData(fileName, "NOrbitalAP", ParamOrbital, X->Def.NOrbitalAP); printf("fij for mVMC are outputted to %s.\n", fileName); } From c6ca2c66f61cdc02fc02160e6371b616aafb563e Mon Sep 17 00:00:00 2001 From: tmisawa Date: Thu, 20 Jul 2017 16:50:40 +0900 Subject: [PATCH 11/16] #172 delete printf in output.c --- src/ComplexUHF/output. | 0 src/ComplexUHF/output.c | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 src/ComplexUHF/output. diff --git a/src/ComplexUHF/output. b/src/ComplexUHF/output. new file mode 100644 index 00000000..e69de29b diff --git a/src/ComplexUHF/output.c b/src/ComplexUHF/output.c index 5b5b1409..92171bff 100644 --- a/src/ComplexUHF/output.c +++ b/src/ComplexUHF/output.c @@ -182,7 +182,7 @@ int MakeOrbitalFile(struct BindStruct *X){ for(n=0;n< X->Def.Ne;n++){ tmp += tmp_SLT_U[int_i][n]*tmp_SLT_D[int_j][n]; } - printf(" %d %d %lf %lf \n",int_i,int_j,creal(tmp),cimag(tmp)); + //printf(" %d %d %lf %lf \n",int_i,int_j,creal(tmp),cimag(tmp)); AP_UHF_fij[int_i][int_j] = tmp; } } @@ -250,11 +250,11 @@ void OutputAntiParallel_2(struct BindStruct *X,double complex **UHF_Fij,double c isite = i + 0 * X->Def.Nsite; jsite = j + 1 * X->Def.Nsite; Orbitalidx = X->Def.OrbitalIdx[isite][jsite]; - printf(" %d %d %d \n", isite,jsite,Orbitalidx); + //printf(" %d %d %d \n", isite,jsite,Orbitalidx); if(Orbitalidx != -1) { ParamOrbital[Orbitalidx] += UHF_Fij[i][j]; CountOrbital[Orbitalidx] += 1; - printf(" %d %d %d %lf %lf \n", isite,jsite,Orbitalidx,creal(ParamOrbital[Orbitalidx]),cimag(ParamOrbital[Orbitalidx])); + //printf(" %d %d %d %lf %lf \n", isite,jsite,Orbitalidx,creal(ParamOrbital[Orbitalidx]),cimag(ParamOrbital[Orbitalidx])); } } } From 742de7c7902b2f940b45f9a8407d771f18b0ca1b Mon Sep 17 00:00:00 2001 From: tmisawa Date: Thu, 20 Jul 2017 16:51:12 +0900 Subject: [PATCH 12/16] #172 delete output. --- src/ComplexUHF/output. | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/ComplexUHF/output. diff --git a/src/ComplexUHF/output. b/src/ComplexUHF/output. deleted file mode 100644 index e69de29b..00000000 From 3381d840d428114d4474810309a4b1daaa72512a Mon Sep 17 00:00:00 2001 From: Yuichi Motoyama Date: Thu, 27 Jul 2017 13:16:06 +0900 Subject: [PATCH 13/16] rm executable file #178 --- src/ComplexUHF/src/UHF | Bin 317693 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 src/ComplexUHF/src/UHF diff --git a/src/ComplexUHF/src/UHF b/src/ComplexUHF/src/UHF deleted file mode 100755 index d40330df3c29d19035eb63fa3f4da585fa708869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317693 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

{sq_umO?!CcKSptba7ZpW)-qY8 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�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

-^9q^gR1!eU7 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 HZY%P?MBYAQ From 63d25b83ccad5e9b58795ba444afd83e8a30382d Mon Sep 17 00:00:00 2001 From: mitsuaki1987 Date: Tue, 22 Aug 2017 13:45:22 +0900 Subject: [PATCH 14/16] Unify to HPhi 7eb9d81fe504a89861eb570f492bd48748ab8385 --- src/StdFace/ChainLattice.c | 63 +-- src/StdFace/FCOrtho.c | 54 +-- src/StdFace/HoneycombLattice.c | 52 +-- src/StdFace/Kagome.c | 93 ++-- src/StdFace/Ladder.c | 56 +-- src/StdFace/Orthorhombic.c | 54 +-- src/StdFace/Pyrochlore.c | 83 ++-- src/StdFace/SquareLattice.c | 52 +-- src/StdFace/StdFace_ModelUtil.c | 232 +++++----- src/StdFace/StdFace_ModelUtil.h | 22 +- src/StdFace/StdFace_main.c | 732 ++++++++++++++++++-------------- src/StdFace/StdFace_vals.h | 208 ++++----- src/StdFace/TriangularLattice.c | 52 +-- src/StdFace/Wannier90.c | 111 ++--- tool/CMakeLists.txt | 3 +- tool/fourier.F90 | 3 +- 16 files changed, 993 insertions(+), 877 deletions(-) diff --git a/src/StdFace/ChainLattice.c b/src/StdFace/ChainLattice.c index f02ee95e..b6b75d67 100644 --- a/src/StdFace/ChainLattice.c +++ b/src/StdFace/ChainLattice.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the chain lattice +*/ #include "StdFace_vals.h" #include #include @@ -24,24 +27,23 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the Hubbard model on a Chain lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Chain(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Hubbard model on a Chain lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Chain( + struct StdIntList *StdI//!<[inout] +) { FILE *fp; - int isite, jsite; + int isite, jsite, ntransMax, nintrMax; int iL; double complex Cphase; - /**/ fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.gp", "w"); /**/ @@ -67,7 +69,9 @@ void StdFace_Chain(struct StdIntList *StdI, char *model) StdI->W = 1; StdFace_InitSite(StdI, fp, 2); StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; StdI->tau[0][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_J("J1", StdI->J1All, StdI->J1); StdFace_NotUsed_J("J2", StdI->J2All, StdI->J2); @@ -122,8 +126,9 @@ void StdFace_Chain(struct StdIntList *StdI, char *model) } }/*if (strcmp(StdI->model, "spin") != 0 )*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->L; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -138,30 +143,28 @@ void StdFace_Chain(struct StdIntList *StdI, char *model) StdI->locspinflag[isite] = StdI->S2; StdI->locspinflag[isite + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->L * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->L * (StdI->NsiteUC/*D*/ + 1/*J*/ + 1/*J'*/) + ntransMax = StdI->L * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->L * (StdI->NsiteUC/*D*/ + 1/*J*/ + 1/*J'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->L * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 2/*t*/ + 2/*t'*/); - StdI->nintr = StdI->L * (StdI->NsiteUC/*U*/ + 4 * (1/*V*/ + 1/*V'*/)); + ntransMax = StdI->L * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 2/*t*/ + 2/*t'*/); + nintrMax = StdI->L * (StdI->NsiteUC/*U*/ + 4 * (1/*V*/ + 1/*V'*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->L * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * 1 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->L * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * 1 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (iL = 0; iL < StdI->L; iL++){ isite = iL; @@ -171,7 +174,7 @@ void StdFace_Chain(struct StdIntList *StdI, char *model) */ if (strcmp(StdI->model, "spin") == 0 ) { StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite, jsite); + StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite, isite); }/*if (strcmp(StdI->model, "spin") == 0 )*/ else { StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite); @@ -214,10 +217,8 @@ void StdFace_Chain(struct StdIntList *StdI, char *model) #if defined(_HPhi) /** -* -* Setup a Hamiltonian for the generalized Heisenberg model on a Chain lattice -* -* @author Mitsuaki Kawamura (The University of Tokyo) +@brief Setup a Hamiltonian for the generalized Heisenberg model on a Chain lattice +@author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_Chain_Boost(struct StdIntList *StdI) { diff --git a/src/StdFace/FCOrtho.c b/src/StdFace/FCOrtho.c index 2b9a6627..fcdd14db 100644 --- a/src/StdFace/FCOrtho.c +++ b/src/StdFace/FCOrtho.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the face centered orthorhombic lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,14 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the Face-Centered Orthorhombic lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_FCOrtho(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Face-Centered Orthorhombic lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_FCOrtho( + struct StdIntList *StdI//!<[inout] +) { - int isite, jsite; + int isite, jsite, ntransMax, nintrMax; int iL, iW, iH, kCell; FILE *fp; double complex Cphase; @@ -39,8 +42,8 @@ void StdFace_FCOrtho(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.xsf", "w"); /**/ @@ -68,7 +71,9 @@ void StdFace_FCOrtho(struct StdIntList *StdI, char *model) /**/ StdFace_InitSite(StdI, fp, 3); StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; ; StdI->tau[0][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_d("K", StdI->K); StdFace_PrintVal_d("h", &StdI->h, 0.0); @@ -137,8 +142,9 @@ void StdFace_FCOrtho(struct StdIntList *StdI, char *model) }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -153,30 +159,28 @@ void StdFace_FCOrtho(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 6/*J*/ + 3/*J'*/ + 0/*J''*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 6/*J*/ + 3/*J'*/ + 0/*J''*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 12/*t*/ + 6/*t'*/ + 0/*t''*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (6/*V*/ + 3/*V'*/ + 0/*V''*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 12/*t*/ + 6/*t'*/ + 0/*t''*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (6/*V*/ + 3/*V'*/ + 0/*V''*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++){ /**/ iW = StdI->Cell[kCell][0]; diff --git a/src/StdFace/HoneycombLattice.c b/src/StdFace/HoneycombLattice.c index b73e8fcb..ded6f609 100644 --- a/src/StdFace/HoneycombLattice.c +++ b/src/StdFace/HoneycombLattice.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the honeycomb lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,12 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the Hubbard model on a Honeycomb lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Honeycomb(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Hubbard model on a Honeycomb lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Honeycomb(struct StdIntList *StdI) { - int isite, jsite, kCell; + int isite, jsite, kCell, ntransMax, nintrMax; int iL, iW; FILE *fp; double complex Cphase; @@ -39,8 +40,8 @@ void StdFace_Honeycomb(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.gp", "w"); /**/ @@ -62,7 +63,9 @@ void StdFace_Honeycomb(struct StdIntList *StdI, char *model) StdFace_InitSite(StdI, fp, 2); StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; StdI->tau[0][2] = 0.0; StdI->tau[1][0] = 1.0 / 3.0; StdI->tau[1][1] = 1.0 / 3.0; StdI->tau[1][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_J("J1'", StdI->J1pAll, StdI->J1p); StdFace_NotUsed_J("J2'", StdI->J2pAll, StdI->J2p); @@ -125,8 +128,9 @@ void StdFace_Honeycomb(struct StdIntList *StdI, char *model) }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -141,30 +145,28 @@ void StdFace_Honeycomb(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 3/*J*/ + 6/*J'*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 3/*J*/ + 6/*J'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 6/*t*/ + 12/*t'*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (3/*V*/ + 6/*V'*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 6/*t*/ + 12/*t'*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (3/*V*/ + 6/*V'*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++) { /**/ iW = StdI->Cell[kCell][0]; diff --git a/src/StdFace/Kagome.c b/src/StdFace/Kagome.c index 338cc512..dc43ad73 100644 --- a/src/StdFace/Kagome.c +++ b/src/StdFace/Kagome.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the kagome lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,14 @@ along with this program. If not, see . #include /** -* -* Setup a Hamiltonian for the Kagome lattice -* -* @author Mitsuaki Kawamura (The University of Tokyo) +@brief Setup a Hamiltonian for the Kagome lattice +@author Mitsuaki Kawamura (The University of Tokyo) */ -void StdFace_Kagome(struct StdIntList *StdI, char *model) +void StdFace_Kagome( + struct StdIntList *StdI//!<[inout] +) { - int isite, jsite, kCell; + int isite, jsite, isiteUC, kCell, ntransMax, nintrMax; int iL, iW; FILE *fp; double complex Cphase; @@ -39,8 +42,8 @@ void StdFace_Kagome(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.gp", "w"); /**/ @@ -63,7 +66,9 @@ void StdFace_Kagome(struct StdIntList *StdI, char *model) StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; StdI->tau[0][2] = 0.0; StdI->tau[1][0] = 0.5; StdI->tau[1][1] = 0.0; StdI->tau[1][2] = 0.0; StdI->tau[2][0] = 0.0; StdI->tau[2][1] = 0.5; StdI->tau[2][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); /**/ StdFace_NotUsed_J("J1'", StdI->J1pAll, StdI->J1p); @@ -124,12 +129,13 @@ void StdFace_Kagome(struct StdIntList *StdI, char *model) StdFace_InputSpin(StdI, StdI->J, StdI->JAll, "J"); }/*if (model != "hubbard")*/ - }/*if (model != "spin")*/ + }/*if (model != "spin")@@*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ - StdI->nsite = 3 * StdI->NCell; + StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; StdI->locspinflag = (int *)malloc(sizeof(int) * StdI->nsite); /**/ @@ -142,64 +148,57 @@ void StdFace_Kagome(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ - if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 6/*J*/ + 6/*J'*/) + if (strcmp(StdI->model, "spin") == 0 ) {//>> + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 6/*J*/ + 6/*J'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 12/*t*/ + 12/*t'*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (6/*V*/ + 6/*V'*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 12/*t*/ + 12/*t'*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (6/*V*/ + 6/*V'*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ - } + }//<< /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++) { /**/ iW = StdI->Cell[kCell][0]; iL = StdI->Cell[kCell][1]; - /* + /*>> Local term */ isite = StdI->NsiteUC * kCell; if (strcmp(StdI->model, "kondo") == 0 ) isite += StdI->nsite / 2; /**/ if (strcmp(StdI->model, "spin") == 0 ) { - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite + 1); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite + 2); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite, isite); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + 1, isite + 1); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + 2, isite + 2); + for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) { + StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite + isiteUC); + StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + isiteUC, isite + isiteUC); + }/*for (jsite = 0; jsite < StdI->NsiteUC; jsite++)*/ }/*if (strcmp(StdI->model, "spin") == 0 )*/ else { - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite); - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + 1); - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + 2); + for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) + StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + isiteUC); /**/ if (strcmp(StdI->model, "kondo") == 0 ) { jsite = StdI->NsiteUC * kCell; - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite, jsite); - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 1, jsite + 1); - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 2, jsite + 2); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + 1); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + 2); + for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) { + StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + isiteUC, jsite + isiteUC); + StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + isiteUC); + }/*for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++)*/ }/*if (strcmp(StdI->model, "kondo") == 0 )*/ - }/*if (strcmp(StdI->model, "spin") != 0 )*/ - /* + }/*if (strcmp(StdI->model, "spin") != 0 )<<*/ + /*>> Nearest neighbor intra cell 0 -> 1 */ StdFace_SetLabel(StdI, fp, iW, iL, 0, 0, 0, 1, &isite, &jsite, 1, &Cphase); @@ -210,7 +209,7 @@ void StdFace_Kagome(struct StdIntList *StdI, char *model) else { StdFace_Hopping(StdI, Cphase * StdI->t2, isite, jsite); StdFace_Coulomb(StdI, StdI->V2, isite, jsite); - } + }//<< /* Nearest neighbor intra cell 0 -> 2 */ diff --git a/src/StdFace/Ladder.c b/src/StdFace/Ladder.c index 391014d8..ddbb23f5 100644 --- a/src/StdFace/Ladder.c +++ b/src/StdFace/Ladder.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the Ladder lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,23 +27,23 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the generalized Heisenberg model on a square lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Ladder(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the generalized Heisenberg model on a square lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Ladder( + struct StdIntList *StdI//!<[inout] +) { FILE *fp; - int isite, jsite; + int isite, jsite, ntransMax, nintrMax; int iL, isiteUC; double complex Cphase; fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.gp", "w"); /**/ @@ -74,7 +77,9 @@ void StdFace_Ladder(struct StdIntList *StdI, char *model) StdI->tau[isite][0] = (double)isite / (double)StdI->NsiteUC; StdI->tau[isite][1] = 0.0; StdI->tau[isite][2] = 0.0; } - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_J("J", StdI->JAll, StdI->J); StdFace_NotUsed_J("J'", StdI->JpAll, StdI->Jp); @@ -139,8 +144,9 @@ void StdFace_Ladder(struct StdIntList *StdI, char *model) } }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->L * StdI->NsiteUC; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -155,35 +161,33 @@ void StdFace_Ladder(struct StdIntList *StdI, char *model) StdI->locspinflag[isite] = StdI->S2; StdI->locspinflag[isite + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->L * StdI->NsiteUC * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->L * StdI->NsiteUC * (1/*D*/ + 1/*J1*/ + 1/*J1'*/) + ntransMax = StdI->L * StdI->NsiteUC * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->L * StdI->NsiteUC * (1/*D*/ + 1/*J1*/ + 1/*J1'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1) + StdI->L * (StdI->NsiteUC - 1) * (1/*J0*/ + 1/*J2*/ + 1/*J2'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "spin") == 0 )*/ else { - StdI->ntrans = StdI->L*StdI->NsiteUC * (2/*mu+h+Gamma*/ + 2/*t1*/ + 2/*t1'*/) + ntransMax = StdI->L*StdI->NsiteUC * (2/*mu+h+Gamma*/ + 2/*t1*/ + 2/*t1'*/) + StdI->L*(StdI->NsiteUC - 1) * (2/*t0*/ + 2/*t2*/ + 2/*t2'*/); - StdI->nintr = StdI->L*StdI->NsiteUC * 1/*U*/ + nintrMax = StdI->L*StdI->NsiteUC * 1/*U*/ + StdI->L*StdI->NsiteUC * 4 * (1/*V1*/ + 1/*V1'*/) + StdI->L*(StdI->NsiteUC - 1) * 4 * (1/*V0*/ + 1/*V2*/ + 1/*V2'*/); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->L * StdI->NsiteUC * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * 1 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->L * StdI->NsiteUC * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * 1 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (iL = 0; iL < StdI->L; iL++) { for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) { @@ -194,7 +198,7 @@ void StdFace_Ladder(struct StdIntList *StdI, char *model) */ if (strcmp(StdI->model, "spin") == 0 ) { StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite, jsite); + StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite, isite); }/*if (strcmp(StdI->model, "spin") == 0 )*/ else { StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite); diff --git a/src/StdFace/Orthorhombic.c b/src/StdFace/Orthorhombic.c index e6f7cf7f..63aa60ab 100644 --- a/src/StdFace/Orthorhombic.c +++ b/src/StdFace/Orthorhombic.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the orthorhombic lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,14 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the Simple Orthorhombic lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Orthorhombic(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Simple Orthorhombic lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Orthorhombic( + struct StdIntList *StdI//!<[inout] +) { - int isite, jsite; + int isite, jsite, ntransMax, nintrMax; int iL, iW, iH, kCell; FILE *fp; double complex Cphase; @@ -39,8 +42,8 @@ void StdFace_Orthorhombic(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.xsf", "w"); /**/ @@ -68,7 +71,9 @@ void StdFace_Orthorhombic(struct StdIntList *StdI, char *model) /**/ StdFace_InitSite(StdI, fp, 3); StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; ; StdI->tau[0][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_d("K", StdI->K); StdFace_PrintVal_d("h", &StdI->h, 0.0); @@ -137,8 +142,9 @@ void StdFace_Orthorhombic(struct StdIntList *StdI, char *model) }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -153,30 +159,28 @@ void StdFace_Orthorhombic(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 3/*J*/ + 6/*J'*/ + 4/*J''*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 3/*J*/ + 6/*J'*/ + 4/*J''*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 6/*t*/ + 12/*t'*/ + 8/*t''*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (3/*V*/ + 6/*V'*/ + 4/*V''*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 6/*t*/ + 12/*t'*/ + 8/*t''*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (3/*V*/ + 6/*V'*/ + 4/*V''*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++){ /**/ iW = StdI->Cell[kCell][0]; diff --git a/src/StdFace/Pyrochlore.c b/src/StdFace/Pyrochlore.c index 6e5fe2a0..24f7b17e 100644 --- a/src/StdFace/Pyrochlore.c +++ b/src/StdFace/Pyrochlore.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the pyrochlore lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,14 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the Pyrochlore structure - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Pyrochlore(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Pyrochlore structure +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Pyrochlore( + struct StdIntList *StdI//!<[inout] +) { - int isite, jsite; + int isite, jsite, isiteUC, ntransMax, nintrMax; int iL, iW, iH, kCell; FILE *fp; double complex Cphase; @@ -39,8 +42,8 @@ void StdFace_Pyrochlore(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.xsf", "w"); /**/ @@ -71,7 +74,9 @@ void StdFace_Pyrochlore(struct StdIntList *StdI, char *model) StdI->tau[1][0] = 0.5; StdI->tau[1][1] = 0.0; ; StdI->tau[1][2] = 0.0; StdI->tau[2][0] = 0.0; StdI->tau[2][1] = 0.5; ; StdI->tau[2][2] = 0.0; StdI->tau[3][0] = 0.0; StdI->tau[3][1] = 0.0; ; StdI->tau[3][2] = 0.5; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_d("K", StdI->K); StdFace_PrintVal_d("h", &StdI->h, 0.0); @@ -140,8 +145,9 @@ void StdFace_Pyrochlore(struct StdIntList *StdI, char *model) }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -156,30 +162,28 @@ void StdFace_Pyrochlore(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 12/*J*/ + 0/*J'*/ + 0/*J''*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 12/*J*/ + 0/*J'*/ + 0/*J''*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 24/*t*/ + 0/*t'*/ + 0/*t''*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (12/*V*/ + 0/*V'*/ + 0/*V''*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 24/*t*/ + 0/*t'*/ + 0/*t''*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (12/*V*/ + 0/*V'*/ + 0/*V''*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++){ /**/ iW = StdI->Cell[kCell][0]; @@ -192,29 +196,22 @@ void StdFace_Pyrochlore(struct StdIntList *StdI, char *model) if (strcmp(StdI->model, "kondo") == 0) isite += StdI->nsite / 2; /**/ if (strcmp(StdI->model, "spin") == 0) { - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite + 1); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite + 2); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite, isite); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + 1, isite + 1); - StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + 2, isite + 2); + for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) { + StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, isite + isiteUC); + StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + isiteUC, isite + isiteUC); + }/*for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++)*/ }/*if (strcmp(StdI->model, "spin") == 0 )*/ else { - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite); - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + 1); - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + 2); - StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + 3); + for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) { + StdFace_HubbardLocal(StdI, StdI->mu, -StdI->h, -StdI->Gamma, StdI->U, isite + isiteUC); + }/*for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++)*/ /**/ if (strcmp(StdI->model, "kondo") == 0) { jsite = StdI->NsiteUC * kCell; - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite, jsite); - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 1, jsite + 1); - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 2, jsite + 2); - StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 3, jsite + 3); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + 1); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + 2); - StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + 3); + for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) { + StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 3, jsite + isiteUC); + StdFace_MagField(StdI, StdI->S2, -StdI->h, -StdI->Gamma, jsite + isiteUC); + }/*for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++)*/ }/*if (strcmp(StdI->model, "kondo") == 0 )*/ }/*if (strcmp(StdI->model, "spin") != 0 )*/ /* diff --git a/src/StdFace/SquareLattice.c b/src/StdFace/SquareLattice.c index 2d864c7b..92ea2c6d 100644 --- a/src/StdFace/SquareLattice.c +++ b/src/StdFace/SquareLattice.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the tetragonal lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,12 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the square lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Tetragonal(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the square lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Tetragonal(struct StdIntList *StdI) { - int isite, jsite; + int isite, jsite, ntransMax, nintrMax; int iL, iW, kCell; FILE *fp; double complex Cphase; @@ -39,8 +40,8 @@ void StdFace_Tetragonal(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.gp", "w"); /**/ @@ -61,7 +62,9 @@ void StdFace_Tetragonal(struct StdIntList *StdI, char *model) /**/ StdFace_InitSite(StdI, fp, 2); StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; StdI->tau[0][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_J("J2", StdI->J2All, StdI->J2); StdFace_NotUsed_J("J1'", StdI->J1pAll, StdI->J1p); @@ -120,8 +123,9 @@ void StdFace_Tetragonal(struct StdIntList *StdI, char *model) }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -136,30 +140,28 @@ void StdFace_Tetragonal(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 2/*J*/ + 2/*J'*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 2/*J*/ + 2/*J'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 4/*t*/ + 4/*t'*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (2/*V*/ + 2/*V'*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 4/*t*/ + 4/*t'*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (2/*V*/ + 2/*V'*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++){ /**/ iW = StdI->Cell[kCell][0]; diff --git a/src/StdFace/StdFace_ModelUtil.c b/src/StdFace/StdFace_ModelUtil.c index 91ca210a..dc2a50f0 100644 --- a/src/StdFace/StdFace_ModelUtil.c +++ b/src/StdFace/StdFace_ModelUtil.c @@ -53,7 +53,7 @@ increment StdIntList::ntrans @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_trans( -struct StdIntList *StdI, + struct StdIntList *StdI,//!<[inout] double complex trans0,//!<[in] Hopping integral @f$t, mu@f$, etc. int isite,//!<[in] @f$i@f$ for @f$c_{i \sigma}^\dagger@f$ int ispin,//!<[in] @f$\sigma@f$ for @f$c_{i \sigma}^\dagger@f$ @@ -73,7 +73,7 @@ struct StdIntList *StdI, @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_Hopping( -struct StdIntList *StdI, +struct StdIntList *StdI,//!<[inout] double complex trans0,//!<[in] Hopping integral @f$t@f$ int isite,//!<[in] @f$i@f$ for @f$c_{i \sigma}^\dagger@f$ int jsite//!<[in] @f$j@f$ for @f$c_{j \sigma}@f$ @@ -81,8 +81,8 @@ struct StdIntList *StdI, { int ispin; /**@brief - Both @f$c_{i \sigma}^\daggerc_{j \sigma}@f$ and - @f$c_{j \sigma}^\daggerc_{i \sigma}@f$ for every spin channel + Both @f$c_{i \sigma}^\dagger c_{j \sigma}@f$ and + @f$c_{j \sigma}^\dagger c_{i \sigma}@f$ for every spin channel (@f$\sigma@f$) is specified */ for (ispin = 0; ispin < 2; ispin++) { @@ -96,7 +96,7 @@ itenerant electron @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_HubbardLocal( - struct StdIntList *StdI, + struct StdIntList *StdI,//!<[inout] double mu0,//!<[in] Chemical potential double h0,//!<[in] Longitudinal magnetic feild double Gamma0,//!<[in] Transvers magnetic feild @@ -122,7 +122,7 @@ void StdFace_HubbardLocal( @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_MagField( -struct StdIntList *StdI, + struct StdIntList *StdI,//!<[inout] int S2,//!<[in] Spin moment in @f$i@f$ site double h,//!<[in] Longitudinal magnetic field @f$h@f$ double Gamma,//!<[in] Transvars magnetic field @f$h@f$ @@ -170,7 +170,7 @@ increase the number of that (StdIntList::nintr). @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_intr( -struct StdIntList *StdI, + struct StdIntList *StdI,//!<[inout] double complex intr0,//!<[in] Interaction @f$U, V, J@f$, etc. int site1,//!<[in] @f$i_1@f$ for @f$c_{i_1 \sigma_1}^\dagger@f$ int spin1,//!<[in] @f$sigma1_1@f$ for @f$c_{i_1 \sigma_1}^\dagger@f$ @@ -194,7 +194,7 @@ struct StdIntList *StdI, @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_GeneralJ( -struct StdIntList *StdI, +struct StdIntList *StdI,//!<[inout] double J[3][3],//!<[in] The Spin interaction @f$J_x, J_{xy}@f$, ... int Si2,//!<[in] Spin moment in @f$i@f$ site int Sj2,//!<[in] Spin moment in @f$j@f$ site @@ -303,7 +303,7 @@ struct StdIntList *StdI, StdFace_intr(StdI, conj(intr0), isite, ispin, isite, ispin + 1, jsite, jspin + 1, jsite, jspin); } - /**@brief + /**@brief (3) @f[ I S_i^+ S_j^+ + I^* S_j^- S_i^- = \sum_{\sigma, \sigma' = -S}^{S-1} @@ -323,13 +323,15 @@ struct StdIntList *StdI, StdFace_intr(StdI, conj(intr0), isite, ispin, isite, ispin + 1, jsite, jspin, jsite, jspin + 1); } - /**@brief + /**@brief (4) + @f[ I S_i^+ S_{j z} + I^* S_{j z} S_i^-= \sum_{\sigma=-S}^{S-1} \sum_{\sigma' = -S}^{S} \sqrt{S_i(S_i+1) - \sigma(\sigma+1)} (I c_{i\sigma+1}^\dagger c_{i\sigma} c_{j\sigma'}^\dagger c_{j\sigma'} + I^* c_{j\sigma'}^\dagger c_{j\sigma'} c_{i\sigma}^\dagger c_{i\sigma+1}) \\ I \equiv \frac{J_{xz} - i J_{yz}}{2} + @f] */ if (ispin < Si2) { intr0 = 0.5 * (J[0][2] - I * J[1][2]) * sqrt(Si * (Si + 1.0) - Siz * (Siz + 1.0)) * Sjz; @@ -338,14 +340,16 @@ struct StdIntList *StdI, StdFace_intr(StdI, conj(intr0), jsite, jspin, jsite, jspin, isite, ispin, isite, ispin + 1); }/*if (ispin < Si2)*/ - /**@brief - I S_{i z} S_j^+ + I^* S_j^- S_{i z}= + /**@brief (5) + @f[ + I S_{i z} S_j^+ + I^* S_j^- S_{i z} = \sum_{\sigma=-S}^{S} \sum_{\sigma' = -S}^{S-1} \sqrt{S_j(S_j+1) - \sigma'(\sigma'+1)} (I c_{i\sigma}^\dagger c_{i\sigma} c_{j\sigma'+1}^\dagger c_{j\sigma'} + I^* c_{j\sigma'}^\dagger c_{j\sigma'+1} c_{i\sigma}^\dagger c_{i\sigma}) \\ I \equiv \frac{J_{zx} - i J_{zy}}{2} - */ + @f] + */ if (jspin < Sj2) { intr0 = 0.5 * (J[2][0] - I * J[2][1]) * Siz * sqrt(Sj * (Sj + 1.0) - Sjz * (Sjz + 1.0)); StdFace_intr(StdI, intr0, @@ -363,7 +367,7 @@ and increase the number of them (StdIntList::NCinter). @author Mitsuaki Kawamura (The University of Tokyo) */ void StdFace_Coulomb( -struct StdIntList *StdI, +struct StdIntList *StdI,//!<[inout] double V,//!<[in] Coulomb integral U, V, etc. int isite,//!<[in] i of n_i int jsite//!<[in] j of n_j @@ -561,10 +565,11 @@ void StdFace_RequiredVal_i( original supercell. @author Mitsuaki Kawamura (The University of Tokyo) */ -static void StdFace_FoldSite(struct StdIntList *StdI, +static void StdFace_FoldSite( + struct StdIntList *StdI,//!<[inout] int iCellV[3],//!<[in] The fractional coordinate of a site int nBox[3], //!<[out] the index of supercell - int iCellV_fold[3]/**<@brief [out] The fractional coordinate of a site + int iCellV_fold[3]/**<[out] The fractional coordinate of a site which is moved into the original cell*/ ) { @@ -597,7 +602,8 @@ static void StdFace_FoldSite(struct StdIntList *StdI, @brief Initialize the super-cell where simulation is performed. @author Mitsuaki Kawamura (The University of Tokyo) */ -void StdFace_InitSite(struct StdIntList *StdI, +void StdFace_InitSite( + struct StdIntList *StdI,//!<[inout] FILE *fp,//!<[in] File pointer to lattice.gp int dim//!<[in] dimension of system, if = 2, print lattice.gp ) @@ -787,7 +793,8 @@ void StdFace_InitSite(struct StdIntList *StdI, /** @brief Find the index of transfer and interaction */ -void StdFace_FindSite(struct StdIntList *StdI, +void StdFace_FindSite( + struct StdIntList *StdI,//!<[inout] int iW,//!<[in] position of initial site int iL,//!<[in] position of initial site int iH,//!<[in] position of initial site @@ -835,8 +842,9 @@ void StdFace_FindSite(struct StdIntList *StdI, /** @brief Set Label in the gnuplot display (Only used in 2D system) */ -void StdFace_SetLabel(struct StdIntList *StdI, - FILE *fp, +void StdFace_SetLabel( + struct StdIntList *StdI,//!<[inout] + FILE *fp,//!<[in] File pointer to lattice.gp int iW,//!<[in] position of initial site int iL,//!<[in] position of initial site int diW,//!<[in] Translation from the initial site @@ -929,7 +937,8 @@ void StdFace_PrintXSF(struct StdIntList *StdI) { /** @brief Input nearest-neighbor spin-spin interaction */ -void StdFace_InputSpinNN(struct StdIntList *StdI, +void StdFace_InputSpinNN( + struct StdIntList *StdI,//!<[inout] double J0[3][3],//!<[in] The anisotropic spin interaction double J0All,//!<[in] The isotropic interaction char *J0name//!<[in] The name of this spin interaction (e.g. J1) @@ -1015,7 +1024,8 @@ void StdFace_InputSpinNN(struct StdIntList *StdI, /** @brief Input spin-spin interaction other than nearest-neighbor */ -void StdFace_InputSpin(struct StdIntList *StdI, +void StdFace_InputSpin( + struct StdIntList *StdI,//!<[inout] double Jp[3][3],//!<[in] Fully anisotropic spin interaction double JpAll,//!<[in] The isotropic interaction char *Jpname//!transindx = (int **)malloc(sizeof(int*) * StdI->ntrans); - StdI->trans = (double complex *)malloc(sizeof(double complex) * StdI->ntrans); - for (ii = 0; ii < StdI->ntrans; ii++) { + StdI->transindx = (int **)malloc(sizeof(int*) * ntransMax); + StdI->trans = (double complex *)malloc(sizeof(double complex) * ntransMax); + for (ii = 0; ii < ntransMax; ii++) { StdI->transindx[ii] = (int *)malloc(sizeof(int) * 4); } + StdI->ntrans = 0; /**@brief (2) InterAll StdIntList::intr, StdIntList::intrindx */ - StdI->intrindx = (int **)malloc(sizeof(int*) * StdI->nintr); - StdI->intr = (double complex *)malloc(sizeof(double complex) * StdI->nintr); - for (ii = 0; ii < StdI->nintr; ii++) { + StdI->intrindx = (int **)malloc(sizeof(int*) * nintrMax); + StdI->intr = (double complex *)malloc(sizeof(double complex) * nintrMax); + for (ii = 0; ii < nintrMax; ii++) { StdI->intrindx[ii] = (int *)malloc(sizeof(int) * 8); } + StdI->nintr = 0; /**@brief (3) Coulomb intra StdIntList::Cintra, StdIntList::CintraIndx */ - StdI->CintraIndx = (int **)malloc(sizeof(int*) * StdI->nintr); - StdI->Cintra = (double *)malloc(sizeof(double) * StdI->nintr); - for (ii = 0; ii < StdI->nintr; ii++) { + StdI->CintraIndx = (int **)malloc(sizeof(int*) * nintrMax); + StdI->Cintra = (double *)malloc(sizeof(double) * nintrMax); + for (ii = 0; ii < nintrMax; ii++) { StdI->CintraIndx[ii] = (int *)malloc(sizeof(int) * 1); } + StdI->NCintra = 0; /**@brief (4) Coulomb inter StdIntList::Cinter, StdIntList::CinterIndx */ - StdI->CinterIndx = (int **)malloc(sizeof(int*) * StdI->nintr); - StdI->Cinter = (double *)malloc(sizeof(double) * StdI->nintr); - for (ii = 0; ii < StdI->nintr; ii++) { + StdI->CinterIndx = (int **)malloc(sizeof(int*) * nintrMax); + StdI->Cinter = (double *)malloc(sizeof(double) * nintrMax); + for (ii = 0; ii < nintrMax; ii++) { StdI->CinterIndx[ii] = (int *)malloc(sizeof(int) * 2); } + StdI->NCinter = 0; /**@brief (5) Hund StdIntList::Hund, StdIntList::HundIndx */ - StdI->HundIndx = (int **)malloc(sizeof(int*) * StdI->nintr); - StdI->Hund = (double *)malloc(sizeof(double) * StdI->nintr); - for (ii = 0; ii < StdI->nintr; ii++) { + StdI->HundIndx = (int **)malloc(sizeof(int*) * nintrMax); + StdI->Hund = (double *)malloc(sizeof(double) * nintrMax); + for (ii = 0; ii < nintrMax; ii++) { StdI->HundIndx[ii] = (int *)malloc(sizeof(int) * 2); } + StdI->NHund = 0; /**@brief (6) Excahnge StdIntList::Ex, StdIntList::ExIndx */ - StdI->ExIndx = (int **)malloc(sizeof(int*) * StdI->nintr); - StdI->Ex = (double *)malloc(sizeof(double) * StdI->nintr); - for (ii = 0; ii < StdI->nintr; ii++) { + StdI->ExIndx = (int **)malloc(sizeof(int*) * nintrMax); + StdI->Ex = (double *)malloc(sizeof(double) * nintrMax); + for (ii = 0; ii < nintrMax; ii++) { StdI->ExIndx[ii] = (int *)malloc(sizeof(int) * 2); } + StdI->NEx = 0; /**@brief (7) PairLift StdIntList::PairLift, StdIntList::PLIndx */ - StdI->PLIndx = (int **)malloc(sizeof(int*) * StdI->nintr); - StdI->PairLift = (double *)malloc(sizeof(double) * StdI->nintr); - for (ii = 0; ii < StdI->nintr; ii++) { + StdI->PLIndx = (int **)malloc(sizeof(int*) * nintrMax); + StdI->PairLift = (double *)malloc(sizeof(double) * nintrMax); + for (ii = 0; ii < nintrMax; ii++) { StdI->PLIndx[ii] = (int *)malloc(sizeof(int) * 2); } - - StdI->NCintra = 0; - StdI->NCinter = 0; - StdI->NHund = 0; - StdI->NEx = 0; StdI->NPairLift = 0; }/*void StdFace_MallocInteractions*/ #if defined(_mVMC) @@ -1217,7 +1234,8 @@ void StdFace_MallocInteractions(struct StdIntList *StdI) { @brief Define whether the specified site is in the unit cell or not. @author Mitsuaki Kawamura (The University of Tokyo) */ -static void StdFace_FoldSiteSub(struct StdIntList *StdI, +static void StdFace_FoldSiteSub( + struct StdIntList *StdI,//!<[inout] int iCellV[3],//!<[in] int nBox[3], //!<[out] int iCellV_fold[3]//!<[out] @@ -1576,60 +1594,60 @@ void PrintJastrow(struct StdIntList *StdI) { Jastrow[isite] = (int *)malloc(sizeof(int) * StdI->nsite); if (abs(StdI->NMPTrans) == 1 || StdI->NMPTrans == StdI->NaN_i) { - /**@brief - (1) Copy Orbital index - */ - for (isite = 0; isite < StdI->nsite; isite++) { - for (jsite = 0; jsite < StdI->nsite; jsite++) { - Jastrow[isite][jsite] = StdI->Orb[isite][jsite]; - }/*for (jsite = 0; jsite < isite; jsite++)*/ - }/*for (isite = 0; isite < StdI->nsite; isite++)*/ - /**@brief - (2) Symmetrize - */ - for (iorb = 0; iorb < StdI->NOrb; iorb++) { - for (isite = 0; isite < StdI->nsite; isite++) { - for (jsite = 0; jsite < StdI->nsite; jsite++) { - if (Jastrow[isite][jsite] == iorb) { - Jastrow[jsite][isite] = Jastrow[isite][jsite]; - } - }/*for (jsite = 0; jsite < isite; jsite++)*/ - }/*for (isite = 0; isite < StdI->nsite; isite++)*/ - }/*for (iorb = 0; iorb < StdI->NOrb; iorb++)*/ - /**/ - if (strcmp(StdI->model, "hubbard") == 0) NJastrow = 0; - else NJastrow = -1; - for (isite = 0; isite < StdI->nsite; isite++) { - /* - For Local spin - */ - if (StdI->locspinflag[isite] != 0) { - for (jsite = 0; jsite < StdI->nsite; jsite++) { - Jastrow[isite][jsite] = -1; - Jastrow[jsite][isite] = -1; - } - continue; - } - /**/ - for (jsite = 0; jsite < isite; jsite++) { - if (Jastrow[isite][jsite] >= 0) { - iJastrow = Jastrow[isite][jsite]; - NJastrow -= 1; - for (isite1 = 0; isite1 < StdI->nsite; isite1++) { - for (jsite1 = 0; jsite1 < StdI->nsite; jsite1++) { - if (Jastrow[isite1][jsite1] == iJastrow) - Jastrow[isite1][jsite1] = NJastrow; - }/*for (jsite1 = 0; jsite1 < StdI->nsite; jsite1++)*/ - }/*for (isite1 = 0; isite1 < StdI->nsite; isite1++)*/ - }/*if (Jastrow[isite][jsite] >= 0)*/ - }/*for (jsite = 0; jsite < isite; jsite++)*/ - }/*for (isite = 0; isite < StdI->nsite; isite++)*/ - /**/ - NJastrow = -NJastrow; - for (isite = 0; isite < StdI->nsite; isite++) { - for (jsite = 0; jsite < StdI->nsite; jsite++) { - Jastrow[isite][jsite] = -1 - Jastrow[isite][jsite]; - }/*for (jsite = 0; jsite < isite; jsite++)*/ + /**@brief + (1) Copy Orbital index + */ + for (isite = 0; isite < StdI->nsite; isite++) { + for (jsite = 0; jsite < StdI->nsite; jsite++) { + Jastrow[isite][jsite] = StdI->Orb[isite][jsite]; + }/*for (jsite = 0; jsite < isite; jsite++)*/ + }/*for (isite = 0; isite < StdI->nsite; isite++)*/ + /**@brief + (2) Symmetrize + */ + for (iorb = 0; iorb < StdI->NOrb; iorb++) { + for (isite = 0; isite < StdI->nsite; isite++) { + for (jsite = 0; jsite < StdI->nsite; jsite++) { + if (Jastrow[isite][jsite] == iorb) { + Jastrow[jsite][isite] = Jastrow[isite][jsite]; + } + }/*for (jsite = 0; jsite < isite; jsite++)*/ + }/*for (isite = 0; isite < StdI->nsite; isite++)*/ + }/*for (iorb = 0; iorb < StdI->NOrb; iorb++)*/ + /**/ + if (strcmp(StdI->model, "hubbard") == 0) NJastrow = 0; + else NJastrow = -1; + for (isite = 0; isite < StdI->nsite; isite++) { + /* + For Local spin + */ + if (StdI->locspinflag[isite] != 0) { + for (jsite = 0; jsite < StdI->nsite; jsite++) { + Jastrow[isite][jsite] = -1; + Jastrow[jsite][isite] = -1; + } + continue; + } + /**/ + for (jsite = 0; jsite < isite; jsite++) { + if (Jastrow[isite][jsite] >= 0) { + iJastrow = Jastrow[isite][jsite]; + NJastrow -= 1; + for (isite1 = 0; isite1 < StdI->nsite; isite1++) { + for (jsite1 = 0; jsite1 < StdI->nsite; jsite1++) { + if (Jastrow[isite1][jsite1] == iJastrow) + Jastrow[isite1][jsite1] = NJastrow; + }/*for (jsite1 = 0; jsite1 < StdI->nsite; jsite1++)*/ + }/*for (isite1 = 0; isite1 < StdI->nsite; isite1++)*/ + }/*if (Jastrow[isite][jsite] >= 0)*/ + }/*for (jsite = 0; jsite < isite; jsite++)*/ + }/*for (isite = 0; isite < StdI->nsite; isite++)*/ + /**/ + NJastrow = -NJastrow; + for (isite = 0; isite < StdI->nsite; isite++) { + for (jsite = 0; jsite < StdI->nsite; jsite++) { + Jastrow[isite][jsite] = -1 - Jastrow[isite][jsite]; + }/*for (jsite = 0; jsite < isite; jsite++)*/ }/*for (isite = 0; isite < StdI->nsite; isite++)*/ }/*if (abs(StdI->NMPTrans) == 1)*/ else { diff --git a/src/StdFace/StdFace_ModelUtil.h b/src/StdFace/StdFace_ModelUtil.h index 0b2a63ad..e063b6bf 100644 --- a/src/StdFace/StdFace_ModelUtil.h +++ b/src/StdFace/StdFace_ModelUtil.h @@ -56,23 +56,23 @@ void StdFace_SetLabel(struct StdIntList *StdI, FILE *fp, int iW, int iL, int diW, int diL, int isiteUC, int jsiteUC, int *isite, int *jsite, int connect, double complex *Cphase); void StdFace_PrintGeometry(struct StdIntList *StdI); -void StdFace_MallocInteractions(struct StdIntList *StdI); +void StdFace_MallocInteractions(struct StdIntList *StdI, int ntransMax, int nintrMax); void StdFace_FindSite(struct StdIntList *StdI, int iW, int iL, int iH, int diW, int diL, int diH, int isiteUC, int jsiteUC, int *isite, int *jsite, double complex *Cphase); void StdFace_PrintXSF(struct StdIntList *StdI); -void StdFace_Tetragonal(struct StdIntList *StdI, char *model); -void StdFace_Chain(struct StdIntList *StdI, char *model); -void StdFace_Ladder(struct StdIntList *StdI, char *model); -void StdFace_Triangular(struct StdIntList *StdI, char *model); -void StdFace_Honeycomb(struct StdIntList *StdI, char *model); -void StdFace_Kagome(struct StdIntList *StdI, char *model); -void StdFace_Orthorhombic(struct StdIntList *StdI, char *model); -void StdFace_FCOrtho(struct StdIntList *StdI, char *model); -void StdFace_Pyrochlore(struct StdIntList *StdI, char *model); -void StdFace_Wannier90(struct StdIntList *StdI, char *model); +void StdFace_Tetragonal(struct StdIntList *StdI); +void StdFace_Chain(struct StdIntList *StdI); +void StdFace_Ladder(struct StdIntList *StdI); +void StdFace_Triangular(struct StdIntList *StdI); +void StdFace_Honeycomb(struct StdIntList *StdI); +void StdFace_Kagome(struct StdIntList *StdI); +void StdFace_Orthorhombic(struct StdIntList *StdI); +void StdFace_FCOrtho(struct StdIntList *StdI); +void StdFace_Pyrochlore(struct StdIntList *StdI); +void StdFace_Wannier90(struct StdIntList *StdI); #if defined(_HPhi) void StdFace_Chain_Boost(struct StdIntList *StdI); diff --git a/src/StdFace/StdFace_main.c b/src/StdFace/StdFace_main.c index 0a5e85c7..d2ea918d 100644 --- a/src/StdFace/StdFace_main.c +++ b/src/StdFace/StdFace_main.c @@ -19,6 +19,18 @@ along with this program. If not, see . @brief Read Input file and write files for Expert mode. Initialize variables. Check parameters. + +The following lattices are supported: +- 1D Chain : StdFace_Chain() +- 1D Ladder : StdFace_Ladder() +- 2D Tetragonal : StdFace_Tetragonal() +- 2D Triangular : StdFace_Triangular() +- 2D Honeycomb : StdFace_Honeycomb() +- 2D Kagome : StdFace_Kagome() +- 3D Simple Orthorhombic : StdFace_Orthorhombic() +- 3D Face Centered Orthorhombic : StdFace_FCOrtho() +- 3D Pyrochlore : StdFace_Pyrochlore() + */ #include #include @@ -485,33 +497,33 @@ static void PrintGutzwiller(struct StdIntList *StdI) Gutz = (int *)malloc(sizeof(int) * StdI->nsite); if (abs(StdI->NMPTrans) == 1 || StdI->NMPTrans == StdI->NaN_i) { - if (strcmp(StdI->model, "hubbard") == 0) NGutzwiller = 0; - else NGutzwiller = -1; - - for (isite = 0; isite < StdI->nsite; isite++) Gutz[isite] = StdI->Orb[isite][isite]; - - for (isite = 0; isite < StdI->nsite; isite++) { - /* - For Local spin - */ - if (StdI->locspinflag[isite] != 0) { - Gutz[isite] = -1; - continue; - } - /**/ - if (Gutz[isite] >= 0) { - iGutz = Gutz[isite]; - NGutzwiller -= 1; - for (jsite = 0; jsite < StdI->nsite; jsite++) { - if (Gutz[jsite] == iGutz) - Gutz[jsite] = NGutzwiller; - }/*for (jsite = 0; jsite < StdI->nsite; jsite++)*/ - }/*if (Gutz[isite] >= 0)*/ - }/*for (isite = 0; isite < StdI->nsite; isite++)*/ - /**/ - NGutzwiller = -NGutzwiller; - for (isite = 0; isite < StdI->nsite; isite++) { - Gutz[isite] = -1 - Gutz[isite]; + if (strcmp(StdI->model, "hubbard") == 0) NGutzwiller = 0; + else NGutzwiller = -1; + + for (isite = 0; isite < StdI->nsite; isite++) Gutz[isite] = StdI->Orb[isite][isite]; + + for (isite = 0; isite < StdI->nsite; isite++) { + /* + For Local spin + */ + if (StdI->locspinflag[isite] != 0) { + Gutz[isite] = -1; + continue; + } + /**/ + if (Gutz[isite] >= 0) { + iGutz = Gutz[isite]; + NGutzwiller -= 1; + for (jsite = 0; jsite < StdI->nsite; jsite++) { + if (Gutz[jsite] == iGutz) + Gutz[jsite] = NGutzwiller; + }/*for (jsite = 0; jsite < StdI->nsite; jsite++)*/ + }/*if (Gutz[isite] >= 0)*/ + }/*for (isite = 0; isite < StdI->nsite; isite++)*/ + /**/ + NGutzwiller = -NGutzwiller; + for (isite = 0; isite < StdI->nsite; isite++) { + Gutz[isite] = -1 - Gutz[isite]; }/*for (isite = 0; isite < StdI->nsite; isite++)*/ }/*if (abs(StdI->NMPTrans) == 1)*/ else { @@ -1788,8 +1800,7 @@ void StdFace_main( char *fname//!<[in] Input file name for the standard mode ) { - struct StdIntList StdI; - + struct StdIntList *StdI; FILE *fp; int ktrans, kintr; char ctmpline[256]; @@ -1804,7 +1815,7 @@ void StdFace_main( fprintf(stdout, "\n Open Standard-Mode Inputfile %s \n\n", fname); } - StdFace_ResetVals(&StdI); + StdFace_ResetVals(StdI); while (fgets(ctmpline, 256, fp) != NULL) { @@ -1826,217 +1837,217 @@ void StdFace_main( Text2Lower(keyword); fprintf(stdout, " KEYWORD : %-20s | VALUE : %s \n", keyword, value); - if (strcmp(keyword, "a") == 0) StoreWithCheckDup_d(keyword, value, &StdI.a); - else if (strcmp(keyword, "a0h") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[0][2]); - else if (strcmp(keyword, "a0l") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[0][1]); - else if (strcmp(keyword, "a0w") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[0][0]); - else if (strcmp(keyword, "a1h") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[1][2]); - else if (strcmp(keyword, "a1l") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[1][1]); - else if (strcmp(keyword, "a1w") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[1][0]); - else if (strcmp(keyword, "a2h") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[2][2]); - else if (strcmp(keyword, "a2l") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[2][1]); - else if (strcmp(keyword, "a2w") == 0) StoreWithCheckDup_i(keyword, value, &StdI.box[2][0]); - else if (strcmp(keyword, "d") == 0) StoreWithCheckDup_d(keyword, value, &StdI.D[2][2]); - else if (strcmp(keyword, "gamma") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Gamma); - else if (strcmp(keyword, "h") == 0) StoreWithCheckDup_d(keyword, value, &StdI.h); - else if (strcmp(keyword, "height") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Height); - else if (strcmp(keyword, "hlength") == 0) StoreWithCheckDup_d(keyword, value, &StdI.length[2]); - else if (strcmp(keyword, "hx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[2][0]); - else if (strcmp(keyword, "hy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[2][1]); - else if (strcmp(keyword, "hz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[2][2]); - else if (strcmp(keyword, "j") == 0) StoreWithCheckDup_d(keyword, value, &StdI.JAll); - else if (strcmp(keyword, "jx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[0][0]); - else if (strcmp(keyword, "jxy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[0][1]); - else if (strcmp(keyword, "jxz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[0][2]); - else if (strcmp(keyword, "jy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[1][1]); - else if (strcmp(keyword, "jyx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[1][0]); - else if (strcmp(keyword, "jyz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[1][2]); - else if (strcmp(keyword, "jz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[2][2]); - else if (strcmp(keyword, "jzx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[2][0]); - else if (strcmp(keyword, "jzy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J[2][1]); - else if (strcmp(keyword, "j0") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0All); - else if (strcmp(keyword, "j0x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[0][0]); - else if (strcmp(keyword, "j0xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[0][1]); - else if (strcmp(keyword, "j0xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[0][2]); - else if (strcmp(keyword, "j0y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[1][1]); - else if (strcmp(keyword, "j0yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[1][0]); - else if (strcmp(keyword, "j0yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[1][2]); - else if (strcmp(keyword, "j0z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[2][2]); - else if (strcmp(keyword, "j0zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[2][0]); - else if (strcmp(keyword, "j0zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0[2][1]); - else if (strcmp(keyword, "j0'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0pAll); - else if (strcmp(keyword, "j0'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[0][0]); - else if (strcmp(keyword, "j0'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[0][1]); - else if (strcmp(keyword, "j0'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[0][2]); - else if (strcmp(keyword, "j0'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[1][1]); - else if (strcmp(keyword, "j0'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[1][0]); - else if (strcmp(keyword, "j0'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[1][2]); - else if (strcmp(keyword, "j0'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[2][2]); - else if (strcmp(keyword, "j0'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[2][0]); - else if (strcmp(keyword, "j0'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J0p[2][1]); - else if (strcmp(keyword, "j1") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1All); - else if (strcmp(keyword, "j1x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[0][0]); - else if (strcmp(keyword, "j1xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[0][1]); - else if (strcmp(keyword, "j1xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[0][2]); - else if (strcmp(keyword, "j1y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[1][1]); - else if (strcmp(keyword, "j1yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[1][0]); - else if (strcmp(keyword, "j1yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[1][2]); - else if (strcmp(keyword, "j1z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[2][2]); - else if (strcmp(keyword, "j1zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[2][0]); - else if (strcmp(keyword, "j1zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1[2][1]); - else if (strcmp(keyword, "j1'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1pAll); - else if (strcmp(keyword, "j1'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[0][0]); - else if (strcmp(keyword, "j1'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[0][1]); - else if (strcmp(keyword, "j1'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[0][2]); - else if (strcmp(keyword, "j1'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[1][1]); - else if (strcmp(keyword, "j1'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[1][0]); - else if (strcmp(keyword, "j1'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[1][2]); - else if (strcmp(keyword, "j1'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[2][2]); - else if (strcmp(keyword, "j1'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[2][0]); - else if (strcmp(keyword, "j1'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J1p[2][1]); - else if (strcmp(keyword, "j2") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2All); - else if (strcmp(keyword, "j2x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[0][0]); - else if (strcmp(keyword, "j2xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[0][1]); - else if (strcmp(keyword, "j2xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[0][2]); - else if (strcmp(keyword, "j2y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[1][1]); - else if (strcmp(keyword, "j2yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[1][0]); - else if (strcmp(keyword, "j2yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[1][2]); - else if (strcmp(keyword, "j2z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[2][2]); - else if (strcmp(keyword, "j2zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[2][0]); - else if (strcmp(keyword, "j2zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2[2][1]); - else if (strcmp(keyword, "j2'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2pAll); - else if (strcmp(keyword, "j2'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[0][0]); - else if (strcmp(keyword, "j2'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[0][1]); - else if (strcmp(keyword, "j2'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[0][2]); - else if (strcmp(keyword, "j2'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[1][1]); - else if (strcmp(keyword, "j2'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[1][0]); - else if (strcmp(keyword, "j2'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[1][2]); - else if (strcmp(keyword, "j2'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[2][2]); - else if (strcmp(keyword, "j2'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[2][0]); - else if (strcmp(keyword, "j2'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.J2p[2][1]); - else if (strcmp(keyword, "j'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.JpAll); - else if (strcmp(keyword, "j'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[0][0]); - else if (strcmp(keyword, "j'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[0][1]); - else if (strcmp(keyword, "j'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[0][2]); - else if (strcmp(keyword, "j'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[1][1]); - else if (strcmp(keyword, "j'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[1][0]); - else if (strcmp(keyword, "j'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[1][2]); - else if (strcmp(keyword, "j'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[2][2]); - else if (strcmp(keyword, "j'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[2][0]); - else if (strcmp(keyword, "j'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jp[2][1]); - else if (strcmp(keyword, "j''") == 0) StoreWithCheckDup_d(keyword, value, &StdI.JppAll); - else if (strcmp(keyword, "j''x") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[0][0]); - else if (strcmp(keyword, "j''xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[0][1]); - else if (strcmp(keyword, "j''xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[0][2]); - else if (strcmp(keyword, "j''y") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[1][1]); - else if (strcmp(keyword, "j''yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[1][0]); - else if (strcmp(keyword, "j''yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[1][2]); - else if (strcmp(keyword, "j''z") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[2][2]); - else if (strcmp(keyword, "j''zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[2][0]); - else if (strcmp(keyword, "j''zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Jpp[2][1]); - else if (strcmp(keyword, "k") == 0) StoreWithCheckDup_d(keyword, value, &StdI.K); - else if (strcmp(keyword, "l") == 0) StoreWithCheckDup_i(keyword, value, &StdI.L); - else if (strcmp(keyword, "lattice") == 0) StoreWithCheckDup_sl(keyword, value, StdI.lattice); - else if (strcmp(keyword, "llength") == 0) StoreWithCheckDup_d(keyword, value, &StdI.length[1]); - else if (strcmp(keyword, "lx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[1][0]); - else if (strcmp(keyword, "ly") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[1][1]); - else if (strcmp(keyword, "lz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[1][2]); - else if (strcmp(keyword, "model") == 0) StoreWithCheckDup_sl(keyword, value, StdI.model); - else if (strcmp(keyword, "mu") == 0) StoreWithCheckDup_d(keyword, value, &StdI.mu); - else if (strcmp(keyword, "nelec") == 0) StoreWithCheckDup_i(keyword, value, &StdI.nelec); - else if (strcmp(keyword, "outputmode") == 0) StoreWithCheckDup_sl(keyword, value, StdI.outputmode); - else if (strcmp(keyword, "phase0") == 0) StoreWithCheckDup_d(keyword, value, &StdI.phase[0]); - else if (strcmp(keyword, "phase1") == 0) StoreWithCheckDup_d(keyword, value, &StdI.phase[1]); - else if (strcmp(keyword, "phase2") == 0) StoreWithCheckDup_d(keyword, value, &StdI.phase[2]); - else if (strcmp(keyword, "t") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t); - else if (strcmp(keyword, "t0") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t0); - else if (strcmp(keyword, "t0'") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t0p); - else if (strcmp(keyword, "t1") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t1); - else if (strcmp(keyword, "t1'") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t1p); - else if (strcmp(keyword, "t2") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t2); - else if (strcmp(keyword, "t2'") == 0) StoreWithCheckDup_c(keyword, value, &StdI.t2p); - else if (strcmp(keyword, "t'") == 0) StoreWithCheckDup_c(keyword, value, &StdI.tp); - else if (strcmp(keyword, "t''") == 0) StoreWithCheckDup_c(keyword, value, &StdI.tpp); - else if (strcmp(keyword, "u") == 0) StoreWithCheckDup_d(keyword, value, &StdI.U); - else if (strcmp(keyword, "v") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V); - else if (strcmp(keyword, "v0") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V0); - else if (strcmp(keyword, "v0'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V0p); - else if (strcmp(keyword, "v1") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V1); - else if (strcmp(keyword, "v1'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V1p); - else if (strcmp(keyword, "v2") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V2); - else if (strcmp(keyword, "v2p") == 0) StoreWithCheckDup_d(keyword, value, &StdI.V2); - else if (strcmp(keyword, "v'") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Vp); - else if (strcmp(keyword, "v''") == 0) StoreWithCheckDup_d(keyword, value, &StdI.Vpp); - else if (strcmp(keyword, "w") == 0) StoreWithCheckDup_i(keyword, value, &StdI.W); - else if (strcmp(keyword, "wlength") == 0) StoreWithCheckDup_d(keyword, value, &StdI.length[0]); - else if (strcmp(keyword, "wx") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[0][0]); - else if (strcmp(keyword, "wy") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[0][1]); - else if (strcmp(keyword, "wz") == 0) StoreWithCheckDup_d(keyword, value, &StdI.direct[0][2]); - else if (strcmp(keyword, "w90_cutoff") == 0) StoreWithCheckDup_d(keyword, value, &StdI.W90_cutoff); - else if (strcmp(keyword, "w90_geom") == 0) StoreWithCheckDup_s(keyword, value, StdI.W90_geom); - else if (strcmp(keyword, "w90_hr") == 0) StoreWithCheckDup_s(keyword, value, StdI.W90_hr); - else if (strcmp(keyword, "2sz") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Sz2); + if (strcmp(keyword, "a") == 0) StoreWithCheckDup_d(keyword, value, &StdI->a); + else if (strcmp(keyword, "a0h") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[0][2]); + else if (strcmp(keyword, "a0l") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[0][1]); + else if (strcmp(keyword, "a0w") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[0][0]); + else if (strcmp(keyword, "a1h") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[1][2]); + else if (strcmp(keyword, "a1l") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[1][1]); + else if (strcmp(keyword, "a1w") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[1][0]); + else if (strcmp(keyword, "a2h") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[2][2]); + else if (strcmp(keyword, "a2l") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[2][1]); + else if (strcmp(keyword, "a2w") == 0) StoreWithCheckDup_i(keyword, value, &StdI->box[2][0]); + else if (strcmp(keyword, "d") == 0) StoreWithCheckDup_d(keyword, value, &StdI->D[2][2]); + else if (strcmp(keyword, "gamma") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Gamma); + else if (strcmp(keyword, "h") == 0) StoreWithCheckDup_d(keyword, value, &StdI->h); + else if (strcmp(keyword, "height") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Height); + else if (strcmp(keyword, "hlength") == 0) StoreWithCheckDup_d(keyword, value, &StdI->length[2]); + else if (strcmp(keyword, "hx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[2][0]); + else if (strcmp(keyword, "hy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[2][1]); + else if (strcmp(keyword, "hz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[2][2]); + else if (strcmp(keyword, "j") == 0) StoreWithCheckDup_d(keyword, value, &StdI->JAll); + else if (strcmp(keyword, "jx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[0][0]); + else if (strcmp(keyword, "jxy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[0][1]); + else if (strcmp(keyword, "jxz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[0][2]); + else if (strcmp(keyword, "jy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[1][1]); + else if (strcmp(keyword, "jyx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[1][0]); + else if (strcmp(keyword, "jyz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[1][2]); + else if (strcmp(keyword, "jz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[2][2]); + else if (strcmp(keyword, "jzx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[2][0]); + else if (strcmp(keyword, "jzy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J[2][1]); + else if (strcmp(keyword, "j0") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0All); + else if (strcmp(keyword, "j0x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[0][0]); + else if (strcmp(keyword, "j0xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[0][1]); + else if (strcmp(keyword, "j0xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[0][2]); + else if (strcmp(keyword, "j0y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[1][1]); + else if (strcmp(keyword, "j0yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[1][0]); + else if (strcmp(keyword, "j0yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[1][2]); + else if (strcmp(keyword, "j0z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[2][2]); + else if (strcmp(keyword, "j0zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[2][0]); + else if (strcmp(keyword, "j0zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0[2][1]); + else if (strcmp(keyword, "j0'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0pAll); + else if (strcmp(keyword, "j0'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[0][0]); + else if (strcmp(keyword, "j0'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[0][1]); + else if (strcmp(keyword, "j0'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[0][2]); + else if (strcmp(keyword, "j0'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[1][1]); + else if (strcmp(keyword, "j0'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[1][0]); + else if (strcmp(keyword, "j0'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[1][2]); + else if (strcmp(keyword, "j0'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[2][2]); + else if (strcmp(keyword, "j0'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[2][0]); + else if (strcmp(keyword, "j0'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J0p[2][1]); + else if (strcmp(keyword, "j1") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1All); + else if (strcmp(keyword, "j1x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[0][0]); + else if (strcmp(keyword, "j1xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[0][1]); + else if (strcmp(keyword, "j1xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[0][2]); + else if (strcmp(keyword, "j1y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[1][1]); + else if (strcmp(keyword, "j1yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[1][0]); + else if (strcmp(keyword, "j1yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[1][2]); + else if (strcmp(keyword, "j1z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[2][2]); + else if (strcmp(keyword, "j1zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[2][0]); + else if (strcmp(keyword, "j1zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1[2][1]); + else if (strcmp(keyword, "j1'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1pAll); + else if (strcmp(keyword, "j1'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[0][0]); + else if (strcmp(keyword, "j1'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[0][1]); + else if (strcmp(keyword, "j1'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[0][2]); + else if (strcmp(keyword, "j1'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[1][1]); + else if (strcmp(keyword, "j1'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[1][0]); + else if (strcmp(keyword, "j1'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[1][2]); + else if (strcmp(keyword, "j1'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[2][2]); + else if (strcmp(keyword, "j1'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[2][0]); + else if (strcmp(keyword, "j1'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J1p[2][1]); + else if (strcmp(keyword, "j2") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2All); + else if (strcmp(keyword, "j2x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[0][0]); + else if (strcmp(keyword, "j2xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[0][1]); + else if (strcmp(keyword, "j2xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[0][2]); + else if (strcmp(keyword, "j2y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[1][1]); + else if (strcmp(keyword, "j2yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[1][0]); + else if (strcmp(keyword, "j2yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[1][2]); + else if (strcmp(keyword, "j2z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[2][2]); + else if (strcmp(keyword, "j2zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[2][0]); + else if (strcmp(keyword, "j2zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2[2][1]); + else if (strcmp(keyword, "j2'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2pAll); + else if (strcmp(keyword, "j2'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[0][0]); + else if (strcmp(keyword, "j2'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[0][1]); + else if (strcmp(keyword, "j2'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[0][2]); + else if (strcmp(keyword, "j2'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[1][1]); + else if (strcmp(keyword, "j2'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[1][0]); + else if (strcmp(keyword, "j2'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[1][2]); + else if (strcmp(keyword, "j2'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[2][2]); + else if (strcmp(keyword, "j2'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[2][0]); + else if (strcmp(keyword, "j2'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->J2p[2][1]); + else if (strcmp(keyword, "j'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->JpAll); + else if (strcmp(keyword, "j'x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[0][0]); + else if (strcmp(keyword, "j'xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[0][1]); + else if (strcmp(keyword, "j'xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[0][2]); + else if (strcmp(keyword, "j'y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[1][1]); + else if (strcmp(keyword, "j'yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[1][0]); + else if (strcmp(keyword, "j'yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[1][2]); + else if (strcmp(keyword, "j'z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[2][2]); + else if (strcmp(keyword, "j'zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[2][0]); + else if (strcmp(keyword, "j'zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jp[2][1]); + else if (strcmp(keyword, "j''") == 0) StoreWithCheckDup_d(keyword, value, &StdI->JppAll); + else if (strcmp(keyword, "j''x") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[0][0]); + else if (strcmp(keyword, "j''xy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[0][1]); + else if (strcmp(keyword, "j''xz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[0][2]); + else if (strcmp(keyword, "j''y") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[1][1]); + else if (strcmp(keyword, "j''yx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[1][0]); + else if (strcmp(keyword, "j''yz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[1][2]); + else if (strcmp(keyword, "j''z") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[2][2]); + else if (strcmp(keyword, "j''zx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[2][0]); + else if (strcmp(keyword, "j''zy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Jpp[2][1]); + else if (strcmp(keyword, "k") == 0) StoreWithCheckDup_d(keyword, value, &StdI->K); + else if (strcmp(keyword, "l") == 0) StoreWithCheckDup_i(keyword, value, &StdI->L); + else if (strcmp(keyword, "lattice") == 0) StoreWithCheckDup_sl(keyword, value, StdI->lattice); + else if (strcmp(keyword, "llength") == 0) StoreWithCheckDup_d(keyword, value, &StdI->length[1]); + else if (strcmp(keyword, "lx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[1][0]); + else if (strcmp(keyword, "ly") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[1][1]); + else if (strcmp(keyword, "lz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[1][2]); + else if (strcmp(keyword, "model") == 0) StoreWithCheckDup_sl(keyword, value, StdI->model); + else if (strcmp(keyword, "mu") == 0) StoreWithCheckDup_d(keyword, value, &StdI->mu); + else if (strcmp(keyword, "nelec") == 0) StoreWithCheckDup_i(keyword, value, &StdI->nelec); + else if (strcmp(keyword, "outputmode") == 0) StoreWithCheckDup_sl(keyword, value, StdI->outputmode); + else if (strcmp(keyword, "phase0") == 0) StoreWithCheckDup_d(keyword, value, &StdI->phase[0]); + else if (strcmp(keyword, "phase1") == 0) StoreWithCheckDup_d(keyword, value, &StdI->phase[1]); + else if (strcmp(keyword, "phase2") == 0) StoreWithCheckDup_d(keyword, value, &StdI->phase[2]); + else if (strcmp(keyword, "t") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t); + else if (strcmp(keyword, "t0") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t0); + else if (strcmp(keyword, "t0'") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t0p); + else if (strcmp(keyword, "t1") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t1); + else if (strcmp(keyword, "t1'") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t1p); + else if (strcmp(keyword, "t2") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t2); + else if (strcmp(keyword, "t2'") == 0) StoreWithCheckDup_c(keyword, value, &StdI->t2p); + else if (strcmp(keyword, "t'") == 0) StoreWithCheckDup_c(keyword, value, &StdI->tp); + else if (strcmp(keyword, "t''") == 0) StoreWithCheckDup_c(keyword, value, &StdI->tpp); + else if (strcmp(keyword, "u") == 0) StoreWithCheckDup_d(keyword, value, &StdI->U); + else if (strcmp(keyword, "v") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V); + else if (strcmp(keyword, "v0") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V0); + else if (strcmp(keyword, "v0'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V0p); + else if (strcmp(keyword, "v1") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V1); + else if (strcmp(keyword, "v1'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V1p); + else if (strcmp(keyword, "v2") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V2); + else if (strcmp(keyword, "v2p") == 0) StoreWithCheckDup_d(keyword, value, &StdI->V2); + else if (strcmp(keyword, "v'") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Vp); + else if (strcmp(keyword, "v''") == 0) StoreWithCheckDup_d(keyword, value, &StdI->Vpp); + else if (strcmp(keyword, "w") == 0) StoreWithCheckDup_i(keyword, value, &StdI->W); + else if (strcmp(keyword, "wlength") == 0) StoreWithCheckDup_d(keyword, value, &StdI->length[0]); + else if (strcmp(keyword, "wx") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[0][0]); + else if (strcmp(keyword, "wy") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[0][1]); + else if (strcmp(keyword, "wz") == 0) StoreWithCheckDup_d(keyword, value, &StdI->direct[0][2]); + else if (strcmp(keyword, "w90_cutoff") == 0) StoreWithCheckDup_d(keyword, value, &StdI->W90_cutoff); + else if (strcmp(keyword, "w90_geom") == 0) StoreWithCheckDup_s(keyword, value, StdI->W90_geom); + else if (strcmp(keyword, "w90_hr") == 0) StoreWithCheckDup_s(keyword, value, StdI->W90_hr); + else if (strcmp(keyword, "2sz") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Sz2); #if defined(_HPhi) - else if (strcmp(keyword, "calcspec") == 0) StoreWithCheckDup_sl(keyword, value, StdI.CalcSpec); - else if (strcmp(keyword, "exct") == 0) StoreWithCheckDup_i(keyword, value, &StdI.exct); - else if (strcmp(keyword, "eigenvecio") == 0) StoreWithCheckDup_sl(keyword, value, StdI.EigenVecIO); - else if (strcmp(keyword, "expecinterval") == 0) StoreWithCheckDup_i(keyword, value, &StdI.ExpecInterval); - else if (strcmp(keyword, "cdatafilehead") == 0) StoreWithCheckDup_s(keyword, value, StdI.CDataFileHead); - else if (strcmp(keyword, "flgtemp") == 0) StoreWithCheckDup_i(keyword, value, &StdI.FlgTemp); - else if (strcmp(keyword, "initialvectype") == 0) StoreWithCheckDup_sl(keyword, value, StdI.InitialVecType); - else if (strcmp(keyword, "initial_iv") == 0) StoreWithCheckDup_i(keyword, value, &StdI.initial_iv); - else if (strcmp(keyword, "lanczoseps") == 0) StoreWithCheckDup_i(keyword, value, &StdI.LanczosEps); - else if (strcmp(keyword, "lanczostarget") == 0) StoreWithCheckDup_i(keyword, value, &StdI.LanczosTarget); - else if (strcmp(keyword, "lanczos_max") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Lanczos_max); - else if (strcmp(keyword, "largevalue") == 0) StoreWithCheckDup_d(keyword, value, &StdI.LargeValue); - else if (strcmp(keyword, "method") == 0) StoreWithCheckDup_sl(keyword, value, StdI.method); - else if (strcmp(keyword, "nomega") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Nomega); - else if (strcmp(keyword, "numave") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NumAve); - else if (strcmp(keyword, "nvec") == 0) StoreWithCheckDup_i(keyword, value, &StdI.nvec); - else if (strcmp(keyword, "omegamax") == 0) StoreWithCheckDup_d(keyword, value, &StdI.OmegaMax); - else if (strcmp(keyword, "omegamin") == 0) StoreWithCheckDup_d(keyword, value, &StdI.OmegaMin); - else if (strcmp(keyword, "omegaim") == 0) StoreWithCheckDup_d(keyword, value, &StdI.OmegaIm); - else if (strcmp(keyword, "restart") == 0) StoreWithCheckDup_sl(keyword, value, StdI.Restart); - else if (strcmp(keyword, "spectrumqh") == 0) StoreWithCheckDup_d(keyword, value, &StdI.SpectrumQH); - else if (strcmp(keyword, "spectrumql") == 0) StoreWithCheckDup_d(keyword, value, &StdI.SpectrumQL); - else if (strcmp(keyword, "spectrumqw") == 0) StoreWithCheckDup_d(keyword, value, &StdI.SpectrumQW); - else if (strcmp(keyword, "spectrumtype") == 0) StoreWithCheckDup_sl(keyword, value, StdI.SpectrumType); - else if (strcmp(keyword, "2s") == 0) StoreWithCheckDup_i(keyword, value, &StdI.S2); + else if (strcmp(keyword, "calcspec") == 0) StoreWithCheckDup_sl(keyword, value, StdI->CalcSpec); + else if (strcmp(keyword, "exct") == 0) StoreWithCheckDup_i(keyword, value, &StdI->exct); + else if (strcmp(keyword, "eigenvecio") == 0) StoreWithCheckDup_sl(keyword, value, StdI->EigenVecIO); + else if (strcmp(keyword, "expecinterval") == 0) StoreWithCheckDup_i(keyword, value, &StdI->ExpecInterval); + else if (strcmp(keyword, "cdatafilehead") == 0) StoreWithCheckDup_s(keyword, value, StdI->CDataFileHead); + else if (strcmp(keyword, "flgtemp") == 0) StoreWithCheckDup_i(keyword, value, &StdI->FlgTemp); + else if (strcmp(keyword, "initialvectype") == 0) StoreWithCheckDup_sl(keyword, value, StdI->InitialVecType); + else if (strcmp(keyword, "initial_iv") == 0) StoreWithCheckDup_i(keyword, value, &StdI->initial_iv); + else if (strcmp(keyword, "lanczoseps") == 0) StoreWithCheckDup_i(keyword, value, &StdI->LanczosEps); + else if (strcmp(keyword, "lanczostarget") == 0) StoreWithCheckDup_i(keyword, value, &StdI->LanczosTarget); + else if (strcmp(keyword, "lanczos_max") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Lanczos_max); + else if (strcmp(keyword, "largevalue") == 0) StoreWithCheckDup_d(keyword, value, &StdI->LargeValue); + else if (strcmp(keyword, "method") == 0) StoreWithCheckDup_sl(keyword, value, StdI->method); + else if (strcmp(keyword, "nomega") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Nomega); + else if (strcmp(keyword, "numave") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NumAve); + else if (strcmp(keyword, "nvec") == 0) StoreWithCheckDup_i(keyword, value, &StdI->nvec); + else if (strcmp(keyword, "omegamax") == 0) StoreWithCheckDup_d(keyword, value, &StdI->OmegaMax); + else if (strcmp(keyword, "omegamin") == 0) StoreWithCheckDup_d(keyword, value, &StdI->OmegaMin); + else if (strcmp(keyword, "omegaim") == 0) StoreWithCheckDup_d(keyword, value, &StdI->OmegaIm); + else if (strcmp(keyword, "restart") == 0) StoreWithCheckDup_sl(keyword, value, StdI->Restart); + else if (strcmp(keyword, "spectrumqh") == 0) StoreWithCheckDup_d(keyword, value, &StdI->SpectrumQH); + else if (strcmp(keyword, "spectrumql") == 0) StoreWithCheckDup_d(keyword, value, &StdI->SpectrumQL); + else if (strcmp(keyword, "spectrumqw") == 0) StoreWithCheckDup_d(keyword, value, &StdI->SpectrumQW); + else if (strcmp(keyword, "spectrumtype") == 0) StoreWithCheckDup_sl(keyword, value, StdI->SpectrumType); + else if (strcmp(keyword, "2s") == 0) StoreWithCheckDup_i(keyword, value, &StdI->S2); #elif defined(_mVMC) - else if (strcmp(keyword, "a0hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[0][2]); - else if (strcmp(keyword, "a0lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[0][1]); - else if (strcmp(keyword, "a0wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[0][0]); - else if (strcmp(keyword, "a1hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[1][2]); - else if (strcmp(keyword, "a1lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[1][1]); - else if (strcmp(keyword, "a1wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[1][0]); - else if (strcmp(keyword, "a2hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[2][2]); - else if (strcmp(keyword, "a2lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[2][1]); - else if (strcmp(keyword, "a2wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.boxsub[2][0]); - else if (strcmp(keyword, "complextype") == 0) StoreWithCheckDup_i(keyword, value, &StdI.ComplexType); - else if (strcmp(keyword, "cparafilehead") == 0) StoreWithCheckDup_s(keyword, value, StdI.CParaFileHead); - else if (strcmp(keyword, "dsroptredcut") == 0) StoreWithCheckDup_d(keyword, value, &StdI.DSROptRedCut); - else if (strcmp(keyword, "dsroptstadel") == 0) StoreWithCheckDup_d(keyword, value, &StdI.DSROptStaDel); - else if (strcmp(keyword, "dsroptstepdt") == 0) StoreWithCheckDup_d(keyword, value, &StdI.DSROptStepDt); - else if (strcmp(keyword, "hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Hsub); - else if (strcmp(keyword, "lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Lsub); - else if (strcmp(keyword, "nvmccalmode") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NVMCCalMode); - else if (strcmp(keyword, "ndataidxstart") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NDataIdxStart); - else if (strcmp(keyword, "ndataqtysmp") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NDataQtySmp); - else if (strcmp(keyword, "nlanczosmode") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NLanczosMode); - else if (strcmp(keyword, "nmptrans") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NMPTrans); - else if (strcmp(keyword, "nspgaussleg") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NSPGaussLeg); - else if (strcmp(keyword, "nsplitsize") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NSplitSize); - else if (strcmp(keyword, "nspstot") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NSPStot); - else if (strcmp(keyword, "nsroptitrsmp") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NSROptItrSmp); - else if (strcmp(keyword, "nsroptitrstep") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NSROptItrStep); - else if (strcmp(keyword, "nstore") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NStore); - else if (strcmp(keyword, "nsrcg") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NSRCG); - else if (strcmp(keyword, "nvmcinterval") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NVMCInterval); - else if (strcmp(keyword, "nvmcsample") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NVMCSample); - else if (strcmp(keyword, "nvmcwarmup") == 0) StoreWithCheckDup_i(keyword, value, &StdI.NVMCWarmUp); - else if (strcmp(keyword, "rndseed") == 0) StoreWithCheckDup_i(keyword, value, &StdI.RndSeed); - else if (strcmp(keyword, "wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI.Wsub); + else if (strcmp(keyword, "a0hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[0][2]); + else if (strcmp(keyword, "a0lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[0][1]); + else if (strcmp(keyword, "a0wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[0][0]); + else if (strcmp(keyword, "a1hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[1][2]); + else if (strcmp(keyword, "a1lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[1][1]); + else if (strcmp(keyword, "a1wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[1][0]); + else if (strcmp(keyword, "a2hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[2][2]); + else if (strcmp(keyword, "a2lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[2][1]); + else if (strcmp(keyword, "a2wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->boxsub[2][0]); + else if (strcmp(keyword, "complextype") == 0) StoreWithCheckDup_i(keyword, value, &StdI->ComplexType); + else if (strcmp(keyword, "cparafilehead") == 0) StoreWithCheckDup_s(keyword, value, StdI->CParaFileHead); + else if (strcmp(keyword, "dsroptredcut") == 0) StoreWithCheckDup_d(keyword, value, &StdI->DSROptRedCut); + else if (strcmp(keyword, "dsroptstadel") == 0) StoreWithCheckDup_d(keyword, value, &StdI->DSROptStaDel); + else if (strcmp(keyword, "dsroptstepdt") == 0) StoreWithCheckDup_d(keyword, value, &StdI->DSROptStepDt); + else if (strcmp(keyword, "hsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Hsub); + else if (strcmp(keyword, "lsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Lsub); + else if (strcmp(keyword, "nvmccalmode") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NVMCCalMode); + else if (strcmp(keyword, "ndataidxstart") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NDataIdxStart); + else if (strcmp(keyword, "ndataqtysmp") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NDataQtySmp); + else if (strcmp(keyword, "nlanczosmode") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NLanczosMode); + else if (strcmp(keyword, "nmptrans") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NMPTrans); + else if (strcmp(keyword, "nspgaussleg") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NSPGaussLeg); + else if (strcmp(keyword, "nsplitsize") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NSplitSize); + else if (strcmp(keyword, "nspstot") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NSPStot); + else if (strcmp(keyword, "nsroptitrsmp") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NSROptItrSmp); + else if (strcmp(keyword, "nsroptitrstep") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NSROptItrStep); + else if (strcmp(keyword, "nstore") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NStore); + else if (strcmp(keyword, "nsrcg") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NSRCG); + else if (strcmp(keyword, "nvmcinterval") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NVMCInterval); + else if (strcmp(keyword, "nvmcsample") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NVMCSample); + else if (strcmp(keyword, "nvmcwarmup") == 0) StoreWithCheckDup_i(keyword, value, &StdI->NVMCWarmUp); + else if (strcmp(keyword, "rndseed") == 0) StoreWithCheckDup_i(keyword, value, &StdI->RndSeed); + else if (strcmp(keyword, "wsub") == 0) StoreWithCheckDup_i(keyword, value, &StdI->Wsub); #endif else { fprintf(stdout, "ERROR ! Unsupported Keyword !\n"); @@ -2048,129 +2059,190 @@ void StdFace_main( /* Check the model */ - StdI.lGC = 0; - StdI.lBoost = 0; - if (strcmp(StdI.model, "fermionhubbard") == 0 - || strcmp(StdI.model, "hubbard") == 0) - strcpy(StdI.model, "hubbard\0"); - else if(strcmp(StdI.model, "fermionhubbardgc") == 0 - || strcmp(StdI.model, "hubbardgc") == 0) { - strcpy(StdI.model, "hubbard\0"); - StdI.lGC = 1; + StdI->lGC = 0; + StdI->lBoost = 0; + if (strcmp(StdI->model, "fermionhubbard") == 0 + || strcmp(StdI->model, "hubbard") == 0) + strcpy(StdI->model, "hubbard\0"); + else if(strcmp(StdI->model, "fermionhubbardgc") == 0 + || strcmp(StdI->model, "hubbardgc") == 0) { + strcpy(StdI->model, "hubbard\0"); + StdI->lGC = 1; } - else if (strcmp(StdI.model, "spin") == 0) - strcpy(StdI.model, "spin\0"); - else if (strcmp(StdI.model, "spingc") == 0) { - strcpy(StdI.model, "spin\0"); - StdI.lGC = 1; + else if (strcmp(StdI->model, "spin") == 0) + strcpy(StdI->model, "spin\0"); + else if (strcmp(StdI->model, "spingc") == 0) { + strcpy(StdI->model, "spin\0"); + StdI->lGC = 1; } #if defined(_HPhi) - else if(strcmp(StdI.model, "spingcboost") == 0 || - strcmp(StdI.model, "spingccma") == 0) { - strcpy(StdI.model, "spin\0"); - StdI.lGC = 1; - StdI.lBoost = 1; + else if(strcmp(StdI->model, "spingcboost") == 0 || + strcmp(StdI->model, "spingccma") == 0) { + strcpy(StdI->model, "spin\0"); + StdI->lGC = 1; + StdI->lBoost = 1; } #endif - else if (strcmp(StdI.model, "kondolattice") == 0 - || strcmp(StdI.model, "kondo") == 0) { - strcpy(StdI.model, "kondo\0"); + else if (strcmp(StdI->model, "kondolattice") == 0 + || strcmp(StdI->model, "kondo") == 0) { + strcpy(StdI->model, "kondo\0"); } - else if(strcmp(StdI.model, "kondolatticegc") == 0 - || strcmp(StdI.model, "kondogc") == 0) { - strcpy(StdI.model, "kondo\0"); - StdI.lGC = 1; + else if(strcmp(StdI->model, "kondolatticegc") == 0 + || strcmp(StdI->model, "kondogc") == 0) { + strcpy(StdI->model, "kondo\0"); + StdI->lGC = 1; } - else UnsupportedSystem(StdI.model, StdI.lattice); + else UnsupportedSystem(StdI->model, StdI->lattice); - /* + /*>> Generate Hamiltonian definition files */ - if (strcmp(StdI.lattice, "chain") == 0 - || strcmp(StdI.lattice, "chainlattice") == 0) StdFace_Chain(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "facecenteredorthorhombic") == 0 - || strcmp(StdI.lattice, "fcorthorhombic") == 0 - || strcmp(StdI.lattice, "fco") == 0) StdFace_FCOrtho(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "honeycomb") == 0 - || strcmp(StdI.lattice, "honeycomblattice") == 0) StdFace_Honeycomb(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "kagome") == 0 - || strcmp(StdI.lattice, "kagomelattice") == 0) StdFace_Kagome(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "ladder") == 0 - || strcmp(StdI.lattice, "ladderlattice") == 0) StdFace_Ladder(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "orthorhombic") == 0 - || strcmp(StdI.lattice, "simpleorthorhombic") == 0) StdFace_Orthorhombic(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "pyrochlore") == 0) StdFace_Pyrochlore(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "tetragonal") == 0 - || strcmp(StdI.lattice, "tetragonallattice") == 0 - || strcmp(StdI.lattice, "square") == 0 - || strcmp(StdI.lattice, "squarelattice") == 0) StdFace_Tetragonal(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "triangular") == 0 - || strcmp(StdI.lattice, "triangularlattice") == 0) StdFace_Triangular(&StdI, StdI.model); - else if (strcmp(StdI.lattice, "wannier90") == 0) StdFace_Wannier90(&StdI, StdI.model); - else UnsupportedSystem(StdI.model, StdI.lattice); + if (strcmp(StdI->lattice, "chain") == 0 + || strcmp(StdI->lattice, "chainlattice") == 0) StdFace_Chain(StdI); + else if (strcmp(StdI->lattice, "facecenteredorthorhombic") == 0 + || strcmp(StdI->lattice, "fcorthorhombic") == 0 + || strcmp(StdI->lattice, "fco") == 0) StdFace_FCOrtho(StdI); + else if (strcmp(StdI->lattice, "honeycomb") == 0 + || strcmp(StdI->lattice, "honeycomblattice") == 0) StdFace_Honeycomb(StdI); + else if (strcmp(StdI->lattice, "kagome") == 0 + || strcmp(StdI->lattice, "kagomelattice") == 0) StdFace_Kagome(StdI); + else if (strcmp(StdI->lattice, "ladder") == 0 + || strcmp(StdI->lattice, "ladderlattice") == 0) StdFace_Ladder(StdI); + else if (strcmp(StdI->lattice, "orthorhombic") == 0 + || strcmp(StdI->lattice, "simpleorthorhombic") == 0) StdFace_Orthorhombic(StdI); + else if (strcmp(StdI->lattice, "pyrochlore") == 0) StdFace_Pyrochlore(StdI); + else if (strcmp(StdI->lattice, "tetragonal") == 0 + || strcmp(StdI->lattice, "tetragonallattice") == 0 + || strcmp(StdI->lattice, "square") == 0 + || strcmp(StdI->lattice, "squarelattice") == 0) StdFace_Tetragonal(StdI); + else if (strcmp(StdI->lattice, "triangular") == 0 + || strcmp(StdI->lattice, "triangularlattice") == 0) StdFace_Triangular(StdI); + else if (strcmp(StdI->lattice, "wannier90") == 0) StdFace_Wannier90(StdI); + else UnsupportedSystem(StdI->model, StdI->lattice);//<< /**/ #if defined(_HPhi) - StdFace_LargeValue(&StdI); + StdFace_LargeValue(StdI); /* Generate Hamiltonian for Boost */ - if (StdI.lBoost == 1) { - if (strcmp(StdI.lattice, "chain") == 0 - || strcmp(StdI.lattice, "chainlattice") == 0) StdFace_Chain_Boost(&StdI); - else if (strcmp(StdI.lattice, "honeycomb") == 0 - || strcmp(StdI.lattice, "honeycomblattice") == 0) StdFace_Honeycomb_Boost(&StdI); - else if (strcmp(StdI.lattice, "kagome") == 0 - || strcmp(StdI.lattice, "kagomelattice") == 0) StdFace_Kagome_Boost(&StdI); - else if (strcmp(StdI.lattice, "ladder") == 0 - || strcmp(StdI.lattice, "ladderlattice") == 0) StdFace_Ladder_Boost(&StdI); - else UnsupportedSystem(StdI.model, StdI.lattice); + if (StdI->lBoost == 1) { + if (strcmp(StdI->lattice, "chain") == 0 + || strcmp(StdI->lattice, "chainlattice") == 0) StdFace_Chain_Boost(StdI); + else if (strcmp(StdI->lattice, "honeycomb") == 0 + || strcmp(StdI->lattice, "honeycomblattice") == 0) StdFace_Honeycomb_Boost(StdI); + else if (strcmp(StdI->lattice, "kagome") == 0 + || strcmp(StdI->lattice, "kagomelattice") == 0) StdFace_Kagome_Boost(StdI); + else if (strcmp(StdI->lattice, "ladder") == 0 + || strcmp(StdI->lattice, "ladderlattice") == 0) StdFace_Ladder_Boost(StdI); + else UnsupportedSystem(StdI->model, StdI->lattice); } #endif /**/ fprintf(stdout, "\n"); fprintf(stdout, "###### Print Expert input files ######\n"); fprintf(stdout, "\n"); - PrintLocSpin(&StdI); - PrintTrans(&StdI); - PrintInteractions(&StdI); + PrintLocSpin(StdI); + PrintTrans(StdI); + PrintInteractions(StdI); #if defined(_HPhi) - PrintExcitation(&StdI); - PrintCalcMod(&StdI); + PrintExcitation(StdI); + PrintCalcMod(StdI); #elif defined(_mVMC) - if(StdI.lGC == 0 && (StdI.Sz2 == 0 || StdI.Sz2 == StdI.NaN_i)) - StdFace_PrintVal_i("ComplexType", &StdI.ComplexType, 0); - else StdFace_PrintVal_i("ComplexType", &StdI.ComplexType, 1); - - StdFace_generate_orb(&StdI); - StdFace_Proj(&StdI); - PrintJastrow(&StdI); - if(StdI.lGC == 1 || (StdI.Sz2 != 0 && StdI.Sz2 != StdI.NaN_i) ) - PrintOrbPara(&StdI); - PrintGutzwiller(&StdI); - PrintOrb(&StdI); + if(StdI->lGC == 0 && (StdI->Sz2 == 0 || StdI->Sz2 == StdI->NaN_i)) + StdFace_PrintVal_i("ComplexType", &StdI->ComplexType, 0); + else StdFace_PrintVal_i("ComplexType", &StdI->ComplexType, 1); + + StdFace_generate_orb(StdI); + StdFace_Proj(StdI); + PrintJastrow(StdI); + if(StdI->lGC == 1 || (StdI->Sz2 != 0 && StdI->Sz2 != StdI->NaN_i) ) + PrintOrbPara(StdI); + PrintGutzwiller(StdI); + PrintOrb(StdI); #endif - CheckModPara(&StdI); - PrintModPara(&StdI); - CheckOutputMode(&StdI); - Print1Green(&StdI); - Print2Green(&StdI); - PrintNamelist(&StdI); + CheckModPara(StdI); + PrintModPara(StdI); + CheckOutputMode(StdI); + Print1Green(StdI); + Print2Green(StdI); + PrintNamelist(StdI); /* Finalize All */ - free(StdI.locspinflag); - for (ktrans = 0; ktrans < StdI.ntrans; ktrans++) { - free(StdI.transindx[ktrans]); + free(StdI->locspinflag); + for (ktrans = 0; ktrans < StdI->ntrans; ktrans++) { + free(StdI->transindx[ktrans]); } - free(StdI.transindx); - free(StdI.trans); - for (kintr = 0; kintr < StdI.nintr; kintr++) { - free(StdI.intrindx[kintr]); + free(StdI->transindx); + free(StdI->trans); + for (kintr = 0; kintr < StdI->nintr; kintr++) { + free(StdI->intrindx[kintr]); } - free(StdI.intrindx); - free(StdI.intr); + free(StdI->intrindx); + free(StdI->intr); fprintf(stdout, "\n###### Input files are generated. ######\n\n"); }/*void StdFace_main*/ +/** +@page page_addstandard Add new lattice model into Standard mode + +@section sec_stan_proc Overall procedure + +If you want to create new lattice file, do as these files. + +-# Copy one of laattice files such as Kagome.c + (Probably the most similar one) and rename it. +-# @ref sec_lattice +-# Add that function in the header file, StdFace_ModelUtil.h +-# Add entry at + @dontinclude StdFace_main.c + @skip StdFace\_main + @until StdIntList + : + @skip >> + @until << +. +


+@section sec_lattice Modify lattice model file + +To create new lattice file, please modify the following part +(Kagome.c as an example): + +@dontinclude Kagome.c +Define function as +@skip StdFace\_Kagome( +@until { +Lattice parameter used only in geometry.dat and lattice.gp +@skip StdFace\_PrintVal\_d +@until Ly +these are unit lattice vectors.\n +Just call this function to initialize all lattice related parameters +@skipline StdFace\_InitSite +where "2" indicates 2D +@skip tau +@until tau\[2\]\[0\] +These are the fractional coordinate of internal sites. +Then set parameters of Hamiltonian +@skip StdFace\_NotUsed\_J +@until @@ +to determine the default value of them and unused parameters. +For more details, please see the description of each functions. +Then Compute the upper limit of the number of Transfer & Interaction and malloc them. +@skip >> +@until << +Please estimate the number of bonds per site. +@skipline kCell +In this loop, the parameters of Hamiltonian are computed & stored. +The local term is computed as follows: +@skip >> +@until << +Probably, it is not necessary to modify this part. +The non-local term is as follows: +@skip >> +@until << +For more details, please see each functions. + +StdFace_Kagome_Boost()? Forget!! +*/ \ No newline at end of file diff --git a/src/StdFace/StdFace_vals.h b/src/StdFace/StdFace_vals.h index 0b2a995e..ae5dd08a 100644 --- a/src/StdFace/StdFace_vals.h +++ b/src/StdFace/StdFace_vals.h @@ -136,176 +136,176 @@ struct StdIntList { /* Transfer, Interaction, Locspin */ - int nsite;/**@brief Number of sites, set in the each lattice file.*/ - int *locspinflag;/**@brief [StdIntList::nsite] LocSpin in Expert mode, + int nsite;/**<@brief Number of sites, set in the each lattice file.*/ + int *locspinflag;/**<@brief [StdIntList::nsite] LocSpin in Expert mode, malloc and set in each lattice file.*/ - int ntrans;/**@brief Number of transfer, counted in each lattice file.*/ - int Ltrans;/**@brief Print trans.def or not, set in PrintTrans().*/ - int **transindx;/**@brief [StdIntList::ntrans][4] Site/spin indices of + int ntrans;/**<@brief Number of transfer, counted in each lattice file.*/ + int Ltrans;/**<@brief Print trans.def or not, set in PrintTrans().*/ + int **transindx;/**<@brief [StdIntList::ntrans][4] Site/spin indices of one-body term, malloc in StdFace_MallocInteractions() and set in StdFace_trans().*/ - double complex *trans;/**@brief [StdIntList::ntrans] Coefficient of + double complex *trans;/**<@brief [StdIntList::ntrans] Coefficient of one-body term, malloc in StdFace_MallocInteractions() and set in StdFace_trans().*/ - int nintr;/**@brief Number of InterAll, counted in each lattice file.*/ - int Lintr;/**@brief Print interall.def or not, set in PrintInteractions().*/ - int **intrindx;/**@brief [StdIntList::nintr][8] Site/spin indices of + int nintr;/**<@brief Number of InterAll, counted in each lattice file.*/ + int Lintr;/**<@brief Print interall.def or not, set in PrintInteractions().*/ + int **intrindx;/**<@brief [StdIntList::nintr][8] Site/spin indices of two-body term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - double complex *intr;/**@brief [StdIntList::nintr] Coefficient of general + double complex *intr;/**<@brief [StdIntList::nintr] Coefficient of general two-body term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - int NCintra;/**@brief Number of intra-site Coulomb interaction, + int NCintra;/**<@brief Number of intra-site Coulomb interaction, counted in each lattice file.*/ - int LCintra;/**@brief Print coulombintra.def or not, set in PrintInteractions().*/ - int **CintraIndx;/**@brief [StdIntList::NCintra][1] Site indices of + int LCintra;/**<@brief Print coulombintra.def or not, set in PrintInteractions().*/ + int **CintraIndx;/**<@brief [StdIntList::NCintra][1] Site indices of intra-site Coulomb term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - double *Cintra;/**@brief [StdIntList::NCintra] Coefficient of intra-site + double *Cintra;/**<@brief [StdIntList::NCintra] Coefficient of intra-site Coulomb term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - int NCinter;/**@brief Number of inter-site Coulomb interaction, + int NCinter;/**<@brief Number of inter-site Coulomb interaction, counted in each lattice file.*/ - int LCinter;/**@brief Print coulombinter.def or not, set in PrintInteractions().*/ - int **CinterIndx;/**@brief [StdIntList::NCinter][2] Site indices of + int LCinter;/**<@brief Print coulombinter.def or not, set in PrintInteractions().*/ + int **CinterIndx;/**<@brief [StdIntList::NCinter][2] Site indices of inter-site Coulomb term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - double *Cinter;/**@brief [StdIntList::NCinter] Coefficient of inter-site + double *Cinter;/**<@brief [StdIntList::NCinter] Coefficient of inter-site Coulomb term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - int NHund;/**@brief Number of Hund term, counted in each lattice file.*/ - int LHund;/**@brief Print hund.def or not, set in PrintInteractions().*/ - int **HundIndx;/**@brief [StdIntList::NHund][2] Site indices of + int NHund;/**<@brief Number of Hund term, counted in each lattice file.*/ + int LHund;/**<@brief Print hund.def or not, set in PrintInteractions().*/ + int **HundIndx;/**<@brief [StdIntList::NHund][2] Site indices of Hund term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - double *Hund;/**@brief [StdIntList::NHund] Coefficient of Hund term, + double *Hund;/**<@brief [StdIntList::NHund] Coefficient of Hund term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - int NEx;/**@brief Number of exchange term, counted in each lattice file.*/ - int LEx;/**@brief Print exchange.def or not, set in PrintInteractions().*/ - int **ExIndx;/**@brief [StdIntList::NEx][2] Site indices of + int NEx;/**<@brief Number of exchange term, counted in each lattice file.*/ + int LEx;/**<@brief Print exchange.def or not, set in PrintInteractions().*/ + int **ExIndx;/**<@brief [StdIntList::NEx][2] Site indices of exchange term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - double *Ex;/**@brief [StdIntList::NEx] Coefficient of exchange term, + double *Ex;/**<@brief [StdIntList::NEx] Coefficient of exchange term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - int NPairLift;/**@brief Number of pair-lift term, counted in each lattice file.*/ - int LPairLift;/**@brief Print pairlift.def or not, set in PrintInteractions().*/ - int **PLIndx;/**@brief [StdIntList::NPairLift][2] Site indices of + int NPairLift;/**<@brief Number of pair-lift term, counted in each lattice file.*/ + int LPairLift;/**<@brief Print pairlift.def or not, set in PrintInteractions().*/ + int **PLIndx;/**<@brief [StdIntList::NPairLift][2] Site indices of pair-lift term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ - double *PairLift;/**@brief [StdIntList::NPairLift] Coefficient of + double *PairLift;/**<@brief [StdIntList::NPairLift] Coefficient of pair-lift term, malloc in StdFace_MallocInteractions() and set in StdFace_intr().*/ int lBoost; /* Calculation conditions */ - int lGC;/**@brief Switch for computing Grandcanonical ensemble(== 1). + int lGC;/**<@brief Switch for computing Grandcanonical ensemble(== 1). Setted in StdFace_main() after all keywords are read.*/ - int nelec;/**@brief Number of electrons, input from file.*/ - int S2;/**@brief Total spin |S| of a local spin, input from file.*/ - char outputmode[256];/**@brief Select amount of correlation function, + int nelec;/**<@brief Number of electrons, input from file.*/ + int S2;/**<@brief Total spin |S| of a local spin, input from file.*/ + char outputmode[256];/**<@brief Select amount of correlation function, input from file.*/ - char CDataFileHead[256];/**@brief String fron tof the output files, + char CDataFileHead[256];/**<@brief String fron tof the output files, input from file*/ - int Sz2;/**@brief Total Sz, input from file.*/ - int ioutputmode;/**@brief Switch associated to StdIntList::outputmode*/ + int Sz2;/**<@brief Total Sz, input from file.*/ + int ioutputmode;/**<@brief Switch associated to StdIntList::outputmode*/ /* Wannier90 mode */ - char W90_hr[256];/**@brief Name of hopping parameter file from wannier90, + char W90_hr[256];/**<@brief Name of hopping parameter file from wannier90, input from file.*/ - char W90_geom[256];/**@brief Name of geometry file from wannier90 converter, + char W90_geom[256];/**<@brief Name of geometry file from wannier90 converter, input from file.*/ - int W90_nt;/**@brief Number of transfer in wannier90 HR file.*/ - int **W90_indx;/**@brief [StdIntList::W90_nt][5] Hopping index, + int W90_nt;/**<@brief Number of transfer in wannier90 HR file.*/ + int **W90_indx;/**<@brief [StdIntList::W90_nt][5] Hopping index, malloc in read_W90().*/ - double complex *W90_t;/**@brief [StdIntList::W90_nt] Hopping parameter, + double complex *W90_t;/**<@brief [StdIntList::W90_nt] Hopping parameter, malloc in read_W90().*/ - double W90_cutoff;/**@brief Cutoof for the hopping in wannier90, input from file*/ + double W90_cutoff;/**<@brief Cutoof for the hopping in wannier90, input from file*/ #if defined(_HPhi) /* HPhi modpara */ - char method[256];/**@brief The name of method, input from file.*/ - char Restart[256];/**@brief The name of restart mode, input from file.*/ - char InitialVecType[256];/**@brief The name of initialguess-type, input from file.*/ - char EigenVecIO[256];/**@brief The name of I/O mode for eigenvector, input from file*/ - int FlgTemp;/**@brief */ - int Lanczos_max;/**@brief The maxixmum number of iterations, input from file*/ - int initial_iv; /**@brief the number for generating random number, input from file.*/ - int nvec;/**@brief */ - int exct;/**@brief The number of eigenvectors to be computed. input from file*/ - int LanczosEps;/**@brief Convergence threshold for the Lanczos method.*/ - int LanczosTarget;/**@brief Which eigenvector is used for the convergence check.*/ - int NumAve;/**@brief Number of trials for TPQ calculation.*/ - int ExpecInterval;/**@brief Interval for the iteration when the expectation + char method[256];/**<@brief The name of method, input from file.*/ + char Restart[256];/**<@brief The name of restart mode, input from file.*/ + char InitialVecType[256];/**<@brief The name of initialguess-type, input from file.*/ + char EigenVecIO[256];/**<@brief The name of I/O mode for eigenvector, input from file*/ + int FlgTemp;/**<@brief */ + int Lanczos_max;/**<@brief The maxixmum number of iterations, input from file*/ + int initial_iv; /**<@brief the number for generating random number, input from file.*/ + int nvec;/**<@brief */ + int exct;/**<@brief The number of eigenvectors to be computed. input from file*/ + int LanczosEps;/**<@brief Convergence threshold for the Lanczos method.*/ + int LanczosTarget;/**<@brief Which eigenvector is used for the convergence check.*/ + int NumAve;/**<@brief Number of trials for TPQ calculation.*/ + int ExpecInterval;/**<@brief Interval for the iteration when the expectation value is computed.*/ - double LargeValue;/**@brief The shift parameter for the TPQ calculation.*/ + double LargeValue;/**<@brief The shift parameter for the TPQ calculation.*/ /* Boost */ - int ***list_6spin_pair;/**@brief */ - int **list_6spin_star;/**@brief */ - int num_pivot;/**@brief */ - int ishift_nspin;/**@brief */ + int ***list_6spin_pair;/**<@brief */ + int **list_6spin_star;/**<@brief */ + int num_pivot;/**<@brief */ + int ishift_nspin;/**<@brief */ /*Spectrum*/ - char CalcSpec[256];/**@brief The name of mode for spectrum, input from file.*/ - char SpectrumType[256];/**@brief The type of mode for spectrum, input from file.*/ - int Nomega;/**@brief Number of frequencies, input from file.*/ - double OmegaMax;/**@brief Maximum of frequency for spectrum, input from file.*/ - double OmegaMin;/**@brief Minimum of frequency for spectrum, input from file.*/ - double OmegaIm;/**@brief Imaginary part of frequency.*/ - double SpectrumQL;/**@brief wavenumver (q-vector) in fractional coordinate*/ - double SpectrumQW;/**@brief wavenumver (q-vector) in fractional coordinate*/ - double SpectrumQH;/**@brief wavenumver (q-vector) in fractional coordinate*/ - int SpectrumBody;/**@brief one- or two-body excitation, defined from + char CalcSpec[256];/**<@brief The name of mode for spectrum, input from file.*/ + char SpectrumType[256];/**<@brief The type of mode for spectrum, input from file.*/ + int Nomega;/**<@brief Number of frequencies, input from file.*/ + double OmegaMax;/**<@brief Maximum of frequency for spectrum, input from file.*/ + double OmegaMin;/**<@brief Minimum of frequency for spectrum, input from file.*/ + double OmegaIm;/**<@brief Imaginary part of frequency.*/ + double SpectrumQL;/**<@brief wavenumver (q-vector) in fractional coordinate*/ + double SpectrumQW;/**<@brief wavenumver (q-vector) in fractional coordinate*/ + double SpectrumQH;/**<@brief wavenumver (q-vector) in fractional coordinate*/ + int SpectrumBody;/**<@brief one- or two-body excitation, defined from StdIntList::SpectrumType*/ #elif defined(_mVMC) /*mVMC modpara*/ - char CParaFileHead[256];/**@brief Header of the optimized wavefunction, + char CParaFileHead[256];/**<@brief Header of the optimized wavefunction, input from file*/ - int NVMCCalMode;/**@brief Optimization(=0) or compute correlation + int NVMCCalMode;/**<@brief Optimization(=0) or compute correlation function(=1), input from file.*/ - int NLanczosMode;/**@brief Power Lanczos(=1), input from file*/ - int NDataIdxStart;/**@brief Start index of trials, input from file.*/ - int NDataQtySmp;/**@brief Number of trials, input from file.*/ - int NSPGaussLeg;/**@brief Number of Gauss-Legendre points for spin projection, + int NLanczosMode;/**<@brief Power Lanczos(=1), input from file*/ + int NDataIdxStart;/**<@brief Start index of trials, input from file.*/ + int NDataQtySmp;/**<@brief Number of trials, input from file.*/ + int NSPGaussLeg;/**<@brief Number of Gauss-Legendre points for spin projection, input from file.*/ - int NMPTrans;/**@brief Number of translation symmetry*/ - int NSROptItrStep;/**@brief Number of iterations for stocastic reconfiguration*/ - int NSROptItrSmp;/**@brief Number of steps for sampling*/ - int NSROptFixSmp;/**@brief */ - double DSROptRedCut;/**@brief Stocastic reconfiguration parameter, input from file.*/ - double DSROptStaDel;/**@brief Stocastic reconfiguration parameter, input from file.*/ - double DSROptStepDt;/**@brief Stocastic reconfiguration parameter, input from file.*/ - int NVMCWarmUp;/**@brief */ - int NVMCInterval;/**@brief */ - int NVMCSample;/**@brief */ - int NExUpdatePath;/**@brief */ - int RndSeed;/**@brief */ - int NSplitSize;/**@brief */ - int NSPStot;/**@brief */ - int NStore;/**@brief */ - int NSRCG;/**@brief */ - int ComplexType;/**@brief */ + int NMPTrans;/**<@brief Number of translation symmetry*/ + int NSROptItrStep;/**<@brief Number of iterations for stocastic reconfiguration*/ + int NSROptItrSmp;/**<@brief Number of steps for sampling*/ + int NSROptFixSmp;/**<@brief */ + double DSROptRedCut;/**<@brief Stocastic reconfiguration parameter, input from file.*/ + double DSROptStaDel;/**<@brief Stocastic reconfiguration parameter, input from file.*/ + double DSROptStepDt;/**<@brief Stocastic reconfiguration parameter, input from file.*/ + int NVMCWarmUp;/**<@brief */ + int NVMCInterval;/**<@brief */ + int NVMCSample;/**<@brief */ + int NExUpdatePath;/**<@brief */ + int RndSeed;/**<@brief */ + int NSplitSize;/**<@brief */ + int NSPStot;/**<@brief */ + int NStore;/**<@brief */ + int NSRCG;/**<@brief */ + int ComplexType;/**<@brief */ /* Sub-lattice */ - int Lsub;/**@brief Sublattice*/ - int Wsub;/**@brief Sublattice*/ - int Hsub;/**@brief Sublattice*/ - int NCellsub;/**@brief Number of cells in a sublattice*/ - int boxsub[3][3];/**@brief Sublattice*/ - int rboxsub[3][3];/**@brief Sublattice*/ + int Lsub;/**<@brief Sublattice*/ + int Wsub;/**<@brief Sublattice*/ + int Hsub;/**<@brief Sublattice*/ + int NCellsub;/**<@brief Number of cells in a sublattice*/ + int boxsub[3][3];/**<@brief Sublattice*/ + int rboxsub[3][3];/**<@brief Sublattice*/ /* 2-body part of the trial wavefunction */ - int **Orb;/**@brief [StdIntList::nsite][StdIntList::nsite] Orbital index*/ - int **AntiOrb;/**@brief [StdIntList::nsite][StdIntList::nsite] Anti-periodic switch*/ - int NOrb;/**@brief Number of independent orbital index*/ - int NSym;/**@brief Number of translation symmetries, + int **Orb;/**<@brief [StdIntList::nsite][StdIntList::nsite] Orbital index*/ + int **AntiOrb;/**<@brief [StdIntList::nsite][StdIntList::nsite] Anti-periodic switch*/ + int NOrb;/**<@brief Number of independent orbital index*/ + int NSym;/**<@brief Number of translation symmetries, Defined from the number of cells in the sub-lattice.*/ #endif }; diff --git a/src/StdFace/TriangularLattice.c b/src/StdFace/TriangularLattice.c index 94a25e2e..3c621080 100644 --- a/src/StdFace/TriangularLattice.c +++ b/src/StdFace/TriangularLattice.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for the triangular lattice +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -24,14 +27,12 @@ along with this program. If not, see . #include /** - * - * Setup a Hamiltonian for the Triangular lattice - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Triangular(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Triangular lattice +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Triangular(struct StdIntList *StdI) { - int isite, jsite, kCell; + int isite, jsite, kCell, ntransMax, nintrMax; int iL, iW; FILE *fp; double complex Cphase; @@ -39,8 +40,8 @@ void StdFace_Triangular(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.gp", "w"); /**/ @@ -60,7 +61,9 @@ void StdFace_Triangular(struct StdIntList *StdI, char *model) /**/ StdFace_InitSite(StdI, fp, 2); StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; StdI->tau[0][2] = 0.0; - /**/ + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_J("J1'", StdI->J1pAll, StdI->J1p); StdFace_NotUsed_J("J2'", StdI->J2pAll, StdI->J2p); @@ -123,8 +126,9 @@ void StdFace_Triangular(struct StdIntList *StdI, char *model) }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; if (strcmp(StdI->model, "kondo") == 0 ) StdI->nsite *= 2; @@ -139,30 +143,28 @@ void StdFace_Triangular(struct StdIntList *StdI, char *model) StdI->locspinflag[iL] = StdI->S2; StdI->locspinflag[iL + StdI->nsite / 2] = 0; } - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + 3/*J*/ + 3/*J'*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + 3/*J*/ + 3/*J'*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 6/*t*/ + 6/*t'*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (3/*V*/ + 3/*V'*/)); + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + 6/*t*/ + 6/*t'*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*U*/ + 4 * (3/*V*/ + 3/*V'*/)); if (strcmp(StdI->model, "kondo") == 0) { - StdI->ntrans += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); + ntransMax += StdI->nsite / 2 * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); }/*if (strcmp(StdI->model, "kondo") == 0)*/ } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++) { /**/ iW = StdI->Cell[kCell][0]; diff --git a/src/StdFace/Wannier90.c b/src/StdFace/Wannier90.c index 63203f09..60e465a6 100644 --- a/src/StdFace/Wannier90.c +++ b/src/StdFace/Wannier90.c @@ -15,6 +15,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +/**@file +@brief Standard mode for wannier90 +*/ #include "StdFace_vals.h" #include "StdFace_ModelUtil.h" #include @@ -22,27 +25,28 @@ along with this program. If not, see . #include #include #include - -/* -* Read Geometry file for wannier90 -* -* @author Mitsuaki Kawamura (The University of Tokyo) +/** +@brief Read Geometry file for wannier90 +@author Mitsuaki Kawamura (The University of Tokyo) */ -static void geometry_W90(struct StdIntList *StdI, int *wan_num) { +static void geometry_W90( + struct StdIntList *StdI,//!<[inout] + int *wan_num//!<[out] +) { int isite, ii, ierr; FILE *fp; fprintf(stdout, " Wannier90 Geometry file = %s\n", StdI->W90_geom); fp = fopen(StdI->W90_geom, "r"); - /* - Direct lattice vector + /**@brief + Direct lattice vector StdIntList::direct */ for (ii = 0; ii < 3; ii++) ierr = fscanf(fp, "%lf%lf%lf", &StdI->direct[ii][0], &StdI->direct[ii][1], &StdI->direct[ii][2]); if(ierr != 0) printf("%d\n", ierr); - /* - Site position + /**@brief + Intrinsic site position StdIntList::tau and its number StdIntList::NsiteUC */ for (isite = 0; isite < StdI->NsiteUC; isite++) free(StdI->tau[isite]); free(StdI->tau); @@ -65,12 +69,11 @@ static void geometry_W90(struct StdIntList *StdI, int *wan_num) { StdI->tau[isite][0], StdI->tau[isite][1], StdI->tau[isite][2]); }/*static void geometry_W90(struct StdIntList *StdI) */ -/* -* Read Wannier90 hamiltonian file -* -* @author Mitsuaki Kawamura (The University of Tokyo) +/** +@brief Read Wannier90 hamiltonian file (*_hr) +@author Mitsuaki Kawamura (The University of Tokyo) */ -static void read_W90(struct StdIntList *StdI, char *model) +static void read_W90(struct StdIntList *StdI) { FILE *fp; int ierr, nWan, nWSC, iWSC, jWSC, iWan, jWan, iWan0, jWan0, ii; @@ -127,8 +130,8 @@ static void read_W90(struct StdIntList *StdI, char *model) t_tot[iWSC][iWan][jWan] = t0[wan_num[iWan]][wan_num[jWan]]; } } - /* - Inversion symmetry + /**@brief + (1) Apply inversion symmetry and delete duplication */ for (jWSC = 0; jWSC < iWSC; jWSC++) { if ( @@ -150,8 +153,8 @@ static void read_W90(struct StdIntList *StdI, char *model) t_tot[iWSC][iWan][jWan] = 0.0; } } - /* - Max t + /**@brief + (2) Search maximum transfer for appling cutoff later */ for (iWan = 0; iWan < StdI->NsiteUC; iWan++) { for (jWan = 0; jWan < StdI->NsiteUC; jWan++) { @@ -164,10 +167,13 @@ static void read_W90(struct StdIntList *StdI, char *model) fprintf(stdout, " Maximum Hopping = %f\n", tmax); fprintf(stdout, " Threshold for Hopping = %f\n", tmax * StdI->W90_cutoff); - /* - Cut-off of Hopping + /**@brief + (3) Apply cut-off of Hopping + */ + /**@brief + (3-1) Set the number of t with cut-off (StdIntList::W90_nt) + with the inputted cut-off StdIntList::W90_cutoff */ - /* Query */ StdI->W90_nt = 0; for (iWSC = 0; iWSC < nWSC; iWSC++) { for (iWan = 0; iWan < StdI->NsiteUC; iWan++) { @@ -177,12 +183,14 @@ static void read_W90(struct StdIntList *StdI, char *model) } } fprintf(stdout, " Total number of EFFECTIVE Hopping = %d\n", StdI->W90_nt); - + /**@brief + Then malloc and store to the hopping Integeral StdIntList::W90_t and + its site index StdIntList::W90_indx + */ StdI->W90_t = (double complex *)malloc(sizeof(double complex) * StdI->W90_nt); StdI->W90_indx = (int **)malloc(sizeof(int*) * StdI->W90_nt); for (ii = 0; ii < StdI->W90_nt; ii++) StdI->W90_indx[ii] = (int *)malloc(sizeof(int) * 5); - /* Store */ fprintf(stdout, " EFFECTIVE Hoppings:\n"); StdI->W90_nt = 0; for (iWSC = 0; iWSC < nWSC; iWSC++) { @@ -199,9 +207,9 @@ static void read_W90(struct StdIntList *StdI, char *model) creal(StdI->W90_t[StdI->W90_nt]), cimag(StdI->W90_t[StdI->W90_nt])); StdI->W90_nt += 1; } - } - } - } + }/*for (jWan = 0; jWan < StdI->NsiteUC; jWan++)*/ + }/*for (iWan = 0; iWan < StdI->NsiteUC; iWan++)*/ + }/*for (iWSC = 0; iWSC < nWSC; iWSC++)*/ for (iWSC = 0; iWSC < nWSC; iWSC++) { for (iWan = 0; iWan < nWan; iWan++) { @@ -217,14 +225,14 @@ static void read_W90(struct StdIntList *StdI, char *model) free(wan_num); }/*static void read_W90(struct StdIntList *StdI, char *model)*/ /** - * - * Setup a Hamiltonian for the Wannier90 *_hr.dat - * - * @author Mitsuaki Kawamura (The University of Tokyo) - */ -void StdFace_Wannier90(struct StdIntList *StdI, char *model) +@brief Setup a Hamiltonian for the Wannier90 *_hr.dat +@author Mitsuaki Kawamura (The University of Tokyo) +*/ +void StdFace_Wannier90( + struct StdIntList *StdI//!<[inout] +) { - int isite, jsite, ispin; + int isite, jsite, ispin, ntransMax, nintrMax; int iL, iW, iH, kCell, it, ii; double Jtmp[3][3] = { {0.0} }; FILE *fp; @@ -233,8 +241,8 @@ void StdFace_Wannier90(struct StdIntList *StdI, char *model) fprintf(stdout, "\n"); fprintf(stdout, "####### Parameter Summary #######\n"); fprintf(stdout, "\n"); - /* - Initialize Cell + /**@brief + (1) Compute the shape of the super-cell and sites in the super-cell */ fp = fopen("lattice.xsf", "w"); /**/ @@ -244,8 +252,10 @@ void StdFace_Wannier90(struct StdIntList *StdI, char *model) StdFace_PrintVal_d("phase1", &StdI->phase[1], 0.0); StdFace_PrintVal_d("phase2", &StdI->phase[2], 0.0); /**/ - read_W90(StdI, model); - /**/ + read_W90(StdI); + /**@brief + (2) check & store parameters of Hamiltonian + */ fprintf(stdout, "\n @ Hamiltonian \n\n"); StdFace_NotUsed_d("K", StdI->K); StdFace_PrintVal_d("h", &StdI->h, 0.0); @@ -263,8 +273,9 @@ void StdFace_Wannier90(struct StdIntList *StdI, char *model) StdFace_exit(-1); }/*if (model != "spin")*/ fprintf(stdout, "\n @ Numerical conditions\n\n"); - /* - Local Spin + /**@brief + (3) Set local spin flag (StdIntList::locspinflag) and + the number of sites (StdIntList::nsite) */ StdI->nsite = StdI->NsiteUC * StdI->NCell; StdI->locspinflag = (int *)malloc(sizeof(int) * StdI->nsite); @@ -273,25 +284,23 @@ void StdFace_Wannier90(struct StdIntList *StdI, char *model) for (isite = 0; isite < StdI->nsite; isite++) StdI->locspinflag[isite] = StdI->S2; else if(strcmp(StdI->model, "hubbard") == 0 ) for (isite = 0; isite < StdI->nsite; isite++) StdI->locspinflag[isite] = 0; - /* - The number of Transfer & Interaction + /**@brief + (4) Compute the upper limit of the number of Transfer & Interaction and malloc them. */ if (strcmp(StdI->model, "spin") == 0 ) { - StdI->ntrans = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); - StdI->nintr = StdI->NCell * (StdI->NsiteUC/*D*/ + StdI->W90_nt/*J*/) + ntransMax = StdI->nsite * (StdI->S2 + 1/*h*/ + 2 * StdI->S2/*Gamma*/); + nintrMax = StdI->NCell * (StdI->NsiteUC/*D*/ + StdI->W90_nt/*J*/) * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1); } else if (strcmp(StdI->model, "hubbard") == 0) { - StdI->ntrans = StdI->NCell * 2/*spin*/ * (2*StdI->NsiteUC/*mu+h+Gamma*/ + StdI->W90_nt * 2/*t*/); - StdI->nintr = StdI->NCell * StdI->NsiteUC/*U*/; + ntransMax = StdI->NCell * 2/*spin*/ * (2 * StdI->NsiteUC/*mu+h+Gamma*/ + StdI->W90_nt * 2/*t*/); + nintrMax = StdI->NCell * StdI->NsiteUC/*U*/; } /**/ - StdFace_MallocInteractions(StdI); - /* - Set Transfer & Interaction + StdFace_MallocInteractions(StdI, ntransMax, nintrMax); + /**@brief + (5) Set Transfer & Interaction */ - StdI->ntrans = 0; - StdI->nintr = 0; for (kCell = 0; kCell < StdI->NCell; kCell++){ /**/ iW = StdI->Cell[kCell][0]; diff --git a/tool/CMakeLists.txt b/tool/CMakeLists.txt index 1eedb1f2..17ef0d7d 100644 --- a/tool/CMakeLists.txt +++ b/tool/CMakeLists.txt @@ -6,10 +6,11 @@ if(${CMAKE_PROJECT_NAME} STREQUAL "Project") message(FATAL_ERROR "cmake should be executed not for 'src' subdirectory, but for the top directory of mVMC.") endif(${CMAKE_PROJECT_NAME} STREQUAL "Project") -add_library(key2lower key2lower.c) +add_library(key2lower STATIC key2lower.c) add_executable(fourier fourier.F90) add_executable(corplot corplot.F90) target_link_libraries(fourier key2lower ${LAPACK_LIBRARIES}) install(TARGETS fourier RUNTIME DESTINATION bin) install(TARGETS corplot RUNTIME DESTINATION bin) + diff --git a/tool/fourier.F90 b/tool/fourier.F90 index f659310d..e916d9f6 100644 --- a/tool/fourier.F90 +++ b/tool/fourier.F90 @@ -797,7 +797,8 @@ SUBROUTINE output_cor() ! cor_err(1:nk,1:6) = 0d0 DO iwfc = 1, nwfc - cor_err(1:nk,1:6) = CMPLX( DBLE(cor_k(1:nk,1:6,iwfc) - cor_ave(1:nk,1:6))**2, & + cor_err(1:nk,1:6) = cor_err(1:nk,1:6) & + & + CMPLX( DBLE(cor_k(1:nk,1:6,iwfc) - cor_ave(1:nk,1:6))**2, & & AIMAG(cor_k(1:nk,1:6,iwfc) - cor_ave(1:nk,1:6))**2, & & KIND(0d0)) END DO From 817aa61341954e39c0702684d821506204c57c37 Mon Sep 17 00:00:00 2001 From: mitsuaki1987 Date: Tue, 22 Aug 2017 14:23:43 +0900 Subject: [PATCH 15/16] double-comples as argments for isfinite is not arrowed in GCC5 --- src/mVMC/matrix.c | 2 +- src/mVMC/vmccal.c | 2 +- src/mVMC/vmcmake.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mVMC/matrix.c b/src/mVMC/matrix.c index 7ab4120d..beb6ec92 100644 --- a/src/mVMC/matrix.c +++ b/src/mVMC/matrix.c @@ -472,7 +472,7 @@ int calculateMAll_BF_fcmp_child( /* calculate Pf M */ M_ZSKPFA(&uplo, &mthd, &n, invM, &lda, &pfaff, iwork, work, &lwork, rwork, &info); //TBC if(info!=0) return info; - if(!isfinite(pfaff)) return qpidx+1; + if(!(isfinite(creal(pfaff)) && isfinite(cimag(pfaff)))) return qpidx+1; PfM[qpidx] = pfaff; /* DInv */ diff --git a/src/mVMC/vmccal.c b/src/mVMC/vmccal.c index acc604ec..85698c08 100644 --- a/src/mVMC/vmccal.c +++ b/src/mVMC/vmccal.c @@ -401,7 +401,7 @@ void VMC_BF_MainCal(MPI_Comm comm) { /* calculate double occupation D */ db = CalculateDoubleOccupation(eleIdx, eleCfg, eleNum, eleProjCnt); StopTimer(41); - if (!isfinite(e)) { + if (! (isfinite(creal(e)) && isfinite(cimag(e)))) { fprintf(stderr, "waring: VMCMainCal rank:%d sample:%d e=%e\n", rank, sample, creal(e)); continue; } diff --git a/src/mVMC/vmcmake.c b/src/mVMC/vmcmake.c index fc8f87bc..d829d6ba 100644 --- a/src/mVMC/vmcmake.c +++ b/src/mVMC/vmcmake.c @@ -531,7 +531,7 @@ void VMC_BF_MakeSample(MPI_Comm comm) CalculateMAll_BF_fcmp(TmpEleIdx, qpStart, qpEnd); logIpOld = CalculateLogIP_fcmp(PfM, qpStart, qpEnd, comm); - if (!isfinite(logIpOld)) { + if (! (isfinite(creal(logIpOld)) && isfinite(cimag(logIpOld)))) { if (rank == 0) fprintf(stderr, "waring: VMCMakeSample remakeSample logIpOld=%e\n", creal(logIpOld)); //TBC makeInitialSampleBF(TmpEleIdx, TmpEleCfg, TmpEleNum, TmpEleProjCnt, TmpEleProjBFCnt, qpStart, qpEnd, comm); From 6faa252d29f89126d71c1dd93029e5fe9efb44e0 Mon Sep 17 00:00:00 2001 From: mitsuaki1987 Date: Tue, 22 Aug 2017 16:43:00 +0900 Subject: [PATCH 16/16] revious commit broke program. --- src/StdFace/StdFace_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/StdFace/StdFace_main.c b/src/StdFace/StdFace_main.c index d2ea918d..4fee32bd 100644 --- a/src/StdFace/StdFace_main.c +++ b/src/StdFace/StdFace_main.c @@ -1800,7 +1800,7 @@ void StdFace_main( char *fname//!<[in] Input file name for the standard mode ) { - struct StdIntList *StdI; + struct StdIntList StdI[1]; FILE *fp; int ktrans, kintr; char ctmpline[256];