An interface for developers is provided. The matrix elements for the Hamiltonian, overlap, density matrix, position operator, and momentum operator, which are all obtained from the SCF calculation, can be accessed from your post processing code using the functionality. It should be also noted that from the OpenMX Ver. 3.9, the data format for the relevant codes 'SCF2File.c', 'read_scfout.c', 'read_scfout.h', and 'analysis_example.c' have been changed so that the full information of density matrix, and the matrices for the position operator and momentum operator can be included in the scfout file. So, the scfout files generated by the older versions of OpenMX cannot be analyzed by Ver. 3.9. These data can be utilized by the following steps:
Include the keyword 'HS.fileout' in your input file as follows:
HS.fileout on # on|off, default=offand perform a convetional OpenMX calculation. Then, these data are output to a file 'System.Name.scfout' where System.Name means System.Name in your input file.
In the directory 'source' compile by
% make analysis_exampleThen, an executable file 'analysis_example' is generated in the directory 'work'.
Move to the directory 'work', and then perform the program as follows:
% ./analysis_example System.Name.scfout or % ./analysis_example System.Name.scfout > HS.outYou can find the elements of the Hamiltonian, the overlap, and the density matrices in a file 'HS.out'
In a file 'analysis_example.c' you can find a detailed description for these data. A part of the description is as follows:
****************************************************************** You can utilize a filename.scfout which is generated by the SCF calculation of OpenMX by the following procedure: 1. Define your main routine as follows: int main(int argc, char *argv[]) 2. Include a header file, "read_scfout.h", in your main routine (if you want, also in other routines) as follows: #include "read_scfout.h" 3. Call a function, read_scfout(), in the main routine as follows: read_scfout(argv); ******************************************************************
It is noted that 'polB', 'jx', and 'kSpin' have been developed using the functionality as post processing code.