Overall procedure ================= This program performs simulation as follows (See Fig. :num:`calcflow` ): #. Read a input file for the numerical condition. #. (Optional) Read input files for the Hamiltonian and the right hand side vector. #. (Optional) Read a file for the restart (:math:`\alpha`, :math:`\beta`, residual vectors) #. (Bi)CG iteration with :math:`K\omega` library #. Output results (Green's function, residual vectors, :math:`\alpha`, :math:`\beta`) .. _calcflow: .. figure:: ../figs/flow_en.png :width: 8cm Schematic flow of the calculation of this program. We introduce the detailed procedure as follows. The format of each file is written in :ref:`fileformat`. Calculation from scratch ------------------------ Prepare input file ~~~~~~~~~~~~~~~~~~ In this input file, we specify the frequency grid, the maximum number of iteration, etc. A example of this input file is shown as follow. :: &filename inham = "" invec = "" / &ham nsite = 4 Jx = 1d0 Jy = 1d0 Jz = 1d0 Dz = 0d0 / &cg maxloops = 100 convfactor = 6 / &dyn calctype = "normal" nomega = 100 omegamin = (-2d0, 0.1d0) omegamax = ( 1d0, 0.1d0) outrestart = .TRUE. / where ``InHam`` is the file-name for the Hamiltonian in the MatrixMarket format, ``InVec`` is the file-name of the right hand side vector, ``NOmega`` is the number of frequencies where the dynamical Green's function is computed. ``OmegaMin`` is the lower limit of the frequency :math:`z`, ``OmegaMax`` is the upper limit of the frequency :math:`z`. These complex frequencies must be written as "``({Real part}, {Imaginaly part})``". The frequency grid is defined as .. math:: \begin{align} \omega_n = {\tt OmegaMin} + \frac{n-1}{{\tt NOmega}-1}({\tt OmegaMax} - {\tt OmegaMin}). \end{align} ``MaxLoops`` is the maximum number of iterations. For the details of this input file, see :ref:`modpara`. The string variable must be specified with two ``'`` or ``"``. (Optional) Prepare input file for the Hamiltonian and RHS vector ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Prepare input files for the Hamiltonian (MatrixMarket format) and right hand side vector. An example of the file of the right hand side vector is shown as follows: :: 256 0.01 0.0 0.05 0.0 0.1 0.0 (continue ...) Details of the file format is written in :ref:`ham` and :ref:`vec`. Launch ~~~~~~ Execute a program ``ShiftK.out`` with a namelist file ``namelist.def`` as follows: .. code-block:: bash $ ShiftK.out namelist.def Output ~~~~~~ The following files are generated in ``output/`` directory (this directory is also generated by this program). :: TriDiagComp.dat, ResVec.dat, dynamicalG.dat where ``TriDiagComp.dat`` contains the parameters for the restart, ``ResVec.dat`` contains the residual vector, ``dynamicalG.dat`` contains the dynamical Green's function. The format of these file is written in :ref:`revec` - :ref:`dynamicalg`. Catch up -------- Compute the Green's function at the different frequency by using the information of ``output/TriDiagComp.dat`` that are generated in the previous run. This calculation does not require the matrix-vector product. Modify the namelist file ~~~~~~~~~~~~~~~~~~~~~~~~ Change ``calctype`` parameter in the file ``namelist.def`` from ``"normal"`` to ``"recalc"``. ``OmegaMin``, ``OmegaMax``, etc. can be modified. Launch ~~~~~~ Execute a program ``ShiftK.out`` with a namelist file ``namelist.def`` as follows: .. code-block:: bash $ ShiftK.out namelist.def The ``output/dynamicalG.dat`` will be overwritten. Output ~~~~~~ The same output files as the previous section are generated. Restart ------- Compute the Green's function at the different frequency by using the information of ``output/TriDiagComp.dat`` and ``output/ResVec.dat`` that are generated in the previous run. Modify the namelist file ~~~~~~~~~~~~~~~~~~~~~~~~ Change ``calctype`` parameter in the file ``namelist.def`` from ``"normal"`` to ``"restart"``. ``OmegaMin``, ``OmegaMax``, etc. can be modified. Parameters ``InHam`` , ``InVec``, and the files of the Hamiltonian and RHS vector can not be modified. Launch ~~~~~~ Execute a program ``ShiftK.out`` with a namelist file ``namelist.def`` as follows: .. code-block:: bash $ ShiftK.out namelist.def The ``output/dynamicalG.dat`` will be overwritten. Output ~~~~~~ The following files are generated (or are overwritten) in ``output/`` directory. :: TriDiagComp.dat, ResVec.dat, dynamicalG.dat where ``TriDiagComp.dat`` contains the parameters for the restart, ``ResVec.dat`` contains the residual vector, ``dynamicalG.dat`` contains the dynamical Green's function. The format of these file is written in :ref:`revec` - :ref:`dynamicalg`.