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)
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'))