Exemple #1
0
    def generate_repr(self):
        """Generate the wfx representation of the logfile data."""

        # sections:(Function returning data for section,
        #           Section heading,
        #           Required)

        sections = [
            (self._title, "Title", True),
            (self._keywords, "Keywords", True),
            (self._no_of_nuclei, "Number of Nuclei", True),
            (self._no_of_prims, "Number of Primitives", True),
            (self._no_of_mos, "Number of Occupied Molecular Orbitals", True),
            (self._no_of_perturbations, "Number of Perturbations", True),
            (self._nuclear_names, "Nuclear Names", True),
            (self._atomic_nos, "Atomic Numbers", True),
            (self._nuclear_charges, "Nuclear Charges", True),
            (self._nuclear_coords, "Nuclear Cartesian Coordinates", True),
            (self._net_charge, "Net Charge", True),
            (self._no_electrons, "Number of Electrons", True),
            (self._no_alpha_electrons, "Number of Alpha Electrons", True),
            (self._no_beta_electrons, "Number of Beta Electrons", True),
            (self._spin_mult, "Electronic Spin Multiplicity", False),
            # (self._model, "Model", False),
            (self._prim_centers, "Primitive Centers", True),
            (self._prim_types, "Primitive Types", True),
            (self._prim_exps, "Primitive Exponents", True),
            (self._mo_occup_nos,
             "Molecular Orbital Occupation Numbers", True),
            (self._mo_energies, "Molecular Orbital Energies", True),
            (self._mo_spin_types, "Molecular Orbital Spin Types", True),
            (self._mo_prim_coeffs,
             "Molecular Orbital Primitive Coefficients", True),
            (self._energy, "Energy = T + Vne + Vee + Vnn", True),
            # (self._nuc_energy_gradients,
            #  "Nuclear Cartesian Energy Gradients", False),
            # (self._nuc_virial,
            #  "Nuclear Virial of Energy-Gradient-Based Forces on Nuclei, W",
            #  False),
            (self._virial_ratio, "Virial Ratio (-V/T)", True),
        ]

        wfx_lines = []

        for section_module, section_name, section_required in sections:
            try:
                section_data = section_module()
                wfx_lines.extend(_section(section_name, section_data))
            except:
                if section_required:
                    raise filewriter.MissingAttributeError(
                        'Unable to write required wfx section: '
                        + section_name)

        wfx_lines.append('')
        return '\n'.join(wfx_lines)
Exemple #2
0
 def _energy(self):
     """Section: Energy = T + Vne + Vee + Vnn.
     The total energy of the molecule.
     HF and KSDFT: SCF energy        (scfenergies),
     MP2         : MP2 total energy  (mpenergies),
     CCSD        : CCSD total energy (ccenergies).
     """
     energy = 0
     if hasattr(self.ccdata, 'ccenergies'):
         energy = self.ccdata.ccenergies[-1]
     elif hasattr(self.ccdata, 'mpenergies'):
         energy = self.ccdata.mpenergies[-1][-1]
     elif hasattr(self.ccdata, 'scfenergies'):
         energy = self.ccdata.scfenergies[-1]
     else:
         raise filewriter.MissingAttributeError(
             'scfenergies/mpenergies/ccenergies')
     return WFX_FIELD_FMT % (utils.convertor(energy, 'eV', 'hartree'))