diff --git a/gaussianparser/metainfo/__init__.py b/gaussianparser/metainfo/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9491b9a833e0319d32f563fc7f95b8edbe4ead49 --- /dev/null +++ b/gaussianparser/metainfo/__init__.py @@ -0,0 +1,13 @@ +import sys +from nomad.metainfo import Environment +from nomad.metainfo.legacy import LegacyMetainfoEnvironment +import gaussianparser.metainfo.gaussian +import nomad.datamodel.metainfo.common +import nomad.datamodel.metainfo.public +import nomad.datamodel.metainfo.general + +m_env = LegacyMetainfoEnvironment() +m_env.m_add_sub_section(Environment.packages, sys.modules['gaussianparser.metainfo.gaussian'].m_package) # type: ignore +m_env.m_add_sub_section(Environment.packages, sys.modules['nomad.datamodel.metainfo.common'].m_package) # type: ignore +m_env.m_add_sub_section(Environment.packages, sys.modules['nomad.datamodel.metainfo.public'].m_package) # type: ignore +m_env.m_add_sub_section(Environment.packages, sys.modules['nomad.datamodel.metainfo.general'].m_package) # type: ignore diff --git a/gaussianparser/metainfo/gaussian.py b/gaussianparser/metainfo/gaussian.py new file mode 100644 index 0000000000000000000000000000000000000000..bcb5f51c68747e3c52d255a953160ae655e6f65d --- /dev/null +++ b/gaussianparser/metainfo/gaussian.py @@ -0,0 +1,1632 @@ +import numpy as np # pylint: disable=unused-import +import typing # pylint: disable=unused-import +from nomad.metainfo import ( # pylint: disable=unused-import + MSection, MCategory, Category, Package, Quantity, Section, SubSection, SectionProxy, + Reference +) +from nomad.metainfo.legacy import LegacyDefinition + +from nomad.datamodel.metainfo import public + +m_package = Package( + name='gaussian_nomadmetainfo_json', + description='None', + a_legacy=LegacyDefinition(name='gaussian.nomadmetainfo.json')) + + +class x_gaussian_configuration_core(MCategory): + ''' + Properties defining the current configuration. + ''' + + m_def = Category( + a_legacy=LegacyDefinition(name='x_gaussian_configuration_core')) + + +class x_gaussian_atom_forces_type(MCategory): + ''' + Some forces on the atoms (i.e. minus derivatives of some energy with respect to the + atom position). + ''' + + m_def = Category( + a_legacy=LegacyDefinition(name='x_gaussian_atom_forces_type')) + + +class x_gaussian_scf_info(MCategory): + ''' + Information on the self-consistent field (SCF) procedure. + ''' + + m_def = Category( + a_legacy=LegacyDefinition(name='x_gaussian_scf_info')) + + +class x_gaussian_section_geometry(MSection): + ''' + section that contains Cartesian coordinates of the system for a given geometry + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_geometry')) + + x_gaussian_atomic_number = Quantity( + type=str, + shape=[], + description=''' + atomic number for atoms + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atomic_number')) + + x_gaussian_atom_x_coord = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='meter', + description=''' + x coordinate for the atoms + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atom_x_coord')) + + x_gaussian_atom_y_coord = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='meter', + description=''' + y coordinate for the atoms + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atom_y_coord')) + + x_gaussian_atom_z_coord = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='meter', + description=''' + z coordinate for the atoms + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atom_z_coord')) + + +class x_gaussian_section_hybrid_coeffs(MSection): + ''' + section that contains coefficients for the hybrid DFT functionals + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_hybrid_coeffs')) + + hybrid_xc_coeff1 = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Coefficient for Hartree-Fock exchange in hybrid DFT functionals + ''', + a_legacy=LegacyDefinition(name='hybrid_xc_coeff1')) + + hybrid_xc_coeff2 = Quantity( + type=str, + shape=[], + description=''' + Coefficients for Slater exchange, non-local exchange, local correlation, and non- + local correlation, respectively, in hybrid DFT functionals + ''', + a_legacy=LegacyDefinition(name='hybrid_xc_coeff2')) + + x_gaussian_hybrid_xc_hfx = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Hartree-Fock exchange + ''', + a_legacy=LegacyDefinition(name='x_gaussian_hybrid_xc_hfx')) + + x_gaussian_hybrid_xc_slater = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Slater exchange + ''', + a_legacy=LegacyDefinition(name='x_gaussian_hybrid_xc_slater')) + + x_gaussian_hybrid_xc_nonlocalex = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Slater exchange + ''', + a_legacy=LegacyDefinition(name='x_gaussian_hybrid_xc_nonlocalex')) + + x_gaussian_hybrid_xc_localcorr = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Slater exchange + ''', + a_legacy=LegacyDefinition(name='x_gaussian_hybrid_xc_localcorr')) + + x_gaussian_hybrid_xc_nonlocalcorr = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Slater exchange + ''', + a_legacy=LegacyDefinition(name='x_gaussian_hybrid_xc_nonlocalcorr')) + + +class x_gaussian_section_total_scf_one_geometry(MSection): + ''' + Check for SCF convergence and writes the total energy value to backend + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_total_scf_one_geometry')) + + +class x_gaussian_section_times(MSection): + ''' + section that contains the execution times of the run + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_times')) + + x_gaussian_program_termination_date = Quantity( + type=str, + shape=[], + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_program_termination_date')) + + x_gaussian_program_cpu_time = Quantity( + type=str, + shape=[], + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_program_cpu_time')) + + +class x_gaussian_section_atom_forces(MSection): + ''' + section that contains Cartesian coordinates of the system for a given geometry + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_atom_forces')) + + x_gaussian_atom_x_force = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='newton', + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atom_x_force')) + + x_gaussian_atom_y_force = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='newton', + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atom_y_force')) + + x_gaussian_atom_z_force = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='newton', + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atom_z_force')) + + +class x_gaussian_section_molecular_multipoles(MSection): + ''' + Section describing multipoles (charges, dipoles,...). + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_molecular_multipoles')) + + charge = Quantity( + type=str, + shape=[], + description=''' + Value of the total charge of the system (in electronic units). + ''', + a_legacy=LegacyDefinition(name='charge')) + + dipole_moment_x = Quantity( + type=str, + shape=[], + description=''' + Value of the x component of the dipole moment (Debye). + ''', + a_legacy=LegacyDefinition(name='dipole_moment_x')) + + dipole_moment_y = Quantity( + type=str, + shape=[], + description=''' + Value of the y component of the dipole moment (Debye). + ''', + a_legacy=LegacyDefinition(name='dipole_moment_y')) + + dipole_moment_z = Quantity( + type=str, + shape=[], + description=''' + Value of the z component of the dipole moment (Debye). + ''', + a_legacy=LegacyDefinition(name='dipole_moment_z')) + + quadrupole_moment_xx = Quantity( + type=str, + shape=[], + description=''' + Value of the xx component of the quadrupole moment (Debye-Ang). + ''', + a_legacy=LegacyDefinition(name='quadrupole_moment_xx')) + + quadrupole_moment_yy = Quantity( + type=str, + shape=[], + description=''' + Value of the yy component of the quadrupole moment (Debye-Ang). + ''', + a_legacy=LegacyDefinition(name='quadrupole_moment_yy')) + + quadrupole_moment_zz = Quantity( + type=str, + shape=[], + description=''' + Value of the zz component of the quadrupole moment (Debye-Ang). + ''', + a_legacy=LegacyDefinition(name='quadrupole_moment_zz')) + + quadrupole_moment_xy = Quantity( + type=str, + shape=[], + description=''' + Value of the xy component of the quadrupole moment (Debye-Ang). + ''', + a_legacy=LegacyDefinition(name='quadrupole_moment_xy')) + + quadrupole_moment_xz = Quantity( + type=str, + shape=[], + description=''' + Value of the xz component of the quadrupole moment (Debye-Ang). + ''', + a_legacy=LegacyDefinition(name='quadrupole_moment_xz')) + + quadrupole_moment_yz = Quantity( + type=str, + shape=[], + description=''' + Value of the yz component of the quadrupole moment (Debye-Ang). + ''', + a_legacy=LegacyDefinition(name='quadrupole_moment_yz')) + + octapole_moment_xxx = Quantity( + type=str, + shape=[], + description=''' + Value of the xxx component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_xxx')) + + octapole_moment_yyy = Quantity( + type=str, + shape=[], + description=''' + Value of the yyy component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_yyy')) + + octapole_moment_zzz = Quantity( + type=str, + shape=[], + description=''' + Value of the zzz component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_zzz')) + + octapole_moment_xyy = Quantity( + type=str, + shape=[], + description=''' + Value of the xyy component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_xyy')) + + octapole_moment_xxy = Quantity( + type=str, + shape=[], + description=''' + Value of the xxy component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_xxy')) + + octapole_moment_xxz = Quantity( + type=str, + shape=[], + description=''' + Value of the xxz component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_xxz')) + + octapole_moment_xzz = Quantity( + type=str, + shape=[], + description=''' + Value of the xzz component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_xzz')) + + octapole_moment_yzz = Quantity( + type=str, + shape=[], + description=''' + Value of the yzz component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_yzz')) + + octapole_moment_yyz = Quantity( + type=str, + shape=[], + description=''' + Value of the yyz component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_yyz')) + + octapole_moment_xyz = Quantity( + type=str, + shape=[], + description=''' + Value of the xyz component of the octapole moment (Debye-Ang**2). + ''', + a_legacy=LegacyDefinition(name='octapole_moment_xyz')) + + hexadecapole_moment_xxxx = Quantity( + type=str, + shape=[], + description=''' + Value of the xxxx component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_xxxx')) + + hexadecapole_moment_yyyy = Quantity( + type=str, + shape=[], + description=''' + Value of the yyyy component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_yyyy')) + + hexadecapole_moment_zzzz = Quantity( + type=str, + shape=[], + description=''' + Value of the zzzz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_zzzz')) + + hexadecapole_moment_xxxy = Quantity( + type=str, + shape=[], + description=''' + Value of the xxxy component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_xxxy')) + + hexadecapole_moment_xxxz = Quantity( + type=str, + shape=[], + description=''' + Value of the xxxz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_xxxz')) + + hexadecapole_moment_yyyx = Quantity( + type=str, + shape=[], + description=''' + Value of the yyyx component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_yyyx')) + + hexadecapole_moment_yyyz = Quantity( + type=str, + shape=[], + description=''' + Value of the yyyz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_yyyz')) + + hexadecapole_moment_zzzx = Quantity( + type=str, + shape=[], + description=''' + Value of the zzzx component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_zzzx')) + + hexadecapole_moment_zzzy = Quantity( + type=str, + shape=[], + description=''' + Value of the zzzy component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_zzzy')) + + hexadecapole_moment_xxyy = Quantity( + type=str, + shape=[], + description=''' + Value of the xxyy component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_xxyy')) + + hexadecapole_moment_xxzz = Quantity( + type=str, + shape=[], + description=''' + Value of the xxzz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_xxzz')) + + hexadecapole_moment_yyzz = Quantity( + type=str, + shape=[], + description=''' + Value of the yyzz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_yyzz')) + + hexadecapole_moment_xxyz = Quantity( + type=str, + shape=[], + description=''' + Value of the xxyz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_xxyz')) + + hexadecapole_moment_yyxz = Quantity( + type=str, + shape=[], + description=''' + Value of the yyxz component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_yyxz')) + + hexadecapole_moment_zzxy = Quantity( + type=str, + shape=[], + description=''' + Value of the zzxy component of the hexadecapole moment (Debye-Ang**3). + ''', + a_legacy=LegacyDefinition(name='hexadecapole_moment_zzxy')) + + x_gaussian_molecular_multipole_lm = Quantity( + type=np.dtype(np.int32), + shape=['x_gaussian_number_of_lm_molecular_multipoles', 2], + description=''' + Tuples of $l$ and $m$ values for which the molecular multipoles (including the + electric charge, dipole, etc.) are given. The meaning of the integer number $l$ is + monopole/charge for $l=0$, dipole for $l=1$, quadrupole for $l=2$, etc. The + meaning of the integer numbers $m$ is specified by molecular_multipole_m_kind. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_molecular_multipole_lm')) + + x_gaussian_molecular_multipole_m_kind = Quantity( + type=str, + shape=[], + description=''' + String describing what the integer numbers $m$ in molecular_multipole_lm mean. + Allowed values (for atomic multipoles) are listed in the [m\\_kind wiki + page](https://gitlab.rzg.mpg.de/nomad-lab/nomad-meta-info/wikis/metainfo/m-kind). + ''', + a_legacy=LegacyDefinition(name='x_gaussian_molecular_multipole_m_kind')) + + x_gaussian_molecular_multipole_values = Quantity( + type=np.dtype(np.float64), + shape=['x_gaussian_number_of_lm_molecular_multipoles'], + description=''' + Value of the multipoles (including the monopole/charge for $l$ = 0, the dipole for + $l$ = 1, etc.). + ''', + a_legacy=LegacyDefinition(name='x_gaussian_molecular_multipole_values')) + + x_gaussian_number_of_lm_molecular_multipoles = Quantity( + type=int, + shape=[], + description=''' + Number of $l,m$ combinations for which molecular multipoles are given. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_number_of_lm_molecular_multipoles')) + + +class x_gaussian_section_geometry_optimization_info(MSection): + ''' + Specifies whether a geometry optimization is converged. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_geometry_optimization_info')) + + x_gaussian_geometry_optimization_converged = Quantity( + type=str, + shape=[], + description=''' + Specifies whether a geometry optimization is converged. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_geometry_optimization_converged')) + + +class x_gaussian_section_frequencies(MSection): + ''' + section for the values of the frequencies, reduced masses and normal mode vectors + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_frequencies')) + + x_gaussian_frequency_values = Quantity( + type=str, + shape=['number_of_frequency_rows'], + description=''' + values of frequencies, in cm-1 + ''', + a_legacy=LegacyDefinition(name='x_gaussian_frequency_values')) + + x_gaussian_frequencies = Quantity( + type=np.dtype(np.float64), + shape=['number_of_frequencies'], + description=''' + values of frequencies, in cm-1 + ''', + a_legacy=LegacyDefinition(name='x_gaussian_frequencies')) + + x_gaussian_reduced_masses = Quantity( + type=str, + shape=['number_of_reduced_masses_rows'], + description=''' + values of normal mode reduced masses + ''', + a_legacy=LegacyDefinition(name='x_gaussian_reduced_masses')) + + x_gaussian_red_masses = Quantity( + type=np.dtype(np.float64), + shape=['number_of_frequencies'], + description=''' + values of normal mode reduced masses + ''', + a_legacy=LegacyDefinition(name='x_gaussian_red_masses')) + + x_gaussian_normal_modes = Quantity( + type=str, + shape=['number_of_normal_modes_rows'], + description=''' + normal mode vectors + ''', + a_legacy=LegacyDefinition(name='x_gaussian_normal_modes')) + + x_gaussian_normal_mode_values = Quantity( + type=np.dtype(np.float64), + shape=['number_of_frequencies', 'number_of_atoms', 3], + description=''' + normal mode vectors + ''', + a_legacy=LegacyDefinition(name='x_gaussian_normal_mode_values')) + + +class x_gaussian_section_thermochem(MSection): + ''' + section for thermochemical quantities + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_thermochem')) + + x_gaussian_temperature = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Value of temperature for thermochemical values + ''', + a_legacy=LegacyDefinition(name='x_gaussian_temperature')) + + x_gaussian_pressure = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Value of pressure for thermochemical values + ''', + a_legacy=LegacyDefinition(name='x_gaussian_pressure')) + + x_gaussian_moment_of_inertia_X = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + X component of moment of inertia + ''', + a_legacy=LegacyDefinition(name='x_gaussian_moment_of_inertia_X')) + + x_gaussian_moment_of_inertia_Y = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Y component of moment of inertia + ''', + a_legacy=LegacyDefinition(name='x_gaussian_moment_of_inertia_Y')) + + x_gaussian_moment_of_inertia_Z = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Z component of moment of inertia + ''', + a_legacy=LegacyDefinition(name='x_gaussian_moment_of_inertia_Z')) + + x_gaussian_moments = Quantity( + type=np.dtype(np.float64), + shape=[3], + description=''' + Values of moments of inertia + ''', + a_legacy=LegacyDefinition(name='x_gaussian_moments')) + + x_gaussian_zero_point_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Value of zero-point energy + ''', + a_legacy=LegacyDefinition(name='x_gaussian_zero_point_energy')) + + x_gaussian_thermal_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Value of thermal correction to total energy + ''', + a_legacy=LegacyDefinition(name='x_gaussian_thermal_correction_energy')) + + x_gaussian_thermal_correction_enthalpy = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Value of thermal correction to enthalpy + ''', + a_legacy=LegacyDefinition(name='x_gaussian_thermal_correction_enthalpy')) + + x_gaussian_thermal_correction_free_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Value of thermal correction to Gibbs free energy + ''', + a_legacy=LegacyDefinition(name='x_gaussian_thermal_correction_free_energy')) + + +class x_gaussian_section_force_constant_matrix(MSection): + ''' + section for force constant matrix in Cartesians. Units are mdyne.Angstrom + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_force_constant_matrix')) + + x_gaussian_force_constants = Quantity( + type=str, + shape=[], + description=''' + Force constant matrix elements + ''', + a_legacy=LegacyDefinition(name='x_gaussian_force_constants')) + + x_gaussian_force_constant_values = Quantity( + type=np.dtype(np.float64), + shape=['number_of_degrees_of_freedom', 'number_of_degrees_of_freedom'], + description=''' + Force constant matrix element values + ''', + a_legacy=LegacyDefinition(name='x_gaussian_force_constant_values')) + + +class x_gaussian_section_orbital_symmetries(MSection): + ''' + section for the symmetry of the MOs + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_orbital_symmetries')) + + x_gaussian_alpha_occ_symmetry_values = Quantity( + type=str, + shape=['number_of_alpha_occ_rows'], + description=''' + symmetry of the alpha occupied MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_occ_symmetry_values')) + + x_gaussian_alpha_vir_symmetry_values = Quantity( + type=str, + shape=['number_of_alpha_vir_rows'], + description=''' + symmetry of the alpha virtual MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_vir_symmetry_values')) + + x_gaussian_beta_occ_symmetry_values = Quantity( + type=str, + shape=['number_of_beta_occ_rows'], + description=''' + symmetry of the beta occupied MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_occ_symmetry_values')) + + x_gaussian_beta_vir_symmetry_values = Quantity( + type=str, + shape=['number_of_beta_vir_rows'], + description=''' + symmetry of the beta virtual MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_vir_symmetry_values')) + + x_gaussian_alpha_symmetries = Quantity( + type=str, + shape=['number_of_alpha_mos'], + description=''' + symmetry of the alpha MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_symmetries')) + + x_gaussian_beta_symmetries = Quantity( + type=str, + shape=['number_of_beta_mos'], + description=''' + symmetry of the beta MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_symmetries')) + + +class x_gaussian_section_symmetry(MSection): + ''' + section for the symmetry of the electronic state + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_symmetry')) + + x_gaussian_elstate_symmetry = Quantity( + type=str, + shape=[], + description=''' + symmetry group of the electronic state + ''', + a_legacy=LegacyDefinition(name='x_gaussian_elstate_symmetry')) + + +class x_gaussian_section_elstruc_method(MSection): + ''' + Section containing electronic structure method. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_elstruc_method')) + + x_gaussian_electronic_structure_method = Quantity( + type=str, + shape=[], + description=''' + Name of electronic structure method. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_electronic_structure_method')) + + +class x_gaussian_section_energy_components(MSection): + ''' + Section containing total energy components + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_energy_components')) + + +class x_gaussian_section_moller_plesset(MSection): + ''' + Perturbative Moller-Plesset energies. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_moller_plesset')) + + x_gaussian_mp2_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and MP2 energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_mp2_correction_energy')) + + x_gaussian_mp3_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and MP3 energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_mp3_correction_energy')) + + x_gaussian_mp4dq_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and MP4(DQ) energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_mp4dq_correction_energy')) + + x_gaussian_mp4sdq_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and MP4(SDQ) energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_mp4sdq_correction_energy')) + + x_gaussian_mp4sdtq_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and MP4(SDTQ) energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_mp4sdtq_correction_energy')) + + x_gaussian_mp5_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and MP5 energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_mp5_correction_energy')) + + +class x_gaussian_section_coupled_cluster(MSection): + ''' + Coupled cluster energies. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_coupled_cluster')) + + x_gaussian_ccsd_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and CCSD energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_ccsd_correction_energy')) + + +class x_gaussian_section_quadratic_ci(MSection): + ''' + Quadratic CI energies. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_quadratic_ci')) + + x_gaussian_qcisd_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and QCISD energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_qcisd_correction_energy')) + + x_gaussian_qcisdtq_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and QCISD(TQ) energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_qcisdtq_correction_energy')) + + +class x_gaussian_section_ci(MSection): + ''' + CI energies. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_ci')) + + x_gaussian_ci_correction_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Difference between SCF and CI energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_ci_correction_energy')) + + +class x_gaussian_section_semiempirical(MSection): + ''' + semiempirical convergence cycles and energies. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_semiempirical')) + + x_gaussian_semiempirical_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + semiempirical energies. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_semiempirical_energy')) + + x_gaussian_semiempirical_method = Quantity( + type=str, + shape=[], + description=''' + semiempirical method. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_semiempirical_method')) + + +class x_gaussian_section_molmech(MSection): + ''' + molecular mechanics method and energies. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_molmech')) + + x_gaussian_molmech_method = Quantity( + type=str, + shape=[], + description=''' + molecular mechanics method. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_molmech_method')) + + +class x_gaussian_section_models(MSection): + ''' + composite model chemistries. + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_models')) + + +class x_gaussian_section_excited_initial(MSection): + ''' + Excited state energies and properties + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_excited_initial')) + + +class x_gaussian_section_excited(MSection): + ''' + CI singles, TDDFT/TDHF, ZINDO or EOMCCSD excited state energies and properties + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_excited')) + + x_gaussian_excited_state_number = Quantity( + type=np.dtype(np.int32), + shape=[], + description=''' + CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state number + ''', + a_legacy=LegacyDefinition(name='x_gaussian_excited_state_number')) + + x_gaussian_excited_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state energy + ''', + a_legacy=LegacyDefinition(name='x_gaussian_excited_energy')) + + x_gaussian_excited_oscstrength = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state oscillator strength + ''', + a_legacy=LegacyDefinition(name='x_gaussian_excited_oscstrength')) + + x_gaussian_excited_spin_squared = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state spin squared value + ''', + a_legacy=LegacyDefinition(name='x_gaussian_excited_spin_squared')) + + x_gaussian_excited_transition = Quantity( + type=str, + shape=[], + description=''' + CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state MOs involved in transitions and + their coefficients + ''', + a_legacy=LegacyDefinition(name='x_gaussian_excited_transition')) + + +class x_gaussian_section_casscf(MSection): + ''' + CASSCF energies and properties + ''' + + m_def = Section(validate=False, a_legacy=LegacyDefinition(name='x_gaussian_section_casscf')) + + x_gaussian_casscf_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + CASSCF energy + ''', + a_legacy=LegacyDefinition(name='x_gaussian_casscf_energy')) + + x_gaussian_casscf_determinant = Quantity( + type=np.dtype(np.int32), + shape=[], + description=''' + CASSCF determinant number + ''', + a_legacy=LegacyDefinition(name='x_gaussian_casscf_determinant')) + + x_gaussian_casscf_coefficient = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + CASSCF determinant coefficient + ''', + a_legacy=LegacyDefinition(name='x_gaussian_casscf_coefficient')) + + +class section_system(public.section_system): + + m_def = Section(validate=False, extends_base_section=True, a_legacy=LegacyDefinition(name='section_system')) + + x_gaussian_number_of_atoms = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + number of atoms of the system + ''', + a_legacy=LegacyDefinition(name='x_gaussian_number_of_atoms')) + + x_gaussian_atomic_masses = Quantity( + type=str, + shape=[], + description=''' + atomic masses for atoms + ''', + a_legacy=LegacyDefinition(name='x_gaussian_atomic_masses')) + + x_gaussian_total_charge = Quantity( + type=np.dtype(np.int32), + shape=[], + description=''' + Total charge of the system. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_total_charge')) + + x_gaussian_spin_target_multiplicity = Quantity( + type=np.dtype(np.int32), + shape=[], + description=''' + Target (user-imposed) value of the spin multiplicity $M=2S+1$, where $S$ is the + total spin. It is an integer value. This value is not necessarly the value + obtained at the end of the calculation. See spin_S2 for the converged value of the + spin moment. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_spin_target_multiplicity')) + + x_gaussian_geometry_lattice_vector_x = Quantity( + type=str, + shape=[], + description=''' + x component of lattice vector + ''', + a_legacy=LegacyDefinition(name='x_gaussian_geometry_lattice_vector_x')) + + x_gaussian_geometry_lattice_vector_y = Quantity( + type=str, + shape=[], + description=''' + y component of lattice vector + ''', + a_legacy=LegacyDefinition(name='x_gaussian_geometry_lattice_vector_y')) + + x_gaussian_geometry_lattice_vector_z = Quantity( + type=str, + shape=[], + description=''' + z component of lattice vector + ''', + a_legacy=LegacyDefinition(name='x_gaussian_geometry_lattice_vector_z')) + + x_gaussian_masses = Quantity( + type=np.dtype(np.float64), + shape=['number_of_atoms'], + description=''' + values of atomic masses + ''', + a_legacy=LegacyDefinition(name='x_gaussian_masses')) + + +class section_single_configuration_calculation(public.section_single_configuration_calculation): + + m_def = Section(validate=False, extends_base_section=True, a_legacy=LegacyDefinition(name='section_single_configuration_calculation')) + + x_gaussian_atom_forces = Quantity( + type=np.dtype(np.float64), + shape=['number_of_atoms', 3], + unit='newton', + description=''' + Forces acting on the atoms, calculated as minus gradient of energy_total. + ''', + categories=[x_gaussian_atom_forces_type], + a_legacy=LegacyDefinition(name='x_gaussian_atom_forces')) + + x_gaussian_energy_total_scf_converged = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + SCF total energy converged for a given geometry. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_energy_total_scf_converged')) + + x_gaussian_number_of_scf_iterations = Quantity( + type=int, + shape=[], + description=''' + Number of performed self-consistent field (SCF) iterations at DFT level. + ''', + categories=[x_gaussian_scf_info], + a_legacy=LegacyDefinition(name='x_gaussian_number_of_scf_iterations')) + + x_gaussian_section_hybrid_coeffs = SubSection( + sub_section=SectionProxy('x_gaussian_section_hybrid_coeffs'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_hybrid_coeffs')) + + x_gaussian_section_total_scf_one_geometry = SubSection( + sub_section=SectionProxy('x_gaussian_section_total_scf_one_geometry'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_total_scf_one_geometry')) + + x_gaussian_section_atom_forces = SubSection( + sub_section=SectionProxy('x_gaussian_section_atom_forces'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_atom_forces')) + + x_gaussian_section_molecular_multipoles = SubSection( + sub_section=SectionProxy('x_gaussian_section_molecular_multipoles'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_molecular_multipoles')) + + x_gaussian_section_energy_components = SubSection( + sub_section=SectionProxy('x_gaussian_section_energy_components'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_energy_components')) + + x_gaussian_section_moller_plesset = SubSection( + sub_section=SectionProxy('x_gaussian_section_moller_plesset'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_moller_plesset')) + + x_gaussian_section_coupled_cluster = SubSection( + sub_section=SectionProxy('x_gaussian_section_coupled_cluster'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_coupled_cluster')) + + x_gaussian_section_quadratic_ci = SubSection( + sub_section=SectionProxy('x_gaussian_section_quadratic_ci'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_quadratic_ci')) + + x_gaussian_section_ci = SubSection( + sub_section=SectionProxy('x_gaussian_section_ci'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_ci')) + + x_gaussian_section_semiempirical = SubSection( + sub_section=SectionProxy('x_gaussian_section_semiempirical'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_semiempirical')) + + x_gaussian_section_molmech = SubSection( + sub_section=SectionProxy('x_gaussian_section_molmech'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_molmech')) + + x_gaussian_section_models = SubSection( + sub_section=SectionProxy('x_gaussian_section_models'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_models')) + + x_gaussian_section_excited_initial = SubSection( + sub_section=SectionProxy('x_gaussian_section_excited_initial'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_excited_initial')) + + x_gaussian_section_excited = SubSection( + sub_section=SectionProxy('x_gaussian_section_excited'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_excited')) + + x_gaussian_section_casscf = SubSection( + sub_section=SectionProxy('x_gaussian_section_casscf'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_casscf')) + + +class section_run(public.section_run): + + m_def = Section(validate=False, extends_base_section=True, a_legacy=LegacyDefinition(name='section_run')) + + x_gaussian_chk_file = Quantity( + type=str, + shape=[], + description=''' + binary file with detailed output information + ''', + a_legacy=LegacyDefinition(name='x_gaussian_chk_file')) + + x_gaussian_memory = Quantity( + type=str, + shape=[], + description=''' + total memory for the run + ''', + categories=[public.settings_run], + a_legacy=LegacyDefinition(name='x_gaussian_memory')) + + x_gaussian_number_of_processors = Quantity( + type=str, + shape=[], + description=''' + number of processors used + ''', + categories=[public.settings_run, public.parallelization_info, public.accessory_info], + a_legacy=LegacyDefinition(name='x_gaussian_number_of_processors')) + + x_gaussian_program_execution_date = Quantity( + type=str, + shape=[], + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_program_execution_date')) + + x_gaussian_program_release_date = Quantity( + type=str, + shape=[], + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_program_release_date')) + + x_gaussian_program_implementation = Quantity( + type=str, + shape=[], + description=''' + - + ''', + a_legacy=LegacyDefinition(name='x_gaussian_program_implementation')) + + x_gaussian_atom_positions = Quantity( + type=np.dtype(np.float64), + shape=['number_of_atoms', 3], + unit='meter', + description=''' + Positions of all the atoms, in Cartesian coordinates. This metadata defines a + configuration and is therefore required. + ''', + categories=[x_gaussian_configuration_core], + a_legacy=LegacyDefinition(name='x_gaussian_atom_positions')) + + x_gaussian_atom_labels = Quantity( + type=str, + shape=[], + description=''' + Labels of the atoms. These strings identify the atom kind and conventionally start + with the symbol of the atomic species, possibly followed by a number. The same + atomic species can be labelled with more than one atom_labels in order to + distinguish, e.g., atoms of the same species assigned to different atom-centered + basis sets or pseudopotentials, or simply atoms in different locations in the + structure (e.g., bulk and surface). These labels can also be used for *particles* + that do not correspond to physical atoms (e.g., ghost atoms in some codes using + atom-centered basis sets). This metadata defines a configuration and is therefore + required. + ''', + categories=[x_gaussian_configuration_core], + a_legacy=LegacyDefinition(name='x_gaussian_atom_labels')) + + x_gaussian_section_geometry = SubSection( + sub_section=SectionProxy('x_gaussian_section_geometry'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_geometry')) + + x_gaussian_section_times = SubSection( + sub_section=SectionProxy('x_gaussian_section_times'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_times')) + + x_gaussian_section_geometry_optimization_info = SubSection( + sub_section=SectionProxy('x_gaussian_section_geometry_optimization_info'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_geometry_optimization_info')) + + x_gaussian_section_frequencies = SubSection( + sub_section=SectionProxy('x_gaussian_section_frequencies'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_frequencies')) + + x_gaussian_section_thermochem = SubSection( + sub_section=SectionProxy('x_gaussian_section_thermochem'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_thermochem')) + + x_gaussian_section_force_constant_matrix = SubSection( + sub_section=SectionProxy('x_gaussian_section_force_constant_matrix'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_force_constant_matrix')) + + x_gaussian_section_orbital_symmetries = SubSection( + sub_section=SectionProxy('x_gaussian_section_orbital_symmetries'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_orbital_symmetries')) + + x_gaussian_section_symmetry = SubSection( + sub_section=SectionProxy('x_gaussian_section_symmetry'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_symmetry')) + + +class section_scf_iteration(public.section_scf_iteration): + + m_def = Section(validate=False, extends_base_section=True, a_legacy=LegacyDefinition(name='section_scf_iteration')) + + x_gaussian_energy_total_scf_iteration = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Total energy calculated with a given method during the self-consistent field (SCF) + iterations. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_energy_total_scf_iteration')) + + x_gaussian_delta_energy_total_scf_iteration = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Total energy increment calculated with a given method during the self-consistent + field (SCF) iterations. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_delta_energy_total_scf_iteration')) + + x_gaussian_single_configuration_calculation_converged = Quantity( + type=str, + shape=[], + description=''' + Determines whether a single configuration calculation is converged. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_single_configuration_calculation_converged')) + + x_gaussian_spin_S2 = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Real value of spin squared. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_spin_S2')) + + x_gaussian_after_annihilation_spin_S2 = Quantity( + type=np.dtype(np.float64), + shape=[], + description=''' + Real value of spin squared resulting from the annihilation of the first spin + contaminant. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_after_annihilation_spin_S2')) + + x_gaussian_energy_scf = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Value of the SCF total energy, either HF or DFT. + ''', + categories=[public.energy_value, public.energy_total_potential, public.energy_component], + a_legacy=LegacyDefinition(name='x_gaussian_energy_scf')) + + x_gaussian_perturbation_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Value of the perturbation energy for double hybrids + ''', + categories=[public.energy_value, public.energy_total_potential, public.energy_component], + a_legacy=LegacyDefinition(name='x_gaussian_perturbation_energy')) + + x_gaussian_hf_detect = Quantity( + type=str, + shape=[], + description=''' + Determine if the SCF method is one of RHF, UHF, or ROHF + ''', + a_legacy=LegacyDefinition(name='x_gaussian_hf_detect')) + + x_gaussian_energy_electrostatic = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Total electrostatic energy (nuclei + electrons), defined consistently with + calculation_method. + ''', + categories=[public.energy_value, public.energy_component], + a_legacy=LegacyDefinition(name='x_gaussian_energy_electrostatic')) + + x_gaussian_energy_error = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Error in the total energy. Defined consistently with XC_method. + ''', + categories=[public.error_estimate_contribution, public.energy_value], + a_legacy=LegacyDefinition(name='x_gaussian_energy_error')) + + x_gaussian_electronic_kinetic_energy = Quantity( + type=np.dtype(np.float64), + shape=[], + unit='joule', + description=''' + Self-consistent electronic kinetic energy as defined in XC_method. + ''', + categories=[public.energy_value, public.energy_component], + a_legacy=LegacyDefinition(name='x_gaussian_electronic_kinetic_energy')) + + +class section_eigenvalues(public.section_eigenvalues): + + m_def = Section(validate=False, extends_base_section=True, a_legacy=LegacyDefinition(name='section_eigenvalues')) + + x_gaussian_alpha_occ_eigenvalues_values = Quantity( + type=str, + shape=[], + description=''' + values of eigenenergies for occupied alpha MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_occ_eigenvalues_values')) + + x_gaussian_alpha_vir_eigenvalues_values = Quantity( + type=str, + shape=[], + description=''' + values of eigenenergies for virtual alpha MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_vir_eigenvalues_values')) + + x_gaussian_beta_occ_eigenvalues_values = Quantity( + type=str, + shape=[], + description=''' + values of eigenenergies for occupied beta MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_occ_eigenvalues_values')) + + x_gaussian_beta_vir_eigenvalues_values = Quantity( + type=str, + shape=[], + description=''' + values of eigenenergies for virtual beta MOs + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_vir_eigenvalues_values')) + + x_gaussian_alpha_eigenvalues = Quantity( + type=np.dtype(np.float64), + shape=['number_of_alpha_mos'], + description=''' + values of eigenenergies, alpha occ + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_eigenvalues')) + + x_gaussian_beta_eigenvalues = Quantity( + type=np.dtype(np.float64), + shape=['number_of_beta_mos'], + description=''' + values of eigenenergies, beta occ + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_eigenvalues')) + + x_gaussian_alpha_occupations = Quantity( + type=np.dtype(np.float64), + shape=['number_of_alpha_mos'], + description=''' + values of eigenenergies, alpha occ + ''', + a_legacy=LegacyDefinition(name='x_gaussian_alpha_occupations')) + + x_gaussian_beta_occupations = Quantity( + type=np.dtype(np.float64), + shape=['number_of_beta_mos'], + description=''' + values of eigenenergies, beta occ + ''', + a_legacy=LegacyDefinition(name='x_gaussian_beta_occupations')) + + x_gaussian_eigenvalues_occupation = Quantity( + type=np.dtype(np.float64), + shape=['number_of_spin_channels', 'number_of_eigenvalues_kpoints', 'number_of_eigenvalues'], + description=''' + Occupation of the eigenstates whose (energy) eigenvalues are given in + eigenvalues_values. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_eigenvalues_occupation')) + + x_gaussian_eigenvalues_values = Quantity( + type=np.dtype(np.float64), + shape=['number_of_spin_channels', 'number_of_eigenvalues_kpoints', 'number_of_eigenvalues'], + unit='joule', + description=''' + Values of the (electronic-energy) eigenvalues. Their occupations are given in + eigenvalues_occupation. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_eigenvalues_values')) + + +class section_method(public.section_method): + + m_def = Section(validate=False, extends_base_section=True, a_legacy=LegacyDefinition(name='section_method')) + + x_gaussian_settings = Quantity( + type=str, + shape=[], + description=''' + electronic structure method, basis set, etc. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_settings')) + + x_gaussian_settings_corrected = Quantity( + type=str, + shape=[], + description=''' + electronic structure method, basis set, etc. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_settings_corrected')) + + x_gaussian_method = Quantity( + type=str, + shape=[], + description=''' + String identifying in an unique way the electronic structure method used for the + final wavefunctions. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_method')) + + x_gaussian_xc = Quantity( + type=str, + shape=[], + description=''' + String identifying in an unique way the XC method used for the final + wavefunctions. + ''', + a_legacy=LegacyDefinition(name='x_gaussian_xc')) + + x_gaussian_section_elstruc_method = SubSection( + sub_section=SectionProxy('x_gaussian_section_elstruc_method'), + repeats=True, + a_legacy=LegacyDefinition(name='x_gaussian_section_elstruc_method')) + + +m_package.__init_metainfo__() diff --git a/gaussianparser/parser_gaussian.py b/gaussianparser/parser_gaussian.py index bb5c8cc7b3c09eb634fd42777d9dd8ab3d4f5cf5..16c83930641d00e0225a8e91154d5967511e43e5 100644 --- a/gaussianparser/parser_gaussian.py +++ b/gaussianparser/parser_gaussian.py @@ -826,7 +826,7 @@ class GaussianParserContext(object): for k in range(i+1,dim): cartforceconst[i,k] = cartforceconst[k,i] - cartforceconst = convert_unit(cartforceconst, "forceAu / bohr", "J / (meter**2)") + cartforceconst = convert_unit(cartforceconst, "hartree / (bohr ** 2)", "J / (meter**2)") backend.addArrayValues("x_gaussian_force_constant_values", cartforceconst) diff --git a/parser/parser-gaussian/parser_gaussian.py b/parser/parser-gaussian/parser_gaussian.py index c2fc4c321578c186c5d7d51e4fb58e847c83fc9d..5d236fd16a58a2b26bc7eeaa1afa34bcfde6e8d7 100644 --- a/parser/parser-gaussian/parser_gaussian.py +++ b/parser/parser-gaussian/parser_gaussian.py @@ -1,11 +1,11 @@ # Copyright 2015-2018 Rosendo Valero, Fawzi Mohamed, Ankit Kariryaa -# +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -37,7 +37,7 @@ logger = logging.getLogger("nomad.GaussianParser") mainFileDescription = SM( name = 'root', weak = True, - forwardMatch = True, + forwardMatch = True, startReStr = "", subMatchers = [ SM(name = 'newRun', @@ -220,7 +220,7 @@ mainFileDescription = SM( ] ) ] - ), + ), SM(name = 'CASSCFStates', sections = ['x_gaussian_section_casscf'], startReStr = r"\s*EIGENVALUES AND\s*", @@ -247,7 +247,7 @@ mainFileDescription = SM( startReStr = r"\s+Population analysis", subFlags = SM.SubFlags.Sequenced, subMatchers = [ - SM(r"\s*Orbital symmetries"), + SM(r"\s*Orbital symmetries"), SM(r"\s*Alpha Orbitals"), SM(r"\s*Occupied\s+(?P<x_gaussian_alpha_occ_symmetry_values>\((.+)\))?"), SM(r"\s+(?P<x_gaussian_alpha_occ_symmetry_values>\((.+)\)?)", repeats = True), @@ -274,7 +274,7 @@ mainFileDescription = SM( forwardMatch = True, subFlags = SM.SubFlags.Sequenced, subMatchers = [ - SM(r"\s*Alpha occ. eigenvalues --\s+(?P<x_gaussian_alpha_occ_eigenvalues_values>-?[^\s.-]+\s+|(\-?\d*\.\d*)\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?)", repeats = True), + SM(r"\s*Alpha occ. eigenvalues --\s+(?P<x_gaussian_alpha_occ_eigenvalues_values>-?[^\s.-]+\s+|(\-?\d*\.\d*)\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?)", repeats = True), SM(r"\s*Alpha virt. eigenvalues --\s+(?P<x_gaussian_alpha_vir_eigenvalues_values>-?[^\s.-]+\s+|(\-?\d*\.\d*)\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?)", repeats = True), SM(r"\s*Beta occ. eigenvalues --\s+(?P<x_gaussian_beta_occ_eigenvalues_values>-?[^\s.-]+\s+|(\-?\d*\.\d*)\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?)", repeats = True), SM(r"\s*Beta virt. eigenvalues --\s+(?P<x_gaussian_beta_vir_eigenvalues_values>-?[^\s.-]+\s+|(\-?\d*\.\d*)\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?\s+(\-?\d*\.\d*)?)", repeats = True), @@ -297,10 +297,10 @@ mainFileDescription = SM( forwardMatch = False, subMatchers = [ SM(r"\s*Charge=(?P<charge>\s*[-0-9.]+)"), - SM(r"\s*Dipole moment "), + SM(r"\s*Dipole moment "), SM(r"\s+\w+=\s+(?P<dipole_moment_x>[-+0-9EeDd.]+)\s+\w+=\s+(?P<dipole_moment_y>[-+0-9EeDd.]+)\s+\w+=\s+(?P<dipole_moment_z>[-+0-9EeDd.]+)"), - SM(r"\s*Quadrupole moment"), - SM(r"\s+\w+=\s+(?P<quadrupole_moment_xx>[0-9-.]+)\s+\w+=\s+(?P<quadrupole_moment_yy>[0-9-.]+)\s+\w+=\s+(?P<quadrupole_moment_zz>[0-9-.]+)"), + SM(r"\s*Quadrupole moment"), + SM(r"\s+\w+=\s+(?P<quadrupole_moment_xx>[0-9-.]+)\s+\w+=\s+(?P<quadrupole_moment_yy>[0-9-.]+)\s+\w+=\s+(?P<quadrupole_moment_zz>[0-9-.]+)"), SM(r"\s+\w+=\s+(?P<quadrupole_moment_xy>[0-9-.]+)\s+\w+=\s+(?P<quadrupole_moment_xz>[0-9-.]+)\s+\w+=\s+(?P<quadrupole_moment_yz>[0-9-.]+)"), SM(r"\s*Traceless Quadrupole moment"), SM(r"\s+\w+=\s+[0-9-.]+\s+\w+=\s+[0-9-.]+\s+\w+=\s+[0-9-.]+"), @@ -315,7 +315,7 @@ mainFileDescription = SM( SM(r"\s+\w+=\s+(?P<hexadecapole_moment_zzzy>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_xxyy>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_xxzz>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_yyzz>[-+0-9EeDd.]+)"), SM(r"\s+\w+=\s+(?P<hexadecapole_moment_xxyz>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_yyxz>[-+0-9EeDd.]+)\s+\w+=\s+(?P<hexadecapole_moment_zzxy>[-+0-9EeDd.]+)") ] - ), + ), SM (name = 'Frequencies', sections = ['x_gaussian_section_frequencies'], startReStr = r"\s*Frequencies --\s+(?:(?:[-]?[0-9]+\.\d*)\s*(?:[-]?[-0-9]+\.\d*)?\s*(?:[-]?[-0-9]+\.\d*)?)", @@ -347,9 +347,9 @@ mainFileDescription = SM( SM(r"\s*Zero-point correction=\s*(?P<x_gaussian_zero_point_energy__hartree>[0-9.]+)"), SM(r"\s*Thermal correction to Energy=\s*(?P<x_gaussian_thermal_correction_energy__hartree>[0-9.]+)"), SM(r"\s*Thermal correction to Enthalpy=\s*(?P<x_gaussian_thermal_correction_enthalpy__hartree>[0-9.]+)"), - SM(r"\s*Thermal correction to Gibbs Free Energy=\s*(?P<x_gaussian_thermal_correction_free_energy__hartree>[0-9.]+)"), + SM(r"\s*Thermal correction to Gibbs Free Energy=\s*(?P<x_gaussian_thermal_correction_free_energy__hartree>[0-9.]+)"), ] - ), + ), SM(name = 'Forceconstantmatrix', sections = ['x_gaussian_section_force_constant_matrix'], startReStr = r"\s*Force constants in Cartesian coordinates", @@ -632,12 +632,12 @@ class GaussianParserContext(object): symmetry = [str(f) for f in symoccalpha[1:].replace(",","").replace("(","").replace(")","").replace("]","").replace("'A","A").replace("\\'","'").replace("A''","A'").replace("'E","E").replace("G'","G").replace("\"A'\"","A'").split()] sym1 = [] - sym1 = np.append(sym1, symmetry) + sym1 = np.append(sym1, symmetry) symmetry = [str(f) for f in symviralpha[1:].replace(",","").replace("(","").replace(")","").replace("]","").replace("'A","A").replace("\\'","'").replace("A''","A'").replace("\"A'\"","A'").replace("'E","E").replace("G'","G").split()] sym2 = [] sym2 = np.append(sym2, symmetry) symmetrycon = np.concatenate((sym1, sym2), axis=0) - backend.addArrayValues("x_gaussian_alpha_symmetries", symmetrycon) + backend.addArrayValues("x_gaussian_alpha_symmetries", symmetrycon) if(section["x_gaussian_beta_occ_symmetry_values"]): symmetry = [str(f) for f in symoccbeta[1:].replace(",","").replace("(","").replace(")","").replace("]","").replace("'A","A").replace("\\'","'").replace("A''","A'").replace("\"A'\"","A'").replace("'E","E").replace("G'","G").split()] @@ -677,7 +677,7 @@ class GaussianParserContext(object): quadyz = section["quadrupole_moment_yz"] quadzz = section["quadrupole_moment_zz"] quad = str([quadxx, quadxy, quadyy, quadxz, quadyz, quadzz]) - quadrupoles = [float(f) for f in quad[1:].replace("-."," -0.").replace("'."," 0.").replace("'","").replace("[","").replace("]","").replace(",","").split()] + quadrupoles = [float(f) for f in quad[1:].replace("-."," -0.").replace("'."," 0.").replace("'","").replace("[","").replace("]","").replace(",","").split()] quadrupoles = convert_unit(quadrupoles, "debye * angstrom", "coulomb * meter**2") if(section["octapole_moment_xxx"]): @@ -719,7 +719,7 @@ class GaussianParserContext(object): if(section["quadrupole_moment_xx"]): multipoles = np.hstack((charge, dipoles, quadrupoles, octapoles, hexadecapoles)) else: - multipoles = np.hstack((charge, dipoles)) + multipoles = np.hstack((charge, dipoles)) x_gaussian_molecular_multipole_values = np.resize(multipoles, (x_gaussian_number_of_lm_molecular_multipoles)) @@ -746,12 +746,12 @@ class GaussianParserContext(object): disps = [float(s) for s in vibdisps[1:].replace("'","").replace(",","").replace("]","").replace("one","").replace("\\n","").replace(" ."," 0.").replace(" -."," -0.").split()] dispsnew = np.zeros(len(disps), dtype = float) -# Reorder disps +# Reorder disps if len(vibfreqs) % 3 == 0: k = 0 for p in range(0,len(vibfreqs) // 3): - M = int(len(disps)/len(vibfreqs)) * (p+1) + M = int(len(disps)/len(vibfreqs)) * (p+1) for m in range(3): for n in range(M - int(len(disps) / len(vibfreqs)),M,3): for l in range(3): @@ -782,9 +782,9 @@ class GaussianParserContext(object): forceconst = str(section["x_gaussian_force_constants"]) numbers = [float(s) for s in forceconst[1:].replace("'","").replace(",","").replace("]","").replace("\\n","").replace("D","E").replace(" ."," 0.").replace(" -."," -0.").split()] length = len(numbers) - dim = int(((1 + 8 * length)**0.5 - 1) / 2) + dim = int(((1 + 8 * length)**0.5 - 1) / 2) cartforceconst = np.zeros([dim, dim]) - forcecnstvalues = np.append(forcecnstvalues, numbers) + forcecnstvalues = np.append(forcecnstvalues, numbers) if dim > 6: l = 0 for i in range(0,5): @@ -795,7 +795,7 @@ class GaussianParserContext(object): for k in range(0,5): l = l + 1 cartforceconst[i,k] = forcecnstvalues[l-1] - for i in range(5,dim-2): + for i in range(5,dim-2): for k in range(5,i+1): l = l + 1 cartforceconst[i,k] = forcecnstvalues[l-1] @@ -821,14 +821,14 @@ class GaussianParserContext(object): for k in range(i,dim): l = l + 1 cartforceconst[i,k] = forcecnstvalues[l-1] - + for i in range(0,dim): for k in range(i+1,dim): cartforceconst[i,k] = cartforceconst[k,i] - cartforceconst = convert_unit(cartforceconst, "forceAu / bohr", "J / (meter**2)") + cartforceconst = convert_unit(cartforceconst, "hartree / (bohr ** 2)", "J / (meter**2)") - backend.addArrayValues("x_gaussian_force_constant_values", cartforceconst) + backend.addArrayValues("x_gaussian_force_constant_values", cartforceconst) def onOpen_section_method(self, backend, gIndex, section): # keep track of the latest method section @@ -844,7 +844,7 @@ class GaussianParserContext(object): 'XA': [{'name': 'X_ALPHA'}], 'VWN': [{'name': 'LDA_C_VWN'}], 'VWN3': [{'name': 'LDA_C_VWN_3'}], - 'LSDA': [{'name': 'LDA_X'}, {'name': 'LDA_C_VWN'}], + 'LSDA': [{'name': 'LDA_X'}, {'name': 'LDA_C_VWN'}], 'B': [{'name': 'GGA_X_B88'}], 'BLYP': [{'name': 'GGA_C_LYP'}, {'name': 'GGA_X_B88'}], 'PBEPBE': [{'name': 'GGA_C_PBE'}, {'name': 'GGA_X_PBE'}], @@ -877,9 +877,9 @@ class GaussianParserContext(object): 'V5LYP': [{'name': 'GGA_C_V5LYP'}], 'THCTH': [{'name': 'MGGA_XC_TAU_HCTH'}], 'TPSSTPSS': [{'name': 'MGGA_C_TPSS'}, {'name': 'MGGA_X_TPSS'}], - 'B3LYP': [{'name': 'HYB_GGA_XC_B3LYP'}], + 'B3LYP': [{'name': 'HYB_GGA_XC_B3LYP'}], 'B3PW91': [{'name': 'HYB_GGA_XC_B3PW91'}], - 'B3P86': [{'name': 'HYB_GGA_XC_B3P86'}], + 'B3P86': [{'name': 'HYB_GGA_XC_B3P86'}], 'B1B95': [{'name': 'HYB_GGA_XC_B1B95'}], 'MPW1PW91': [{'name': 'HYB_GGA_XC_MPW1PW91'}], 'MPW1LYP': [{'name': 'HYB_GGA_XC_MPW1LYP'}], @@ -888,7 +888,7 @@ class GaussianParserContext(object): 'B98': [{'name': 'HYB_GGA_XC_B98'}], 'B971': [{'name': 'HYB_GGA_XC_B971'}], 'B972': [{'name': 'HYB_GGA_XC_B972'}], - 'O3LYP': [{'name': 'HYB_GGA_XC_O3LYP'}], + 'O3LYP': [{'name': 'HYB_GGA_XC_O3LYP'}], 'TPSSH': [{'name': 'HYB_GGA_XC_TPSSh'}], 'BMK': [{'name': 'HYB_MGGA_XC_BMK'}], 'X3LYP': [{'name': 'HYB_GGA_XC_X3LYP'}], @@ -925,7 +925,7 @@ class GaussianParserContext(object): 'MPW2PLYP': [{'name': 'MPW2PLYP'}], 'B2PLYPD': [{'name': 'B2PLYPD'}], 'MPW2PLYPD': [{'name': 'MPW2PLYPD'}], - 'B97D3': [{'name': 'B97D3'}], + 'B97D3': [{'name': 'B97D3'}], 'B2PLYPD3': [{'name': 'B2PLYPD3'}], 'MPW2PLYPD3': [{'name': 'MPW2PLYPD3'}], 'LC-': [{'name': 'LONG-RANGE CORRECTED'}], @@ -1017,7 +1017,7 @@ class GaussianParserContext(object): 'SV': [{'name': 'SV'}], 'SVP': [{'name': 'SVP'}], 'TZV': [{'name': 'TZV'}], - 'TZVP': [{'name': 'TZVP'}], + 'TZVP': [{'name': 'TZVP'}], 'DEF2SV': [{'name': 'Def2SV'}], 'DEF2SVP': [{'name': 'Def2SVP'}], 'DEF2SVPP': [{'name': 'Def2SVPP'}], @@ -1031,12 +1031,12 @@ class GaussianParserContext(object): 'MIDIX': [{'name': 'MidiX'}], 'EPR-II': [{'name': 'EPR-II'}], 'EPR-III': [{'name': 'EPR-III'}], - 'UGBS': [{'name': 'UGBS'}], + 'UGBS': [{'name': 'UGBS'}], 'MTSMALL': [{'name': 'MTSmall'}], 'DGDZVP': [{'name': 'DGDZVP'}], 'DGDZVP2': [{'name': 'DGDZVP2'}], 'DGTZVP': [{'name': 'DGTZVP'}], - 'CBSB3': [{'name': 'CBSB3'}], + 'CBSB3': [{'name': 'CBSB3'}], 'CBSB7': [{'name': 'CBSB7'}], 'SHC': [{'name': 'SHC'}], 'SEC': [{'name': 'SHC'}], @@ -1046,7 +1046,7 @@ class GaussianParserContext(object): 'LANL1': [{'name': 'LANL1'}], 'LANL2': [{'name': 'LANL2'}], 'SDD': [{'name': 'SDD'}], - 'OLDSDD': [{'name': 'OldSDD'}], + 'OLDSDD': [{'name': 'OldSDD'}], 'SDDALL': [{'name': 'SDDAll'}], 'GEN': [{'name': 'General'}], 'GENECP': [{'name': 'General ECP'}], @@ -1070,7 +1070,7 @@ class GaussianParserContext(object): methodWrite = False basissetWrite = False methodreal = None - basissetreal = None + basissetreal = None methodprefix = None exc = None corr = None @@ -1088,7 +1088,7 @@ class GaussianParserContext(object): method1 = settings.replace("['#p ","").replace("['#P ","").replace("['#","") method1 = method1.upper() - if 'ONIOM' not in method1: + if 'ONIOM' not in method1: if settings.find("/") >= 0: method1 = settings.split('/')[0].replace("['#p ","").replace("['#P ","").replace("['#","") method1 = method1.upper() @@ -1096,7 +1096,7 @@ class GaussianParserContext(object): method2 = str(x) if method2 != 'RHF' and method2 != 'UHF' and method2 != 'ROHF' and method2 != 'UFF': if (method2[0] == 'R' and method2[0:2] != 'RO') or method2[0] == 'U': - methodprefix = method2[0] + methodprefix = method2[0] method2 = method2[1:] elif method2[0:2] == 'RO': methodprefix = method2[0:2] @@ -1130,7 +1130,7 @@ class GaussianParserContext(object): if method2 in xcDict.keys(): xc = method2 xcWrite= True - methodWrite = True + methodWrite = True method = 'DFT' if method2 in methodDict.keys(): method = method2 @@ -1152,7 +1152,7 @@ class GaussianParserContext(object): methodWrite = True methodreal = method2 rest = settings.split('/')[1].replace("'","").replace("]","") - rest = rest.upper() + rest = rest.upper() for x in rest.split(): if x in basissetDict.keys(): basisset = x @@ -1206,7 +1206,7 @@ class GaussianParserContext(object): if z in basissetDict.keys(): basisset = z basissetWrite = True - if (len(rest2.split('/')) == 2): + if (len(rest2.split('/')) == 2): if(basisset is not None): basissetreal = rest2.split('/')[1] + '/' + basisset else: @@ -1215,15 +1215,15 @@ class GaussianParserContext(object): pass else: method1 = settings.split() - for x in method1: + for x in method1: method2 = str(x) - method2 = method2.upper() + method2 = method2.upper() if method2 != 'RHF' and method2 != 'UHF' and method2 != 'ROHF' and method2 != 'UFF': if (method2[0] == 'R' and method2[0:2] != 'RO') or method2[0] == 'U': - methodprefix = method2[0] + methodprefix = method2[0] method2 = method2[1:] elif method2[0:2] == 'RO': - methodprefix = method2[0:2] + methodprefix = method2[0:2] method2 = method2[2:] if method2[0:2] == 'SV' or method2[0] == 'B' or method2[0] == 'O': if method2[0] in xcDict.keys() and method2[1:] in xcDict.keys(): @@ -1250,12 +1250,12 @@ class GaussianParserContext(object): exccorr = method2[3:] if exccorr in xcDict.keys(): xc = 'LC-' + xcDict.get([exccorr][-1]) - if method2 in xcDict.keys(): + if method2 in xcDict.keys(): xc = method2 xcWrite= True method = 'DFT' if method2 in methodDict.keys(): - method = method2 + method = method2 methodWrite = True methodreal = method2 else: @@ -1300,7 +1300,7 @@ class GaussianParserContext(object): # special options for ONIOM calculations else: - method = 'ONIOM' + method = 'ONIOM' methodWrite = True method1 = settings.split() for x in method1: @@ -1308,7 +1308,7 @@ class GaussianParserContext(object): method2 = method2.upper() if 'ONIOM' in method2: methodreal = method2 - + # functionals where hybrid_xc_coeff are written if xc is not None: @@ -1415,7 +1415,7 @@ class GaussianParserContext(object): unit_cell = [] for i in ['x', 'y', 'z']: uci = str(section['x_gaussian_geometry_lattice_vector_' + i]) - uci = uci.split() + uci = uci.split() for i in range(len(uci)): uci[i] = str(uci[i]).replace("[","").replace("'","").replace("]","").replace("\"","").replace(",","") if uci[i] is not None: @@ -1460,11 +1460,11 @@ cachingLevelForMetaName = { "x_gaussian_number_of_atoms": CachingLevel.ForwardAndCache, "section_scf_iteration": CachingLevel.Forward, "energy_total_scf_iteration": CachingLevel.ForwardAndCache, - "x_gaussian_delta_energy_total_scf_iteration": CachingLevel.ForwardAndCache, + "x_gaussian_delta_energy_total_scf_iteration": CachingLevel.ForwardAndCache, "energy_total": CachingLevel.ForwardAndCache, "x_gaussian_energy_error": CachingLevel.ForwardAndCache, "x_gaussian_electronic_kinetic_energy": CachingLevel.ForwardAndCache, - "x_gaussian_energy_electrostatic": CachingLevel.ForwardAndCache, + "x_gaussian_energy_electrostatic": CachingLevel.ForwardAndCache, "x_gaussian_section_frequencies": CachingLevel.Forward, "x_gaussian_frequency_values": CachingLevel.Cache, "x_gaussian_frequencies": CachingLevel.ForwardAndCache, @@ -1472,25 +1472,25 @@ cachingLevelForMetaName = { "x_gaussian_red_masses": CachingLevel.ForwardAndCache, "x_gaussian_normal_modes": CachingLevel.Cache, "x_gaussian_normal_mode_values": CachingLevel.ForwardAndCache, - "x_gaussian_atomic_masses": CachingLevel.ForwardAndCache, + "x_gaussian_atomic_masses": CachingLevel.ForwardAndCache, "x_gaussian_section_force_constant_matrix": CachingLevel.Forward, "x_gaussian_force_constant_values": CachingLevel.ForwardAndCache, "x_gaussian_force_constants": CachingLevel.Cache, "section_eigenvalues": CachingLevel.Forward, - "eigenvalues_values": CachingLevel.ForwardAndCache, + "eigenvalues_values": CachingLevel.ForwardAndCache, "eigenvalues_occupation": CachingLevel.ForwardAndCache, "x_gaussian_section_orbital_symmetries": CachingLevel.Forward, "x_gaussian_alpha_occ_symmetry_values":CachingLevel.Cache, "x_gaussian_alpha_vir_symmetry_values":CachingLevel.Cache, "x_gaussian_beta_occ_symmetry_values":CachingLevel.Cache, - "x_gaussian_beta_vir_symmetry_values":CachingLevel.Cache, + "x_gaussian_beta_vir_symmetry_values":CachingLevel.Cache, "x_gaussian_alpha_symmetries": CachingLevel.ForwardAndCache, "x_gaussian_beta_symmetries": CachingLevel.ForwardAndCache, "x_gaussian_section_molecular_multipoles": CachingLevel.Forward, "dipole_moment_x": CachingLevel.Cache, "dipole_moment_y": CachingLevel.Cache, "dipole_moment_z": CachingLevel.Cache, - "quadrupole_moment_xx": CachingLevel.Cache, + "quadrupole_moment_xx": CachingLevel.Cache, "quadrupole_moment_yy": CachingLevel.Cache, "quadrupole_moment_zz": CachingLevel.Cache, "quadrupole_moment_xy": CachingLevel.Cache, @@ -1520,7 +1520,7 @@ cachingLevelForMetaName = { "hexadecapole_moment_yyzz": CachingLevel.Cache, "hexadecapole_moment_xxyz": CachingLevel.Cache, "hexadecapole_moment_yyxz": CachingLevel.Cache, - "hexadecapole_moment_zzxy": CachingLevel.Cache, + "hexadecapole_moment_zzxy": CachingLevel.Cache, "x_gaussian_molecular_multipole_values": CachingLevel.ForwardAndCache, "single_configuration_calculation_converged": CachingLevel.ForwardAndCache, "x_gaussian_single_configuration_calculation_converged": CachingLevel.ForwardAndCache, @@ -1531,7 +1531,7 @@ cachingLevelForMetaName = { "section_method": CachingLevel.Forward, "x_gaussian_section_elstruc_method": CachingLevel.Forward, "x_gaussian_electronic_structure_method": CachingLevel.ForwardAndCache, - "XC_functional_name": CachingLevel.ForwardAndCache, + "XC_functional_name": CachingLevel.ForwardAndCache, "basis_set_atom_centered_short_name": CachingLevel.Forward, "x_gaussian_settings": CachingLevel.Cache, "x_gaussian_settings_corrected": CachingLevel.ForwardAndCache,