API of MO Calculation

The current version of class and function definitions is given as the doxygen format.


The MO calculation part has the following API.

int fmo_fragment_electronic_state(
    MPI_Comm comm,          // group communicator
    int nmonomer,           // number of monomers
    int monomer_list[],     // list of monomers
    int theor_level,        // method
    double D[],             // density matrix
    double C[],             // MO coefficient
    double moe[],           // MO energy
    double aopop[],         // AO Population
    double atpop[],         // Atomic Population
    double* energy,         // total energy
    double* energy0         // total energy
                            // 
)


int fmo_fragment_set_data(
    MPI_Comm comm,              // group communicator
    int nmonomer,               // number of monomers
    int monomer_list[],         // list of monomers
    fmo_basis_t *basis_frag,    // basis infomation structure
    fmo_fragment_t *info_frag   // fragment infomation structure
)


fmo_basis_t structure stores geometry and basis set information of a fragment.

struct fmo_basis_t {
    int         NAT;      // number of atoms
    int         NCS;      // number of shells
    int         NAO;      // number of AO
    int         NSPS;     // number of species of primitives
    int         MAXLQN;   // maximum angular momentum
    double*     ATOM_XYZ; // coordinates of atoms
    fmo_cs_t*   CS_PARAM; // contracted shell parameters
    fmo_ps_t*   PS_PARAM; // primitive parameters
};
    
  • NAT is the number of atoms in the fragment. ATOM_XYZ[3*(i-1)], ATOM_XYZ[3*(i-1)+1], ATOM_XYZ[3*(i-1)+2], are the x, y, z coordinate of i-th atom, respectively.
  • NAO is the number of AOs (cGTOs) in the fragment.
  • MAXLQN is the maximum angular momentum of the contracted shells in the fragment.
struct fmo_cs_t {
    int LQN; // angular momentum
    int TEM; // length of contraction
    int ATM; // serial number of the atom of this shell
    int ADD; // address of primitive parameters of this shell
    int INI; // serial number of the first AO of this shell
};
    
  • CS_PARAM is an array of fmo_cs_t structure with NCS entries.
  • Each entry stores the infomation of a contracted shell.
  • LQN is the angular momentum.
  • TEM is the number of terms in the contraction.
  • ATM is the serial number of the atom that has this shell.
  • ADD gives the offset of the 1st term in the contraction in the array PS_PARAM.
  • INI is the serial number of 1st AO in this shell.
struct fmo_ps_t {
    double EXP; // exponent
    double COE; // contraction coefficient
};
    
  • PS_PARAM is an array of fmo_ps_t structure with NSPS entries.
  • Each entry stores the exponent (EXP) and contraction coefficient (COE) of an unique primitive Gaussian Type Orbital (pGTO).

fmo_fragment_t structure stores the fragment charge, etc..

struct fmo_fragment_t {
    int	NMONOMER;         // number of monomers
    int *MONOMER_LIST;     // list of monomer numbers
    int *ATOMIC_NUMBER;    // effective charges of atoms
    int *IFATOM;           // serial numbers of atoms
    int *IREV;             // serial numbers of AO
                           //     in the whole molecular
    int *ICNV;             // (reverse table of IREV)
    int NBOND;             // number of broken bonds
    int NCHARGE;           // fragment charge
    fmo_bond_atom_pair_t   // information of broken bonds
               *BOND_ATOM; //
};
    
  • NMONOMER is the number of monomers included in the fragment.
  • MONOMER_LIST is an array of fragment IDs of the monomers.
  • ATOMIC_NUMBER is an array of the atomic numbers of the atoms in the fragment.
  • IFATOM is an array of the serial numbers (in the whole molecule) of the atoms in the fragment.
  • IREV is an array which has NAO (the number of AOs in the fragment) entries. Each entry gives the serial number (in the whole molecule) of AOs in the fragment. ICNV
  • is an array which is the reverse of IREV.
  • NBOND is the number of broken bonds in the fragment.
  • NCHARGE is the total charge of the fragment.
  • BOND_ATOM is an array of fmo_bond_atom_pair_t structure (the serial number of two atoms of an broken bond) with NBOND.


Last modified: Fri Apr 27 01:23:14 JST 2012