From f74c5d5ef4cf9ae570365eaa2aaef2c997f7db93 Mon Sep 17 00:00:00 2001 From: ndaelman-hu <107392603+ndaelman-hu@users.noreply.github.com> Date: Mon, 19 Feb 2024 16:03:45 +0100 Subject: [PATCH] Ruff format code (#199) * Apply Ruff to cp2k parser * Update metainfo * Ruff autoformat all parser --------- Co-authored-by: nathan.daelman@physik.hu-berlin.de --- electronicparsers/abacus/metainfo/abacus.py | 548 +- electronicparsers/abacus/parser.py | 2018 +- electronicparsers/abinit/metainfo/abinit.py | 557 +- .../abinit/metainfo/abinit_autogenerated.py | 5439 +- electronicparsers/abinit/parser.py | 1318 +- electronicparsers/ams/metainfo/ams.py | 523 +- electronicparsers/ams/parser.py | 2204 +- electronicparsers/ams/rkf.py | 155 +- electronicparsers/atk/metainfo/atk.py | 36 +- electronicparsers/atk/parser.py | 219 +- electronicparsers/bigdft/parser.py | 134 +- electronicparsers/castep/metainfo/castep.py | 1603 +- electronicparsers/charmm/metainfo/charmm.py | 1219 +- electronicparsers/charmm/parser.py | 31 +- electronicparsers/cp2k/metainfo/cp2k.py | 40861 ++++++++++------ .../cp2k/metainfo/cp2k_general.py | 637 +- electronicparsers/cp2k/parser.py | 1796 +- electronicparsers/cpmd/metainfo/cpmd.py | 5982 ++- .../cpmd/metainfo/cpmd_general.py | 613 +- electronicparsers/cpmd/parser.py | 609 +- electronicparsers/crystal/metainfo/crystal.py | 364 +- electronicparsers/crystal/parser.py | 1397 +- electronicparsers/dmol3/metainfo/dmol3.py | 406 +- electronicparsers/dmol3/parser.py | 790 +- electronicparsers/edmft/metainfo/edmft.py | 45 +- electronicparsers/edmft/parser.py | 576 +- electronicparsers/elk/metainfo/elk.py | 540 +- electronicparsers/elk/parser.py | 464 +- .../exciting/metainfo/exciting.py | 1983 +- .../fhiaims/metainfo/fhi_aims.py | 1059 +- electronicparsers/fleur/metainfo/fleur.py | 391 +- electronicparsers/fleur/parser.py | 992 +- electronicparsers/fplo/metainfo/fplo.py | 81 +- .../fplo/metainfo/fplo_input_autogenerated.py | 1771 +- .../fplo/metainfo/fplo_temporaries.py | 186 +- electronicparsers/fplo/parser.py | 17 +- electronicparsers/gamess/metainfo/gamess.py | 543 +- electronicparsers/gamess/parser.py | 1237 +- .../gaussian/metainfo/gaussian.py | 1234 +- electronicparsers/gaussian/parser.py | 1620 +- electronicparsers/gpaw/metainfo/gpaw.py | 133 +- electronicparsers/gpaw/parser.py | 494 +- electronicparsers/magres/metainfo/magres.py | 15 +- electronicparsers/molcas/metainfo/molcas.py | 83 +- electronicparsers/molcas/parser.py | 24 +- electronicparsers/mopac/metainfo/mopac.py | 40 +- electronicparsers/mopac/parser.py | 229 +- electronicparsers/nwchem/metainfo/nwchem.py | 298 +- electronicparsers/nwchem/parser.py | 680 +- electronicparsers/ocean/metainfo/ocean.py | 274 +- electronicparsers/octopus/metainfo/octopus.py | 34 +- .../octopus/metainfo/octopus_autogenerated.py | 8256 ++-- electronicparsers/octopus/parser.py | 1020 +- electronicparsers/onetep/metainfo/onetep.py | 2230 +- electronicparsers/onetep/parser.py | 627 +- electronicparsers/openmx/metainfo/openmx.py | 4 +- electronicparsers/openmx/parser.py | 7 +- electronicparsers/orca/metainfo/orca.py | 1010 +- electronicparsers/orca/parser.py | 1648 +- electronicparsers/psi4/metainfo/psi4.py | 227 +- electronicparsers/psi4/parser.py | 1440 +- electronicparsers/qball/parser.py | 54 +- electronicparsers/qbox/metainfo/qbox.py | 317 +- electronicparsers/qbox/parser.py | 547 +- .../metainfo/quantum_espresso.py | 2087 +- electronicparsers/quantumespresso/parser.py | 18 +- electronicparsers/siesta/metainfo/siesta.py | 75 +- .../siesta/metainfo/siesta_autogenerated.py | 2597 +- electronicparsers/siesta/parser.py | 580 +- .../soliddmft/metainfo/soliddmft.py | 161 +- electronicparsers/soliddmft/parser.py | 469 +- .../tbstudio/metainfo/tbstudio.py | 15 +- electronicparsers/tbstudio/parser.py | 220 +- .../turbomole/metainfo/turbomole.py | 468 +- electronicparsers/turbomole/parser.py | 1517 +- electronicparsers/vasp/metainfo/vasp.py | 93 +- .../vasp/metainfo/vasp_incars.py | 2477 +- .../vasp/metainfo/vasp_incarsOut.py | 2475 +- .../vasp/metainfo/vasp_incarsUnknown.py | 41 +- .../w2dynamics/metainfo/w2dynamics.py | 906 +- electronicparsers/w2dynamics/parser.py | 475 +- .../wannier90/metainfo/wannier90.py | 17 +- electronicparsers/wien2k/metainfo/wien2k.py | 510 +- electronicparsers/wien2k/parser.py | 1037 +- electronicparsers/yambo/metainfo/yambo.py | 373 +- electronicparsers/yambo/parser.py | 819 +- tests/conftest.py | 3 +- tests/dos_integrator.py | 10 +- tests/test_abacusparser.py | 166 +- tests/test_abinitparser.py | 72 +- tests/test_amsparser.py | 278 +- tests/test_atkparser.py | 10 +- tests/test_bigdftparser.py | 20 +- tests/test_castepparser.py | 97 +- tests/test_charmmparser.py | 12 +- tests/test_cp2kparser.py | 159 +- tests/test_cpmdparser.py | 51 +- tests/test_crystalparser.py | 50 +- tests/test_dmol3parser.py | 44 +- tests/test_edmftparser.py | 56 +- tests/test_elkparser.py | 84 +- tests/test_excitingparser.py | 216 +- tests/test_fhiaimsparser.py | 198 +- tests/test_fleurparser.py | 98 +- tests/test_fploparser.py | 10 +- tests/test_gamessparser.py | 50 +- tests/test_gaussianparser.py | 81 +- tests/test_gpawparser.py | 34 +- tests/test_molcasparser.py | 10 +- tests/test_mopacparser.py | 54 +- tests/test_nwchemparser.py | 32 +- tests/test_oceanparser.py | 24 +- tests/test_octopusparser.py | 20 +- tests/test_onetepparser.py | 78 +- tests/test_openmxparser.py | 95 +- tests/test_orcaparser.py | 44 +- tests/test_psi4parser.py | 141 +- tests/test_qballparser.py | 2 +- tests/test_qboxparser.py | 44 +- tests/test_quantumespressoparser.py | 91 +- tests/test_siestaparser.py | 46 +- tests/test_soliddmftparser.py | 87 +- tests/test_tbstudioparser.py | 33 +- tests/test_turbomoleparser.py | 80 +- tests/test_vaspparser.py | 239 +- tests/test_w2dynamicsparser.py | 67 +- tests/test_wannier90parser.py | 33 +- tests/test_wien2kparser.py | 32 +- tests/test_yamboparser.py | 130 +- 129 files changed, 73226 insertions(+), 49274 deletions(-) diff --git a/electronicparsers/abacus/metainfo/abacus.py b/electronicparsers/abacus/metainfo/abacus.py index db9ba1fc..e2587dd1 100644 --- a/electronicparsers/abacus/metainfo/abacus.py +++ b/electronicparsers/abacus/metainfo/abacus.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -31,590 +38,658 @@ class x_abacus_input_settings(MCategory): - ''' + """ Parameters of INPUT. - ''' + """ m_def = Category() class x_abacus_exx_settings(MCategory): - ''' + """ Parameters are relevant when using hybrid functionals. - ''' + """ m_def = Category() class x_abacus_section_parallel(MSection): - ''' + """ section for run-time parallization options of ABACUS - ''' + """ m_def = Section(validate=False) x_abacus_nproc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of processors - ''') + """, + ) x_abacus_kpar = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Devide all processors into kpar groups, and k points will be distributed among each group. - ''') + """, + ) x_abacus_bndpar = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Devide all processors into bndpar groups, and bands (only stochastic orbitals now) will be distributed among each group - ''') + """, + ) x_abacus_diago_proc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" If set to a positive number, then it specifies the number of threads used for carrying out diagonalization. - ''') + """, + ) x_abacus_allocation_method = Quantity( type=str, shape=[], - description=''' + description=""" The algorithms of dividing the H&S matrix - ''') + """, + ) x_abacus_allocation_nb2d = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_allocation_trace_loc_row = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_allocation_trace_loc_col = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_allocation_nloc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_abacus_section_specie_basis_set(MSection): - ''' + """ definition of each basis set - ''' + """ m_def = Section(validate=False) x_abacus_specie_basis_set_filename = Quantity( type=str, shape=[], - description=''' + description=""" Filename of basis set - ''') + """, + ) x_abacus_specie_basis_set_ln = Quantity( type=np.dtype(np.int32), - shape=['x_abacus_specie_basis_set_number_of_orbitals', 2], - description=''' + shape=["x_abacus_specie_basis_set_number_of_orbitals", 2], + description=""" - - ''') + """, + ) x_abacus_specie_basis_set_rmesh = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_specie_basis_set_rcutoff = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_specie_basis_set_number_of_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class BasisSet(runschema.method.BasisSet): - ''' + """ section for numerical atomic orbitals of ABACUS - ''' + """ m_def = Section(validate=False, extends_base_section=True) x_abacus_basis_sets_delta_k = Quantity( type=np.dtype(np.float64), - unit='1/bohr', + unit="1/bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_basis_sets_delta_r = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_basis_sets_dr_uniform = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_basis_sets_rmax = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_section_specie_basis_set = SubSection( - sub_section=SectionProxy('x_abacus_section_specie_basis_set'), - repeats=True,) + sub_section=SectionProxy("x_abacus_section_specie_basis_set"), + repeats=True, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_abacus_init_velocities = Quantity( type=bool, shape=[], - description=''' + description=""" Initialize velocities? - ''', - categories=[x_abacus_input_settings]) + """, + categories=[x_abacus_input_settings], + ) x_abacus_longest_orb_rcut = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_longest_nonlocal_projector_rcut = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_searching_radius = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_searching_radius_unit = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_read_space_grid = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_abacus_big_cell_numbers_in_grid = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_abacus_meshcell_numbers_in_big_cell = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_abacus_extended_fft_grid = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_abacus_extended_fft_grid_dim = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_abacus_input_filename = Quantity( type=str, shape=[], - description=''' + description=""" Filename input was read from - ''',) + """, + ) x_abacus_program_execution_time = Quantity( type=np.dtype(np.float64), - unit='seconds', + unit="seconds", shape=[], - description=''' + description=""" The duration of the program execution - ''',) + """, + ) x_abacus_stru_filename = Quantity( type=str, shape=[], - description=''' + description=""" Directory where initial atom_positions and lattice_vectors were read from - ''') + """, + ) x_abacus_kpt_filename = Quantity( type=str, shape=[], - description=''' + description=""" Directory where k-points were read from - ''') + """, + ) x_abacus_basis_set_dirname = Quantity( type=str, shape=[], - description=''' + description=""" Directory where basis set were read from - ''') + """, + ) x_abacus_pseudopotential_dirname = Quantity( type=str, shape=[], - description=''' + description=""" Directory where pseudopotential were read from - ''') + """, + ) x_abacus_section_parallel = SubSection( - sub_section=SectionProxy('x_abacus_section_parallel'), - repeats=True,) + sub_section=SectionProxy("x_abacus_section_parallel"), + repeats=True, + ) x_abacus_md_nstep_in = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The target total number of md steps. - ''', - categories=[x_abacus_input_settings]) + """, + categories=[x_abacus_input_settings], + ) x_abacus_md_nstep_out = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The actual total number of md steps. - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_abacus_initial_magnetization_total = Quantity( type=np.dtype(np.float64), - unit='bohr_magneton', + unit="bohr_magneton", shape=[], - description=''' + description=""" Initial total magnetization of the system set in INPUT. - ''') + """, + ) x_abacus_diagonalization_algorithm = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm used in subspace diagonalization - ''') + """, + ) x_abacus_dispersion_correction_method = Quantity( type=str, shape=[], - description=''' + description=""" Calculation includes semi-empirical DFT-D dispersion correction - ''') + """, + ) x_abacus_basis_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of basis sets - ''') + """, + ) x_abacus_spin_orbit = Quantity( type=bool, shape=[], - description=''' + description=""" Spin-orbit coupling flag: with/without spin-orbit - ''') + """, + ) x_abacus_noncollinear = Quantity( type=bool, shape=[], - description=''' + description=""" Noncollinear spin mode - ''') + """, + ) x_abacus_mixing_method = Quantity( type=str, shape=[], - description=''' + description=""" Charge mixing methods - ''') + """, + ) x_abacus_mixing_beta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mixing method: parameter beta - ''') + """, + ) x_abacus_gamma_algorithms = Quantity( type=bool, shape=[], - description=''' + description=""" Usage of gamma-only optimized algorithms - ''') + """, + ) x_abacus_scf_threshold_density = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The density threshold for electronic iteration - ''') + """, + ) x_abacus_xc_functional = Quantity( type=str, shape=[], - description=''' + description=""" Type of exchange-correlation functional used in calculation. - ''', - categories=[x_abacus_input_settings]) + """, + categories=[x_abacus_input_settings], + ) x_abacus_pao_radial_cutoff = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" Radial cut-off of pseudo atomic orbital - ''',) + """, + ) x_abacus_hse_omega = Quantity( type=np.dtype(np.float64), - unit='1 / meter', + unit="1 / meter", shape=[], - description=''' + description=""" HSE omega - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_hybrid_xc_coeff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mixing parameter of hybrid functionals - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_number_of_pw_for_wavefunction = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_number_of_sticks_for_wavefunction = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_number_of_pw_for_density = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_number_of_sticks_for_density = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_exx_ccp_rmesh_times = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_exx_dm_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smaller values of the density matrix can be truncated to accelerate calculation. - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_exx_cauchy_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Using Cauchy-Schwartz inequality to find an upper bound of each Fock exchange matrix element before carrying out explicit evaluations - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_exx_schwarz_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Using Cauchy-Schwartz inequality to find an upper bound of each four-center integral element before carrying out explicit evaluations - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_exx_c_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smaller components of the C matrix is neglected to accelerate calculation - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_exx_v_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smaller components of the V matrix is neglected to accelerate calculation - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) x_abacus_exx_pca_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The size of basis of auxiliary basis functions is reduced using principal component analysis. - ''', - categories=[x_abacus_input_settings, x_abacus_exx_settings]) + """, + categories=[x_abacus_input_settings, x_abacus_exx_settings], + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_abacus_alat = Quantity( type=np.dtype(np.float64), - unit='bohr', + unit="bohr", shape=[], - description=''' + description=""" Lattice Parameter 'a', constant during a run and used as unit in other quantities - ''') + """, + ) x_abacus_reciprocal_vectors = Quantity( type=np.dtype(np.float64), shape=[3, 3], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" The reciprocal cell - ''',) + """, + ) x_abacus_celldm = Quantity( type=np.dtype(np.float64), shape=[6], - description=''' + description=""" Cell [a, b, c, alpha, beta, gamma], length a, b and c are in unit Angstrom - ''') + """, + ) x_abacus_ibrav = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Bravais lattice index, constant during a run - ''') + """, + ) x_abacus_number_of_electrons_out = Quantity( type=np.dtype(np.int32), - shape=['x_abacus_number_of_species'], - description=''' + shape=["x_abacus_number_of_species"], + description=""" This denotes number of electrons of each element in the system calculated by ABACUS - ''') + """, + ) x_abacus_total_number_of_electrons_in = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This denotes total number of electrons set in INPUT - ''') + """, + ) x_abacus_number_of_species = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This denotes total number of species in the system - ''') + """, + ) x_abacus_cell_volume = Quantity( type=np.dtype(np.float64), - unit='bohr**3', + unit="bohr**3", shape=[], - description=''' + description=""" Volume of unit cell - ''',) + """, + ) x_abacus_atom_magnetic_moments = Quantity( type=np.dtype(np.float64), - unit='bohr_magneton', - shape=['number_of_atoms', 3], - description=''' + unit="bohr_magneton", + shape=["number_of_atoms", 3], + description=""" The start magnetization for each atom - ''',) + """, + ) class Symmetry(runschema.system.Symmetry): @@ -623,37 +698,42 @@ class Symmetry(runschema.system.Symmetry): x_abacus_ibrav = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Bravais lattice index, constant during a run - ''') + """, + ) x_abacus_point_group_schoenflies_name = Quantity( type=str, shape=[], - description=''' + description=""" The Schoenflies name of the point group - ''') + """, + ) x_abacus_number_of_rotation_matrices = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_number_of_point_group_operations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_abacus_number_of_space_group_operations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class AtomParameters(runschema.method.AtomParameters): @@ -662,87 +742,95 @@ class AtomParameters(runschema.method.AtomParameters): x_abacus_pp_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of pseudopotential, e.g. 'NC' or 'US' - ''',) + """, + ) x_abacus_pp_xc = Quantity( type=str, shape=[], - description=''' + description=""" Exchange-correlation functional of pseudopotential, e.g. 'PBE' or 'PZ' - ''',) + """, + ) x_abacus_pp_lmax = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum angular momentum component in pseudopotential - ''',) + """, + ) x_abacus_pp_nzeta = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of wavefunctions in pseudopotential - ''',) + """, + ) x_abacus_pp_nprojectors = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of projectors in pseudopotential - ''',) + """, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_abacus_density_change_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Stores the change of charge density with respect to the previous self-consistent field (SCF) iteration. - ''') + """, + ) x_abacus_energy_total_harris_foulkes_estimate = Quantity( type=np.dtype(np.float64), - unit='joule', + unit="joule", shape=[], - description=''' + description=""" Stores the change of charge density with respect to the previous self-consistent field (SCF) iteration. - ''') + """, + ) x_abacus_magnetization_total = Quantity( type=np.dtype(np.float64), - unit='bohr_magneton', + unit="bohr_magneton", shape=[3], - description=''' + description=""" Total per-cell magnetization - ''',) + """, + ) x_abacus_magnetization_absolute = Quantity( type=np.dtype(np.float64), - unit='bohr_magneton', + unit="bohr_magneton", shape=[], - description=''' + description=""" Absolute per-cell magnetization - ''',) + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - m_def = Section(validate=False, extends_base_section=True) x_abacus_eigenvalues_number_of_planewaves = Quantity( type=np.dtype(np.int32), - shape=['number_of_eigenvalues_kpoints'], - description=''' + shape=["number_of_eigenvalues_kpoints"], + description=""" Number of plane waves for each k-point - ''',) + """, + ) m_package.__init_metainfo__() diff --git a/electronicparsers/abacus/parser.py b/electronicparsers/abacus/parser.py index 85884fdb..49a65d8a 100644 --- a/electronicparsers/abacus/parser.py +++ b/electronicparsers/abacus/parser.py @@ -29,21 +29,50 @@ from nomad.parsing.file_parser import TextParser, Quantity, DataTextParser from runschema.run import Run, Program, TimeRun from runschema.method import ( - AtomParameters, Method, BasisSet, BasisSetContainer, Electronic, Smearing, Scf, - DFT, XCFunctional, Functional, KMesh) + AtomParameters, + Method, + BasisSet, + BasisSetContainer, + Electronic, + Smearing, + Scf, + DFT, + XCFunctional, + Functional, + KMesh, +) from runschema.system import System, Atoms, Symmetry from runschema.calculation import ( - Calculation, Energy, Dos, DosValues, BandStructure, BandEnergies, EnergyEntry, ScfIteration, - Forces, ForcesEntry, Stress, StressEntry) + Calculation, + Energy, + Dos, + DosValues, + BandStructure, + BandEnergies, + EnergyEntry, + ScfIteration, + Forces, + ForcesEntry, + Stress, + StressEntry, +) from simulationworkflowschema import ( - GeometryOptimization, MolecularDynamics, MolecularDynamicsMethod, GeometryOptimizationMethod, - SinglePoint, SinglePointMethod) + GeometryOptimization, + MolecularDynamics, + MolecularDynamicsMethod, + GeometryOptimizationMethod, + SinglePoint, + SinglePointMethod, +) from .metainfo.abacus import ( - Method as xsection_method, x_abacus_section_parallel, x_abacus_section_specie_basis_set) + Method as xsection_method, + x_abacus_section_parallel, + x_abacus_section_specie_basis_set, +) # TODO determine if we can update regex to the following -re_float = r'[-+]?\d+\.*\d*(?:[Ee][-+]\d+)?' +re_float = r"[-+]?\d+\.*\d*(?:[Ee][-+]\d+)?" class ABACUSInputParser(TextParser): @@ -51,136 +80,139 @@ def __init__(self): super().__init__(None) def init_quantities(self): - self._quantities = [ Quantity( - 'stru_filename', - r'\n *stru_file\s*(\S+)', repeats=False, - ), - Quantity( - 'kpt_filename', - r'\n *kpoint_file\s*(\S+)', repeats=False, - ), - Quantity( - 'basis_type', - r'\n *basis_type\s*(\w+)', repeats=False, - ), - Quantity( - 'x_abacus_init_velocities', - r'\n *init_vel\s*(\d+)', repeats=False, dtype=bool - ), - Quantity( - 'xc', - r'\n *dft_functional\s*(\w+)', repeats=False, - ), - Quantity( - 'kpar', - r'\n *kpar\s*(\d+)', repeats=False - ), - Quantity( - 'bndpar', - r'\n *bndpar\s*(\d+)', repeats=False - ), - Quantity( - 'diago_proc', - r'\n *diago_proc\s*(\d+)', repeats=False - ), - Quantity( - 'scf_max_iteration', - r'\n *scf_nmax\s*(\d+)', repeats=False + "stru_filename", + r"\n *stru_file\s*(\S+)", + repeats=False, ), Quantity( - 'nelec', - r'\n *nelec\s*(\d+)', repeats=False + "kpt_filename", + r"\n *kpoint_file\s*(\S+)", + repeats=False, ), Quantity( - 'md_type', - r'\n *md_type\s*(\d+)', repeats=False + "basis_type", + r"\n *basis_type\s*(\w+)", + repeats=False, ), Quantity( - 'md_nstep', - r'\n *md_nstep\s*(\d+)', repeats=False + "x_abacus_init_velocities", + r"\n *init_vel\s*(\d+)", + repeats=False, + dtype=bool, ), Quantity( - 'occupations', - r'\n *occupations\s*(\w+)', repeats=False, + "xc", + r"\n *dft_functional\s*(\w+)", + repeats=False, ), + Quantity("kpar", r"\n *kpar\s*(\d+)", repeats=False), + Quantity("bndpar", r"\n *bndpar\s*(\d+)", repeats=False), + Quantity("diago_proc", r"\n *diago_proc\s*(\d+)", repeats=False), + Quantity("scf_max_iteration", r"\n *scf_nmax\s*(\d+)", repeats=False), + Quantity("nelec", r"\n *nelec\s*(\d+)", repeats=False), + Quantity("md_type", r"\n *md_type\s*(\d+)", repeats=False), + Quantity("md_nstep", r"\n *md_nstep\s*(\d+)", repeats=False), Quantity( - 'smearing_method', - r'\n *smearing_method\s*(\w+)', repeats=False, + "occupations", + r"\n *occupations\s*(\w+)", + repeats=False, ), Quantity( - 'smearing_width', - rf'\n *smearing_sigma\s*({re_float})', repeats=False, unit='rydberg' + "smearing_method", + r"\n *smearing_method\s*(\w+)", + repeats=False, ), Quantity( - 'dft_plus_u', - r'\n *dft_plus_u\s*(\d)', repeats=False, dtype=bool + "smearing_width", + rf"\n *smearing_sigma\s*({re_float})", + repeats=False, + unit="rydberg", ), + Quantity("dft_plus_u", r"\n *dft_plus_u\s*(\d)", repeats=False, dtype=bool), Quantity( xsection_method.x_abacus_mixing_method, - rf'\n *mixing_type\s*(\S+)', repeats=False + rf"\n *mixing_type\s*(\S+)", + repeats=False, ), Quantity( xsection_method.x_abacus_mixing_beta, - rf'\n *mixing_beta\s*({re_float})', repeats=False + rf"\n *mixing_beta\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_diagonalization_algorithm, - rf'\n *ks_solver\s*(\w+)', repeats=False + rf"\n *ks_solver\s*(\w+)", + repeats=False, ), Quantity( xsection_method.x_abacus_dispersion_correction_method, - r'\n *vdw_method\s*(\S+)', repeats=False, + r"\n *vdw_method\s*(\S+)", + repeats=False, ), Quantity( xsection_method.x_abacus_gamma_algorithms, - rf'\n *gamma_only\s*(\d)', repeats=False, dtype=bool + rf"\n *gamma_only\s*(\d)", + repeats=False, + dtype=bool, ), Quantity( xsection_method.x_abacus_scf_threshold_density, - rf'\n *scf_thr\s*({re_float})', repeats=False + rf"\n *scf_thr\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_initial_magnetization_total, - rf'\n *tot_magnetization\s*({re_float})', repeats=False + rf"\n *tot_magnetization\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_hse_omega, - rf'\n *exx_hse_omega\s*({re_float})', repeats=False, unit='1/bohr' + rf"\n *exx_hse_omega\s*({re_float})", + repeats=False, + unit="1/bohr", ), Quantity( xsection_method.x_abacus_hybrid_xc_coeff, - rf'\n *exx_hybrid_alpha\s*({re_float})', repeats=False + rf"\n *exx_hybrid_alpha\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_ccp_rmesh_times, - rf'\n *exx_ccp_rmesh_times\s*({re_float})', repeats=False + rf"\n *exx_ccp_rmesh_times\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_dm_threshold, - rf'\n *exx_dm_threshold\s*({re_float})', repeats=False + rf"\n *exx_dm_threshold\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_cauchy_threshold, - rf'\n *exx_cauchy_threshold\s*({re_float})', repeats=False + rf"\n *exx_cauchy_threshold\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_schwarz_threshold, - rf'\n *exx_schwarz_threshold\s*({re_float})', repeats=False + rf"\n *exx_schwarz_threshold\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_c_threshold, - rf'\n *exx_c_threshold\s*({re_float})', repeats=False + rf"\n *exx_c_threshold\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_v_threshold, - rf'\n *exx_v_threshold\s*({re_float})', repeats=False + rf"\n *exx_v_threshold\s*({re_float})", + repeats=False, ), Quantity( xsection_method.x_abacus_exx_pca_threshold, - rf'\n *exx_pca_threshold\s*({re_float})', repeats=False - ) + rf"\n *exx_pca_threshold\s*({re_float})", + repeats=False, + ), ] @@ -191,27 +223,26 @@ def __init__(self): def init_quantities(self): def str_to_sites(val_in): data = dict() - val = [v.strip().split() for v in val_in.split('\n')][0] + val = [v.strip().split() for v in val_in.split("\n")][0] if len(val) == 5: labels, x, y, z, mag = val elif len(val) == 8: labels, x, y, z, mag, vx, vy, vz = val - data['velocities'] = np.array( - [vx, vy, vz], dtype=float) - data['labels'] = labels - data['positions'] = np.array([x, y, z], dtype=float) - data['magnetic_moments'] = float(mag) + data["velocities"] = np.array([vx, vy, vz], dtype=float) + data["labels"] = labels + data["positions"] = np.array([x, y, z], dtype=float) + data["magnetic_moments"] = float(mag) return data def str_to_coordclass(val_in): - if val_in == 'DIRECT': - name = 'direct' - elif val_in == 'CARTESIAN': - name = 'cartesian' + if val_in == "DIRECT": + name = "direct" + elif val_in == "CARTESIAN": + name = "cartesian" return name def str_to_matrix(val_in): - val = [v.strip().split() for v in val_in.split('\n')] + val = [v.strip().split() for v in val_in.split("\n")] return np.reshape(val, (3, 3)).astype(float) def str_to_dict(val_in): @@ -221,8 +252,15 @@ def str_to_dict(val_in): return data def str_to_kpoints(val_in): - lines = re.search( - rf'KPOINTS\s*DIRECT_X\s*DIRECT_Y\s*DIRECT_Z\s*WEIGHT([\s\S]+?)DONE', val_in).group(1).strip().split('\n') + lines = ( + re.search( + rf"KPOINTS\s*DIRECT_X\s*DIRECT_Y\s*DIRECT_Z\s*WEIGHT([\s\S]+?)DONE", + val_in, + ) + .group(1) + .strip() + .split("\n") + ) data = [] for line in lines: data.append(line.strip().split()[1:5]) @@ -233,843 +271,1011 @@ def str_to_kpoints(val_in): return kpoints, weights def str_to_sticks(val_in): - Data = namedtuple('PW', ['proc', 'columns', 'pw']) + Data = namedtuple("PW", ["proc", "columns", "pw"]) val = re.findall( - rf'\s+({re_float})\s+({re_float})\s+({re_float})\n', val_in) + rf"\s+({re_float})\s+({re_float})\s+({re_float})\n", val_in + ) data = [] for v in val: - data.append( - Data(proc=int(v[0]), columns=int(v[1]), pw=int(v[2]))) + data.append(Data(proc=int(v[0]), columns=int(v[1]), pw=int(v[2]))) return data def str_to_orbital(val_in): Data = namedtuple( - 'Orbital', ['index', 'l', 'n', 'nr', 'dr', 'rcut', 'check_unit', 'new_unit']) + "Orbital", + ["index", "l", "n", "nr", "dr", "rcut", "check_unit", "new_unit"], + ) val = re.findall( - rf'\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\n', val_in) + rf"\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\n", + val_in, + ) data = [] for v in val: - data.append(Data(index=int(v[0]), l=int(v[1]), n=int(v[2]), nr=int(v[3]), dr=float( - v[4]), rcut=float(v[5]), check_unit=float(v[6]), new_unit=float(v[7]))) + data.append( + Data( + index=int(v[0]), + l=int(v[1]), + n=int(v[2]), + nr=int(v[3]), + dr=float(v[4]), + rcut=float(v[5]), + check_unit=float(v[6]), + new_unit=float(v[7]), + ) + ) return data def str_to_energy_occupation(val_in): def extract_data(val_in, nks): State = namedtuple( - 'State', ['kpoint', 'energies', 'occupations', 'npws']) + "State", ["kpoint", "energies", "occupations", "npws"] + ) data = [] for i in range(nks): kx, ky, kz, npws = re.search( - rf'{i+1}/{nks} kpoint \(Cartesian\)\s*=\s*({re_float})\s*({re_float})\s*({re_float})\s*\((\d+)\s*pws\)', val_in).groups() + rf"{i+1}/{nks} kpoint \(Cartesian\)\s*=\s*({re_float})\s*({re_float})\s*({re_float})\s*\((\d+)\s*pws\)", + val_in, + ).groups() # TODO pylinit error, unbalanced-tuple-unpacking - res = np.array(list(map(lambda x: x.strip().split(), re.search( - rf'{i+1}/{nks} kpoint \(Cartesian\)\s*=.*\n([\s\S]+?)\n\n', val_in).group(1).split('\n'))), dtype=float) + res = np.array( + list( + map( + lambda x: x.strip().split(), + re.search( + rf"{i+1}/{nks} kpoint \(Cartesian\)\s*=.*\n([\s\S]+?)\n\n", + val_in, + ) + .group(1) + .split("\n"), + ) + ), + dtype=float, + ) energies = res[:, 1] occupations = res[:, 2] - state = State(kpoint=np.array([kx, ky, kz], dtype=float), energies=energies.astype( - float), occupations=occupations.astype(float), npws=int(npws)) + state = State( + kpoint=np.array([kx, ky, kz], dtype=float), + energies=energies.astype(float), + occupations=occupations.astype(float), + npws=int(npws), + ) data.append(state) return data - nspin = int(re.search( - r'STATE ENERGY\(eV\) AND OCCUPATIONS\s*NSPIN\s*==\s*(\d+)', val_in).group(1)) - nks = int( - re.search(r'\d+/(\d+) kpoint \(Cartesian\)', val_in).group(1)) + nspin = int( + re.search( + r"STATE ENERGY\(eV\) AND OCCUPATIONS\s*NSPIN\s*==\s*(\d+)", val_in + ).group(1) + ) + nks = int(re.search(r"\d+/(\d+) kpoint \(Cartesian\)", val_in).group(1)) data = dict() if nspin in [1, 4]: - data['up'] = extract_data(val_in, nks) + data["up"] = extract_data(val_in, nks) elif nspin == 2: - val_up = re.search( - r'SPIN UP :([\s\S]+?)\n\nSPIN', val_in).group() - data['up'] = extract_data(val_up, nks) + val_up = re.search(r"SPIN UP :([\s\S]+?)\n\nSPIN", val_in).group() + data["up"] = extract_data(val_up, nks) val_dw = re.search( - r'SPIN DOWN :([\s\S]+?)(?:\n\n\s*EFERMI|\n\n\n)', val_in).group() - data['down'] = extract_data(val_dw, nks) + r"SPIN DOWN :([\s\S]+?)(?:\n\n\s*EFERMI|\n\n\n)", val_in + ).group() + data["down"] = extract_data(val_dw, nks) return data def str_to_bandstructure(val_in): def extract_data(val_in, nks): - State = namedtuple('State', ['kpoint', 'energies']) + State = namedtuple("State", ["kpoint", "energies"]) data = [] for i in range(nks): kx, ky, kz = re.search( - rf'k\-points{i+1}\(\d+\):\s*({re_float})\s*({re_float})\s*({re_float})', val_in).groups() - res = np.array(list(map(lambda x: x.strip().split(), re.search( - rf'k\-points{i+1}\(\d+\):.*\n([\s\S]+?)\n\n', val_in).group(1).split('\n')))) + rf"k\-points{i+1}\(\d+\):\s*({re_float})\s*({re_float})\s*({re_float})", + val_in, + ).groups() + res = np.array( + list( + map( + lambda x: x.strip().split(), + re.search( + rf"k\-points{i+1}\(\d+\):.*\n([\s\S]+?)\n\n", val_in + ) + .group(1) + .split("\n"), + ) + ) + ) energies = res[:, 2] # TODO check this error - state = State(kpoint=np.array( - [kx, ky, kz], dtype=float), energies=energies.astype(float)) + state = State( + kpoint=np.array([kx, ky, kz], dtype=float), + energies=energies.astype(float), + ) data.append(state) return data - nks = int(re.search(r'k\-points\d+\((\d+)\)', val_in).group(1)) + nks = int(re.search(r"k\-points\d+\((\d+)\)", val_in).group(1)) data = dict() - if re.search('spin up', val_in) and re.search('spin down', val_in): - val = re.search(r'spin up :\n([\s\S]+?)\n\n\n', val_in).group() + if re.search("spin up", val_in) and re.search("spin down", val_in): + val = re.search(r"spin up :\n([\s\S]+?)\n\n\n", val_in).group() val_new = extract_data(val, nks) - data['up'] = val_new[:int(nks / 2)] - data['down'] = val_new[int(nks / 2):] + data["up"] = val_new[: int(nks / 2)] + data["down"] = val_new[int(nks / 2) :] else: - data['up'] = extract_data(val_in, nks) + data["up"] = extract_data(val_in, nks) return data def str_to_force(val_in): data = [] - val = [v.strip().split() for v in val_in.split('\n')] + val = [v.strip().split() for v in val_in.split("\n")] for v in val: data.append(np.array(v[1:], dtype=float)) return np.array(data) * ureg.eV / ureg.angstrom def str_to_polarization(val_in): - P = namedtuple('P', ['value', 'mod', 'vector']) + P = namedtuple("P", ["value", "mod", "vector"]) data = np.array(val_in.split(), dtype=float) - unit = ureg.C / ureg.meter ** 2 + unit = ureg.C / ureg.meter**2 return P(value=data[0] * unit, mod=data[1], vector=data[2:] * unit) atom_quantities = [ + Quantity("label", r"atom label\s*=\s*(\w+)"), + Quantity("orbital", r"L=\d+, number of zeta\s*=\s*(\d+)", repeats=True), Quantity( - 'label', r'atom label\s*=\s*(\w+)' + "natoms", + r"number of atom for this type\s*=\s*(\d+)", ), Quantity( - 'orbital', r'L=\d+, number of zeta\s*=\s*(\d+)', repeats=True + "start_magnetization", + r"start magnetization\s*=\s*(\w+)", + repeats=True, + str_operation=lambda x: x == "TRUE", ), Quantity( - 'natoms', r'number of atom for this type\s*=\s*(\d+)', + "noncollinear_magnetization", + rf"noncollinear magnetization_x\s*=\s*({re_float})\n\s*noncollinear magnetization_y\s*=\s*({re_float})\n\s*noncollinear magnetization_z\s*=\s*({re_float})\n\s*", + dtype=float, ), - Quantity( - 'start_magnetization', r'start magnetization\s*=\s*(\w+)', repeats=True, - str_operation=lambda x: x == 'TRUE' - ), - Quantity( - 'noncollinear_magnetization', - rf'noncollinear magnetization_x\s*=\s*({re_float})\n\s*noncollinear magnetization_y\s*=\s*({re_float})\n\s*noncollinear magnetization_z\s*=\s*({re_float})\n\s*', - dtype=float - ) ] structure_quantities = [ Quantity( - 'sites', rf'tau[cd]_([a-zA-Z]+)\d+\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})', - repeats=True, str_operation=str_to_sites + "sites", + rf"tau[cd]_([a-zA-Z]+)\d+\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})", + repeats=True, + str_operation=str_to_sites, ), Quantity( - 'sites', rf'tau[cd]_([a-zA-Z]+)\d+\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})', - repeats=True, str_operation=str_to_sites + "sites", + rf"tau[cd]_([a-zA-Z]+)\d+\s+({re_float})\s+({re_float})\s+({re_float})\s+({re_float})", + repeats=True, + str_operation=str_to_sites, ), Quantity( - 'units', rf'UNIT = ({re_float}) Bohr', - dtype=float, repeats=False, unit='bohr' + "units", + rf"UNIT = ({re_float}) Bohr", + dtype=float, + repeats=False, + unit="bohr", ), Quantity( - 'coord_class', r'(DIRECT) COORDINATES|(CARTESIAN) COORDINATES', - repeat=False, str_operation=str_to_coordclass - ) + "coord_class", + r"(DIRECT) COORDINATES|(CARTESIAN) COORDINATES", + repeat=False, + str_operation=str_to_coordclass, + ), ] symmetry_quantities = [ Quantity( - 'lattice_vectors', - rf'LATTICE VECTORS: \(CARTESIAN COORDINATE: IN UNIT OF A0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n', - str_operation=str_to_matrix, convert=False, repeats=False, - ), - Quantity( - 'right_hand_lattice', - r'right hand lattice\s*=\s*(\d+)' - ), - Quantity( - 'norm_a', - rf'NORM_A\s*=\s*({re_float})', - ), - Quantity( - 'norm_b', - rf'NORM_B\s*=\s*({re_float})', - ), - Quantity( - 'norm_c', - rf'NORM_C\s*=\s*({re_float})', - ), - Quantity( - 'alpha', - rf'ALPHA\s*\(DEGREE\)\s*=\s*({re_float})' - ), - Quantity( - 'beta', - rf'BETA\s*\(DEGREE\)\s*=\s*({re_float})' - ), - Quantity( - 'gamma', - rf'GAMMA\s*\(DEGREE\)\s*=\s*({re_float})' + "lattice_vectors", + rf"LATTICE VECTORS: \(CARTESIAN COORDINATE: IN UNIT OF A0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n", + str_operation=str_to_matrix, + convert=False, + repeats=False, ), + Quantity("right_hand_lattice", r"right hand lattice\s*=\s*(\d+)"), Quantity( - 'bravais_name', - r'BRAVAIS LATTICE NAME\s*=\s*([.\w\(\)\- ]+)' + "norm_a", + rf"NORM_A\s*=\s*({re_float})", ), Quantity( - 'ibrav', - r'IBRAV\s*=\s*([\w ]+)', dtype=int + "norm_b", + rf"NORM_B\s*=\s*({re_float})", ), Quantity( - 'number_of_rotation_matrices', - r'ROTATION MATRICES\s*=\s*(\d+)' + "norm_c", + rf"NORM_C\s*=\s*({re_float})", ), + Quantity("alpha", rf"ALPHA\s*\(DEGREE\)\s*=\s*({re_float})"), + Quantity("beta", rf"BETA\s*\(DEGREE\)\s*=\s*({re_float})"), + Quantity("gamma", rf"GAMMA\s*\(DEGREE\)\s*=\s*({re_float})"), + Quantity("bravais_name", r"BRAVAIS LATTICE NAME\s*=\s*([.\w\(\)\- ]+)"), + Quantity("ibrav", r"IBRAV\s*=\s*([\w ]+)", dtype=int), + Quantity("number_of_rotation_matrices", r"ROTATION MATRICES\s*=\s*(\d+)"), Quantity( - 'number_of_point_group_operations', - r'PURE POINT GROUP OPERATIONS\s*=\s*(\d+)' + "number_of_point_group_operations", + r"PURE POINT GROUP OPERATIONS\s*=\s*(\d+)", ), Quantity( - 'number_of_space_group_operations', - r'SPACE GROUP OPERATIONS\s*=\s*(\d+)' + "number_of_space_group_operations", + r"SPACE GROUP OPERATIONS\s*=\s*(\d+)", ), - Quantity( - 'point_group', - r'POINT GROUP\s*=\s*([\w\_]+)', convert=False - ) + Quantity("point_group", r"POINT GROUP\s*=\s*([\w\_]+)", convert=False), ] orbital_quantities = [ Quantity( - 'delta_k', - rf'delta k\s*\(1/Bohr\)\s*=\s*({re_float})', unit='1/bohr', dtype=float + "delta_k", + rf"delta k\s*\(1/Bohr\)\s*=\s*({re_float})", + unit="1/bohr", + dtype=float, ), Quantity( - 'delta_r', - rf'delta r\s*\(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float + "delta_r", + rf"delta r\s*\(Bohr\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, ), Quantity( - 'dr_uniform', - rf'dr_uniform\s*\(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float + "dr_uniform", + rf"dr_uniform\s*\(Bohr\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, ), Quantity( - 'rmax', - rf'rmax\s*\(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float + "rmax", rf"rmax\s*\(Bohr\)\s*=\s*({re_float})", unit="bohr", dtype=float ), + Quantity("kmesh", rf"kmesh\s*=\s*(\d+)", dtype=int), Quantity( - 'kmesh', - rf'kmesh\s*=\s*(\d+)', dtype=int + "orbital_information", + r"ORBITAL\s*L\s*N\s*nr\s*dr\s*RCUT\s*CHECK_UNIT\s*NEW_UNIT\n([\s\S]+)SET NONLOCAL PSEUDOPOTENTIAL PROJECTORS", + convert=False, + str_operation=str_to_orbital, + repeats=True, ), - Quantity( - 'orbital_information', - r'ORBITAL\s*L\s*N\s*nr\s*dr\s*RCUT\s*CHECK_UNIT\s*NEW_UNIT\n([\s\S]+)SET NONLOCAL PSEUDOPOTENTIAL PROJECTORS', - convert=False, str_operation=str_to_orbital, repeats=True - ) ] header_quantities = [ + Quantity("number_of_species", r"ntype\s*=\s*(\d+)", dtype=int), Quantity( - 'number_of_species', - r'ntype\s*=\s*(\d+)', dtype=int - ), - Quantity( - 'alat', - rf'lattice constant \(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float - ), - Quantity( - 'atom_labels', r'atom label\s*=\s*(\w+)', repeats=True - ), - Quantity( - 'number_of_atoms_for_labels', r'number of atom for this type\s*=\s*(\d+)', repeats=True - ), - Quantity( - 'atom_data', - r'READING ATOM TYPE\s*\d+([\s\S]+?)\n\n', repeats=True, - sub_parser=TextParser(quantities=atom_quantities), convert=False - ), - Quantity( - 'number_of_atoms', - r'TOTAL ATOM NUMBER\s*=\s*(\d+)', dtype=int - ), - Quantity( - 'positions', - rf'(CARTESIAN COORDINATES \( UNIT = {re_float} Bohr \)\.+\n\s*atom\s*x\s*y\s*z\s*mag(\s*vx\s*vy\s*vz\s*|\s*)\n[\s\S]+?)\n\n|(DIRECT COORDINATES\n\s*atom\s*x\s*y\s*z\s*mag(\s*vx\s*vy\s*vz\s*|\s*)\n[\s\S]+?)\n\n', - sub_parser=TextParser(quantities=structure_quantities), convert=False, repeats=False, + "alat", + rf"lattice constant \(Bohr\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, ), + Quantity("atom_labels", r"atom label\s*=\s*(\w+)", repeats=True), Quantity( - 'orbital_files', - r'orbital file:\s*(\S+)', repeats=True + "number_of_atoms_for_labels", + r"number of atom for this type\s*=\s*(\d+)", + repeats=True, ), Quantity( - 'cell_volume', - rf'Volume \(Bohr\^3\)\s*=\s*({re_float})', unit='bohr**3', dtype=float + "atom_data", + r"READING ATOM TYPE\s*\d+([\s\S]+?)\n\n", + repeats=True, + sub_parser=TextParser(quantities=atom_quantities), + convert=False, ), + Quantity("number_of_atoms", r"TOTAL ATOM NUMBER\s*=\s*(\d+)", dtype=int), Quantity( - 'units', - r'Lattice vectors: \(Cartesian coordinate: in unit of (\w+)\)' + "positions", + rf"(CARTESIAN COORDINATES \( UNIT = {re_float} Bohr \)\.+\n\s*atom\s*x\s*y\s*z\s*mag(\s*vx\s*vy\s*vz\s*|\s*)\n[\s\S]+?)\n\n|(DIRECT COORDINATES\n\s*atom\s*x\s*y\s*z\s*mag(\s*vx\s*vy\s*vz\s*|\s*)\n[\s\S]+?)\n\n", + sub_parser=TextParser(quantities=structure_quantities), + convert=False, + repeats=False, ), + Quantity("orbital_files", r"orbital file:\s*(\S+)", repeats=True), Quantity( - 'lattice_vectors', - rf'Lattice vectors: \(Cartesian coordinate: in unit of a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n', - str_operation=str_to_matrix, convert=False, repeats=False, + "cell_volume", + rf"Volume \(Bohr\^3\)\s*=\s*({re_float})", + unit="bohr**3", + dtype=float, ), Quantity( - 'reciprocal_units', - r'Reciprocal vectors: \(Cartesian coordinate: in unit of ([\w\/ ]+)\)', flatten=False + "units", r"Lattice vectors: \(Cartesian coordinate: in unit of (\w+)\)" ), Quantity( - 'reciprocal_vectors', - rf'Reciprocal vectors: \(Cartesian coordinate: in unit of 2 pi/a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n', - str_operation=str_to_matrix, convert=False, repeats=False, + "lattice_vectors", + rf"Lattice vectors: \(Cartesian coordinate: in unit of a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n", + str_operation=str_to_matrix, + convert=False, + repeats=False, ), Quantity( - 'pseudopotential', - r'(Read in pseudopotential file is [\s\S]+?\n\n)', repeats=True, - sub_parser=TextParser(quantities=[ - Quantity('filename', r'file is\s*(\S+)'), - Quantity( - 'type', r'pseudopotential type\s*=\s*(\w+)', flatten=False), - Quantity( - 'xc', r'exchange-correlation functional\s*=\s*(\w+)', flatten=False), - Quantity( - 'valence', rf'valence electrons\s*=\s*({re_float})'), - Quantity('lmax', rf'lmax\s*=\s*({re_float})'), - Quantity('nzeta', - rf'number of zeta\s*=\s*({re_float})', dtype=int), - Quantity('nprojectors', - rf'number of projectors\s*=\s*({re_float})', dtype=int) - ] - ) + "reciprocal_units", + r"Reciprocal vectors: \(Cartesian coordinate: in unit of ([\w\/ ]+)\)", + flatten=False, ), Quantity( - 'fermi_energy_in', - rf'read in fermi energy\s*=\s*({re_float})', dtype=float, repeats=True + "reciprocal_vectors", + rf"Reciprocal vectors: \(Cartesian coordinate: in unit of 2 pi/a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n", + str_operation=str_to_matrix, + convert=False, + repeats=False, ), - Quantity(xsection_method.x_abacus_pao_radial_cutoff, - rf'PAO radial cut off \(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float, repeats=False), Quantity( - 'number_of_electrons_out', - rf'total electron number of element \w+\s*=\s*(\d+)', repeats=True + "pseudopotential", + r"(Read in pseudopotential file is [\s\S]+?\n\n)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("filename", r"file is\s*(\S+)"), + Quantity( + "type", r"pseudopotential type\s*=\s*(\w+)", flatten=False + ), + Quantity( + "xc", + r"exchange-correlation functional\s*=\s*(\w+)", + flatten=False, + ), + Quantity("valence", rf"valence electrons\s*=\s*({re_float})"), + Quantity("lmax", rf"lmax\s*=\s*({re_float})"), + Quantity( + "nzeta", rf"number of zeta\s*=\s*({re_float})", dtype=int + ), + Quantity( + "nprojectors", + rf"number of projectors\s*=\s*({re_float})", + dtype=int, + ), + ] + ), ), Quantity( - 'occupied_bands', - rf'occupied bands\s*=\s*({re_float})' + "fermi_energy_in", + rf"read in fermi energy\s*=\s*({re_float})", + dtype=float, + repeats=True, ), - Quantity('nlocal', rf'NLOCAL\s*=\s*({re_float})', repeats=False), Quantity( - 'nbands', - rf'NBANDS\s*=\s*({re_float})', repeats=False + xsection_method.x_abacus_pao_radial_cutoff, + rf"PAO radial cut off \(Bohr\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, + repeats=False, ), Quantity( - 'symmetry', - r'(LATTICE VECTORS: \(CARTESIAN COORDINATE: IN UNIT OF A0\)\s*[\s\S]+?)\n\n', repeats=False, - sub_parser=TextParser(quantities=symmetry_quantities) + "number_of_electrons_out", + rf"total electron number of element \w+\s*=\s*(\d+)", + repeats=True, ), + Quantity("occupied_bands", rf"occupied bands\s*=\s*({re_float})"), + Quantity("nlocal", rf"NLOCAL\s*=\s*({re_float})", repeats=False), + Quantity("nbands", rf"NBANDS\s*=\s*({re_float})", repeats=False), Quantity( - 'number_of_spin_channels', - r'nspin\s*=\s*(\d+)', dtype=int, repeats=False + "symmetry", + r"(LATTICE VECTORS: \(CARTESIAN COORDINATE: IN UNIT OF A0\)\s*[\s\S]+?)\n\n", + repeats=False, + sub_parser=TextParser(quantities=symmetry_quantities), ), Quantity( - 'ksampling_method', - r'Input type of k points\s*=\s*([\w\-\(\) ]+)', str_operation=lambda x:x + "number_of_spin_channels", + r"nspin\s*=\s*(\d+)", + dtype=int, + repeats=False, ), Quantity( - 'nkstot', - r'nkstot\s*=\s*(\d+)', dtype=int + "ksampling_method", + r"Input type of k points\s*=\s*([\w\-\(\) ]+)", + str_operation=lambda x: x, ), + Quantity("nkstot", r"nkstot\s*=\s*(\d+)", dtype=int), + Quantity("nkstot_ibz", r"nkstot_ibz\s*=\s*(\d+)", dtype=int), Quantity( - 'nkstot_ibz', - r'nkstot_ibz\s*=\s*(\d+)', dtype=int - ), - Quantity( - 'k_points', - r'minimum distributed K point number\s*=\s*\d+([\s\S]+?DONE : INIT K-POINTS Time)', + "k_points", + r"minimum distributed K point number\s*=\s*\d+([\s\S]+?DONE : INIT K-POINTS Time)", str_operation=str_to_kpoints, ), Quantity( - 'density_cutoff', - rf'energy cutoff for charge/potential \(unit:Ry\)\s*=\s*({re_float})', unit='rydberg', dtype=float + "density_cutoff", + rf"energy cutoff for charge/potential \(unit:Ry\)\s*=\s*({re_float})", + unit="rydberg", + dtype=float, ), Quantity( - 'density_fft_grid', - r'\[fft grid for charge/potential\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*' + "density_fft_grid", + r"\[fft grid for charge/potential\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", ), Quantity( - 'fft_grid_division', - r'\[fft grid division\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*' + "fft_grid_division", + r"\[fft grid division\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", ), + Quantity("nbxx", r"nbxx\s*=\s*(\d+)"), + Quantity("nrxx", r"nrxx\s*=\s*(\d+)"), Quantity( - 'nbxx', - r'nbxx\s*=\s*(\d+)' + "number_of_pw_for_density", + r"SETUP PLANE WAVES FOR CHARGE/POTENTIAL\n\s*number of plane waves\s*=\s*(\d+)", ), Quantity( - 'nrxx', - r'nrxx\s*=\s*(\d+)' + "number_of_sticks_for_density", + r"SETUP PLANE WAVES FOR CHARGE/POTENTIAL\n.*\n\s*number of sticks\s*=\s*(\d+)\n", ), Quantity( - 'number_of_pw_for_density', - r'SETUP PLANE WAVES FOR CHARGE/POTENTIAL\n\s*number of plane waves\s*=\s*(\d+)' + "parallel_pw_for_density", + r"PARALLEL PW FOR CHARGE/POTENTIAL\n\s*PROC\s*COLUMNS\(POT\)\s*PW\n([\s\S]+?)\-+", + str_operation=str_to_sticks, + convert=False, ), + Quantity("number_of_g", r"number of \|g\|\s*=\s*(\d+)"), + Quantity("max_g", rf"max \|g\|\s*=\s*({re_float})"), + Quantity("min_g", rf"min \|g\|\s*=\s*({re_float})"), Quantity( - 'number_of_sticks_for_density', - r'SETUP PLANE WAVES FOR CHARGE/POTENTIAL\n.*\n\s*number of sticks\s*=\s*(\d+)\n' + "wavefunction_cutoff", + rf"energy cutoff for wavefunc \(unit:Ry\)\s*=\s*({re_float})", + unit="rydberg", + dtype=float, ), Quantity( - 'parallel_pw_for_density', - r'PARALLEL PW FOR CHARGE/POTENTIAL\n\s*PROC\s*COLUMNS\(POT\)\s*PW\n([\s\S]+?)\-+', - str_operation=str_to_sticks, convert=False + "wavefunction_fft_grid", + r"\[fft grid for wave functions\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", ), Quantity( - 'number_of_g', - r'number of \|g\|\s*=\s*(\d+)' + "number_of_pw_for_wavefunction", + r"SETUP PLANE WAVES FOR WAVE FUNCTIONS\n[\s\S]+\s*number of plane waves\s*=\s*(\d+)", ), Quantity( - 'max_g', - rf'max \|g\|\s*=\s*({re_float})' + "number_of_sticks_for_wavefunction", + r"SETUP PLANE WAVES FOR WAVE FUNCTIONS\n[\s\S]+\s*number of sticks\s*=\s*(\d+)\n", ), Quantity( - 'min_g', - rf'min \|g\|\s*=\s*({re_float})' + "parallel_pw_for_wavefunction", + r"PARALLEL PW FOR WAVE FUNCTIONS\n\s*PROC\s*COLUMNS\(W\)\s*PW\n([\s\S]+?)\-+", + str_operation=str_to_sticks, + convert=False, ), + Quantity("number_of_total_pw", r"number of total plane waves\s*=\s*(\d+)"), Quantity( - 'wavefunction_cutoff', - rf'energy cutoff for wavefunc \(unit:Ry\)\s*=\s*({re_float})', unit='rydberg', dtype=float + "total_number_of_nlocal_projectors", + r"TOTAL NUMBER OF NONLOCAL PROJECTORS\s*=\s*(\d+)", ), + Quantity("init_chg", rf"init_chg\s*=\s*(\w+)"), Quantity( - 'wavefunction_fft_grid', - r'\[fft grid for wave functions\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*' + "max_mesh_in_pp", rf"max mesh points in Pseudopotential\s*=\s*(\d+)" ), Quantity( - 'number_of_pw_for_wavefunction', - r'SETUP PLANE WAVES FOR WAVE FUNCTIONS\n[\s\S]+\s*number of plane waves\s*=\s*(\d+)' + "dq", rf"dq\(describe PAO in reciprocal space\)\s*=\s*({re_float})" ), + Quantity("max_q", rf"max q\s*=\s*({re_float})"), Quantity( - 'number_of_sticks_for_wavefunction', - r'SETUP PLANE WAVES FOR WAVE FUNCTIONS\n[\s\S]+\s*number of sticks\s*=\s*(\d+)\n' + "number_of_pseudo_ao", + r"number of pseudo atomic orbitals for (\w+) is (\d+)", + repeats=True, + str_operation=str_to_dict, + convert=False, ), Quantity( - 'parallel_pw_for_wavefunction', - r'PARALLEL PW FOR WAVE FUNCTIONS\n\s*PROC\s*COLUMNS\(W\)\s*PW\n([\s\S]+?)\-+', - str_operation=str_to_sticks, convert=False + "orbital_settings", + r"SETUP ONE DIMENSIONAL ORBITALS/POTENTIAL\s*([\s\S]+?)SETUP THE TWO-CENTER INTEGRATION TABLES", + sub_parser=TextParser(quantities=orbital_quantities), + convert=False, ), Quantity( - 'number_of_total_pw', - r'number of total plane waves\s*=\s*(\d+)' - ), - Quantity( - 'total_number_of_nlocal_projectors', - r'TOTAL NUMBER OF NONLOCAL PROJECTORS\s*=\s*(\d+)' - ), - Quantity( - 'init_chg', - rf'init_chg\s*=\s*(\w+)' - ), - Quantity( - 'max_mesh_in_pp', - rf'max mesh points in Pseudopotential\s*=\s*(\d+)' - ), - Quantity( - 'dq', - rf'dq\(describe PAO in reciprocal space\)\s*=\s*({re_float})' - ), - Quantity( - 'max_q', - rf'max q\s*=\s*({re_float})' - ), - Quantity( - 'number_of_pseudo_ao', - r'number of pseudo atomic orbitals for (\w+) is (\d+)', repeats=True, - str_operation=str_to_dict, convert=False - ), - Quantity( - 'orbital_settings', - r'SETUP ONE DIMENSIONAL ORBITALS/POTENTIAL\s*([\s\S]+?)SETUP THE TWO-CENTER INTEGRATION TABLES', - sub_parser=TextParser(quantities=orbital_quantities), convert=False - ), - Quantity( - 'allocation_method', - r'divide the H&S matrix using ([\w ]+ algorithms\.\n[\s\S]+?)\n\n', - sub_parser=TextParser(quantities=[ - Quantity( - 'method', r'([\w ]+) algorithms', dtype=str, str_operation=lambda x:x - ), - Quantity( - 'nb2d', r'nb2d\s*=\s*(\d+)', dtype=int - ), - Quantity( - 'trace_loc_row', r'trace_loc_row dimension\s*=\s*(\d+)', dtype=int - ), - Quantity( - 'trace_loc_col', r'trace_loc_row dimension\s*=\s*(\d+)', dtype=int - ), - Quantity( - 'nloc', r'nloc\s*=\s*(\d+)', dtype=int - ), - ]) + "allocation_method", + r"divide the H&S matrix using ([\w ]+ algorithms\.\n[\s\S]+?)\n\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "method", + r"([\w ]+) algorithms", + dtype=str, + str_operation=lambda x: x, + ), + Quantity("nb2d", r"nb2d\s*=\s*(\d+)", dtype=int), + Quantity( + "trace_loc_row", + r"trace_loc_row dimension\s*=\s*(\d+)", + dtype=int, + ), + Quantity( + "trace_loc_col", + r"trace_loc_row dimension\s*=\s*(\d+)", + dtype=int, + ), + Quantity("nloc", r"nloc\s*=\s*(\d+)", dtype=int), + ] + ), ), ] search_quantities = [ Quantity( - 'search_adjacent_atoms', - r'SETUP SEARCHING RADIUS FOR PROGRAM TO SEARCH ADJACENT ATOMS\s*([\s\S]+?)\n\n', - sub_parser=TextParser(quantities=[ - Quantity('longest_orb_rcut', - rf'longest orb rcut \(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float), - Quantity('longest_nonlocal_projector_rcut', - rf'longest nonlocal projector rcut \(Bohr\)\s*=\s*({re_float})', unit='bohr', dtype=float), - Quantity('searching_radius', - rf'searching radius is \(Bohr\)\)\s*=\s*({re_float})', unit='bohr', dtype=float), - Quantity('searching_radius_unit', - rf'searching radius unit is \(Bohr\)\)\s*=\s*({re_float})', unit='bohr', dtype=float), - ] - ) + "search_adjacent_atoms", + r"SETUP SEARCHING RADIUS FOR PROGRAM TO SEARCH ADJACENT ATOMS\s*([\s\S]+?)\n\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "longest_orb_rcut", + rf"longest orb rcut \(Bohr\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, + ), + Quantity( + "longest_nonlocal_projector_rcut", + rf"longest nonlocal projector rcut \(Bohr\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, + ), + Quantity( + "searching_radius", + rf"searching radius is \(Bohr\)\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, + ), + Quantity( + "searching_radius_unit", + rf"searching radius unit is \(Bohr\)\)\s*=\s*({re_float})", + unit="bohr", + dtype=float, + ), + ] + ), + ), + Quantity( + "grid_integration", + r"SETUP EXTENDED REAL SPACE GRID FOR GRID INTEGRATION\s*([\s\S]+?)\n\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "read_space_grid", + r"\[real space grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", + ), + Quantity( + "big_cell_numbers_in_grid", + r"\[big cell numbers in grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", + ), + Quantity( + "meshcell_numbers_in_big_cell", + r"\[meshcell numbers in big cell\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", + ), + Quantity( + "extended_fft_grid", + r"\[extended fft grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", + ), + Quantity( + "extended_fft_grid_dim", + r"\[dimension of extened grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*", + ), + Quantity( + "atom_number", + r"Atom number in sub-FFT-grid\s*=\s*(\d+)", + dtype=int, + ), + Quantity( + "local_orbitals_number", + r"Local orbitals number in sub-FFT-grid\s*=\s*(\d+)", + dtype=int, + ), + Quantity("nnr", r"ParaV\.nnr\s*=\s*(\d+)", dtype=int), + Quantity("nnrg", r"nnrg\s*=\s*(\d+)", dtype=int), + Quantity("nnrg_last", r"nnrg_last\s*=\s*(\d+)", dtype=int), + Quantity("nnrg_now", r"nnrg_now\s*=\s*(\d+)", dtype=int), + Quantity("lgd_last", r"nnrg_now\s*=\s*(\d+)", dtype=int), + Quantity("lgd_now", r"nnrg_now\s*=\s*(\d+)", dtype=int), + ] + ), ), - Quantity( - 'grid_integration', - r'SETUP EXTENDED REAL SPACE GRID FOR GRID INTEGRATION\s*([\s\S]+?)\n\n', - sub_parser=TextParser(quantities=[ - Quantity('read_space_grid', - r'\[real space grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*'), - Quantity('big_cell_numbers_in_grid', - r'\[big cell numbers in grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*'), - Quantity('meshcell_numbers_in_big_cell', - r'\[meshcell numbers in big cell\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*'), - Quantity('extended_fft_grid', - r'\[extended fft grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*'), - Quantity('extended_fft_grid_dim', - r'\[dimension of extened grid\]\s*=\s*(\d+)[,\s]*(\d+)[,\s]*(\d+)[,\s]*'), - Quantity('atom_number', - r'Atom number in sub-FFT-grid\s*=\s*(\d+)', dtype=int), - Quantity('local_orbitals_number', - r'Local orbitals number in sub-FFT-grid\s*=\s*(\d+)', dtype=int), - Quantity('nnr', r'ParaV\.nnr\s*=\s*(\d+)', dtype=int), - Quantity('nnrg', r'nnrg\s*=\s*(\d+)', dtype=int), - Quantity('nnrg_last', r'nnrg_last\s*=\s*(\d+)', dtype=int), - Quantity('nnrg_now', r'nnrg_now\s*=\s*(\d+)', dtype=int), - Quantity('lgd_last', r'nnrg_now\s*=\s*(\d+)', dtype=int), - Quantity('lgd_now', r'nnrg_now\s*=\s*(\d+)', dtype=int), - ] - ) - ) ] calculation_quantities = [ Quantity( - 'energy_occupation', - r'(STATE ENERGY\(eV\) AND OCCUPATIONS\s*NSPIN\s*==\s*\d+[\s\S]+?(?:\n\n\s*EFERMI|\n\n\n))', repeats=False, - str_operation=str_to_energy_occupation, convert=False + "energy_occupation", + r"(STATE ENERGY\(eV\) AND OCCUPATIONS\s*NSPIN\s*==\s*\d+[\s\S]+?(?:\n\n\s*EFERMI|\n\n\n))", + repeats=False, + str_operation=str_to_energy_occupation, + convert=False, ), Quantity( - 'reference_fermi', - rf'EFERMI\s*=\s*({re_float})\s*eV', unit='eV', dtype=float + "reference_fermi", + rf"EFERMI\s*=\s*({re_float})\s*eV", + unit="eV", + dtype=float, ), Quantity( - 'total', - rf'\s*final etot is\s*({re_float})\s*eV', unit='eV', dtype=float + "total", + rf"\s*final etot is\s*({re_float})\s*eV", + unit="eV", + dtype=float, ), Quantity( - 'forces', - r'TOTAL\-FORCE\s*\(eV/Angstrom\)\n\n.*\s*atom\s*x\s*y\s*z\n([\s\S]+?)\n\n', - str_operation=str_to_force, convert=False + "forces", + r"TOTAL\-FORCE\s*\(eV/Angstrom\)\n\n.*\s*atom\s*x\s*y\s*z\n([\s\S]+?)\n\n", + str_operation=str_to_force, + convert=False, ), Quantity( - 'stress', - rf'(?:TOTAL\-|MD\s*)STRESS\s*\(KBAR\)\n\n.*\n\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n', - str_operation=str_to_matrix, unit='kilobar', convert=False + "stress", + rf"(?:TOTAL\-|MD\s*)STRESS\s*\(KBAR\)\n\n.*\n\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n", + str_operation=str_to_matrix, + unit="kilobar", + convert=False, ), Quantity( - 'pressure', - rf'TOTAL\-PRESSURE:\s*({re_float})\s*KBAR', unit='kilobar', dtype=float + "pressure", + rf"TOTAL\-PRESSURE:\s*({re_float})\s*KBAR", + unit="kilobar", + dtype=float, ), Quantity( - 'positions', - rf'(CARTESIAN COORDINATES \( UNIT = {re_float} Bohr \)\.+\n\s*atom\s*x\s*y\s*z\s*mag\s*vx\s*vy\s*vz\s*\n[\s\S]+?)\n\n|(DIRECT COORDINATES\n\s*atom\s*x\s*y\s*z\s*mag\s*vx\s*vy\s*vz\s*\n[\s\S]+?)\n\n', - sub_parser=TextParser(quantities=structure_quantities), convert=False, + "positions", + rf"(CARTESIAN COORDINATES \( UNIT = {re_float} Bohr \)\.+\n\s*atom\s*x\s*y\s*z\s*mag\s*vx\s*vy\s*vz\s*\n[\s\S]+?)\n\n|(DIRECT COORDINATES\n\s*atom\s*x\s*y\s*z\s*mag\s*vx\s*vy\s*vz\s*\n[\s\S]+?)\n\n", + sub_parser=TextParser(quantities=structure_quantities), + convert=False, ), Quantity( - 'cell_volume', - rf'Volume \(Bohr\^3\)\s*=\s*({re_float})', unit='bohr**3', dtype=float + "cell_volume", + rf"Volume \(Bohr\^3\)\s*=\s*({re_float})", + unit="bohr**3", + dtype=float, ), Quantity( - 'units', - r'Lattice vectors: \(Cartesian coordinate: in unit of (\w+)\)' + "units", r"Lattice vectors: \(Cartesian coordinate: in unit of (\w+)\)" ), Quantity( - 'lattice_vectors', - rf'Lattice vectors: \(Cartesian coordinate: in unit of a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n', - str_operation=str_to_matrix, convert=False, repeats=False, + "lattice_vectors", + rf"Lattice vectors: \(Cartesian coordinate: in unit of a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n", + str_operation=str_to_matrix, + convert=False, + repeats=False, ), Quantity( - 'reciprocal_units', - r'Reciprocal vectors: \(Cartesian coordinate: in unit of ([\w\/ ]+)\)', flatten=False + "reciprocal_units", + r"Reciprocal vectors: \(Cartesian coordinate: in unit of ([\w\/ ]+)\)", + flatten=False, ), Quantity( - 'reciprocal_vectors', - rf'Reciprocal vectors: \(Cartesian coordinate: in unit of 2 pi/a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n', - str_operation=str_to_matrix, convert=False, repeats=False, + "reciprocal_vectors", + rf"Reciprocal vectors: \(Cartesian coordinate: in unit of 2 pi/a_0\)\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n\s*({re_float})\s*({re_float})\s*({re_float})\n", + str_operation=str_to_matrix, + convert=False, + repeats=False, ), Quantity( - 'k_points', - r'minimum distributed K point number\s*=\s*\d+([\s\S]+?DONE : INIT K-POINTS Time)', + "k_points", + r"minimum distributed K point number\s*=\s*\d+([\s\S]+?DONE : INIT K-POINTS Time)", str_operation=str_to_kpoints, - ) + ), ] + search_quantities scf_quantities = [ Quantity( - 'iteration', - rf'(ELEC\s*=\s*[+\d]+\s*\-+[\s\S]+?\s*E_Fermi\s*{re_float}\s*{re_float})\n', repeats=True, - sub_parser=TextParser(quantities=[ - Quantity( - 'elec_step', r'ELEC\s*=\s*[+]?(\d+)', dtype=int - ), - Quantity( - 'density_error', rf'Density error is\s*({re_float})', dtype=float - ), - Quantity( - 'energy_total_scf_iteration', rf'E_KohnSham\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'x_abacus_energy_total_harris_foulkes_estimate', rf'E_Harris\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_fermi', rf'E_Fermi\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_band', rf'E_band\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_one_elec', rf'E_one_elec\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'correction_hartree', rf'E_Hartree\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'XC_functional', rf'E_xc\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_ewald', rf'E_ewald\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_demet', rf'E_demet\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_descf', rf'E_descf\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_efield', rf'E_efield\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'hartree_fock_X_scaled', rf'E_exx\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'e_vdw', rf'E_vdwD\d+\s*{re_float}\s*({re_float})', dtype=float, unit='eV' - ), - Quantity( - 'magnetization_total', - rf'total magnetism \(Bohr mag/cell\)\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float, unit='bohr_magneton' - ), - Quantity( - 'magnetization_absolute', - rf'absolute magnetism \(Bohr mag/cell\)\s*=\s*({re_float})', - dtype=float, unit='bohr_magneton' - ), - ] - ) + "iteration", + rf"(ELEC\s*=\s*[+\d]+\s*\-+[\s\S]+?\s*E_Fermi\s*{re_float}\s*{re_float})\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("elec_step", r"ELEC\s*=\s*[+]?(\d+)", dtype=int), + Quantity( + "density_error", + rf"Density error is\s*({re_float})", + dtype=float, + ), + Quantity( + "energy_total_scf_iteration", + rf"E_KohnSham\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "x_abacus_energy_total_harris_foulkes_estimate", + rf"E_Harris\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_fermi", + rf"E_Fermi\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_band", + rf"E_band\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_one_elec", + rf"E_one_elec\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "correction_hartree", + rf"E_Hartree\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "XC_functional", + rf"E_xc\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_ewald", + rf"E_ewald\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_demet", + rf"E_demet\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_descf", + rf"E_descf\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_efield", + rf"E_efield\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "hartree_fock_X_scaled", + rf"E_exx\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "e_vdw", + rf"E_vdwD\d+\s*{re_float}\s*({re_float})", + dtype=float, + unit="eV", + ), + Quantity( + "magnetization_total", + rf"total magnetism \(Bohr mag/cell\)\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + unit="bohr_magneton", + ), + Quantity( + "magnetization_absolute", + rf"absolute magnetism \(Bohr mag/cell\)\s*=\s*({re_float})", + dtype=float, + unit="bohr_magneton", + ), + ] + ), ) ] + calculation_quantities nscf_quantities = [ Quantity( - 'band_structure', - r'(band eigenvalue in this processor \(eV\)\s*:\n[\s\S]+?\n\n\n)', - str_operation=str_to_bandstructure, convert=False + "band_structure", + r"(band eigenvalue in this processor \(eV\)\s*:\n[\s\S]+?\n\n\n)", + str_operation=str_to_bandstructure, + convert=False, ), Quantity( - 'min_state_energy', - rf'min state energy (eV)\s*=\s*({re_float})', unit='eV', dtype=float, repeats=True + "min_state_energy", + rf"min state energy (eV)\s*=\s*({re_float})", + unit="eV", + dtype=float, + repeats=True, ), Quantity( - 'max_state_energy', - rf'max state energy (eV)\s*=\s*({re_float})', unit='eV', dtype=float, repeats=True + "max_state_energy", + rf"max state energy (eV)\s*=\s*({re_float})", + unit="eV", + dtype=float, + repeats=True, ), Quantity( - 'delta_energy', - rf'delta energy interval (eV)\s*=\s*({re_float})', unit='eV', dtype=float, repeats=True + "delta_energy", + rf"delta energy interval (eV)\s*=\s*({re_float})", + unit="eV", + dtype=float, + repeats=True, ), Quantity( - 'nbands', - rf'number of bands\s*=\s*(\d+)', dtype=int, repeats=True + "nbands", rf"number of bands\s*=\s*(\d+)", dtype=int, repeats=True ), Quantity( - 'sum_bands', - rf'sum up the states\s*=\s*(\d+)', dtype=int, repeats=True + "sum_bands", rf"sum up the states\s*=\s*(\d+)", dtype=int, repeats=True ), Quantity( - 'fermi_energy_dos', - rf'Fermi energy (?:\(spin = \d+\)\s*|\s*)is\s*({re_float})\s*Rydberg', dtype=float, repeats=False + "fermi_energy_dos", + rf"Fermi energy (?:\(spin = \d+\)\s*|\s*)is\s*({re_float})\s*Rydberg", + dtype=float, + repeats=False, ), + Quantity("ionic_phase", rf"The Ionic Phase:\s*({re_float})", dtype=float), Quantity( - 'ionic_phase', - rf'The Ionic Phase:\s*({re_float})', dtype=float + "electronic_phase", rf"Electronic Phase:\s*({re_float})", dtype=float ), Quantity( - 'electronic_phase', - rf'Electronic Phase:\s*({re_float})', dtype=float + "polarization", + r"(The calculated polarization direction is in \w+ direction[\s\S]+?C/m\^2)", + sub_parser=TextParser( + quantities=[ + Quantity( + "direction", + r"The calculated polarization direction is in (\w+) direction", + ), + Quantity( + "P", + rf"P\s*=\s*({re_float})\s*\(mod\s*({re_float})\)\s*\(\s*({re_float}),\s*({re_float}),\s*({re_float})\)\s*C/m\^2", + str_operation=str_to_polarization, + convert=False, + ), + ] + ), ), - Quantity( - 'polarization', - r'(The calculated polarization direction is in \w+ direction[\s\S]+?C/m\^2)', - sub_parser=TextParser(quantities=[ - Quantity( - 'direction', r'The calculated polarization direction is in (\w+) direction'), - Quantity( - 'P', - rf'P\s*=\s*({re_float})\s*\(mod\s*({re_float})\)\s*\(\s*({re_float}),\s*({re_float}),\s*({re_float})\)\s*C/m\^2', - str_operation=str_to_polarization, convert=False) - ]) - ) ] + search_quantities relax_quantities = [ Quantity( - 'ion_step', r'(?:STEP OF ION RELAXATION\s*:\s*|RELAX IONS\s*:\s*\d+\s*\(in total:\s*)(\d+)', dtype=int + "ion_step", + r"(?:STEP OF ION RELAXATION\s*:\s*|RELAX IONS\s*:\s*\d+\s*\(in total:\s*)(\d+)", + dtype=int, ), Quantity( - 'self_consistent', - r'((?:STEP OF ION RELAXATION|RELAX IONS)\s*:\s*\d+[\s\S]+?(?:Setup the|\!FINAL_ETOT_IS))', - repeats=False, sub_parser=TextParser(quantities=scf_quantities) - ) + "self_consistent", + r"((?:STEP OF ION RELAXATION|RELAX IONS)\s*:\s*\d+[\s\S]+?(?:Setup the|\!FINAL_ETOT_IS))", + repeats=False, + sub_parser=TextParser(quantities=scf_quantities), + ), ] fullscf_quantities = [ Quantity( - 'self_consistent', - r'([^NON]SELF-CONSISTENT[\s\S]+?\!FINAL_ETOT_IS)', - repeats=False, sub_parser=TextParser(quantities=scf_quantities) + "self_consistent", + r"([^NON]SELF-CONSISTENT[\s\S]+?\!FINAL_ETOT_IS)", + repeats=False, + sub_parser=TextParser(quantities=scf_quantities), ) ] nonscf_quantities = [ Quantity( - 'nonself_consistent', - r'(NONSELF\-CONSISTENT[\s\S]+?\|CLASS_NAME)', - repeats=False, sub_parser=TextParser(quantities=nscf_quantities) + "nonself_consistent", + r"(NONSELF\-CONSISTENT[\s\S]+?\|CLASS_NAME)", + repeats=False, + sub_parser=TextParser(quantities=nscf_quantities), ) ] md_quantities = [ + Quantity("md_step", r"STEP OF MOLECULAR DYNAMICS\s*:\s*(\d+)", dtype=int), Quantity( - 'md_step', r'STEP OF MOLECULAR DYNAMICS\s*:\s*(\d+)', dtype=int - ), - Quantity( - 'self_consistent', - r'(STEP OF MOLECULAR DYNAMICS\s*:\s*\d+[\s\S]+?Energy\s*Potential\s*Kinetic)', - repeats=False, sub_parser=TextParser(quantities=scf_quantities) + "self_consistent", + r"(STEP OF MOLECULAR DYNAMICS\s*:\s*\d+[\s\S]+?Energy\s*Potential\s*Kinetic)", + repeats=False, + sub_parser=TextParser(quantities=scf_quantities), ), Quantity( - 'energy', - rf'Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*({re_float})', - dtype=float, unit='hartree' + "energy", + rf"Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*({re_float})", + dtype=float, + unit="hartree", ), Quantity( - 'potential', - rf'Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*{re_float}\s*({re_float})', - dtype=float, unit='hartree' + "potential", + rf"Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*{re_float}\s*({re_float})", + dtype=float, + unit="hartree", ), Quantity( - 'electronic_kinetic_energy', - rf'Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*{re_float}\s*{re_float}\s*({re_float})', - dtype=float, unit='hartree' + "electronic_kinetic_energy", + rf"Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*{re_float}\s*{re_float}\s*({re_float})", + dtype=float, + unit="hartree", ), Quantity( - 'temperature', - rf'Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*{re_float}\s*{re_float}\s*{re_float}\s*({re_float})', - dtype=float, unit='kelvin' + "temperature", + rf"Energy\s*Potential\s*Kinetic\s*Temperature\s*(?:Pressure \(KBAR\)\s*\n|\n)\s*{re_float}\s*{re_float}\s*{re_float}\s*({re_float})", + dtype=float, + unit="kelvin", ), Quantity( - 'pressure', - rf'Energy\s*Potential\s*Kinetic\s*Temperature\s*Pressure \(KBAR\)\s*\n\s*{re_float}\s*{re_float}\s*{re_float}\s*{re_float}\s*({re_float})', - dtype=float, unit='kilobar' + "pressure", + rf"Energy\s*Potential\s*Kinetic\s*Temperature\s*Pressure \(KBAR\)\s*\n\s*{re_float}\s*{re_float}\s*{re_float}\s*{re_float}\s*({re_float})", + dtype=float, + unit="kilobar", ), ] self._quantities = [ Quantity( - 'program_version', - r'Version:\s*(.*)\n', str_operation=lambda x: ''.join(x) - ), - Quantity( - 'nproc', - r'Processor Number is\s*(\d+)\n', dtype=int - ), - Quantity( - 'start_date_time', - r'Start Time is\s*(.*)\n', str_operation=lambda x: ''.join(x) - ), - Quantity( - 'input_filename', r'global_in_card\s*=\s*(.*)\n', - ), - Quantity( - 'pseudopotential_dirname', r'pseudo_dir\s*=\s*([.\w\-\\ ]*?)', - ), - Quantity( - 'basis_set_dirname', r'orbital_dir\s*=\s*([.\w\-\\ ]*?)', + "program_version", + r"Version:\s*(.*)\n", + str_operation=lambda x: "".join(x), ), + Quantity("nproc", r"Processor Number is\s*(\d+)\n", dtype=int), Quantity( - 'drank', r'DRANK\s*=\s*(\d+)\n', dtype=int + "start_date_time", + r"Start Time is\s*(.*)\n", + str_operation=lambda x: "".join(x), ), Quantity( - 'dsize', r'DSIZE\s*=\s*(\d+)\n', dtype=int + "input_filename", + r"global_in_card\s*=\s*(.*)\n", ), Quantity( - 'dcolor', r'DCOLOR\s*=\s*(\d+)\n', dtype=int + "pseudopotential_dirname", + r"pseudo_dir\s*=\s*([.\w\-\\ ]*?)", ), Quantity( - 'grank', r'GRANK\s*=\s*(\d+)\n', dtype=int + "basis_set_dirname", + r"orbital_dir\s*=\s*([.\w\-\\ ]*?)", ), + Quantity("drank", r"DRANK\s*=\s*(\d+)\n", dtype=int), + Quantity("dsize", r"DSIZE\s*=\s*(\d+)\n", dtype=int), + Quantity("dcolor", r"DCOLOR\s*=\s*(\d+)\n", dtype=int), + Quantity("grank", r"GRANK\s*=\s*(\d+)\n", dtype=int), + Quantity("gsize", r"GSIZE\s*=\s*(\d+)\n", dtype=int), Quantity( - 'gsize', r'GSIZE\s*=\s*(\d+)\n', dtype=int + "header", + r"READING GENERAL INFORMATION([\s\S]+?)(?:[NON]*SELF-|STEP OF|RELAX CELL)", + sub_parser=TextParser(quantities=header_quantities), ), Quantity( - 'header', - r'READING GENERAL INFORMATION([\s\S]+?)(?:[NON]*SELF-|STEP OF|RELAX CELL)', sub_parser=TextParser(quantities=header_quantities) + "full_scf", + r"([^NON]SELF-CONSISTENT[\s\S]+?)Total\s*Time", + sub_parser=TextParser(quantities=fullscf_quantities), + repeats=True, ), Quantity( - 'full_scf', - r'([^NON]SELF-CONSISTENT[\s\S]+?)Total\s*Time', sub_parser=TextParser(quantities=fullscf_quantities), repeats=True + "non_scf", + r"(NONSELF-CONSISTENT[\s\S]+?)Total\s*Time", + sub_parser=TextParser(quantities=nonscf_quantities), + repeats=True, ), Quantity( - 'non_scf', - r'(NONSELF-CONSISTENT[\s\S]+?)Total\s*Time', sub_parser=TextParser(quantities=nonscf_quantities), repeats=True + "geometry_optimization", + r"((STEP OF ION RELAXATION|RELAX IONS)\s*:\s*\d+[\s\S]+?(Setup the|\!FINAL_ETOT_IS))", + sub_parser=TextParser(quantities=relax_quantities), + repeats=True, ), Quantity( - 'geometry_optimization', - r'((STEP OF ION RELAXATION|RELAX IONS)\s*:\s*\d+[\s\S]+?(Setup the|\!FINAL_ETOT_IS))', - sub_parser=TextParser(quantities=relax_quantities), repeats=True + "ion_converged", + r"Ion relaxation \(is converged!\)", + str_operation=lambda x: True, ), Quantity( - 'ion_converged', r'Ion relaxation \(is converged!\)', str_operation=lambda x: True + "force_threshold", + rf"Ion relaxation is not converged yet \(threshold is\s*({re_float})\)", + unit="eV/angstrom", + repeats=False, ), Quantity( - 'force_threshold', - rf'Ion relaxation is not converged yet \(threshold is\s*({re_float})\)', unit='eV/angstrom', repeats=False + "lattice_converged", + r"Lattice relaxation \(is converged!\)", + str_operation=lambda x: True, ), Quantity( - 'lattice_converged', r'Lattice relaxation \(is converged!\)', str_operation=lambda x: True + "stress_threshold", + rf"Lattice relaxation is not converged yet \(threshold is\s*({re_float})\)", + unit="kilobar", + repeats=False, ), Quantity( - 'stress_threshold', - rf'Lattice relaxation is not converged yet \(threshold is\s*({re_float})\)', unit='kilobar', repeats=False + "molecular_dynamics", + r"(STEP OF MOLECULAR DYNAMICS\s*:\s*\d+[\s\S]+?(?:\n{4,5}))", + sub_parser=TextParser(quantities=md_quantities), + repeats=True, ), Quantity( - 'molecular_dynamics', - r'(STEP OF MOLECULAR DYNAMICS\s*:\s*\d+[\s\S]+?(?:\n{4,5}))', - sub_parser=TextParser(quantities=md_quantities), repeats=True + "final_energy", + rf"\!FINAL_ETOT_IS\s*({re_float})", + dtype=float, + unit="eV", ), Quantity( - 'final_energy', - rf'\!FINAL_ETOT_IS\s*({re_float})', dtype=float, unit='eV' + "finish_date_time", + r"Finish\s*Time\s*:\s*(.*)\n", + str_operation=lambda x: "".join(x), ), Quantity( - 'finish_date_time', - r'Finish\s*Time\s*:\s*(.*)\n', str_operation=lambda x: ''.join(x) + "total_time", + rf"Total\s*Time\s*:\s*(\d+)\s*h\s*(\d+)\s*mins\s*(\d+)\s*secs", + str_operation=lambda x: int(x.strip().split()[0]) * 3600 + + int(x.strip().split()[1]) * 60 + + int(x.strip().split()[2]), + unit="seconds", ), - Quantity( - 'total_time', - rf'Total\s*Time\s*:\s*(\d+)\s*h\s*(\d+)\s*mins\s*(\d+)\s*secs', - str_operation=lambda x: int(x.strip().split()[0]) * 3600 + int(x.strip().split()[1]) * 60 + int(x.strip().split()[2]), unit='seconds' - ) ] @@ -1085,109 +1291,110 @@ def __init__(self): self.sampling_method = None self._xc_map = { - 'PWLDA': [ - {'name': 'LDA_C_PW'}, {'name': 'LDA_X'}], - 'PZ': [ - {'name': 'LDA_C_PZ'}, {'name': 'LDA_X'}], - 'LDA': [ - {'name': 'LDA_C_PZ'}, {'name': 'LDA_X'}], - 'BLYP': [ - {'name': 'GGA_C_LYP'}, {'name': 'GGA_X_B88'}], - 'BP': [ - {'name': 'GGA_C_P86'}, {'name': 'GGA_X_B88'}], - 'PBE': [ - {'name': 'GGA_C_PBE'}, {'name': 'GGA_X_PBE'}], - 'RPBE': [ - {'name': 'GGA_C_PBE'}, {'name': 'GGA_X_RPBE'}], - 'WC': [ - {'name': 'GGA_C_PBE'}, {'name': 'GGA_X_WC'}], - 'PW91': [ - {'name': 'GGA_C_PW91'}, {'name': 'GGA_X_PW91'}], - 'HCTH': [ - {'name': 'GGA_C_HCTH_A'}, {'name': 'GGA_X_HCTH_A'}], - 'OLYP': [ - {'name': 'GGA_C_LYP'}, {'name': 'GGA_X_OPTX'}], - 'REVPBE': [ - {'name': 'GGA_C_PBE'}, {'name': 'GGA_X_PBE_R'}], - 'SCAN': [ - {'name': 'MGGA_C_SCAN'}, {'name': 'MGGA_X_SCAN'}], - 'HF': [{'name': 'HF_X'}], - 'HSE': [{'name': 'HYB_GGA_XC_HSE06'}], - 'PBE0': [ - {'name': 'GGA_C_PBE'}, { - 'name': 'GGA_X_PBE', 'weight': lambda x: 0.75 if x is None else 1.0 - x}, - {'name': 'HF_X', 'weight': lambda x: 0.25 if x is None else x}], + "PWLDA": [{"name": "LDA_C_PW"}, {"name": "LDA_X"}], + "PZ": [{"name": "LDA_C_PZ"}, {"name": "LDA_X"}], + "LDA": [{"name": "LDA_C_PZ"}, {"name": "LDA_X"}], + "BLYP": [{"name": "GGA_C_LYP"}, {"name": "GGA_X_B88"}], + "BP": [{"name": "GGA_C_P86"}, {"name": "GGA_X_B88"}], + "PBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_PBE"}], + "RPBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_RPBE"}], + "WC": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_WC"}], + "PW91": [{"name": "GGA_C_PW91"}, {"name": "GGA_X_PW91"}], + "HCTH": [{"name": "GGA_C_HCTH_A"}, {"name": "GGA_X_HCTH_A"}], + "OLYP": [{"name": "GGA_C_LYP"}, {"name": "GGA_X_OPTX"}], + "REVPBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_PBE_R"}], + "SCAN": [{"name": "MGGA_C_SCAN"}, {"name": "MGGA_X_SCAN"}], + "HF": [{"name": "HF_X"}], + "HSE": [{"name": "HYB_GGA_XC_HSE06"}], + "PBE0": [ + {"name": "GGA_C_PBE"}, + { + "name": "GGA_X_PBE", + "weight": lambda x: 0.75 if x is None else 1.0 - x, + }, + {"name": "HF_X", "weight": lambda x: 0.25 if x is None else x}, + ], } def parse_configurations(self): sec_run = self.archive.run[-1] - header = self.out_parser.get('header', {}) - nspin_ori = header.get('number_of_spin_channels') + header = self.out_parser.get("header", {}) + nspin_ori = header.get("number_of_spin_channels") nspin = 1 if nspin_ori == 4 else nspin_ori - nbands = header.get('nbands') + nbands = header.get("nbands") def parse_bandstructure(section): sec_scc = Calculation() sec_run.calculation.append(sec_scc) - sec_nscf = section.get('nonself_consistent') + sec_nscf = section.get("nonself_consistent") # atom data parse_system() # search adjacent atoms - searching_sec = sec_nscf.get('search_adjacent_atoms') + searching_sec = sec_nscf.get("search_adjacent_atoms") if searching_sec is not None: - for key in ['longest_orb_rcut', 'longest_nonlocal_projector_rcut', - 'searching_radius', 'searching_radius_unit']: + for key in [ + "longest_orb_rcut", + "longest_nonlocal_projector_rcut", + "searching_radius", + "searching_radius_unit", + ]: val = searching_sec.get(key) if val: - setattr(sec_scc, f'x_abacus_{key}', val) + setattr(sec_scc, f"x_abacus_{key}", val) # grid_integration - grid_sec = sec_nscf.get('grid_integration') + grid_sec = sec_nscf.get("grid_integration") if grid_sec is not None: - for key in ['read_space_grid', 'big_cell_numbers_in_grid', - 'meshcell_numbers_in_big_cell', 'extended_fft_grid', - 'extended_fft_grid_dim']: + for key in [ + "read_space_grid", + "big_cell_numbers_in_grid", + "meshcell_numbers_in_big_cell", + "extended_fft_grid", + "extended_fft_grid_dim", + ]: val = grid_sec.get(key) if val is not None: - setattr(sec_scc, f'x_abacus_{key}', val) + setattr(sec_scc, f"x_abacus_{key}", val) sec_k_band = BandStructure() sec_scc.band_structure_electronic.append(sec_k_band) sec_k_band.reciprocal_cell = sec_run.system[-1].x_abacus_reciprocal_vectors # get efermi - efermi = header.get('fermi_energy_in') + efermi = header.get("fermi_energy_in") if efermi is None: - efermi = sec_nscf.get('fermi_energy_dos') + efermi = sec_nscf.get("fermi_energy_dos") if efermi is not None: # fermi energy is not spin-dependent sec_k_band.energy_fermi = efermi * ureg.rydberg band_k_points = [] band_energies = [] - for slabel, data in sec_nscf.get('band_structure').items(): + for slabel, data in sec_nscf.get("band_structure").items(): for state in data: - if slabel == 'up': + if slabel == "up": band_k_points.append(state.kpoint.tolist()) band_energies.append(state.energies.tolist()) sec_k_band_segment = BandEnergies() sec_k_band.segment.append(sec_k_band_segment) - sec_k_band_segment.kpoints = np.dot(np.linalg.inv( - header.get('reciprocal_vectors')), np.array(band_k_points).T).T - sec_k_band_segment.energies = np.reshape( - band_energies, (nspin, -1, nbands)) * ureg.eV + sec_k_band_segment.kpoints = np.dot( + np.linalg.inv(header.get("reciprocal_vectors")), + np.array(band_k_points).T, + ).T + sec_k_band_segment.energies = ( + np.reshape(band_energies, (nspin, -1, nbands)) * ureg.eV + ) def parse_dos(): sec_scc = sec_run.calculation[-1] # parse TDOS file - tdos_file = 'TDOS' + tdos_file = "TDOS" if tdos_file not in os.listdir(self.out_parser.maindir): return - self.tdos_parser.mainfile = os.path.join( - self.out_parser.maindir, tdos_file) + self.tdos_parser.mainfile = os.path.join(self.out_parser.maindir, tdos_file) data = self.tdos_parser.data if data is None: return @@ -1209,94 +1416,114 @@ def parse_scf(iteration): sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) - density_errors = iteration.get('density_error') + density_errors = iteration.get("density_error") sec_scf.x_abacus_density_change_scf_iteration = density_errors # energies - sec_scf.x_abacus_energy_total_harris_foulkes_estimate = iteration.x_abacus_energy_total_harris_foulkes_estimate + sec_scf.x_abacus_energy_total_harris_foulkes_estimate = ( + iteration.x_abacus_energy_total_harris_foulkes_estimate + ) sec_scf.energy = Energy( - total=EnergyEntry(value=iteration.energy_total_scf_iteration)) + total=EnergyEntry(value=iteration.energy_total_scf_iteration) + ) if iteration.e_fermi is not None: sec_scf.energy.fermi = iteration.e_fermi # magnetization - for key in ['magnetization_total', 'magnetization_absolute']: + for key in ["magnetization_total", "magnetization_absolute"]: val = iteration.get(key) if val is None: continue - setattr(sec_scf, f'x_abacus_{key}', val) + setattr(sec_scf, f"x_abacus_{key}", val) def parse_system(): sec_system = System() sec_run.system.append(sec_system) - structure = header.get('positions') + structure = header.get("positions") # structure - alat = header.get('alat') + alat = header.get("alat") sec_system.x_abacus_alat = alat # bohr sec_atoms = Atoms() sec_system.atoms = sec_atoms - lattice_vectors = header.get('lattice_vectors') * alat + lattice_vectors = header.get("lattice_vectors") * alat sec_atoms.lattice_vectors = lattice_vectors labels, positions, mags, velocities = [], [], [], [] sec_run.x_abacus_init_velocities = self.input_parser.get( - 'x_abacus_init_velocities', 0) - for site in structure.get('sites', []): - labels.append(site['labels']) - positions.append(site['positions']) - mags.append(site['magnetic_moments']) + "x_abacus_init_velocities", 0 + ) + for site in structure.get("sites", []): + labels.append(site["labels"]) + positions.append(site["positions"]) + mags.append(site["magnetic_moments"]) if sec_run.x_abacus_init_velocities: - velocities.append(site['velocities']) + velocities.append(site["velocities"]) - coord_class = structure.get('coord_class') - if coord_class == 'cartesian': - units = structure.get('units') + coord_class = structure.get("coord_class") + if coord_class == "cartesian": + units = structure.get("units") sec_atoms.positions = np.array(positions) * units - elif coord_class == 'direct': - sec_atoms.positions = (np.array(positions) @ lattice_vectors) + elif coord_class == "direct": + sec_atoms.positions = np.array(positions) @ lattice_vectors sec_atoms.labels = labels if velocities: sec_atoms.velocities = velocities * ureg.angstrom / ureg.fs sec_system.x_abacus_atom_magnetic_moments = mags - sec_system.x_abacus_cell_volume = header.get('cell_volume') - sec_system.x_abacus_reciprocal_vectors = header.get( - 'reciprocal_vectors') * 2 * np.pi / alat + sec_system.x_abacus_cell_volume = header.get("cell_volume") + sec_system.x_abacus_reciprocal_vectors = ( + header.get("reciprocal_vectors") * 2 * np.pi / alat + ) # symmetry - symmetry = header.get('symmetry') + symmetry = header.get("symmetry") if symmetry: sec_system_sym = Symmetry() sec_system.symmetry.append(sec_system_sym) - sec_system_sym.crystal_system = symmetry.get('bravais_name')[ - 1].lower() + sec_system_sym.crystal_system = symmetry.get("bravais_name")[1].lower() brav_dict = { - 'triclinic': 'a', 'monoclinic': 'b', 'orthorhombic': 'o', - 'tetragonal': 't', 'hexagonal': 'h', 'cubic': 'c', 'rhombohedral': 'R'} - ibrav = symmetry.get('ibrav') + "triclinic": "a", + "monoclinic": "b", + "orthorhombic": "o", + "tetragonal": "t", + "hexagonal": "h", + "cubic": "c", + "rhombohedral": "R", + } + ibrav = symmetry.get("ibrav") if ibrav: sec_system.x_abacus_ibrav = ibrav if ibrav in [4, 14]: - sec_system_sym.bravais_lattice = brav_dict[sec_system_sym.crystal_system] + sec_system_sym.bravais_lattice = brav_dict[ + sec_system_sym.crystal_system + ] else: - sec_system_sym.bravais_lattice = brav_dict[sec_system_sym.crystal_system] + symmetry.get( - 'bravais_name')[2][0] + sec_system_sym.bravais_lattice = ( + brav_dict[sec_system_sym.crystal_system] + + symmetry.get("bravais_name")[2][0] + ) sec_system_sym.x_abacus_point_group_schoenflies_name = symmetry.get( - 'point_group') - celldm = [symmetry.get( - f'norm_{key}') * alat.to('angstrom').magnitude for key in ['a', 'b', 'c']] - celldm.extend([symmetry.get(key) - for key in ['alpha', 'beta', 'gamma']]) + "point_group" + ) + celldm = [ + symmetry.get(f"norm_{key}") * alat.to("angstrom").magnitude + for key in ["a", "b", "c"] + ] + celldm.extend([symmetry.get(key) for key in ["alpha", "beta", "gamma"]]) sec_system.x_abacus_celldm = celldm - for name in ['rotation_matrices', 'point_group_operations', 'space_group_operations']: - val = symmetry.get(f'number_of_{name}') - setattr(sec_system_sym, f'x_abacus_number_of_{name}', val) + for name in [ + "rotation_matrices", + "point_group_operations", + "space_group_operations", + ]: + val = symmetry.get(f"number_of_{name}") + setattr(sec_system_sym, f"x_abacus_number_of_{name}", val) # numbers - sec_atoms.n_atoms = header.get('number_of_atoms') + sec_atoms.n_atoms = header.get("number_of_atoms") sec_system.x_abacus_number_of_species = header.number_of_species sec_system.x_abacus_number_of_electrons_out = header.number_of_electrons_out - sec_system.number_of_electrons_out = self.input_parser.get('nelec') + sec_system.number_of_electrons_out = self.input_parser.get("nelec") def parse_section(section): sec_scc = Calculation() @@ -1305,72 +1532,83 @@ def parse_section(section): # atom data parse_system() - sub_section = section.get('self_consistent') + sub_section = section.get("self_consistent") if sub_section is None: return # search adjacent atoms - searching_sec = sub_section.get('search_adjacent_atoms') + searching_sec = sub_section.get("search_adjacent_atoms") if searching_sec is not None: - for key in ['longest_orb_rcut', 'longest_nonlocal_projector_rcut', - 'searching_radius', 'searching_radius_unit']: + for key in [ + "longest_orb_rcut", + "longest_nonlocal_projector_rcut", + "searching_radius", + "searching_radius_unit", + ]: val = searching_sec.get(key) if val: - setattr(sec_scc, f'x_abacus_{key}', val) + setattr(sec_scc, f"x_abacus_{key}", val) # grid_integration - grid_sec = sub_section.get('grid_integration') + grid_sec = sub_section.get("grid_integration") if grid_sec is not None: - for key in ['read_space_grid', 'big_cell_numbers_in_grid', - 'meshcell_numbers_in_big_cell', 'extended_fft_grid', - 'extended_fft_grid_dim']: + for key in [ + "read_space_grid", + "big_cell_numbers_in_grid", + "meshcell_numbers_in_big_cell", + "extended_fft_grid", + "extended_fft_grid_dim", + ]: val = grid_sec.get(key) if val is not None: - setattr(sec_scc, f'x_abacus_{key}', val) + setattr(sec_scc, f"x_abacus_{key}", val) # energies sec_energy = Energy() sec_scc.energy = sec_energy - vdw_m_dict = {'d2': 'DFT-D2', 'd3_0': 'DFT-D3(0)', 'd3_bj': 'DFT-D3(BJ)'} + vdw_m_dict = {"d2": "DFT-D2", "d3_0": "DFT-D3(0)", "d3_bj": "DFT-D3(BJ)"} # TODO AN: I do not quite understand this loop over scf_iterations # and the loop over iteration - scf_iteration = sub_section.get('iteration') + scf_iteration = sub_section.get("iteration") if scf_iteration is not None: sec_scc.n_scf_iterations = len(scf_iteration) for iteration in scf_iteration: parse_scf(iteration) - e_vdw = iteration.get('e_vdw', None) + e_vdw = iteration.get("e_vdw", None) if e_vdw is not None: sec_energy.van_der_walls = EnergyEntry(value=e_vdw) vdw_method = self.input_parser.get( - 'x_abacus_dispersion_correction_method') + "x_abacus_dispersion_correction_method" + ) # TODO AN these methods are not in the enumerated list - if vdw_method in ['d2', 'd3_0', 'd3_bj']: + if vdw_method in ["d2", "d3_0", "d3_bj"]: kind = "G06" - sec_run.method[-1].x_abacus_dispersion_correction_method = vdw_m_dict[vdw_method] + sec_run.method[ + -1 + ].x_abacus_dispersion_correction_method = vdw_m_dict[vdw_method] else: kind = "" sec_run.method[-1].electronic.van_der_waals_method = kind - sec_energy.xc = EnergyEntry( - value=iteration.get('XC_functional')) + sec_energy.xc = EnergyEntry(value=iteration.get("XC_functional")) sec_energy.electrostatic = EnergyEntry( - correction=iteration.get('correction_hartree')) + correction=iteration.get("correction_hartree") + ) sec_energy.hartree_fock_x_scaled = EnergyEntry( - value=iteration.get('hartree_fock_X_scaled')) + value=iteration.get("hartree_fock_X_scaled") + ) - sec_energy.total = EnergyEntry( - value=sub_section.get('total')) - sec_energy.fermi = sub_section.get('reference_fermi') + sec_energy.total = EnergyEntry(value=sub_section.get("total")) + sec_energy.fermi = sub_section.get("reference_fermi") # eigenvalues - eigenvalues = sub_section.get('energy_occupation') + eigenvalues = sub_section.get("energy_occupation") if eigenvalues is not None: kpoints, npws, eigs, eig, occs, occ = [], [], [], [], [], [] sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) for s_label, data in eigenvalues.items(): for state in data: - if s_label == 'up': + if s_label == "up": kpoints.append(state.kpoint) npws.append(state.npws) eig.append(state.energies) @@ -1380,70 +1618,69 @@ def parse_section(section): sec_eigenvalues.energies = np.array(eigs) * ureg.eV sec_eigenvalues.occupations = np.array(occs) sec_eigenvalues.x_abacus_eigenvalues_number_of_planewaves = np.array( - npws) + npws + ) # kpoints in direct coordinates - sec_eigenvalues.kpoints = np.dot(np.linalg.inv( - header.get('reciprocal_vectors')), np.array(kpoints).T).T + sec_eigenvalues.kpoints = np.dot( + np.linalg.inv(header.get("reciprocal_vectors")), np.array(kpoints).T + ).T # force - forces = sub_section.get('forces') + forces = sub_section.get("forces") if forces is not None: sec_scc.forces = Forces(total=ForcesEntry(value=forces)) # stress and pressure - stress = sub_section.get('stress') - pressure = sub_section.get('pressure') + stress = sub_section.get("stress") + pressure = sub_section.get("pressure") if stress is not None: sec_scc.stress = Stress(total=StressEntry(value=stress)) if pressure is not None: sec_scc.pressure = pressure # md settings - electronic_kinetic_energy = section.get( - 'electronic_kinetic_energy') + electronic_kinetic_energy = section.get("electronic_kinetic_energy") if electronic_kinetic_energy is not None: - sec_energy.electronic = EnergyEntry( - kinetic=electronic_kinetic_energy) - temperature = section.get('temperature') + sec_energy.electronic = EnergyEntry(kinetic=electronic_kinetic_energy) + temperature = section.get("temperature") if temperature is not None: sec_scc.temperature = temperature - pressure = section.get('pressure') + pressure = section.get("pressure") if pressure is not None: sec_scc.pressure = pressure - total_energy = section.get('energy') + total_energy = section.get("energy") if total_energy is not None: sec_energy.total = EnergyEntry(value=total_energy) # scf - for section in self.out_parser.get('full_scf', []): + for section in self.out_parser.get("full_scf", []): parse_section(section) # relax/cell-relax/md - for method in ['geometry_optimization', 'molecular_dynamics']: + for method in ["geometry_optimization", "molecular_dynamics"]: sections = self.out_parser.get(method) if sections is not None: self.sampling_method = method for section in sections: parse_section(section) - md_nstep_in = self.input_parser.get('md_nstep') + md_nstep_in = self.input_parser.get("md_nstep") if md_nstep_in is not None: sec_run.x_abacus_md_nstep_in = md_nstep_in - md_nstep_out = sections[-1].get('md_step') + md_nstep_out = sections[-1].get("md_step") if md_nstep_out is not None: sec_run.x_abacus_md_nstep_out = md_nstep_out + 1 # nscf - for section in self.out_parser.get('non_scf', []): + for section in self.out_parser.get("non_scf", []): parse_bandstructure(section) if self.sampling_method is None: - self.sampling_method = 'single_point' + self.sampling_method = "single_point" parse_dos() # total time - sec_run.x_abacus_program_execution_time = self.out_parser.get( - 'total_time') + sec_run.x_abacus_program_execution_time = self.out_parser.get("total_time") def parse_method(self): sec_run = self.archive.run[-1] @@ -1451,78 +1688,92 @@ def parse_method(self): sec_run.method.append(sec_method) sec_electronic = Electronic() sec_method.electronic = sec_electronic - header = self.out_parser.get('header', {}) + header = self.out_parser.get("header", {}) # input parameters from INPUT file - input_file = 'INPUT' + input_file = "INPUT" if input_file in os.listdir(self.out_parser.maindir): self.input_parser.mainfile = os.path.join( - self.out_parser.maindir, input_file) - sec_method.scf = Scf( - n_max_iteration=self.input_parser.get('scf_max_iteration')) + self.out_parser.maindir, input_file + ) + sec_method.scf = Scf(n_max_iteration=self.input_parser.get("scf_max_iteration")) input_names = [ - 'scf_threshold_density', 'mixing_method', 'mixing_beta', 'gamma_algorithms', - 'diagonalization_algorithm', 'initial_magnetization_total', 'dispersion_correction_method', - 'exx_ccp_rmesh_times', 'exx_dm_threshold', 'exx_cauchy_threshold', 'exx_schwarz_threshold', - 'exx_c_threshold', 'exx_v_threshold', 'exx_pca_threshold'] + "scf_threshold_density", + "mixing_method", + "mixing_beta", + "gamma_algorithms", + "diagonalization_algorithm", + "initial_magnetization_total", + "dispersion_correction_method", + "exx_ccp_rmesh_times", + "exx_dm_threshold", + "exx_cauchy_threshold", + "exx_schwarz_threshold", + "exx_c_threshold", + "exx_v_threshold", + "exx_pca_threshold", + ] for key in input_names: - val = self.input_parser.get(f'x_abacus_{key}') + val = self.input_parser.get(f"x_abacus_{key}") if val is None: continue - setattr(sec_method, f'x_abacus_{key}', val) + setattr(sec_method, f"x_abacus_{key}", val) # kmesh sec_kmesh = KMesh() sec_method.k_mesh = sec_kmesh - nkstot = header.get('nkstot') - nkstot_ibz = header.get('nkstot_ibz') + nkstot = header.get("nkstot") + nkstot_ibz = header.get("nkstot_ibz") sec_kmesh.n_points = nkstot_ibz if nkstot_ibz is not None else nkstot - sec_kmesh.generation_method = header.get('ksampling_method') - sec_kmesh.points, sec_kmesh.weights = header.get('k_points') + sec_kmesh.generation_method = header.get("ksampling_method") + sec_kmesh.points, sec_kmesh.weights = header.get("k_points") # smearing - occupations = self.input_parser.get('occupations', 'smearing') + occupations = self.input_parser.get("occupations", "smearing") smearing_kind = None - if occupations == 'tetrahedra': + if occupations == "tetrahedra": smearing_kind = occupations - elif occupations == 'fixed': - smearing_kind = 'empty' + elif occupations == "fixed": + smearing_kind = "empty" else: - smearing_method = self.input_parser.get('smearing_method', 'fixed') - if smearing_method == 'mp': - smearing_kind = 'methfessel-paxton' - elif smearing_method in ['gauss', 'gaussian']: - smearing_kind = 'gaussian' + smearing_method = self.input_parser.get("smearing_method", "fixed") + if smearing_method == "mp": + smearing_kind = "methfessel-paxton" + elif smearing_method in ["gauss", "gaussian"]: + smearing_kind = "gaussian" else: - smearing_kind = 'empty' - smearing_width = self.input_parser.get('smearing_width') + smearing_kind = "empty" + smearing_width = self.input_parser.get("smearing_width") if smearing_width is not None: - smearing_width = smearing_width.to('joule').magnitude - sec_electronic.smearing = Smearing( - kind=smearing_kind, width=smearing_width) + smearing_width = smearing_width.to("joule").magnitude + sec_electronic.smearing = Smearing(kind=smearing_kind, width=smearing_width) - sec_method.x_abacus_basis_type = self.input_parser.get( - 'basis_type', 'pw') + sec_method.x_abacus_basis_type = self.input_parser.get("basis_type", "pw") # basis set settings ems = [] - for name in ['wavefunction', 'density']: - orbital_settings = header.get('orbital_settings') + for name in ["wavefunction", "density"]: + orbital_settings = header.get("orbital_settings") bs = BasisSet( - type='plane waves', - scope=['valence'], - cutoff=header.get(f'{name}_cutoff'), # http://abacus.deepmodeling.com/en/latest/advanced/input_files/input-main.html#ecutwfc + type="plane waves", + scope=["valence"], + cutoff=header.get( + f"{name}_cutoff" + ), # http://abacus.deepmodeling.com/en/latest/advanced/input_files/input-main.html#ecutwfc ) if orbital_settings: - bs.type = 'numeric AOs' - for key in ['delta_k', 'delta_r', 'dr_uniform', 'rmax', 'kmesh']: + bs.type = "numeric AOs" + for key in ["delta_k", "delta_r", "dr_uniform", "rmax", "kmesh"]: val = orbital_settings.get(key) - setattr(bs, f'x_abacus_basis_sets_{key}', val) - for i, orb in enumerate(orbital_settings.get('orbital_information', [])): + setattr(bs, f"x_abacus_basis_sets_{key}", val) + for i, orb in enumerate( + orbital_settings.get("orbital_information", []) + ): sec_specie_basis_set = x_abacus_section_specie_basis_set() bs.x_abacus_section_specie_basis_set.append(sec_specie_basis_set) - sec_specie_basis_set.x_abacus_specie_basis_set_filename = os.path.basename( - header.get('orbital_files')[i]) + sec_specie_basis_set.x_abacus_specie_basis_set_filename = ( + os.path.basename(header.get("orbital_files")[i]) + ) ln_list = [] for data in orb: ln_list.append([data.l, data.n]) @@ -1530,45 +1781,53 @@ def parse_method(self): sec_specie_basis_set.x_abacus_specie_basis_set_rcutoff = data.rcut sec_specie_basis_set.x_abacus_specie_basis_set_rmesh = data.nr sec_specie_basis_set.x_abacus_specie_basis_set_number_of_orbitals = len( - ln_list) + ln_list + ) ems.append(BasisSetContainer(scope=[name], basis_set=[bs])) sec_method.electrons_representation = ems - if self.input_parser.get('dft_plus_u'): - sec_electronic.method = 'DFT+U' + if self.input_parser.get("dft_plus_u"): + sec_electronic.method = "DFT+U" else: - sec_electronic.method = 'DFT' + sec_electronic.method = "DFT" # spin mode - nspin_ori = header.get('number_of_spin_channels') + nspin_ori = header.get("number_of_spin_channels") nspin = 1 if nspin_ori == 4 else nspin_ori sec_electronic.n_spin_channels = nspin sec_method.x_abacus_spin_orbit = nspin_ori == 4 - sec_method.x_abacus_noncollinear = bool(header.get( - 'atom_data')[-1].get('noncollinear_magnetization', np.array([])).any()) + sec_method.x_abacus_noncollinear = bool( + header.get("atom_data")[-1] + .get("noncollinear_magnetization", np.array([])) + .any() + ) # TODO NOMAD metainfo does not include full - sec_electronic.relativity_method = None if nspin_ori == 4 else 'scalar_relativistic' + sec_electronic.relativity_method = ( + None if nspin_ori == 4 else "scalar_relativistic" + ) # atom_kind and pseudopotential settings - pp_xc = '' - for i, pp in enumerate(header.get('pseudopotential', [])): + pp_xc = "" + for i, pp in enumerate(header.get("pseudopotential", [])): sec_atom_parameters = AtomParameters() sec_method.atom_parameters.append(sec_atom_parameters) - sec_atom_parameters.label = header.get('atom_data')[i].get('label') - sec_atom_parameters.n_valence_electrons = pp.get('valence') + sec_atom_parameters.label = header.get("atom_data")[i].get("label") + sec_atom_parameters.n_valence_electrons = pp.get("valence") sec_atom_parameters.pseudopotential_name = os.path.basename( - pp.get('filename', '')) + pp.get("filename", "") + ) sec_method.x_abacus_pao_radial_cutoff = header.get( - 'x_abacus_pao_radial_cutoff') + "x_abacus_pao_radial_cutoff" + ) for key, val in pp.items(): - if key in ['filename', 'valence'] or val is None: + if key in ["filename", "valence"] or val is None: continue - if key == 'xc': - pp_xc = pp.get('xc', None) - setattr(sec_atom_parameters, f'x_abacus_pp_{key}', val) + if key == "xc": + pp_xc = pp.get("xc", None) + setattr(sec_atom_parameters, f"x_abacus_pp_{key}", val) # xc functional from output - xc_in = self.input_parser.get('xc', None) + xc_in = self.input_parser.get("xc", None) xc = xc_in.upper() if xc_in is not None else pp_xc if xc is not None: sec_dft = DFT() @@ -1579,44 +1838,46 @@ def parse_method(self): # hybrid func hse_omega, hybrid_coeff = None, None - if xc in ['HYB_GGA_XC_HSE06', 'HSE']: + if xc in ["HYB_GGA_XC_HSE06", "HSE"]: hse_omega = self.input_parser.get( - 'x_abacus_hse_omega', (0.11 / ureg.bohr).to('1/m')) + "x_abacus_hse_omega", (0.11 / ureg.bohr).to("1/m") + ) if hse_omega is not None: sec_method.x_abacus_hse_omega = hse_omega.magnitude - if xc in ['HYB_GGA_XC_HSE06', 'HSE', 'PBE0']: - hybrid_coeff = self.input_parser.get( - 'x_abacus_hybrid_xc_coeff', 0.25) + if xc in ["HYB_GGA_XC_HSE06", "HSE", "PBE0"]: + hybrid_coeff = self.input_parser.get("x_abacus_hybrid_xc_coeff", 0.25) if hybrid_coeff is not None: sec_method.x_abacus_hybrid_xc_coeff = hybrid_coeff - if 'LDA_' in xc or 'GGA_' in xc or 'HF_' in xc or 'HYB_' in xc: + if "LDA_" in xc or "GGA_" in xc or "HF_" in xc or "HYB_" in xc: xc_meta_list = [] - for xc_i in xc.split('+'): - xc_meta_list.append({'name': xc_i}) + for xc_i in xc.split("+"): + xc_meta_list.append({"name": xc_i}) else: xc_meta_list = self._xc_map.get(xc, []) for xc_meta in xc_meta_list: - xc_func = Functional(name=xc_meta.get('name')) - if '_X_' in xc_func.name or xc_func.name.endswith('_X'): + xc_func = Functional(name=xc_meta.get("name")) + if "_X_" in xc_func.name or xc_func.name.endswith("_X"): sec_xc_func.exchange.append(xc_func) - elif '_C_' in xc_func.name or xc_func.name.endswith('_C'): + elif "_C_" in xc_func.name or xc_func.name.endswith("_C"): sec_xc_func.correlation.append(xc_func) - elif 'HYB' in xc_func.name: + elif "HYB" in xc_func.name: sec_xc_func.hybrid.append(xc_func) else: sec_xc_func.contributions.append(xc_func) - weight = xc_meta.get('weight', None) + weight = xc_meta.get("weight", None) if weight is not None and hybrid_coeff is not None: xc_func.weight = weight(float(hybrid_coeff)) xc_parameters = dict() if hse_omega is not None: hybrid_coeff = 0.25 if hybrid_coeff is None else hybrid_coeff xc_parameters.setdefault( - '$\\omega$ in m^-1', hse_omega.to('1/m').magnitude) + "$\\omega$ in m^-1", hse_omega.to("1/m").magnitude + ) if hybrid_coeff is not None: xc_parameters.setdefault( - 'hybrid coefficient $\\alpha$', hybrid_coeff) + "hybrid coefficient $\\alpha$", hybrid_coeff + ) if xc_parameters: xc_func.parameters = xc_parameters @@ -1636,77 +1897,78 @@ def parse(self, filepath, archive, logger): sec_run = Run() archive.run.append(sec_run) sec_run.program = Program( - name='ABACUS', version=self.out_parser.get('program_version')) - header = self.out_parser.get('header', {}) + name="ABACUS", version=self.out_parser.get("program_version") + ) + header = self.out_parser.get("header", {}) # parallel sec_parallel = x_abacus_section_parallel() sec_run.x_abacus_section_parallel.append(sec_parallel) - sec_parallel.x_abacus_nproc = self.out_parser.get('nproc') - for key in ['kpar', 'bndpar', 'diago_proc']: + sec_parallel.x_abacus_nproc = self.out_parser.get("nproc") + for key in ["kpar", "bndpar", "diago_proc"]: val = self.input_parser.get(key) if val is not None: - setattr(sec_parallel, f'x_abacus_{key}', val) - for key in ['method', 'nb2d', 'trace_loc_row', 'trace_loc_col', 'nloc']: - allocation_method = header.get('allocation_method') + setattr(sec_parallel, f"x_abacus_{key}", val) + for key in ["method", "nb2d", "trace_loc_row", "trace_loc_col", "nloc"]: + allocation_method = header.get("allocation_method") if allocation_method is not None: val = allocation_method.get(key) if val is not None: - setattr(sec_parallel, f'x_abacus_allocation_{key}', val) + setattr(sec_parallel, f"x_abacus_allocation_{key}", val) # input files self.parse_method() self.parse_configurations() - sec_run.x_abacus_stru_filename = self.input_parser.get( - 'stru_filename', 'STRU') - sec_run.x_abacus_kpt_filename = self.input_parser.get( - 'kpt_filename', 'KPT') - sec_run.x_abacus_input_filename = self.out_parser.get('input_filename') - for key in ['basis_set_dirname', 'pseudopotential_dirname']: + sec_run.x_abacus_stru_filename = self.input_parser.get("stru_filename", "STRU") + sec_run.x_abacus_kpt_filename = self.input_parser.get("kpt_filename", "KPT") + sec_run.x_abacus_input_filename = self.out_parser.get("input_filename") + for key in ["basis_set_dirname", "pseudopotential_dirname"]: val = self.out_parser.get(key) if val is not None: - setattr(sec_run, f'x_abacus_{key}', val) + setattr(sec_run, f"x_abacus_{key}", val) # sampling method if self.sampling_method is not None: workflow = None - if self.sampling_method == 'molecular_dynamics': + if self.sampling_method == "molecular_dynamics": workflow = MolecularDynamics(method=MolecularDynamicsMethod()) - md_type = self.input_parser.get('md_type') + md_type = self.input_parser.get("md_type") if md_type == 0: - workflow.method.thermodynamic_ensemble = 'NVE' + workflow.method.thermodynamic_ensemble = "NVE" elif md_type in [1, 2, 3]: - workflow.method.thermodynamic_ensemble = 'NVT' - elif self.sampling_method == 'geometry_optimization': + workflow.method.thermodynamic_ensemble = "NVT" + elif self.sampling_method == "geometry_optimization": workflow = GeometryOptimization(method=GeometryOptimizationMethod()) - force_threshold = self.out_parser.get('force_threshold') - stress_threshold = self.out_parser.get('stress_threshold') + force_threshold = self.out_parser.get("force_threshold") + stress_threshold = self.out_parser.get("stress_threshold") if force_threshold: - workflow.method.convergence_tolerance_force_maximum = force_threshold.to( - 'newton').magnitude + workflow.method.convergence_tolerance_force_maximum = ( + force_threshold.to("newton").magnitude + ) if stress_threshold: - workflow.method.convergence_tolerance_stress_maximum = stress_threshold.to( - 'pascal').magnitude - elif self.sampling_method == 'single_point': + workflow.method.convergence_tolerance_stress_maximum = ( + stress_threshold.to("pascal").magnitude + ) + elif self.sampling_method == "single_point": workflow = SinglePoint(method=SinglePointMethod()) workflow.method.method = archive.run[-1].method[-1].electronic.method archive.workflow2 = workflow # start date - date_time = self.out_parser.get('start_date_time') + date_time = self.out_parser.get("start_date_time") sec_time = TimeRun() sec_run.time_run = sec_time if date_time is not None: date_time = datetime.strptime( - date_time.replace(' ', ''), '%a%b%d%H:%M:%S%Y') - sec_time.date_start = ( - date_time - datetime(1970, 1, 1)).total_seconds() + date_time.replace(" ", ""), "%a%b%d%H:%M:%S%Y" + ) + sec_time.date_start = (date_time - datetime(1970, 1, 1)).total_seconds() # end date - date_time = self.out_parser.get('finish_date_time') + date_time = self.out_parser.get("finish_date_time") if date_time is not None: date_time = datetime.strptime( - date_time.replace(' ', ''), '%a%b%d%H:%M:%S%Y') - sec_time.date_end = ( - date_time - datetime(1970, 1, 1)).total_seconds() + date_time.replace(" ", ""), "%a%b%d%H:%M:%S%Y" + ) + sec_time.date_end = (date_time - datetime(1970, 1, 1)).total_seconds() sec_run.clean_end = True diff --git a/electronicparsers/abinit/metainfo/abinit.py b/electronicparsers/abinit/metainfo/abinit.py index 128d4c06..a38f87f4 100644 --- a/electronicparsers/abinit/metainfo/abinit.py +++ b/electronicparsers/abinit/metainfo/abinit.py @@ -16,10 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, Reference, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + Reference, + JSON, ) from . import abinit_autogenerated @@ -29,209 +37,231 @@ import runschema.system # pylint: disable=unused-import - m_package = Package() class x_abinit_section_stress_tensor(MSection): - ''' + """ Section describing the stress tensor - ''' + """ m_def = Section(validate=False) x_abinit_stress_tensor_xx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" xx component of the stress tensor - ''') + """, + ) x_abinit_stress_tensor_yy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" yy component of the stress tensor - ''') + """, + ) x_abinit_stress_tensor_zz = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" zz component of the stress tensor - ''') + """, + ) x_abinit_stress_tensor_zy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" zy component of the stress tensor - ''') + """, + ) x_abinit_stress_tensor_zx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" zx component of the stress tensor - ''') + """, + ) x_abinit_stress_tensor_yx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" yx component of the stress tensor - ''') + """, + ) class x_abinit_section_dataset_header(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_abinit_dataset_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Dataset number - ''') + """, + ) x_abinit_vprim_1 = Quantity( type=str, shape=[], - description=''' + description=""" Primitive axis 1 - ''') + """, + ) x_abinit_vprim_2 = Quantity( type=str, shape=[], - description=''' + description=""" Primitive axis 2 - ''') + """, + ) x_abinit_vprim_3 = Quantity( type=str, shape=[], - description=''' + description=""" Primitive axis 3 - ''') + """, + ) class x_abinit_section_var(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_abinit_vardtset = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Variable dataset number - ''') + """, + ) x_abinit_varname = Quantity( type=str, shape=[], - description=''' + description=""" Variable name - ''') + """, + ) x_abinit_varvalue = Quantity( type=str, shape=[], - description=''' + description=""" Variable value - ''') + """, + ) x_abinit_vartruncation = Quantity( type=str, shape=[], - description=''' + description=""" Variable truncation length - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_abinit_parallel_compilation = Quantity( type=str, shape=[], - description=''' + description=""" Parallel or sequential compilation - ''') + """, + ) x_abinit_start_date = Quantity( type=str, shape=[], - description=''' + description=""" Start date as string - ''') + """, + ) x_abinit_start_time = Quantity( type=str, shape=[], - description=''' + description=""" Start time as string - ''') + """, + ) x_abinit_input_file = Quantity( type=str, shape=[], - description=''' + description=""" Input file name - ''') + """, + ) x_abinit_output_file = Quantity( type=str, shape=[], - description=''' + description=""" Output file name - ''') + """, + ) x_abinit_input_files_root = Quantity( type=str, shape=[], - description=''' + description=""" Root for input files - ''') + """, + ) x_abinit_output_files_root = Quantity( type=str, shape=[], - description=''' + description=""" Root for output files - ''') + """, + ) x_abinit_total_cpu_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total CPU time - ''') + """, + ) x_abinit_total_wallclock_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total wallclock time - ''') + """, + ) x_abinit_completed = Quantity( type=str, shape=[], - description=''' + description=""" Message that the calculation was completed - ''') + """, + ) x_abinit_section_var = SubSection( - sub_section=x_abinit_section_var.m_def, - repeats=True) + sub_section=x_abinit_section_var.m_def, repeats=True + ) class Method(runschema.method.Method): @@ -240,533 +270,602 @@ class Method(runschema.method.Method): x_abinit_tolvrs = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" `TOLerance on the potential V(r) ReSidual`: Sets a tolerance for potential residual that, when reached, will cause one SCF cycle to stop (and ions to be moved). If set to zero, this stopping condition is ignored. Instead, refer to other tolerances, such as toldfe, tolwfr. - ''') + """, + ) x_abinit_tolwfr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOLerance on WaveFunction squared Residual: Specifies the threshold on WaveFunction squared Residuals; it gives a convergence tolerance for the largest squared residual for any given band. - ''') + """, + ) x_abinit_istwfk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Integer for choice of STorage of WaveFunction at each k point; Controls the way the wavefunction for each k-point is stored inside ABINIT, in reciprocal space, according to time-reversal symmetry properties. - ''') + """, + ) x_abinit_iscf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for Self-Consistent-Field cycles - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_abinit_atom_xcart_final = Quantity( type=str, shape=[], - description=''' + description=""" Cartesian coordinates of an atom at the end of the dataset - ''') + """, + ) x_abinit_atom_xcart = Quantity( type=str, shape=[], - description=''' + description=""" Cartesian coordinates of an atom at the end of a single configuration calculation - ''') + """, + ) class x_abinit_mesh(MSection): - ''' + """ Section containing the parameters for a mesh. - ''' + """ m_def = Section(validate=False) x_abinit_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_mesh = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_mesh = Quantity( type=np.float64, - shape=['x_abinit_n_mesh', 3], - description=''' - ''') + shape=["x_abinit_n_mesh", 3], + description=""" + """, + ) class x_abinit_chi_q_data(MSection): - ''' + """ Section containing the parameters for chi_q. - ''' + """ m_def = Section(validate=False) x_abinit_q_point = Quantity( type=np.float64, - shape=['x_abinit_n_mesh', 3], - description=''' - ''') + shape=["x_abinit_n_mesh", 3], + description=""" + """, + ) x_abinit_av_fulfillment = Quantity( type=np.float64, - shape=['x_abinit_n_mesh'], - description=''' - ''') + shape=["x_abinit_n_mesh"], + description=""" + """, + ) class x_abinit_screening_dataset(MSection): - ''' + """ Section containing the outputs of the screening dataset. - ''' + """ m_def = Section(validate=False) x_abinit_precision_algorithm = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_kqmesh = SubSection(sub_section=x_abinit_mesh.m_def, repeats=True) x_abinit_n_fftmesh = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_fftmesh = Quantity( type=np.int32, shape=[3], - description=''' - ''') + description=""" + """, + ) x_abinit_symm_screening = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_bands_per_proc = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_bands_per_node = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_electrons = Quantity( type=np.float64, shape=[3], - description=''' - ''') + description=""" + """, + ) x_abinit_wigner_seitz_radius = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_omega_plasma = Quantity( type=np.float64, shape=[], - unit='electron_volt', - description=''' - ''') + unit="electron_volt", + description=""" + """, + ) x_abinit_static_diel_const = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_static_diel_const_nofields = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_static_max_band_occ = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_chi_q = SubSection(sub_section=x_abinit_chi_q_data.m_def, repeats=False) x_abinit_frequencies = Quantity( type=np.float64, - shape=['*', 2], - description=''' - ''') + shape=["*", 2], + description=""" + """, + ) class x_abinit_ks_band_gaps_params(MSection): - ''' + """ Section containing the parameters for the KS band gaps. - ''' + """ m_def = Section(validate=False) x_abinit_min_direct_gap = Quantity( type=np.float64, shape=[4], - description=''' - ''') + description=""" + """, + ) x_abinit_fundamental_gap = Quantity( type=np.float64, shape=[], - unit='electron_volt', - description=''' - ''') + unit="electron_volt", + description=""" + """, + ) x_abinit_k_top_valence_band = Quantity( type=np.float64, shape=[3], - description=''' - ''') + description=""" + """, + ) x_abinit_k_bottom_conduction_band = Quantity( type=np.float64, shape=[3], - description=''' - ''') + description=""" + """, + ) class x_abinit_qp_band_gaps_params(MSection): - ''' + """ Section containing the parameters for the QP band gaps. - ''' + """ m_def = Section(validate=False) x_abinit_value = Quantity( type=np.float64, shape=[], - unit='electron_volt', - description=''' + unit="electron_volt", + description=""" The Kohn-Sham gap - ''') + """, + ) x_abinit_value_fundamental = Quantity( type=np.float64, shape=[], - unit='electron_volt', - description=''' + unit="electron_volt", + description=""" The Quasi-Particle gap - ''') + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - ''' + """ Section exting the band energies to contain QP band gaps. Could be depricated later on, since it runs counter to the regular way of working. - ''' + """ m_def = Section(validate=False, extends_base_section=True) - x_abinit_qp_band_gaps_params = SubSection(sub_section=x_abinit_qp_band_gaps_params.m_def, repeats=False) + x_abinit_qp_band_gaps_params = SubSection( + sub_section=x_abinit_qp_band_gaps_params.m_def, repeats=False + ) class x_abinit_sigma_params(MSection): - ''' + """ Section containing the parameters for the SIGMA. - ''' + """ m_def = Section(validate=False) x_abinit_model = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_params = Quantity( type=JSON, - description=''' - ''') + description=""" + """, + ) x_abinit_freq_step = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_max_omega_sigma = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_zcut_avoid = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) class x_abinit_epsilon_inv_params(MSection): - ''' + """ Section containing the parameters for the EPSILON^-1. - ''' + """ m_def = Section(validate=False) x_abinit_dimensions = Quantity( type=JSON, - description=''' - ''') + description=""" + """, + ) x_abinit_params = Quantity( type=JSON, - description=''' - ''') + description=""" + """, + ) class x_abinit_gw_dataset(MSection): - ''' + """ Section containing the outputs of the gw dataset. - ''' + """ m_def = Section(validate=False) x_abinit_precision_algorithm = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_kqmesh = SubSection(sub_section=x_abinit_mesh.m_def, repeats=True) x_abinit_n_fftmesh = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_fftmesh = Quantity( type=np.int32, shape=[3], - description=''' - ''') + description=""" + """, + ) x_abinit_symm_screening = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_bands_per_proc = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_bands_per_node = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_n_electrons = Quantity( type=np.float64, shape=[3], - description=''' - ''') + description=""" + """, + ) x_abinit_wigner_seitz_radius = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_omega_plasma = Quantity( type=np.float64, shape=[], - unit='electron_volt', - description=''' - ''') + unit="electron_volt", + description=""" + """, + ) x_abinit_static_diel_const = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_static_diel_const_nofields = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_abinit_static_max_band_occ = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) - x_abinit_ks_band_gaps = SubSection(sub_section=x_abinit_ks_band_gaps_params.m_def, repeats=True) + x_abinit_ks_band_gaps = SubSection( + sub_section=x_abinit_ks_band_gaps_params.m_def, repeats=True + ) x_abinit_sigma = SubSection(sub_section=x_abinit_sigma_params.m_def, repeats=True) - x_abinit_epsilon_inv = SubSection(sub_section=x_abinit_epsilon_inv_params.m_def, repeats=True) + x_abinit_epsilon_inv = SubSection( + sub_section=x_abinit_epsilon_inv_params.m_def, repeats=True + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_abinit_magnetisation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total magnetisation. - ''') + """, + ) x_abinit_fermi_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Fermi energy. - ''') + """, + ) x_abinit_single_configuration_calculation_converged = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether a single configuration calculation is converged. - ''') + """, + ) x_abinit_atom_force = Quantity( type=str, shape=[], - description=''' + description=""" Force acting on an atom at the end of a single configuration calculation - ''') + """, + ) x_abinit_atom_force_final = Quantity( type=np.dtype(np.float64), - unit='newton', + unit="newton", shape=[], - description=''' + description=""" Force acting on an atom at the end of the dataset - ''') + """, + ) x_abinit_energy_ewald = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Ewald energy - ''') + """, + ) x_abinit_energy_psp_core = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Pseudopotential core energy - ''') + """, + ) x_abinit_energy_psp_local = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Local pseudopotential energy - ''') + """, + ) x_abinit_energy_psp_nonlocal = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Non-local pseudopotential energy - ''') + """, + ) x_abinit_energy_internal = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Internal energy - ''') + """, + ) x_abinit_energy_ktentropy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" -kT*entropy - ''') + """, + ) x_abinit_energy_band = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Band energy - ''') + """, + ) x_abinit_section_stress_tensor = SubSection( - sub_section=x_abinit_section_stress_tensor.m_def, - repeats=True) + sub_section=x_abinit_section_stress_tensor.m_def, repeats=True + ) x_abinit_unit_cell_volume = Quantity( type=np.dtype(np.float64), - unit='meter**3', + unit="meter**3", shape=[], - description=''' + description=""" Unit cell volume - ''') + """, + ) - x_abinit_screening = SubSection(sub_section=x_abinit_screening_dataset.m_def, repeats=True) + x_abinit_screening = SubSection( + sub_section=x_abinit_screening_dataset.m_def, repeats=True + ) x_abinit_gw = SubSection(sub_section=x_abinit_gw_dataset.m_def, repeats=True) class x_abinit_section_dataset(abinit_autogenerated.x_abinit_section_dataset): - m_def = Section(validate=False, extends_base_section=True) x_abinit_geometry_optimization_converged = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether a geometry optimization is converged. - ''') + """, + ) x_abinit_eig_filename = Quantity( type=str, shape=[], - description=''' + description=""" Name of file where the eigenvalues were written to. - ''') + """, + ) x_abinit_section_dataset_header = SubSection( - sub_section=x_abinit_section_dataset_header.m_def, - repeats=True) + sub_section=x_abinit_section_dataset_header.m_def, repeats=True + ) diff --git a/electronicparsers/abinit/metainfo/abinit_autogenerated.py b/electronicparsers/abinit/metainfo/abinit_autogenerated.py index 008f6338..fb89b771 100644 --- a/electronicparsers/abinit/metainfo/abinit_autogenerated.py +++ b/electronicparsers/abinit/metainfo/abinit_autogenerated.py @@ -16,10 +16,17 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, Reference + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + Reference, ) import runschema.run # pylint: disable=unused-import @@ -32,6018 +39,6756 @@ class x_abinit_var(MCategory): - ''' + """ section describing the ABINIT variables - ''' + """ m_def = Category() class x_abinit_section_input(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_abinit_var_accuracy = Quantity( type=np.dtype(np.int32), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable ACCURACY - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_acell = Quantity( type=np.dtype(np.float64), shape=[3], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable CELL lattice vector scaling - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_adpimd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable ADiabatic Path-Integral Molecular Dynamics - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_adpimd_gamma = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable ADiabatic Path-Integral Molecular Dynamics: GAMMA factor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_algalch = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_ntypalch'], - description=''' + shape=["x_abinit_var_ntypalch"], + description=""" ABINIT variable ALGorithm for generating ALCHemical pseudopotentials - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_amu = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable Atomic Mass Units - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_angdeg = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable ANGles in DEGrees - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_asr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Acoustic Sum Rule - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_atvshift = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_natom', 'x_abinit_var_nsppol', 'x_abinit_var_natvshift'], - description=''' + shape=["x_abinit_var_natom", "x_abinit_var_nsppol", "x_abinit_var_natvshift"], + description=""" ABINIT variable ATomic potential (V) energy SHIFTs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_autoparal = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable AUTOmatisation of the PARALlelism - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_awtr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable evaluate the Adler-Wiser expression of $\\chi^{0}_{KS}$ assuming Time-Reversal - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bandpp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BAND Per Processor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bdberry = Quantity( type=np.dtype(np.int32), shape=[4], - description=''' + description=""" ABINIT variable BanD limits for BERRY phase - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bdeigrf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BanD for second-order EIGenvalues from Response-Function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bdgw = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nsppol', 'x_abinit_var_nkptgw', 2], - description=''' + shape=["x_abinit_var_nsppol", "x_abinit_var_nkptgw", 2], + description=""" ABINIT variable BanDs for GW calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_berryopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BERRY phase OPTions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_berrysav = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BERRY SAVe - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_berrystep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BERRY phase : multiple STEP - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bfield = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable finite B FIELD calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bmass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Barostat MASS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_boxcenter = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable BOX CENTER - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_boxcutmin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable BOX CUT-off MINimum - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_brvltt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BRaVais LaTTice type - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_algorithm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter ALGORITHM - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_calctype = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter CALCulation TYPE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_coulomb_term = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter COULOMB TERM - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_coupling = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter COUPLING - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_eh_cutoff = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable Bethe-Salpeter Electron-Hole CUTOFF - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_exchange_term = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter EXCHANGE TERM - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_freq_mesh = Quantity( type=np.dtype(np.float64), shape=[3], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Bethe-Salpeter FREQuency MESH - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_hayd_term = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter HAYdock TERMinator - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_haydock_niter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter HAYDOCK Number of Iterations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_haydock_tol = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" ABINIT variable Bethe-Salpeter HAYDOCK TOLerance - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_interp_kmult = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Bethe-Salpeter INTERPolation K-point MULTiplication factors - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_interp_m3_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter INTERPolation Method3 WIDTH - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_interp_method = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter INTERPolation METHOD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_interp_mode = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter INTERPolation MODE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_interp_prep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter INTERPolation PREParation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_interp_rl_nb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter INTERPolation Rohlfing & Louie NeighBour - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_loband = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nsppol'], - description=''' + shape=["x_abinit_var_nsppol"], + description=""" ABINIT variable Bethe-Salpeter Lowest Occupied BAND - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bs_nstates = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Bethe-Salpeter Number of States - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_builtintest = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable BUIT-IN TEST number - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_bxctmindg = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable BoX CuT-off MINimum for the Double Grid (PAW) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_customnimfrqs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Contour Deformation Custom Imaginary Frequencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_frqim_method = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Contour Deformation Imaginary Frequency integration Method - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_full_grid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Contour Deformation Full Grid in complex plane - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_halfway_freq = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Contour Deformation tangent grid Halfway Frequency - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_imfrqs = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_cd_customnimfrqs'], - description=''' + shape=["x_abinit_var_cd_customnimfrqs"], + description=""" ABINIT variable Contour Deformation Imaginary Frequencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_max_freq = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Contour Deformation grid Maximum Frequency - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cd_subset_freq = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable Contour Deformation grid calculate Subset of Frequencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cgtyphf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Conjugate Gradient TYpe used for Hartree Fock exact exchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable CHARGE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_chkexit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable CHecK whether the user want to EXIT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_chkprim = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable CHecK whether the cell is PRIMitive - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_chksymbreak = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable CHecK SYMmetry BREAKing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_chneut = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable CHarge NEUTrality treatment - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cineb_start = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Climbing-Image Nudged Elastic Band: STARTing iteration - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cpuh = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable CPU time limit in Hours - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cpum = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable CPU time limit in Minutes - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_cpus = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable CPU time limit in seconds - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert1_atpol = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 1: limits of ATomic POLarisations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert1_dir = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 1: DIRections - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert1_elfd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 1: ELectric FielD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert1_phon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 1: PHONons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert2_atpol = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 2: limits of ATomic POLarisations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert2_dir = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 2: DIRections - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert2_elfd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 2: ELectric FielD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert2_phon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 2: PHONons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert3_atpol = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 3: limits of ATomic POLarisations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert3_dir = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 3: DIRections - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert3_elfd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 3: ELectric FielD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_d3e_pert3_phon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable 3rd Derivative of Energy, mixed PERTurbation 3: PHONons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ddamp = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable electric Displacement field DAMPing parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ddb_ngqpt = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Derivative DatabBase: Number of Grid points for Q-PoinTs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_delayperm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable DELAY between trials to PERMUTE atoms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_densfor_pred = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable DENSity and FORces PREDictor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_densty = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable initial DENSity for each TYpe of atom - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dfield = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable Displacement FIELD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dfpt_sciss = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable DFPT SCISSor operator - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_diecut = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable DIElectric matrix Energy CUToff - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_diegap = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable DIElectric matrix GAP - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dielam = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable DIElectric matrix LAMbda - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dielng = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable model DIElectric screening LeNGth - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_diemac = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable model DIElectric MACroscopic constant - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_diemix = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable model DIElectric MIXing factor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_diemixmag = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable model DIElectric MIXing factor for the MAGgnetization - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_diismemory = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Direct Inversion in the Iterative Subspace MEMORY - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dilatmx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable DILATation : MaXimal value - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dipdip = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable DIPole-DIPole interaction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmatpawu = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_natpawu', 'max(x_abinit_var_nsppol, x_abinit_var_nspinor)', '2*max(x_abinit_var_lpawu)+1', '2*max(x_abinit_var_lpawu)+1'], - description=''' + shape=[ + "x_abinit_var_natpawu", + "max(x_abinit_var_nsppol, x_abinit_var_nspinor)", + "2*max(x_abinit_var_lpawu)+1", + "2*max(x_abinit_var_lpawu)+1", + ], + description=""" ABINIT variable initial Density MATrix for PAW+U - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmatpuopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Density MATrix for PAW+U OPTion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmatudiag = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Density MATrix for paw+U, DIAGonalization - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_dc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Double Counting - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_entropy = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: ENTROPY - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_iter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: number of ITERation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_mxsf = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: MiXing parameter for the SelF energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_nlambda = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Number of LAMBDA points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_nwli = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Number of frequency omega (W) in the LInear mesh - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_nwlo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Number of frequency omega (W) in the log mesh - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_read_occnd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Read Occupations (Non Diagonal) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_rslf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Read SeLF energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_solv = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: choice of SOLVer - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_t2g = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: t2g orbitals - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmft_tollc = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Tolerance on Local Charge for convergence of the DMFT loop - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftbandf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Field Theory: BAND: Final - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftbandi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Field Theory: BAND: Initial - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftcheck = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: CHECKs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_basis = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo basis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_check = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo check - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_correl = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo CORRelations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_gmove = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo Global MOVEs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_grnns = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo GReeNs NoiSe - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_meas = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo MEASurements - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_mov = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo MOVie - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_mrka = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo MARKov Analysis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftctqmc_order = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Continuous Time Quantum Monte Carlo perturbation ORDER - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftqmc_l = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Quantum Monte Carlo time sLices - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftqmc_n = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Quantum Monte Carlo sweeps - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftqmc_seed = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Quantum Monte Carlo seed - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dmftqmc_therm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Dynamical Mean Fied Theory: Quantum Monte Carlo THERMalization - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dosdeltae = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable DOS Delta in Energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dtion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Delta Time for IONs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_dynimage = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nimage'], - description=''' + shape=["x_abinit_var_nimage"], + description=""" ABINIT variable DYNamics of the IMAGE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ecut = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Energy CUToff - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ecuteps = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Energy CUT-off for EPSilon (the dielectric matrix) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ecutsigx = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Energy CUT-off for SIGma eXchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ecutsm = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Energy CUToff SMearing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ecutwfn = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Energy CUT-off for WaveFunctions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_effmass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable EFFective MASS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efield = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable Electric FIELD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_bands = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nkpt', 2], - description=''' + shape=["x_abinit_var_nkpt", 2], + description=""" ABINIT variable EFfective MASs, BANDS to be treated. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_calc_dirs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs, CALCulate along DIRectionS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_deg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs, activate DEGenerate formalism - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_deg_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs, DEGeneracy TOLerance - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_dim = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs, DIMension of the effective mass tensor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_dirs = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_efmas_n_dirs', '3 or 2'], - description=''' + shape=["x_abinit_var_efmas_n_dirs", "3 or 2"], + description=""" ABINIT variable EFfective MASs, DIRectionS to be calculated - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_n_dirs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs, Number of DIRectionS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_efmas_ntheta = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EFfective MASs, Number of points for integration w/r to THETA - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_elph2_imagden = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable ELectron-PHonon interaction at 2nd order : IMAGina y shoft of the DENominator - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_enunit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable ENergy UNITs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_extrael = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Electron-PHonon: EXTRA ELectrons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_fermie = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Electron-PHonon: Fermi Energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_fsewin = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Electron-Phonon: Fermi Surface Energy WINdow - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_fsmear = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Electron-PHonon: Fermi surface SMEARing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_intmeth = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Electron-Phonon: INTegration METHod - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_mustar = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable MU STAR - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eph_ngqpt_fine = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Number of Grid Q-Points in FINE grid. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_eshift = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Energy SHIFT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_esmear = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Eigenvalue SMEARing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_exchmix = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable EXCHange MIXing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_exchn2n3d = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable EXCHange N2 and N3 Dimensions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_extrapwf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable flag - EXTRAPolation of the Wave-Functions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_f4of2_sla = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable F4 Over F2 ratio of Slater integrals - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_f6of2_sla = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable F6 Over F2 ratio of Slater integrals - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_fband = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Factor for the number of BANDs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_fermie_nest = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable FERMI Energy for printing the NESTing function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_fftalg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Fast Fourier Transform ALGorithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_fftcache = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Fast Fourier Transform CACHE size - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_fftgw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable FFT for GW calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_freqim_alpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable FREQuencies along the IMaginary axis ALPHA parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_freqremax = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable FREQuencies along the Real axis MAXimum - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_freqremin = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable FREQuencies along the Real axis MINimum - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_freqspmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable FREQuencies for the SPectral function MAXimum - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_freqspmin = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable FREQuencies for the SPectral function MINimum - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_friction = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable internal FRICTION coefficient - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_frzfermi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable FReeZe FERMI energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_fxcartfactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Forces to (X) CARTesian coordinates FACTOR - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ga_algor = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Genetic Algorithm selection - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ga_fitness = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Genetic Algorithm FITNESS function selection - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ga_n_rules = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Genetic Algorithm Number of RULES - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ga_opt_percent = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Genetic Algorithm OPTIMAL PERCENT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ga_rules = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Genetic Algorithm RULES - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_genafm = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable GENerator of the translation for Anti-FerroMagnetic space group - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_get1den = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the first-order density from _DEN file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_get1wf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the first-order wavefunctions from _1WF file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getbscoup = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the Bethe-Salpeter COUPling block from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getbseig = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the Bethe-Salpeter EIGenstates from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getbsreso = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the Bethe-Salpeter RESOnant block from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getcell = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET CELL parameters from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getddb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the DDB from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getddk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the ddk wavefunctions from _1WF file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the DENsity from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getgam_eig2nkq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the GAMma phonon data EIG2NKQ from dataset - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gethaydock = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the Haydock restart file from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getocc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET OCC parameters from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getqps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET QuasiParticle Structure - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getscr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET SCReening (the inverse dielectric matrix) from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getsuscep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET SUSCEPtibility (the irreducible polarizability) from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getvel = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET VEL from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getwfk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of _1WF files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getwfkfine = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the fine grid wavefunctions from _WFK file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getwfq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET the wavefunctions from _WFQ file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getxcart = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET XCART from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_getxred = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GET XRED from ... - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_goprecon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Geometry Optimization PRECONditioner equations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_goprecprm = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable Geometry Optimization PREconditioner PaRaMeters equations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gpu_devices = Quantity( type=np.dtype(np.int32), shape=[5], - description=''' + description=""" ABINIT variable GPU: choice of DEVICES on one node - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gpu_linalg_limit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GPU (Cuda): LINear ALGebra LIMIT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw1rdm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW 1-Reduced Density Matrix - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_customnfreqsp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW CUSTOM SPectral FREQuencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_freqsp = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_gw_customnfreqsp'], - description=''' + shape=["x_abinit_var_gw_customnfreqsp"], + description=""" ABINIT variable GW SPectral FREQuencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_frqim_inzgrid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Contour Deformation Imaginary Frequencies Inverse Z Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_frqre_inzgrid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Contour Deformation Real Frequencies Inverse Z Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_frqre_tangrid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Contour Deformation Use Tangent Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_icutcoul = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW CUT-off for COULomb interaction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_invalid_freq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Invalid Frequency for Hybertsen-Louie PPM - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_nqlwl = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW, Number of Q-points for the Long Wave-Length Limit - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_nstep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW Number of self-consistent STEPS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_qlwl = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_gw_nqlwl', 3], - description=''' + shape=["x_abinit_var_gw_nqlwl", 3], + description=""" ABINIT variable GW, Q-points for the Long Wave-Length Limit - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_qprange = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW Policy for K-point and Bands selection - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_sctype = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW, Self-Consistency TYPE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_sigxcore = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW, SIGma (self-energy) for the CORE contribution - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gw_toldfeig = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable GW TOLerance on the DiFference of the EIGenvalues - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwaclowrank = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW Analytic Continuation LOW RANK approximation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwcalctyp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW CALCulation TYPe - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwcomp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW COMPletness - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwencomp = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable GW Energy for COMPletness - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwgamma = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW Gamma - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwgmcorr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW Galitskii-Migdal CORRelation energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_band_index = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS BAND INDEX - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_correlation = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS CORRELATION - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_dielectric_model = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS dielectric model, version old - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_diel_model = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS dielectric model, version new - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_exchange = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS exact EXCHANGE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_first_seed = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS FIRST SEED vector - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_kmax_analytic = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS KMAX for the ANALYTIC term - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_kmax_complement = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS KMAX for the COMPLEMENT space. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_kmax_numeric = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS KMAX for the NUMERIC term - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_kmax_poles = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS KMAX for the calculation of the POLES residue - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_list_proj_freq = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_gwls_n_proj_freq'], - description=''' + shape=["x_abinit_var_gwls_n_proj_freq"], + description=""" ABINIT variable GWLS LIST of the PROJection FREQuencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_model_parameter = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable GWLS model parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_n_proj_freq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS Number of PROJection FREQuencies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_npt_gauss_quad = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS Number of PoinTs to use for the GAUSSian QUADrature - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_nseeds = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS Number of SEED vectorS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_print_debug = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS PRINT level for DEBUGging - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_recycle = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS RECYCLE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_second_model_parameter = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable GWLS second model parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_sternheimer_kmax = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS Kmax, version old - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwls_stern_kmax = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GWLS Kmax, version new - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwmem = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW MEMory - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwpara = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW PARAllelization level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_gwrpacorr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable GW RPA CORRelation energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iatcon = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nconeq', 'x_abinit_var_natcon'], - description=''' + shape=["x_abinit_var_nconeq", "x_abinit_var_natcon"], + description=""" ABINIT variable Indices of AToms in CONstraint equations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iatfix = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_natfix'], - description=''' + shape=["x_abinit_var_natfix"], + description=""" ABINIT variable Indices of AToms that are FIXed - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iatfixx = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_natfixx'], - description=''' + shape=["x_abinit_var_natfixx"], + description=""" ABINIT variable Indices of AToms that are FIXed along the X direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iatfixy = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_natfixy'], - description=''' + shape=["x_abinit_var_natfixy"], + description=""" ABINIT variable Indices of AToms that are FIXed along the Y direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iatfixz = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_natfixz'], - description=''' + shape=["x_abinit_var_natfixz"], + description=""" ABINIT variable Indices of AToms that are FIXed along the Z direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iatsph = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_natsph'], - description=''' + shape=["x_abinit_var_natsph"], + description=""" ABINIT variable Index for the ATomic SPHeres of the atom-projected density-of- states - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iboxcut = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer governing the internal use of BOXCUT - not a very good choice of variable name - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_icoulomb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Coulomb TReaTMenT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_icutcoul = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the CUT-off for COULomb interaction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ieig2rf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for second-order EIGenvalues from Response-Function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_imgmov = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable IMaGe MOVEs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_inclvkb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable INCLude VKB - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_intxc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable INTerpolation for eXchange-Correlation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iomode = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable IO MODE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ionmov = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable IONic MOVEs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iprcel = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for PReConditioning of ELectron response - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iprcfc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for PReConditioner of Force Constants - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_iqpt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Index for QPoinT generation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irandom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for the choice of the RANDOM number generator - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ird1den = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of 1st-order DEN file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ird1wf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of _1WF files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdbscoup = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of COUPling block - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdbseig = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of BS_EIG file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdbsreso = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of RESOnant block - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdddb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of DDB file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdddk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of DDK wavefunctions, in _1WF files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of DEN file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdhaydock = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of the HAYDOCK restart file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdqps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of QuasiParticle Structure - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdscr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of the SCReening - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdsuscep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of the SUSCEPtibility - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdvdw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of _VDW files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdwfk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of _WFK files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdwfkfine = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of the fine grid _WFK files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_irdwfq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer that governs the ReaDing of _WFQ files - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_isecur = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for level of SECURity choice - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_istatimg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer governing the computation of STATic IMaGes - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_istatr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for STATus file SHiFT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_istatshft = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for STATus file SHiFT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_istwfk = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nkpt'], - description=''' + shape=["x_abinit_var_nkpt"], + description=""" ABINIT variable Integer for choice of STorage of WaveFunction at each k point - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ixc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for eXchange-Correlation choice - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ixc_sigma = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Index of eXchange-Correlation functional used for self-energy calculations (SIGMA) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ixcpositron = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Integer for the eXchange-Correlation applied to the electron- POSITRON interaction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_jdtset = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_ndtset'], - description=''' + shape=["x_abinit_var_ndtset"], + description=""" ABINIT variable index -J- for DaTaSETs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_jellslab = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable include a JELLium SLAB in the cell - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_jfielddir = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable electric/displacement FIELD DIRection - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_jpawu = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - unit='hartree', - description=''' + shape=["x_abinit_var_ntypat"], + unit="hartree", + description=""" ABINIT variable value of J for PAW+U - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kberry = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nberry', 3], - description=''' + shape=["x_abinit_var_nberry", 3], + description=""" ABINIT variable K wavevectors for BERRY phase computation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kpt = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nkpt', 3], - description=''' + shape=["x_abinit_var_nkpt", 3], + description=""" ABINIT variable K - PoinTs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptbounds = Quantity( type=np.dtype(np.float64), - shape=['abs(x_abinit_var_kptopt)+1)', 3], - description=''' + shape=["abs(x_abinit_var_kptopt)+1)", 3], + description=""" ABINIT variable K PoinTs BOUNDarieS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptgw = Quantity( type=np.dtype(np.float64), - shape=[3, 'x_abinit_var_nkptgw'], - description=''' + shape=[3, "x_abinit_var_nkptgw"], + description=""" ABINIT variable K-PoinTs for GW calculations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptnrm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable K - PoinTs NoRMalization - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptns = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nkpt', 3], - description=''' + shape=["x_abinit_var_nkpt", 3], + description=""" ABINIT variable K-PoinTs re-Normalized and Shifted - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable KPoinTs OPTion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptrlatt = Quantity( type=np.dtype(np.int32), shape=[3, 3], - description=''' + description=""" ABINIT variable K - PoinTs grid : Real space LATTice - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kptrlen = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable K - PoinTs grid : Real space LENgth - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_kssform = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Kohn Sham Structure file FORMat - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_lexexch = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable value of angular momentum L for EXact EXCHange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_localrdwf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable LOCAL ReaD WaveFunctions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_lotf_classic = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable LOTF classic model for Glue model - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_lotf_nitex = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable LOTF number of iterations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_lotf_nneigx = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable LOTF max number of neighbours - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_lotf_version = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable LOTF version of MD algorithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_lpawu = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable value of angular momentum L for PAW+U - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_macro_uj = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Macro variable that activates the determination of the U and J parameter (for the PAW+U calculations) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_magcon_lambda = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable MAGnetization CONstraint LAMBDA parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_magconon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable turn MAGnetization CONstraint ON - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_max_ncpus = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable MAXimum Number of CPUS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_maxestep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable MAXimum Electric field STEP - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_maxnsym = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable MAXimum Number of SYMetries - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mband = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Maximum number of BANDs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mbpt_sciss = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Many Body Perturbation Theory SCISSor operator - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mdf_epsinf = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Model dielectric function, epsilon infinity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mdtemp = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" ABINIT variable Molecular Dynamics Temperatures - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mdwall = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Molecular Dynamics WALL location - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mem_test = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable MEMory TEST - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mep_mxstep = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable Minimal Energy Path search: MaXimum allowed STEP size - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mep_solver = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Minimal Energy Path ordinary differential equation SOLVER - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mgfft = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Maximum of nGFFT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mgfftdg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Maximum of nGFFT for the Double Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mixalch = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypalch', 'x_abinit_var_npspalch'], - description=''' + shape=["x_abinit_var_ntypalch", "x_abinit_var_npspalch"], + description=""" ABINIT variable MIXing coefficients for ALCHemical potentials - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mpw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Maximum number of Plane Waves - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mqgrid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Maximum number of Q-space GRID points for pseudopotentials - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_mqgriddg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Maximum number of Q-wavevectors for the 1-dimensional GRID for the Double Grid in PAW - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natcon = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nconeq'], - description=''' + shape=["x_abinit_var_nconeq"], + description=""" ABINIT variable Number of AToms in CONstraint equations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natfix = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Atoms that are FIXed - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natfixx = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Atoms that are FIXed along the X direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natfixy = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Atoms that are FIXed along the Y direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natfixz = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Atoms that are FIXed along the Z direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of ATOMs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natpawu = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of AToms on which PAW+U is applied - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natrd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of AToms ReaD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natsph = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of ATomic SPHeres for the atom-projected density-of-states - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natsph_extra = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of ATomic SPHeres for the l-projected density-of-states in EXTRA set - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_natvshift = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of ATomic potential (V) energy SHIFTs (per atom) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nband = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nkpt', 'x_abinit_var_nsppol'], - description=''' + shape=["x_abinit_var_nkpt", "x_abinit_var_nsppol"], + description=""" ABINIT variable Number of BANDs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nbandhf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of BANDs for Fock exact exchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nbandkss = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of BANDs in the KSS file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nbdblock = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of BanDs in a BLOCK - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nbdbuf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of BanDs for the BUFfer - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nberry = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of BERRY phase computations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nc_xccc_gspace = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Norm-Conserving, use XC Core-Correction in G-space - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nconeq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of CONstraint EQuations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nctime = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable NetCdf TIME between output of molecular dynamics informations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ndivk = Quantity( type=np.dtype(np.int32), - shape=['abs(x_abinit_var_kptopt)'], - description=''' + shape=["abs(x_abinit_var_kptopt)"], + description=""" ABINIT variable Number of DIVisions of K lines - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ndivsm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of DIVisions for the SMallest segment - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ndtset = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of DaTaSETs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ndynimage = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of DYNamical IMAGEs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_neb_algo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Nudged Elastic Band ALGOrithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_neb_spring = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" ABINIT variable Nudged Elastic Band: SPRING constant - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nelect = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Number of ELECTrons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nfft = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of FFT points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nfftdg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of FFT points for the Double Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nfreqim = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of FREQuencies along the IMaginary axis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nfreqmidm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Nth FREQuencey Moment of the Imaginary part of the Dielectric Matrix - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nfreqre = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of FREQuencies along the REal axis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nfreqsp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of FREQuencies for the SPectral function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ngfft = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Number of Grid points for Fast Fourier Transform - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ngfftdg = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Number of Grid points for Fast Fourier Transform : Double Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ngkpt = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Number of Grid points for K PoinTs generation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ngqpt = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Number of Grid pointsfor Q PoinTs generation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nimage = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of IMAGEs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nkpt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of K - Points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nkptgw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of K-PoinTs for GW corrections - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nkpthf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of K - Points for Fock exact exchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nline = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of LINE minimisations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nloc_alg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Non LOCal ALGorithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nloc_mem = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Non LOCal MEMOry - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nnos = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of nose masses - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nnsclo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Non-Self Consistent LOops - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nnsclohf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Non-Self Consistent LOops for Fock exact exchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nobj = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of OBJects - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nomegasf = Quantity( type=np.dtype(np.int32), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Number of OMEGA to evaluate the Spectral Function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nomegasi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of OMEGA(S) along the Imaginary axis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nomegasrd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of OMEGA to evaluate the Sigma Real axis Derivative - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_normpawu = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable NORMalize atomic PAW+U projector - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_noseinert = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable NOSE thermostat INERTia factor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_np_slk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of mpi Processors used for ScaLapacK calls - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npband = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors at the BAND level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npfft = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors at the FFT level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nphf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors for Fock exact exchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npimage = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors at the IMAGE level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npkpt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors at the K-Point Level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nppert = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors at the PERTurbation level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npsp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PSeudoPotentials - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npspalch = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PSeudoPotentials that are "ALCHemical" - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npspinor = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Processors at the SPINOR level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npulayit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PULAY ITerations for SC mixing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npvel = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Particle VELocities - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npweps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PlaneWaves for EPSilon (the dielectric matrix) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npwkss = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PlaneWaves in the KSS file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npwsigx = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PlaneWaves for SIGma eXchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_npwwfn = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of PlaneWaves for WaveFunctioNs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nqpt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Q - POINTs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nqptdm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of Q-PoinTs for the Dielectric Matrix - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nscforder = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SCaling Function ORDER - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nshiftk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of SHIFTs for K point grids - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nshiftq = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of SHIFTs for Q point grids - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nspden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of SPin-DENsity components - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nspinor = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of SPINORial components of the wavefunctions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nsppol = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of SPin POLarization - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nstep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of (non-)self-consistent field STEPS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nsym = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of SYMmetry operations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ntime = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of TIME steps - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ntimimage = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of TIME steps for IMAGE propagation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ntypalch = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of TYPe of atoms that are "ALCHemical" - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ntypat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of TYPEs of atoms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ntyppure = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of TYPe of atoms that are "PURe" - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nucdipmom = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_natom', 3], - description=''' + shape=["x_abinit_var_natom", 3], + description=""" ABINIT variable NUClear DIPole MOMents - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_nwfshist = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Number of WaveFunctionS HISTory - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objaat = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_objan'], - description=''' + shape=["x_abinit_var_objan"], + description=""" ABINIT variable OBJect A : list of AToms, OBJect B : list of AToms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objaax = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable OBJect A : AXis, OBJect B : AXis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objan = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OBJect A : Number of atoms, OBJect B : Number of atoms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objarf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OBJect A : Repetition Factors, OBJect B : Repetition Factors - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objaro = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable OBJect A : ROtations, OBJect B : ROtations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objatr = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable OBJect A : TRanslations, OBJect B : TRanslations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objbat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OBJect A : list of AToms, OBJect B : list of AToms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objbax = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable OBJect A : AXis, OBJect B : AXis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objbn = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OBJect A : Number of atoms, OBJect B : Number of atoms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objbrf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OBJect A : Repetition Factors, OBJect B : Repetition Factors - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objbro = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable OBJect A : ROtations, OBJect B : ROtations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_objbtr = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable OBJect A : TRanslations, OBJect B : TRanslations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_occ = Quantity( type=np.dtype(np.float64), - shape=['sum(x_abinit_var_nband)'], - description=''' + shape=["sum(x_abinit_var_nband)"], + description=""" ABINIT variable OCCupation numbers - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_occopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OCCupation OPTion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_omegasimax = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable OMEGA to evaluate Sigma along the Imaginary axis D: MAXimal value - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_omegasrdmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable OMEGA to evaluate the Sigma Real axis Derivative : MAXimal value - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_optcell = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OPTimize the CELL shape and dimensions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_optdriver = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OPTions for the DRIVER - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_optforces = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OPTions for the calculation of FORCES - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_optnlxccc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OPTion for the calculation of Non-Linear eXchange-Correlation Core Correction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_optstress = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable OPTion for the computation of STRess - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ortalg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable ORThogonalisation ALGorithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_papiopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAPI OPTion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_paral_atom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable activate PARALelization over (paw) ATOMic sites - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_paral_kgb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable activate PARALelization over K-point, G-vectors and Bands - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_paral_rf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable activate PARALlelization over Response Function perturbations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawcpxocc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - use ComPleX rhoij OCCupancies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawcross = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - add CROSS term in oscillator strengths - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawecutdg = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable PAW - Energy CUToff for the Double Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawfatbnd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW: print band structure in the FAT-BaND representation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawlcutd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - L angular momentum used to CUT the development in moments of the Densitites - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawlmix = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - maximum L used in the spherical part MIXing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawmixdg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - MIXing is done (or not) on the (fine) Double Grid - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawnhatxc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - Flag for exact computation of gradients of NHAT density in eXchange-Correlation. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawnphi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - Number of PHI angles used to discretize the sphere around each atom. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawntheta = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - Number of THETA angles used to discretize the sphere around each atom. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawnzlm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - only compute Non-Zero LM-moments of the contributions to the density from the spheres - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawoptmix = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - OPTion for the MIXing of the spherical part - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawoptosc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - OPTion for the computation of the OSCillator matrix elements - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawovlp = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable PAW - spheres OVerLap allowed (in percentage) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawprt_b = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW print band - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawprt_k = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW print k-point - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawprtden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW: PRinT total physical electron DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawprtdos = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW: PRinT partial DOS contributions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawprtvol = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW: PRinT VOLume - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawprtwf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW: PRinT WaveFunctions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawspnorb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - option for SPiN-ORBit coupling - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawstgylm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - option for the STorage of G_l(r).YLM(r) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawsushat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - SUSceptibility, inclusion of HAT (compensation charge) contribution - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawujat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW+macro_UJ, ATom number - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawujrad = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable PAW+macro_UJ, sphere RADius - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawujv = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable PAW+macro_UJ, potential shift (V) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawusecp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - option for the USE of CPrj in memory (cprj=WF projected with NL projector) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pawxcdev = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PAW - choice for eXchange-Correlation DEVelopment (spherical part) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_intmeth = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PHonon: INTegration METHod - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_ndivsm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PHonon: number of divisions for sampling the smallest segment - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_ngqpt = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable PHonon: Number of Grid points for Q-PoinT mesh. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_nqpath = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PHonon: numer of Q-points defining the PATH - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_nqshift = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PHonons: Number of q-SHIFTs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_qpath = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ph_nqpath', 3], - description=''' + shape=["x_abinit_var_ph_nqpath", 3], + description=""" ABINIT variable Phonon: Q-PATH - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_qshift = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ph_nqshift', 3], - description=''' + shape=["x_abinit_var_ph_nqshift", 3], + description=""" ABINIT variable PHONONS: Q-SHIFTs for mesh. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_smear = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable PHonon: SMEARing factor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ph_wstep = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable PHonons: frequency STEP. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pimass = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable Path Integral fictitious MASSes - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pitransform = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Path Integral coordinate TRANSFORMation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_bandf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions Initial BAND - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_bandi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions Initial BAND - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_compute = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions COMPUTATION - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_iatom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions, ATOM Index - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_it = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_plowan_nt', 3], - description=''' + shape=["x_abinit_var_plowan_nt", 3], + description=""" ABINIT variable Projected Local Orbital WANnier functions, Index of Translation. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_lcalc = Quantity( type=np.dtype(np.int32), - shape=['sum(x_abinit_var_plowan_nbl)'], - description=''' + shape=["sum(x_abinit_var_plowan_nbl)"], + description=""" ABINIT variable Projected Local Orbital WANnier functions, L values to use for CALCulation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_natom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions, Number of ATOMs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_nbl = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_plowan_natom'], - description=''' + shape=["x_abinit_var_plowan_natom"], + description=""" ABINIT variable Projected Local Orbital WANnier functions, NumBer of L values - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_nt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions, Number of Translation on which the real space values ofenergy are computed - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_projcalc = Quantity( type=np.dtype(np.int32), - shape=['sum(x_abinit_var_plowan_nbl)'], - description=''' + shape=["sum(x_abinit_var_plowan_nbl)"], + description=""" ABINIT variable Projected Local Orbital WANnier functions, PROJectors values to use for CALCulation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_plowan_realspace = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Projected Local Orbital WANnier functions, activate REAL SPACE calculation. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_polcen = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable POLarization for Centrosymmetric geometry - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_posdoppler = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable POSitron computation of DOPPLER broadening - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_positron = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable POSITRON calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_posnstep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable POSitron calculation: max. Number of STEPs for the two-component DFT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_posocc = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable POSitron calculation: OCCupation number for the positron - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_postoldfe = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable POSITRON calculation: TOLerance on the DiFference of total Energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_postoldff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable POSitron calculation: TOLerance on the DiFference of Forces - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ppmfrq = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Plasmon Pole Model FReQuency - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ppmodel = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Plasmon Pole MODEL - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prepanl = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PREPAre Non-Linear response calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prepgkk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PREPAre GKK calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prepscphon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PREPare Self-Consistent PHONon calculation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prt1dm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT 1-DiMensional potential and density - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtatlist = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT by ATom LIST of ATom - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtbbb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Band-By-Band decomposition - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtbltztrp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT output for BoLTZTRaP code - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtcif = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Crystallographic Information File - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtdensph = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT integral of DENsity inside atomic SPHeres - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtdipole = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT DIPOLE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtdos = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the Density Of States - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtdosm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the Density Of States with M decomposition - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtefg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRint Electric Field Gradient - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prteig = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT EIGenenergies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtelf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Electron Localization Function (ELF) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtfc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Fermi Contact term - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtfsurf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Fermi SURFace file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtgden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the Gradient of electron DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtgeo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the GEOmetry analysis - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtgkk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the GKK matrix elements file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtgsr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the GSR file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtkden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the Kinetic energy DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtkpt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the K-PoinTs sets - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtlden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the Laplacian of electron DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtnabla = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRint NABLA - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtnest = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT NESTing function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtposcar = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT POSCAR file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtpot = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT V_XC - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtpsps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRint the PSPS file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtspcur = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the SPin CURrent density - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtstm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the STM density - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtsuscep = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the SUSCEPtibility file (the irreducible polarizability) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvclmb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT V CouLoMB - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvdw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Van Der Waals file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvha = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT V_HArtree - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvhxc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT V_HXC - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvol = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT VOLume - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvolimg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT VOLume for IMaGes - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvpsp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT V_PSeudoPotential - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtvxc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT V_XC - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtwant = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT WANT file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtwf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT the WaveFunction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtwf_full = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT Wavefunction file on the FULL mesh - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_prtxml = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PRinT an XML output - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ptcharge = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable PoinT CHARGEs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ptgroupma = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable PoinT GROUP number for the MAgnetic space group - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_pvelmax = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable Particle VELocity MAXimum - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qmass = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nnos'], - description=''' + shape=["x_abinit_var_nnos"], + description=""" ABINIT variable Q thermostat mass - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qprtrb = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Q-wavevector of the PERTurbation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qpt = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable Q PoinT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qptdm = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nqptdm', 3], - description=''' + shape=["x_abinit_var_nqptdm", 3], + description=""" ABINIT variable Q-PoinTs for the Dielectric Matrix - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qptn = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable Q-PoinT re-Normalized - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qptnrm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Q PoinTs NoRMalization - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qptopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable QPoinTs OPTion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_qptrlatt = Quantity( type=np.dtype(np.int32), shape=[3, 3], - description=''' + description=""" ABINIT variable Q - PoinTs grid : Real space LATTice - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_quadmom = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable QUADrupole MOMents - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_random_atpos = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RANDOM ATomic POSitions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ratsph = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable Radii of the ATomic SPHere(s) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ratsph_extra = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable Radii of the ATomic SPHere(s) in the EXTRA set - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rcut = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Radius of the CUT-off for coulomb interaction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_recefermi = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable RECursion - initial guess of the FERMI Energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_recgratio = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RECursion - Grid Ratio - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_recnpath = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RECursion - Number of point for PATH integral calculations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_recnrec = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RECursion - Number of RECursions - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_recptrott = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RECursion - TROTTer P parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_recrcut = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RECursion - CUTing Radius - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rectesteg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RECursion - TEST on Electron Gas - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rectolden = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable RECursion - TOLerance on the difference of electronic DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_red_dfield = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable REDuced Displacement FIELD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_red_efield = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable REDuced Electric FIELD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_red_efieldbar = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable REDuced Electric FIELD BAR - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_restartxf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable RESTART from (X,F) history - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rf2_dkdk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function : 2nd Derivative of wavefunctions with respect to K - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfasr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function : Acoustic Sum Rule - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfatpol = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable Response Function : Acoustic Sum Rule - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfddk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function with respect to Derivative with respect to K - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfdir = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Response Function : DIRections - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfelfd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function with respect to the ELectric FielD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfmeth = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function METHod - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfphon = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function with respect to PHONons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfstrs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function with respect to STRainS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rfuser = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Response Function, USER-defined - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rhoqpmix = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable RHO QuasiParticle MIXing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_sigma_bsum_range = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable SIGMA: Band SUM RANGE - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_sigma_ngkpt = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable SIGMA: Number of Grid points for K PoinTs generation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_sigma_nshiftk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SIGMA: Number of SHIFTs for K point grids - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_sigma_shiftk = Quantity( type=np.dtype(np.int32), - shape=[3, 'x_abinit_var_sigma_nshiftk'], - description=''' + shape=[3, "x_abinit_var_sigma_nshiftk"], + description=""" ABINIT variable SHIFT for K points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rprim = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ABINIT variable Real space PRIMitive translations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_rprimd = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ABINIT variable Real space PRIMitive translations, Dimensional - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_scalecart = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable SCALE CARTesian coordinates - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_scphon_supercell = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Self Consistent PHONon SUPERCELL - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_scphon_temp = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Self Consistent PHONon TEMPerature - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_shiftk = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nshiftk', 3], - description=''' + shape=["x_abinit_var_nshiftk", 3], + description=""" ABINIT variable SHIFT for K points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_shiftq = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nshiftq', 3], - description=''' + shape=["x_abinit_var_nshiftq", 3], + description=""" ABINIT variable SHIFT for Q points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_signperm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SIGN of PERMutation potential - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_slabwsrad = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable jellium SLAB Wigner-Seitz RADius - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_slabzbeg = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable jellium SLAB BEGinning edge along the Z direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_slabzend = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable jellium SLAB ENDing edge along the Z direction - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_smdelta = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SMeared DELTA function - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_so_psp = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_npsp'], - description=''' + shape=["x_abinit_var_npsp"], + description=""" ABINIT variable Spin-Orbit treatment for each PSeudoPotential - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spbroad = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable SPectral BROADening - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spgaxor = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SPace Group : AXes ORientation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spgorig = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SPace Group : ORIGin - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spgroup = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SPace GROUP number - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spgroupma = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SPace GROUP number defining a MAgnetic space group - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spinat = Quantity( type=np.dtype(np.float64), - shape=['min(x_abinit_var_natom,x_abinit_var_natrd)', 3], - description=''' + shape=["min(x_abinit_var_natom,x_abinit_var_natrd)", 3], + description=""" ABINIT variable SPIN for AToms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spinmagntarget = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable SPIN-MAGNetization TARGET - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spmeth = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SPectral METHod - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_spnorbscl = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable SPin-ORBit SCaLing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_stmbias = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Scanning Tunneling Microscopy BIAS voltage - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_strfact = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable STRess FACTor - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_string_algo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable STRING method ALGOrithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_strprecon = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable STRess PRECONditioner - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_strtarget = Quantity( type=np.dtype(np.float64), shape=[6], - description=''' + description=""" ABINIT variable STRess TARGET - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_symafm = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nsym'], - description=''' + shape=["x_abinit_var_nsym"], + description=""" ABINIT variable SYMmetries, Anti-FerroMagnetic characteristics - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_symchi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SYMmetryze \\chi_o - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_symdynmat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SYMmetrize the DYNamical MATrix - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_symmorphi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SYMMORPHIc symmetry operations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_symrel = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_nsym', 3, 3], - description=''' + shape=["x_abinit_var_nsym", 3, 3], + description=""" ABINIT variable SYMmetry in REaL space - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_symsigma = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable SYMmetrization of SIGMA matrix elements - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_td_maxene = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Time-Dependent dft : MAXimal kohn-sham ENErgy difference - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_td_mexcit = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Time-Dependent dft : Maximal number of EXCITations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tfkinfunc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Thomas-Fermi KINetic energy FUNCtional - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tfw_toldfe = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Thomas-Fermi-Weizsacker: TOLerance on the DiFference of total Energy, for initialization steps - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_timopt = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable TIMing OPTion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tl_nprccg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable TaiL maximum Number of PReConditionner Conjugate Gradient iterations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tl_radius = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable TaiL expansion RADIUS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tnons = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nsym', 3], - description=''' + shape=["x_abinit_var_nsym", 3], + description=""" ABINIT variable Translation NON-Symmorphic vectors - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_toldfe = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable TOLerance on the DiFference of total Energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_toldff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLerance on the DiFference of Forces - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolimg = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable TOLerance on the mean total energy for IMaGes - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolmxde = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable TOLerance on the MaXimal Difference in Energy - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolmxf = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLerance on the MaXimal Force - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolrde = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLerance on the Relative Difference of Eigenenergies - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolrff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLerance on the Relative diFference of Forces - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolsym = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLERANCE for SYMmetries - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolvrs = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLerance on the potential V(r) ReSidual - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tolwfr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable TOLerance on WaveFunction squared Residual - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tphysel = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Temperature (PHYSical) of the ELectrons - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_tsmear = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Temperature of SMEARing - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_typat = Quantity( type=np.dtype(np.int32), - shape=['min(x_abinit_var_natom,x_abinit_var_natrd)'], - description=''' + shape=["min(x_abinit_var_natom,x_abinit_var_natrd)"], + description=""" ABINIT variable TYPE of atoms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ucrpa = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable calculation of the screened interaction U with the Constrained RPA method - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ucrpa_bands = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable For the calculation of U with the Constrained RPA method, gives correlated BANDS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ucrpa_window = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" ABINIT variable For the calculation of U with the Constrained RPA method, gives energy WINDOW - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_udtset = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable Upper limit on DaTa SETs - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_upawu = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - unit='hartree', - description=''' + shape=["x_abinit_var_ntypat"], + unit="hartree", + description=""" ABINIT variable value of U for PAW+U - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_use_gemm_nonlop = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE the GEMM routine for the application of the NON-Local OPerator - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_use_gpu_cuda = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable activate USE of GPU accelerators with CUDA (nvidia) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_use_nonscf_gkk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE NON-SCF calculation of GKK matrix elements (electron phonon) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_use_oldchi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE OLD CHI implementation for evaluating \\chi_o with eigenvalues taken from a QPS file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_use_slk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE ScaLapacK - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usedmatpu = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE of an initial Density MATrix in Paw+U - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usedmft = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE Dynamical Mean Field Theory - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_useexexch = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE of EXact EXCHange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usefock = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE FOCK exact exchange - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usekden = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE Kinetic energy DENsity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usepaw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE Projector Augmented Waves method - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usepawu = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE PAW+U (spherical part) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usepotzero = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE POTential ZERO - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userec = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE RECursion - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_useria = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USER Integer variable A - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userib = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USER Integer variable B - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_useric = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USER Integer variable C - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USER Integer variable D - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userie = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USER Integer variable E - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userra = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable USER Real variable A - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userrb = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable USER Real variable B - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userrc = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable USER Real variable C - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userrd = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable USER Real variable D - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_userre = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable USER Real variable E - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usewvl = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Use WaVeLet basis set - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_usexcnhat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE eXchange-Correlation with NHAT (compensation charge density) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_useylm = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable USE YLM (the spherical harmonics) - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vaclst = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_vacnum'], - description=''' + shape=["x_abinit_var_vacnum"], + description=""" ABINIT variable VACancies LiST - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vacnum = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable VACancies NUMber - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vacuum = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable VACUUM identification - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vacwidth = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable VACuum WIDTH - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vcutgeo = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable V (potential) CUT-off GEOmetry - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_acutmin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF MINimum Angular CUT-off - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_aratio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF RATIO between the highest andlowest Angle. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_damax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF MAXimum Angular Delta - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_damin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF MINimum Angular Delta - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_dcut = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF D-mesh CUT-off - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_dratio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF RATIO between the highest andlowest D. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_dsoft = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF SOFTening distance. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_gcut = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF K-space CUT-off - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_ndpts = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Number of D-mesh PoinTS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_ngpts = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Number of G-mesh PoinTS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_nqpts = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Number of Q-mesh PoinTS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_nrpts = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Number of R-PoinTS - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_nsmooth = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Number of SMOOTHening iterations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_phisoft = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF SOFTening PHI value. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_qcut = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Q-mesh CUT-off - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_qratio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF RATIO between highest andlowest Q - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_rcut = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Real-space CUT-off - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_rsoft = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF SOFTening radius. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF energy calculation threshold - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF global TOLERANCE. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_tweaks = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable vdW-DF tweaks. - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_df_zab = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable vdW-DF Zab parameter - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_nfrag = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable van der Waals Number of interacting FRAGments - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_supercell = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" ABINIT variable Van Der Waals correction from Wannier functions in SUPERCELL - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable van der Waals TOLerance - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_tol_3bt = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable van der Waals TOLerance for 3-Body Term - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_typfrag = Quantity( type=np.dtype(np.int32), - shape=['x_abinit_var_natom'], - description=''' + shape=["x_abinit_var_natom"], + description=""" ABINIT variable van der Waals TYPe of FRAGment - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vdw_xc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable van der Waals eXchange-Correlation functional - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vel = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_natom', 3], - description=''' + shape=["x_abinit_var_natom", 3], + description=""" ABINIT variable VELocity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vel_cell = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ABINIT variable VELocity of the CELL parameters - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable VIScosity - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_vprtrb = Quantity( type=np.dtype(np.float64), shape=[2], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable potential -V- for the PeRTuRBation - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_w90iniprj = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Wannier90- INItial PROJections - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_w90prtunk = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable Wannier90- PRINT UNKp.s file - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wfoptalg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable WaveFunction OPTimisation ALGorithm - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wtatcon = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nconeq', 'x_abinit_var_natcon', 3], - description=''' + shape=["x_abinit_var_nconeq", "x_abinit_var_natcon", 3], + description=""" ABINIT variable WeighTs for AToms in CONstraint equations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wtk = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_nkpt'], - description=''' + shape=["x_abinit_var_nkpt"], + description=""" ABINIT variable WeighTs for K points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wtq = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable WeighTs for the current Q-points - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wvl_bigdft_comp = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable WaVeLet BigDFT Comparison - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wvl_crmult = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable WaVeLet Coarse grid Radius MULTiplier - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wvl_frmult = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable WaVeLet Fine grid Radius MULTiplier - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wvl_hgrid = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' + unit="bohr", + description=""" ABINIT variable WaVeLet H step GRID - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wvl_ngauss = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" ABINIT variable WaVeLet Number of GAUSSians - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_wvl_nprccg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable WaVeLet maximum Number of PReConditionner Conjugate Gradient iterations - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_x1rdm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable EXchange-only 1-Reduced Density Matrix - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xangst = Quantity( type=np.dtype(np.float64), - shape=['min(x_abinit_var_natom,x_abinit_var_natrd)', 3], - description=''' + shape=["min(x_abinit_var_natom,x_abinit_var_natrd)", 3], + description=""" ABINIT variable vectors (X) of atom positions in cartesian coordinates -length in ANGSTrom- - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xc_denpos = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable eXchange-Correlation - DENsity POSitivity value - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xc_tb09_c = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ABINIT variable Value of the c parameter in the eXchange-Correlation TB09 functional - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xcart = Quantity( type=np.dtype(np.float64), - shape=['min(x_abinit_var_natom,x_abinit_var_natrd)', 3], - unit='bohr', - description=''' + shape=["min(x_abinit_var_natom,x_abinit_var_natrd)", 3], + unit="bohr", + description=""" ABINIT variable vectors (X) of atom positions in CARTesian coordinates - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xclevel = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ABINIT variable eXchange Correlation functional level - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xred = Quantity( type=np.dtype(np.float64), - shape=['min(x_abinit_var_natom,x_abinit_var_natrd)', 3], - description=''' + shape=["min(x_abinit_var_natom,x_abinit_var_natrd)", 3], + description=""" ABINIT variable vectors (X) of atom positions in REDuced coordinates - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xredsph_extra = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_natsph_extra', 3], - description=''' + shape=["x_abinit_var_natsph_extra", 3], + description=""" ABINIT variable X(position) in REDuced coordinates of the SPHeres for dos projection in the EXTRA set - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_xyzfile = Quantity( type=str, shape=[], - description=''' + description=""" ABINIT variable XYZ FILE input for geometry - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_zcut = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree', - description=''' + unit="hartree", + description=""" ABINIT variable Z-CUT - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_zeemanfield = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" ABINIT variable ZEEMAN FIELD - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_ziontypat = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_ntypat'], - description=''' + shape=["x_abinit_var_ntypat"], + description=""" ABINIT variable Z (charge) of the IONs for the different TYPes of AToms - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) x_abinit_var_znucl = Quantity( type=np.dtype(np.float64), - shape=['x_abinit_var_npsp'], - description=''' + shape=["x_abinit_var_npsp"], + description=""" ABINIT variable charge -Z- of the NUCLeus - ''', - categories=[x_abinit_var]) + """, + categories=[x_abinit_var], + ) class x_abinit_section_dataset(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_abinit_section_input = SubSection( - sub_section=x_abinit_section_input.m_def, - repeats=False) + sub_section=x_abinit_section_input.m_def, repeats=False + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_abinit_section_dataset = SubSection( - sub_section=x_abinit_section_dataset.m_def, - repeats=True) + sub_section=x_abinit_section_dataset.m_def, repeats=True + ) diff --git a/electronicparsers/abinit/parser.py b/electronicparsers/abinit/parser.py index f5e1c7a7..a87b2d54 100644 --- a/electronicparsers/abinit/parser.py +++ b/electronicparsers/abinit/parser.py @@ -27,60 +27,94 @@ from nomad.parsing.file_parser.text_parser import TextParser, Quantity, DataTextParser from runschema.run import Run, Program, TimeRun from runschema.method import ( - Method, BasisSet, BasisSetContainer, Electronic, Smearing, Scf, DFT, XCFunctional, - Functional, KMesh, FrequencyMesh, Screening, GW) + Method, + BasisSet, + BasisSetContainer, + Electronic, + Smearing, + Scf, + DFT, + XCFunctional, + Functional, + KMesh, + FrequencyMesh, + Screening, + GW, +) from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, Stress, StressEntry, Dos, - DosValues, BandStructure, BandEnergies, ScfIteration) + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + Stress, + StressEntry, + Dos, + DosValues, + BandStructure, + BandEnergies, + ScfIteration, +) from simulationworkflowschema import ( - SinglePoint, GeometryOptimization, GeometryOptimizationMethod, MolecularDynamics) + SinglePoint, + GeometryOptimization, + GeometryOptimizationMethod, + MolecularDynamics, +) from .metainfo.abinit_autogenerated import ( - x_abinit_section_dataset, x_abinit_section_input + x_abinit_section_dataset, + x_abinit_section_input, ) from .metainfo.abinit import ( - x_abinit_screening_dataset, x_abinit_chi_q_data, x_abinit_mesh, x_abinit_gw_dataset, - x_abinit_ks_band_gaps_params, x_abinit_qp_band_gaps_params, x_abinit_sigma_params, - x_abinit_epsilon_inv_params + x_abinit_screening_dataset, + x_abinit_chi_q_data, + x_abinit_mesh, + x_abinit_gw_dataset, + x_abinit_ks_band_gaps_params, + x_abinit_qp_band_gaps_params, + x_abinit_sigma_params, + x_abinit_epsilon_inv_params, ) from ..utils import BeyondDFTWorkflowsParser ABINIT_NATIVE_IXC = { 0: [{}], - 1: [{'XC_functional_name': 'LDA_XC_TETER93'}], - 2: [{'XC_functional_name': 'LDA_X'}, {'XC_functional_name': 'LDA_C_PZ'}], + 1: [{"XC_functional_name": "LDA_XC_TETER93"}], + 2: [{"XC_functional_name": "LDA_X"}, {"XC_functional_name": "LDA_C_PZ"}], # 3 - LDA, old Teter rational polynomial parametrization (4/91) - 4: [{'XC_functional_name': 'LDA_X'}, {'XC_functional_name': 'LDA_C_WIGNER'}], - 5: [{'XC_functional_name': 'LDA_X'}, {'XC_functional_name': 'LDA_C_HL'}], - 6: [{'XC_functional_name': 'LDA_X'}, {'XC_functional_name': 'LDA_C_XALPHA'}], - 7: [{'XC_functional_name': 'LDA_X'}, {'XC_functional_name': 'LDA_C_PW'}], + 4: [{"XC_functional_name": "LDA_X"}, {"XC_functional_name": "LDA_C_WIGNER"}], + 5: [{"XC_functional_name": "LDA_X"}, {"XC_functional_name": "LDA_C_HL"}], + 6: [{"XC_functional_name": "LDA_X"}, {"XC_functional_name": "LDA_C_XALPHA"}], + 7: [{"XC_functional_name": "LDA_X"}, {"XC_functional_name": "LDA_C_PW"}], # 8 - x-only part of the Perdew-Wang 92 functional # 9 - x- and RPA correlation part of the Perdew-Wang 92 functional # 10 - non-existent - 11: [{'XC_functional_name': 'GGA_X_PBE'}, {'XC_functional_name': 'GGA_C_PBE'}], - 12: [{'XC_functional_name': 'GGA_X_PBE'}], - 13: [{'XC_functional_name': 'GGA_X_LB'}, {'XC_functional_name': 'LDA_C_PW'}], - 14: [{'XC_functional_name': 'GGA_X_PBE_R'}, {'XC_functional_name': '?'}], - 15: [{'XC_functional_name': 'GGA_X_RPBE'}, {'XC_functional_name': '?'}], - 16: [{'XC_functional_name': 'GGA_XC_HCTH_93'}], - 17: [{'XC_functional_name': 'GGA_XC_HCTH_120'}], - 18: [{'XC_functional_name': 'GGA_X_B88'}, {'XC_functional_name': 'GGA_C_LYP'}], - 19: [{'XC_functional_name': 'GGA_X_B88'}, {'XC_functional_name': 'GGA_C_P86'}], + 11: [{"XC_functional_name": "GGA_X_PBE"}, {"XC_functional_name": "GGA_C_PBE"}], + 12: [{"XC_functional_name": "GGA_X_PBE"}], + 13: [{"XC_functional_name": "GGA_X_LB"}, {"XC_functional_name": "LDA_C_PW"}], + 14: [{"XC_functional_name": "GGA_X_PBE_R"}, {"XC_functional_name": "?"}], + 15: [{"XC_functional_name": "GGA_X_RPBE"}, {"XC_functional_name": "?"}], + 16: [{"XC_functional_name": "GGA_XC_HCTH_93"}], + 17: [{"XC_functional_name": "GGA_XC_HCTH_120"}], + 18: [{"XC_functional_name": "GGA_X_B88"}, {"XC_functional_name": "GGA_C_LYP"}], + 19: [{"XC_functional_name": "GGA_X_B88"}, {"XC_functional_name": "GGA_C_P86"}], # 20 - Fermi-Amaldi xc ( -1/N Hartree energy, where N is the number of electrons per cell; # G=0 is not taken into account however), for TDDFT tests. # 21 - same as 20, except that the xc-kernel is the LDA (ixc=1) one, for TDDFT tests. # 22 - same as 20, except that the xc-kernel is the Burke-Petersilka-Gross hybrid, for # TDDFT tests. - 23: [{'XC_functional_name': 'GGA_X_WC'}, {'XC_functional_name': '?'}], - 24: [{'XC_functional_name': 'GGA_X_C09X'}, {'XC_functional_name': '?'}], + 23: [{"XC_functional_name": "GGA_X_WC"}, {"XC_functional_name": "?"}], + 24: [{"XC_functional_name": "GGA_X_C09X"}, {"XC_functional_name": "?"}], # 25 - non-existent - 26: [{'XC_functional_name': 'GGA_XC_HCTH_147'}], - 27: [{'XC_functional_name': 'GGA_XC_HCTH_407'}], - 28: [{'XC_functional_name': 'GGA_X_OPTX'}, {'XC_functional_name': 'GGA_C_LYP'}], - 40: [{'XC_functional_name': 'HF_X'}], - 41: [{'XC_functional_name': 'HYB_GGA_XC_PBEH'}], - 42: [{'XC_functional_name': 'HYB_GGA_XC_PBE0_13'}]} + 26: [{"XC_functional_name": "GGA_XC_HCTH_147"}], + 27: [{"XC_functional_name": "GGA_XC_HCTH_407"}], + 28: [{"XC_functional_name": "GGA_X_OPTX"}, {"XC_functional_name": "GGA_C_LYP"}], + 40: [{"XC_functional_name": "HF_X"}], + 41: [{"XC_functional_name": "HYB_GGA_XC_PBEH"}], + 42: [{"XC_functional_name": "HYB_GGA_XC_PBE0_13"}], +} ABINIT_LIBXC_IXC = { 1: {"XC_functional_name": "LDA_X"}, @@ -453,27 +487,29 @@ 528: {"XC_functional_name": "GGA_X_HJS_B97X"}, 529: {"XC_functional_name": "GGA_X_ITYH"}, 530: {"XC_functional_name": "GGA_X_SFAT"}, - 531: {"XC_functional_name": "HYB_MGGA_XC_WB97M_V"}} + 531: {"XC_functional_name": "HYB_MGGA_XC_WB97M_V"}, +} -re_float = r'([\d\.E\+\-]+)' -re_n = r'[\n\r]' +re_float = r"([\d\.E\+\-]+)" +re_n = r"[\n\r]" class AbinitOutParser(TextParser): def __init__(self): self.energy_components = { - 'energy_kinetic_electronic': 'Kinetic energy', - 'energy_electronstatic': 'Hartree energy', - 'energy_XC': 'XC energy', - 'ewald': 'Ewald energy', - 'psp_core': 'PspCore energy', - 'psp_local': 'Loc. psp. energy', - 'psp_nonlocal': 'NL psp energy', - 'internal': '>>>>> Internal E', - 'energy_correction_entropy': r'\-kT*entropy', - 'energy_total': ' >>>>>>>>> Etotal', - 'energy_sum_eigenvalues': r'Band energy \(Ha\)'} + "energy_kinetic_electronic": "Kinetic energy", + "energy_electronstatic": "Hartree energy", + "energy_XC": "XC energy", + "ewald": "Ewald energy", + "psp_core": "PspCore energy", + "psp_local": "Loc. psp. energy", + "psp_nonlocal": "NL psp energy", + "internal": ">>>>> Internal E", + "energy_correction_entropy": r"\-kT*entropy", + "energy_total": " >>>>>>>>> Etotal", + "energy_sum_eigenvalues": r"Band energy \(Ha\)", + } self._input_vars = None self._dataset_numbers = None self._n_datasets = None @@ -482,50 +518,106 @@ def __init__(self): def init_quantities(self): self._quantities = [ Quantity( - 'program_version', r'\.Version ([\w\.]+) of ABINIT', repeats=False, - convert=False, flatten=False), + "program_version", + r"\.Version ([\w\.]+) of ABINIT", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_parallel_compilation', r'\.\((\w+) version,', repeats=False, - convert=False, flatten=False), + "x_abinit_parallel_compilation", + r"\.\((\w+) version,", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'program_compilation_host', r'prepared for a ([\w\.]+) computer', - repeats=False, convert=False, flatten=False), + "program_compilation_host", + r"prepared for a ([\w\.]+) computer", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_start_date', r'\.Starting date : ([\w ]+)\.', repeats=False, - convert=False, flatten=False), + "x_abinit_start_date", + r"\.Starting date : ([\w ]+)\.", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_start_time', r'\- \( at (\w+) \)', repeats=False, convert=False, - flatten=False), + "x_abinit_start_time", + r"\- \( at (\w+) \)", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_input_file', r'\- input\s*file\s*\-\> ([\w\.]+)', repeats=False, - convert=False, flatten=False), + "x_abinit_input_file", + r"\- input\s*file\s*\-\> ([\w\.]+)", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_output_file', r'\- output\s*file\s*\-\> ([\w\.]+)', repeats=False, - convert=False, flatten=False), + "x_abinit_output_file", + r"\- output\s*file\s*\-\> ([\w\.]+)", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_input_files_root', r'\- root for input\s*files \-\> (\w+)', - repeats=False, convert=False, flatten=False), + "x_abinit_input_files_root", + r"\- root for input\s*files \-\> (\w+)", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_output_files_root', r'\- root for output\s*files \-\> (\w+)', - repeats=False, convert=False, flatten=False), + "x_abinit_output_files_root", + r"\- root for output\s*files \-\> (\w+)", + repeats=False, + convert=False, + flatten=False, + ), Quantity( - 'x_abinit_total_cpu_time', - r'\-\s*Total cpu\s*time\s*\(s,m,h\):\s*([\d\.]+)', dtype=float), + "x_abinit_total_cpu_time", + r"\-\s*Total cpu\s*time\s*\(s,m,h\):\s*([\d\.]+)", + dtype=float, + ), Quantity( - 'x_abinit_total_wallclock_time', - r'\-\s*Total wall clock time\s*\(s,m,h\):\s*([\d\.]+)', dtype=float), + "x_abinit_total_wallclock_time", + r"\-\s*Total wall clock time\s*\(s,m,h\):\s*([\d\.]+)", + dtype=float, + ), Quantity( - 'run_clean_end', - r'(Calculation completed)', repeats=False, convert=False, flatten=False)] + "run_clean_end", + r"(Calculation completed)", + repeats=False, + convert=False, + flatten=False, + ), + ] - self._quantities.append(Quantity( - 'input_vars', - r'\-outvars: echo values of preprocessed input variables \-+([\s\S]+?)\={10}', - repeats=False, sub_parser=TextParser(quantities=[Quantity( - 'key_value', r'([a-zA-Z\d]+)\s*([\d\.\+\-E\s]+)', repeats=True)]))) + self._quantities.append( + Quantity( + "input_vars", + r"\-outvars: echo values of preprocessed input variables \-+([\s\S]+?)\={10}", + repeats=False, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + r"([a-zA-Z\d]+)\s*([\d\.\+\-E\s]+)", + repeats=True, + ) + ] + ), + ) + ) def str_to_array(val_in): - val = val_in.strip().split('\n') + val = val_in.strip().split("\n") val = [v.split()[-3:] for v in val] return np.array(val, dtype=float) @@ -545,304 +637,477 @@ def str_to_eigenvalues(val_in): self_consistent = [ Quantity( - 'energy_total_scf_iteration', - r'ETOT\s*\d+\s*([\+\-\d\.Ee ]+)\n', repeats=True, dtype=float), + "energy_total_scf_iteration", + r"ETOT\s*\d+\s*([\+\-\d\.Ee ]+)\n", + repeats=True, + dtype=float, + ), Quantity( - 'convergence', - r'At SCF step\s*([0-9]+)\s*' - r', etot|, forces|vres2\s*=\s*[\-\+\d\.Ee]+?\s*<\s*tolvrs=\s*[\-\+\d\.Ee]+?\s*=>\s*' - r'([\w ]+)', repeats=False), + "convergence", + r"At SCF step\s*([0-9]+)\s*" + r", etot|, forces|vres2\s*=\s*[\-\+\d\.Ee]+?\s*<\s*tolvrs=\s*[\-\+\d\.Ee]+?\s*=>\s*" + r"([\w ]+)", + repeats=False, + ), ] relaxation = [ Quantity( - 'stress_tensor', - r'Cartesian components of stress tensor \(hartree/bohr\^3\)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*', - repeats=False, str_operation=str_to_stress_tensor, convert=False), + "stress_tensor", + r"Cartesian components of stress tensor \(hartree/bohr\^3\)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*", + repeats=False, + str_operation=str_to_stress_tensor, + convert=False, + ), Quantity( - 'self_consistent', - r'SELF\-CONSISTENT\-FIELD CONVERGENCE\-*\s*(iter\s*Etot[\s\S]+?)\-*OUTPUT', - sub_parser=TextParser(quantities=self_consistent), repeats=False), + "self_consistent", + r"SELF\-CONSISTENT\-FIELD CONVERGENCE\-*\s*(iter\s*Etot[\s\S]+?)\-*OUTPUT", + sub_parser=TextParser(quantities=self_consistent), + repeats=False, + ), Quantity( - 'cartesian_coordinates', - r'Cartesian coordinates \(xcart\) \[bohr\]\s*([\s\d\.Ee\+\-]+)', - repeats=False, str_operation=str_to_array, convert=False, unit=ureg.bohr), + "cartesian_coordinates", + r"Cartesian coordinates \(xcart\) \[bohr\]\s*([\s\d\.Ee\+\-]+)", + repeats=False, + str_operation=str_to_array, + convert=False, + unit=ureg.bohr, + ), Quantity( - 'cartesian_forces', - r'Cartesian forces \(fcart\)[\s\S]+?\(free atoms\)\s*([\s\d\.Ee\+\-]+)', - repeats=False, str_operation=str_to_array, convert=False, unit=ureg.hartree / ureg.bohr), + "cartesian_forces", + r"Cartesian forces \(fcart\)[\s\S]+?\(free atoms\)\s*([\s\d\.Ee\+\-]+)", + repeats=False, + str_operation=str_to_array, + convert=False, + unit=ureg.hartree / ureg.bohr, + ), Quantity( - 'energy_total', - r'Total energy \(etotal\) \[Ha\]=\s*([\-\+\d\.Ee]+)', repeats=False, - dtype=float, unit=ureg.hartree)] + "energy_total", + r"Total energy \(etotal\) \[Ha\]=\s*([\-\+\d\.Ee]+)", + repeats=False, + dtype=float, + unit=ureg.hartree, + ), + ] - energy_components = [Quantity( - key, rf'\s*{val}\s*=\s*([\d\.E\-\+]+)', repeats=False, dtype=float, - unit=ureg.hartree) for key, val in self.energy_components.items()] + energy_components = [ + Quantity( + key, + rf"\s*{val}\s*=\s*([\d\.E\-\+]+)", + repeats=False, + dtype=float, + unit=ureg.hartree, + ) + for key, val in self.energy_components.items() + ] results = [ Quantity( - 'cartesian_coordinates', - r'\s*cartesian coordinates \(angstrom\) at end:\s*([\s\d\.Ee\+\-]+)', - repeats=False, str_operation=str_to_array, convert=False, unit=ureg.angstrom), + "cartesian_coordinates", + r"\s*cartesian coordinates \(angstrom\) at end:\s*([\s\d\.Ee\+\-]+)", + repeats=False, + str_operation=str_to_array, + convert=False, + unit=ureg.angstrom, + ), Quantity( - 'cartesian_forces', - r'\s*cartesian forces \(hartree/bohr\) at end\:\s*([\s\d\.Ee\+\-]+)', - repeats=False, str_operation=str_to_array, convert=False, unit=ureg.hartree / ureg.bohr), + "cartesian_forces", + r"\s*cartesian forces \(hartree/bohr\) at end\:\s*([\s\d\.Ee\+\-]+)", + repeats=False, + str_operation=str_to_array, + convert=False, + unit=ureg.hartree / ureg.bohr, + ), Quantity( - 'x_abinit_eig_filename', - r'\s*prteigrs : about to open file\s*(\S+)', repeats=False, - convert=False), + "x_abinit_eig_filename", + r"\s*prteigrs : about to open file\s*(\S+)", + repeats=False, + convert=False, + ), Quantity( - 'fermi_energy', - r'\s*Fermi \(or HOMO\) energy \(hartree\) =\s*([-+0-9.]+)', - repeats=False, dtype=float, unit=ureg.hartree), + "fermi_energy", + r"\s*Fermi \(or HOMO\) energy \(hartree\) =\s*([-+0-9.]+)", + repeats=False, + dtype=float, + unit=ureg.hartree, + ), Quantity( - 'x_abinit_magnetisation', - r'\s*Magnetisation \(Bohr magneton\)=\s*([-+0-9.eEdD]*)\s*', - repeats=False, dtype=float, unit=ureg.bohr_magneton), + "x_abinit_magnetisation", + r"\s*Magnetisation \(Bohr magneton\)=\s*([-+0-9.eEdD]*)\s*", + repeats=False, + dtype=float, + unit=ureg.bohr_magneton, + ), Quantity( - 'eigenvalues', - r'\s*kpt#\s*(\d+), nband=\s*(\d+), wtk=\s*([\d\.]+)\s*, ' - r'kpt=([\d\.\-\+Ee ]+)\s*\(reduced coord\)\s*([\d\.\-\+Ee\s]+)', - repeats=True, str_operation=str_to_eigenvalues, convert=False), + "eigenvalues", + r"\s*kpt#\s*(\d+), nband=\s*(\d+), wtk=\s*([\d\.]+)\s*, " + r"kpt=([\d\.\-\+Ee ]+)\s*\(reduced coord\)\s*([\d\.\-\+Ee\s]+)", + repeats=True, + str_operation=str_to_eigenvalues, + convert=False, + ), Quantity( - 'occupation_numbers', - r'\s*occupation numbers for kpt#\s*\d+\s*([\d\.\-\+Ee ]+)', - repeats=True, dtype=float), + "occupation_numbers", + r"\s*occupation numbers for kpt#\s*\d+\s*([\d\.\-\+Ee ]+)", + repeats=True, + dtype=float, + ), Quantity( - 'energy_total', - r'Total energy\(eV\)=\s*([\d\.\-\+Ee]+)\s*;', - repeats=False, dtype=float, unit=ureg.eV), + "energy_total", + r"Total energy\(eV\)=\s*([\d\.\-\+Ee]+)\s*;", + repeats=False, + dtype=float, + unit=ureg.eV, + ), Quantity( - 'stress_tensor', - r'Cartesian components of stress tensor \(hartree/bohr\^3\)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*' - r'sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*', - repeats=False, str_operation=str_to_stress_tensor, convert=False) + "stress_tensor", + r"Cartesian components of stress tensor \(hartree/bohr\^3\)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*" + r"sigma\(\d \d\)\s*=\s*([\-\+\d\.Ee]+)\s*", + repeats=False, + str_operation=str_to_stress_tensor, + convert=False, + ), ] + energy_components - self._quantities.append(Quantity( - 'dataset', - r'==\s*(DATASET\s*\d+\s*==[\s\S]+?)(?:\-Cartesian components of stress tensor \(GPa\)|\s*prteigrs\s*\:\s*prtvol\=[\w\s\,\-\.\n]*===|\s*Average fulfillment[\s\w\[\]\-\:\.\%]*===|== END DATASET)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'x_abinit_dataset_number', - r'DATASET\s*(\d+)', dtype=int, repeats=False), - Quantity( - 'x_abinit_var_ixc', - r'\-\s*ixc\s*=\s*([\d\-]+)', dtype=int, repeats=False), - Quantity( - 'x_abinit_vprim', - r'R\(\d\)=\s*(\-*[\d\.]+)\s*(\-*[\d\.]+)\s*(\-*[\d\.]+)\s*G\(\d\)=', - repeats=True, dtype=float), - Quantity( - 'x_abinit_unit_cell_volume', - r'Unit cell volume ucvol\s*=\s*([\d\.\+Ee]+)', dtype=float, - unit=ureg.bohr ** 3), - Quantity( - 'self_consistent', - r'\={10}\s*(iter\s*Etot[\s\S]+?)\={10}', repeats=False, - sub_parser=TextParser(quantities=self_consistent)), - Quantity( - 'relaxation', - r'\-\-\- Iteration: \( \d+\/\d+\)([\s\S]+?Total energy \(etotal\) \[Ha\]=\s*[\-\+\d\.Ee]+)', - repeats=True, sub_parser=TextParser(quantities=relaxation)), - Quantity( - 'results', - r'\-+iterations are completed or convergence reached\-+([\s\S]+)' - r'(?:(sigma\(\d \d\)\s*=\s*[\+\-\d\.E]+)|={80})', repeats=False, - sub_parser=TextParser(quantities=results))]))) + self._quantities.append( + Quantity( + "dataset", + r"==\s*(DATASET\s*\d+\s*==[\s\S]+?)(?:\-Cartesian components of stress tensor \(GPa\)|\s*prteigrs\s*\:\s*prtvol\=[\w\s\,\-\.\n]*===|\s*Average fulfillment[\s\w\[\]\-\:\.\%]*===|== END DATASET)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "x_abinit_dataset_number", + r"DATASET\s*(\d+)", + dtype=int, + repeats=False, + ), + Quantity( + "x_abinit_var_ixc", + r"\-\s*ixc\s*=\s*([\d\-]+)", + dtype=int, + repeats=False, + ), + Quantity( + "x_abinit_vprim", + r"R\(\d\)=\s*(\-*[\d\.]+)\s*(\-*[\d\.]+)\s*(\-*[\d\.]+)\s*G\(\d\)=", + repeats=True, + dtype=float, + ), + Quantity( + "x_abinit_unit_cell_volume", + r"Unit cell volume ucvol\s*=\s*([\d\.\+Ee]+)", + dtype=float, + unit=ureg.bohr**3, + ), + Quantity( + "self_consistent", + r"\={10}\s*(iter\s*Etot[\s\S]+?)\={10}", + repeats=False, + sub_parser=TextParser(quantities=self_consistent), + ), + Quantity( + "relaxation", + r"\-\-\- Iteration: \( \d+\/\d+\)([\s\S]+?Total energy \(etotal\) \[Ha\]=\s*[\-\+\d\.Ee]+)", + repeats=True, + sub_parser=TextParser(quantities=relaxation), + ), + Quantity( + "results", + r"\-+iterations are completed or convergence reached\-+([\s\S]+)" + r"(?:(sigma\(\d \d\)\s*=\s*[\+\-\d\.E]+)|={80})", + repeats=False, + sub_parser=TextParser(quantities=results), + ), + ] + ), + ) + ) rpa_quantities = [ Quantity( - 'precision_algorithm', rf'{re_n}\.Using[a-zA-Z\s\;]+\=\s*(\d+)', - repeats=False), - Quantity( - 'kmesh', rf'{re_n}(\s*====\s*K-mesh[a-zA-Z\s]*wavefunctions[\s\S]+?)(?:\s*====\s*Q-mesh)', - repeats=False, sub_parser=TextParser(quantities=[ - Quantity( - 'n_mesh', rf'{re_n}\s*Number of points in the irreducible wedge\s*\:\s*(\d+)', - repeats=False), - Quantity( - 'mesh', rf'{re_n}[\d\)\s]+{re_float}\s*{re_float}\s*{re_float}\s*{re_float}', - repeats=True)])), + "precision_algorithm", + rf"{re_n}\.Using[a-zA-Z\s\;]+\=\s*(\d+)", + repeats=False, + ), Quantity( - 'qmesh', rf'{re_n}(\s*====\s*Q-mesh[a-zA-Z\s]*screening function[\s\S]+?)(?:\s*setmesh\:)', - repeats=False, sub_parser=TextParser(quantities=[ - Quantity( - 'n_mesh', rf'{re_n}\s*Number of points in the irreducible wedge\s*\:\s*(\d+)', - repeats=False), - Quantity( - 'mesh', rf'{re_n}[\d\)\s]+{re_float}\s*{re_float}\s*{re_float}\s*{re_float}', - repeats=True)])), + "kmesh", + rf"{re_n}(\s*====\s*K-mesh[a-zA-Z\s]*wavefunctions[\s\S]+?)(?:\s*====\s*Q-mesh)", + repeats=False, + sub_parser=TextParser( + quantities=[ + Quantity( + "n_mesh", + rf"{re_n}\s*Number of points in the irreducible wedge\s*\:\s*(\d+)", + repeats=False, + ), + Quantity( + "mesh", + rf"{re_n}[\d\)\s]+{re_float}\s*{re_float}\s*{re_float}\s*{re_float}", + repeats=True, + ), + ] + ), + ), Quantity( - 'fftmesh', r'FFT mesh size selected[\s\=]*(\d+)x\s*(\d+)x\s*(\d+)', - repeats=False), + "qmesh", + rf"{re_n}(\s*====\s*Q-mesh[a-zA-Z\s]*screening function[\s\S]+?)(?:\s*setmesh\:)", + repeats=False, + sub_parser=TextParser( + quantities=[ + Quantity( + "n_mesh", + rf"{re_n}\s*Number of points in the irreducible wedge\s*\:\s*(\d+)", + repeats=False, + ), + Quantity( + "mesh", + rf"{re_n}[\d\)\s]+{re_float}\s*{re_float}\s*{re_float}\s*{re_float}", + repeats=True, + ), + ] + ), + ), Quantity( - 'n_fftmesh', r'total number of points[\s\=]*(\d+)', - repeats=False), + "fftmesh", + r"FFT mesh size selected[\s\=]*(\d+)x\s*(\d+)x\s*(\d+)", + repeats=False, + ), + Quantity("n_fftmesh", r"total number of points[\s\=]*(\d+)", repeats=False), Quantity( - 'symm_screening', rf'{re_n}\- screening\:([a-zA-Z\-\s]+){re_n}', repeats=False), + "symm_screening", + rf"{re_n}\- screening\:([a-zA-Z\-\s]+){re_n}", + repeats=False, + ), Quantity( - 'max_band_occ', - rf'{re_n}\- Maximum band index for partially occupied states[a-zA-Z\s]+\=\s*(\d+)', - repeats=False), + "max_band_occ", + rf"{re_n}\- Maximum band index for partially occupied states[a-zA-Z\s]+\=\s*(\d+)", + repeats=False, + ), Quantity( - 'n_bands_per_proc', - rf'{re_n}\- Remaining bands to be divided among processors[a-zA-Z\s]+\=\s*(\d+)', - repeats=False), + "n_bands_per_proc", + rf"{re_n}\- Remaining bands to be divided among processors[a-zA-Z\s]+\=\s*(\d+)", + repeats=False, + ), Quantity( - 'n_bands_per_node', rf'{re_n}\- Number of bands treated by each node[a-zA-Z\s]+\~(\d+)', - repeats=False), + "n_bands_per_node", + rf"{re_n}\- Number of bands treated by each node[a-zA-Z\s]+\~(\d+)", + repeats=False, + ), Quantity( - 'n_electrons', - rf'{re_n}\s*Number of electrons calculated from density\s*\=\s*{re_float}' - rf'\;\s*Expected\s*\=\s*{re_float}' - rf'{re_n}\s*average of density\,\s*n\s*\=\s*{re_float}', repeats=False), + "n_electrons", + rf"{re_n}\s*Number of electrons calculated from density\s*\=\s*{re_float}" + rf"\;\s*Expected\s*\=\s*{re_float}" + rf"{re_n}\s*average of density\,\s*n\s*\=\s*{re_float}", + repeats=False, + ), Quantity( - 'wigner_seitz_radius', rf'{re_n}\s*r_s\s*\=\s*{re_float}', repeats=False), + "wigner_seitz_radius", rf"{re_n}\s*r_s\s*\=\s*{re_float}", repeats=False + ), Quantity( - 'omega_plasma', rf'{re_n}\s*omega_plasma\s*\=\s*{re_float}\s*\[(?P<__unit>\w+)\]', - repeats=False), + "omega_plasma", + rf"{re_n}\s*omega_plasma\s*\=\s*{re_float}\s*\[(?P<__unit>\w+)\]", + repeats=False, + ), ] screening_quantities = rpa_quantities + [ Quantity( - 'frequencies', - rf'{re_n}\s*(calculating chi0 at frequencies \[[a-zA-Z]+\]\s*\:[\s\S]+?)(?:\-*{re_n}\s*q-point number\s*1)', - sub_parser=TextParser(quantities=[ - Quantity( - 'values', rf'{re_n}\s*\d*\s*{re_float}\s*{re_float}', repeats=True)])), + "frequencies", + rf"{re_n}\s*(calculating chi0 at frequencies \[[a-zA-Z]+\]\s*\:[\s\S]+?)(?:\-*{re_n}\s*q-point number\s*1)", + sub_parser=TextParser( + quantities=[ + Quantity( + "values", + rf"{re_n}\s*\d*\s*{re_float}\s*{re_float}", + repeats=True, + ) + ] + ), + ), Quantity( - 'static_diel_const', - rf'{re_n}\s*dielectric constant\s*\=\s*{re_float}', repeats=False), + "static_diel_const", + rf"{re_n}\s*dielectric constant\s*\=\s*{re_float}", + repeats=False, + ), Quantity( - 'static_diel_const_nofields', - rf'{re_n}\s*dielectric constant without local fields\s*\=\s*{re_float}', repeats=False), + "static_diel_const_nofields", + rf"{re_n}\s*dielectric constant without local fields\s*\=\s*{re_float}", + repeats=False, + ), Quantity( - 'chi_q', - rf'{re_n}(\s*q-point number\s*1[\s\S]+?)(?:\s*Average fulfillment[\s\w\[\]\-\:\.\%]*===)', + "chi_q", + rf"{re_n}(\s*q-point number\s*1[\s\S]+?)(?:\s*Average fulfillment[\s\w\[\]\-\:\.\%]*===)", repeats=False, - sub_parser=TextParser(quantities=[ - Quantity( - 'q_point', - rf'\s*q-point number\s*(\d+)\s*q =\s*\(\s*{re_float}\,\s*{re_float}\,\s*{re_float}\)\s*\[r\.l\.u\.\]', - repeats=True), - Quantity( - 'av_fulfillment', - rf'{re_n}\s*Average fulfillment[a-zA-Z\s\[\]\-\d]*\:\s*([\d\.]+)', - repeats=True) - # TODO regex chi0(G, G') for each qpoint and frequency - ])) + sub_parser=TextParser( + quantities=[ + Quantity( + "q_point", + rf"\s*q-point number\s*(\d+)\s*q =\s*\(\s*{re_float}\,\s*{re_float}\,\s*{re_float}\)\s*\[r\.l\.u\.\]", + repeats=True, + ), + Quantity( + "av_fulfillment", + rf"{re_n}\s*Average fulfillment[a-zA-Z\s\[\]\-\d]*\:\s*([\d\.]+)", + repeats=True, + ), + # TODO regex chi0(G, G') for each qpoint and frequency + ] + ), + ), ] - self._quantities.append(Quantity( - 'screening_dataset', - rf'{re_n}(==\s*DATASET\s*3[\s\S]+?)(?:==\s*DATASET\s*4|== END DATASET)', - repeats=False, sub_parser=TextParser(quantities=screening_quantities), - )) + self._quantities.append( + Quantity( + "screening_dataset", + rf"{re_n}(==\s*DATASET\s*3[\s\S]+?)(?:==\s*DATASET\s*4|== END DATASET)", + repeats=False, + sub_parser=TextParser(quantities=screening_quantities), + ) + ) def params_to_pairs(val_in): - key = '_'.join(val_in.split()[:-1]).replace('-', '_') + key = "_".join(val_in.split()[:-1]).replace("-", "_") value = np.int(val_in.split()[-1]) return [key, value] gw_quantities = rpa_quantities + [ Quantity( - 'ks_band_gaps', - rf'{re_n}\s*(\>\>\>\>\s*For spin\s*1[\s\S]+?)(?:\s*SIGMA fundamental parameters)', - repeats=False, sub_parser=TextParser(quantities=[ - Quantity( - 'min_direct_gap', - rf'\s*Minimum direct gap\s*=\s*{re_float}\s*\[\w*\]\,\s*' - rf'located at k-point\s*\:\s*{re_float}\s*{re_float}\s*{re_float}', - repeats=False), - Quantity( - 'fundamental_gap', - rf'\s*Fundamental gap\s*=\s*{re_float}\s*\[(?P<__unit>\w+)\]', - repeats=False), - Quantity( - 'k_top_valence_band', - rf'\s*Top of valence bands at\s*\:\s*{re_float}\s*{re_float}\s*{re_float}', - repeats=False), - Quantity( - 'k_bottom_conduction_band', - rf'\s*Bottom of conduction at\s*\:\s*{re_float}\s*{re_float}\s*{re_float}', - repeats=False)])), + "ks_band_gaps", + rf"{re_n}\s*(\>\>\>\>\s*For spin\s*1[\s\S]+?)(?:\s*SIGMA fundamental parameters)", + repeats=False, + sub_parser=TextParser( + quantities=[ + Quantity( + "min_direct_gap", + rf"\s*Minimum direct gap\s*=\s*{re_float}\s*\[\w*\]\,\s*" + rf"located at k-point\s*\:\s*{re_float}\s*{re_float}\s*{re_float}", + repeats=False, + ), + Quantity( + "fundamental_gap", + rf"\s*Fundamental gap\s*=\s*{re_float}\s*\[(?P<__unit>\w+)\]", + repeats=False, + ), + Quantity( + "k_top_valence_band", + rf"\s*Top of valence bands at\s*\:\s*{re_float}\s*{re_float}\s*{re_float}", + repeats=False, + ), + Quantity( + "k_bottom_conduction_band", + rf"\s*Bottom of conduction at\s*\:\s*{re_float}\s*{re_float}\s*{re_float}", + repeats=False, + ), + ] + ), + ), Quantity( - 'sigma_parameters', - rf'{re_n}(\s*SIGMA fundamental parameters[\s\S]+?)(?:\s*EPSILON\^\-1)', - repeats=False, sub_parser=TextParser(quantities=[ - Quantity( - 'model', rf'([a-zA-Z\s]+) MODEL\s*(\d+)', repeats=False), - Quantity( - 'params', - rf'\s*number of ([a-zA-Z\s\-\/]+)(\d+)', - repeats=True, str_operation=params_to_pairs), - Quantity( - 'freq_step', - rf'{re_n}\s*frequency step[a-zA-Z\s\/]*\[eV\]\s*{re_float}', - repeats=False), - Quantity( - 'max_omega_sigma', - rf'{re_n}\s*max omega for Sigma[a-zA-Z\s]*\[eV\]\s*{re_float}', - repeats=False), - Quantity( - 'zcut_avoid', - rf'{re_n}\s*zcut for avoiding poles\s*\[eV\]\s*{re_float}', - repeats=False)])), + "sigma_parameters", + rf"{re_n}(\s*SIGMA fundamental parameters[\s\S]+?)(?:\s*EPSILON\^\-1)", + repeats=False, + sub_parser=TextParser( + quantities=[ + Quantity( + "model", rf"([a-zA-Z\s]+) MODEL\s*(\d+)", repeats=False + ), + Quantity( + "params", + rf"\s*number of ([a-zA-Z\s\-\/]+)(\d+)", + repeats=True, + str_operation=params_to_pairs, + ), + Quantity( + "freq_step", + rf"{re_n}\s*frequency step[a-zA-Z\s\/]*\[eV\]\s*{re_float}", + repeats=False, + ), + Quantity( + "max_omega_sigma", + rf"{re_n}\s*max omega for Sigma[a-zA-Z\s]*\[eV\]\s*{re_float}", + repeats=False, + ), + Quantity( + "zcut_avoid", + rf"{re_n}\s*zcut for avoiding poles\s*\[eV\]\s*{re_float}", + repeats=False, + ), + ] + ), + ), Quantity( - 'epsilon_inv', - rf'{re_n}(\s*EPSILON\^\-1[\s\S]+?)(?:\s*Perturbative Calculation)', - repeats=False, sub_parser=TextParser(quantities=[ - Quantity( - 'dimensions', - rf'\s*dimension of the eps\^\-1 matrix([a-zA-Z\s]+)(\d+)', - repeats=True, str_operation=params_to_pairs), - Quantity( - 'params', - rf'\s*number of ([a-zA-Z\s\-\/]+)(\d+)', - repeats=True, str_operation=params_to_pairs)])), + "epsilon_inv", + rf"{re_n}(\s*EPSILON\^\-1[\s\S]+?)(?:\s*Perturbative Calculation)", + repeats=False, + sub_parser=TextParser( + quantities=[ + Quantity( + "dimensions", + rf"\s*dimension of the eps\^\-1 matrix([a-zA-Z\s]+)(\d+)", + repeats=True, + str_operation=params_to_pairs, + ), + Quantity( + "params", + rf"\s*number of ([a-zA-Z\s\-\/]+)(\d+)", + repeats=True, + str_operation=params_to_pairs, + ), + ] + ), + ), Quantity( - 'self_energy_ee', - rf'{re_n}(\-\-\-\s*\!SelfEnergy\_ee[\s\S]+?)(?:\.\.\.)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'kpoint', - rf'{re_n}kpoint\s*\:[\s\[]*{re_float}\, *{re_float}\, *{re_float}', - repeats=False), - Quantity( - 'params', - rf'{re_n}([a-zA-Z\_\s]+)\:\s*([\d\.\-\+]+)', - repeats=True), - Quantity( - 'data', - rf'{re_n} *(\d+) *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float}', - repeats=True)])) + "self_energy_ee", + rf"{re_n}(\-\-\-\s*\!SelfEnergy\_ee[\s\S]+?)(?:\.\.\.)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "kpoint", + rf"{re_n}kpoint\s*\:[\s\[]*{re_float}\, *{re_float}\, *{re_float}", + repeats=False, + ), + Quantity( + "params", + rf"{re_n}([a-zA-Z\_\s]+)\:\s*([\d\.\-\+]+)", + repeats=True, + ), + Quantity( + "data", + rf"{re_n} *(\d+) *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float} *{re_float}", + repeats=True, + ), + ] + ), + ), ] - self._quantities.append(Quantity( - 'gw_dataset', - rf'{re_n}(==\s*DATASET\s*4[\s\S]+?)(?:==\s*DATASET\s*5|==\s*END DATASET\s*\(S\))', - repeats=False, sub_parser=TextParser(quantities=gw_quantities), - )) + self._quantities.append( + Quantity( + "gw_dataset", + rf"{re_n}(==\s*DATASET\s*4[\s\S]+?)(?:==\s*DATASET\s*5|==\s*END DATASET\s*\(S\))", + repeats=False, + sub_parser=TextParser(quantities=gw_quantities), + ) + ) @property def dataset_numbers(self): if self._dataset_numbers is None: self._dataset_numbers = [ - d.get('x_abinit_dataset_number', 1) for d in self.get('dataset', [])] + d.get("x_abinit_dataset_number", 1) for d in self.get("dataset", []) + ] return self._dataset_numbers @property @@ -855,21 +1120,32 @@ def n_datasets(self): def input_vars(self): if self._input_vars is None: # set defaults - self._input_vars = {key: [1] + [None] * (self.n_datasets - 1) for key in [ - 'ntypat', 'npsp', 'nshiftk', 'natrd', 'nsppol', 'nspden', 'nkpt', - 'occopt', 'ixc']} + self._input_vars = { + key: [1] + [None] * (self.n_datasets - 1) + for key in [ + "ntypat", + "npsp", + "nshiftk", + "natrd", + "nsppol", + "nspden", + "nkpt", + "occopt", + "ixc", + ] + } - key_val = self.get('input_vars', {}).get('key_value', []) + key_val = self.get("input_vars", {}).get("key_value", []) for i in range(len(key_val)): - key, n_dataset = re.search(r'(\D+)?(\d*)', key_val[i][0]).groups() + key, n_dataset = re.search(r"(\D+)?(\d*)", key_val[i][0]).groups() self._input_vars.setdefault(key, [None] * self.n_datasets) try: - m_quantity = getattr(x_abinit_section_input, f'x_abinit_var_{key}') + m_quantity = getattr(x_abinit_section_input, f"x_abinit_var_{key}") except Exception: continue - if '-' in key_val[i]: # exception when the next line starts with - + if "-" in key_val[i]: # exception when the next line starts with - key_val[i] = key_val[i][:-1] val = np.array(key_val[i][1:], dtype=m_quantity.type) @@ -888,8 +1164,8 @@ def get_input_var(self, key, n_dataset, default=None): return val[n_dataset - 1] def get_atom_labels(self): - znucl = self.get_input_var('znucl', 1) - typat = self.get_input_var('typat', 1) + znucl = self.get_input_var("znucl", 1) + typat = self.get_input_var("typat", 1) if znucl is None or typat is None: return return [chemical_symbols[int(znucl[n_at - 1])] for n_at in typat] @@ -901,15 +1177,15 @@ def __init__(self): self.dos_parser = DataTextParser() self.dataset = [] self._child_archives = {} - self._calculation_type = 'dft' + self._calculation_type = "dft" self._selfenergy_data_map = { - 1: 'value_ks', - 2: 'value_ks_xc', - 3: 'value_exchange', - 4: 'value_correlation', - 7: 'value_xc', - 9: 'value_qp' + 1: "value_ks", + 2: "value_ks_xc", + 3: "value_exchange", + 4: "value_correlation", + 7: "value_xc", + 9: "value_qp", } def parse_var(self): @@ -923,7 +1199,7 @@ def parse_var(self): for key, val in self.out_parser.input_vars.items(): if val[i] is None: continue - setattr(sec_input, f'x_abinit_var_{key}', val[i]) + setattr(sec_input, f"x_abinit_var_{key}", val[i]) def parse_system(self): sec_run = self.archive.run[-1] @@ -932,7 +1208,7 @@ def parse_system(self): atom_labels = self.out_parser.get_atom_labels() if atom_labels is None: return - lattice_vectors = self.dataset[0].get('x_abinit_vprim') * ureg.bohr + lattice_vectors = self.dataset[0].get("x_abinit_vprim") * ureg.bohr pbc = [v is not None for v in lattice_vectors] # Always extracted from DATASET 1 @@ -951,7 +1227,7 @@ def parse_system(self): if natom == 1: # handling exception atom_positions = np.array([[0.0, 0.0, 0.0]]) else: - self.logger.warning('Could not resolve atom positions.') + self.logger.warning("Could not resolve atom positions.") return sec_system = System() @@ -967,8 +1243,16 @@ def parse_system(self): def parse_method(self): sec_run = self.archive.run[-1] smearing_kinds = [ - '', '', '', 'fermi', 'marzari-vanderbilt', 'marzari-vanderbilt', - 'methfessel-paxton', 'gaussian', ''] + "", + "", + "", + "fermi", + "marzari-vanderbilt", + "marzari-vanderbilt", + "methfessel-paxton", + "gaussian", + "", + ] sec_method = Method() sec_run.method.append(sec_method) @@ -976,50 +1260,50 @@ def parse_method(self): sec_method.dft = sec_dft sec_electronic = Electronic() sec_method.electronic = sec_electronic - sec_electronic.method = 'DFT' + sec_electronic.method = "DFT" # defined in DATASET 2 if len(self.dataset) == 1: - nsppol = int(self.out_parser.get_input_var('nsppol', 1, 1)) + nsppol = int(self.out_parser.get_input_var("nsppol", 1, 1)) else: - nsppol = int(self.out_parser.get_input_var('nsppol', 2, 1)) + nsppol = int(self.out_parser.get_input_var("nsppol", 2, 1)) sec_electronic.n_spin_channels = nsppol sec_scf = Scf() sec_method.scf = sec_scf - sec_scf.n_max_iteration = int(self.out_parser.get_input_var('nstep', 1, 1)) - toldfe = self.out_parser.get_input_var('toldfe', 1, 0.0) + sec_scf.n_max_iteration = int(self.out_parser.get_input_var("nstep", 1, 1)) + toldfe = self.out_parser.get_input_var("toldfe", 1, 0.0) if toldfe is not None: sec_scf.threshold_energy_change = toldfe * ureg.hartree - occopt = self.out_parser.get_input_var('occopt', 1, 1) - smearing = smearing_kinds[occopt] if occopt < len(smearing_kinds) else '' + occopt = self.out_parser.get_input_var("occopt", 1, 1) + smearing = smearing_kinds[occopt] if occopt < len(smearing_kinds) else "" sec_smearing = Smearing() sec_electronic.smearing = sec_smearing sec_smearing.kind = smearing - tsmear = self.out_parser.get_input_var('tsmear', 1, 0.01) + tsmear = self.out_parser.get_input_var("tsmear", 1, 0.01) if tsmear is not None: - sec_smearing.width = (tsmear * ureg.hartree).to('joule').magnitude + sec_smearing.width = (tsmear * ureg.hartree).to("joule").magnitude # basis set - ecut = self.out_parser.get_input_var('ecut', 1) + ecut = self.out_parser.get_input_var("ecut", 1) if ecut is not None: ecut = ecut * ureg.hartree sec_method.electrons_representation.append( BasisSetContainer( - type='plane waves', - scope=['wavefunction'], + type="plane waves", + scope=["wavefunction"], basis_set=[ BasisSet( - scope=['valence'], - type='plane waves', + scope=["valence"], + type="plane waves", cutoff=ecut, ) - ] + ], ) ) # DFT - ixc = self.out_parser.get_input_var('ixc', 1, 1) + ixc = self.out_parser.get_input_var("ixc", 1, 1) if ixc >= 0: xc_functionals = ABINIT_NATIVE_IXC.get(ixc, []) else: @@ -1035,29 +1319,33 @@ def parse_method(self): sec_dft.xc_functional = sec_xc_functional for xc_functional in xc_functionals: for value in sorted(xc_functional.values()): - if '_X_' in value: + if "_X_" in value: sec_xc_functional.exchange.append(Functional(name=value)) - elif '_C_' in value: + elif "_C_" in value: sec_xc_functional.correlation.append(Functional(name=value)) - elif '_HYB_' in value: + elif "_HYB_" in value: sec_xc_functional.hybrid.append(Functional(name=value)) else: sec_xc_functional.contributions.append(Functional(name=value)) # Parsing KMesh - if self.out_parser.get_input_var('kptopt', 1, 4) < 0: # negative kptopt sets band structure + if ( + self.out_parser.get_input_var("kptopt", 1, 4) < 0 + ): # negative kptopt sets band structure return sec_k_mesh = KMesh() sec_method.k_mesh = sec_k_mesh # Two exclusive input vars: ngkpt and kptrlatt - for key_var in ['ngkpt', 'kptrlatt']: + for key_var in ["ngkpt", "kptrlatt"]: value = self.out_parser.get_input_var(key_var, 1) if value is not None: - if key_var == 'ngkpt': - sec_k_mesh.generation_method = 'Monkhorst-Pack' + if key_var == "ngkpt": + sec_k_mesh.generation_method = "Monkhorst-Pack" sec_k_mesh.grid = value sec_k_mesh.n_points = np.prod(value) - elif key_var == 'kptrlatt': # TODO cover kptrlatt and nshift=1, 2, 4, 8 situations + elif ( + key_var == "kptrlatt" + ): # TODO cover kptrlatt and nshift=1, 2, 4, 8 situations pass def parse_gw(self): @@ -1069,65 +1357,76 @@ def parse_gw(self): sec_gw = GW() sec_method.gw = sec_gw # KMesh - nkptgw = self.out_parser.get_input_var('nkptgw', 4, 0) + nkptgw = self.out_parser.get_input_var("nkptgw", 4, 0) if nkptgw > 0: - kptgw = np.reshape(self.out_parser.get_input_var('kptgw', 4, []), (nkptgw, 3)) + kptgw = np.reshape( + self.out_parser.get_input_var("kptgw", 4, []), (nkptgw, 3) + ) sec_k_mesh = KMesh() sec_method.k_mesh = sec_k_mesh sec_k_mesh.n_points = nkptgw sec_k_mesh.points = kptgw - # QMesh same as KMesh + # QMesh same as KMesh sec_gw.m_add_sub_section(GW.q_mesh, sec_k_mesh) # Type - gwcalctype = self.out_parser.get_input_var('gwcalctype', 4, 0) + gwcalctype = self.out_parser.get_input_var("gwcalctype", 4, 0) if 0 <= gwcalctype <= 9: - sec_gw.type = 'G0W0' + sec_gw.type = "G0W0" elif 10 <= gwcalctype <= 19: - sec_gw.type = 'ev-scGW' + sec_gw.type = "ev-scGW" elif 20 <= gwcalctype <= 29: - sec_gw.type = 'qp-scGW' + sec_gw.type = "qp-scGW" else: - self.logger.warning('GW type not supported (currently only for 0 <= gwcalctype <= 29).') + self.logger.warning( + "GW type not supported (currently only for 0 <= gwcalctype <= 29)." + ) # Analytical continuation - ppmodel = self.out_parser.get_input_var('ppmodel', 4, 0) + ppmodel = self.out_parser.get_input_var("ppmodel", 4, 0) if gwcalctype == 1: - sec_gw.analytical_continuation = 'pade' + sec_gw.analytical_continuation = "pade" elif gwcalctype == 2: - sec_gw.analytical_continuation = 'contour_deformation' + sec_gw.analytical_continuation = "contour_deformation" else: if ppmodel == 1: - sec_gw.analytical_continuation = 'ppm_GodbyNeeds' + sec_gw.analytical_continuation = "ppm_GodbyNeeds" elif ppmodel == 2: - sec_gw.analytical_continuation = 'ppm_HybertsenLouie' + sec_gw.analytical_continuation = "ppm_HybertsenLouie" elif ppmodel == 3: - sec_gw.analytical_continuation = 'ppm_vonderLindenHorsh' + sec_gw.analytical_continuation = "ppm_vonderLindenHorsh" elif ppmodel == 4: - sec_gw.analytical_continuation = 'ppm_FaridEngel' + sec_gw.analytical_continuation = "ppm_FaridEngel" else: - sec_gw.analytical_continuation = 'contour_deformation' + sec_gw.analytical_continuation = "contour_deformation" # FrequencyMesh - frequency_values = self.out_parser.get('screening_dataset', {}).get('frequencies', {}).get('values') + frequency_values = ( + self.out_parser.get("screening_dataset", {}) + .get("frequencies", {}) + .get("values") + ) if frequency_values is not None: values = [freq[0] + freq[1] * 1j for freq in frequency_values] * ureg.eV - sec_freq_mesh = FrequencyMesh(dimensionality=1, n_points=len(frequency_values), points=values) + sec_freq_mesh = FrequencyMesh( + dimensionality=1, n_points=len(frequency_values), points=values + ) else: - freq_plasma = self.out_parser.get('gw_dataset', {}).get('omega_plasma', 0.0) + freq_plasma = self.out_parser.get("gw_dataset", {}).get("omega_plasma", 0.0) values = [0.0, freq_plasma * 1j] sec_freq_mesh = FrequencyMesh(dimensionality=1, n_points=2, points=values) sec_method.m_add_sub_section(Method.frequency_mesh, sec_freq_mesh) # Screening - occ_scr = self.out_parser.get_input_var('occ', 3, []) + occ_scr = self.out_parser.get_input_var("occ", 3, []) n_scr = len(occ_scr) n_occ_scr = len([occ for occ in occ_scr if occ > 0.0]) n_empty_scr = n_scr - n_occ_scr sec_screening = Screening(n_states=n_scr, n_empty_states=n_empty_scr) sec_gw.m_add_sub_section(GW.screening, sec_screening) # Other paramters - if self.out_parser.get_input_var('bdgw', 4, np.array(None)).all(): + if self.out_parser.get_input_var("bdgw", 4, np.array(None)).all(): sec_gw.interval_qp_corrections = [ - self.out_parser.get_input_var('bdgw', 4, []).min(), - self.out_parser.get_input_var('bdgw', 4, []).max()] - occ_gw = self.out_parser.get_input_var('occ', 4, []) + self.out_parser.get_input_var("bdgw", 4, []).min(), + self.out_parser.get_input_var("bdgw", 4, []).max(), + ] + occ_gw = self.out_parser.get_input_var("occ", 4, []) n_gw = len(occ_gw) sec_gw.n_states = n_gw n_occ_gw = len([occ_gw[i] for i in range(n_gw) if occ_gw[i] > 0.0]) @@ -1137,22 +1436,33 @@ def parse_workflow(self): workflow = None geometry_optimizations = { - 1: 'viscous_damped_md', 2: 'bfgs', 3: 'bfgs', 4: 'conjugate_gradient', - 5: 'steepest_descent', 7: 'quenched_md', 10: 'dic_bfgs', 11: 'dic_bfgs', - 20: 'diis'} + 1: "viscous_damped_md", + 2: "bfgs", + 3: "bfgs", + 4: "conjugate_gradient", + 5: "steepest_descent", + 7: "quenched_md", + 10: "dic_bfgs", + 11: "dic_bfgs", + 20: "diis", + } - ionmov = self.out_parser.get_input_var('ionmov', 1, 0) - vis = self.out_parser.get_input_var('vis', 1, 100.0) + ionmov = self.out_parser.get_input_var("ionmov", 1, 0) + vis = self.out_parser.get_input_var("vis", 1, 100.0) if ionmov in [2, 3, 4, 5, 7, 10, 11, 20] or (ionmov == 1 and vis > 0.0): workflow = GeometryOptimization(method=GeometryOptimizationMethod()) workflow.method.method = geometry_optimizations[ionmov] - tolmxf = self.out_parser.get_input_var('tolmxf', 1, 5e-5) + tolmxf = self.out_parser.get_input_var("tolmxf", 1, 5e-5) if tolmxf is not None: - workflow.method.convergence_tolerance_force_maximum = tolmxf * (ureg.hartree / ureg.bohr) + workflow.method.convergence_tolerance_force_maximum = tolmxf * ( + ureg.hartree / ureg.bohr + ) - tolmxde = self.out_parser.get_input_var('tolmxde', 1, 0.0) + tolmxde = self.out_parser.get_input_var("tolmxde", 1, 0.0) if tolmxde is not None: - workflow.method.convergence_tolerance_energy_difference = tolmxde * ureg.hartree + workflow.method.convergence_tolerance_energy_difference = ( + tolmxde * ureg.hartree + ) elif ionmov in [6, 8, 12, 13, 14, 23] or (ionmov == 1 and vis == 0.0): workflow = MolecularDynamics() elif ionmov == 9: @@ -1163,7 +1473,9 @@ def parse_workflow(self): self.archive.workflow2 = workflow def parse_bandstructure(self, results, energy_fermi): - if self.out_parser.get_input_var('kptopt', 1, 4) > 0: # negative kptopt sets band structure + if ( + self.out_parser.get_input_var("kptopt", 1, 4) > 0 + ): # negative kptopt sets band structure return # saving band structure after the dataset 2 if results is None: @@ -1171,20 +1483,24 @@ def parse_bandstructure(self, results, energy_fermi): sec_run = self.archive.run[-1] sec_scc = sec_run.calculation[-1] - data = results.get('eigenvalues', None) + data = results.get("eigenvalues", None) if data is None: return - nsppol = self.out_parser.get_input_var('nsppol', 2, 1) - data = np.reshape(data, (nsppol, len(data) // nsppol, np.size(data) // len(data))) + nsppol = self.out_parser.get_input_var("nsppol", 2, 1) + data = np.reshape( + data, (nsppol, len(data) // nsppol, np.size(data) // len(data)) + ) nband = int(data.T[1].T[0][0]) kpts = data.T[3:6].T[0] if len(kpts) == 1: # returning if only one kpoint (atoms or molecules) return - eigs = data.T[6:6 + nband].T - occs = results.get('occupation_numbers') + eigs = data.T[6 : 6 + nband].T + occs = results.get("occupation_numbers") if occs is not None: - occs = np.reshape(occs, (nsppol, len(occs) // nsppol, np.size(occs) // len(occs))) + occs = np.reshape( + occs, (nsppol, len(occs) // nsppol, np.size(occs) // len(occs)) + ) # TODO is this is good enough or should we parse ndivsm? sec_k_band = BandStructure() @@ -1195,20 +1511,20 @@ def parse_bandstructure(self, results, energy_fermi): sec_k_band_segment = BandEnergies() sec_k_band.segment.append(sec_k_band_segment) sec_k_band_segment.n_kpoints = 2 - sec_k_band_segment.kpoints = kpts[k - 1:k + 1] + sec_k_band_segment.kpoints = kpts[k - 1 : k + 1] sec_k_band_segment.n_bands = nband - sec_k_band_segment.energies = eigs[:, k - 1:k + 1] * ureg.hartree + sec_k_band_segment.energies = eigs[:, k - 1 : k + 1] * ureg.hartree if occs is not None: - sec_k_band_segment.occupations = occs[:, k - 1:k + 1] + sec_k_band_segment.occupations = occs[:, k - 1 : k + 1] def parse_dos(self): sec_run = self.archive.run[-1] # Identifying the DS2_DOS files - file_root = self.out_parser.get('x_abinit_output_files_root') + file_root = self.out_parser.get("x_abinit_output_files_root") if file_root is None: file_root = f'{os.path.basename(self.filepath).rstrip(".out")}_o' - dos_file = os.path.join(self.maindir, f'{file_root}_DS2_DOS') + dos_file = os.path.join(self.maindir, f"{file_root}_DS2_DOS") if not os.path.isfile(dos_file): return @@ -1220,7 +1536,7 @@ def parse_dos(self): self.dos_parser.mainfile = dos_file dos = self.dos_parser.data - nsppol = self.out_parser.get_input_var('nsppol', 2, 1) + nsppol = self.out_parser.get_input_var("nsppol", 2, 1) dos = np.reshape(dos, (nsppol, len(dos) // nsppol, np.size(dos) // len(dos))) for spin in range(nsppol): @@ -1237,10 +1553,10 @@ def parse_dos(self): sec_dos_total.value_integrated = dos_spin[2] def parse_groundstate_datasets(self): - ''' + """ DATASET 1 gives structural calculations. DATASET 2 gives charge self-consistent (DFT) calculations. - ''' + """ sec_run = self.archive.run[-1] def parse_configurations(section): @@ -1256,39 +1572,47 @@ def parse_configurations(section): energy = section.get(key) if energy is None: continue - key = key.lstrip('energy_') - if key == 'internal': + key = key.lstrip("energy_") + if key == "internal": sec_energy.internal = energy elif hasattr(Energy, key): - sec_energy.m_add_sub_section(getattr(Energy, key), EnergyEntry(value=energy)) + sec_energy.m_add_sub_section( + getattr(Energy, key), EnergyEntry(value=energy) + ) else: sec_energy.contributions.append(EnergyEntry(kind=key, value=energy)) - forces = section.get('cartesian_forces') + forces = section.get("cartesian_forces") if forces is not None: sec_forces = Forces() sec_scc.forces = sec_forces sec_forces.total = ForcesEntry(value_raw=forces) - stress_tensor = section.get('stress_tensor') + stress_tensor = section.get("stress_tensor") if stress_tensor is not None: sec_stress = Stress() sec_scc.stress = sec_stress sec_stress.total = StressEntry(value=stress_tensor) - fermi_energy = section.get('fermi_energy') + fermi_energy = section.get("fermi_energy") if fermi_energy is not None: sec_energy.fermi = fermi_energy def parse_scf(section): sec_scc = sec_run.calculation[-1] - self_consistent = section.get('self_consistent', {}) - if self_consistent.get('convergence', None) in ['converged', 'is converged', 'are converged']: + self_consistent = section.get("self_consistent", {}) + if self_consistent.get("convergence", None) in [ + "converged", + "is converged", + "are converged", + ]: sec_scc.calculation_converged = True - energy_total_scf_iteration = self_consistent.get('energy_total_scf_iteration', []) + energy_total_scf_iteration = self_consistent.get( + "energy_total_scf_iteration", [] + ) for energy in energy_total_scf_iteration: sec_scf_iteration = ScfIteration() sec_scc.scf_iteration.append(sec_scf_iteration) @@ -1297,21 +1621,21 @@ def parse_scf(section): sec_energy.total = EnergyEntry(value=energy[0] * ureg.hartree) for nd in range(self.out_parser.n_datasets): - results = self.dataset[nd].get('results') + results = self.dataset[nd].get("results") if results is None: continue parse_configurations(results) parse_scf(self.dataset[nd]) # Relaxation of the structure - relaxation = self.dataset[nd].get('relaxation', []) + relaxation = self.dataset[nd].get("relaxation", []) for step in relaxation: if relaxation.index(step) > 0: # not parsing system for step 1 sec_system = System() sec_run.system.append(sec_system) sec_atoms = Atoms() sec_system.atoms = sec_atoms - atom_positions = step.get('cartesian_coordinates') + atom_positions = step.get("cartesian_coordinates") sec_atoms.positions = atom_positions sec_atoms.labels = sec_run.system[0].atoms.labels sec_atoms.periodic = sec_run.system[0].atoms.periodic @@ -1324,10 +1648,10 @@ def parse_scf(section): self.parse_bandstructure(results, sec_run.calculation[-1].energy.fermi) def parse_gw_datasets(self): - ''' + """ DATASET 3 gives screening calculations. DATASET 4 gives self-energy (GW) calculations. - ''' + """ sec_run = self.archive.run[-1] def initialize_calculation_section(): @@ -1342,19 +1666,19 @@ def initialize_calculation_section(): return sec_scc def parse_quantities(section, keys, value): - if keys == 'symm_screening' and value: - value = ' '.join(value) - setattr(section, f'x_abinit_{keys}', value) + if keys == "symm_screening" and value: + value = " ".join(value) + setattr(section, f"x_abinit_{keys}", value) def parse_meshes(section, keys, value): sec_mesh = x_abinit_mesh() section.x_abinit_kqmesh.append(sec_mesh) sec_mesh.x_abinit_type = keys for subkeys in value.keys(): - setattr(sec_mesh, f'x_abinit_{subkeys}', value[subkeys]) + setattr(sec_mesh, f"x_abinit_{subkeys}", value[subkeys]) # Screening dataset code-specific - scr_dataset = self.out_parser.get('screening_dataset') + scr_dataset = self.out_parser.get("screening_dataset") if scr_dataset: sec_scc = initialize_calculation_section() sec_scr = x_abinit_screening_dataset() @@ -1362,21 +1686,21 @@ def parse_meshes(section, keys, value): for keys in scr_dataset.keys(): value = scr_dataset.get(keys) - if not hasattr(value, 'quantities'): + if not hasattr(value, "quantities"): parse_quantities(sec_scr, keys, value) else: - if keys == 'frequencies': - sec_scr.x_abinit_frequencies = value['values'] - elif keys == 'chi_q': + if keys == "frequencies": + sec_scr.x_abinit_frequencies = value["values"] + elif keys == "chi_q": sec_chi_q = x_abinit_chi_q_data() sec_scr.x_abinit_chi_q = sec_chi_q for subkeys in value.keys(): - setattr(sec_chi_q, f'x_abinit_{subkeys}', value[subkeys]) + setattr(sec_chi_q, f"x_abinit_{subkeys}", value[subkeys]) else: parse_meshes(sec_scr, keys, value) # GW dataset code-specific - gw_dataset = self.out_parser.get('gw_dataset') + gw_dataset = self.out_parser.get("gw_dataset") if gw_dataset: sec_scc = initialize_calculation_section() sec_gw_abinit = x_abinit_gw_dataset() @@ -1384,56 +1708,76 @@ def parse_meshes(section, keys, value): for keys in gw_dataset.keys(): value = gw_dataset.get(keys) - if not hasattr(value, 'quantities'): + if not hasattr(value, "quantities"): parse_quantities(sec_gw_abinit, keys, value) else: - if keys == 'ks_band_gaps': + if keys == "ks_band_gaps": sec_ks_gaps = x_abinit_ks_band_gaps_params() sec_gw_abinit.x_abinit_ks_band_gaps.append(sec_ks_gaps) for subkeys in value.keys(): - setattr(sec_ks_gaps, f'x_abinit_{subkeys}', value[subkeys]) - elif keys == 'sigma_parameters': + setattr(sec_ks_gaps, f"x_abinit_{subkeys}", value[subkeys]) + elif keys == "sigma_parameters": sec_sigma = x_abinit_sigma_params() sec_gw_abinit.x_abinit_sigma.append(sec_sigma) for subkeys in value.keys(): - if subkeys == 'model' and value[subkeys]: - val = ' '.join([str(v) for v in value[subkeys]]) - elif subkeys == 'params' and value[subkeys]: + if subkeys == "model" and value[subkeys]: + val = " ".join([str(v) for v in value[subkeys]]) + elif subkeys == "params" and value[subkeys]: val = dict(value[subkeys]) else: val = value[subkeys] - setattr(sec_sigma, f'x_abinit_{subkeys}', val) - elif keys == 'epsilon_inv': + setattr(sec_sigma, f"x_abinit_{subkeys}", val) + elif keys == "epsilon_inv": sec_epsiloninv = x_abinit_epsilon_inv_params() sec_gw_abinit.x_abinit_epsilon_inv.append(sec_epsiloninv) for subkeys in value.keys(): val = dict(value[subkeys]) - setattr(sec_epsiloninv, f'x_abinit_{subkeys}', val) + setattr(sec_epsiloninv, f"x_abinit_{subkeys}", val) else: parse_meshes(sec_gw_abinit, keys, value) # GW specific outputs - for selfenergy in gw_dataset.get('self_energy_ee', []): + for selfenergy in gw_dataset.get("self_energy_ee", []): sec_k_eigen = BandEnergies() sec_scc.eigenvalues.append(sec_k_eigen) sec_k_eigen.n_kpoints = 1 - kpoints = [selfenergy.get('kpoint', []) for k in range(sec_k_eigen.n_kpoints)] + kpoints = [ + selfenergy.get("kpoint", []) for k in range(sec_k_eigen.n_kpoints) + ] sec_k_eigen.kpoints = kpoints - sec_k_eigen.n_bands = len(selfenergy.get('data', [])) - selfenergy_data = np.array(selfenergy.get('data', [])) - if selfenergy.get('params'): - sec_k_eigen.n_spin_channels = selfenergy.get('params')[0][-1] + sec_k_eigen.n_bands = len(selfenergy.get("data", [])) + selfenergy_data = np.array(selfenergy.get("data", [])) + if selfenergy.get("params"): + sec_k_eigen.n_spin_channels = selfenergy.get("params")[0][-1] sec_gap = x_abinit_qp_band_gaps_params() sec_k_eigen.x_abinit_qp_band_gaps_params = sec_gap - sec_gap.x_abinit_value = selfenergy.get('params')[1][-1] * ureg.eV # KS gap - sec_gap.x_abinit_value_fundamental = selfenergy.get('params')[2][-1] * ureg.eV # QP gap + sec_gap.x_abinit_value = ( + selfenergy.get("params")[1][-1] * ureg.eV + ) # KS gap + sec_gap.x_abinit_value_fundamental = ( + selfenergy.get("params")[2][-1] * ureg.eV + ) # QP gap for i in self._selfenergy_data_map.keys(): - value = np.array([[ - selfenergy_data[:, i] for s in range(sec_k_eigen.n_spin_channels)] for k in range(sec_k_eigen.n_kpoints)]) + value = np.array( + [ + [ + selfenergy_data[:, i] + for s in range(sec_k_eigen.n_spin_channels) + ] + for k in range(sec_k_eigen.n_kpoints) + ] + ) value = value * ureg.eV setattr(sec_k_eigen, self._selfenergy_data_map[i], value) - value = np.array([[ - selfenergy_data[:, 5] for s in range(sec_k_eigen.n_spin_channels)] for k in range(sec_k_eigen.n_kpoints)]) + value = np.array( + [ + [ + selfenergy_data[:, 5] + for s in range(sec_k_eigen.n_spin_channels) + ] + for k in range(sec_k_eigen.n_kpoints) + ] + ) sec_k_eigen.qp_linearization_factor = value def init_parser(self): @@ -1448,14 +1792,14 @@ def reuse_parser(self, parser): def get_mainfile_keys(self, **kwargs): self.out_parser.findall = False - self.out_parser.mainfile = kwargs.get('filename') - ds_numbers = self.out_parser.get('dataset_numbers') - optdriver = self.out_parser.input_vars.get('optdriver', []) + self.out_parser.mainfile = kwargs.get("filename") + ds_numbers = self.out_parser.get("dataset_numbers") + optdriver = self.out_parser.input_vars.get("optdriver", []) self.out_parser.findall = True if 4 in ds_numbers and (1 and 2 and 3) not in ds_numbers: return True if len(optdriver) == 4 and (optdriver[-1] == 4 or optdriver[-1] == 66): - return ['GW', 'GW_workflow'] + return ["GW", "GW_workflow"] return True def parse(self, filepath, archive, logger): @@ -1467,23 +1811,35 @@ def parse(self, filepath, archive, logger): self.init_parser() # Initial check for the presence of correctly parsed datasets - self.dataset = self.out_parser.get('dataset', []) + self.dataset = self.out_parser.get("dataset", []) if len(self.dataset) < 1: - self.logger.error('No datasets detected.') + self.logger.error("No datasets detected.") return - if 4 in self.out_parser.dataset_numbers and (1 and 2 and 3) not in self.out_parser.dataset_numbers: - self._calculation_type = 'gw' + if ( + 4 in self.out_parser.dataset_numbers + and (1 and 2 and 3) not in self.out_parser.dataset_numbers + ): + self._calculation_type = "gw" sec_run = Run() self.archive.run.append(sec_run) sec_run.program = Program( - name='ABINIT', version=self.out_parser.get('program_version', ''), - compilation_host=self.out_parser.get('program_compilation_host', '')) + name="ABINIT", + version=self.out_parser.get("program_version", ""), + compilation_host=self.out_parser.get("program_compilation_host", ""), + ) section_run_keys = [ - 'x_abinit_parallel_compilation', 'x_abinit_start_date', 'x_abinit_start_time', - 'x_abinit_input_file', 'x_abinit_output_file', 'x_abinit_input_files_root', - 'x_abinit_output_files_root', 'x_abinit_total_cpu_time', 'x_abinit_total_wallclock_time'] + "x_abinit_parallel_compilation", + "x_abinit_start_date", + "x_abinit_start_time", + "x_abinit_input_file", + "x_abinit_output_file", + "x_abinit_input_files_root", + "x_abinit_output_files_root", + "x_abinit_total_cpu_time", + "x_abinit_total_wallclock_time", + ] for key in section_run_keys: val = self.out_parser.get(key) @@ -1491,14 +1847,20 @@ def parse(self, filepath, archive, logger): continue setattr(sec_run, key, val) - if self.out_parser.get('run_clean_end') is not None: + if self.out_parser.get("run_clean_end") is not None: sec_run.clean_end = True - abi_time = datetime.strptime(str("%s %s") % ( - self.out_parser.get('x_abinit_start_date'), - self.out_parser.get('x_abinit_start_time')), "%a %d %b %Y %Hh%M") + abi_time = datetime.strptime( + str("%s %s") + % ( + self.out_parser.get("x_abinit_start_date"), + self.out_parser.get("x_abinit_start_time"), + ), + "%a %d %b %Y %Hh%M", + ) sec_run.time_run = TimeRun( - date_start=(abi_time - datetime(1970, 1, 1)).total_seconds()) + date_start=(abi_time - datetime(1970, 1, 1)).total_seconds() + ) # Parsing ABINIT input variables self.parse_var() @@ -1506,7 +1868,7 @@ def parse(self, filepath, archive, logger): # Parse initial system from dataset 1 self.parse_system() - if self._calculation_type == 'gw': + if self._calculation_type == "gw": self.parse_gw() self.parse_gw_datasets() else: @@ -1515,17 +1877,21 @@ def parse(self, filepath, archive, logger): self.parse_workflow() - gw_archive = self._child_archives.get('GW') - optdriver = self.out_parser.input_vars.get('optdriver', []) - if gw_archive is not None and len(optdriver) == 4 and (optdriver[-1] == 4 or optdriver[-1] == 66): + gw_archive = self._child_archives.get("GW") + optdriver = self.out_parser.input_vars.get("optdriver", []) + if ( + gw_archive is not None + and len(optdriver) == 4 + and (optdriver[-1] == 4 or optdriver[-1] == 66) + ): # GW single point p = AbinitParser() - p._calculation_type = 'gw' + p._calculation_type = "gw" p.parse(filepath, gw_archive, logger) # GW workflow - gw_workflow_archive = self._child_archives.get('GW_workflow') + gw_workflow_archive = self._child_archives.get("GW_workflow") try: self.parse_gw_workflow(gw_archive, gw_workflow_archive) except Exception: - self.logger.error('Error parsing the automatic GW workflow') + self.logger.error("Error parsing the automatic GW workflow") diff --git a/electronicparsers/ams/metainfo/ams.py b/electronicparsers/ams/metainfo/ams.py index 83571fb4..5c88de2f 100644 --- a/electronicparsers/ams/metainfo/ams.py +++ b/electronicparsers/ams/metainfo/ams.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -33,55 +41,59 @@ class Program(runschema.run.Program): - m_def = Section(validate=False, extends_base_section=True) x_ams_name = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_engine = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - m_def = Section(validate=False, extends_base_section=True) x_ams_energy_min = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_bands"], + unit="joule", + description=""" + """, + ) x_ams_energy_max = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_bands"], + unit="joule", + description=""" + """, + ) x_ams_occupations = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_bands"], + unit="joule", + description=""" + """, + ) class Energy(runschema.calculation.Energy): - m_def = Section(validate=False, extends_base_section=True) x_ams_dispersion = SubSection(sub_section=runschema.calculation.EnergyEntry) - x_ams_fit_error_correction = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_fit_error_correction = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) x_ams_v_atomic_def = SubSection(sub_section=runschema.calculation.EnergyEntry) @@ -89,29 +101,47 @@ class Energy(runschema.calculation.Energy): x_ams_orthogonalization = SubSection(sub_section=runschema.calculation.EnergyEntry) - x_ams_orbital_interaction = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_orbital_interaction = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) - x_ams_orbital_interaction_a = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_orbital_interaction_a = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) - x_ams_orbital_interaction_efield = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_orbital_interaction_efield = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) - x_ams_orbital_interaction_fit_correction = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_orbital_interaction_fit_correction = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) - x_ams_orbital_interaction_ts_correction_lda = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_orbital_interaction_ts_correction_lda = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) - x_ams_orbital_interaction_ts_correction_nl = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_orbital_interaction_ts_correction_nl = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) x_ams_pauli_coulomb = SubSection(sub_section=runschema.calculation.EnergyEntry) x_ams_pauli_efield = SubSection(sub_section=runschema.calculation.EnergyEntry) - x_ams_pauli_fit_correction = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_pauli_fit_correction = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) x_ams_pauli_kinetic = SubSection(sub_section=runschema.calculation.EnergyEntry) - x_ams_pauli_kinetic_coulomb = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_pauli_kinetic_coulomb = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) - x_ams_pauli_ts_correction_lda = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_pauli_ts_correction_lda = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) x_ams_pauli = SubSection(sub_section=runschema.calculation.EnergyEntry) @@ -119,7 +149,9 @@ class Energy(runschema.calculation.Energy): x_ams_rpa = SubSection(sub_section=runschema.calculation.EnergyEntry) - x_ams_sum_fragments_scf_fit_correction = SubSection(sub_section=runschema.calculation.EnergyEntry) + x_ams_sum_fragments_scf_fit_correction = SubSection( + sub_section=runschema.calculation.EnergyEntry + ) x_ams_bond = SubSection(sub_section=runschema.calculation.EnergyEntry) @@ -129,7 +161,6 @@ class Energy(runschema.calculation.Energy): class Forces(runschema.calculation.Forces): - m_def = Section(validate=False, extends_base_section=True) x_ams_p_matrix = SubSection(sub_section=runschema.calculation.ForcesEntry) @@ -150,517 +181,589 @@ class Forces(runschema.calculation.Forces): class GeometryOptimization(simulationworkflowschema.GeometryOptimization): - m_def = Section(validate=False, extends_base_section=True) x_ams_optimization_coordinates = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_optimize_lattice = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_maximum_rms_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_maximum_rms_step_allowed = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_maximum_stress_energy_allowed = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_initial_model_hessian = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_hessian_update_method = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_first_gdiis_cycle = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_maximum_gdiis_vectors = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_trust_radius = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr', - description=''' - ''') + unit="bohr", + description=""" + """, + ) x_ams_trust_radius_varies = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_constraints_converged_at_all_steps = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_symmetrize_steps = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_use_projector = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_ams_dftb_resources_dir = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_scc_convergence_enabled = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_max_scc_cycles = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_scc_charge_convergence = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_scc_charge_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_diis_max_dimension = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_diis_max_coeff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_adaptive_scc_charge_mixing = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_adaptive_scc_mixing_strategy = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_spin_polarization = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_orbital_dependent_scc = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_orbital_fill_strategy = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_fermi_temperature = Quantity( type=np.dtype(np.float64), - unit='kelvin', + unit="kelvin", shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_use_symmetry = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_radial_function_extrapolation_method = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_grimme_d3_dispersion_correction = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_other_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_assume_insulator = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_ewald_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_ewald_range_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_nuclear_charge_density_model = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_bzstruct_config = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_run_config = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) class BasisSetAtomCentered(runschema.method.BasisSetAtomCentered): - m_def = Section(validate=False, extends_base_section=True) x_ams_basis_functions_confinement_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_basis_functions_confinement_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class AtomParameters(runschema.method.AtomParameters): - m_def = Section(validate=False, extends_base_section=True) x_ams_radial_points = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_nuclear_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_n_radial_core_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_orbital_energies = Quantity( type=np.dtype(np.float64), - shape=['n_orbitals'], - unit='joule', - description=''' - ''') + shape=["n_orbitals"], + unit="joule", + description=""" + """, + ) x_ams_orbital_radii = Quantity( type=np.dtype(np.float64), - shape=['n_orbitals'], - description=''' - ''') + shape=["n_orbitals"], + description=""" + """, + ) x_ams_energy_sum_eigenvalues = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_ams_energy_total_lda = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_ams_energy_kinetic = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_ams_energy_classical_electron_electron_repulsion = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_ams_energy_electron_nucleus_repulsion = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_ams_n_radial_valence_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_n_radial_core_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_n_radial_fit_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_cutoff_valence = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_cutoff_core = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_cutoff_valence_kinetic = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_cutoff_core_kinetic = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class BandGapDeprecated(runschema.calculation.BandGapDeprecated): - m_def = Section(validate=False, extends_base_section=True) x_ams_n_valence_electrons = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_valence_band_index = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_valence_band_spin_index = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_conduction_band_index = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_conduction_band_spin_index = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) class Scf(runschema.method.Scf): - m_def = Section(validate=False, extends_base_section=True) x_ams_diis_settings_dirac = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_diis_settings_scf = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_growth_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_shrink_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_mix = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_degenerate = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_edegen = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_scfrtx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_convrg = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_ncyclx = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_vsplit = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class KMesh(runschema.method.KMesh): - m_def = Section(validate=False, extends_base_section=True) x_ams_general_integration_parameter = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_bz_volume_total = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_bz_volume_irreducible = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_bz_volume_numerical_integration = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_n_points_unique = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_n_simplices = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) x_ams_n_points_per_simplex = Quantity( type=np.int32, shape=[], - description=''' - ''') + description=""" + """, + ) diff --git a/electronicparsers/ams/parser.py b/electronicparsers/ams/parser.py index 1fb54671..5791fa85 100644 --- a/electronicparsers/ams/parser.py +++ b/electronicparsers/ams/parser.py @@ -27,26 +27,48 @@ from nomad.parsing.file_parser.text_parser import TextParser, Quantity, FileParser from runschema.run import Run, Program, TimeRun from runschema.method import ( - Method, DFT, XCFunctional, Functional, Electronic, BasisSet, Scf, AtomParameters, - KMesh, BasisSetContainer, BasisSetAtomCentered, -) -from runschema.system import ( - System, Atoms + Method, + DFT, + XCFunctional, + Functional, + Electronic, + BasisSet, + Scf, + AtomParameters, + KMesh, + BasisSetContainer, + BasisSetAtomCentered, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, ScfIteration, Dos, DosValues, Energy, EnergyEntry, Forces, ForcesEntry, - Charges, ChargesValue, Multipoles, MultipolesEntry, BandEnergies, BandGapDeprecated, - BandGap + Calculation, + ScfIteration, + Dos, + DosValues, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + Charges, + ChargesValue, + Multipoles, + MultipolesEntry, + BandEnergies, + BandGapDeprecated, + BandGap, ) from simulationworkflowschema import ( - GeometryOptimization, GeometryOptimizationMethod, MolecularDynamics) + GeometryOptimization, + GeometryOptimizationMethod, + MolecularDynamics, +) from .metainfo import m_env # pylint: disable=unused-import from electronicparsers.utils import get_files from .rkf import rkf_to_dict -re_float = r'[-+]?\d+\.\d*(?:[Ee][-+]\d+)?' -re_n = r'[\n\r]' +re_float = r"[-+]?\d+\.\d*(?:[Ee][-+]\d+)?" +re_n = r"[\n\r]" class OutParser(TextParser): @@ -57,14 +79,14 @@ def init_quantities(self): def str_to_labels_positions(val_in): val = [v.split() for v in val_in.strip().splitlines()] unit = val.pop(0)[0].lower() - unit = ureg.bohr if unit.startswith('bohr') else ureg.angstrom + unit = ureg.bohr if unit.startswith("bohr") else ureg.angstrom val = np.transpose(val) return val[1], np.array(val[2:5].T, dtype=np.dtype(np.float64)) * unit def str_to_lattice_vectors(val_in): val = [v.split()[-3:] for v in val_in.strip().splitlines()] unit = val.pop(0)[0].lower() - unit = ureg.bohr if unit.startswith('bohr') else ureg.angstrom + unit = ureg.bohr if unit.startswith("bohr") else ureg.angstrom return np.array(val, dtype=np.dtype(np.float64)) * unit def str_to_forces(val_in): @@ -72,20 +94,29 @@ def str_to_forces(val_in): return np.array(val, dtype=np.dtype(np.float64)) * ureg.hartree / ureg.bohr def to_parameters(val_in): - lines = [v.strip().rsplit(' ', 1) for v in val_in.strip().splitlines()] - return {line[0].strip(): line[1].strip() for line in lines if len(line) == 2} + lines = [v.strip().rsplit(" ", 1) for v in val_in.strip().splitlines()] + return { + line[0].strip(): line[1].strip() for line in lines if len(line) == 2 + } def to_run_config(val_in): - lines = [v.strip().split('. ') for v in val_in.strip().splitlines()] - return {line[0].strip(): line[-1] == 'T' for line in lines} + lines = [v.strip().split(". ") for v in val_in.strip().splitlines()] + return {line[0].strip(): line[-1] == "T" for line in lines} def to_mulliken_populations(val_in): lines = [v.strip().split() for v in val_in.strip().splitlines()] - orbitals = np.transpose([line[0].split('/') for line in lines]) - return orbitals[0], orbitals[1], orbitals[3], np.array([line[1:] for line in lines], np.float64) + orbitals = np.transpose([line[0].split("/") for line in lines]) + return ( + orbitals[0], + orbitals[1], + orbitals[3], + np.array([line[1:] for line in lines], np.float64), + ) def to_band_energy_ranges(val_in): - columns = np.array([v.strip().split() for v in val_in.strip().splitlines()], np.float64).T[1:] + columns = np.array( + [v.strip().split() for v in val_in.strip().splitlines()], np.float64 + ).T[1:] nspin = len(columns) // 3 emin = [columns[n * 3 + 0] for n in range(nspin)] emax = [columns[n * 3 + 1] for n in range(nspin)] @@ -94,696 +125,932 @@ def to_band_energy_ranges(val_in): system_quantities = [ Quantity( - 'labels_positions', - rf'Index Symbol\s*x\s*\((.+?)\).+(\s+)' - rf'((?:\d+ + [A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - convert=False, str_operation=str_to_labels_positions), + "labels_positions", + rf"Index Symbol\s*x\s*\((.+?)\).+(\s+)" + rf"((?:\d+ + [A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + convert=False, + str_operation=str_to_labels_positions, + ), Quantity( - 'lattice_vectors', - r'Lattice vectors \((.+?)\)(\s+)' - rf'((?:\d+ +{re_float} +{re_float} +{re_float}\s+)+)', - convert=False, str_operation=str_to_lattice_vectors), + "lattice_vectors", + r"Lattice vectors \((.+?)\)(\s+)" + rf"((?:\d+ +{re_float} +{re_float} +{re_float}\s+)+)", + convert=False, + str_operation=str_to_lattice_vectors, + ), ] method_quantities = [ Quantity( - 'band_engine_input', - r'Band Engine Input\s*\-+\s*([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[ - Quantity('basis', r' Basis\s*Type\s*(.+)')])), - Quantity( - 'model_parameters', - r'M O D E L P A R A M E T E R S\s*\=+([\s\S]+?)\={10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'dft_potential', - r'FUNCTIONAL POTENTIAL \(scf\)([\s\S]+?)DENSITY', - sub_parser=TextParser(quantities=[ - Quantity('LDA', r'LDA\:\s*([\w ]+)', flatten=False), - Quantity('GGA', r'Gradient Corrections\:\s*([\w ]+)', flatten=False), - Quantity('MGGA', r'Meta-GGA\:\s*([\w ]+)', flatten=False)])), - Quantity('spin', r'(UNrestricted)', str_operation=lambda x: True), - Quantity( - 'relativistic_corrections', - r'Relativistic Corrections\:\s*(.+?) ', dtype=str, flatten=False), - Quantity( - 'x_ams_nuclear_charge_density_model', - rf'Nuclear Charge Density Model\:\s*(.+?){re_n}', - str_operation=lambda x: x.strip(), dtype=str, flatten=False - ) - ]) - ), - Quantity( - 'confinement', - r'C O N F I N E M E N T\s+\=+\s+([\s\S]+?)\={10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'x_ams_basis_functions_confinement_radius', - rf'Basis functions confinement radius\s+({re_float})', - dtype=np.float64 - ), - Quantity( - 'x_ams_basis_functions_confinement_width', - rf'Width\s+({re_float})', - dtype=np.float64 - ), - ]) + "band_engine_input", + r"Band Engine Input\s*\-+\s*([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[Quantity("basis", r" Basis\s*Type\s*(.+)")] + ), ), Quantity( - 'radial_functions', - r'(T Y P E +\d+\s+\-+[\s\S]+?NR\. OF RADIAL FIT FUNCTIONS.+)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'x_ams_radial_points', - r'RADIAL POINTS\s+(\d+)', dtype=np.int32 - ), - Quantity('label', r'\*\*> +(\w+) +<\*\*', dtype=str), - Quantity( - 'x_ams_nuclear_charge', - rf'NUCLEAR CHARGE\s+({re_float})', dtype=np.float64 - ), - Quantity( - 'n_valence_electrons', - rf'VALENCE CHARGE\s+({re_float})', dtype=np.int32 - ), - Quantity( - 'charge', - rf'NET CHARGE\s+({re_float})', dtype=np.float64 - ), - Quantity( - 'orbital_parameters', - rf'Orbital +Q.+\s*\-+\s+((?:\d+\w+ +{re_float}.+\s+)+)', - str_operation=lambda x: np.transpose([v.strip().split() for v in x.strip().splitlines()]) - ), - Quantity( - 'x_ams_energy_sum_eigenvalues', - rf'Sum \(energy eigenvalues\)\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'x_ams_energy_total_lda', - rf'Total energy LDA\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'x_ams_energy_kinetic', - rf'Kinetic energy\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'x_ams_energy_classical_electron_electron_repulsion', - rf'Classical e\-e repulsion\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'x_ams_energy_electron_nucleus_repulsion', - rf'Classical e\-e repulsion\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'x_ams_n_radial_valence_orbitals', - r'NR\. OF RADIAL VALENCE ORBITALS\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_n_radial_core_orbitals', - r'NR\. OF RADIAL CORE ORBITALS\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_n_radial_fit_functions', - r'NR\. OF RADIAL FIT FUNCTIONS\s+(\d+)', dtype=np.int32 - ), - ]) - ), - Quantity( - 'ranges_atomic_orbitals', - r'R A N G E S F O R A T O M I C O R B I T A L S\s+\=+([\s\S]+?)\={10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'type', - rf'Type +valence.+\s+\-+\s+((?:\w+ +{re_float}.+\s+)+)', - str_operation=lambda x: [v.strip().split() for v in x.strip().splitlines()] - ), - Quantity( - 'cutoff', - rf'Cutoff +({re_float}.+)', dtype=np.dtype(np.float64) - ) - ]) - ), - Quantity( - 'x_ams_run_config', - r'R U N C O N F I G\s+\=+\s+((?:\w.+\s+)+)', - str_operation=to_run_config - ), - Quantity( - 'k_space_sampling', - r'(?:K \- S P A C E S A M P L I N G|K\-space integration)([\s\S]+?)\={5}', - sub_parser=TextParser(quantities=[ - Quantity( - 'x_ams_general_integration_parameter', - r'General integration parameter\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_bz_volume_total', - rf'Total volume\s+({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_bz_volume_irreducible', - rf'Irreducible.+\s+({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_bz_volume_numerical_integration', - rf'Numerical integration\s+({re_float})', dtype=np.float64 - ), - Quantity( - 'n_points', - r'Total nr\. of K\-points\s+(\d+)' - ), - Quantity( - 'x_ams_n_points_unique', - r'Nr\. of symmetry unique points\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_n_simplices', - r'Nr\. of simplices\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_n_points_per_simplex', - r'Nr\. of points per simplex\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'points', - rf'No\. +Sym\..+\s+\-+((?:\d+ +\d+ +{re_float}.+\s+)+)', - str_operation=lambda x: np.transpose(np.array( - [v.split() for v in x.strip().splitlines()], np.float64))[2:5].T - ) - ]) - ), - Quantity( - 'scf_options', - r'S\. C\. F\. O P T I O N S([\s\S]+?)\*\*', - sub_parser=TextParser(quantities=[ - Quantity( - 'x_ams_diis_settings_dirac', - r'DIIS settings info for DIRAC +\*\s+((?:[\w ]+? \w\S*\s+)+)', - str_operation=to_parameters - ), - Quantity( - 'x_ams_diis_settings_scf', - r'DIIS settings info for SCF +\*\s+((?:[\w ]+? \w\S*\s+)+)', - str_operation=to_parameters - ), - Quantity( - 'x_ams_growth_factor', - rf'growth factor\s*({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_shrink_factor', - rf'shrink factor\s*({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_mix', - rf'Mix\s*({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_degenerate', - r'Degenerate\s*(.)', str_operation=lambda x: x == 'T' - ), - Quantity( - 'x_ams_edegen', - rf'Edegen\s*({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_scfrtx', - rf'SCFRTX\s*({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_convrg', - rf'Convrg\s*({re_float})', dtype=np.float64 - ), - Quantity( - 'x_ams_ncyclx', - r'Ncyclx\s*(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_vsplit', - rf'Vsplit\s*({re_float})', dtype=np.float64 - ), - - ]) + "model_parameters", + r"M O D E L P A R A M E T E R S\s*\=+([\s\S]+?)\={10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "dft_potential", + r"FUNCTIONAL POTENTIAL \(scf\)([\s\S]+?)DENSITY", + sub_parser=TextParser( + quantities=[ + Quantity("LDA", r"LDA\:\s*([\w ]+)", flatten=False), + Quantity( + "GGA", + r"Gradient Corrections\:\s*([\w ]+)", + flatten=False, + ), + Quantity( + "MGGA", r"Meta-GGA\:\s*([\w ]+)", flatten=False + ), + ] + ), + ), + Quantity( + "spin", r"(UNrestricted)", str_operation=lambda x: True + ), + Quantity( + "relativistic_corrections", + r"Relativistic Corrections\:\s*(.+?) ", + dtype=str, + flatten=False, + ), + Quantity( + "x_ams_nuclear_charge_density_model", + rf"Nuclear Charge Density Model\:\s*(.+?){re_n}", + str_operation=lambda x: x.strip(), + dtype=str, + flatten=False, + ), + ] + ), ), Quantity( - 'x_ams_dftb_resources_dir', - r'DFTB Resources dir\s*(.+)', dtype=str, flatten=False + "confinement", + r"C O N F I N E M E N T\s+\=+\s+([\s\S]+?)\={10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_ams_basis_functions_confinement_radius", + rf"Basis functions confinement radius\s+({re_float})", + dtype=np.float64, + ), + Quantity( + "x_ams_basis_functions_confinement_width", + rf"Width\s+({re_float})", + dtype=np.float64, + ), + ] + ), ), Quantity( - 'x_ams_scc_convergence_enabled', - r'SCC convergence (\w+)', str_operation=lambda x: x == 'enabled' + "radial_functions", + r"(T Y P E +\d+\s+\-+[\s\S]+?NR\. OF RADIAL FIT FUNCTIONS.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "x_ams_radial_points", + r"RADIAL POINTS\s+(\d+)", + dtype=np.int32, + ), + Quantity("label", r"\*\*> +(\w+) +<\*\*", dtype=str), + Quantity( + "x_ams_nuclear_charge", + rf"NUCLEAR CHARGE\s+({re_float})", + dtype=np.float64, + ), + Quantity( + "n_valence_electrons", + rf"VALENCE CHARGE\s+({re_float})", + dtype=np.int32, + ), + Quantity( + "charge", rf"NET CHARGE\s+({re_float})", dtype=np.float64 + ), + Quantity( + "orbital_parameters", + rf"Orbital +Q.+\s*\-+\s+((?:\d+\w+ +{re_float}.+\s+)+)", + str_operation=lambda x: np.transpose( + [v.strip().split() for v in x.strip().splitlines()] + ), + ), + Quantity( + "x_ams_energy_sum_eigenvalues", + rf"Sum \(energy eigenvalues\)\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_ams_energy_total_lda", + rf"Total energy LDA\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_ams_energy_kinetic", + rf"Kinetic energy\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_ams_energy_classical_electron_electron_repulsion", + rf"Classical e\-e repulsion\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_ams_energy_electron_nucleus_repulsion", + rf"Classical e\-e repulsion\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_ams_n_radial_valence_orbitals", + r"NR\. OF RADIAL VALENCE ORBITALS\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_n_radial_core_orbitals", + r"NR\. OF RADIAL CORE ORBITALS\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_n_radial_fit_functions", + r"NR\. OF RADIAL FIT FUNCTIONS\s+(\d+)", + dtype=np.int32, + ), + ] + ), ), Quantity( - 'x_ams_max_scc_cycles', - r'Maximum SCC cycles \ſ*(\d+)', dtype=np.int32 + "ranges_atomic_orbitals", + r"R A N G E S F O R A T O M I C O R B I T A L S\s+\=+([\s\S]+?)\={10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "type", + rf"Type +valence.+\s+\-+\s+((?:\w+ +{re_float}.+\s+)+)", + str_operation=lambda x: [ + v.strip().split() for v in x.strip().splitlines() + ], + ), + Quantity( + "cutoff", + rf"Cutoff +({re_float}.+)", + dtype=np.dtype(np.float64), + ), + ] + ), ), Quantity( - 'x_ams_scc_charge_convergence', - rf'SCC charge convergence\s*({re_float})', dtype=np.float64 + "x_ams_run_config", + r"R U N C O N F I G\s+\=+\s+((?:\w.+\s+)+)", + str_operation=to_run_config, ), Quantity( - 'x_ams_scc_charge_mixing', - rf'SCC charge mixing\s*({re_float})', dtype=np.float64 + "k_space_sampling", + r"(?:K \- S P A C E S A M P L I N G|K\-space integration)([\s\S]+?)\={5}", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_ams_general_integration_parameter", + r"General integration parameter\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_bz_volume_total", + rf"Total volume\s+({re_float})", + dtype=np.float64, + ), + Quantity( + "x_ams_bz_volume_irreducible", + rf"Irreducible.+\s+({re_float})", + dtype=np.float64, + ), + Quantity( + "x_ams_bz_volume_numerical_integration", + rf"Numerical integration\s+({re_float})", + dtype=np.float64, + ), + Quantity("n_points", r"Total nr\. of K\-points\s+(\d+)"), + Quantity( + "x_ams_n_points_unique", + r"Nr\. of symmetry unique points\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_n_simplices", + r"Nr\. of simplices\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_n_points_per_simplex", + r"Nr\. of points per simplex\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "points", + rf"No\. +Sym\..+\s+\-+((?:\d+ +\d+ +{re_float}.+\s+)+)", + str_operation=lambda x: np.transpose( + np.array( + [v.split() for v in x.strip().splitlines()], + np.float64, + ) + )[2:5].T, + ), + ] + ), ), Quantity( - 'x_ams_diis_max_dimension', - r'DIIS max dimension\s*(\d+)', dtype=np.int32 + "scf_options", + r"S\. C\. F\. O P T I O N S([\s\S]+?)\*\*", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_ams_diis_settings_dirac", + r"DIIS settings info for DIRAC +\*\s+((?:[\w ]+? \w\S*\s+)+)", + str_operation=to_parameters, + ), + Quantity( + "x_ams_diis_settings_scf", + r"DIIS settings info for SCF +\*\s+((?:[\w ]+? \w\S*\s+)+)", + str_operation=to_parameters, + ), + Quantity( + "x_ams_growth_factor", + rf"growth factor\s*({re_float})", + dtype=np.float64, + ), + Quantity( + "x_ams_shrink_factor", + rf"shrink factor\s*({re_float})", + dtype=np.float64, + ), + Quantity("x_ams_mix", rf"Mix\s*({re_float})", dtype=np.float64), + Quantity( + "x_ams_degenerate", + r"Degenerate\s*(.)", + str_operation=lambda x: x == "T", + ), + Quantity( + "x_ams_edegen", rf"Edegen\s*({re_float})", dtype=np.float64 + ), + Quantity( + "x_ams_scfrtx", rf"SCFRTX\s*({re_float})", dtype=np.float64 + ), + Quantity( + "x_ams_convrg", rf"Convrg\s*({re_float})", dtype=np.float64 + ), + Quantity("x_ams_ncyclx", r"Ncyclx\s*(\d+)", dtype=np.int32), + Quantity( + "x_ams_vsplit", rf"Vsplit\s*({re_float})", dtype=np.float64 + ), + ] + ), ), Quantity( - 'x_ams_diis_max_coeff', - rf'DIIS maximum coeff\.\s*({re_float})', dtype=np.float64 + "x_ams_dftb_resources_dir", + r"DFTB Resources dir\s*(.+)", + dtype=str, + flatten=False, ), Quantity( - 'x_ams_adaptive_scc_charge_mixing', - r'Adaptive SCC charge mixing\s*(.)', str_operation=lambda x: x == 'T' + "x_ams_scc_convergence_enabled", + r"SCC convergence (\w+)", + str_operation=lambda x: x == "enabled", ), Quantity( - 'x_ams_adaptive_scc_mixing_strategy', - r'Adaptive SCC mixing strategy\s*(\d+)', dtype=np.int32 + "x_ams_max_scc_cycles", r"Maximum SCC cycles \ſ*(\d+)", dtype=np.int32 ), Quantity( - 'x_ams_spin_polarization', - r'Spin polarization\s*(.)', str_operation=lambda x: x == 'T' + "x_ams_scc_charge_convergence", + rf"SCC charge convergence\s*({re_float})", + dtype=np.float64, ), Quantity( - 'x_ams_orbital_dependent_scc', - r'Orbital\-dependent SCC\s*(.)', str_operation=lambda x: x == 'T' + "x_ams_scc_charge_mixing", + rf"SCC charge mixing\s*({re_float})", + dtype=np.float64, ), Quantity( - 'x_ams_orbital_fill_strategy', - r'Orbital fill strategy\s*(.+)', dtype=str, flatten=False + "x_ams_diis_max_dimension", + r"DIIS max dimension\s*(\d+)", + dtype=np.int32, ), Quantity( - 'x_ams_fermi_temperature', - rf'Fermi temperature \(kelvin\)\s*({re_float})', - dtype=np.float64, unit=ureg.kelvin + "x_ams_diis_max_coeff", + rf"DIIS maximum coeff\.\s*({re_float})", + dtype=np.float64, ), Quantity( - 'x_ams_use_symmetry', - r'Use of symmetry\s*(.)', str_operation=lambda x: x == 'T' + "x_ams_adaptive_scc_charge_mixing", + r"Adaptive SCC charge mixing\s*(.)", + str_operation=lambda x: x == "T", ), Quantity( - 'x_ams_radial_function_extrapolation_method', - r'Radial function extrapolation method\s*(.+)', dtype=str, flatten=False + "x_ams_adaptive_scc_mixing_strategy", + r"Adaptive SCC mixing strategy\s*(\d+)", + dtype=np.int32, ), Quantity( - 'x_ams_grimme_d3_dispersion_correction', - r'Settings for Grimme .+ dispersion correction\s+' - r'((?:\w+ +\S+\s+)+)', str_operation=to_parameters + "x_ams_spin_polarization", + r"Spin polarization\s*(.)", + str_operation=lambda x: x == "T", ), Quantity( - 'x_ams_other_parameters', - r'Other \(technical\) parameters\s+' - r'((?:\w+ +\S+\s+)+)', str_operation=to_parameters + "x_ams_orbital_dependent_scc", + r"Orbital\-dependent SCC\s*(.)", + str_operation=lambda x: x == "T", ), Quantity( - 'x_ams_assume_insulator', - r'Assume insulator\s*(.)', str_operation=lambda x: x == 'T' + "x_ams_orbital_fill_strategy", + r"Orbital fill strategy\s*(.+)", + dtype=str, + flatten=False, ), Quantity( - 'x_ams_ewald_tolerance', - rf'Ewald tolerance\s*({re_float})', dtype=np.float64 + "x_ams_fermi_temperature", + rf"Fermi temperature \(kelvin\)\s*({re_float})", + dtype=np.float64, + unit=ureg.kelvin, ), Quantity( - 'x_ams_ewald_range_factor', - rf'Ewald range factor\s*({re_float})', dtype=np.float64 + "x_ams_use_symmetry", + r"Use of symmetry\s*(.)", + str_operation=lambda x: x == "T", ), Quantity( - 'x_ams_bzstruct_config', - r'BZStruct config\s*\-+\s*((?:\w+ ))', str_operation=to_parameters - ) - ] - - calculation_quantities = system_quantities + method_quantities + [ - Quantity( - 'total_charge', - rf'Total System Charge\s*({re_float})', dtype=float, unit=ureg.elementary_charge), - Quantity( - 'atomic_charges', - rf'Index +Atom +Charge\s+((?:\d+ +\w+ +{re_float}\s+)+)', - str_operation=lambda x: [v.strip().split()[-1] for v in x.strip().splitlines()] + "x_ams_radial_function_extrapolation_method", + r"Radial function extrapolation method\s*(.+)", + dtype=str, + flatten=False, ), Quantity( - 'fermi_energy', - rf'Fermi Energy\:\s*({re_float})\s*a\.u\.', dtype=float, unit=ureg.hartree), - Quantity( - 'energies', - r'E N E R G Y A N A L Y S I S([\s\S]+?)\={90}', - sub_parser=TextParser(quantities=[ - Quantity( - 'electronic_kinetic', - rf'Kinetic\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'xc', - rf'XC\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'electrostatic', - rf'Electrostatic\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'x_ams_v_atomic_def', - rf'V\(atomic\)\*def\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'x_ams_v_def_def', - rf'V\(def\)\*def\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'x_ams_dispersion', - rf'Dispersion\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'total', - rf'Final bond energy \(.+\)\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'x_ams_fit_error_correction', - rf'Fit error correction.+?\s*({re_float})', dtype=float, unit=ureg.hartree) - ]) + "x_ams_grimme_d3_dispersion_correction", + r"Settings for Grimme .+ dispersion correction\s+" + r"((?:\w+ +\S+\s+)+)", + str_operation=to_parameters, ), Quantity( - 'energies', - r'(Energy Decomposition\s+\-+[\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'total', - rf'Total Energy \(hartree\)\s*({re_float})', dtype=float, unit=ureg.hartree - ), - Quantity( - 'electronic', - rf'Electronic Energy \(hartree\)\s*({re_float})', dtype=float, unit=ureg.hartree - ), - Quantity( - 'electrostatic', - rf'Coulomb Energy \(hartree\)\s*({re_float})', dtype=float, unit=ureg.hartree - ), - Quantity( - 'nuclear_repulsion', - rf'Repulsion Energy \(hartree\)\s*({re_float})', dtype=float, unit=ureg.hartree - ), - Quantity( - 'x_ams_dispersion', - rf'Dispersion Energy \(hartree\)\s*({re_float})', dtype=float, unit=ureg.hartree - ), - ]) + "x_ams_other_parameters", + r"Other \(technical\) parameters\s+" r"((?:\w+ +\S+\s+)+)", + str_operation=to_parameters, ), Quantity( - 'forces', - rf'(E N E R G Y +G R A D I E N T S\s+\=+[\s\S]+?FINAL[\s\S]+?){re_n} *{re_n}', - sub_parser=TextParser(quantities=[ - Quantity( - 'p_matrix', - rf'P Matrix\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - Quantity( - 'electronic_kinetic', - rf'Kinetic energy\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - Quantity( - 'xc', - rf'XC energy\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - Quantity( - 'electrostatic', - rf'Electrostatic energy\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - Quantity( - 'pair_interactions', - rf'Pair interactions\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - Quantity( - 'dispersion', - rf'Dispersion\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - Quantity( - 'total', - rf'FINAL GRADIENTS\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces), - ]) + "x_ams_assume_insulator", + r"Assume insulator\s*(.)", + str_operation=lambda x: x == "T", ), Quantity( - 'forces', - r'Gradient Decomposition\s+\-+([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'total', - rf'Total Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces - ), - Quantity( - 'electronic', - rf'Electronic Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces - ), - Quantity( - 'electrostatic', - rf'Coulomb Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces - ), - Quantity( - 'nuclear_repulsion', - rf'Repulsion Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces - ), - Quantity( - 'dispersion', - rf'Dispersion Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces - ), - ]) + "x_ams_ewald_tolerance", + rf"Ewald tolerance\s*({re_float})", + dtype=np.float64, ), Quantity( - 'energy_total', - rf'Energy\s*\(hartree\)\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'energy_total', - rf'current energy +({re_float}) +Hartree', dtype=float, unit=ureg.hartree), - Quantity( - 'forces_total', - rf'Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)', - str_operation=str_to_forces + "x_ams_ewald_range_factor", + rf"Ewald range factor\s*({re_float})", + dtype=np.float64, ), Quantity( - 'self_consistency', - r'S C F P R O C E D U R E\s*\*\s*\*+\s*([\s\S]+?Self consistent error.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'energy_change', - rf'cyc\=\s*\d+\s*err\=\s*({re_float})', - repeats=True, dtype=float, unit=ureg.hartree)])), - Quantity( - 'total_dos', - r'TOTALDOS([\s\S]+?)ENDINPUT', - sub_parser=TextParser(quantities=[ - Quantity('nspin_ne', r'NSPIN,NE= *(\d+) +(\d+)', dtype=np.dtype(np.int32)), - Quantity( - 'dos', - rf'\n *({re_float}) *({re_float}) *({re_float})*', - dtype=np.dtype(np.float64), repeats=True - ) - ]) + "x_ams_bzstruct_config", + r"BZStruct config\s*\-+\s*((?:\w+ ))", + str_operation=to_parameters, ), - Quantity( - 'mulliken_populations', - r'M U L L I K E N P O P U L A T I O N S\s+\=+([\s\S]+?)\={10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'orbital', - rf'(\d+/[A-Z].+?{re_float}[\s\S]+?)\-\-', - repeats=True, str_operation=to_mulliken_populations - ), - Quantity( - 'atom', - rf'Charge on atom\s+({re_float}.+)', - repeats=True, str_operation=lambda x: x.strip().split(), dtype=np.dtype(np.float64) + ] + + calculation_quantities = ( + system_quantities + + method_quantities + + [ + Quantity( + "total_charge", + rf"Total System Charge\s*({re_float})", + dtype=float, + unit=ureg.elementary_charge, + ), + Quantity( + "atomic_charges", + rf"Index +Atom +Charge\s+((?:\d+ +\w+ +{re_float}\s+)+)", + str_operation=lambda x: [ + v.strip().split()[-1] for v in x.strip().splitlines() + ], + ), + Quantity( + "fermi_energy", + rf"Fermi Energy\:\s*({re_float})\s*a\.u\.", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "energies", + r"E N E R G Y A N A L Y S I S([\s\S]+?)\={90}", + sub_parser=TextParser( + quantities=[ + Quantity( + "electronic_kinetic", + rf"Kinetic\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "xc", + rf"XC\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "electrostatic", + rf"Electrostatic\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "x_ams_v_atomic_def", + rf"V\(atomic\)\*def\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "x_ams_v_def_def", + rf"V\(def\)\*def\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "x_ams_dispersion", + rf"Dispersion\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "total", + rf"Final bond energy \(.+\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "x_ams_fit_error_correction", + rf"Fit error correction.+?\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + ] + ), + ), + Quantity( + "energies", + r"(Energy Decomposition\s+\-+[\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "total", + rf"Total Energy \(hartree\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "electronic", + rf"Electronic Energy \(hartree\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "electrostatic", + rf"Coulomb Energy \(hartree\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "nuclear_repulsion", + rf"Repulsion Energy \(hartree\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "x_ams_dispersion", + rf"Dispersion Energy \(hartree\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + ] + ), + ), + Quantity( + "forces", + rf"(E N E R G Y +G R A D I E N T S\s+\=+[\s\S]+?FINAL[\s\S]+?){re_n} *{re_n}", + sub_parser=TextParser( + quantities=[ + Quantity( + "p_matrix", + rf"P Matrix\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "electronic_kinetic", + rf"Kinetic energy\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "xc", + rf"XC energy\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "electrostatic", + rf"Electrostatic energy\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "pair_interactions", + rf"Pair interactions\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "dispersion", + rf"Dispersion\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "total", + rf"FINAL GRADIENTS\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + ] + ), + ), + Quantity( + "forces", + r"Gradient Decomposition\s+\-+([\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "total", + rf"Total Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "electronic", + rf"Electronic Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "electrostatic", + rf"Coulomb Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "nuclear_repulsion", + rf"Repulsion Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "dispersion", + rf"Dispersion Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + ] + ), + ), + Quantity( + "energy_total", + rf"Energy\s*\(hartree\)\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "energy_total", + rf"current energy +({re_float}) +Hartree", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "forces_total", + rf"Gradients \(hartree/bohr\)\s+Index.+\s+((?:\d+ +[A-Z][a-z]* +{re_float} +{re_float} +{re_float}\s+)+)", + str_operation=str_to_forces, + ), + Quantity( + "self_consistency", + r"S C F P R O C E D U R E\s*\*\s*\*+\s*([\s\S]+?Self consistent error.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_change", + rf"cyc\=\s*\d+\s*err\=\s*({re_float})", + repeats=True, + dtype=float, + unit=ureg.hartree, + ) + ] + ), + ), + Quantity( + "total_dos", + r"TOTALDOS([\s\S]+?)ENDINPUT", + sub_parser=TextParser( + quantities=[ + Quantity( + "nspin_ne", + r"NSPIN,NE= *(\d+) +(\d+)", + dtype=np.dtype(np.int32), + ), + Quantity( + "dos", + rf"\n *({re_float}) *({re_float}) *({re_float})*", + dtype=np.dtype(np.float64), + repeats=True, + ), + ] + ), + ), + Quantity( + "mulliken_populations", + r"M U L L I K E N P O P U L A T I O N S\s+\=+([\s\S]+?)\={10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "orbital", + rf"(\d+/[A-Z].+?{re_float}[\s\S]+?)\-\-", + repeats=True, + str_operation=to_mulliken_populations, + ), + Quantity( + "atom", + rf"Charge on atom\s+({re_float}.+)", + repeats=True, + str_operation=lambda x: x.strip().split(), + dtype=np.dtype(np.float64), + ), + ] + ), + ), + Quantity( + "mulliken_populations", + rf"(Mulliken Charges\s+\-+[\s\S]+?Total.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "atom", + rf"Index +Atom +Charge.+\s+((?:\d+ +\w+ +{re_float} +{re_float}\s+)+)", + # shape should be (nspin, natoms) + str_operation=lambda x: np.array( + [ + v.strip().split()[2:3] + for v in x.strip().splitlines() + ], + np.float64, + ), + convert=False, + ), + Quantity( + "total", + rf"Total\s+({re_float})", + dtype=np.float, + unit=ureg.elementary_charge, + ), + ] + ), + ), + Quantity( + "atom_charge_analysis", + r"(Atomic Charge Analysis.*\s*\=+[\s\S]+?)\={10}", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "spin", + r"(Spin Up \- Spin Down)", + str_operation=lambda x: True, + ), + Quantity( + "methods", + r"Atom +([\w ]+)", + ), + Quantity( + "atom_charges", + rf"((?:\d+ +\w+ +{re_float}.+\s+)+)", + str_operation=lambda x: np.transpose( + [v.strip().split() for v in x.strip().splitlines()] + )[2:], + dtype=np.dtype(np.float64), + ), + Quantity( + "total", + rf"Total: +({re_float}.+)", + dtype=np.dtype(np.float64), + ), + ] + ), + ), + Quantity( + "dipole_moment", + rf"direction +dipole.+\s+\=+\s+((?:\w+ +{re_float}.+\s+)+)", + str_operation=lambda x: ( + [float(v.strip().split()[2]) for v in x.strip().splitlines()] + * ureg.debye ) - ]) - ), + .to("C * m") + .magnitude, + ), + Quantity( + "band_energy_ranges", + rf"\=+\s+band +min.+\s+\=+\s+((?:\d+ +{re_float}.+\s+)+)", + str_operation=to_band_energy_ranges, + ), + Quantity( + "band_gap_info", + rf"Band gap information\s+\-([\s\S]+?){re_n} *{re_n}", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_ams_n_valence_electrons", + r"Number of valence electrons\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_valence_band_index", + r"Valence band index\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_valence_band_spin_index", + r"Valence band spin index\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_conduction_band_index", + r"Conduction band index\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_conduction_band_spin_index", + r"Conduction band spin index\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "energy_highest_occupied", + rf"Top of valence band \(a\.u\.\)\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_lowest_unoccupied", + rf"Bottom of conduction band \(a\.u\.\)\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "value", + rf"Band gap \(a\.u\.\)\s+({re_float})", + dtype=np.float64, + unit=ureg.hartree, + ), + ] + ), + ), + ] + ) + + self._quantities = [ Quantity( - 'mulliken_populations', - rf'(Mulliken Charges\s+\-+[\s\S]+?Total.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'atom', - rf'Index +Atom +Charge.+\s+((?:\d+ +\w+ +{re_float} +{re_float}\s+)+)', - # shape should be (nspin, natoms) - str_operation=lambda x: np.array([v.strip().split()[2:3] for v in x.strip().splitlines()], np.float64), - convert=False - ), - Quantity('total', rf'Total\s+({re_float})', dtype=np.float, unit=ureg.elementary_charge) - ]) + "program_version", r"\*\s*r(\d+ \d{4}\-\d\d\-\d\d)", flatten=False ), Quantity( - 'atom_charge_analysis', - r'(Atomic Charge Analysis.*\s*\=+[\s\S]+?)\={10}', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('spin', r'(Spin Up \- Spin Down)', str_operation=lambda x: True), - Quantity('methods', r'Atom +([\w ]+)',), - Quantity( - 'atom_charges', - rf'((?:\d+ +\w+ +{re_float}.+\s+)+)', - str_operation=lambda x: np.transpose([v.strip().split() for v in x.strip().splitlines()])[2:], - dtype=np.dtype(np.float64) - ), - Quantity('total', rf'Total: +({re_float}.+)', dtype=np.dtype(np.float64)) - ]) + "time_start", + r"RunTime\:\s*(\w{3}\d+\-\d{4}\s*\d+\:\d+\:\d+)", + str_operation=lambda x: ( + datetime.strptime(x, "%b%d-%Y %H:%M:%S") - datetime(1970, 1, 1) + ).total_seconds(), ), Quantity( - 'dipole_moment', - rf'direction +dipole.+\s+\=+\s+((?:\w+ +{re_float}.+\s+)+)', - str_operation=lambda x: ([float(v.strip().split()[2]) for v in x.strip().splitlines()] * ureg.debye).to('C * m').magnitude, + "single_point", + r"SINGLE POINT CALCULATION \*([\s\S]+?)(:?Timing|\Z)", + sub_parser=TextParser(quantities=calculation_quantities), ), Quantity( - 'band_energy_ranges', - rf'\=+\s+band +min.+\s+\=+\s+((?:\d+ +{re_float}.+\s+)+)', - str_operation=to_band_energy_ranges - ), - Quantity( - 'band_gap_info', - rf'Band gap information\s+\-([\s\S]+?){re_n} *{re_n}', - sub_parser=TextParser(quantities=[ - Quantity( - 'x_ams_n_valence_electrons', - r'Number of valence electrons\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_valence_band_index', - r'Valence band index\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_valence_band_spin_index', - r'Valence band spin index\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_conduction_band_index', - r'Conduction band index\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_conduction_band_spin_index', - r'Conduction band spin index\s+(\d+)', dtype=np.int32 - ), - Quantity( - 'energy_highest_occupied', - rf'Top of valence band \(a\.u\.\)\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_lowest_unoccupied', - rf'Bottom of conduction band \(a\.u\.\)\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'value', - rf'Band gap \(a\.u\.\)\s+({re_float})', - dtype=np.float64, unit=ureg.hartree - ) - ]) - ) - ] - - self._quantities = [ - Quantity('program_version', r'\*\s*r(\d+ \d{4}\-\d\d\-\d\d)', flatten=False), - Quantity( - 'time_start', - r'RunTime\:\s*(\w{3}\d+\-\d{4}\s*\d+\:\d+\:\d+)', - str_operation=lambda x: (datetime.strptime(x, '%b%d-%Y %H:%M:%S') - datetime(1970, 1, 1)).total_seconds() + "geometry_optimization", + r"GEOMETRY OPTIMIZATION\s*\*([\s\S]+?)(:?Timing|Performing a single pooint|\Z)", + sub_parser=TextParser( + quantities=system_quantities + + method_quantities + + [ + Quantity( + "step", + r"Geometry Convergence after Step\s*([\s\S]+?(?:dE\(predicted\)\:.+|\Z))", + repeats=True, + sub_parser=TextParser(quantities=calculation_quantities), + ), + Quantity( + "method", r"Optimization Method\s*(.+)", flatten=False + ), + Quantity( + "x_ams_optimization_coordinates", + r"Optimization Coordinates +(.+)", + type=str, + flatten=False, + ), + Quantity( + "x_ams_optimize_lattice", + r"Optimize lattice +(.)", + str_operation=lambda x: x == "T", + ), + Quantity( + "convergence_tolerance_force_maximum", + rf"Maximum gradient\s*({re_float})", + dtype=float, + unit=ureg.hartree / ureg.bohr, + ), + Quantity( + "x_ams_maximum_rms_gradient", + rf"Maximum rms gradient\s*({re_float})", + dtype=np.float64, + ), + Quantity( + "convergence_tolerance_energy_difference", + rf"Maximum energy change allowe\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "convergence_tolerance_displacement_maximum", + rf"Maximum step allowed\s*({re_float})", + dtype=float, + unit=ureg.bohr, + ), + Quantity( + "x_ams_maximum_rms_step_allowed", + rf"Maximum rms step allowed\s*({re_float})", + dtype=np.float64, + ), + Quantity( + "x_ams_maximum_stress_energy_allowed", + rf"Maximum stress energy allowe\s*({re_float})", + dtype=str, + ), + Quantity( + "x_ams_initial_model_hessian", + r"Initial model Hessian\s*(.+)", + dtype=str, + flatten=False, + ), + Quantity( + "x_ams_hessian_update_method", + r"Hessian Update Method\s*(.+)", + dtype=str, + flatten=False, + ), + Quantity( + "optimization_steps_maximum", + r"Maximum number of steps\s*(\d+)", + ), + Quantity( + "x_ams_first_gdiis_cycle", + r"First GDIIS cycle\s*(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_maximum_gdiis_vectors", + r"Maximum GDIIS vectors\s*(\d+)", + dtype=np.int32, + ), + Quantity( + "x_ams_trust_radius", + rf"Trust radius \(bohr\)\s*({re_float})", + dtype=np.int32, + unit=ureg.bohr, + ), + Quantity( + "x_ams_trust_radius_varies", + r"Trust radius varies\s*(.)", + str_operation=lambda x: x == "T", + ), + Quantity( + "x_ams_constraints_converged_at_all_steps", + r"Constraints converged at all steps\s*(.)", + str_operation=lambda x: x == "T", + ), + Quantity( + "x_ams_use_projector", + r"Use projector\s*(.)", + str_operation=lambda x: x == "T", + ), + Quantity( + "x_ams_symmetrize_steps", + r"Symmetrize steps\s*(.)", + str_operation=lambda x: x == "T", + ), + ] + ), ), Quantity( - 'single_point', - r'SINGLE POINT CALCULATION \*([\s\S]+?)(:?Timing|\Z)', - sub_parser=TextParser(quantities=calculation_quantities)), - Quantity( - 'geometry_optimization', - r'GEOMETRY OPTIMIZATION\s*\*([\s\S]+?)(:?Timing|Performing a single pooint|\Z)', - sub_parser=TextParser(quantities=system_quantities + method_quantities + [ - Quantity( - 'step', - r'Geometry Convergence after Step\s*([\s\S]+?(?:dE\(predicted\)\:.+|\Z))', - repeats=True, sub_parser=TextParser(quantities=calculation_quantities)), - Quantity( - 'method', - r'Optimization Method\s*(.+)', flatten=False), - Quantity( - 'x_ams_optimization_coordinates', - r'Optimization Coordinates +(.+)', - type=str, flatten=False), - Quantity( - 'x_ams_optimize_lattice', - r'Optimize lattice +(.)', str_operation=lambda x: x == 'T'), - Quantity( - 'convergence_tolerance_force_maximum', - rf'Maximum gradient\s*({re_float})', - dtype=float, unit=ureg.hartree / ureg.bohr), - Quantity( - 'x_ams_maximum_rms_gradient', - rf'Maximum rms gradient\s*({re_float})', - dtype=np.float64 - ), - Quantity( - 'convergence_tolerance_energy_difference', - rf'Maximum energy change allowe\s*({re_float})', - dtype=float, unit=ureg.hartree), - Quantity( - 'convergence_tolerance_displacement_maximum', - rf'Maximum step allowed\s*({re_float})', - dtype=float, unit=ureg.bohr), - Quantity( - 'x_ams_maximum_rms_step_allowed', - rf'Maximum rms step allowed\s*({re_float})', - dtype=np.float64 - ), - Quantity( - 'x_ams_maximum_stress_energy_allowed', - rf'Maximum stress energy allowe\s*({re_float})', - dtype=str - ), - Quantity( - 'x_ams_initial_model_hessian', - r'Initial model Hessian\s*(.+)', dtype=str, flatten=False), - Quantity( - 'x_ams_hessian_update_method', - r'Hessian Update Method\s*(.+)', dtype=str, flatten=False), - Quantity( - 'optimization_steps_maximum', - r'Maximum number of steps\s*(\d+)' - ), - Quantity( - 'x_ams_first_gdiis_cycle', - r'First GDIIS cycle\s*(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_maximum_gdiis_vectors', - r'Maximum GDIIS vectors\s*(\d+)', dtype=np.int32 - ), - Quantity( - 'x_ams_trust_radius', - rf'Trust radius \(bohr\)\s*({re_float})', dtype=np.int32, unit=ureg.bohr - ), - Quantity( - 'x_ams_trust_radius_varies', - r'Trust radius varies\s*(.)', str_operation=lambda x: x == 'T' - ), - Quantity( - 'x_ams_constraints_converged_at_all_steps', - r'Constraints converged at all steps\s*(.)', str_operation=lambda x: x == 'T' - ), - Quantity( - 'x_ams_use_projector', - r'Use projector\s*(.)', str_operation=lambda x: x == 'T' - ), - Quantity( - 'x_ams_symmetrize_steps', - r'Symmetrize steps\s*(.)', str_operation=lambda x: x == 'T'), - ]) + "calculation_results", + r"(CALCULATION RESULTS[\s\S]+?)(?:finished|\Z)", + sub_parser=TextParser(quantities=calculation_quantities + []), ), - Quantity( - 'calculation_results', - r'(CALCULATION RESULTS[\s\S]+?)(?:finished|\Z)', - sub_parser=TextParser(quantities=calculation_quantities + [ - - ]) - ) # TODO add other calculation types ] @@ -792,25 +1059,34 @@ class RKFParser(FileParser): def __init__(self, mainfile=None, logger=None, open=None): super().__init__(mainfile, logger, open) self._energies_map = { - 'Bond Energy': 'x_ams_bond', 'Corr. due to Orthogonalization': 'x_ams_orthogonalization', - 'Dispersion Energy': 'x_ams_dispersion', 'Ebond due to Efield': 'x_ams_bond_efield', - 'Electrostatic Energy': 'electrostatic', 'Kinetic Energy': 'kinetic', - 'MP2 energy': 'x_ams_mp2', 'Orb.Int. A': 'x_ams_orbital_interaction_a', - 'Orb.Int. Efield': 'x_ams_orbital_interaction_efield', - 'Orb.Int. FitCorrection': 'x_ams_orbital_interaction_fit_correction', - 'Orb.Int. TSCorrection (LDA)': 'x_ams_orbital_interaction_ts_correction_lda', - 'Orb.Int. TSCorrection (NL)': 'x_ams_orbital_interaction_ts_correction_nl', - 'Orb.Int. Total': 'x_ams_orbital_interaction', 'Pauli Coulomb': 'x_ams_pauli_coulomb', - 'Pauli Efield': 'x_ams_pauli_efield', 'Pauli FitCorrection': 'x_ams_pauli_fit_correction', - 'Pauli Kinetic': 'x_ams_pauli_kinetic', 'Pauli Kinetic+Coulomb': 'x_ams_pauli_kinetic_coulomb', - 'Pauli TS Correction (LDA)': 'x_ams_pauli_ts_correction_lda', 'Pauli Total': 'x_ams_pauli', - 'RPA energy': 'x_ams_rpa', 'SCF Bond Energy': 'x_ams_bond', - 'SumFragmentsSCF FitCorrection': 'x_ams_sum_fragments_scf_fit_correction', - 'XC Energy': 'xc', + "Bond Energy": "x_ams_bond", + "Corr. due to Orthogonalization": "x_ams_orthogonalization", + "Dispersion Energy": "x_ams_dispersion", + "Ebond due to Efield": "x_ams_bond_efield", + "Electrostatic Energy": "electrostatic", + "Kinetic Energy": "kinetic", + "MP2 energy": "x_ams_mp2", + "Orb.Int. A": "x_ams_orbital_interaction_a", + "Orb.Int. Efield": "x_ams_orbital_interaction_efield", + "Orb.Int. FitCorrection": "x_ams_orbital_interaction_fit_correction", + "Orb.Int. TSCorrection (LDA)": "x_ams_orbital_interaction_ts_correction_lda", + "Orb.Int. TSCorrection (NL)": "x_ams_orbital_interaction_ts_correction_nl", + "Orb.Int. Total": "x_ams_orbital_interaction", + "Pauli Coulomb": "x_ams_pauli_coulomb", + "Pauli Efield": "x_ams_pauli_efield", + "Pauli FitCorrection": "x_ams_pauli_fit_correction", + "Pauli Kinetic": "x_ams_pauli_kinetic", + "Pauli Kinetic+Coulomb": "x_ams_pauli_kinetic_coulomb", + "Pauli TS Correction (LDA)": "x_ams_pauli_ts_correction_lda", + "Pauli Total": "x_ams_pauli", + "RPA energy": "x_ams_rpa", + "SCF Bond Energy": "x_ams_bond", + "SumFragmentsSCF FitCorrection": "x_ams_sum_fragments_scf_fit_correction", + "XC Energy": "xc", # 'XC energies': 'xc_values_per_atom' } # TODO verfiy list - self._ldapot = {1: 'VWN', 2: 'Stoll', 3: 'PW92'} + self._ldapot = {1: "VWN", 2: "Stoll", 3: "PW92"} @property def data(self): @@ -818,7 +1094,7 @@ def data(self): try: self._file_handler = rkf_to_dict(self.mainfile) except Exception: - self.logger.error('Error reading rkf file') + self.logger.error("Error reading rkf file") return self._file_handler def parse(self, key=None): @@ -828,225 +1104,317 @@ def parse(self, key=None): if self._results is None: self._results = {} - general = self.data.get('General', {}) + general = self.data.get("General", {}) # TODO determine if program version is same as release, formatting required # for compatibility with text output - self._results['program_version'] = general.get( - 'release', '').replace('(', '').replace(')', '').split('r')[-1] - self._results['program_x_ams_name'] = general.get('program') - self._results['program_x_ams_engine'] = general.get('engine') + self._results["program_version"] = ( + general.get("release", "").replace("(", "").replace(")", "").split("r")[-1] + ) + self._results["program_x_ams_name"] = general.get("program") + self._results["program_x_ams_engine"] = general.get("engine") - nspin = general.get('nspin', 1) + nspin = general.get("nspin", 1) xc_functional = {} - if (ldapot := general.get('ldapot')) is not None: - xc_functional['LDA'] = self._ldapot.get(ldapot) - if (ggapot := general.get('ggapot', '').strip()): - xc_functional['GGA'] = ggapot - if (mgga := general.get('MetaGGAConfig', {}).get('metagga', '').strip()): - xc_functional['MGGA'] = mgga + if (ldapot := general.get("ldapot")) is not None: + xc_functional["LDA"] = self._ldapot.get(ldapot) + if ggapot := general.get("ggapot", "").strip(): + xc_functional["GGA"] = ggapot + if mgga := general.get("MetaGGAConfig", {}).get("metagga", "").strip(): + xc_functional["MGGA"] = mgga # TODO parse hybrid, hf - self._results['model_parameters'] = { - 'spin': nspin > 1, - 'dft_potential': xc_functional + self._results["model_parameters"] = { + "spin": nspin > 1, + "dft_potential": xc_functional, } k_space_sampling = {} - if (kspace := self.data.get('kspace')) is not None: - k_space_sampling['x_ams_n_simplices'] = kspace.get('nsimpl') - k_space_sampling['x_ams_n_points_unique'] = kspace.get('kuniqu') - self._results['k_space_sampling'] = k_space_sampling + if (kspace := self.data.get("kspace")) is not None: + k_space_sampling["x_ams_n_simplices"] = kspace.get("nsimpl") + k_space_sampling["x_ams_n_points_unique"] = kspace.get("kuniqu") + self._results["k_space_sampling"] = k_space_sampling - if (kpoints_config := self.data.get('KPointsConfig')) is not None: - k_space_sampling['x_ams_general_integration_parameter'] = kpoints_config.get('interpolation') - k_space_sampling['grid'] = kpoints_config.get('parameters') + if (kpoints_config := self.data.get("KPointsConfig")) is not None: + k_space_sampling[ + "x_ams_general_integration_parameter" + ] = kpoints_config.get("interpolation") + k_space_sampling["grid"] = kpoints_config.get("parameters") - engine_results = self.data.get('EngineResults', {}) + engine_results = self.data.get("EngineResults", {}) - files = [val for key, val in engine_results.items() if key.startswith('Files')] + files = [val for key, val in engine_results.items() if key.startswith("Files")] warning = None for n, name in enumerate(files): rkf_files = get_files(name, self.mainfile) if not rkf_files: - warning = 'rkf file not found in directory.' + warning = "rkf file not found in directory." files[n] = None continue if len(rkf_files) > 1: - warning = 'Multiple rkf files found in directory' + warning = "Multiple rkf files found in directory" files[n] = rkf_files[0] if warning: self.logger.warning(warning) labels = [] - if (molecule := self.data.get('Molecule')) is not None: - labels = [chemical_symbols[n] for n in molecule.get('AtomicNumbers', [])] + if (molecule := self.data.get("Molecule")) is not None: + labels = [chemical_symbols[n] for n in molecule.get("AtomicNumbers", [])] if not labels: - labels = molecule.get('AtomSmbols').split() - positions = molecule.get('Coords', []) + labels = molecule.get("AtomSmbols").split() + positions = molecule.get("Coords", []) try: positions = np.reshape(positions, (len(labels), 3)) * ureg.bohr except Exception: - self.logger.warning('Cannot read atom positions.') - self._results['labels_positions'] = [labels, positions] - if (lattice_vectors := molecule.get('LatticeVectors')) is not None: - self._results['lattice_vectors'] = np.reshape(lattice_vectors, (3, 3)) * ureg.bohr + self.logger.warning("Cannot read atom positions.") + self._results["labels_positions"] = [labels, positions] + if (lattice_vectors := molecule.get("LatticeVectors")) is not None: + self._results["lattice_vectors"] = ( + np.reshape(lattice_vectors, (3, 3)) * ureg.bohr + ) calc_type = None calc_results = {} - if (amsresults := self.data.get('AMSResults')) is not None: - if (charges := amsresults.get('Charges')) is not None: - self._results['atomic_charges'] = amsresults.get('Charges') - if (dipole := amsresults.get('DipoleMoment')) is not None: + if (amsresults := self.data.get("AMSResults")) is not None: + if (charges := amsresults.get("Charges")) is not None: + self._results["atomic_charges"] = amsresults.get("Charges") + if (dipole := amsresults.get("DipoleMoment")) is not None: dipole = np.sqrt(np.sum(np.array(dipole) ** 2)) - self._results['dipole_moment'] = ([dipole] * ureg.elementary_charge * ureg.bohr).to('C * m').magnitude - if (energy := amsresults.get('Energy')) is not None: - self._results['energy_total'] = energy * ureg.hartree - if (gradients := amsresults.get('Gradients')) is not None: - self._results['forces_total'] = np.reshape(gradients, (len(labels), 3)) * ureg.hartree / ureg.bohr - if (hessian := amsresults.get('Hessian')) is not None: + self._results["dipole_moment"] = ( + ([dipole] * ureg.elementary_charge * ureg.bohr) + .to("C * m") + .magnitude + ) + if (energy := amsresults.get("Energy")) is not None: + self._results["energy_total"] = energy * ureg.hartree + if (gradients := amsresults.get("Gradients")) is not None: + self._results["forces_total"] = ( + np.reshape(gradients, (len(labels), 3)) * ureg.hartree / ureg.bohr + ) + if (hessian := amsresults.get("Hessian")) is not None: hessian = np.reshape(hessian, (len(labels), 3, len(labels), 3)) - self._results['hessian_matrix'] = (np.transpose(hessian, axes=( - 0, 2, 1, 3)) * ureg.hartree / ureg.bohr ** 2).to('J / m ** 2').magnitude + self._results["hessian_matrix"] = ( + ( + np.transpose(hessian, axes=(0, 2, 1, 3)) + * ureg.hartree + / ureg.bohr**2 + ) + .to("J / m ** 2") + .magnitude + ) - if (history := self.data.get('History')) is not None: - calc_type = 'geometry_optimization' - n_entries = history.get('nEntries', 0) - calc_results['step'] = [None] * n_entries + if (history := self.data.get("History")) is not None: + calc_type = "geometry_optimization" + n_entries = history.get("nEntries", 0) + calc_results["step"] = [None] * n_entries for n in range(n_entries): - positions = history.get(f'Coords({n + 1})') + positions = history.get(f"Coords({n + 1})") if positions is not None: positions = np.reshape(positions, (len(labels), 3)) * ureg.bohr - calc_results['step'][n] = {'labels_positions': [labels, positions]} - if (energy_total := history.get(f'Energy({n + 1})')) is not None: - calc_results['step'][n]['energy_total'] = energy_total * ureg.hartree - - if (mdhistory := self.data.get('MDHistory')) is not None: - calc_type = 'molecular_dynamics' - n_entries = mdhistory.get('nEntries', 0) - if len(calc_results.get('step', [])) != n_entries: - self.logger.warning('Inconsistent number of entries in history.') + calc_results["step"][n] = {"labels_positions": [labels, positions]} + if (energy_total := history.get(f"Energy({n + 1})")) is not None: + calc_results["step"][n]["energy_total"] = ( + energy_total * ureg.hartree + ) + + if (mdhistory := self.data.get("MDHistory")) is not None: + calc_type = "molecular_dynamics" + n_entries = mdhistory.get("nEntries", 0) + if len(calc_results.get("step", [])) != n_entries: + self.logger.warning("Inconsistent number of entries in history.") else: - block_size = mdhistory.get('blockSize', 1) + block_size = mdhistory.get("blockSize", 1) for n in range(n_entries): - calc_results['step'][n]['atomic_charges'] = mdhistory.get(f'Charges({n + 1})') + calc_results["step"][n]["atomic_charges"] = mdhistory.get( + f"Charges({n + 1})" + ) energies = {} nblock = (n // block_size) + 1 ndata = n % block_size - if (total := mdhistory.get(f'TotalEnergy({nblock})')) is not None: - energies['total'] = (total if isinstance(total, float) else total[ndata]) * ureg.hartree - if (kinetic := mdhistory.get(f'KineticEnergy({nblock})')) is not None: - energies['total_kinetic'] = (kinetic if isinstance(kinetic, float) else kinetic[ndata]) * ureg.hartree - if (potential := mdhistory.get(f'PotentialEnergy({nblock})')) is not None: - energies['total_potential'] = (potential if isinstance(potential, float) else potential[ndata]) * ureg.hartree - calc_results['step'][n]['energies'] = energies - if (step := mdhistory.get(f'Step({nblock})')) is not None: - calc_results['step'][n]['step'] = step if isinstance(step, int) else step[ndata] - if (time := mdhistory.get(f'Time({nblock})')) is not None: - calc_results['step'][n]['time'] = (time if isinstance(time, float) else time[ndata]) * ureg.fs - if (temperature := mdhistory.get(f'Temperature({nblock})')) is not None: - calc_results['step'][n]['temperature'] = (temperature if isinstance(temperature, float) else temperature[ndata]) * ureg.kelvin - if (velocities := mdhistory.get(f'Velocities({n + 1})')) is not None: - calc_results['step'][n]['velocities'] = np.reshape(velocities, (len(labels), 3)) * ureg.bohr / ureg.fs + if (total := mdhistory.get(f"TotalEnergy({nblock})")) is not None: + energies["total"] = ( + total if isinstance(total, float) else total[ndata] + ) * ureg.hartree + if ( + kinetic := mdhistory.get(f"KineticEnergy({nblock})") + ) is not None: + energies["total_kinetic"] = ( + kinetic if isinstance(kinetic, float) else kinetic[ndata] + ) * ureg.hartree + if ( + potential := mdhistory.get(f"PotentialEnergy({nblock})") + ) is not None: + energies["total_potential"] = ( + potential + if isinstance(potential, float) + else potential[ndata] + ) * ureg.hartree + calc_results["step"][n]["energies"] = energies + if (step := mdhistory.get(f"Step({nblock})")) is not None: + calc_results["step"][n]["step"] = ( + step if isinstance(step, int) else step[ndata] + ) + if (time := mdhistory.get(f"Time({nblock})")) is not None: + calc_results["step"][n]["time"] = ( + time if isinstance(time, float) else time[ndata] + ) * ureg.fs + if ( + temperature := mdhistory.get(f"Temperature({nblock})") + ) is not None: + calc_results["step"][n]["temperature"] = ( + temperature + if isinstance(temperature, float) + else temperature[ndata] + ) * ureg.kelvin + if ( + velocities := mdhistory.get(f"Velocities({n + 1})") + ) is not None: + calc_results["step"][n]["velocities"] = ( + np.reshape(velocities, (len(labels), 3)) + * ureg.bohr + / ureg.fs + ) if history is None and files: if len(files) != 1: - self.logger.warning('Inconsistent number of rkf files found.') - calc_type = 'single_point' + self.logger.warning("Inconsistent number of rkf files found.") + calc_type = "single_point" calc_results = RKFParser(mainfile=files[0] if files else None).parse() elif history: # pass if len(files) == 1: - calc_results['step'][-1] = RKFParser(mainfile=files[0]).parse() + calc_results["step"][-1] = RKFParser(mainfile=files[0]).parse() elif len(files) == n_entries: for n, name in enumerate(files): - calc_results['step'][n] = RKFParser(mainfile=name).parse() + calc_results["step"][n] = RKFParser(mainfile=name).parse() else: - self.logger.warning('Inconsistent number of rkf files found.') + self.logger.warning("Inconsistent number of rkf files found.") if calc_type is not None: self._results[calc_type] = calc_results - if (energy := self.data.get('Energy')) is not None: - self._results['energies'] = {} + if (energy := self.data.get("Energy")) is not None: + self._results["energies"] = {} for ams_key, nomad_key in self._energies_map.items(): val = energy.get(ams_key) if val is not None: - self._results['energies'][nomad_key] = val * ureg.hartree + self._results["energies"][nomad_key] = val * ureg.hartree - if (geometry := self.data.get('geometry')) is not None: - if (lattice_vectors := geometry.get('standard_lattice')) is not None: - self._results['lattice_vectors'] = np.reshape(lattice_vectors, (3, 3)) * ureg.bohr + if (geometry := self.data.get("geometry")) is not None: + if (lattice_vectors := geometry.get("standard_lattice")) is not None: + self._results["lattice_vectors"] = ( + np.reshape(lattice_vectors, (3, 3)) * ureg.bohr + ) - if (properties := self.data.get('Properties')) is not None: - if (mulliken := properties.get('AtomCharge Mulliken')) is not None: - self._results['mulliken_populations'] = {'atom': np.reshape(mulliken, (len(mulliken) // nspin, nspin))} + if (properties := self.data.get("Properties")) is not None: + if (mulliken := properties.get("AtomCharge Mulliken")) is not None: + self._results["mulliken_populations"] = { + "atom": np.reshape(mulliken, (len(mulliken) // nspin, nspin)) + } - if (fermi := properties.get('FermiLevel')) is not None: - self._results['fermi_energy'] = fermi * ureg.hartree + if (fermi := properties.get("FermiLevel")) is not None: + self._results["fermi_energy"] = fermi * ureg.hartree - if (dipole := properties.get('Dipole')) is not None: + if (dipole := properties.get("Dipole")) is not None: dipole = np.sqrt(np.sum(np.array(dipole) ** 2)) - self._results['dipole_moment'] = ([dipole] * ureg.elementary_charge * ureg.bohr).to('C * m').magnitude + self._results["dipole_moment"] = ( + ([dipole] * ureg.elementary_charge * ureg.bohr) + .to("C * m") + .magnitude + ) - self._results['atomic_charges'] = charges + self._results["atomic_charges"] = charges - self._results['band_gap'] = {} - if (homo := properties.get('HOMO')) is not None: - self._results['band_gap']['energy_highest_occupied'] = homo * ureg.hartree - if (lumo := properties.get('LUMO')) is not None: - self._results['band_gap']['energy_lowest_unoccupied'] = lumo * ureg.hartree + self._results["band_gap"] = {} + if (homo := properties.get("HOMO")) is not None: + self._results["band_gap"]["energy_highest_occupied"] = ( + homo * ureg.hartree + ) + if (lumo := properties.get("LUMO")) is not None: + self._results["band_gap"]["energy_lowest_unoccupied"] = ( + lumo * ureg.hartree + ) # TODO parse other quantities - if (properties := self.data.get('Scalar Atomic Properties')) is not None: - if (mulliken := properties.get('Mulliken Charges')) is not None: - self._results['mulliken_populations'] = {'atom': np.reshape(mulliken, (len(mulliken) // nspin, nspin))} - - if (dos := self.data.get('DOS')) is not None: - if np.ndim(dos.get('Energies')) > 0: - self._results['total_dos'] = {'dos': np.transpose([dos.get('Energies'), *np.reshape(dos.get('Total DOS', []), ( - dos.get('nSpin', 0), dos.get('nEnergies', 0) - ))])} + if (properties := self.data.get("Scalar Atomic Properties")) is not None: + if (mulliken := properties.get("Mulliken Charges")) is not None: + self._results["mulliken_populations"] = { + "atom": np.reshape(mulliken, (len(mulliken) // nspin, nspin)) + } + + if (dos := self.data.get("DOS")) is not None: + if np.ndim(dos.get("Energies")) > 0: + self._results["total_dos"] = { + "dos": np.transpose( + [ + dos.get("Energies"), + *np.reshape( + dos.get("Total DOS", []), + (dos.get("nSpin", 0), dos.get("nEnergies", 0)), + ), + ] + ) + } - eigensystem = self.data.get('eigensystem', {}) + eigensystem = self.data.get("eigensystem", {}) if eigensystem is not None: eigenvalues = {} - if (eigval := eigensystem.get('eigval')) is not None: - nspin = eigensystem.get('nspin', 1) - nband = eigensystem.get('nband', 0) + if (eigval := eigensystem.get("eigval")) is not None: + nspin = eigensystem.get("nspin", 1) + nband = eigensystem.get("nband", 0) # TODO check if shape is correct - eigenvalues['energies'] = np.reshape(eigval, (nspin, len(eigval) // (nband * nspin), nband)) * ureg.hartree - occupations = eigensystem.get('occupationPerBandAndSpin') + eigenvalues["energies"] = ( + np.reshape(eigval, (nspin, len(eigval) // (nband * nspin), nband)) + * ureg.hartree + ) + occupations = eigensystem.get("occupationPerBandAndSpin") if occupations is not None: # TODO check if occ shape is correct - eigenvalues['occupations'] = np.transpose(np.reshape(occupations, (nband, nspin))) - self._results['eigenvalues'] = eigenvalues + eigenvalues["occupations"] = np.transpose( + np.reshape(occupations, (nband, nspin)) + ) + self._results["eigenvalues"] = eigenvalues - if (band_structure := self.data.get('BandStructure')) is not None: - if (energy_ranges := band_structure.get('bandsEnergyRange')) is not None: + if (band_structure := self.data.get("BandStructure")) is not None: + if (energy_ranges := band_structure.get("bandsEnergyRange")) is not None: # TODO check if shape is correct - nband = band_structure.get('nBand') - nspin = band_structure.get('nSpin') - energy_ranges = np.transpose(np.reshape(energy_ranges, (nband, nspin, 2))) - occupations = self._results.get('eigenvalues', {}).get('occupations') - self._results['band_energy_ranges'] = [*energy_ranges, occupations] + nband = band_structure.get("nBand") + nspin = band_structure.get("nSpin") + energy_ranges = np.transpose( + np.reshape(energy_ranges, (nband, nspin, 2)) + ) + occupations = self._results.get("eigenvalues", {}).get("occupations") + self._results["band_energy_ranges"] = [*energy_ranges, occupations] band_gap = {} - if (value := band_structure.get('BandGap')) is not None: - band_gap['value'] = value * ureg.hartree - if (top_valence_band := band_structure.get('TopValenceBand')) is not None: - band_gap['energy_highest_occupied'] = top_valence_band * ureg.hartree - if (bottom_conduction_band := band_structure.get('BottomConductionBand')) is not None: - band_gap['energy_lowest_unoccupied'] = bottom_conduction_band * ureg.hartree - self._results['band_gap'] = band_gap - - if (geoopt := self.data.get('GeoOpt')) is not None: - if (gradients := geoopt.get('Gradients_CART')) is not None: - self._results['forces_total'] = np.reshape(gradients, (len(labels), 3)) * ureg.hartree / ureg.bohr - if (hessian := geoopt.get('Hessian_CART')) is not None: + if (value := band_structure.get("BandGap")) is not None: + band_gap["value"] = value * ureg.hartree + if (top_valence_band := band_structure.get("TopValenceBand")) is not None: + band_gap["energy_highest_occupied"] = top_valence_band * ureg.hartree + if ( + bottom_conduction_band := band_structure.get("BottomConductionBand") + ) is not None: + band_gap["energy_lowest_unoccupied"] = ( + bottom_conduction_band * ureg.hartree + ) + self._results["band_gap"] = band_gap + + if (geoopt := self.data.get("GeoOpt")) is not None: + if (gradients := geoopt.get("Gradients_CART")) is not None: + self._results["forces_total"] = ( + np.reshape(gradients, (len(labels), 3)) * ureg.hartree / ureg.bohr + ) + if (hessian := geoopt.get("Hessian_CART")) is not None: hessian = np.reshape(hessian, (len(labels), 3, len(labels), 3)) - self._results['hessian_matrix'] = (np.transpose(hessian, axes=( - 0, 2, 1, 3)) * ureg.hartree / ureg.bohr ** 2).to('J / m ** 2').magnitude + self._results["hessian_matrix"] = ( + ( + np.transpose(hessian, axes=(0, 2, 1, 3)) + * ureg.hartree + / ureg.bohr**2 + ) + .to("J / m ** 2") + .magnitude + ) # TODO parse Themodynamics, Vibrations, phonons return self @@ -1060,8 +1428,8 @@ def __init__(self): self.out_parser = OutParser() self.rkf_parser = RKFParser() self._relativity_map = { - 'scalar (ZORA,APA)': 'scalar_relativistic_atomic_ZORA', - '---': None, + "scalar (ZORA,APA)": "scalar_relativistic_atomic_ZORA", + "---": None, } def init_parser(self): @@ -1080,17 +1448,19 @@ def parse_scc(source, target=None): # total energy sec_energy = Energy() sec_scc.energy = sec_energy - if source.get('energy_total') is not None: - sec_energy.total = EnergyEntry(value=source.get('energy_total')) + if source.get("energy_total") is not None: + sec_energy.total = EnergyEntry(value=source.get("energy_total")) # fermi energy - sec_energy.fermi = source.get('fermi_energy') + sec_energy.fermi = source.get("fermi_energy") # energy contributions - for key, val in source.get('energies', dict()).items(): - if key == 'electronic_kinetic': + for key, val in source.get("energies", dict()).items(): + if key == "electronic_kinetic": sec_energy.electronic = EnergyEntry(kinetic=val) - elif (match := re.match(r'(\w+)_((?:kinetic|potential|values_per_atom))', key)): + elif match := re.match( + r"(\w+)_((?:kinetic|potential|values_per_atom))", key + ): entry = getattr(sec_energy, match.group(1)) entry = entry if entry else EnergyEntry() entry.m_set(entry.m_get_quantity_definition(match.group(2)), val) @@ -1104,19 +1474,23 @@ def parse_scc(source, target=None): # forces sec_forces = Forces() sec_scc.forces = sec_forces - if (forces := source.get('forces_total')) is not None: + if (forces := source.get("forces_total")) is not None: sec_forces.total = ForcesEntry(value=forces) - for key, val in source.get('forces', dict()).items(): - key = key if key == 'total' else f'x_ams_{key}' - sec_forces.m_add_sub_section(getattr(Forces, key), ForcesEntry(value=val)) + for key, val in source.get("forces", dict()).items(): + key = key if key == "total" else f"x_ams_{key}" + sec_forces.m_add_sub_section( + getattr(Forces, key), ForcesEntry(value=val) + ) # md - sec_scc.temperature = source.get('temperature') - sec_scc.step = source.get('step') - sec_scc.time = source.get('time') + sec_scc.temperature = source.get("temperature") + sec_scc.step = source.get("step") + sec_scc.time = source.get("time") # self consistency - for energy_change in source.get('self_consistency', {}).get('energy_change', []): + for energy_change in source.get("self_consistency", {}).get( + "energy_change", [] + ): sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf_energy = Energy() @@ -1124,7 +1498,7 @@ def parse_scc(source, target=None): sec_scf_energy.change = energy_change # dos - total_dos = source.get('total_dos', {}).get('dos') + total_dos = source.get("total_dos", {}).get("dos") if total_dos is not None: total_dos = np.transpose(total_dos) n_spin_channels = len(total_dos[1:]) @@ -1138,14 +1512,16 @@ def parse_scc(source, target=None): sec_dos_values.value = total_dos[spin + 1] / ureg.hartree # atom charges - if (charges := source.get('atomic_charges')) is not None: + if (charges := source.get("atomic_charges")) is not None: sec_charges = Charges() sec_scc.charges.append(sec_charges) sec_charges.value = charges * ureg.elementary_charge - for analysis in source.get('atom_charge_analysis', []): - for n, method in enumerate(analysis.get('methods', [])): - existing_sec_charges = [sec for sec in sec_scc.charges if sec.analysis_method == method] + for analysis in source.get("atom_charge_analysis", []): + for n, method in enumerate(analysis.get("methods", [])): + existing_sec_charges = [ + sec for sec in sec_scc.charges if sec.analysis_method == method + ] if existing_sec_charges: sec_charges = existing_sec_charges[0] else: @@ -1156,74 +1532,92 @@ def parse_scc(source, target=None): sec_charges.spins = analysis.atom_charges[n] else: sec_charges.total = analysis.total[n] - sec_charges.value = analysis.atom_charges[n] * ureg.elementary_charge + sec_charges.value = ( + analysis.atom_charges[n] * ureg.elementary_charge + ) # mulliken populations - mulliken = source.get('mulliken_populations') + mulliken = source.get("mulliken_populations") if mulliken is not None: sec_charges = Charges() sec_scc.charges.append(sec_charges) - sec_charges.analysis_method = 'Mulliken' + sec_charges.analysis_method = "Mulliken" # atom/spin resolved - atom_charges = np.array(mulliken.get('atom', [])) + atom_charges = np.array(mulliken.get("atom", [])) spin = len(atom_charges.T) if spin == 2: for natom, charges in enumerate(atom_charges): for nspin, charge in enumerate(charges): - sec_charges.spin_projected.append(ChargesValue( - spin=nspin, atom_index=natom, - value=charge * ureg.elementary_charge)) + sec_charges.spin_projected.append( + ChargesValue( + spin=nspin, + atom_index=natom, + value=charge * ureg.elementary_charge, + ) + ) elif spin == 1: sec_charges.value = atom_charges.flatten() * ureg.elementary_charge # orbital resolved - for natom, atom, orbitals, charges in mulliken.get('orbital', []): + for natom, atom, orbitals, charges in mulliken.get("orbital", []): for norb, orbital in enumerate(orbitals): for nspin, charge in enumerate(charges[norb]): - sec_charges.orbital_projected.append(ChargesValue( - orbital=orbital, spin=nspin, atom_label=atom[0], atom_index=natom, - value=charge * ureg.elementary_charge)) - sec_charges.total = mulliken.get('total') + sec_charges.orbital_projected.append( + ChargesValue( + orbital=orbital, + spin=nspin, + atom_label=atom[0], + atom_index=natom, + value=charge * ureg.elementary_charge, + ) + ) + sec_charges.total = mulliken.get("total") # dipole - dipole = source.get('dipole_moment') + dipole = source.get("dipole_moment") if dipole is not None: sec_multipoles = Multipoles() sec_scc.multipoles.append(sec_multipoles) sec_multipoles.dipole = MultipolesEntry(total=dipole) # eigenvalues - if (eigenvalues := source.get('eigenvalues')) is not None: + if (eigenvalues := source.get("eigenvalues")) is not None: sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) - sec_eigenvalues.energies = eigenvalues.get('energies') - sec_eigenvalues.occupations = eigenvalues.get('occupations') + sec_eigenvalues.energies = eigenvalues.get("energies") + sec_eigenvalues.occupations = eigenvalues.get("occupations") - band_energy_ranges = source.get('band_energy_ranges') + band_energy_ranges = source.get("band_energy_ranges") if band_energy_ranges is not None: if sec_scc.eigenvalues: sec_band_energies = sec_scc.eigenvalues[0] else: sec_band_energies = BandEnergies() sec_scc.eigenvalues.append(sec_band_energies) - sec_band_energies.x_ams_energy_min = band_energy_ranges[0] * ureg.hartree - sec_band_energies.x_ams_energy_max = band_energy_ranges[1] * ureg.hartree + sec_band_energies.x_ams_energy_min = ( + band_energy_ranges[0] * ureg.hartree + ) + sec_band_energies.x_ams_energy_max = ( + band_energy_ranges[1] * ureg.hartree + ) sec_band_energies.occupations = band_energy_ranges[2] # band gap - band_gap_info = source.get('band_gap_info') + band_gap_info = source.get("band_gap_info") if band_gap_info is not None: sec_band_gap = BandGapDeprecated() sec_band_energies.band_gap.append(sec_band_gap) for key, val in band_gap_info.items(): - sec_band_gap.m_set(sec_band_gap.m_get_quantity_definition(key), val) + sec_band_gap.m_set( + sec_band_gap.m_get_quantity_definition(key), val + ) - if (band_gap := source.get('band_gap')) is not None: + if (band_gap := source.get("band_gap")) is not None: sec_band_gap = BandGap() sec_scc.band_gap.append(sec_band_gap) for key, val in band_gap.items(): sec_band_gap.m_set(sec_band_gap.m_get_quantity_definition(key), val) - sec_scc.hessian_matrix = source.get('hessian_matrix') + sec_scc.hessian_matrix = source.get("hessian_matrix") return sec_scc @@ -1233,12 +1627,12 @@ def parse_system(source): sec_atoms = Atoms() sec_system.atoms = sec_atoms - labels_positions = source.get('labels_positions') + labels_positions = source.get("labels_positions") if labels_positions is not None: sec_atoms.labels = labels_positions[0] sec_atoms.positions = labels_positions[1] - lattice_vectors = source.get('lattice_vectors') + lattice_vectors = source.get("lattice_vectors") if lattice_vectors is not None: unit = lattice_vectors.units lattice_vectors = list(lattice_vectors.magnitude) @@ -1249,7 +1643,7 @@ def parse_system(source): sec_atoms.lattice_vectors = lattice_vectors * unit sec_atoms.periodic = pbc - sec_atoms.velocities = source.get('velocities') + sec_atoms.velocities = source.get("velocities") return sec_system @@ -1260,85 +1654,113 @@ def parse_method(source): sec_method = Method() sec_run.method.append(sec_method) sec_atom_centered = BasisSetAtomCentered() - for key, val in source.get('confinement', {}).items(): - sec_atom_centered.m_set(sec_atom_centered.m_get_quantity_definition(key), val) + for key, val in source.get("confinement", {}).items(): + sec_atom_centered.m_set( + sec_atom_centered.m_get_quantity_definition(key), val + ) sec_method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', - scope=['wavefunction'], + type="atom-centered orbitals", + scope=["wavefunction"], basis_set=[ BasisSet( - type='numeric AOs', + type="numeric AOs", atom_centered=[sec_atom_centered], ) - ] + ], ) ] - for function in source.get('radial_functions', []): + for function in source.get("radial_functions", []): sec_atom_param = AtomParameters() sec_method.atom_parameters.append(sec_atom_param) for key, val in function.items(): if val is None: continue - if key == 'orbital_parameters': + if key == "orbital_parameters": sec_atom_param.orbitals = [str(v) for v in val[0]] sec_atom_param.charges = val[1] - sec_atom_param.x_ams_orbital_energies = np.array(val[2], np.float64) * ureg.hartree + sec_atom_param.x_ams_orbital_energies = ( + np.array(val[2], np.float64) * ureg.hartree + ) sec_atom_param.x_ams_orbital_radii = np.array(val[4]) else: - sec_atom_param.m_set(sec_atom_param.m_get_quantity_definition(key), val) + sec_atom_param.m_set( + sec_atom_param.m_get_quantity_definition(key), val + ) - ranges_orbitals = source.get('ranges_atomic_orbitals', {}) - for atom_type in ranges_orbitals.get('type', []): + ranges_orbitals = source.get("ranges_atomic_orbitals", {}) + for atom_type in ranges_orbitals.get("type", []): for sec_atom_param in sec_method.atom_parameters: if sec_atom_param.label == atom_type[0]: - for n, key in enumerate(['valence', 'core', 'valence_kinetic', 'core_kinetic']): - sec_atom_param.m_set(sec_atom_param.m_get_quantity_definition(f'x_ams_cutoff_{key}'), atom_type[n + 1]) + for n, key in enumerate( + ["valence", "core", "valence_kinetic", "core_kinetic"] + ): + sec_atom_param.m_set( + sec_atom_param.m_get_quantity_definition( + f"x_ams_cutoff_{key}" + ), + atom_type[n + 1], + ) break - if (dft_potential := source.get('model_parameters', {}).get('dft_potential', {})) is not None: + if ( + dft_potential := source.get("model_parameters", {}).get( + "dft_potential", {} + ) + ) is not None: sec_dft = DFT() sec_method.dft = sec_dft # TODO provide mapping sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional - for xc_type in ['LDA', 'GGA', 'MGGA']: - functionals = dft_potential.get(xc_type, '').split() - kind = ['XC'] if len(functionals) == 1 else ['X', 'C'] + for xc_type in ["LDA", "GGA", "MGGA"]: + functionals = dft_potential.get(xc_type, "").split() + kind = ["XC"] if len(functionals) == 1 else ["X", "C"] for n, functional in enumerate(functionals): - functional = functional.rstrip('x').rstrip('c').upper() - if kind[n] == 'X': + functional = functional.rstrip("x").rstrip("c").upper() + if kind[n] == "X": sec_xc_functional.exchange.append( - Functional(name='%s_%s_%s' % (xc_type, kind[n], functional))) - elif kind[n] == 'C': + Functional( + name="%s_%s_%s" % (xc_type, kind[n], functional) + ) + ) + elif kind[n] == "C": sec_xc_functional.correlation.append( - Functional(name='%s_%s_%s' % (xc_type, kind[n], functional))) + Functional( + name="%s_%s_%s" % (xc_type, kind[n], functional) + ) + ) else: sec_xc_functional.contributions.append( - Functional(name='%s_%s_%s' % (xc_type, kind[n], functional))) + Functional( + name="%s_%s_%s" % (xc_type, kind[n], functional) + ) + ) sec_electronic = Electronic() sec_method.electronic = sec_electronic - model_parameters = source.get('model_parameters', {}) - spin = source.get('x_ams_spin_polarization', model_parameters.get('spin')) + model_parameters = source.get("model_parameters", {}) + spin = source.get("x_ams_spin_polarization", model_parameters.get("spin")) sec_electronic.n_spin_channels = 2 if spin else 1 - sec_electronic.relativity_method = self._relativity_map.get(model_parameters.get('relativistic_corrections')) + sec_electronic.relativity_method = self._relativity_map.get( + model_parameters.get("relativistic_corrections") + ) for key, val in model_parameters.items(): if hasattr(Method, key): sec_method.m_set(sec_method.m_get_quantity_definition(key), val) - if (charge := source.get('total_charge')) is not None: + if (charge := source.get("total_charge")) is not None: sec_electronic.charge = charge # TODO add smearing params - if (scf_options := source.get('scf_options')) is not None: + if (scf_options := source.get("scf_options")) is not None: sec_scf = Scf() sec_method.scf = sec_scf for key, val in scf_options.items(): sec_scf.m_set(sec_scf.m_get_quantity_definition(key), val) - if (k_space_sampling := source.get('k_space_sampling')) is not None: + if (k_space_sampling := source.get("k_space_sampling")) is not None: sec_k_mesh = KMesh() sec_method.k_mesh = sec_k_mesh for key, val in k_space_sampling.items(): @@ -1346,7 +1768,9 @@ def parse_method(source): for key in source.keys(): if hasattr(Method, key): - sec_method.m_set(sec_method.m_get_quantity_definition(key), source.get(key)) + sec_method.m_set( + sec_method.m_get_quantity_definition(key), source.get(key) + ) return sec_method @@ -1362,25 +1786,31 @@ def parse_calculation(source): if (geometry_opt := self.parser.geometry_optimization) is not None: workflow = GeometryOptimization(method=GeometryOptimizationMethod()) for key, val in geometry_opt.items(): - if key == 'step': + if key == "step": for step in val: parse_calculation(step) - elif key.startswith('x_ams') and hasattr(GeometryOptimization, key): + elif key.startswith("x_ams") and hasattr(GeometryOptimization, key): workflow.m_set(workflow.m_get_quantity_definition(key), val) sec_method = parse_method(geometry_opt) sec_run.calculation[-1].method_ref = sec_method - workflow.method.convergence_tolerance_energy_difference = geometry_opt.get('convergence_tolerance_energy_difference') - workflow.method.convergence_tolerance_displacement_maximum = geometry_opt.get('convergence_tolerance_displacement_maximum') - workflow.method.convergence_tolerance_force_maximum = geometry_opt.get('convergence_tolerance_force_maximum') + workflow.method.convergence_tolerance_energy_difference = geometry_opt.get( + "convergence_tolerance_energy_difference" + ) + workflow.method.convergence_tolerance_displacement_maximum = ( + geometry_opt.get("convergence_tolerance_displacement_maximum") + ) + workflow.method.convergence_tolerance_force_maximum = geometry_opt.get( + "convergence_tolerance_force_maximum" + ) elif (md := self.parser.molecular_dynamics) is not None: workflow = MolecularDynamics() sec_method = parse_method(md) - for step in md.get('step', []): + for step in md.get("step", []): parse_calculation(step) sec_run.calculation[-1].method_ref = sec_method - elif (sp := self.parser.get('single_point')) is not None: + elif (sp := self.parser.get("single_point")) is not None: sec_method = parse_method(sp) parse_calculation(sp) sec_run.calculation[-1].method_ref = sec_method @@ -1394,20 +1824,24 @@ def parse(self, filepath, archive, logger): self.init_parser() - rkf_files = get_files('ams.rkf', self.mainfile) + rkf_files = get_files("ams.rkf", self.mainfile) if rkf_files: if len(rkf_files) > 1: - self.logger.warning('Multiple ams.rkf files found.') + self.logger.warning("Multiple ams.rkf files found.") self.parser = self.rkf_parser self.parser.mainfile = os.path.join(os.path.dirname(filepath), rkf_files[0]) sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='AMS', version=self.parser.get('program_version', '')) + sec_run.program = Program( + name="AMS", version=self.parser.get("program_version", "") + ) for key in self.parser.results.keys(): - if key.startswith('program_x_ams'): - sec_run.program.m_set(sec_run.program.m_get_quantity_definition( - key.strip('program_')), self.parser.get(key)) - if key == 'time_start': + if key.startswith("program_x_ams"): + sec_run.program.m_set( + sec_run.program.m_get_quantity_definition(key.strip("program_")), + self.parser.get(key), + ) + if key == "time_start": sec_run.time_run = TimeRun(date_start=self.parser.get(key)) self.parse_configurations() diff --git a/electronicparsers/ams/rkf.py b/electronicparsers/ams/rkf.py index 31f2bc4d..83869bcd 100644 --- a/electronicparsers/ams/rkf.py +++ b/electronicparsers/ams/rkf.py @@ -8,13 +8,13 @@ logger = get_logger(__name__) -__all__ = ['KFFile', 'KFReader', 'KFHistory'] +__all__ = ["KFFile", "KFReader", "KFHistory"] def rkf_to_dict(rkffile): - ''' + """ return a python dictionary of an rkf file - ''' + """ data = KFFile(rkffile) json_data = {} all_sections = data.sections() @@ -47,17 +47,17 @@ class KFReader: """ - _sizes = {'s': 1, 'i': 4, 'd': 8, 'q': 8} + _sizes = {"s": 1, "i": 4, "d": 8, "q": 8} def __init__(self, path, blocksize=4096, autodetect=True): if os.path.isfile(path): self.path = os.path.abspath(path) else: - logger.warning('File {} not present'.format(path)) + logger.warning("File {} not present".format(path)) self._blocksize = blocksize - self.endian = '<' # endian: '<' = little, '>' = big - self.word = 'i' # length of int: 'i' = 4 bits, 'q' = 8 bits + self.endian = "<" # endian: '<' = little, '>' = big + self.word = "i" # length of int: 'i' = 4 bits, 'q' = 8 bits self._sections = None if autodetect: self._autodetect() @@ -76,18 +76,22 @@ def read(self, section, variable): try: tmp = self._sections[section] except KeyError: - raise KeyError('Section {} not present in {}'.format(section, self.path)) + raise KeyError("Section {} not present in {}".format(section, self.path)) try: vtype, vlb, vstart, vlen = tmp[variable] except KeyError: - raise KeyError('Variable {} not present in section {} of {}'.format(variable, section, self.path)) + raise KeyError( + "Variable {} not present in section {} of {}".format( + variable, section, self.path + ) + ) ret = [] first = True - with open(self.path, 'rb') as f: + with open(self.path, "rb") as f: for i in KFReader._datablocks(self._data[section], vlb): if first: - ret = self._get_data(self._read_block(f, i), vtype)[vstart - 1:] + ret = self._get_data(self._read_block(f, i), vtype)[vstart - 1 :] first = False else: ret += self._get_data(self._read_block(f, i), vtype) @@ -116,24 +120,24 @@ def _autodetect(self): Try to automatically detect the format (int size and endian) of this KF file. """ - with open(self.path, 'rb') as f: + with open(self.path, "rb") as f: b = f.read(128) - blocksize = struct.unpack(b'i', b[28:32])[0] + blocksize = struct.unpack(b"i", b[28:32])[0] self._blocksize = 4096 if blocksize == 538976288 else blocksize one = b[80:84] - if struct.unpack(b'32s', b[48:80])[0] == b'SUPERINDEX ': - self.word = 'i' - elif struct.unpack(b'32s', b[64:96])[0] == b'SUPERINDEX ': - self.word = 'q' + if struct.unpack(b"32s", b[48:80])[0] == b"SUPERINDEX ": + self.word = "i" + elif struct.unpack(b"32s", b[64:96])[0] == b"SUPERINDEX ": + self.word = "q" one = b[96:104] else: pass return - for e in ['<', '>']: + for e in ["<", ">"]: if struct.unpack(str(e + self.word), one)[0] == 1: self.endian = e # d = {'q': '8 bytes', 'i': '4 bytes', '<': 'little endian', '>': 'big endian'} @@ -143,7 +147,7 @@ def _read_block(self, f, pos): f.seek((pos - 1) * self._blocksize) return f.read(self._blocksize) - def _parse(self, block, format): # format = [(32,'s'),(4,'i'),(2,'d')] + def _parse(self, block, format): # format = [(32,'s'),(4,'i'),(2,'d')] """ Translate a *block* of binary data into list of values in specified *format*. *format* should be a list of pairs *(a,t)* where *t* is one of the following @@ -174,19 +178,23 @@ def _get_data(self, datablock, vtype): """ hlen = 4 * self._sizes[self.word] i, d, s, b = self._parse(datablock[:hlen], [(4, self.word)])[0] - contents = self._parse(datablock[hlen:], zip((i, d, s, b), (self.word, 'd', 's', self.word))) + contents = self._parse( + datablock[hlen:], zip((i, d, s, b), (self.word, "d", "s", self.word)) + ) if contents: - contents = contents[0] # there won't be more than one chunk of data in any data block + contents = contents[ + 0 + ] # there won't be more than one chunk of data in any data block if vtype == 1: return list(contents[:i]) elif vtype == 2: - return list(contents[i:i + d]) + return list(contents[i : i + d]) elif vtype == 3: return contents[i + d] elif vtype == 4: - return list(map(bool, contents[i + d + 1:])) + return list(map(bool, contents[i + d + 1 :])) else: - raise KeyError('Unknown vtype') + raise KeyError("Unknown vtype") else: return [] @@ -210,43 +218,53 @@ def _create_index(self): this information with mapping stored in ``_data`` allows to extract each single variable. """ - hlen = 32 + 7 * self._sizes[self.word] # length of index block header + hlen = 32 + 7 * self._sizes[self.word] # length of index block header - with open(self.path, 'rb') as f: - superlist = self._parse(self._read_block(f, 1), [(32, 's'), (4, self.word)]) + with open(self.path, "rb") as f: + superlist = self._parse(self._read_block(f, 1), [(32, "s"), (4, self.word)]) nextsuper = superlist[0][4] while nextsuper != 1: - nsl = self._parse(self._read_block(f, nextsuper), [(32, 's'), (4, self.word)]) + nsl = self._parse( + self._read_block(f, nextsuper), [(32, "s"), (4, self.word)] + ) nextsuper = nsl[0][4] superlist += nsl - self._data = {} # list of triples to convert logical to physical block numbers + self._data = {} # list of triples to convert logical to physical block numbers self._sections = {} - for key, pb, lb, le, ty in superlist: # pb=physical block, lb=logical block, le=length, ty=type (3 for index, 4 for data) + for ( + key, + pb, + lb, + le, + ty, + ) in superlist: # pb=physical block, lb=logical block, le=length, ty=type (3 for index, 4 for data) try: key = key.decode() except UnicodeDecodeError: key = key.decode("Latin-1") - key = key.rstrip(' ') - if key in ['SUPERINDEX', 'EMPTY']: + key = key.rstrip(" ") + if key in ["SUPERINDEX", "EMPTY"]: continue - if ty == 4: # data block + if ty == 4: # data block if key not in self._data: self._data[key] = [] self._data[key].append((lb, pb, pb + le)) - elif ty == 3: # index block + elif ty == 3: # index block if key not in self._sections: self._sections[key] = {} for i in range(le): indexblock = self._read_block(f, pb + i) - body = self._parse(indexblock[hlen:], [(32, 's'), (6, self.word)]) + body = self._parse( + indexblock[hlen:], [(32, "s"), (6, self.word)] + ) for var, vlb, vstart, _, _, vused, vtype in body: try: var = var.decode() except UnicodeDecodeError: var = var.decode("Latin-1") - var = var.rstrip(' ') - if var == 'EMPTY': + var = var.rstrip(" ") + if var == "EMPTY": continue self._sections[key][var] = (vtype, vlb, vstart, vused) @@ -315,11 +333,12 @@ class KFFile: mykf.write('Geometry','xyz', somevariable) """ + _types = { - int: (1, 8, lambda x: '%10i' % x), - float: (2, 3, lambda x: '%26.16e' % x), + int: (1, 8, lambda x: "%10i" % x), + float: (2, 3, lambda x: "%26.16e" % x), str: (3, 80, lambda x: x), - bool: (4, 80, lambda x: 'T' if x else 'F') + bool: (4, 80, lambda x: "T" if x else "F"), } def __init__(self, path, autosave=True): @@ -349,14 +368,18 @@ def write(self, section, variable, value): """Write a *variable* with a *value* in a *section* . If such a variable already exists in this section, the old value is overwritten.""" if not isinstance(value, (int, bool, float, str, list)): - raise ValueError('Trying to store improper value in KFFile') + raise ValueError("Trying to store improper value in KFFile") if isinstance(value, list): if len(value) == 0: - raise ValueError('Cannot store empty lists in KFFile') + raise ValueError("Cannot store empty lists in KFFile") if any(not isinstance(i, type(value[0])) for i in value): - raise ValueError('Lists stored in KFFile must have all elements of the same type') + raise ValueError( + "Lists stored in KFFile must have all elements of the same type" + ) if not isinstance(value[0], (int, bool, float, str)): - raise ValueError('Only lists of int, float, str or bool can be stored in KFFile') + raise ValueError( + "Only lists of int, float, str or bool can be stored in KFFile" + ) if section not in self.tmpdata: self.tmpdata[section] = OrderedDict() @@ -392,7 +415,11 @@ def read_section(self, section): ret[var] = self.read(sec, var) if len(ret) == 0: logger.warning( - "WARNING: Section '{}' not present in {} or present, but empty. Returning empty dictionary".format(section, self.path), 1) + "WARNING: Section '{}' not present in {} or present, but empty. Returning empty dictionary".format( + section, self.path + ), + 1, + ) return ret def get_skeleton(self): @@ -439,13 +466,20 @@ def __contains__(self, arg): with a section name or a pair of strings (section, variable).""" if isinstance(arg, str): return arg in self.sections() - if isinstance(arg, tuple) and len(arg) == 2 and isinstance(arg[0], str) and isinstance(arg[1], str): + if ( + isinstance(arg, tuple) + and len(arg) == 2 + and isinstance(arg[0], str) + and isinstance(arg[1], str) + ): try: self.read(*arg) return True except KeyError: return False - raise TypeError("'in ' requires string of a pair of strings as left operand") + raise TypeError( + "'in ' requires string of a pair of strings as left operand" + ) @staticmethod def _split(name): @@ -454,10 +488,10 @@ def _split(name): if isinstance(name, tuple) and len(name) == 2: return name[0], name[1] if isinstance(name, str): - s = name.split('%') + s = name.split("%") if len(s) == 2: return s[0], s[1] - raise ValueError('Improper key used in KFFile dictionary-like notation') + raise ValueError("Improper key used in KFFile dictionary-like notation") @staticmethod def _str(val): @@ -467,16 +501,17 @@ def _str(val): valtype = type(val[0]) t, step, f = KFFile._types[valtype] nl = len(val) - if (valtype == str and isinstance(val, list)): + if valtype == str and isinstance(val, list): # udmpkf reads 160 characters per variable, split over max. 80 per line, to make a string array nl = nl * 160 step = 1 splitstrings = [[s[0:80], s[80:160]] for s in val] val = [item for sublist in splitstrings for item in sublist] - ret = '%10i%10i%10i' % (nl, nl, t) + ret = "%10i%10i%10i" % (nl, nl, t) for i, el in enumerate(val): - if i % step == 0: ret += '\n' + if i % step == 0: + ret += "\n" ret += f(el) return ret @@ -525,9 +560,21 @@ def read_all(self, name): if name not in self.shapes: self._init_shape(name) if name in self.blocked: - return numpy.concatenate([numpy.atleast_1d(self.kf.read(self.section, "{}({})".format(name, i))) for i in range(1, self.nblocks + 1)]) + return numpy.concatenate( + [ + numpy.atleast_1d( + self.kf.read(self.section, "{}({})".format(name, i)) + ) + for i in range(1, self.nblocks + 1) + ] + ) else: - return numpy.asarray([self.kf.read(self.section, "{}({})".format(name, i)) for i in range(1, self.nsteps + 1)]) + return numpy.asarray( + [ + self.kf.read(self.section, "{}({})".format(name, i)) + for i in range(1, self.nsteps + 1) + ] + ) def iter(self, name): """Iterate over the values of history item *name*.""" diff --git a/electronicparsers/atk/metainfo/atk.py b/electronicparsers/atk/metainfo/atk.py index 92d10d05..67d53fa6 100644 --- a/electronicparsers/atk/metainfo/atk.py +++ b/electronicparsers/atk/metainfo/atk.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) from runschema import method @@ -29,33 +36,36 @@ class Method(method.Method): - m_def = Section(validate=False, extends_base_section=True) x_atk_density_convergence_criterion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Density convergence criteria to break the SCF cycle - ''') + """, + ) x_atk_mix_old = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of old densities in the density mixer - ''') + """, + ) x_atk_mix_weight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mixing weight in density mixer - ''') + """, + ) x_atk_monkhorstpack_sampling = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" Monkhorstpack grid sampling - ''') + """, + ) diff --git a/electronicparsers/atk/parser.py b/electronicparsers/atk/parser.py index 9adf29d6..5f7ddba9 100644 --- a/electronicparsers/atk/parser.py +++ b/electronicparsers/atk/parser.py @@ -29,17 +29,15 @@ from nomad.units import ureg from nomad.parsing.file_parser import FileParser, TextParser, Quantity from runschema.run import Run, Program -from runschema.method import ( - Method, Electronic, Smearing, DFT, XCFunctional, Functional) +from runschema.method import Method, Electronic, Smearing, DFT, XCFunctional, Functional from runschema.system import System, Atoms -from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry) +from runschema.calculation import Calculation, Energy, EnergyEntry, Forces, ForcesEntry class NCParser(FileParser): def __init__(self): super().__init__() - self._configuration_types = ['MoleculeConfiguration', 'BulkConfiguration'] + self._configuration_types = ["MoleculeConfiguration", "BulkConfiguration"] self._units = dict(angstrom=ureg.angstrom, bohr=ureg.bohr, kelvin=ureg.kelvin) self._fingerprints = dict() @@ -51,64 +49,94 @@ def netcdf(self): except Exception: return # prepare fingerprints required for variables - if hasattr(self._file_handler, 'fingerprint_table'): - fprints = [p.split(':') for p in self._file_handler.fingerprint_table.decode().split('#') if p] # pylint: disable=maybe-no-member + if hasattr(self._file_handler, "fingerprint_table"): + fprints = [ + p.split(":") + for p in self._file_handler.fingerprint_table.decode().split("#") + if p + ] # pylint: disable=maybe-no-member self._fingerprints = {p[1]: p[0] for p in fprints} return self._file_handler def resolve_unit(self, val): - val = val.split('*') + val = val.split("*") if len(val) == 2: - return (float(val[0]) * self._units.get(val[1].lower(), ureg.angstrom)).to('angstrom').magnitude + return ( + (float(val[0]) * self._units.get(val[1].lower(), ureg.angstrom)) + .to("angstrom") + .magnitude + ) return float(val[0]) def _resolve_configuration(self, data): - # TODO implement UnitCell, ghost atoms lattices = dict( FaceCenteredCubic=aselattice.FCC, BodyCenteredCubic=aselattice.BCC, - Triclinic=aselattice.TRI + Triclinic=aselattice.TRI, ) - re_f = r'[\d\.\-\+Ee]+' + re_f = r"[\d\.\-\+Ee]+" data = data.data[:].copy().tobytes().decode() - elements = re.search(r'elements = \[(.+)\]', data) + elements = re.search(r"elements = \[(.+)\]", data) if not elements: return - coordinates = re.search(r'coordinates *\= *(\[\s*\[[\s\S]+?\]\s*\])', data) + coordinates = re.search(r"coordinates *\= *(\[\s*\[[\s\S]+?\]\s*\])", data) if not coordinates: return try: - numbers = [atomic_names.index(e.strip().title()) for e in elements.group(1).split(',')] - - positions = np.array([v.split(',') for v in re.findall( - rf'\[( *{re_f} *\, *{re_f} *\, *{re_f} *)\]', coordinates.group(1))], dtype=np.dtype(np.float64)) + numbers = [ + atomic_names.index(e.strip().title()) + for e in elements.group(1).split(",") + ] + + positions = np.array( + [ + v.split(",") + for v in re.findall( + rf"\[( *{re_f} *\, *{re_f} *\, *{re_f} *)\]", + coordinates.group(1), + ) + ], + dtype=np.dtype(np.float64), + ) atoms = aseAtoms(numbers=numbers, positions=positions) except Exception: return - velocities = re.search(r'velocities *\= *(\[\s*\[[\s\S]+?\]\s*\])', data) + velocities = re.search(r"velocities *\= *(\[\s*\[[\s\S]+?\]\s*\])", data) if velocities: - atoms.set_velocities(np.array([v.split(',') for v in re.findall( - rf'\[( *{re_f} *\, *{re_f} *\, *{re_f} *)\]', velocities.group(1))], dtype=np.dtype(np.float64))) - - if 'MoleculeConfiguration' in data: + atoms.set_velocities( + np.array( + [ + v.split(",") + for v in re.findall( + rf"\[( *{re_f} *\, *{re_f} *\, *{re_f} *)\]", + velocities.group(1), + ) + ], + dtype=np.dtype(np.float64), + ) + ) + + if "MoleculeConfiguration" in data: return atoms atoms.set_pbc(True) - lattice = re.search(r'\nlattice = (\w+) *\((.+)\)', data) - lattice, parameters = lattice.groups() if lattice else ('', '') - parameters = [self.resolve_unit(p) for p in re.findall(rf'({re_f} *\* *\w+)', parameters)] + lattice = re.search(r"\nlattice = (\w+) *\((.+)\)", data) + lattice, parameters = lattice.groups() if lattice else ("", "") + parameters = [ + self.resolve_unit(p) for p in re.findall(rf"({re_f} *\* *\w+)", parameters) + ] lattice = lattices.get(lattice) if lattice is None: return @@ -124,7 +152,7 @@ def _resolve_configuration(self, data): except Exception: pass else: - atoms.set_cell(cell, scale_atoms='fractional' in data) + atoms.set_cell(cell, scale_atoms="fractional" in data) return atoms @@ -134,47 +162,61 @@ def parse(self, key): val = getattr(self.netcdf, key) if isinstance(val, bytes): val = val.decode() - elif key == 'configuration_names': + elif key == "configuration_names": val = [] - re_name = re.compile(r'(\w+Configuration\_gID\d+)$') + re_name = re.compile(r"(\w+Configuration\_gID\d+)$") for name in self.netcdf.variables.keys(): name = re.match(re_name, name) if name: val.append(name.group(1)) - elif key == 'atoms': + elif key == "atoms": val = dict() - for name in self.get('configuration_names', []): + for name in self.get("configuration_names", []): data = self.netcdf.variables.get(name) if data is None: continue val[name] = self._resolve_configuration(data) - elif key == 'parameters': + elif key == "parameters": val = dict() - for name in self.get('configuration_names', []): - data = self.netcdf.variables.get('%s_calculator' % name) + for name in self.get("configuration_names", []): + data = self.netcdf.variables.get("%s_calculator" % name) if data is None: continue val[name] = data.data.tobytes() - elif key == 'energies': + elif key == "energies": val = dict() # energy_keys = [k for k in self.netcdf.variables.keys() if k.startswith('TotalEnergy')] - energy_re = r'TotalEnergy\_(gID\d+)\_component\_(\S+)' + energy_re = r"TotalEnergy\_(gID\d+)\_component\_(\S+)" for key_n in self.netcdf.variables.keys(): energy_key = re.match(energy_re, key_n) if energy_key: - fp = self.netcdf.variables[ - 'TotalEnergy_%s_finger_print' % energy_key.group(1)].data.tobytes().decode() + fp = ( + self.netcdf.variables[ + "TotalEnergy_%s_finger_print" % energy_key.group(1) + ] + .data.tobytes() + .decode() + ) val.setdefault(fp, {}) - val[fp][energy_key.group(2)] = self.netcdf.variables[key_n].data[0] * ureg.eV - elif key == 'forces': + val[fp][energy_key.group(2)] = ( + self.netcdf.variables[key_n].data[0] * ureg.eV + ) + elif key == "forces": val = dict() - forces_re = r'Forces\_(gID\d+)\_atom\_resolved\_forces' + forces_re = r"Forces\_(gID\d+)\_atom\_resolved\_forces" for key_n in self.netcdf.variables.keys(): forces_key = re.match(forces_re, key_n) if forces_key: - fp = self.netcdf.variables[ - 'TotalEnergy_%s_finger_print' % forces_key.group(1)].data.tobytes().decode() - val[fp] = self.netcdf.variables[key_n].data * (ureg.eV / ureg.angstrom) + fp = ( + self.netcdf.variables[ + "TotalEnergy_%s_finger_print" % forces_key.group(1) + ] + .data.tobytes() + .decode() + ) + val[fp] = self.netcdf.variables[key_n].data * ( + ureg.eV / ureg.angstrom + ) # TODO implement stress, bandstructure, eigenvalues self._results[key] = val @@ -186,9 +228,11 @@ def __init__(self): def init_quantities(self): self._quantities = [ - Quantity('smearing_width', r'electron_temperature *\= *([\d\.]+)', dtype=float), - Quantity('charge', r'charge *\= *([\d\.]+)', dtype=float), - Quantity('xc_functional', r'exchange_correlation *\= *(\S+)') + Quantity( + "smearing_width", r"electron_temperature *\= *([\d\.]+)", dtype=float + ), + Quantity("charge", r"charge *\= *([\d\.]+)", dtype=float), + Quantity("xc_functional", r"exchange_correlation *\= *(\S+)"), ] @@ -198,22 +242,26 @@ def __init__(self): self.calculator_parser = CalculatorParser() self._metainfo_map = { - 'Exchange-Correlation': 'energy_xc', 'Kinetic': 'energy_kinetic_electronic', - 'Entropy-Term': 'energy_correction_entropy', 'Electrostatic': 'energy_electrostatic'} + "Exchange-Correlation": "energy_xc", + "Kinetic": "energy_kinetic_electronic", + "Entropy-Term": "energy_correction_entropy", + "Electrostatic": "energy_electrostatic", + } self._xc_functional_map = { - 'LDA.RPA': ['LDA_X', 'LDA_C_RPA'], - 'LDA.PZ': ['LDA_X', 'LDA_C_PZ'], - 'LDA.PW': ['LDA_X', 'LDA_C_PW'], - 'GGA.PW91': ['GGA_X_PW91', 'GGA_C_PW91'], - 'GGA.PBE': ['GGA_X_PBE', 'GGA_C_PBE'], - 'GGA.PBES': ['GGA_X_PBE_SOL', 'GGA_C_PBE_SOL'], - 'GGA.RPBE': ['GGA_X_RPBE', 'GGA_C_PBE'], - 'BLYP': ['GGA_X_B88', 'GGA_C_LYP'], - 'HCTH407': ['GGA_XC_HCTH_407'], - 'WC': ['GGA_X_WC', 'GGA_C_PBE'], - 'AM05': ['GGA_X_AM05', 'GGA_C_AM05'], - 'mBEEF': ['MGGA_X_MBEEF', 'GGA_C_PBE_SOL']} + "LDA.RPA": ["LDA_X", "LDA_C_RPA"], + "LDA.PZ": ["LDA_X", "LDA_C_PZ"], + "LDA.PW": ["LDA_X", "LDA_C_PW"], + "GGA.PW91": ["GGA_X_PW91", "GGA_C_PW91"], + "GGA.PBE": ["GGA_X_PBE", "GGA_C_PBE"], + "GGA.PBES": ["GGA_X_PBE_SOL", "GGA_C_PBE_SOL"], + "GGA.RPBE": ["GGA_X_RPBE", "GGA_C_PBE"], + "BLYP": ["GGA_X_B88", "GGA_C_LYP"], + "HCTH407": ["GGA_XC_HCTH_407"], + "WC": ["GGA_X_WC", "GGA_C_PBE"], + "AM05": ["GGA_X_AM05", "GGA_C_AM05"], + "mBEEF": ["MGGA_X_MBEEF", "GGA_C_PBE_SOL"], + } def init_parser(self): self.nc_parser.mainfile = self.filepath @@ -226,7 +274,7 @@ def parse_method(name): sec_method = Method() sec_run.method.append(sec_method) - parameters = self.nc_parser.get('parameters').get(name) + parameters = self.nc_parser.get("parameters").get(name) if parameters is None: return sec_method @@ -235,21 +283,28 @@ def parse_method(name): self.calculator_parser._file_handler = parameters sec_method.electronic = Electronic( - relativity_method='pseudo_scalar_relativistic', - charge=self.calculator_parser.get('charge', 0.0), + relativity_method="pseudo_scalar_relativistic", + charge=self.calculator_parser.get("charge", 0.0), smearing=Smearing( - kind='fermi', width=self.calculator_parser.get('smearing_width', 0.0))) + kind="fermi", + width=self.calculator_parser.get("smearing_width", 0.0), + ), + ) sec_dft = DFT() sec_method.dft = sec_dft sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional - for xc_functional in self._xc_functional_map.get(self.calculator_parser.get('xc_functional'), []): - if '_XC' in xc_functional: - sec_xc_functional.contributions.append(Functional(name=xc_functional)) - elif '_X' in xc_functional: + for xc_functional in self._xc_functional_map.get( + self.calculator_parser.get("xc_functional"), [] + ): + if "_XC" in xc_functional: + sec_xc_functional.contributions.append( + Functional(name=xc_functional) + ) + elif "_X" in xc_functional: sec_xc_functional.exchange.append(Functional(name=xc_functional)) - elif '_C' in xc_functional: + elif "_C" in xc_functional: sec_xc_functional.correlation.append(Functional(name=xc_functional)) # Basis set @@ -283,17 +338,19 @@ def parse_scc(fingerprint): # energies sec_energy = Energy() sec_scc.energy = sec_energy - energy_total = 0. - for key, val in self.nc_parser.get('energies').get(fingerprint, {}).items(): + energy_total = 0.0 + for key, val in self.nc_parser.get("energies").get(fingerprint, {}).items(): key = self._metainfo_map.get(key) energy_total += val if key is not None: - key = key.replace('energy_', '') - sec_energy.m_add_sub_section(getattr(Energy, key), EnergyEntry(value=val)) + key = key.replace("energy_", "") + sec_energy.m_add_sub_section( + getattr(Energy, key), EnergyEntry(value=val) + ) sec_energy.total = EnergyEntry(value=energy_total) # forces - forces = self.nc_parser.get('forces').get(fingerprint) + forces = self.nc_parser.get("forces").get(fingerprint) if forces is not None: sec_forces = Forces() sec_scc.forces = sec_forces @@ -301,10 +358,12 @@ def parse_scc(fingerprint): return sec_scc - for name, atoms in self.nc_parser.get('atoms', {}).items(): + for name, atoms in self.nc_parser.get("atoms", {}).items(): sec_system = parse_system(atoms) sec_method = parse_method(name) - fingerprint = self.nc_parser._fingerprints.get('gID%s' % name.split('gID')[-1]) + fingerprint = self.nc_parser._fingerprints.get( + "gID%s" % name.split("gID")[-1] + ) sec_scc = parse_scc(fingerprint) if sec_system is not None: sec_scc.system_ref = sec_system @@ -320,8 +379,8 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program_name = 'ATK' - version = self.nc_parser.get('version', 'unavailable') - sec_run.program = Program(name='ATK', version=version) + sec_run.program_name = "ATK" + version = self.nc_parser.get("version", "unavailable") + sec_run.program = Program(name="ATK", version=version) self.parse_configurations() diff --git a/electronicparsers/bigdft/parser.py b/electronicparsers/bigdft/parser.py index 5b5feb77..01d9fb8b 100644 --- a/electronicparsers/bigdft/parser.py +++ b/electronicparsers/bigdft/parser.py @@ -22,6 +22,7 @@ import numpy as np from ase.data import chemical_symbols import yaml + try: from yaml import CLoader except Exception: @@ -30,13 +31,23 @@ from nomad.units import ureg from runschema.run import Run, Program from runschema.method import ( - Method, DFT, XCFunctional, Functional, Electronic, Scf, BasisSet, BasisSetContainer -) -from runschema.system import ( - System, Atoms + Method, + DFT, + XCFunctional, + Functional, + Electronic, + Scf, + BasisSet, + BasisSetContainer, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, ScfIteration + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + ScfIteration, ) @@ -46,15 +57,15 @@ def __init__(self): # TODO complete mapping self.xc_mapping = { - 1: ['LDA_XC_TETER93'], + 1: ["LDA_XC_TETER93"], 11: ['GGA_C_PBE", "GGA_X_PBE'], - 12: ['GGA_X_PBE'], + 12: ["GGA_X_PBE"], 15: ['GGA_C_PBE", "GGA_X_RPBE'], - 16: ['GGA_XC_HCTH_93'], - 17: ['GGA_XC_HCTH_120'], - 26: ['GGA_XC_HCTH_147'], - 27: ['GGA_XC_HCTH_407'], - 100: ['HF_X'], + 16: ["GGA_XC_HCTH_93"], + 17: ["GGA_XC_HCTH_120"], + 26: ["GGA_XC_HCTH_147"], + 27: ["GGA_XC_HCTH_407"], + 100: ["HF_X"], # libxc "001": "LDA_X", "002": "LDA_C_WIGNER", @@ -190,30 +201,35 @@ def parse_method(self): self.archive.run[-1].method.append(sec_method) sec_method.electrons_representation = [ BasisSetContainer( - type='real-space grid', - scope=['wavefunction'], + type="real-space grid", + scope=["wavefunction"], basis_set=[ - BasisSet(type='real-space grid',) - ] + BasisSet( + type="real-space grid", + ) + ], ) ] sec_dft = DFT() sec_method.dft = sec_dft - data = self._extract('dft', self.yaml_dict, {}) + data = self._extract("dft", self.yaml_dict, {}) sec_electronic = Electronic() sec_method.electronic = sec_electronic - sec_electronic.charge = self._extract('qcharge', data, 0) - sec_electronic.n_spin_channels = self._extract('nspin', data, 1) - sec_method.scf = Scf(n_max_iteration=self._extract('itermax', data, 0)) + sec_electronic.charge = self._extract("qcharge", data, 0) + sec_electronic.n_spin_channels = self._extract("nspin", data, 1) + sec_method.scf = Scf(n_max_iteration=self._extract("itermax", data, 0)) - xc_id = self._extract('xc id', data) + xc_id = self._extract("xc id", data) if xc_id is None: - xc_id = self._extract('ixc', data, 0) + xc_id = self._extract("ixc", data, 0) if xc_id < 0: # libxc - xc_id = '%06d' % abs(xc_id) - xc_functionals = [self.xc_mapping.get(xc_id[:3]), self.xc_mapping.get(xc_id[3:])] + xc_id = "%06d" % abs(xc_id) + xc_functionals = [ + self.xc_mapping.get(xc_id[:3]), + self.xc_mapping.get(xc_id[3:]), + ] else: xc_functionals = self.xc_mapping.get(xc_id, []) @@ -221,22 +237,22 @@ def parse_method(self): sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for functional in xc_functionals: - if '_X_' in functional: + if "_X_" in functional: sec_xc_functional.exchange.append(Functional(name=functional)) - elif '_C_' in functional: + elif "_C_" in functional: sec_xc_functional.correlation.append(Functional(name=functional)) else: sec_xc_functional.contributions.append(Functional(name=functional)) - sec_xc_functional.name = '_'.join(xc_functionals) + sec_xc_functional.name = "_".join(xc_functionals) def parse_system(self): sec_system = System() self.archive.run[-1].system.append(sec_system) - data = self._extract('Atomic structure', self.yaml_dict, {}) + data = self._extract("Atomic structure", self.yaml_dict, {}) labels = [] positions = [] - for atom in self._extract('positions', data, []): + for atom in self._extract("positions", data, []): for label, position in atom.items(): if label in chemical_symbols: # some entries may not be symbols @@ -249,71 +265,77 @@ def parse_system(self): sec_atoms.positions = positions * ureg.angstrom sec_atoms.labels = labels - cell = self._extract('cell', data) + cell = self._extract("cell", data) if cell is None: - data = self._extract('Sizes of the simulation domain', self.yaml_dict, {}) - cell = self._extract('angstroem', data) + data = self._extract("Sizes of the simulation domain", self.yaml_dict, {}) + cell = self._extract("angstroem", data) if cell is not None: sec_atoms.lattice_vectors = np.diag(cell) * ureg.angstrom sec_atoms.periodic = [True, True, True] - data = self._extract('Atomic System Properties', self.yaml_dict, {}) - sec_atoms.n_atoms = self._extract('number of atoms', data, 0) + data = self._extract("Atomic System Properties", self.yaml_dict, {}) + sec_atoms.n_atoms = self._extract("number of atoms", data, 0) - pbc = self._extract('boundary conditions', data, 'Periodic').lower() - if pbc == 'free': + pbc = self._extract("boundary conditions", data, "Periodic").lower() + if pbc == "free": sec_atoms.periodic = [False, False, False] - elif pbc == 'periodic': + elif pbc == "periodic": sec_atoms.periodic = [True, True, True] - elif pbc == 'surface': + elif pbc == "surface": sec_atoms.periodic = [True, False, True] def parse_scc(self): sec_scc = Calculation() self.archive.run[-1].calculation.append(sec_scc) - energy = self._extract('Energy (Hartree)', self.yaml_dict) + energy = self._extract("Energy (Hartree)", self.yaml_dict) sec_energy = Energy() sec_scc.energy = sec_energy if energy is not None: sec_energy.total = EnergyEntry(value=energy * ureg.hartree) - forces = self._extract('Atomic Forces (Ha/Bohr)', self.yaml_dict) + forces = self._extract("Atomic Forces (Ha/Bohr)", self.yaml_dict) sec_forces = Forces() sec_scc.forces = sec_forces if forces is not None: sec_forces.total = ForcesEntry( - value=[list(f.values())[0] for f in forces] * (ureg.hartree / ureg.bohr)) + value=[list(f.values())[0] for f in forces] * (ureg.hartree / ureg.bohr) + ) - data = self._extract('Ground State Optimization', self.yaml_dict, [{}]) - hamiltonian = self._extract('hamiltonian optimization', data[0]) + data = self._extract("Ground State Optimization", self.yaml_dict, [{}]) + hamiltonian = self._extract("hamiltonian optimization", data[0]) if hamiltonian is None: return energy_mapping = { - 'exc': 'energy_xc', 'evxc': 'energy_xc_potential', - 'eh': 'energy_correction_hartree', 'ekin': 'energy_kinetic_electronic', - 'eks': 'energy_total', 'd': 'energy_change'} + "exc": "energy_xc", + "evxc": "energy_xc_potential", + "eh": "energy_correction_hartree", + "ekin": "energy_kinetic_electronic", + "eks": "energy_total", + "d": "energy_change", + } - subspace = self._extract('subspace optimization', hamiltonian[0], {}) - wavefunction = self._extract('wavefunctions iterations', subspace, []) + subspace = self._extract("subspace optimization", hamiltonian[0], {}) + wavefunction = self._extract("wavefunctions iterations", subspace, []) sec_scc.n_scf_iterations = len(wavefunction) for iteration in wavefunction: sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) - energies = self._extract('energies', iteration, {}) + energies = self._extract("energies", iteration, {}) energies.update(iteration.items()) sec_scf_energy = Energy() sec_scf.energy = sec_scf_energy for key, val in energies.items(): key = energy_mapping.get(key.lower()) if key is not None: - key = key.replace('energy_', '') - if key == 'change': + key = key.replace("energy_", "") + if key == "change": sec_scf_energy.change = val * ureg.hartree else: - sec_scf_energy.m_add_sub_section(getattr( - Energy, key), EnergyEntry(value=val * ureg.hartree)) + sec_scf_energy.m_add_sub_section( + getattr(Energy, key), EnergyEntry(value=val * ureg.hartree) + ) def parse(self, filepath, archive, logger): self.filepath = os.path.abspath(filepath) @@ -329,7 +351,7 @@ def parse(self, filepath, archive, logger): try: yaml_dicts = yaml.safe_load_all(f) except Exception: - self.logger.error('Error loading yaml file.') + self.logger.error("Error loading yaml file.") return for yaml_dict in yaml_dicts: @@ -338,8 +360,8 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) sec_run.program = Program( - name='BigDFT', - version=str(self.yaml_dict.pop('Version Number', ''))) + name="BigDFT", version=str(self.yaml_dict.pop("Version Number", "")) + ) self.parse_method() self.parse_system() diff --git a/electronicparsers/castep/metainfo/castep.py b/electronicparsers/castep/metainfo/castep.py index ba08f9bb..fe61a48e 100644 --- a/electronicparsers/castep/metainfo/castep.py +++ b/electronicparsers/castep/metainfo/castep.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import simulationworkflowschema import runschema.run # pylint: disable=unused-import @@ -33,1560 +40,1726 @@ class x_castep_section_vibrational_frequencies(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_number_vibrational_frequencies = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of vibration frequenices - ''') + """, + ) x_castep_vibrational_frequencies = Quantity( type=np.dtype(np.float64), - shape=['x_castep_number_vibrational_frequencies'], - description=''' + shape=["x_castep_number_vibrational_frequencies"], + description=""" Vibration Frequenices (cm-1) - ''') + """, + ) x_castep_vibrationl_frequencies_store = Quantity( type=str, shape=[], - description=''' + description=""" Vibration Frequenices (cm-1) - ''') + """, + ) x_castep_ir_store = Quantity( type=str, shape=[], - description=''' + description=""" Irreducible representation in the Point Group - ''') + """, + ) x_castep_ir = Quantity( type=str, - shape=['x_castep_number_vibrational_frequencies'], - description=''' + shape=["x_castep_number_vibrational_frequencies"], + description=""" Irreducible representation in the Point Group - ''') + """, + ) x_castep_raman_activity = Quantity( type=np.dtype(np.float64), - shape=['x_castep_number_vibrational_frequencies'], - description=''' + shape=["x_castep_number_vibrational_frequencies"], + description=""" Raman activity (A**4/amu) - ''') + """, + ) x_castep_raman_active = Quantity( type=str, - shape=['x_castep_number_vibrational_frequencies'], - description=''' + shape=["x_castep_number_vibrational_frequencies"], + description=""" Raman activity (A**4/amu) - ''') + """, + ) x_castep_n_iterations_phonons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of iterations in phonons - ''') + """, + ) x_castep_raman_activity_store = Quantity( type=str, shape=[], - description=''' + description=""" Raman activity (A**4/amu) - ''') + """, + ) x_castep_ir_intensity = Quantity( type=np.dtype(np.float64), - shape=['x_castep_number_vibrational_frequencies'], - description=''' + shape=["x_castep_number_vibrational_frequencies"], + description=""" IR intensities (D/A)**2/amu - ''') + """, + ) x_castep_ir_intensity_store = Quantity( type=str, shape=[], - description=''' + description=""" IR intensities (D/A)**2/amu - ''') + """, + ) class x_castep_section_band_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_band_n_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_castep_band_n_bands - ''') + """, + ) x_castep_band_conv_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_castep_band_conv_tolerance - ''') + """, + ) x_castep_band_n_iterations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_castep_band_n_iterations - ''') + """, + ) x_castep_band_max_cg = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_castep_band_max_cg - ''') + """, + ) class x_castep_section_core_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_core_spectra_n_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_castep_core_spectra_n_bands - ''') + """, + ) x_castep_core_spectra_conv_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_castep_core_spectra_conv_tolerance - ''') + """, + ) class x_castep_section_ts_scf_iteration(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_scf_ts_iteration_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCF_ts_energy - ''') + """, + ) x_castep_scf_ts_iteration_energy_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCF_ts_energy change - ''') + """, + ) x_castep_scf_ts_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCF_ts_energy time - ''') + """, + ) class x_castep_section_tddft(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_tddft_iteration = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Iteration number - ''') + """, + ) x_castep_wall_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Iteration wall time (s) - ''') + """, + ) x_castep_state_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" state number - ''') + """, + ) x_castep_state_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" state energy - ''') + """, + ) x_castep_state_energy_error = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" state energy error - ''') + """, + ) x_castep_tddft_calculation_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" calculation time - ''') + """, + ) class x_castep_section_atom_ionic_velocities(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_castep_section_atom_positions_optim(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_cell_angle_alpha_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle alpha - ''') + """, + ) x_castep_cell_angle_beta_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle beta - ''') + """, + ) x_castep_cell_angle_gamma_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle gamma - ''') + """, + ) x_castep_cell_length_a_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" a unit cell edge length - ''') + """, + ) x_castep_cell_length_b_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" b unit cell edge length - ''') + """, + ) x_castep_cell_length_c_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" c unit cell edge length - ''') + """, + ) class x_castep_section_atom_positions(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_cell_angle_alpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle alpha - ''') + """, + ) x_castep_cell_angle_beta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle beta - ''') + """, + ) x_castep_cell_angle_gamma = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle gamma - ''') + """, + ) x_castep_cell_length_a = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" a unit cell edge length - ''') + """, + ) x_castep_cell_length_b = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" b unit cell edge length - ''') + """, + ) x_castep_cell_length_c = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" c unit cell edge length - ''') + """, + ) class x_castep_section_cell_optim(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_cell_vector_optim = Quantity( type=str, shape=[], - description=''' + description=""" Temporay storage for cell vectors - ''') + """, + ) class x_castep_section_cell(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_cell_vector = Quantity( type=str, shape=[], - description=''' + description=""" Temporay storage for cell vectors - ''') + """, + ) class x_castep_section_collect_scf_eigenvalues(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_castep_section_eigenvalues_1(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_eigenvalues_1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storing eigenvalues - ''') + """, + ) class x_castep_section_eigenvalues(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_eigenvalues = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storing eigenvalues - ''') + """, + ) class x_castep_section_functional_definition(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_functional_type = Quantity( type=str, shape=[], - description=''' + description=""" XC functional definition in CASTEP convention - ''') + """, + ) x_castep_functional_weight = Quantity( type=str, shape=[], - description=''' + description=""" XC functional weight in CASTEP convention - ''') + """, + ) class x_castep_section_functionals(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_functional_name = Quantity( type=str, shape=[], - description=''' + description=""" XC functional in CASTEP convention - ''') + """, + ) class x_castep_section_population_analysis(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_mulliken_atom_index = Quantity( type=str, shape=[], - description=''' + description=""" Mulliken_atom_index - ''') + """, + ) x_castep_mulliken_atom = Quantity( type=str, shape=[], - description=''' + description=""" Mulliken_atom kind - ''') + """, + ) x_castep_orbital_contributions = Quantity( type=str, shape=[], - description=''' + description=""" Mulliken_contributions - ''') + """, + ) x_castep_orbital_s = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_contribution_orbital s - ''') + """, + ) x_castep_orbital_p = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_contribution_orbital p - ''') + """, + ) x_castep_orbital_d = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_contribution_orbital d - ''') + """, + ) x_castep_orbital_f = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_contribution_orbital f - ''') + """, + ) x_castep_total_orbital = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_total_contribution - ''') + """, + ) x_castep_mulliken_charge_store = Quantity( type=str, shape=[], - description=''' + description=""" Mulliken_charges - ''') + """, + ) x_castep_mulliken_charge = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_charges - ''') + """, + ) class x_castep_section_geom_optimisation_method(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_geometry_optim_method = Quantity( type=str, shape=[], - description=''' + description=""" Determines optimisation method used - ''') + """, + ) class x_castep_section_optics_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_optics_n_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" optics_number_of_bands - ''') + """, + ) x_castep_optics_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" optics_band_convergence_tolerance - ''') + """, + ) class x_castep_section_tddft_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_tddft_n_excited_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of excited states - ''') + """, + ) x_castep_tddft_n_states_forces = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of states for forces - ''') + """, + ) x_castep_tddft_state_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" tolerance (eV) - ''') + """, + ) x_castep_tddft_state_tolerance_window = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" tolerance window iterations - ''') + """, + ) x_castep_tddft_max_iter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" max number iterations - ''') + """, + ) x_castep_tddft_extra_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of extra states - ''') + """, + ) x_castep_tddft_functional = Quantity( type=str, shape=[], - description=''' + description=""" tddft functional - ''') + """, + ) x_castep_tddft_method = Quantity( type=str, shape=[], - description=''' + description=""" tddft method - ''') + """, + ) x_castep_tddft_eigenmethod = Quantity( type=str, shape=[], - description=''' + description=""" tddft eigenmethod - ''') + """, + ) x_castep_tddft_approximation = Quantity( type=str, shape=[], - description=''' + description=""" tddft approximation - ''') + """, + ) x_castep_tddft_position_op = Quantity( type=str, shape=[], - description=''' + description=""" tddft position operator - ''') + """, + ) class x_castep_section_phonons(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_phonon_method = Quantity( type=str, shape=[], - description=''' + description=""" Phonon calculation method - ''') + """, + ) x_castep_DFPT_solver_method = Quantity( type=str, shape=[], - description=''' + description=""" Phonon DFPT solver method - ''') + """, + ) x_castep_phonon_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Phonon calculation tolerance (eV/A**2) - ''') + """, + ) x_castep_phonon_cycles = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Phonon calculation cycles - ''') + """, + ) x_castep_band_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Phonon band convergence tolerance window - ''') + """, + ) class x_castep_section_density_mixing_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_density_mixing_scheme = Quantity( type=str, shape=[], - description=''' + description=""" density_mixing_scheme - ''') + """, + ) x_castep_density_mixing_length = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" density_mixing_scheme_length - ''') + """, + ) x_castep_charge_density_mixing_amplitude = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" charge_density_mixing_amplitude - ''') + """, + ) x_castep_cut_off_energy_for_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" charge_density_mixing_cut_off_energy_for_mixing (A) - ''') + """, + ) class x_castep_section_population_analysis_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_population_analysis_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Population_analysis_cutoff_(A) - ''') + """, + ) class x_castep_section_ts_scf(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_scf_ts_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCF_ts_energy Total - ''') + """, + ) x_castep_scf_ts_total_energy_free = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCF_ts_energy Total free - ''') + """, + ) x_castep_scf_ts_T0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCF_ts_energy T0 free - ''') + """, + ) x_castep_section_ts_scf_iteration = SubSection( - sub_section=SectionProxy('x_castep_section_ts_scf_iteration'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_scf_iteration"), repeats=True + ) class x_castep_section_k_band(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_castep_section_k_points_1(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_k_points_1 = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing k points coordinates (fractional) - ''') + """, + ) class x_castep_section_k_points(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_k_points = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing k points coordinates (fractional) - ''') + """, + ) class x_castep_section_relativity_treatment(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_relativity_treatment_scf = Quantity( type=str, shape=[], - description=''' + description=""" Relativity treatment in CASTEP convention - ''') + """, + ) class x_castep_section_scf_eigenvalues(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_scf_eigenvalues = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_castep_section_SCF_iteration_frame(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_frame_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASTEP_store_t_md_frame - ''') + """, + ) x_castep_SCF_frame_energy = Quantity( type=str, shape=[], - description=''' + description=""" energy_frame_iterations - ''') + """, + ) x_castep_SCF_frame_energy_gain = Quantity( type=str, shape=[], - description=''' + description=""" energy_frame_iterations_gain - ''') + """, + ) x_castep_frame_time_scf_iteration_wall_end = Quantity( type=str, shape=[], - description=''' + description=""" energy_frame_wall_end_time - ''') + """, + ) x_castep_frame_energy_free = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" energy_free - ''') + """, + ) x_castep_frame_energy_total_T0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" energy_free_corrected_for_finite_basis - ''') + """, + ) class x_castep_section_scf_k_points(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_scf_k_points = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_castep_section_scf_eigenvalues = SubSection( - sub_section=SectionProxy('x_castep_section_scf_eigenvalues'), - repeats=True) + sub_section=SectionProxy("x_castep_section_scf_eigenvalues"), repeats=True + ) class x_castep_section_spin_number(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_spin_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_castep_section_stress_tensor(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_stress_tensor = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing stress tensor components - ''') + """, + ) class x_castep_section_time(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_calculation_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" castep_calculation_time - ''') + """, + ) x_castep_finalisation_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" castep_finalisation_time - ''') + """, + ) x_castep_initialisation_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_castep_Initialisation_time - ''') + """, + ) class x_castep_section_raman_tensor(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_store_raman_tensor = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged Raman susceptibility tensor - ''') + """, + ) x_castep_raman_tensor = Quantity( type=np.dtype(np.float64), shape=[3, 3], # TODO verify unit, original parser was ampere / amu - unit='angstrom / unified_atomic_mass_unit', - description=''' + unit="angstrom / unified_atomic_mass_unit", + description=""" Ramen tensor - ''') + """, + ) class x_castep_section_scf_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_energy_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy Threshold - ''') + """, + ) x_castep_max_iter = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number of maximum iterations steps - ''') + """, + ) x_castep_smearing_kind = Quantity( type=str, shape=[], - description=''' + description=""" Smearing kind - ''') + """, + ) x_castep_smearing_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smearing width - ''') + """, + ) class x_castep_section_electronic_spectroscpy_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_theory_level = Quantity( type=str, shape=[], - description=''' + description=""" Electronic spectroscopy parameters theory level - ''') + """, + ) x_castep_spectroscopy_calculation = Quantity( type=str, shape=[], - description=''' + description=""" Electronic spectroscopy parameters calculation type - ''') + """, + ) x_castep_spec_max_iter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Max number of iterations - ''') + """, + ) x_castep_spec_max_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Max number of steps - ''') + """, + ) x_castep_spec_max_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Max number of bands - ''') + """, + ) x_castep_spec_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Tolerance (eV) - ''') + """, + ) class x_castep_section_md(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_md_energies = Quantity( type=str, shape=[], - description=''' + description=""" md_energy_components - ''') + """, + ) x_castep_md_temperature = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" md_temp(K) - ''') + """, + ) x_castep_md_pressure = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" md_pressure - ''') + """, + ) x_castep_md_cell_vectors = Quantity( type=str, shape=[], - description=''' + description=""" md_cell_vectors - ''') + """, + ) x_castep_md_cell_vectors_vel = Quantity( type=str, shape=[], - description=''' + description=""" md_cell_vectors_velocities - ''') + """, + ) x_castep_md_stress_tensor = Quantity( type=str, shape=[], - description=''' + description=""" md_stress_tensor - ''') + """, + ) x_castep_md_positions = Quantity( type=str, shape=[], - description=''' + description=""" md_positions - ''') + """, + ) x_castep_md_forces = Quantity( type=str, shape=[], - description=''' + description=""" md_forces - ''') + """, + ) x_castep_md_lab = Quantity( type=str, shape=[], - description=''' + description=""" md_lables - ''') + """, + ) x_castep_md_veloc = Quantity( type=str, shape=[], - description=''' + description=""" md_veloc - ''') + """, + ) class x_castep_section_ts(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_energy_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_total - ''') + """, + ) x_castep_ts_cell_vectors = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ts_cell_vectors - ''') + """, + ) x_castep_ts_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_positions - ''') + """, + ) x_castep_ts_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_forces - ''') + """, + ) x_castep_ts_lab = Quantity( type=str, shape=[], - description=''' + description=""" ts_lables - ''') + """, + ) class x_castep_section_ts_store(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_ts_store - ''') + """, + ) x_castep_ts_cell_vectors_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_cell_vectors - ''') + """, + ) x_castep_ts_positions_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_positions_store - ''') + """, + ) x_castep_ts_forces_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_forces_store - ''') + """, + ) class x_castep_section_ts_final_store(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_energy_final_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_ts - ''') + """, + ) x_castep_ts_forces_final_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_forces_final - ''') + """, + ) x_castep_ts_positions_final_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_energy_positions_final - ''') + """, + ) x_castep_ts_cell_vectors_final_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_cell_vectors_final - ''') + """, + ) class x_castep_section_ts_final(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_energy_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_final - ''') + """, + ) x_castep_ts_cell_vectors_final = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ts_cell_vectors - ''') + """, + ) x_castep_ts_positions_final = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_positions_final - ''') + """, + ) x_castep_ts_forces_final = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_force_finals - ''') + """, + ) class x_castep_section_ts_product(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_energy_product = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_prod - ''') + """, + ) x_castep_ts_forces_product = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_energy_forces_pro - ''') + """, + ) x_castep_ts_positions_product = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_energy_positions_pro - ''') + """, + ) x_castep_ts_cell_vectors_product = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ts_product_cell_vectors - ''') + """, + ) class x_castep_section_ts_product_store(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_energy_product_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_pro - ''') + """, + ) x_castep_ts_forces_pro_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_energy_forces_pro_store - ''') + """, + ) x_castep_ts_positions_pro_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_energy_positions_pro_store - ''') + """, + ) x_castep_ts_cell_vectors_pro_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_cell_vectors_pro - ''') + """, + ) class x_castep_section_ts_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_ts_method = Quantity( type=str, shape=[], - description=''' + description=""" ts_method - ''') + """, + ) x_castep_ts_protocol = Quantity( type=str, shape=[], - description=''' + description=""" ts_protocol - ''') + """, + ) x_castep_ts_number_qst = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_qst_iterations - ''') + """, + ) x_castep_ts_number_cg = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_number_of_cg_iterations - ''') + """, + ) x_castep_ts_force_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_force_tolerance (eV/A) - ''') + """, + ) x_castep_ts_displacement_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_displacement_tolerance (A) - ''') + """, + ) class x_castep_section_DFT_SEDC(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" correlation energy - ''') + """, + ) x_castep_de_atom = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dE/atom - ''') + """, + ) x_castep_dfmax_atom = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dfmax/atom - ''') + """, + ) x_castep_structure_energy_corr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" structure energy correction - ''') + """, + ) x_castep_PBC_image_inter_corr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" PBC image interaction corr. - ''') + """, + ) x_castep_total_energy_correction = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total energy correction - ''') + """, + ) x_castep_total_fmax_correction = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" correction F max ev/A - ''') + """, + ) x_castep_shell = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" shell - ''') + """, + ) x_castep_total_dispersion_corrected_free_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total_dispersion_corrected_free_energy - ''') + """, + ) x_castep_disp_corrected_energy_total_T0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dispersion corrected zero point - ''') + """, + ) class x_castep_section_van_der_Waals_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_castep_disp_method_name = Quantity( type=str, shape=[], - description=''' + description=""" Name type - ''') + """, + ) x_castep_Parameter_d = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method G06 - ''') + """, + ) x_castep_Parameter_LAMBDA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method OBS - ''') + """, + ) x_castep_Parameter_n = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method OBS - ''') + """, + ) x_castep_Parameter_s6 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method G06 - ''') + """, + ) x_castep_Parameter_sR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method TS - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_castep_atom_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Forces on the atoms as minus gradient of energy_total, including forces' unitary- transformation (rigid body) filtering and including constraints, if present. The derivatives with respect to displacements of the nuclei in the gradient are @@ -1596,651 +1769,713 @@ class Run(runschema.run.Run): non periodic), atom_forces_raw for the unfiltered counterpart. Furthermore, forces due to constraints like fixed atoms, distances, angles, dihedrals, and so on, are here included (see atom_forces_raw for the unfiltered counterpart). - ''') + """, + ) x_castep_basis_set_planewave_cutoff_iteration_0 = Quantity( type=str, shape=[], - description=''' + description=""" cutoff at iteration 0 of geometry optimisation - ''') + """, + ) x_castep_compiler = Quantity( type=str, shape=[], - description=''' + description=""" Compiler name - ''') + """, + ) x_castep_constants_reference = Quantity( type=str, shape=[], - description=''' + description=""" Fundamental constant data source - ''') + """, + ) x_castep_fft_library = Quantity( type=str, shape=[], - description=''' + description=""" fft library name - ''') + """, + ) x_castep_geom_converged = Quantity( type=str, shape=[], - description=''' + description=""" CASTEP_geom_converged - ''') + """, + ) x_castep_maths_library = Quantity( type=str, shape=[], - description=''' + description=""" Maths library name - ''') + """, + ) x_castep_program_compilation_date = Quantity( type=str, shape=[], - description=''' + description=""" Compilation date (string) - ''') + """, + ) x_castep_program_compilation_time = Quantity( type=str, shape=[], - description=''' + description=""" Compilation time (string) - ''') + """, + ) x_castep_program_execution_date = Quantity( type=str, shape=[], - description=''' + description=""" Run execution date (string) - ''') + """, + ) x_castep_program_execution_time = Quantity( type=str, shape=[], - description=''' + description=""" Run execution start time (string) - ''') + """, + ) x_castep_crystal_point_group = Quantity( type=str, shape=[], - description=''' + description=""" Point group of the crystal (Schoenflies notation) - ''') + """, + ) x_castep_space_group = Quantity( type=str, shape=[], - description=''' + description=""" Point space of the crystal - ''') + """, + ) x_castep_ts_path = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_path_number - ''') + """, + ) x_castep_ts_path_ts_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_path_final - ''') + """, + ) x_castep_ts_path_product = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_path_pro - ''') + """, + ) x_castep_store_atom_forces_band = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_castep_elec_methd = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing electronic structure method - ''') + """, + ) x_castep_section_vibrational_frequencies = SubSection( - sub_section=SectionProxy('x_castep_section_vibrational_frequencies'), - repeats=True) + sub_section=SectionProxy("x_castep_section_vibrational_frequencies"), + repeats=True, + ) x_castep_section_band_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_band_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_band_parameters"), repeats=True + ) x_castep_section_core_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_core_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_core_parameters"), repeats=True + ) x_castep_section_collect_scf_eigenvalues = SubSection( - sub_section=SectionProxy('x_castep_section_collect_scf_eigenvalues'), - repeats=True) + sub_section=SectionProxy("x_castep_section_collect_scf_eigenvalues"), + repeats=True, + ) x_castep_section_population_analysis = SubSection( - sub_section=SectionProxy('x_castep_section_population_analysis'), - repeats=True) + sub_section=SectionProxy("x_castep_section_population_analysis"), repeats=True + ) x_castep_section_geom_optimisation_method = SubSection( - sub_section=SectionProxy('x_castep_section_geom_optimisation_method'), - repeats=True) + sub_section=SectionProxy("x_castep_section_geom_optimisation_method"), + repeats=True, + ) x_castep_section_optics_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_optics_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_optics_parameters"), repeats=True + ) x_castep_section_tddft_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_tddft_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_tddft_parameters"), repeats=True + ) x_castep_section_phonons = SubSection( - sub_section=SectionProxy('x_castep_section_phonons'), - repeats=True) + sub_section=SectionProxy("x_castep_section_phonons"), repeats=True + ) x_castep_section_density_mixing_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_density_mixing_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_density_mixing_parameters"), + repeats=True, + ) x_castep_section_population_analysis_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_population_analysis_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_population_analysis_parameters"), + repeats=True, + ) x_castep_section_SCF_iteration_frame = SubSection( - sub_section=SectionProxy('x_castep_section_SCF_iteration_frame'), - repeats=True) + sub_section=SectionProxy("x_castep_section_SCF_iteration_frame"), repeats=True + ) x_castep_section_time = SubSection( - sub_section=SectionProxy('x_castep_section_time'), - repeats=True) + sub_section=SectionProxy("x_castep_section_time"), repeats=True + ) x_castep_section_raman_tensor = SubSection( - sub_section=SectionProxy('x_castep_section_raman_tensor'), - repeats=True) + sub_section=SectionProxy("x_castep_section_raman_tensor"), repeats=True + ) x_castep_section_scf_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_scf_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_scf_parameters"), repeats=True + ) x_castep_section_electronic_spectroscpy_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_electronic_spectroscpy_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_electronic_spectroscpy_parameters"), + repeats=True, + ) x_castep_section_md = SubSection( - sub_section=SectionProxy('x_castep_section_md'), - repeats=True) + sub_section=SectionProxy("x_castep_section_md"), repeats=True + ) x_castep_section_ts = SubSection( - sub_section=SectionProxy('x_castep_section_ts'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts"), repeats=True + ) x_castep_section_ts_store = SubSection( - sub_section=SectionProxy('x_castep_section_ts_store'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_store"), repeats=True + ) x_castep_section_ts_final_store = SubSection( - sub_section=SectionProxy('x_castep_section_ts_final_store'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_final_store"), repeats=True + ) x_castep_section_ts_final = SubSection( - sub_section=SectionProxy('x_castep_section_ts_final'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_final"), repeats=True + ) x_castep_section_ts_product = SubSection( - sub_section=SectionProxy('x_castep_section_ts_product'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_product"), repeats=True + ) x_castep_section_ts_product_store = SubSection( - sub_section=SectionProxy('x_castep_section_ts_product_store'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_product_store"), repeats=True + ) x_castep_section_ts_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_ts_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_parameters"), repeats=True + ) x_castep_section_van_der_Waals_parameters = SubSection( - sub_section=SectionProxy('x_castep_section_van_der_Waals_parameters'), - repeats=True) + sub_section=SectionProxy("x_castep_section_van_der_Waals_parameters"), + repeats=True, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_castep_net_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Net charge of system - ''') + """, + ) x_castep_number_of_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of bands - ''') + """, + ) x_castep_number_of_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number of electrons - ''') + """, + ) x_castep_atom_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Storing atomic positions in fractional coordinates - ''') + """, + ) x_castep_cell_volume = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASTEP_cell_volume - ''') + """, + ) x_castep_optimised_atom_labels = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Temporary storing atomic positions - ''') + """, + ) x_castep_optimised_atom_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Storing atomic optimised positions in fractional coordinates - ''') + """, + ) x_castep_velocities_cell_vector = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" cell vector velocities - ''') + """, + ) x_castep_store_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atom labels - ''') + """, + ) x_castep_store_atom_number = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atom labels - ''') + """, + ) x_castep_store_atom_positions = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_castep_store_atom_ionic_velocities = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_castep_atom_ionic_velocities = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Temporary storing atomic positions - ''') + """, + ) x_castep_store_optimised_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_castep_store_optimised_atom_positions = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_castep_section_tddft = SubSection( - sub_section=SectionProxy('x_castep_section_tddft'), - repeats=True) + sub_section=SectionProxy("x_castep_section_tddft"), repeats=True + ) x_castep_section_atom_ionic_velocities = SubSection( - sub_section=SectionProxy('x_castep_section_atom_ionic_velocities'), - repeats=True) + sub_section=SectionProxy("x_castep_section_atom_ionic_velocities"), repeats=True + ) x_castep_section_atom_positions_optim = SubSection( - sub_section=SectionProxy('x_castep_section_atom_positions_optim'), - repeats=True) + sub_section=SectionProxy("x_castep_section_atom_positions_optim"), repeats=True + ) x_castep_section_atom_positions = SubSection( - sub_section=SectionProxy('x_castep_section_atom_positions'), - repeats=True) + sub_section=SectionProxy("x_castep_section_atom_positions"), repeats=True + ) x_castep_section_cell_optim = SubSection( - sub_section=SectionProxy('x_castep_section_cell_optim'), - repeats=True) + sub_section=SectionProxy("x_castep_section_cell_optim"), repeats=True + ) x_castep_section_cell = SubSection( - sub_section=SectionProxy('x_castep_section_cell'), - repeats=True) + sub_section=SectionProxy("x_castep_section_cell"), repeats=True + ) class BasisSet(runschema.method.BasisSet): - m_def = Section(validate=False, extends_base_section=True) x_castep_size_std_grid = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" size of standard grid (eV) - ''') + """, + ) x_castep_size_fine_grid = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" sise of fine grid (1/A) - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_castep_enthalpy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASTEP_Enthalpy - ''') + """, + ) x_castep_frequency = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASTEP_frequency (cm-1) - ''') + """, + ) x_castep_improved_energy_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" md_forces - ''') + """, + ) x_castep_frame_time_0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASTEP_store_t_md_frame - ''') + """, + ) x_castep_geom_iteration_index = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Index for number of iterations in geometry optimisation - ''') + """, + ) x_castep_store_atom_forces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_castep_initial_scf_iteration_wall_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Initial SCF iteration wall time - ''') + """, + ) x_castep_total_dispersion_corrected_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total electronic energy that includes dispersion energy computed with Disp_method_name not corrected for finite basis-set - ''') + """, + ) x_castep_total_energy_corrected_for_finite_basis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASTEP_total_energy_corrected_for_finite_basis - ''') + """, + ) x_castep_total_energy_corrected_for_finite_basis_store = Quantity( type=str, shape=[], - description=''' + description=""" CASTEP_total_energy_corrected_for_finite_basis_store - ''') + """, + ) energy_total_scf_iteration_list = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" Total electronic energy calculated with XC_method_scf during the scf iterations is stored in a list - ''') + """, + ) x_castep_section_ts_scf = SubSection( - sub_section=SectionProxy('x_castep_section_ts_scf'), - repeats=True) + sub_section=SectionProxy("x_castep_section_ts_scf"), repeats=True + ) x_castep_section_scf_k_points = SubSection( - sub_section=SectionProxy('x_castep_section_scf_k_points'), - repeats=True) + sub_section=SectionProxy("x_castep_section_scf_k_points"), repeats=True + ) x_castep_section_spin_number = SubSection( - sub_section=SectionProxy('x_castep_section_spin_number'), - repeats=True) + sub_section=SectionProxy("x_castep_section_spin_number"), repeats=True + ) x_castep_section_stress_tensor = SubSection( - sub_section=SectionProxy('x_castep_section_stress_tensor'), - repeats=True) + sub_section=SectionProxy("x_castep_section_stress_tensor"), repeats=True + ) x_castep_section_DFT_SEDC = SubSection( - sub_section=SectionProxy('x_castep_section_DFT_SEDC'), - repeats=True) + sub_section=SectionProxy("x_castep_section_DFT_SEDC"), repeats=True + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_castep_functional_and_weight = Quantity( type=str, shape=[], - description=''' + description=""" XC functional+weight in CASTEP convention - ''') + """, + ) x_castep_section_functional_definition = SubSection( - sub_section=SectionProxy('x_castep_section_functional_definition'), - repeats=True) + sub_section=SectionProxy("x_castep_section_functional_definition"), repeats=True + ) x_castep_section_functionals = SubSection( - sub_section=SectionProxy('x_castep_section_functionals'), - repeats=True) + sub_section=SectionProxy("x_castep_section_functionals"), repeats=True + ) x_castep_section_relativity_treatment = SubSection( - sub_section=SectionProxy('x_castep_section_relativity_treatment'), - repeats=True) + sub_section=SectionProxy("x_castep_section_relativity_treatment"), repeats=True + ) class MolecularDynamicsMethod(simulationworkflowschema.MolecularDynamicsMethod): - m_def = Section(validate=False, extends_base_section=True) x_castep_thermostat_target_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" thermostat_target_temperature(K) - ''') + """, + ) x_castep_barostat_type = Quantity( type=str, shape=[], - description=''' + description=""" barostat_type - ''') + """, + ) x_castep_thermostat_type = Quantity( type=str, shape=[], - description=''' + description=""" thermostat_type - ''') + """, + ) x_castep_thermostat_tau = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" thermostat_type - ''') + """, + ) x_castep_barostat_tau = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" barostat_tau - ''') + """, + ) x_castep_integrator_dt = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" MD_time_step (ps) - ''') + """, + ) x_castep_number_of_steps_requested = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" MD_time_step_number - ''') + """, + ) x_castep_frame_pressure = Quantity( type=str, shape=[], - description=''' + description=""" MD_pressure - ''') + """, + ) x_castep_frame_energy_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" MD_scf_energy tolerance (eV) - ''') + """, + ) x_castep_frame_eigen_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" MD_scf_eigen tolerance (eV) - ''') + """, + ) class GeometryOptimizationMethod(simulationworkflowschema.GeometryOptimizationMethod): - m_def = Section(validate=False, extends_base_section=True) x_castep_geometry_stress_com_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" tolerance for stress components in geometry optimisation (GPa) - ''') + """, + ) x_castep_max_number_of_steps = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number_of iterations geom_optim - ''') + """, + ) class BandStructure(runschema.calculation.BandStructure): - m_def = Section(validate=False, extends_base_section=True) x_castep_k_path = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_castep_store_k_path = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_castep_store_k_label = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_castep_section_eigenvalues_1 = SubSection( - sub_section=SectionProxy('x_castep_section_eigenvalues_1'), - repeats=True) + sub_section=SectionProxy("x_castep_section_eigenvalues_1"), repeats=True + ) x_castep_section_eigenvalues = SubSection( - sub_section=SectionProxy('x_castep_section_eigenvalues'), - repeats=True) + sub_section=SectionProxy("x_castep_section_eigenvalues"), repeats=True + ) x_castep_section_k_band = SubSection( - sub_section=SectionProxy('x_castep_section_k_band'), - repeats=True) + sub_section=SectionProxy("x_castep_section_k_band"), repeats=True + ) x_castep_section_k_points_1 = SubSection( - sub_section=SectionProxy('x_castep_section_k_points_1'), - repeats=True) + sub_section=SectionProxy("x_castep_section_k_points_1"), repeats=True + ) x_castep_section_k_points = SubSection( - sub_section=SectionProxy('x_castep_section_k_points'), - repeats=True) + sub_section=SectionProxy("x_castep_section_k_points"), repeats=True + ) diff --git a/electronicparsers/charmm/metainfo/charmm.py b/electronicparsers/charmm/metainfo/charmm.py index a32b4a82..4469f81b 100644 --- a/electronicparsers/charmm/metainfo/charmm.py +++ b/electronicparsers/charmm/metainfo/charmm.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -33,1672 +40,1892 @@ class x_charmm_mdin_input_output_files(MCategory): - ''' + """ Parameters of mdin belonging to x_charmm_section_control_parameters. - ''' + """ m_def = Category() class x_charmm_mdin_control_parameters(MCategory): - ''' + """ Parameters of mdin belonging to x_charmm_section_control_parameters. - ''' + """ m_def = Category() class x_charmm_mdin_method(MCategory): - ''' + """ Parameters of mdin belonging to section method. - ''' + """ m_def = Category() class x_charmm_mdout_single_configuration_calculation(MCategory): - ''' + """ Parameters of mdout belonging to section_single_configuration_calculation. - ''' + """ m_def = Category() class x_charmm_mdout_method(MCategory): - ''' + """ Parameters of mdin belonging to section method. - ''' + """ m_def = Category() class x_charmm_mdout_run(MCategory): - ''' + """ Parameters of mdin belonging to settings run. - ''' + """ m_def = Category() class x_charmm_mdin_run(MCategory): - ''' + """ Parameters of mdin belonging to settings run. - ''' + """ m_def = Category() class x_charmm_section_input_output_files(MSection): - ''' + """ Section to store input and output file names - ''' + """ m_def = Section(validate=False) class x_charmm_section_control_parameters(MSection): - ''' + """ Section to store the input and output control parameters - ''' + """ m_def = Section(validate=False) x_charmm_inout_file_structure = Quantity( type=str, shape=[], - description=''' + description=""" charmm input topology file. - ''') + """, + ) x_charmm_inout_file_trajectory = Quantity( type=str, shape=[], - description=''' + description=""" charmm output trajectory file. - ''') + """, + ) x_charmm_inout_file_traj_coord = Quantity( type=str, shape=[], - description=''' + description=""" charmm output trajectory file. - ''') + """, + ) x_charmm_inout_file_traj_vel = Quantity( type=str, shape=[], - description=''' + description=""" charmm output file for velocities in the trajectory. - ''') + """, + ) x_charmm_inout_file_traj_force = Quantity( type=str, shape=[], - description=''' + description=""" charmm output file for forces in the trajectory. - ''') + """, + ) x_charmm_inout_file_output_coord = Quantity( type=str, shape=[], - description=''' + description=""" charmm output coordinates file. - ''') + """, + ) x_charmm_inout_file_out_coor_str = Quantity( type=str, shape=[], - description=''' + description=""" charmm output coordinates on log. - ''') + """, + ) x_charmm_inout_file_output_vel = Quantity( type=str, shape=[], - description=''' + description=""" charmm output velocities file. - ''') + """, + ) x_charmm_inout_file_output_force = Quantity( type=str, shape=[], - description=''' + description=""" charmm output forces file. - ''') + """, + ) x_charmm_inout_file_input_coord = Quantity( type=str, shape=[], - description=''' + description=""" charmm input coordinates file. - ''') + """, + ) x_charmm_inout_file_in_coor_str = Quantity( type=str, shape=[], - description=''' + description=""" charmm input coordinate on log file. - ''') + """, + ) x_charmm_inout_file_input_vel = Quantity( type=str, shape=[], - description=''' + description=""" charmm input velocities file. - ''') + """, + ) x_charmm_inout_file_restart_coord = Quantity( type=str, shape=[], - description=''' + description=""" charmm restart coordinates file. - ''') + """, + ) x_charmm_inout_file_restart_vel = Quantity( type=str, shape=[], - description=''' + description=""" charmm restart velocities file. - ''') + """, + ) x_charmm_inout_file_rtf_file = Quantity( type=str, shape=[], - description=''' + description=""" charmm RTF residue file. - ''') + """, + ) x_charmm_inout_file_prm_file = Quantity( type=str, shape=[], - description=''' + description=""" charmm PRM parameter file. - ''') + """, + ) x_charmm_inout_file_cor_file = Quantity( type=str, shape=[], - description=''' + description=""" charmm CRD coordinates file. - ''') + """, + ) x_charmm_inout_file_stream = Quantity( type=str, shape=[], - description=''' + description=""" charmm stream input/output. - ''') + """, + ) x_charmm_inout_file_rtf_str = Quantity( type=str, shape=[], - description=''' + description=""" charmm stream RTF input. - ''') + """, + ) x_charmm_inout_file_par_str = Quantity( type=str, shape=[], - description=''' + description=""" charmm stream parameter input. - ''') + """, + ) x_charmm_inout_file_output_log = Quantity( type=str, shape=[], - description=''' + description=""" charmm MD output log file. - ''') + """, + ) x_charmm_inout_control_gaussian_option_is = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_crystal = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_crystal_type = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_a_length = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_b_length = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_c_length = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_alpha = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_beta = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_gamma = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_mini = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nstep = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_inbfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_step = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_prtmin = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tolfun = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tolgrd = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tolitr = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tolstp = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tfreq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pcut = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ihbfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ncgcyc = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nprint = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nonbond_option_flags = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_cutnb = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ctexnb = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ctonnb = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ctofnb = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_cgonnb = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_cgofnb = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_wmin = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_cdie = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_switch = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_vswitch = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_atoms = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_wrnmxd = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_e14fac = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_eps = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nbxmod = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bond_cutoff_distance = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bond_cutoff_angle = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bond_switching_on_distance = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bond_switching_off_distance = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bond_switching_on_angle = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bond_switching_off_angle = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_exclusions_due_to_distance_cutoff = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_exclusions_due_to_angle_cutoff = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_acceptor_antecedents = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_exclusions_due_to_duplications = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_deletions_due_to_best_option = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_deletions_due_to_duplications = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_deletions_due_to_fixed_atoms = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hbond_deletions_due_to_exclusion = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hydrogen_bonds_present = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_minimization_exit_status = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_dyna = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_akmastp = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_firstt = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iseed = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iprfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ihtfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ieqfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iunrea = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iunwri = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iunos = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iuncrd = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iunvel = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iunxyz = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_kunit = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nsavc = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nsavv = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nsavx = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iscale = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iscvel = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iasors = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_iasvel = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ichecw = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ntrfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ilbfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_imgfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_isvfrq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_ncycle = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_nsnos = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_teminc = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tstruc = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_finalt = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_twindh = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_twindl = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_time_step = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_random_num_gen_seeds = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_number_of_degrees_of_freedom = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_gaussian_option = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_velocities_assigned_at_temperature = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_seeds = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_shake_tolerance = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_strt = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_rest = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_qref = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tref = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_hoover = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_reft = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_tmass = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pcons = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pmass = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_number_of_steps = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_steps_per_cycle = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_initial_temperature = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_dielectric = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_excluded_species_or_groups = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_1_4_electrostatics_scale = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_velocity_rescale_temp = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_velocity_reassignment_freq = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_velocity_reassignment_temp = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_dynamics = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_temperature = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_integrator = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_damping_coefficient_unit = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_temperature_coupling = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_coupling_temperature = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_target_pressure = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_oscillation_period = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_decay_time = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_langevin_piston_temperature = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pressure_control = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_particle_mesh_ewald = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pme_tolerance = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pme_ewald_coefficient = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pme_interpolation_order = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pme_grid_dimensions = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_pme_maximum_grid_spacing = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_minimization = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_verlet_integrator = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_random_number_seed = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_structure_file = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_parameter_file = Quantity( type=str, shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_number_of_parameters = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_inout_control_parameters = Quantity( type=str, - shape=['x_charmm_inout_control_number_of_parameters'], - description=''' + shape=["x_charmm_inout_control_number_of_parameters"], + description=""" charmm running environment and control parameters. - ''') + """, + ) x_charmm_section_input_output_files = SubSection( - sub_section=SectionProxy('x_charmm_section_input_output_files'), - repeats=True) + sub_section=SectionProxy("x_charmm_section_input_output_files"), repeats=True + ) class x_charmm_section_atom_to_atom_type_ref(MSection): - ''' + """ Section to store atom label to atom type definition list - ''' + """ m_def = Section(validate=False) x_charmm_atom_to_atom_type_ref = Quantity( type=np.dtype(np.int64), - shape=['number_of_atoms_per_type'], - description=''' + shape=["number_of_atoms_per_type"], + description=""" Reference to the atoms of each atom type. - ''') + """, + ) class x_charmm_section_single_configuration_calculation(MSection): - ''' + """ section for gathering values for MD steps - ''' + """ m_def = Section(validate=False) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_charmm_atom_positions_image_index = Quantity( type=np.dtype(np.int32), - shape=['number_of_atoms', 3], - unit='dimensionless', - description=''' + shape=["number_of_atoms", 3], + unit="dimensionless", + description=""" PBC image flag index. - ''') + """, + ) x_charmm_atom_positions_scaled = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - unit='dimensionless', - description=''' + shape=["number_of_atoms", 3], + unit="dimensionless", + description=""" Position of the atoms in a scaled format [0, 1]. - ''') + """, + ) x_charmm_atom_positions_wrapped = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - unit='meter', - description=''' + shape=["number_of_atoms", 3], + unit="meter", + description=""" Position of the atoms wrapped back to the periodic box. - ''') + """, + ) x_charmm_lattice_lengths = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Lattice dimensions in a vector. Vector includes [a, b, c] lengths. - ''',) + """, + ) x_charmm_lattice_angles = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Angles of lattice vectors. Vector includes [alpha, beta, gamma] in degrees. - ''',) + """, + ) x_charmm_dummy = Quantity( type=str, shape=[], - description=''' + description=""" dummy - ''') + """, + ) x_charmm_mdin_finline = Quantity( type=str, shape=[], - description=''' + description=""" finline in mdin - ''') + """, + ) x_charmm_traj_timestep_store = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_traj_number_of_atoms_store = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_traj_box_bound_store = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_traj_box_bounds_store = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_traj_variables_store = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_traj_atoms_store = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) class MolecularDynamics(simulationworkflowschema.MolecularDynamics): - m_def = Section(validate=False, extends_base_section=True) x_charmm_barostat_target_pressure = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" MD barostat target pressure. - ''',) + """, + ) x_charmm_barostat_tau = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" MD barostat relaxation time. - ''',) + """, + ) x_charmm_barostat_type = Quantity( type=str, shape=[], - description=''' + description=""" MD barostat type, valid values are defined in the barostat_type wiki page. - ''',) + """, + ) x_charmm_integrator_dt = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" MD integration time step. - ''',) + """, + ) x_charmm_integrator_type = Quantity( type=str, shape=[], - description=''' + description=""" MD integrator type, valid values are defined in the integrator_type wiki page. - ''',) + """, + ) x_charmm_periodicity_type = Quantity( type=str, shape=[], - description=''' + description=""" Periodic boundary condition type in the sampling (non-PBC or PBC). - ''',) + """, + ) x_charmm_langevin_gamma = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" Langevin thermostat damping factor. - ''',) + """, + ) x_charmm_number_of_steps_requested = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number of requested MD integration time steps. - ''',) + """, + ) x_charmm_thermostat_level = Quantity( type=str, shape=[], - description=''' + description=""" MD thermostat level (see wiki: single, multiple, regional). - ''',) + """, + ) x_charmm_thermostat_target_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" MD thermostat target temperature. - ''',) + """, + ) x_charmm_thermostat_tau = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" MD thermostat relaxation time. - ''',) + """, + ) x_charmm_thermostat_type = Quantity( type=str, shape=[], - description=''' + description=""" MD thermostat type, valid values are defined in the thermostat_type wiki page. - ''',) + """, + ) class AtomParameters(runschema.method.AtomParameters): - m_def = Section(validate=False, extends_base_section=True) x_charmm_atom_name = Quantity( type=str, shape=[], - description=''' + description=""" Atom name of an atom in topology definition. - ''') + """, + ) x_charmm_atom_type = Quantity( type=str, shape=[], - description=''' + description=""" Atom type of an atom in topology definition. - ''') + """, + ) x_charmm_atom_element = Quantity( type=str, shape=[], - description=''' + description=""" Atom type of an atom in topology definition. - ''') + """, + ) x_charmm_atom_type_element = Quantity( type=str, shape=[], - description=''' + description=""" Element symbol of an atom type. - ''') + """, + ) x_charmm_atom_type_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" van der Waals radius of an atom type. - ''') + """, + ) number_of_atoms_per_type = Quantity( type=int, shape=[], - description=''' + description=""" Number of atoms involved in this type. - ''') + """, + ) class Interaction(runschema.method.Interaction): - m_def = Section(validate=False, extends_base_section=True) x_charmm_interaction_atom_to_atom_type_ref = Quantity( type=runschema.method.AtomParameters, - shape=['number_of_atoms_per_interaction'], - description=''' + shape=["number_of_atoms_per_interaction"], + description=""" Reference to the atom type of each interaction atoms. - ''') + """, + ) x_charmm_number_of_defined_pair_interactions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of defined pair interactions (L-J pairs). - ''') + """, + ) x_charmm_pair_interaction_atom_type_ref = Quantity( type=runschema.method.AtomParameters, - shape=['x_charmm_number_of_defined_pair_interactions', 'number_of_atoms_per_interaction'], - description=''' + shape=[ + "x_charmm_number_of_defined_pair_interactions", + "number_of_atoms_per_interaction", + ], + description=""" Reference to the atom type for pair interactions. - ''') + """, + ) x_charmm_pair_interaction_parameters = Quantity( type=np.dtype(np.float64), - shape=['x_charmm_number_of_defined_pair_interactions', 2], - description=''' + shape=["x_charmm_number_of_defined_pair_interactions", 2], + description=""" Pair interactions parameters. - ''') + """, + ) x_charmm_molecule_interaction_atom_to_atom_type_ref = Quantity( type=runschema.method.AtomParameters, - shape=['number_of_atoms_per_interaction'], - description=''' + shape=["number_of_atoms_per_interaction"], + description=""" Reference to the atom type of each molecule interaction atoms. - ''') + """, + ) x_charmm_number_of_defined_molecule_pair_interactions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of defined pair interactions within a molecule (L-J pairs). - ''') + """, + ) x_charmm_pair_molecule_interaction_parameters = Quantity( type=np.dtype(np.float64), - shape=['number_of_defined_molecule_pair_interactions', 2], - description=''' + shape=["number_of_defined_molecule_pair_interactions", 2], + description=""" Molecule pair interactions parameters. - ''') + """, + ) x_charmm_pair_molecule_interaction_to_atom_type_ref = Quantity( type=runschema.method.AtomParameters, - shape=['x_charmm_number_of_defined_pair_interactions', 'number_of_atoms_per_interaction'], - description=''' + shape=[ + "x_charmm_number_of_defined_pair_interactions", + "number_of_atoms_per_interaction", + ], + description=""" Reference to the atom type for pair interactions within a molecule. - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_charmm_program_version_date = Quantity( type=str, shape=[], - description=''' + description=""" Program version date. - ''') + """, + ) x_charmm_parallel_task_nr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Program task no. - ''') + """, + ) x_charmm_build_osarch = Quantity( type=str, shape=[], - description=''' + description=""" Program Build OS/ARCH - ''') + """, + ) x_charmm_output_created_by_user = Quantity( type=str, shape=[], - description=''' + description=""" Output file creator - ''') + """, + ) x_charmm_most_severe_warning_level = Quantity( type=str, shape=[], - description=''' + description=""" Highest charmm warning level in the run. - ''') + """, + ) x_charmm_program_build_date = Quantity( type=str, shape=[], - description=''' + description=""" Program Build date - ''') + """, + ) x_charmm_program_citation = Quantity( type=str, shape=[], - description=''' + description=""" Program citations - ''') + """, + ) x_charmm_program_copyright = Quantity( type=str, shape=[], - description=''' + description=""" Program copyright - ''') + """, + ) x_charmm_number_of_tasks = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number of tasks in parallel program (MPI). - ''') + """, + ) x_charmm_program_module_version = Quantity( type=str, shape=[], - description=''' + description=""" charmm program module version. - ''') + """, + ) x_charmm_program_license = Quantity( type=str, shape=[], - description=''' + description=""" charmm program license. - ''') + """, + ) x_charmm_xlo_xhi = Quantity( type=str, shape=[], - description=''' + description=""" test - ''') + """, + ) x_charmm_data_file_store = Quantity( type=str, shape=[], - description=''' + description=""" Filename of data file - ''') + """, + ) x_charmm_program_working_path = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_program_execution_host = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_program_execution_path = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_program_module = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_program_execution_date = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_program_execution_time = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_mdin_header = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_mdin_wt = Quantity( type=str, shape=[], - description=''' + description=""" tmp - ''') + """, + ) x_charmm_section_control_parameters = SubSection( - sub_section=SectionProxy('x_charmm_section_control_parameters'), - repeats=True) + sub_section=SectionProxy("x_charmm_section_control_parameters"), repeats=True + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_charmm_section_single_configuration_calculation = SubSection( - sub_section=SectionProxy('x_charmm_section_single_configuration_calculation'), - repeats=True) + sub_section=SectionProxy("x_charmm_section_single_configuration_calculation"), + repeats=True, + ) diff --git a/electronicparsers/charmm/parser.py b/electronicparsers/charmm/parser.py index 4ed58322..900d5396 100644 --- a/electronicparsers/charmm/parser.py +++ b/electronicparsers/charmm/parser.py @@ -26,27 +26,36 @@ class CharmmParser: def __init__(self): - re_f = r'\-*\d+\.\d+E*e*\-*\+*\d*' + re_f = r"\-*\d+\.\d+E*e*\-*\+*\d*" def get_positions(val): res = dict(atom_labels=[], atom_positions=[]) try: - labels, positions = zip(*re.findall(rf'([A-Z])\w* +({re_f} +{re_f} +{re_f}) +\w', val)) - res['atom_labels'] = labels - res['atom_positions'] = np.array([v.split() for v in positions], dtype=np.dtype(np.float64)) * ureg.angstrom + labels, positions = zip( + *re.findall(rf"([A-Z])\w* +({re_f} +{re_f} +{re_f}) +\w", val) + ) + res["atom_labels"] = labels + res["atom_positions"] = ( + np.array([v.split() for v in positions], dtype=np.dtype(np.float64)) + * ureg.angstrom + ) except Exception: pass return res self._parser = BasicParser( - 'Charmm', - units_mapping=dict(length=ureg.angstrom, energy=ureg.J * 4184.0 / 6.02214076e+23), - auxilliary_files=r'\/*([a-z][\w\-]+.crd)', - program_version=r'\(CHARMM\) \- (.+Version[\w \,]+?\d\d\d\d)', + "Charmm", + units_mapping=dict( + length=ureg.angstrom, energy=ureg.J * 4184.0 / 6.02214076e23 + ), + auxilliary_files=r"\/*([a-z][\w\-]+.crd)", + program_version=r"\(CHARMM\) \- (.+Version[\w \,]+?\d\d\d\d)", atom_labels_atom_positions=( - rf'(\*.*\s*\*.*\s*\*.*\s*\d+\n +\d+ +\d+ +\w+ +[A-Z]\w* +{re_f} +{re_f} +{re_f}[\s\S]+)(?:\>|\Z|\n *\n)', - get_positions), - energy_total=rf'\n *[A-Z]+\> +\d* +({re_f})') + rf"(\*.*\s*\*.*\s*\*.*\s*\d+\n +\d+ +\d+ +\w+ +[A-Z]\w* +{re_f} +{re_f} +{re_f}[\s\S]+)(?:\>|\Z|\n *\n)", + get_positions, + ), + energy_total=rf"\n *[A-Z]+\> +\d* +({re_f})", + ) def parse(self, mainfile, archive, logger=None): self._parser.parse(mainfile, archive, logger=None) diff --git a/electronicparsers/cp2k/metainfo/cp2k.py b/electronicparsers/cp2k/metainfo/cp2k.py index f9034fe5..d9f97338 100644 --- a/electronicparsers/cp2k/metainfo/cp2k.py +++ b/electronicparsers/cp2k/metainfo/cp2k.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import @@ -33,3669 +40,4261 @@ class x_cp2k_section_input_ATOM_AE_BASIS_BASIS(MSection): - ''' + """ Section used to specify a general basis set for QM calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_AE_BASIS_BASIS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" CP2K Basis Set Standard Format - ''') + """, + ) class x_cp2k_section_input_ATOM_AE_BASIS(MSection): - ''' + """ Section of basis set information for all-electron calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_AE_BASIS_BASIS_SET_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the basis set file, may include a path - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_BASIS_SET = Quantity( type=str, shape=[], - description=''' + description=""" The contracted Gaussian basis set - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_BASIS_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Basis set type - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_D_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for d functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_D_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for d functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_EPS_EIGENVALUE = Quantity( type=str, shape=[], - description=''' + description=""" Cutoff of overlap matrix eigenvalues included into basis - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_F_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for f functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_F_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for f functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_GEO_START_VALUE = Quantity( type=str, shape=[], - description=''' + description=""" Geometrical basis: starting value a in a*C^k - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_GEOMETRICAL_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Geometrical basis: factor C in a*C^k - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_GRID_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of radial grid points - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_NUM_GTO = Quantity( type=str, shape=[], - description=''' + description=""" Number of Gaussian type functions for s, p, d, ... - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_NUM_SLATER = Quantity( type=str, shape=[], - description=''' + description=""" Number of Slater type functions for s, p, d, ... - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_P_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for p functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_P_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for p functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_QUADRATURE = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to construct the atomic radial grids - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_S_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for s functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_S_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for s functions - ''') + """, + ) x_cp2k_input_ATOM_AE_BASIS_START_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" Starting index for Geometrical Basis sets - ''') + """, + ) x_cp2k_section_input_ATOM_AE_BASIS_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_AE_BASIS_BASIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_AE_BASIS_BASIS"), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_EXTERNAL_VXC(MSection): - ''' + """ Section used to specify exernal VXC Potentials. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_EXTERNAL_VXC_FILE_VXC = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename containing the external vxc - ''') + """, + ) x_cp2k_input_ATOM_METHOD_EXTERNAL_VXC_GRID_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance in the equivalence of read-grid in ZMP method - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_ADIABATIC_RESCALING(MSection): - ''' + """ Parameters for self interation corrected hybrid functionals - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_ADIABATIC_RESCALING_FUNCTIONAL_MODEL = Quantity( type=str, shape=[], - description=''' + description=""" Which model for the coupling constant integration should be used. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_ADIABATIC_RESCALING_FUNCTIONAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which Hybrid functional should be used. (Has to be consistent with the definitions in XC and HF). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_ADIABATIC_RESCALING_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" The point to be used along the adiabatic curve (0 < λ < 1) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_ADIABATIC_RESCALING_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Long-range parameter - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_HF_INFO(MSection): - ''' + """ Controls the printing basic info about hf method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_HF_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_HF_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_HF_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_HF_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_HF_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_HFX_RI(MSection): - ''' + """ All parameters needed in a HFX RI calculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_HFX_RI_EPS_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of iterative RI fit - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_HFX_RI_EPS_SCREENING = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of geminal integral evaluation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_HFX_RI_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iteration in RI fit - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL(MSection): - ''' + """ Sets up interaction potential if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines cutoff radius for the truncated 1/r potential. Only valid when doing truncated calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for short/longrange interaction - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, longrange or shortrange). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a coulomb potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a gaussian potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a longrange potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL_T_C_G_DATA = Quantity( type=str, shape=[], - description=''' + description=""" Location of the file t_c_g.dat that contains the data for the evaluation of the truncated gamma function - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_LOAD_BALANCE(MSection): - ''' + """ Parameters influencing the load balancing of the HF - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_LOAD_BALANCE_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for the atomic quartet loops. A proper choice can speedup the calculation. The default (-1) is automatic. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_LOAD_BALANCE_NBINS = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins per process used to group atom quartets. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_LOAD_BALANCE_RANDOMIZE = Quantity( type=str, shape=[], - description=''' + description=""" This flag controls the randomization of the bin assignment to processes. For highly ordered input structures with a bad load balance, setting this flag to TRUE might improve. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_MEMORY(MSection): - ''' + """ Sets up memory parameters for the storage of the ERI's if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_MEMORY_EPS_STORAGE_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor to scale eps_schwarz. Storage threshold for compression will be EPS_SCHWARZ*EPS_STORAGE_SCALING. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_MEMORY_MAX_DISK_SPACE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of disk space [MB] used to store precomputed compressed four-center integrals. If 0, nothing is stored to disk - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_MEMORY_MAX_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of memory [MB] to be consumed by the full HFX module. All temporary buffers and helper arrays are subtracted from this number. What remains will be used for storage of integrals. NOTE: This number is assumed to represent the memory available to one MPI process. When running a threaded version, cp2k automatically takes care of distributing the memory among all the threads within a process. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_MEMORY_STORAGE_LOCATION = Quantity( type=str, shape=[], - description=''' + description=""" Loaction where ERI's are stored if MAX_DISK_SPACE /=0 Expects a path to a directory. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_MEMORY_TREAT_FORCES_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether the derivative ERI's should be stored to RAM or not. Only meaningful when performing Ehrenfest MD. Memory usage is defined via MAX_MEMORY, i.e. the memory is shared wit the energy ERI's. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_PERIODIC(MSection): - ''' + """ Sets up periodic boundary condition parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_PERIODIC_NUMBER_OF_SHELLS = Quantity( type=str, shape=[], - description=''' + description=""" Number of shells taken into account for periodicity. By default, cp2k tries to automatically evaluate this number. This algorithm might be to conservative, resulting in some overhead. You can try to adjust this number in order to make a calculation cheaper. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF_SCREENING(MSection): - ''' + """ Sets up screening parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_SCREENING_EPS_SCHWARZ_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. This will be approximately the accuracy of the forces, and should normally be similar to EPS_SCF - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_SCREENING_EPS_SCHWARZ = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Recalculates integrals on the fly if the actual density matrix is larger by a given factor than the initial one. If the factor is set to 0.0_dp, this feature is disabled. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_SCREENING_SCREEN_ON_INITIAL_P = Quantity( type=str, shape=[], - description=''' + description=""" Screen on an initial density matrix. For the first MD step this matrix must be provided by a Restart File. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_SCREENING_SCREEN_P_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the electronic repulsion integrals for the forces using the density matrix. This results in a significant speedup for large systems, but might require a somewhat tigher EPS_SCHWARZ_FORCES. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_HF(MSection): - ''' + """ Sets up the Hartree-Fock parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_HF_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" The fraction of Hartree-Fock to add to the total energy. 1.0 implies standard Hartree-Fock if used with XC_FUNCTIONAL NONE. NOTE: In a mixed potential calculation this should be set to 1.0, otherwise all parts are multiplied with this factor. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_PW_HFX_BLOCKSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Improve the performance of pw_hfx at the cost of some additional memory by storing the realspace representation of PW_HFX_BLOCKSIZE states. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_PW_HFX = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Hartree-Fock energy also in the plane wave basis.The value is ignored, and intended for debugging only. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_HF_TREAT_LSD_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines how spin denisities are taken into account. If true, the beta spin density is included via a second in core call. If false, alpha and beta spins are done in one shot - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_HF_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_HF_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF_HF_INFO"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_HFX_RI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_HFX_RI'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF_HFX_RI"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_HF_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_LOAD_BALANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_LOAD_BALANCE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF_LOAD_BALANCE"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_MEMORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF_MEMORY"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_PERIODIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF_PERIODIC"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF_SCREENING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF_SCREENING"), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL(MSection): - ''' + """ Information on the non local dispersion functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the FFT grid used in the calculation of the nonlocal vdW functional [Ry]. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL_KERNEL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the kernel data file, may include a path.vdW_kernel_table.dat is for DRSLL and LMKLL andrVV10_kernel_table.dat is for rVV10. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Parameters b and C of the rVV10 functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of functional (the corresponding kernel data file should be selected).Allows for common forms such as vdW-DF, vdW-DF2, optB88-vdW, rVV10. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL_VERBOSE_OUTPUT = Quantity( type=str, shape=[], - description=''' + description=""" Extensive output for non local functionals - ''') + """, + ) -class x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD(MSection): - ''' +class x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD( + MSection +): + """ Controls the printing of some info about DFTD contributions - ''' + """ m_def = Section(validate=False) - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL(MSection): - ''' + """ Information on the pair potential to calculate dispersion - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOM_COORDINATION_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordination number of a set of atoms for the C9 term in DFT-D3. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOMPARM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies parameters for atom types (in atomic units). If not provided default parameters are used (DFT-D2). - ''') - - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_CALCULATE_C9_TERM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_CALCULATE_C9_TERM = ( + Quantity( + type=str, + shape=[], + description=""" Calculate C9 terms in DFT-D3 model - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" XC Functional dependent scaling parameters (s6,sr6,s8) for the DFT-D3 method, if set to zero CP2K attempts to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3BJ_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D3(BJ) method, if set to zero CP2K attempts to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EPS_CN = Quantity( type=str, shape=[], - description=''' + description=""" Cutoff value for coordination number function (DFT-D3 method) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EXP_PRE = Quantity( type=str, shape=[], - description=''' + description=""" Prefactor in exponential damping factor (DFT-D2 potential) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_KIND_COORDINATION_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordination number for a kind for the C9 term in DFT-D3. - ''') - - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_LONG_RANGE_CORRECTION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_LONG_RANGE_CORRECTION = ( + Quantity( + type=str, + shape=[], + description=""" Calculate a long range correction to the DFT-D3 model - ''') - - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PARAMETER_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PARAMETER_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" Name of the parameter file, may include a path - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_R_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Range of potential. The cutoff will be 2 times this value - ''') - - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_C9_TERM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_C9_TERM = ( + Quantity( + type=str, + shape=[], + description=""" Calculate C9 terms in DFT-D3 model using reference coordination numbers - ''') - - x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_FUNCTIONAL = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_FUNCTIONAL = ( + Quantity( + type=str, + shape=[], + description=""" Use parameters for this specific density functional. For available D3 and D3(BJ) parameters see: http://www.thch.uni-bonn.de/tc/downloads/DFT-D3/functionals.html, http://www.thch.uni-bonn.de/tc/downloads/DFT-D3/functionalsbj.html - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" XC Functional dependent scaling parameter, if set to zero CP2K attempts to guess the xc functional that is in use and sets the associated scaling parameter. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of potential - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_VERBOSE_OUTPUT = Quantity( type=str, shape=[], - description=''' + description=""" Extensive output for the DFT-D2 and DFT-D3 models - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL(MSection): - ''' + """ This section combines all possible additional dispersion corrections to the normal XC functionals. This can be more functionals or simple empirical pair potentials. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_VDW_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of dispersion/vdW functional or potential to use - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_NON_LOCAL" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL_PAIR_POTENTIAL" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_CPHF(MSection): - ''' + """ Parameters influencing the solution of the Z-vector equations in MP2 gradients calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_CPHF_EPS_CONV = Quantity( type=str, shape=[], - description=''' + description=""" Convergence threshold for the solution of the Z-vector equations. The Z-vector equations have the form of a linear system of equations Ax=b, convergence is achieved when |Ax-b|<=EPS_CONV. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_CPHF_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations allowed for the solution of the Z-vector equations. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_DIRECT_CANONICAL(MSection): - ''' + """ Parameters influencing the direct canonical method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_DIRECT_CANONICAL_BIG_SEND = Quantity( type=str, shape=[], - description=''' + description=""" Send big messages between processes (useful for >48 processors). - ''') + """, + ) -class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL( + MSection +): + """ Parameters the interaction potential in computing the biel integrals - ''' + """ m_def = Section(validate=False) - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL_POTENTIAL_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Which interaction potential should be used (Coulomb, TShPSC operator). - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TRUNCATION_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines truncation radius for the truncated TShPSC potential. Only valid when doing truncated calculation - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TSHPSC_DATA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TSHPSC_DATA = ( + Quantity( + type=str, + shape=[], + description=""" Location of the file TShPSC.dat that contains the data for the evaluation of the TShPSC G0 - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO(MSection): - ''' + """ Controls the printing basic info about MP2 method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS(MSection): - ''' + """ Parameters influencing the optimization of the RI MP2 basis. Only exponents of non- contracted auxiliary basis can be optimized. An initial RI auxiliary basis has to be specified. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS_BASIS_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the size of the auxiliary basis set automatically generated as initial guess. This will be effective only if RI_AUX_BASIS_SET in the KIND section and NUM_FUNC are not specified. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_I_REL = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy in the relative deviation of the amplitudes calculated with and without RI approximation, (more details in Chem.Phys.Lett.294(1998)143). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_RI = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy in the absolute difference between the RI-MP2 and the exact MP2 energy, DRI=ABS(E_MP2-E_RI-MP2). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS_EPS_DERIV = Quantity( type=str, shape=[], - description=''' + description=""" The derivatives of the MP2 energy with respect to the exponents of the basis are calculated numerically. The change in the exponent a_i employed for the numerical evaluation is defined as h_i=EPS_DERIV*a_i. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of steps in the RI basis optimization. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS_NUM_FUNC = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of function, for each angular momentum (s, p, d ...), employed in the automatically generated initial guess. This will be effective only if RI_AUX_BASIS_SET in the KIND section is not specified. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_LAPLACE(MSection): - ''' + """ Parameters influencing the RI-SOS-MP2-Laplace method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_LAPLACE_QUADRATURE_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of quadrature points for the numerical integration in the RI-SOS- MP2-Laplace method. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_LAPLACE_SIZE_INTEG_GROUP = Quantity( type=str, shape=[], - description=''' + description=""" Group size for the integration in the Laplace method, that is the number of processes involved in the computation of each integration point. SIZE_INTEG_GROUP has to be a multiple of GROUP_SIZE in the WF_CORRELATION section. The default (-1) is automatic. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2(MSection): - ''' + """ Parameters influencing the RI MP2 method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for communication in RI-MP2. Larger BLOCK_SIZE reduces communication but requires more memory. The default (-1) is automatic. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2_EPS_CANONICAL = Quantity( type=str, shape=[], - description=''' + description=""" Threshold for discriminate if a given ij pairs of the unrelaxed MP2 density matrix has to be calculated with a canonical reformulation based on the occupied eigenvalues differences. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2_FREE_HFX_BUFFER = Quantity( type=str, shape=[], - description=''' + description=""" Free the buffer containing the 4 center integrals used in the Hartree-Fock exchange calculation. This will be effective only for gradients calculations, since for the energy only case, the buffers are released by default. (Right now debugging only). - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO(MSection): - ''' + """ Controls the printing basic info about hf method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI(MSection): - ''' + """ All parameters needed in a HFX RI calculation - ''' + """ m_def = Section(validate=False) - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_OPTIMIZATION = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_OPTIMIZATION = ( + Quantity( + type=str, + shape=[], + description=""" Accuracy of iterative RI fit - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_SCREENING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_SCREENING = ( + Quantity( + type=str, + shape=[], + description=""" Accuracy of geminal integral evaluation - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iteration in RI fit - ''') + """, + ) -class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL( + MSection +): + """ Sets up interaction potential if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines cutoff radius for the truncated 1/r potential. Only valid when doing truncated calculation - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_OMEGA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_OMEGA = ( + Quantity( + type=str, + shape=[], + description=""" Parameter for short/longrange interaction - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, longrange or shortrange). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a coulomb potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a gaussian potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a longrange potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_T_C_G_DATA = Quantity( type=str, shape=[], - description=''' + description=""" Location of the file t_c_g.dat that contains the data for the evaluation of the truncated gamma function - ''') + """, + ) -class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE(MSection): - ''' +class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE( + MSection +): + """ Parameters influencing the load balancing of the HF - ''' + """ m_def = Section(validate=False) - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_BLOCK_SIZE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_BLOCK_SIZE = ( + Quantity( + type=str, + shape=[], + description=""" Determines the blocking used for the atomic quartet loops. A proper choice can speedup the calculation. The default (-1) is automatic. - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_NBINS = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins per process used to group atom quartets. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_RANDOMIZE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_RANDOMIZE = ( + Quantity( + type=str, + shape=[], + description=""" This flag controls the randomization of the bin assignment to processes. For highly ordered input structures with a bad load balance, setting this flag to TRUE might improve. - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY(MSection): - ''' + """ Sets up memory parameters for the storage of the ERI's if requested - ''' + """ m_def = Section(validate=False) - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_EPS_STORAGE_SCALING = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_EPS_STORAGE_SCALING = ( + Quantity( + type=str, + shape=[], + description=""" Scaling factor to scale eps_schwarz. Storage threshold for compression will be EPS_SCHWARZ*EPS_STORAGE_SCALING. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_DISK_SPACE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_DISK_SPACE = ( + Quantity( + type=str, + shape=[], + description=""" Defines the maximum amount of disk space [MB] used to store precomputed compressed four-center integrals. If 0, nothing is stored to disk - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of memory [MB] to be consumed by the full HFX module. All temporary buffers and helper arrays are subtracted from this number. What remains will be used for storage of integrals. NOTE: This number is assumed to represent the memory available to one MPI process. When running a threaded version, cp2k automatically takes care of distributing the memory among all the threads within a process. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_STORAGE_LOCATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_STORAGE_LOCATION = ( + Quantity( + type=str, + shape=[], + description=""" Loaction where ERI's are stored if MAX_DISK_SPACE /=0 Expects a path to a directory. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_TREAT_FORCES_IN_CORE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_TREAT_FORCES_IN_CORE = ( + Quantity( + type=str, + shape=[], + description=""" Determines whether the derivative ERI's should be stored to RAM or not. Only meaningful when performing Ehrenfest MD. Memory usage is defined via MAX_MEMORY, i.e. the memory is shared wit the energy ERI's. - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC(MSection): - ''' + """ Sets up periodic boundary condition parameters if requested - ''' + """ m_def = Section(validate=False) - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC_NUMBER_OF_SHELLS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC_NUMBER_OF_SHELLS = ( + Quantity( + type=str, + shape=[], + description=""" Number of shells taken into account for periodicity. By default, cp2k tries to automatically evaluate this number. This algorithm might be to conservative, resulting in some overhead. You can try to adjust this number in order to make a calculation cheaper. - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING(MSection): - ''' + """ Sets up screening parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. This will be approximately the accuracy of the forces, and should normally be similar to EPS_SCF - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ = ( + Quantity( + type=str, + shape=[], + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. - ''') + """, + ) + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Recalculates integrals on the fly if the actual density matrix is larger by a given factor than the initial one. If the factor is set to 0.0_dp, this feature is disabled. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_ON_INITIAL_P = Quantity( type=str, shape=[], - description=''' + description=""" Screen on an initial density matrix. For the first MD step this matrix must be provided by a Restart File. - ''') - - x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_P_FORCES = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_P_FORCES = ( + Quantity( + type=str, + shape=[], + description=""" Screens the electronic repulsion integrals for the forces using the density matrix. This results in a significant speedup for large systems, but might require a somewhat tigher EPS_SCHWARZ_FORCES. - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF(MSection): - ''' + """ Sets up the Hartree-Fock parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" The fraction of Hartree-Fock to add to the total energy. 1.0 implies standard Hartree-Fock if used with XC_FUNCTIONAL NONE. NOTE: In a mixed potential calculation this should be set to 1.0, otherwise all parts are multiplied with this factor. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX_BLOCKSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Improve the performance of pw_hfx at the cost of some additional memory by storing the realspace representation of PW_HFX_BLOCKSIZE states. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Hartree-Fock energy also in the plane wave basis.The value is ignored, and intended for debugging only. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_TREAT_LSD_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines how spin denisities are taken into account. If true, the beta spin density is included via a second in core call. If false, alpha and beta spins are done in one shot - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_MEMORY" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF_SCREENING" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA(MSection): - ''' + """ Parameters influencing the RI RPA method - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_MINIMAX_QUADRATURE = Quantity( type=str, shape=[], - description=''' + description=""" Use the Minimax quadrature scheme for performing the numerical integration. Maximum number of quadrature point limited to 20. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_MM_STYLE = Quantity( type=str, shape=[], - description=''' + description=""" Matrix multiplication style for the Q matrix. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_QUADRATURE_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of quadrature points for the numerical integration in the RI-RPA method. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_SIZE_FREQ_INTEG_GROUP = Quantity( type=str, shape=[], - description=''' + description=""" Group size for frequency integration, that is the number of processes involved in the computation of each integration point. SIZE_FREQ_INTEG_GROUP has to be a multiple of GROUP_SIZE in the WF_CORRELATION section. The default (-1) is automatic. - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA_HF" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW(MSection): - ''' + """ Parameters for the GPW approach in Wavefunction-based Correlation methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the finest grid level in the MP2 gpw integration. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW_EPS_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Determines a threshold for the DBCSR based multiply (usually 10 times smaller than EPS_GRID). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW_EPS_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Determines a threshold for the GPW based integration - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW_PRINT_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" How much output is written by the individual groups. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Determines the grid at which a Gaussian is mapped. - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION(MSection): - ''' + """ Sets up the Wavefunction-based Correlation parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_CALC_COND_NUM = Quantity( type=str, shape=[], - description=''' + description=""" Calculate the condition number of the (P|Q) matrix for the RI methods. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_COL_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the column block used in the SCALAPACK block cyclic data distribution.Default is (COL_BLOCK=-1) is automatic. A proper choice can speedup the parallel matrix multiplication in the case of RI-RPA and RI-SOS-MP2-Laplace. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_GROUP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Group size used in the computation of the integrals. Default is to use all processors (GROUP_SIZE=-1).A smaller group size (for example the node size), might a better choice if the actual MP2 time is large compared to integral computation time. This is usually the case if the total number of processors is not too large. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed total memory usage during MP2 methods [Mb]. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Which method should be used to compute the MP2 energy - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_ROW_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the row block used in the SCALAPACK block cyclic data distribution.Default is (ROW_BLOCK=-1) is automatic. A proper choice can speedup the parallel matrix multiplication in the case of RI-RPA and RI-SOS-MP2-Laplace. - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_SCALE_S = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor of the singlet energy component (opposite spin, OS). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_WF_CORRELATION_SCALE_T = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor of the triplet energy component (same spin, SS). - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_CPHF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_CPHF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_CPHF" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_DIRECT_CANONICAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_DIRECT_CANONICAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_DIRECT_CANONICAL" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_MP2_INFO" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_OPT_RI_BASIS" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_LAPLACE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_LAPLACE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_LAPLACE" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_MP2" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_RI_RPA" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION_WFC_GPW" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC(MSection): - ''' + """ Uses the Becke 88 longrange exchange functional in an adiabatic fashion - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameter of the adiabatic curve - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Potential parameter in erf(omega*r)/r - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR(MSection): - ''' + """ Uses the Becke 88 longrange exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Potential parameter in erf(omega*r)/r - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88(MSection): - ''' + """ Uses the Becke 88 exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97(MSection): - ''' + """ Uses the Becke 97 exchange correlation functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" switches between the B97 and Grimme parametrization - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional, if -1 the default for the given parametrization is used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL(MSection): - ''' + """ Becke Roussel exchange hole model. Can be usedas long range correction with a truncated coulomb potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff radius for the truncation. If put to zero, the standard full range potential will be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter in the exchange hole. Usually this is put to 1.0 or 0.8 - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BEEF(MSection): - ''' + """ Uses the BEEFvdW exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BEEF_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BEEF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_CS1(MSection): - ''' + """ Uses the CS1 functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_CS1_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09(MSection): - ''' + """ Combination of three different exchange hole models - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for Becke Roussel hole - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_HCTH(MSection): - ''' + """ Uses the HCTH class of functionals - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_HCTH_PARAMETER_SET = Quantity( type=str, shape=[], - description=''' + description=""" Which version of the parameters should be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_HCTH_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_GGA(MSection): - ''' + """ Uses one of the KE_GGA functionals (optimized versions of some of these functionals might be available outside this section). These functionals are needed for the computation of the kinetic energy in the Kim-Gordon method. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_GGA_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Which one of the KE_GGA functionals should be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_GGA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC(MSection): - ''' + """ To be used for KG runs. Uses kinetic energy functionals from LIBXC, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" names of the functionals, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:manual .The precise list of available functionals depends on the version of libxc interfaced (currently 2.0.1). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" parameters of the functionals - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factors of the functionals - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR(MSection): - ''' + """ LDA exchange hole model in truncated coulomb potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC(MSection): - ''' + """ Uses functionals from LIBXC, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" names of the functionals, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:manual .The precise list of available functionals depends on the version of libxc interfaced (currently 2.0.1). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" parameters of the functionals - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factors of the functionals - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC(MSection): - ''' + """ Uses the LYP correlation functional in an adiabatic fashion - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameter of the adiabatic curve. - ''') - - x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP(MSection): - ''' + """ Uses the LYP functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_OPTX(MSection): - ''' + """ Uses the OPTX functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_OPTX_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_OPTX_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_P86C(MSection): - ''' + """ Uses the P86C functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_P86C_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_P86C_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PADE(MSection): - ''' + """ Uses the PADE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PADE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR(MSection): - ''' + """ PBE exchange hole model in trucanted coulomb potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE(MSection): - ''' + """ Uses the PBE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" switches between the different parametrizations of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92(MSection): - ''' + """ Uses the PerdewWang correlation functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Which one of parametrizations should be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the energy functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81(MSection): - ''' + """ Uses the PZ functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Which one of parametrizations should be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TFW(MSection): - ''' + """ Uses the TFW functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TFW_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TF(MSection): - ''' + """ Uses the TF functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS(MSection): - ''' + """ Uses the TPSS functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN(MSection): - ''' + """ Uses the VWN functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN_FUNCTIONAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which version of the VWN functional should be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA(MSection): - ''' + """ Uses the XALPHA (SLATER) functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA_XA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xa parameter (this does not change the exponent, just the mixing) - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XGGA(MSection): - ''' + """ Uses one of the XGGA functionals (optimized versions of some of these functionals might be available outside this section). - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XGGA_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Which one of the XGGA functionals should be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XGGA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE(MSection): - ''' + """ Uses the short range PBE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" screening parameter - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE_SCALE_X0 = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the original hole PBE-functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL(MSection): - ''' + """ The xc functional to use - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_FUNCTIONAL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Shortcut for the most common functional combinations. - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88_LR" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE88" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE97" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BECKE_ROUSSEL" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BEEF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BEEF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_BEEF" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_CS1 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_CS1'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_CS1" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_GV09" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_HCTH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_HCTH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_HCTH" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_GGA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_GGA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_GGA" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_KE_LIBXC" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LIBXC" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP_ADIABATIC" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_LYP" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_OPTX = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_OPTX'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_OPTX" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_P86C = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_P86C'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_P86C" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PADE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PADE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PADE" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PBE" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PW92" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_PZ81" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TFW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TFW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TFW" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TF" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_TPSS" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_VWN" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XALPHA" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XGGA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XGGA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XGGA" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL_XWPBE" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_GRID(MSection): - ''' + """ The xc parameters used when calculating the xc on the grid - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_GRID_USE_FINER_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Uses a finer grid only to calculate the xc - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_GRID_XC_DERIV = Quantity( type=str, shape=[], - description=''' + description=""" The method used to compute the derivatives - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_GRID_XC_SMOOTH_RHO = Quantity( type=str, shape=[], - description=''' + description=""" The density smoothing used for the xc calculation - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP(MSection): - ''' + """ Uses the SAOP potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the alpha parameter (default = 1.19). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the beta parameter (default = 0.01). - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP_K_RHO = Quantity( type=str, shape=[], - description=''' + description=""" Value of the K_rho parameter (default = 0.42). - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL(MSection): - ''' + """ The xc potential to use (CAREFUL: xc potential here refers to potentials that are not derived from an xc functional, but rather are modelled directly. Therefore there is no consistent xc energy available. To still get an energy expression, see ENERGY below - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_XC_POTENTIAL_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" How to determine the total energy. - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL_SAOP" + ), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_XC(MSection): - ''' + """ parameters needed calculate the xc potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_XC_DENSITY_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on the density used by the xc calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_DENSITY_SMOOTH_CUTOFF_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for the smoothing procedure inxc calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_FUNCTIONAL_ROUTINE = Quantity( type=str, shape=[], - description=''' + description=""" Select the code for xc calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_GRADIENT_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on the gradient of the density used by the xc calculation - ''') + """, + ) x_cp2k_input_ATOM_METHOD_XC_TAU_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on tau used by the xc calculation - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_XC_ADIABATIC_RESCALING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_ADIABATIC_RESCALING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_ATOM_METHOD_XC_ADIABATIC_RESCALING" + ), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_HF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_HF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_HF"), repeats=True + ) x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_VDW_POTENTIAL"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_WF_CORRELATION"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_XC_FUNCTIONAL"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_GRID'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_XC_GRID"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC_XC_POTENTIAL"), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD_ZMP_RESTART(MSection): - ''' + """ Section used to specify the restart option in the ZMPprocedure, and the file that must be read. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_ZMP_RESTART_FILE_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename containing the restart file density - ''') + """, + ) class x_cp2k_section_input_ATOM_METHOD_ZMP(MSection): - ''' + """ Section used to specify ZMP Potentials. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_ZMP_DM = Quantity( type=str, shape=[], - description=''' + description=""" read external density from density matrix - ''') + """, + ) x_cp2k_input_ATOM_METHOD_ZMP_FILE_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename containing the target density - ''') + """, + ) x_cp2k_input_ATOM_METHOD_ZMP_GRID_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance in the equivalence of read-grid in ZMP method - ''') + """, + ) x_cp2k_input_ATOM_METHOD_ZMP_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for the constraint in ZMP method - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_ZMP_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_ZMP_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_ZMP_RESTART"), + repeats=True, + ) class x_cp2k_section_input_ATOM_METHOD(MSection): - ''' + """ Section of information on method to use. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_METHOD_METHOD_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of electronic structure method to be used - ''') + """, + ) x_cp2k_input_ATOM_METHOD_RELATIVISTIC = Quantity( type=str, shape=[], - description=''' + description=""" Type of scalar relativistic method to be used - ''') + """, + ) x_cp2k_section_input_ATOM_METHOD_EXTERNAL_VXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_EXTERNAL_VXC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_EXTERNAL_VXC"), + repeats=True, + ) x_cp2k_section_input_ATOM_METHOD_XC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_XC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_XC"), repeats=True + ) x_cp2k_section_input_ATOM_METHOD_ZMP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD_ZMP'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD_ZMP"), repeats=True + ) class x_cp2k_section_input_ATOM_OPTIMIZATION(MSection): - ''' + """ Section of information on optimization thresholds and algorithms. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_OPTIMIZATION_DAMPING = Quantity( type=str, shape=[], - description=''' + description=""" Damping parameter for extrapolation method - ''') + """, + ) x_cp2k_input_ATOM_OPTIMIZATION_EPS_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Starting DIIS method at convergence to EPS_DIIS - ''') + """, + ) x_cp2k_input_ATOM_OPTIMIZATION_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterion for SCF - ''') + """, + ) x_cp2k_input_ATOM_OPTIMIZATION_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations for optimization - ''') + """, + ) x_cp2k_input_ATOM_OPTIMIZATION_N_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of DIIS vectors - ''') + """, + ) class x_cp2k_section_input_ATOM_POTENTIAL_GTH_POTENTIAL(MSection): - ''' + """ Section used to specify Potentials. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_POTENTIAL_GTH_POTENTIAL_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" CP2K Pseudo Potential Standard Format (GTH, ALL or KG) - ''') + """, + ) class x_cp2k_section_input_ATOM_POTENTIAL(MSection): - ''' + """ Section of information on potential. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_POTENTIAL_CONFINEMENT = Quantity( type=str, shape=[], - description=''' + description=""" Definition of confinement potential - ''') + """, + ) x_cp2k_input_ATOM_POTENTIAL_POTENTIAL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the pseudo potential file, may include a path - ''') + """, + ) x_cp2k_input_ATOM_POTENTIAL_POTENTIAL_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The name of the pseudopotential for the defined kind. - ''') + """, + ) x_cp2k_input_ATOM_POTENTIAL_PSEUDO_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Pseudopotential type - ''') + """, + ) x_cp2k_section_input_ATOM_POTENTIAL_GTH_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_POTENTIAL_GTH_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_POTENTIAL_GTH_POTENTIAL"), + repeats=True, + ) class x_cp2k_section_input_ATOM_POWELL(MSection): - ''' + """ Section defines basic parameters for Powell optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_POWELL_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Final accuracy requested in optimization (RHOEND) - ''') + """, + ) x_cp2k_input_ATOM_POWELL_MAX_FUN = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of function evaluations - ''') + """, + ) x_cp2k_input_ATOM_POWELL_RCOV_MULTIPLICATION = Quantity( type=str, shape=[], - description=''' + description=""" Multiply Rcov integration limit for charge conservation - ''') + """, + ) x_cp2k_input_ATOM_POWELL_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size for search algorithm (RHOBEG) - ''') + """, + ) x_cp2k_input_ATOM_POWELL_TARGET_POT_SEMICORE = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy for semicore state eigenvalues in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_TARGET_POT_VALENCE = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy for valence state eigenvalues in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_TARGET_POT_VIRTUAL = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy for virtual state eigenvalues in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_ELECTRON_CONFIGURATION = Quantity( type=str, shape=[], - description=''' + description=""" Weight for different electronic states in optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Weight for different methods in optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_POT_NODE = Quantity( type=str, shape=[], - description=''' + description=""" Weight for node mismatch in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_POT_SEMICORE = Quantity( type=str, shape=[], - description=''' + description=""" Weight for semi core states in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_POT_VALENCE = Quantity( type=str, shape=[], - description=''' + description=""" Weight for valence states in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_POT_VIRTUAL = Quantity( type=str, shape=[], - description=''' + description=""" Weight for virtual states in pseudopotential optimization - ''') + """, + ) x_cp2k_input_ATOM_POWELL_WEIGHT_PSIR0 = Quantity( type=str, shape=[], - description=''' + description=""" Weight for the wavefunctions at r=0 (only occupied states) - ''') + """, + ) class x_cp2k_section_input_ATOM_PP_BASIS_BASIS(MSection): - ''' + """ Section used to specify a general basis set for QM calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_PP_BASIS_BASIS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" CP2K Basis Set Standard Format - ''') + """, + ) class x_cp2k_section_input_ATOM_PP_BASIS(MSection): - ''' + """ Section of basis set information for pseudopotential calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_PP_BASIS_BASIS_SET_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the basis set file, may include a path - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_BASIS_SET = Quantity( type=str, shape=[], - description=''' + description=""" The contracted Gaussian basis set - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_BASIS_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Basis set type - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_D_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for d functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_D_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for d functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_EPS_EIGENVALUE = Quantity( type=str, shape=[], - description=''' + description=""" Cutoff of overlap matrix eigenvalues included into basis - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_F_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for f functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_F_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for f functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_GEO_START_VALUE = Quantity( type=str, shape=[], - description=''' + description=""" Geometrical basis: starting value a in a*C^k - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_GEOMETRICAL_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Geometrical basis: factor C in a*C^k - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_GRID_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of radial grid points - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_NUM_GTO = Quantity( type=str, shape=[], - description=''' + description=""" Number of Gaussian type functions for s, p, d, ... - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_NUM_SLATER = Quantity( type=str, shape=[], - description=''' + description=""" Number of Slater type functions for s, p, d, ... - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_P_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for p functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_P_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for p functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_QUADRATURE = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to construct the atomic radial grids - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_S_EXPONENTS = Quantity( type=str, shape=[], - description=''' + description=""" Exponents for s functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_S_QUANTUM_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Main quantum numbers for s functions - ''') + """, + ) x_cp2k_input_ATOM_PP_BASIS_START_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" Starting index for Geometrical Basis sets - ''') + """, + ) x_cp2k_section_input_ATOM_PP_BASIS_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_PP_BASIS_BASIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_PP_BASIS_BASIS"), + repeats=True, + ) class x_cp2k_section_input_ATOM(MSection): - ''' + """ Section handling input for atomic calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_ATOM_ATOMIC_NUMBER = Quantity( type=str, shape=[], - description=''' + description=""" Specify the atomic number - ''') + """, + ) x_cp2k_input_ATOM_CALCULATE_STATES = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of states calculated per l value - ''') + """, + ) x_cp2k_input_ATOM_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the core electrons for a pseudopotential - ''') + """, + ) x_cp2k_input_ATOM_COULOMB_INTEGRALS = Quantity( type=str, shape=[], - description=''' + description=""" Method to calculate Coulomb integrals - ''') + """, + ) x_cp2k_input_ATOM_ELECTRON_CONFIGURATION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the electron configuration. Optional the multiplicity (m) and a core state [XX] can be declared - ''') + """, + ) x_cp2k_input_ATOM_ELEMENT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the element to be calculated - ''') + """, + ) x_cp2k_input_ATOM_EXCHANGE_INTEGRALS = Quantity( type=str, shape=[], - description=''' + description=""" Method to calculate Exchange integrals - ''') + """, + ) x_cp2k_input_ATOM_MAX_ANGULAR_MOMENTUM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the largest angular momentum calculated [0-3] - ''') + """, + ) x_cp2k_input_ATOM_RUN_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of run that you want to perform [ENERGY,BASIS_OPTIMIZATION,PSEUDOPOTENTIAL_OPTIMIZATION,,...] - ''') + """, + ) x_cp2k_section_input_ATOM_AE_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_AE_BASIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_AE_BASIS"), repeats=True + ) x_cp2k_section_input_ATOM_METHOD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_METHOD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_METHOD"), repeats=True + ) x_cp2k_section_input_ATOM_OPTIMIZATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_OPTIMIZATION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_OPTIMIZATION"), repeats=True + ) x_cp2k_section_input_ATOM_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_POTENTIAL"), repeats=True + ) x_cp2k_section_input_ATOM_POWELL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_POWELL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_POWELL"), repeats=True + ) x_cp2k_section_input_ATOM_PP_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM_PP_BASIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM_PP_BASIS"), repeats=True + ) class x_cp2k_section_input_DEBUG_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing of the DEBUG specific output - ''' + """ m_def = Section(validate=False) x_cp2k_input_DEBUG_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_DEBUG_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_DEBUG_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_DEBUG_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_DEBUG_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_DEBUG(MSection): - ''' + """ Section to setup parameters for debug runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_DEBUG_DEBUG_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Activates the debugging of the atomic forces - ''') + """, + ) x_cp2k_input_DEBUG_DEBUG_STRESS_TENSOR = Quantity( type=str, shape=[], - description=''' + description=""" Activates the debugging of the stress tensor - ''') + """, + ) x_cp2k_input_DEBUG_DX = Quantity( type=str, shape=[], - description=''' + description=""" Increment for the calculation of the numerical derivatives - ''') + """, + ) x_cp2k_input_DEBUG_EPS_NO_ERROR_CHECK = Quantity( type=str, shape=[], - description=''' + description=""" The mismatch between the numerical and the analytical value is not checked for analytical values smaller than this threshold value - ''') + """, + ) x_cp2k_input_DEBUG_STOP_ON_MISMATCH = Quantity( type=str, shape=[], - description=''' + description=""" Stop the debug run when a mismatch between the numerical and the analytical value is detected - ''') + """, + ) x_cp2k_section_input_DEBUG_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_DEBUG_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_DEBUG_PROGRAM_RUN_INFO"), + repeats=True, + ) class x_cp2k_section_input_EXT_RESTART(MSection): - ''' + """ Section for external restart, specifies an external input file where to take positions,... - ''' + """ m_def = Section(validate=False) x_cp2k_input_EXT_RESTART_BINARY_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of an additional restart file from which selected input sections are read in binary format (see SPLIT_RESTART_FILE). - ''') + """, + ) x_cp2k_input_EXT_RESTART_CUSTOM_PATH = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the given path from the EXTERNAL file. Allows a major flexibility for restarts. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_AVERAGES = Quantity( type=str, shape=[], - description=''' + description=""" Restarts information for AVERAGES. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Restarts positions and velocities of the Band. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_BAROSTAT_THERMOSTAT = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the barostat thermostat from the external file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_BAROSTAT = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the barostat from the external file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Restarts information for BSSE calculations. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the cell (and cell_ref) from the EXTERNAL file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_CONSTRAINT = Quantity( type=str, shape=[], - description=''' + description=""" Restarts constraint section. It's necessary when doing restraint calculation to have a perfect energy conservation. For constraints only it's use is optional. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_CORE_POS = Quantity( type=str, shape=[], - description=''' + description=""" Takes the positions of the cores from the external file (only if shell-model) - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_CORE_VELOCITY = Quantity( type=str, shape=[], - description=''' + description=""" Takes the velocities of the shells from the external file (only if shell-model) - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_COUNTERS = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the counters in MD schemes - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_DEFAULT = Quantity( type=str, shape=[], - description=''' + description=""" This keyword controls the default value for all possible restartable keywords, unless explicitly defined. For example setting this keyword to .FALSE. does not restart any quantity. If, at the same time, one keyword is set to .TRUE. only that quantity will be restarted. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_DIMER = Quantity( type=str, shape=[], - description=''' + description=""" Restarts information for DIMER geometry optimizations. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of restart file (or any other input file) to be read. Only fields relevant to a restart will be used (unless switched off with the keywords in this section) - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_HELIUM_DENSITIES = Quantity( type=str, shape=[], - description=''' + description=""" Restarts helium density distributions from PINT%HELIUM%RHO. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_HELIUM_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Restart helium forces exerted on the solute from PINT%HELIUM%FORCE. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_HELIUM_PERMUTATION = Quantity( type=str, shape=[], - description=''' + description=""" Restart helium permutation state from PINT%HELIUM%PERM. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_HELIUM_POS = Quantity( type=str, shape=[], - description=''' + description=""" Restart helium positions from PINT%HELIUM%COORD. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_HELIUM_RNG = Quantity( type=str, shape=[], - description=''' + description=""" Restarts helium random number generators from PINT%HELIUM%RNG_STATE. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Restarts hills from a previous metadynamics run from the EXTERNAL file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_OPTIMIZE_INPUT_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Restart with the optimize input variables - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_PINT_GLE = Quantity( type=str, shape=[], - description=''' + description=""" Restart GLE thermostat for beads from PINT%GLE. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_PINT_NOSE = Quantity( type=str, shape=[], - description=''' + description=""" Restart Nose thermostat for beads from PINT%NOSE. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_PINT_POS = Quantity( type=str, shape=[], - description=''' + description=""" Restart bead positions from PINT%BEADS%COORD. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_PINT_VEL = Quantity( type=str, shape=[], - description=''' + description=""" Restart bead velocities from PINT%BEADS%VELOCITY. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_POS = Quantity( type=str, shape=[], - description=''' + description=""" Takes the positions from the external file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_QMMM = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the following specific QMMM info: translation vectors. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_RANDOMG = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the random number generator from the external file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_RTP = Quantity( type=str, shape=[], - description=''' + description=""" Restarts information for REAL TIME PROPAGATION and EHRENFEST DYNAMICS. - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_SHELL_POS = Quantity( type=str, shape=[], - description=''' + description=""" Takes the positions of the shells from the external file (only if shell-model) - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_SHELL_THERMOSTAT = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the shell thermostat from the external file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_SHELL_VELOCITY = Quantity( type=str, shape=[], - description=''' + description=""" Takes the velocities of the shells from the external file (only if shell-model) - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_THERMOSTAT = Quantity( type=str, shape=[], - description=''' + description=""" Restarts the nose thermostats of the particles from the EXTERNAL file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_VEL = Quantity( type=str, shape=[], - description=''' + description=""" Takes the velocities from the external file - ''') + """, + ) x_cp2k_input_EXT_RESTART_RESTART_WALKERS = Quantity( type=str, shape=[], - description=''' + description=""" Restarts walkers informations from a previous metadynamics run from the EXTERNAL file - ''') + """, + ) class x_cp2k_section_input_FARMING_JOB(MSection): - ''' + """ description of the jobs to be executed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FARMING_JOB_DEPENDENCIES = Quantity( type=str, shape=[], - description=''' + description=""" specifies a list of JOB_IDs on which the current job depends. The current job will not be executed before all the dependencies have finished. The keyword requires a MASTER_SLAVE farming run. Beyond the default case, some special cases might arise: @@ -3706,4620 +4305,5311 @@ class x_cp2k_section_input_FARMING_JOB(MSection): Additionally, note that, on some file systems, output (restart) files might not be immediately available on all compute nodes,potentially resulting in unexpected failures. - ''') + """, + ) x_cp2k_input_FARMING_JOB_DIRECTORY = Quantity( type=str, shape=[], - description=''' + description=""" the directory in which the job should be executed - ''') + """, + ) x_cp2k_input_FARMING_JOB_INPUT_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the input file - ''') + """, + ) x_cp2k_input_FARMING_JOB_JOB_ID = Quantity( type=str, shape=[], - description=''' + description=""" An ID used to indentify a job in DEPENDENCIES. JOB_IDs do not need to be unique, dependencies will be on all jobs with a given ID. If no JOB_ID is given, the index of the &JOB section in the input file will be used. - ''') + """, + ) x_cp2k_input_FARMING_JOB_OUTPUT_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the output file, if not specified will use the project name in the &GLOBAL section. - ''') + """, + ) class x_cp2k_section_input_FARMING_PROGRAM_RUN_INFO(MSection): - ''' + """ controls the printing of FARMING specific output - ''' + """ m_def = Section(validate=False) x_cp2k_input_FARMING_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FARMING_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FARMING_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FARMING_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FARMING_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FARMING_RESTART(MSection): - ''' + """ controls the printing of the restart for FARMING. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FARMING_RESTART_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FARMING_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FARMING_RESTART_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FARMING_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FARMING_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FARMING(MSection): - ''' + """ Describes a farming job, in which multiple inputs are executed. The RUN_TYPE in the global section has to be set to NONE for FARMING. The different groups are executed in parallel. The jobs inside the same groups in series. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FARMING_CYCLE = Quantity( type=str, shape=[], - description=''' + description=""" If farming should process all jobs in a cyclic way, stopping only if MAX_JOBS_PER_GROUP is exceeded. - ''') + """, + ) x_cp2k_input_FARMING_DO_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Restart a farming job (and should pick up where the previous left off) - ''') + """, + ) x_cp2k_input_FARMING_GROUP_PARTITION = Quantity( type=str, shape=[], - description=''' + description=""" gives the exact number of processors for each group. - ''') + """, + ) x_cp2k_input_FARMING_GROUP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Gives the preferred size of a working group, groups will always be equal or larger than this size. - ''') + """, + ) x_cp2k_input_FARMING_MASTER_SLAVE = Quantity( type=str, shape=[], - description=''' + description=""" If a master-slave setup should be employed, in which one process is used to distribute the tasks. This is most useful to load-balance if not all jobs have the same length, and a lot of CPUs/groups are availabe. - ''') + """, + ) x_cp2k_input_FARMING_MAX_JOBS_PER_GROUP = Quantity( type=str, shape=[], - description=''' + description=""" maximum number of jobs executed per group - ''') + """, + ) x_cp2k_input_FARMING_NGROUPS = Quantity( type=str, shape=[], - description=''' + description=""" Gives the preferred number of working groups. - ''') + """, + ) x_cp2k_input_FARMING_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the restart file to use for restarting a FARMING run. If not specified the name is determined from PROJECT name. - ''') + """, + ) x_cp2k_input_FARMING_WAIT_TIME = Quantity( type=str, shape=[], - description=''' + description=""" Time to wait [s] for a new task if no task is currently available, make this zero if no clock is available - ''') + """, + ) x_cp2k_section_input_FARMING_JOB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FARMING_JOB'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FARMING_JOB"), repeats=True + ) x_cp2k_section_input_FARMING_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FARMING_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FARMING_PROGRAM_RUN_INFO"), + repeats=True, + ) x_cp2k_section_input_FARMING_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FARMING_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FARMING_RESTART"), repeats=True + ) class x_cp2k_section_input_FORCE_EVAL_BSSE_CONFIGURATION(MSection): - ''' + """ Specify additional parameters for the combinatorial configurations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_BSSE_CONFIGURATION_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" The total charge for each fragment. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_BSSE_CONFIGURATION_GLB_CONF = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the global configuration using 1 or 0. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_BSSE_CONFIGURATION_MULTIPLICITY = Quantity( type=str, shape=[], - description=''' + description=""" Specify for each fragment the multiplicity. Two times the total spin plus one. Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an even number and 2 (doublet) for an odd number of electrons. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_BSSE_CONFIGURATION_SUB_CONF = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the subconfiguration using 1 or 0 belonging to the global configuration. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT_ENERGIES(MSection): - ''' + """ This section contains the energies of the fragments already computed. It is useful as a summary and specifically for restarting BSSE runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_BSSE_FRAGMENT_ENERGIES_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The energy computed for each fragment - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT(MSection): - ''' + """ Specify the atom number belonging to this fragment. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_BSSE_FRAGMENT_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_BSSE(MSection): - ''' + """ This section is used to set up the BSSE calculation. It also requires that for each atomic kind X a kind X_ghost is present, with the GHOST keyword specified, in addition to the other required fields. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_BSSE_CONFIGURATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_BSSE_CONFIGURATION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_BSSE_CONFIGURATION"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT_ENERGIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT_ENERGIES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT_ENERGIES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_BSSE_FRAGMENT"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS(MSection): - ''' + """ Controls the iterative DIIS-accelerated optimization of block-diagonal ALMOs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS_EPS_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Target value of the MAX norm of the error - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS_N_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Number of error vectors to be used in the DIIS optimization procedure - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG(MSection): - ''' + """ Controls the PCG optimization of block-diagonal ALMOs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_CONJUGATOR = Quantity( type=str, shape=[], - description=''' + description=""" Various methods to compute step directions in the PCG optimization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_EPS_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Target value of the MAX norm of the error - ''') - - x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_LIN_SEARCH_EPS_ERROR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_LIN_SEARCH_EPS_ERROR = ( + Quantity( + type=str, + shape=[], + description=""" Target value of the gradient norm during the linear search - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_LIN_SEARCH_STEP_SIZE_GUESS = Quantity( type=str, shape=[], - description=''' + description=""" The size of the first step in the linear search - ''') - - x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_MAX_ITER_OUTER_LOOP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_MAX_ITER_OUTER_LOOP = ( + Quantity( + type=str, + shape=[], + description=""" Maximum number of iterations in the outer loop. Use the outer loop to update the preconditioner and reset the conjugator. This can speed up convergence significantly. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Select a preconditioner for the conjugate gradient optimization - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG(MSection): - ''' + """ Controls the PCG optimization of extended ALMOs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_CONJUGATOR = Quantity( type=str, shape=[], - description=''' + description=""" Various methods to compute step directions in the PCG optimization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_EPS_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Target value of the MAX norm of the error - ''') - - x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_LIN_SEARCH_EPS_ERROR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_LIN_SEARCH_EPS_ERROR = ( + Quantity( + type=str, + shape=[], + description=""" Target value of the gradient norm during the linear search - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_LIN_SEARCH_STEP_SIZE_GUESS = Quantity( type=str, shape=[], - description=''' + description=""" The size of the first step in the linear search - ''') - - x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_MAX_ITER_OUTER_LOOP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_MAX_ITER_OUTER_LOOP = ( + Quantity( + type=str, + shape=[], + description=""" Maximum number of iterations in the outer loop. Use the outer loop to update the preconditioner and reset the conjugator. This can speed up convergence significantly. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Select a preconditioner for the conjugate gradient optimization - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF(MSection): - ''' + """ Settings for a class of efficient linear scaling methods based on absolutely localized orbitals (ALMOs). ALMO methods are currently restricted to closed-shell molecular systems. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the algorithm to update block-diagonal ALMOs during the SCF procedure. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_SCF_GUESS = Quantity( type=str, shape=[], - description=''' + description=""" The method to generate initial ALMOs. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_DELOCALIZE_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Methods to reintroduce electron delocalization, which is excluded with the block- diagonal ALMO reference. Electron delocalization can be computed using either fully delocalized MOs or spatially restricted ALMOs (called extended ALMOs or XALMOs). All methods below use a PCG optimizer controlled by XALMO_OPTIMIZER_PCG. The only exception is the non-iterative XALMO_1DIAG. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_EPS_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Threshold for the matrix sparsity filter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_R_CUTOFF_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Controls the localization radius of XALMOs: R_cutoff = XALMO_R_CUTOFF_FACTOR*(radius(at1)+radius(at2)) - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_DIIS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_ALMO_OPTIMIZER_PCG" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF_XALMO_OPTIMIZER_PCG" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD(MSection): - ''' + """ Parameters needed for the ADMM method. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_ADMM_PURIFICATION_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method that shall be used for wavefunction fitting. Use MO_DIAG for MD. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_BLOCK_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_EPS_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Define accuracy of DBCSR operations - ''') - - x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_EXCH_CORRECTION_FUNC = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_EXCH_CORRECTION_FUNC = ( + Quantity( + type=str, + shape=[], + description=""" Exchange functional which is used for the ADMM correction. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_EXCH_SCALING_MODEL = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_EXCH_SCALING_MODEL = ( + Quantity( + type=str, + shape=[], + description=""" Scaling of the exchange correction calculated by the auxiliary density matrix. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing of basic information during the run - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_CONDITION_NUMBER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_CONDITION_NUMBER = ( + Quantity( + type=str, + shape=[], + description=""" Prints information regarding the condition numbers of the A matrix (to be inverted) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING(MSection): - ''' + """ Setup parameters for density fitting (Bloechl charges or density derived atomic point charges (DDAPC) charges) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_GCUT = Quantity( type=str, shape=[], - description=''' + description=""" Cutoff for charge fit in G-space. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_MIN_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the smallest radius of the gaussian used in the fit. All other radius are obtained with the progression factor. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_NUM_GAUSS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the numbers of gaussian used to fit the QM density for each atomic site. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_PFACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the progression factor for the gaussian exponent for each atomic site. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_DENSITY_FITTING_RADII = Quantity( type=str, shape=[], - description=''' + description=""" Specifies all the radius of the gaussian used in the fit for each atomic site. The use of this keyword disables all other keywords of this section. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_CONSTANT_ENV(MSection): - ''' + """ parameters for a constant envelop - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_CONSTANT_ENV_END_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Last step the field is applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_CONSTANT_ENV_START_STEP = Quantity( type=str, shape=[], - description=''' + description=""" First step the field is applied - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_GAUSSIAN_ENV(MSection): - ''' + """ parameters for a gaussian envelop - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_GAUSSIAN_ENV_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Width of the gaussian - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_GAUSSIAN_ENV_T0 = Quantity( type=str, shape=[], - description=''' + description=""" Center of the gaussian envelop (maximum of the gaussian) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV(MSection): - ''' + """ Parameters for an trapeziodal envelop - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV_END_STEP_IN = Quantity( type=str, shape=[], - description=''' + description=""" Step when the field reaches the full strength - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV_END_STEP_OUT = Quantity( type=str, shape=[], - description=''' + description=""" Step when the field disappears - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV_START_STEP_IN = Quantity( type=str, shape=[], - description=''' + description=""" Step when the electric field starts to be applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV_START_STEP_OUT = Quantity( type=str, shape=[], - description=''' + description=""" Step when the field starts to vanish - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD(MSection): - ''' + """ parameters for finite, time dependent, nonperiodic electric fields - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_ENVELOP = Quantity( type=str, shape=[], - description=''' + description=""" Shape of the efield pulse - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_INTENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Intensity of the electric field in W*cm-2 which corresponds to a maximal amplitude in a.u. of sqrt(I/(3.50944*10^16)) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_PHASE = Quantity( type=str, shape=[], - description=''' + description=""" phase offset of the cosine given in multiples of pi - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_POLARISATION = Quantity( type=str, shape=[], - description=''' + description=""" Polarisation vector of electric field - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EFIELD_WAVELENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Wavelength of efield field - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_CONSTANT_ENV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_CONSTANT_ENV'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_CONSTANT_ENV" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_GAUSSIAN_ENV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_GAUSSIAN_ENV'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_GAUSSIAN_ENV" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD_RAMP_ENV"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY(MSection): - ''' + """ Section for the use of the ZMP technique on external densities. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY_FERMI_AMALDI = Quantity( type=str, shape=[], - description=''' + description=""" Add the Fermi-Amaldi contribution to the Hartree potential.It leads to a more stable convergence. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY_FILE_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename containing the target density in *.cube format.In the MGRID section it must be imposed NGRID 1, as it works with onlyone grid. The number of points in each direction, and the spacing mustbe previously defined choosing the plane waves cut-off in section MGRIDkeyword CUTOFF, and the cube dimention in section SUBSYS / CELL / keyword ABC - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Lagrange multiplier defined in the constraint ZMP method. When starting, usesmall values when starting from scratch (around 5,10). Then gradually increasethe values depending, restarting from the previous calculation with the smallervalue. To choose the progressive values of LAMBDA look at the convergence of the eigenvalues. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY_ZMP_CONSTRAINT = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of constraint to solve the ZMP equation. The COULOMB defaultoption is more stable. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL(MSection): - ''' + """ Section controlling the presence of an electrostatic external potential dependent on the atomic positions (X,Y,Z) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_ERROR_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form in mathematical notation. Variables must be the atomic coordinates (X,Y,Z) of the grid. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_READ_FROM_CUBE = Quantity( type=str, shape=[], - description=''' + description=""" Switch for reading the external potential from file pot.cube. The values of the potential must be on the grid points of the realspace grid. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_SCALING_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" A factor for scaling the the external potential that is read from file.The value of the potential at each grid point is multiplied by this factor. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_STATIC = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the external potential as STATIC or time dependent. At the moment only static potentials are implemented. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_VXC(MSection): - ''' + """ SCF convergence with external v_xc calculated through previous ZMPcalculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_EXTERNAL_VXC_FILE_VXC = Quantity( type=str, shape=[], - description=''' + description=""" The *.cube filename containing the v_xc potential. This works onlywith NGRID 1 imposed in the MGRID section. The number of points in eachdirection, and the spacing must equal to those previously used in the ZMPcalculation and defined through the plane wave cut-off and the cube dimensionrespectively set in section MGRID / keyword CUTOFF, and in section SUBSYS /CELL / keyword ABC - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_KG_METHOD(MSection): - ''' + """ Specifies the parameters for a Kim-Gordon-like partitioning into molecular subunits - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_KG_METHOD_COLORING_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Which algorithm to use for coloring. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KG_METHOD_TNADD_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to use for the calculation of the nonadditive kinetic energy. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_KPOINTS(MSection): - ''' + """ Sets up the kpoints. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_EPS_GEO = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy in symmetry determination. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_FULL_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Use full non-reduced kpoint grid. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_KPOINT = Quantity( type=str, shape=[], - description=''' + description=""" Specify kpoint coordinates and weight. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_PARALLEL_GROUP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Number of processors to be used for a single kpoint. Value=-1 (minimum number of processes). Value=0 (maximum number of processes). Value=n (exactly n processes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_SCHEME = Quantity( type=str, shape=[], - description=''' + description=""" Kpoint scheme to be used. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_SYMMETRY = Quantity( type=str, shape=[], - description=''' + description=""" Use symmetry to reduce the number of kpoints. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_VERBOSE = Quantity( type=str, shape=[], - description=''' + description=""" Verbose output information. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_KPOINTS_WAVEFUNCTIONS = Quantity( type=str, shape=[], - description=''' + description=""" Use real/complex wavefunctions if possible. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_LOCALIZE(MSection): - ''' + """ Use one of the available methods to define the localization and possibly to optimize it to a minimum or a maximum. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_CRAZY_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scale angles - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_CRAZY_USE_DIAG = Quantity( type=str, shape=[], - description=''' + description=""" Use diagonalization (slow) or pade based calculation of matrix exponentials. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_ENERGY_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Select the orbitals to be localized within the given energy range.This type of selection cannot be added on top of the selection through a LIST. It reads to reals that are lower and higher boundaries of the energy range. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_EPS_LOCALIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance used in the convergence criterium of the localization methods. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_EPS_OCCUPATION = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance in the occupation number to select only fully occupied orbitals for the rotation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_JACOBI_FALLBACK = Quantity( type=str, shape=[], - description=''' + description=""" Use Jacobi method in case no convergence was achieved by using the crazy rotations method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_LIST_UNOCCUPIED = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the unoccupied states to be localized, up to now only valid in combination with GPW. This keyword has to be present if unoccupied states should be localized. This keyword can be repeated several times(useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the occupied wfn to be localizedThis keyword can be repeated several times(useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_LOCHOMO_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" File name where to read the MOS fromwhich to restart the localization procedure for occupied states - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_LOCLUMO_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" File name where to read the MOS fromwhich to restart the localization procedure for unoccupied states - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_MAX_CRAZY_ANGLE = Quantity( type=str, shape=[], - description=''' + description=""" Largest allowed angle for the crazy rotations algorithm (smaller is slower but more stable). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations used for localization methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method of optimization if any - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_MIN_OR_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Requires the maximization of the spread of the wfn - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_OPERATOR = Quantity( type=str, shape=[], - description=''' + description=""" Type of opertator which defines the spread functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_OUT_ITER_EACH = Quantity( type=str, shape=[], - description=''' + description=""" Every how many iterations of the localization algorithm(Jacobi) the tolerance value is printed out - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Restart the localization from a set of orbitals read from a localization restart file. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the MOS localization procedure - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_STATES = Quantity( type=str, shape=[], - description=''' + description=""" Which states to localize, LUMO up to now only available in GPW - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOCALIZE_USE_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Generate an improved initial guess based on a history of results, which is useful during MD.Will only work if the number of states to be localized remains constant. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_LOW_SPIN_ROKS(MSection): - ''' + """ Specify the details of the low spin ROKS method.In particular, one can specify various terms added to the energy of the high spin roks configuration with a energy scaling factor, and a prescription of the spin state. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LOW_SPIN_ROKS_ENERGY_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" The scaling factors for each term added to the total energy.This list should contain one number for each term added to the total energy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LOW_SPIN_ROKS_SPIN_CONFIGURATION = Quantity( type=str, shape=[], - description=''' + description=""" for each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbitalThis keyword should be repeated, each repetition corresponding to an additional term. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS(MSection): - ''' + """ Controls the printing of the Density of States (DOS). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS_N_GRIDPOINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of points in the computed DOS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE( + MSection +): + """ Controls the printing of cube files with the electronic density (states) contributing to the density of states within the specific energy range (MIN_ENERGY ≤ E ≤ MAX_ENERGY). MIN_ENERGY and MAX_ENERGY need to be specified explicitly. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_MAX_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Upper bounds of the energy ranges of interest. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_MIN_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Lower bounds of the energy ranges of interest. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE_STRIDE = Quantity( type=str, shape=[], - description=''' + description=""" The stride (X,Y,Z) used to write the cube file (larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or 1 number valid for all components. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV(MSection): - ''' + """ Specifies the parameters needed for the chebyshev expansion based properties. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_N_CHEBYSHEV = Quantity( type=str, shape=[], - description=''' + description=""" Order of the polynomial expansion. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_DOS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV_PRINT_SPECIFIC_E_DENSITY_CUBE" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS(MSection): - ''' + """ Specifies the parameters of the linear scaling SCF routines - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS_FILTER_FACTOR_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" Allows for dynamic EPS_FILTER. Updates the filter factor every scf-newton step by FILTER_FACTOR=FILTER_FACTOR*FILTER_FACTOR_SCALE - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS_FILTER_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Allows to set a seperate EPS_FILTER in the newton iterations. The new EPS is EPS_FILTER*FILTER_FACTOR. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS_LINE_SEARCH = Quantity( type=str, shape=[], - description=''' + description=""" Line serch type used in the curvy_setp optimization. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS_MIN_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Lowest EPS_FILTER in dynamic filtering. Given as multiple of EPS_FILTER: EPS_FILTER_MIN=EPS_FILTER*MIN_FILTER - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS_MIN_HESSIAN_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Minimal eigenvalue shift for the Hessian in the Newton iteration. Useful for small band gap systems (0.5-1.0 recommended). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS_N_BCH_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Number of stored matrices in the Baker-Campbell-Hausdorff series. Reduces the BCH evaluation during line search but can be memory intense. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF(MSection): - ''' + """ Specifies the parameters of the linear scaling SCF routines - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_DYNAMIC_THRESHOLD = Quantity( type=str, shape=[], - description=''' + description=""" Should the threshold for the purification be chosen dynamically - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_EPS_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Threshold on the convergence to start using DIIS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_EPS_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Threshold used for filtering matrix operations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_EPS_LANCZOS = Quantity( type=str, shape=[], - description=''' + description=""" Threshold used for lanczos estimates. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy for the scf convergence. Change of the total energy per electron - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_EXTRAPOLATION_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Number of previous matrices used for the ASPC extrapolation of the initial guess. 0 implies that an atomic guess is used at each step. low (1-2) will result in a drift of the constant of motion during MD. high (>5) might be somewhat unstable, leading to more SCF iterations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_FIXED_MU = Quantity( type=str, shape=[], - description=''' + description=""" Should the calculation be performed at fixed chemical potential, or should it be found fixing the number of electrons - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_INI_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration cycle to start DIIS Kohn-Sham matrix update - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_LS_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Perform DIIS within linear scaling SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_MATRIX_CLUSTER_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify how atomic blocks should be clustered in the used matrices, in order to improve flop rate, and possibly speedup the matrix multiply. Note that the atomic s_preconditioner can not be used.Furthermore, since screening is on matrix blocks, slightly more accurate results can be expected with molecular. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_MAX_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Size of LS_DIIS buffer - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_MAX_ITER_LANCZOS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of lanczos iterations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_MAX_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of SCF iteration to be performed for one optimization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_MIXING_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" Mixing density matrices uses the specified fraction in the SCF procedure. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_MU = Quantity( type=str, shape=[], - description=''' + description=""" Value (or initial guess) for the chemical potential, i.e. some suitable energy between HOMO and LUMO energy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_NMIXING = Quantity( type=str, shape=[], - description=''' + description=""" Minimal number of density mixing before start DIIS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_NON_MONOTONIC = Quantity( type=str, shape=[], - description=''' + description=""" Should the purification be performed non-monotonically. Relevant for TC2 only. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_PERFORM_MU_SCAN = Quantity( type=str, shape=[], - description=''' + description=""" Do a scan of the chemical potential after the SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_PURIFICATION_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Scheme used to purify the Kohn-Sham matrix into the density matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_REPORT_ALL_SPARSITIES = Quantity( type=str, shape=[], - description=''' + description=""" Run the sparsity report at the end of the SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_RESTART_READ = Quantity( type=str, shape=[], - description=''' + description=""" Read the density matrix before the (first) SCF. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_RESTART_WRITE = Quantity( type=str, shape=[], - description=''' + description=""" Write the density matrix at the end of the SCF (currently requires EXTRAPOLATION_ORDER>0). Files might be rather large. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_S_INVERSION = Quantity( type=str, shape=[], - description=''' + description=""" Method used to compute the inverse of S. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_S_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Preconditions S with some appropriate form. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_SIGN_SQRT_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Order of the sqrt iteration, should be 2..5, 3 or 5 recommended - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_LS_SCF_SINGLE_PRECISION_MATRICES = Quantity( type=str, shape=[], - description=''' + description=""" Matrices used within the LS code can be either double or single precision. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CHEBYSHEV" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF_CURVY_STEPS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO(MSection): - ''' + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_SAFE_COMPUTATION = Quantity( type=str, shape=[], - description=''' + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_RS_GRID(MSection): - ''' + """ Set options that influence how the realspace grids are being distributed in parallel runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_MGRID_RS_GRID_DISTRIBUTION_LAYOUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of slices in the x, y and z directions.-1 specifies that any number of slices is OK.If a given distribution can not be satisfied, a replicated grid will result.Also see LOCK_DISTRIBUTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_RS_GRID_DISTRIBUTION_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Parallelization strategy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_RS_GRID_HALO_REDUCTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to reduce the halo of the distributed grid (experimental features). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_RS_GRID_LOCK_DISTRIBUTION = Quantity( type=str, shape=[], - description=''' + description=""" Expert use only, only basic QS deals correctly with a non-default value.If the distribution is locked, a grid will have the same distribution asthe next finer multigrid (provided it is distributed).If unlocked, all grids can be distributed freely. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_RS_GRID_MAX_DISTRIBUTED_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" If the multigrid-level of a grid is larger than the parameter, it will not be distributed in the automatic scheme. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_RS_GRID_MEMORY_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" A grid will only be distributed if the memory usage for that grid (including halo) is smaller than a replicated grid by this parameter. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_MGRID(MSection): - ''' + """ multigrid information - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_MGRID_COMMENSURATE = Quantity( type=str, shape=[], - description=''' + description=""" If the grids should be commensurate. If true overrides the progression factor and the cutoffs of the sub grids - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the finest grid level. Default value for SE or DFTB calculation is 1.0 [Ry]. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_MULTIGRID_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" List of cutoff values to set up multigrids manually - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_MULTIGRID_SET = Quantity( type=str, shape=[], - description=''' + description=""" Activate a manual setting of the multigrids - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_NGRIDS = Quantity( type=str, shape=[], - description=''' + description=""" The number of multigrids to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_PROGRESSION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Factor used to find the cutoff of the multigrids that where not given explicitly - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_REALSPACE = Quantity( type=str, shape=[], - description=''' + description=""" If both rho and rho_gspace are needed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Determines the grid at which a Gaussian is mapped, giving the cutoff used for a gaussian with alpha=1. A value 50+-10Ry might be required for highly accurate results, Or for simulations with a variable cell. Versions prior to 2.3 used a default of 30Ry. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MGRID_SKIP_LOAD_BALANCE_DISTRIBUTED = Quantity( type=str, shape=[], - description=''' + description=""" Skip load balancing on distributed multigrids, which might be memory intensive.If not explicitly specified, runs using more than 1024 MPI tasks will default to .TRUE. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_INTERPOLATOR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_RS_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_RS_GRID'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_MGRID_RS_GRID"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_PERIODIC_EFIELD(MSection): - ''' + """ parameters for finite periodic electric field computed using the Berry phase approach. IMPORTANT: Can only be used in combination with OT. Can not be used in combination with RTP or EMD. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_PERIODIC_EFIELD_INTENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Intensity of the electric field in a.u - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_PERIODIC_EFIELD_POLARISATION = Quantity( type=str, shape=[], - description=''' + description=""" Polarisation vector of electric field - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES(MSection): - ''' + """ Enables the use of multipoles in the treatment of the electrostatics. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES_EPS_POL = Quantity( type=str, shape=[], - description=''' + description=""" Specify the rmsd threshold for the derivatives of the energy towards the Cartesian dipoles components - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES_MAX_IPOL_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum number of iterations for induced dipoles - ''') - - x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES_MAX_MULTIPOLE_EXPANSION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES_MAX_MULTIPOLE_EXPANSION = ( + Quantity( + type=str, + shape=[], + description=""" Specify the maximum level of multipoles expansion used for the electrostatics. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES_POL_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the method to obtain self consistent induced multipole moments. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the Multipoles - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID(MSection): - ''' + """ Set options that influence how the realspace grids are being distributed in parallel runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID_DISTRIBUTION_LAYOUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of slices in the x, y and z directions.-1 specifies that any number of slices is OK.If a given distribution can not be satisfied, a replicated grid will result.Also see LOCK_DISTRIBUTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID_DISTRIBUTION_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Parallelization strategy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID_HALO_REDUCTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to reduce the halo of the distributed grid (experimental features). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID_LOCK_DISTRIBUTION = Quantity( type=str, shape=[], - description=''' + description=""" Expert use only, only basic QS deals correctly with a non-default value.If the distribution is locked, a grid will have the same distribution asthe next finer multigrid (provided it is distributed).If unlocked, all grids can be distributed freely. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID_MAX_DISTRIBUTED_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" If the multigrid-level of a grid is larger than the parameter, it will not be distributed in the automatic scheme. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID_MEMORY_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" A grid will only be distributed if the memory usage for that grid (including halo) is smaller than a replicated grid by this parameter. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD(MSection): - ''' + """ Ewald parameters controlling electrostatic only for CLASSICAL MM. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" alpha parameter associated with Ewald (EWALD|PME|SPME). Recommended for small systems is is alpha = 3.5 / r_cut. Tuning alpha, r_cut and gmax is needed to obtain O(N**1.5) scaling for ewald. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_EPSILON = Quantity( type=str, shape=[], - description=''' + description=""" tolerance of gaussians for fft interpolation (PME only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_EWALD_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Expected accuracy in the Ewald sum. This number affects only the calculation of the cutoff for the real-space term of the ewald summation (EWALD|PME|SPME) as well as the construction of the neighbor lists (if the cutoff for non-bonded terms is smaller than the value employed to compute the EWALD real-space term). This keyword has no effect on the reciprocal space term (which can be tuned independently). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_EWALD_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" The type of ewald you want to perform. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_GMAX = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points (SPME and EWALD). If a single number is specified,the same number of points is used for all three directions on the grid.If three numbers are given, each direction can have a different number of points.The number of points needs to be FFTable (which depends on the library used) and odd for EWALD.The optimal number depends e.g. on alpha and the size of the cell. 1 point per Angstrom is common. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_NS_MAX = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points on small mesh (PME only), should be odd. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_O_SPLINE = Quantity( type=str, shape=[], - description=''' + description=""" order of the beta-Euler spline (SPME only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_EWALD_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Explicitly provide the real-space cutoff of the ewald summation (EWALD|PME|SPME). If present, overwrites the estimate of EWALD_ACCURACY and may affect the construction of the neighbor lists for non-bonded terms (in FIST), if the value specified is larger than the cutoff for non-bonded interactions. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_MULTIPOLES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD_RS_GRID" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MT(MSection): - ''' + """ Sets up parameters of Martyna-Tuckerman poisson solver. Note that exact results are only guaranteed if the unit cell is twice as large as charge density (and serious artefacts can result if the cell is much smaller). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MT_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Convergence parameter ALPHA*RMIN. Default value 7.0 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MT_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the multiplicative factor for the CUTOFF keyword in MULTI_GRID section. The result gives the cutoff at which the 1/r non-periodic FFT3D is evaluated.Default is 2.0 - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE(MSection): - ''' + """ Controls the checking of the G-space term Spline Interpolation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR(MSection): - ''' + """ controls the interpolation for the G-space term - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing of basic information during the run - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE(MSection): - ''' + """ This section is used to set up the decoupling of QM periodic images with the use of density derived atomic point charges. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_ANALYTICAL_GTERM = Quantity( type=str, shape=[], - description=''' + description=""" Evaluates the Gterm in the Ewald Scheme analytically instead of using Splines. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_EWALD_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Precision achieved in the Ewald sum. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_NGRIDS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of grid points used for the Interpolation of the G-space term - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Real space cutoff for the Ewald sum. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_CHECK_SPLINE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_INTERPOLATOR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_WAVELET(MSection): - ''' + """ Sets up parameters of wavelet based poisson solver.This solver allows for non- periodic (PERIODIC NONE) boundary conditions and slab-boundary conditions (but only PERIODIC XZ).It does not require very large unit cells, only that the density goes to zero on the faces of the cell.The use of PREFERRED_FFT_LIBRARY FFTSG is required - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_WAVELET_SCF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of scaling function used in the wavelet approach, the total energy depends on this choice,and the convergence with respect to cutoff depends on the selected scaling functions.Possible values are 8,14,16,20,24,30,40,50,60,100 - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_POISSON(MSection): - ''' + """ Sets up the poisson resolutor. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_POISSON_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions on wich apply PBC. Important notice, this only applies to the electrostatics. See the CELL section to specify the periodicity used for e.g. the pair lists. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POISSON_POISSON_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of solver to use to solve the Poisson equation. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_EWALD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_MULTIPOLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_WAVELET = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_WAVELET'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_POISSON_WAVELET"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT(MSection): - ''' + """ Use Becke weight population in a restraint/constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the coefficient of the atom in the atom list (default is one) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_FUNCTIONAL_FORM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the term added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" force constant of the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_TYPE_OF_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of density used for the fitting - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT(MSection): - ''' + """ Use DDAPC charges in a restraint (check code for details) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the coefficient of the atom in the atom list (default is one) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_FUNCTIONAL_FORM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the term added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" force constant of the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_TYPE_OF_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of density used for the fitting - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER(MSection): - ''' + """ Information on where to find DFTB parameters - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_COORDINATION_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Define cutoff for coordination number calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_D3_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling parameters (s6,sr6,s8) for the D3 dispersion method, - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_DISPERSION_PARAMETER_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Specify file that contains the atomic dispersion parameters for the D3 method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_DISPERSION_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Define radius of dispersion interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_DISPERSION_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Use dispersion correction of the specified type. Dispersion correction has to be switched on in the DFTB section. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_HB_SR_PARAM = Quantity( type=str, shape=[], - description=''' + description=""" Uses a modified version for the GAMMA within the SCC-DFTB scheme, specifically tuned for hydrogen bonds. Specify the exponent used in the exponential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_PARAM_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specify file that contains the names of Slater-Koster tables: A plain text file, each line has the format "ATOM1 ATOM2 filename.spl". - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_PARAM_FILE_PATH = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directory with the DFTB parameter files. Used in combination with the filenames specified in the file given in PARAM_FILE_NAME. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_SK_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Define parameter file for atom pair - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER_UFF_FORCE_FIELD = Quantity( type=str, shape=[], - description=''' + description=""" Name of file with UFF parameters that will be used for the dispersion correction. Needs to be specified when DISPERSION==.TRUE., otherwise cp2k crashes with a Segmentation Fault. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB(MSection): - ''' + """ Parameters needed to set up the DFTB methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_DIAGONAL_DFTB3 = Quantity( type=str, shape=[], - description=''' + description=""" Use a diagonal version of the 3rd order energy correction (DFTB3) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_DISPERSION = Quantity( type=str, shape=[], - description=''' + description=""" Use dispersion correction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_DO_EWALD = Quantity( type=str, shape=[], - description=''' + description=""" Use Ewald type method instead of direct sum for Coulomb interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_EPS_DISP = Quantity( type=str, shape=[], - description=''' + description=""" Define accuracy of dispersion interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_HB_SR_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Uses a modified version for the GAMMA within the SCC-DFTB scheme, specifically tuned for hydrogen bonds. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_ORTHOGONAL_BASIS = Quantity( type=str, shape=[], - description=''' + description=""" Assume orthogonal basis set - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DFTB_SELF_CONSISTENT = Quantity( type=str, shape=[], - description=''' + description=""" Use self-consistent method - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB_PARAMETER" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_DISTRIBUTION(MSection): - ''' + """ can be used used to tune the parallel distribution of the data - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_DISTRIBUTION_2D_MOLECULAR_DISTRIBUTION = Quantity( type=str, shape=[], - description=''' + description=""" Distribute the atoms so that atoms belonging to a given molecule are on the same CPU for the 2D distribution. This might give rise to a worse distribution but reduces memory needs of finding the optimal distribution. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DISTRIBUTION_BASIC_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Creates a distribution based on a few heuristics using only minimal memory and CPU time. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DISTRIBUTION_BASIC_SPATIAL_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Creates a distribution with spatial info, using only minimal memory and CPU time. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DISTRIBUTION_COST_MODEL = Quantity( type=str, shape=[], - description=''' + description=""" The cost model that needs to be minimized - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DISTRIBUTION_SKIP_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Do not optimize the distribution, go for something very simple. Might be useful if the optimization, which scales quadratically in system size, is too expensive. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DISTRIBUTION_SYMMETRIC = Quantity( type=str, shape=[], - description=''' + description=""" Take the symmetry of the distribution_2d into account. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_HARRIS(MSection): - ''' + """ This section specifies the flags for the calculation of the harris functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_HARRIS_ACTIVATE = Quantity( type=str, shape=[], - description=''' + description=""" Activates the harris functional. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_HARRIS_HARRIS_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Overrides the QS Energy. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT(MSection): - ''' + """ Use mulliken charges in a restraint (check code for details) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" force constant of the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS( + MSection +): + """ specifies constraints for the exponents of the lri auxiliary basis sets in the optimization. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS_FERMI_EXP = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS_FERMI_EXP = ( + Quantity( + type=str, + shape=[], + description=""" Exponent in the fermi-like constraint function. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS_SCALE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS_SCALE = ( + Quantity( + type=str, + shape=[], + description=""" Defines the upper and lower boundaries as (1+scale)*exp and (1-scale)*exp. Fermi- like constraint function - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS(MSection): - ''' + """ This section specifies the parameters for optimizing the lri auxiliary basis sets for LRIGPW. The Powell optimizer is used. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy for the objective function (RHOEND) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONDITION_WEIGHT = Quantity( type=str, shape=[], - description=''' + description=""" This keyword allows to give different weight factors to the condition number (LOG(cond) is used). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_DEGREES_OF_FREEDOM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the degrees of freedom in the basis optimization. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_GEOMETRIC_SEQUENCE = Quantity( type=str, shape=[], - description=''' + description=""" Exponents are assumed to be a geometric squence. Only the minimal and maximal exponents of one set are optimized and the other exponents are obtained by geometric progression. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_MAX_FUN = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of function evaluations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size for search algorithm (RHOBEG) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_USE_CONDITION_NUMBER = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether condition number should be part of optimization or not - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS_CONSTRAIN_EXPONENTS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT(MSection): - ''' + """ Use S2 in a re/constraint (OT only) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT_FUNCTIONAL_FORM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the term added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" force constant of the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SCPTB(MSection): - ''' + """ Parameters needed to set up the SCPTB methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_COORDINATION_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Define cutoff for coordination number calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_D3_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling parameters (s6,sr6,s8) for the D3 dispersion method, - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_DISPERSION_PARAMETER_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Specify file that contains the atomic dispersion parameters - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_DISPERSION_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Define radius of dispersion interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_DISPERSION = Quantity( type=str, shape=[], - description=''' + description=""" Use dispersion correction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_DO_EWALD = Quantity( type=str, shape=[], - description=''' + description=""" Use Ewald type method instead of direct sum for Coulomb interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_DO_SCC = Quantity( type=str, shape=[], - description=''' + description=""" Use self consistent charge method. Can be used together with DO_SCP to get TB method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_DO_SCP = Quantity( type=str, shape=[], - description=''' + description=""" Use SCP method. Can be used to switch off SCP to get a SCC-DFTB method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_PAIR_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Define cutoff for pair potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_PARAMETER_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specify file that contains the atomic parameters - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCPTB_STO_NG = Quantity( type=str, shape=[], - description=''' + description=""" Provides the order of the Slater orbital expansion of Gaussian-Type Orbitals. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_COULOMB(MSection): - ''' + """ Setup parameters for the evaluation of the COULOMB term in SE calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_COULOMB_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for the evaluation of the Coulomb integrals. For non- periodic calculation the default value is exactly the full cell dimension, in order to evaluate all pair interactions. Instead, for periodic calculations the default numerical value is used. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_COULOMB_RC_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), where r0=2.0*RC_TAPER-20.0*RC_RANGE. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_COULOMB_RC_TAPER = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for Tapering Coulomb integrals. If not specified it assumes the same value specified for the CUTOFF. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE(MSection): - ''' + """ Setup parameters for the evaluation of the EXCHANGE and core Hamiltonian terms in SE calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for the evaluation of the Exchange integrals. For non- periodic calculation the default value is exactly the full cell dimension, in order to evaluate all pair interactions. Instead, for periodic calculations the default is the minimum value between 1/4 of the cell dimension and the value specified in input (either explicitly defined or the default numerical value). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE_RC_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), where r0=2.0*RC_TAPER-20.0*RC_RANGE. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE_RC_TAPER = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for Tapering Exchange integrals. If not specified it assumes the same value specified for the CUTOFF. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_GA(MSection): - ''' + """ Sets up memory parameters for the storage of the integrals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_GA_NCELLS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the number of linked cells for the neighbor list. Default value is number of processors - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION(MSection): - ''' + """ Setup parameters for the evaluation of the long-range correction term in SE calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for the evaluation of the long-ranbe correction integrals. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION_RC_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), where r0=2.0*RC_TAPER-20.0*RC_RANGE. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION_RC_TAPER = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for Tapering the long-range correction integrals. If not specified it assumes the same value specified for the CUTOFF. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_MEMORY(MSection): - ''' + """ Sets up memory parameters for the storage of the integrals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_MEMORY_COMPRESS = Quantity( type=str, shape=[], - description=''' + description=""" Enables the compression of the integrals in memory. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_MEMORY_EPS_STORAGE = Quantity( type=str, shape=[], - description=''' + description=""" Storage threshold for compression is EPS_STORAGE - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_MEMORY_MAX_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of memory [MB] used to store precomputed (possibly compressed) two-electron two-center integrals - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS(MSection): - ''' + """ This section specifies the input parameters for the construction of neighbor lists. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS_GEO_CHECK = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables the check that two atoms are never below the minimum value used to construct the splines during the construction of the neighbouring list. Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum value of the radius used to generate the splines. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS_NEIGHBOR_LISTS_FROM_SCRATCH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS_NEIGHBOR_LISTS_FROM_SCRATCH = ( + Quantity( + type=str, + shape=[], + description=""" This keyword enables the building of the neighbouring list from scratch. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS_VERLET_SKIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the Verlet Skin for the generation of the neighbor lists - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_SCREENING(MSection): - ''' + """ Setup parameters for the tapering of the Coulomb/Exchange Screening in KDSO-D integral scheme, - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_SCREENING_RC_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), where r0=2*RC_TAPER-20*RC_RANGE. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_SCREENING_RC_TAPER = Quantity( type=str, shape=[], - description=''' + description=""" Atomic Cutoff Radius Cutoff for Tapering the screening term. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE(MSection): - ''' + """ Parameters needed to set up the Semi-empirical methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_ANALYTICAL_GRADIENTS = Quantity( type=str, shape=[], - description=''' + description=""" Nuclear Gradients are computed analytically or numerically - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_COORDINATION_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Define cutoff for coordination number calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_D3_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling parameters (s6,sr6,s8) for the D3 dispersion method, - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_DELTA = Quantity( type=str, shape=[], - description=''' + description=""" Step size in finite difference force calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_DISPERSION_PARAMETER_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Specify file that contains the atomic dispersion parameters - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_DISPERSION_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Define radius of dispersion interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_DISPERSION = Quantity( type=str, shape=[], - description=''' + description=""" Use dispersion correction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_FORCE_KDSO_D_EXCHANGE = Quantity( type=str, shape=[], - description=''' + description=""" This keywords forces the usage of the KDSO-D integral screening for the Exchange integrals (default is to apply the screening only to the Coulomb integrals. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_INTEGRAL_SCREENING = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form for the - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_ORTHOGONAL_BASIS = Quantity( type=str, shape=[], - description=''' + description=""" Assume orthogonal basis set. This flag is overwritten by methods with fixed orthogonal/non-orthogonal basis set. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of treatment for the electrostatic long-range part in semi- empirical calculations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_SCP = Quantity( type=str, shape=[], - description=''' + description=""" Perform a SCP-NDDO calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SE_STO_NG = Quantity( type=str, shape=[], - description=''' + description=""" Provides the order of the Slater orbital expansion of Gaussian-Type Orbitals. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_COULOMB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_COULOMB'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_COULOMB"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_EXCHANGE"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_GA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_GA'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_GA"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_LR_CORRECTION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_MEMORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_MEMORY"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_NEIGHBOR_LISTS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_SCREENING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE_SCREENING"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_QS(MSection): - ''' + """ parameters needed to set up the Quickstep framework - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_QS_ALMO_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Perform ALMO SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_ALPHA0_HARD = Quantity( type=str, shape=[], - description=''' + description=""" GAPW: Exponent for hard compensation charge - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_BCSR_CODE = Quantity( type=str, shape=[], - description=''' + description=""" Selects BCSR pathway. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_CHECK_BCSR_CODE = Quantity( type=str, shape=[], - description=''' + description=""" Check the BCSR code on actual data, once per QS run. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_CORE_PPL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the method used to calculate the local pseudopotential contribution. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_DEBUG_LRI_INTEGRALS = Quantity( type=str, shape=[], - description=''' + description=""" Debug the integrals needed for LRIGPW. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_CORE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Precision for mapping the core charges.Overrides EPS_DEFAULT/100.0 value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_CPC = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the GAPW projection. Overrides EPS_DEFAULT value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_DEFAULT = Quantity( type=str, shape=[], - description=''' + description=""" Try setting all EPS_xxx to values leading to an energy correct up to EPS_DEFAULT - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_FILTER_MATRIX = Quantity( type=str, shape=[], - description=''' + description=""" Sets the threshold for filtering matrix elements. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_GVG_RSPACE = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the realspace KS matrix element integration. Overrides SQRT(EPS_DEFAULT) value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_KG_ORB = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision used in coloring the subsets for the Kim-Gordon method. Overrides SQRT(EPS_DEFAULT) value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_PGF_ORB = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the overlap matrix elements. Overrides SQRT(EPS_DEFAULT) value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_PPL = Quantity( type=str, shape=[], - description=''' + description=""" Adjusts the precision for the local part of the pseudo potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_PPNL = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the non-local part of the pseudo potential. Overrides sqrt(EPS_DEFAULT) value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_RHO_GSPACE = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the density mapping in gspace.Overrides EPS_DEFAULT value..Overrides EPS_RHO value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_RHO_RSPACE = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the density mapping in rspace.Overrides EPS_DEFAULT value..Overrides EPS_RHO value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPS_RHO = Quantity( type=str, shape=[], - description=''' + description=""" Sets precision of the density mapping on the grids.Overrides EPS_DEFAULT value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPSFIT = Quantity( type=str, shape=[], - description=''' + description=""" GAPW: precision to give the extention of a hard gaussian - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPSISO = Quantity( type=str, shape=[], - description=''' + description=""" GAPW: precision to determine an isolated projector - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPSRHO0 = Quantity( type=str, shape=[], - description=''' + description=""" GAPW : precision to determine the range of V(rho0-rho0soft) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EPSSVD = Quantity( type=str, shape=[], - description=''' + description=""" GAPW: tolerance used in the singular value decomposition of the projector matrix - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EXTRAPOLATION_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Order for the PS or ASPC extrapolation (typically 2-4). Higher order might bring more accuracy, but comes, for large systems, also at some cost. In some cases, a high order extrapolation is not stable, and the order needs to be reduced. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_EXTRAPOLATION = Quantity( type=str, shape=[], - description=''' + description=""" Extrapolation strategy for the wavefunction during e.g. MD.PS and ASPC are recommended, see also EXTRAPOLATION_ORDER. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_FORCE_PAW = Quantity( type=str, shape=[], - description=''' + description=""" Use the GAPW scheme also for atoms with soft basis sets, i.e. the local densities are computed even if hard and soft should be equal. If this keyword is not set to true, those atoms with soft basis sets are treated by a GPW scheme, i.e. the corresponding density contribution goes on the global grid and is expanded in PW. This option nullifies the effect of the GPW_TYPE in the atomic KIND - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_KG_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Use a Kim-Gordon-like scheme. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_LADDN0 = Quantity( type=str, shape=[], - description=''' + description=""" GAPW : integer added to the max L of the basis set, used to determine the maximum value of L for the compensation charge density. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_LMAXN0 = Quantity( type=str, shape=[], - description=''' + description=""" GAPW : max L number for the expansion compensation densities in spherical gaussians - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_LMAXN1 = Quantity( type=str, shape=[], - description=''' + description=""" GAPW : max L number for expansion of the atomic densities in spherical gaussians - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_LS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Perform a linear scaling SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_MAP_CONSISTENT = Quantity( type=str, shape=[], - description=''' + description=""" Compute the exact derivative (Hks) of the energy with respect to the density matrix. This is slightly more expensive than using an approximate computation, but consistent mapping can improve the stability of the SCF procedure, especially for a tight EPS_SCF and a less tight EPS_DEFAULT. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_MAX_RAD_LOCAL = Quantity( type=str, shape=[], - description=''' + description=""" GAPW : maximum radius of gaussian functions included in the generation of projectors - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the electronic structure method that should be employed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_PW_GRID_BLOCKED = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to set the distribution in g-space for the pw grids and their FFT. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_PW_GRID_LAYOUT = Quantity( type=str, shape=[], - description=''' + description=""" Force a particular real-space layout for the plane waves grids. Numbers ≤ 0 mean that this dimension is free, incorrect layouts will be ignored. The default (/-1,-1/) causes CP2K to select a good value, i.e. plane distributed for large grids, more general distribution for small grids. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_PW_GRID = Quantity( type=str, shape=[], - description=''' + description=""" What kind of PW_GRID should be employed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_QUADRATURE = Quantity( type=str, shape=[], - description=''' + description=""" GAPW: algorithm to construct the atomic radial grids - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_SCP = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional self-consistent polarization through additional response basis functions (read in through AUX_BASIS. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_QS_TRANSPORT = Quantity( type=str, shape=[], - description=''' + description=""" Perform transport calculations (coupling CP2K and OMEN) - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_BECKE_RESTRAINT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_DDAPC_RESTRAINT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_DFTB"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_DISTRIBUTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_DISTRIBUTION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_DISTRIBUTION"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_HARRIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_HARRIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_HARRIS"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_MULLIKEN_RESTRAINT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_QS_OPTIMIZE_LRI_BASIS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_S2_RESTRAINT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SCPTB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SCPTB'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SCPTB"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS_SE"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION(MSection): - ''' + """ Parameters needed to set up the real time propagation for the electron dynamics - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_ACCURACY_REFINEMENT = Quantity( type=str, shape=[], - description=''' + description=""" If using density propagation some parts should be calculated with a higher accuracy than the rest to reduce numerical noise. This factor determines by how much the filtering threshold is reduced for these calculations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_APPLY_DELTA_PULSE = Quantity( type=str, shape=[], - description=''' + description=""" Applies a delta kick to the initial wfn (only RTP for now - the EMD case is not yet implemented). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_ASPC_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Speciefies how many steps will be used for extrapolation. One will be always used which is means X(t+dt)=X(t) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_CALCULATE_IDEMPOTENCY = Quantity( type=str, shape=[], - description=''' + description=""" Calculates the idempotency. Costs some performance. Is for free if McWeeny is used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_DELTA_PULSE_DIRECTION = Quantity( type=str, shape=[], - description=''' + description=""" Direction of the applied electric field. The k vector is given as 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_DELTA_PULSE_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no longer being periodic with the unit cell. The norm of k is the strength of the applied electric field in atomic units. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_DENSITY_PROPAGATION = Quantity( type=str, shape=[], - description=''' + description=""" The density matrix is propagated instead of the molecular orbitals. This allows for a linear scaling simulation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_EPS_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the self consistent propagator loop. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_EXP_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy for the taylor and pade approximation. This is only an upper bound bound since the norm used for the guess is an upper bound for the needed one. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_HFX_BALANCE_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" If HFX is used, this keyword forces a redistribution/recalculation of the integrals, balanced with respect to the in core steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_INITIAL_WFN = Quantity( type=str, shape=[], - description=''' + description=""" Controls the initial WFN used for propagation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_MAT_EXP = Quantity( type=str, shape=[], - description=''' + description=""" Which method should be used to calculate the exponential in the propagator. For Ehrenfest MD only the Taylor method works, for real time propagation diagonalization works as well. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximal number of iterations for the self consistent propagator loop. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_MCWEENY_EPS = Quantity( type=str, shape=[], - description=''' + description=""" Threshold after which McWeeny is terminated - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_MCWEENY_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Determines the maximum amount of McWeeny steps used after each converged step in density propagation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_ORTHONORMAL = Quantity( type=str, shape=[], - description=''' + description=""" Performs rtp in the orthonormal basis, currently only works with density propagation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Apply a delta-kick that is compatible with periodic boundary conditions for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of the initial wfn. Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN, and not for restarts (RT_RESTART). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_PROPAGATOR = Quantity( type=str, shape=[], - description=''' + description=""" Which propagator should be used for the orbitals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_SC_CHECK_START = Quantity( type=str, shape=[], - description=''' + description=""" Speciefies how many iteration steps will be done without a check for self consistency. Can save some time in big calculations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION_WRITE_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" For density propagation. It writes out the density matrix after each step - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_RELATIVISTIC(MSection): - ''' + """ parameters needed and setup for relativistic calculations - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_RELATIVISTIC_DKH_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" The order of the DKH transformation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_RELATIVISTIC_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" type of relativistic correction used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_RELATIVISTIC_POTENTIAL = Quantity( type=str, shape=[], - description=''' + description=""" External potential used in DKH transformation, full 1/r or erfc(r)/r - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_RELATIVISTIC_TRANSFORMATION = Quantity( type=str, shape=[], - description=''' + description=""" Type of DKH transformation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_RELATIVISTIC_Z_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The minimal atomic number considered for atom transformation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_RELATIVISTIC_ZORA_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of ZORA method to be used - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_ANDREUSSI(MSection): - ''' + """ Define the parameters of the dielectric smoothing function proposed by Andreussi et al. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCCS_ANDREUSSI_RHO_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Maximum density value used for the smoothing of the dielectric function - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_ANDREUSSI_RHO_MIN = Quantity( type=str, shape=[], - description=''' + description=""" Minimum density value used for the smoothing of the dielectric function - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_FATTEBERT_GYGI(MSection): - ''' + """ Define the parameters of the dielectric smoothing function proposed by Fattebert and Gygi - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCCS_FATTEBERT_GYGI_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter β changes the width of the interface solute-solvent - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_FATTEBERT_GYGI_RHO_ZERO = Quantity( type=str, shape=[], - description=''' + description=""" Parameter ρ0 defines the critical density in the middle of the interface solute-solvent - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCCS(MSection): - ''' + """ Define the parameters for self-consistent continuum solvation (SCCS) model - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCCS_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Solvent specific tunable parameter for the calculation of the repulsion term Grep = α S where S is the (quantum) surface of the cavity - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Solvent specific tunable parameter for the calculation of the dispersion term Gdis = β V where V is the (quantum) volume of the cavity - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_DELTA_RHO = Quantity( type=str, shape=[], - description=''' + description=""" Numerical increment for the calculation of the (quantum) surface of the solute cavity - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_DERIVATIVE_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method for the calculation of the numerical derivatives on the real-space grids - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_DIELECTRIC_CONSTANT = Quantity( type=str, shape=[], - description=''' + description=""" Dielectric constant of the solvent - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_EPS_SCCS = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance for the convergence of the polarisation density, i.e. requested accuracy for the SCCS iteration cycle - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" The SCCS iteration cycle is activated only if the SCF iteration cycle is converged to this threshold value - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Surface tension of the solvent used for the calculation of the cavitation term Gcav = γ S where S is the (quantum) surface of the cavity - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of SCCS iteration steps performed to converge within the given tolerance - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method used for the smoothing of the dielectric function - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_MIXING = Quantity( type=str, shape=[], - description=''' + description=""" Mixing parameter (Hartree damping) employed during the iteration procedure - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCCS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the SCCS section - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_ANDREUSSI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_ANDREUSSI'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_ANDREUSSI"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_FATTEBERT_GYGI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_FATTEBERT_GYGI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCCS_FATTEBERT_GYGI" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON(MSection): - ''' + """ Settings for DAVIDSON - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_CONV_MOS_PERCENT = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_CONV_MOS_PERCENT = ( + Quantity( + type=str, + shape=[], + description=""" Minimal percent of MOS that have to converge within the Davidson loop before the SCF iteration is completed and a new Hamiltonian is computed - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (0.001 doing normally fine). For the other preconditioners, making this value larger (0.2) will tame the preconditioner in case of poor initial guesses. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_FIRST_PREC = Quantity( type=str, shape=[], - description=''' + description=""" First SCF iteration at which a Preconditioner is employed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_NEW_PREC_EACH = Quantity( type=str, shape=[], - description=''' + description=""" Number of SCF iterations after which a new Preconditioner is computed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_PRECOND_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" How the preconditioner is applied to the residual. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Type of preconditioner to be used with all minimization schemes. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON_SPARSE_MOS = Quantity( type=str, shape=[], - description=''' + description=""" Use MOS as sparse matrix and avoid as much as possible multiplications with full matrices - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING( + MSection +): + """ Define type and parameters for mixingprocedures to be applied to the density matrix. Normally, only one type of mixing method should be accepted. The mixing procedures activated by this section are only active for diagonalization methods, i.e. not with minimization methods based on OT. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_ALPHA = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_ALPHA = ( + Quantity( + type=str, + shape=[], + description=""" Fraction of new density to be included - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Denominator parameter in Kerker damping introduced to suppress charge sloshing: rho_mix(g) =rho_in(g) + alpha*g^2/(g^2 + beta^2)*(rho_out(g)-rho_in(g)) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_W0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_W0 = ( + Quantity( + type=str, + shape=[], + description=""" w0 parameter used in Broyden mixing - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_WMAX = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_WMAX = ( + Quantity( + type=str, + shape=[], + description=""" Settings for BROY_WMAX - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_WREF = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_WREF = ( + Quantity( + type=str, + shape=[], + description=""" Settings for BROY_WREF - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_GVEC_EXP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_GVEC_EXP = ( + Quantity( + type=str, + shape=[], + description=""" Restricts the G-space mixing to lower part of G-vector spectrum, up to a G0, by assigning the exponent of the Gaussian that can be represented by vectors smaller than G0 within a certain accuracy. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_STEP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_STEP = ( + Quantity( + type=str, + shape=[], + description=""" Upper bound for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_METHOD = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_METHOD = ( + Quantity( + type=str, + shape=[], + description=""" Mixing method to be applied - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_N_SIMPLE_MIX = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_N_SIMPLE_MIX = ( + Quantity( + type=str, + shape=[], + description=""" Number of kerker damping iterations before starting other mixing procedures - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NBUFFER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NBUFFER = ( + Quantity( + type=str, + shape=[], + description=""" Number of previous steps stored for the actual mixing scheme - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NMIXING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NMIXING = ( + Quantity( + type=str, + shape=[], + description=""" Minimal number of density mixing (should be greater than 0),before starting DIIS - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NSKIP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NSKIP = ( + Quantity( + type=str, + shape=[], + description=""" Number of initial iteration for which the mixing is skipped - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_PULAY_ALPHA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_PULAY_ALPHA = ( + Quantity( + type=str, + shape=[], + description=""" Fraction of new density to be added to the Pulay expansion - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_PULAY_BETA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_PULAY_BETA = ( + Quantity( + type=str, + shape=[], + description=""" Fraction of residual contribution to be added to Pulay expansion - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_R_FACTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_R_FACTOR = ( + Quantity( + type=str, + shape=[], + description=""" Control factor for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_REGULARIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Regularization parameter to stabilize the inversion of the residual matrix {Yn^t Yn} in the multisecant mixing scheme (noise) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the mixing procedure - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF(MSection): - ''' + """ Activation of self-consistenf subspace refinement by diagonalization of H by adjusting the occupation but keeping the MOS unchanged. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_ADAPT_SCF = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_ADAPT_SCF = ( + Quantity( + type=str, + shape=[], + description=""" Required density matrix accuracy as compared to current SCF convergence - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_ENE = Quantity( type=str, shape=[], - description=''' + description=""" Required energy accuracy for convergence of subspace diagonalization - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_SKIP_SUB_DIAG = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_SKIP_SUB_DIAG = ( + Quantity( + type=str, + shape=[], + description=""" Level of convergence to be reached before starting the internal loop of subspace rotations. Above this threshold only the outer diagonalization method is used. If negative the subspace rotation is started at the first iteration - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations for the SCF inner loop - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" controls the activation of inner SCF loop to refine occupations in MOS subspace - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV(MSection): - ''' + """ Settings for KRYLOV - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV_CHECK_MOS_CONV = Quantity( type=str, shape=[], - description=''' + description=""" This requires to check the convergence of MOS also when standard diagonalization steps are performed, if the block krylov approach is active. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV_EPS_KRYLOV = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterion for the MOs - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV_EPS_STD_DIAG = Quantity( type=str, shape=[], - description=''' + description=""" Level of convergence to be reached before starting the Lanczos procedure. Above this threshold a standard diagonalization method is used. If negative Lanczos is started at the first iteration - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV_NBLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the block of vectors refined simultaneously by the Lanczos procedure - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV_NKRYLOV = Quantity( type=str, shape=[], - description=''' + description=""" Dimension of the Krylov space used for the Lanczos refinement - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT(MSection): - ''' + """ Sets the various options for the orbital transformation (OT) method. Default settings already provide an efficient, yet robust method. Most systems benefit from using the FULL_ALL preconditioner combined with a small value (0.001) of ENERGY_GAP.Well-behaved systems might benefit from using a DIIS minimizer. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to be used for OT - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_ADAPTIVE_SIGMA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_ADAPTIVE_SIGMA = ( + Quantity( + type=str, + shape=[], + description=""" Enable adaptive curvature estimation - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Underrelaxation for the broyden mixer - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_ENABLE_FLIP = Quantity( type=str, shape=[], - description=''' + description=""" Ensure positive definite update - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_ETA = Quantity( type=str, shape=[], - description=''' + description=""" Dampening of estimated energy curvature. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_FORGET_HISTORY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_FORGET_HISTORY = ( + Quantity( + type=str, + shape=[], + description=""" Forget history on bad approximation - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Backtracking parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Growth limit of curvature. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA_DECREASE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA_DECREASE = ( + Quantity( + type=str, + shape=[], + description=""" Reduction of curvature on bad approximation. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA_MIN = Quantity( type=str, shape=[], - description=''' + description=""" Minimum adaptive curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Curvature of energy functional. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_ENERGIES = Quantity( type=str, shape=[], - description=''' + description=""" Optimize orbital energies for use in Fermi-Dirac smearing (requires ROTATION and FD smearing to be active). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (can be a small number, e.g. 0.002). @@ -8327,236 +9617,271 @@ class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT(MSection): issues). In general, heigher values will tame the preconditioner in case of poor initial guesses. A negative value will leave the choice to CP2K depending on type of preconditioner. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_EPS_IRAC_FILTER_MATRIX = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_EPS_IRAC_FILTER_MATRIX = ( + Quantity( + type=str, + shape=[], + description=""" Sets the threshold for filtering the matrices. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_EPS_IRAC_QUICK_EXIT = Quantity( type=str, shape=[], - description=''' + description=""" Only one extra refinement iteration is done when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_EPS_IRAC_SWITCH = Quantity( type=str, shape=[], - description=''' + description=""" The algorithm switches to the polynomial refinement when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_EPS_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Targeted accuracy during the refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_EPS_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy of the taylor expansion for the matrix functions, should normally be kept as is. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_GOLD_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Target relative uncertainty in the location of the minimum for LINESEARCH GOLD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_IRAC_DEGREE = Quantity( type=str, shape=[], - description=''' + description=""" The refinement polynomial degree (2, 3 or 4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_LINESEARCH = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the OT minimizer, in increasing order of robustness and cost. MINIMIZER CG combined with LINESEARCH GOLD should always find an electronic minimum. Whereas the 2PNT minimizer is almost always OK, 3PNT might be needed for systems in which successive OT CG steps do not decrease the total energy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_MAX_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_MAX_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Maximum order of the Taylor expansion before diagonalisation is prefered, for large parallel runs a slightly higher order could sometimes result in a small speedup. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_MINIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Minimizer to be used with the OT method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_MIXED_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Uses a mixed precision algorithm.With a well behaved basis set (i.e. condition number less than 1/eps_sp)it provides double precision accuracy results and up to a 2 fold speedup for building and applying the preconditioner. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_N_HISTORY_VEC = Quantity( type=str, shape=[], - description=''' + description=""" Number of history vectors to be used with DIIS or BROYDEN - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_NONDIAG_ENERGY_STRENGTH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_NONDIAG_ENERGY_STRENGTH = ( + Quantity( + type=str, + shape=[], + description=""" The prefactor for the non-diagonal energy penalty (FD smearing) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_NONDIAG_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Add a non-diagonal energy penalty (FD smearing) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_OCCUPATION_PRECONDITIONER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_OCCUPATION_PRECONDITIONER = ( + Quantity( + type=str, + shape=[], + description=""" Preconditioner with the occupation numbers (FD smearing) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_ON_THE_FLY_LOC = Quantity( type=str, shape=[], - description=''' + description=""" On the fly localization of the molecular orbitals. Can only be used with OT/IRAC. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_ORTHO_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" The orthogonality method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_PRECOND_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" How the preconditioner is applied to the residual. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Type of preconditioner to be used with all minimization schemes. They differ in effectiveness, cost of construction, cost of application. Properly preconditioned minimization can be orders of magnitude faster than doing nothing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_ROTATION = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional variables so that rotations of the occupied subspace are allowed as well, only needed for cases where the energy is not invariant under a rotation of the occupied subspace such as non-singlet restricted calculations or fractional occupations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_SAFE_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Reject DIIS steps if they point away from the minimum, do SD in that case. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_SCP_NDDO = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional self-consistent polarization through response basis set = orbital basis set for NDDO.) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the ot method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT_STEPSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial stepsize used for the line search, sometimes this parameter can be reduced to stablize DIIS or to improve the CG behavior in the first few steps. The optimal value depends on the quality of the preconditioner. A negative values leaves the choice to CP2K depending on the preconditioner. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION(MSection): - ''' + """ Set up type and parameters for Kohn-Sham matrix diagonalization. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to be used for diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_EPS_ADAPT = Quantity( type=str, shape=[], - description=''' + description=""" Required accuracy in iterative diagonalization as compared to current SCF convergence - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_EPS_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Required accuracy in iterative diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_EPS_JACOBI = Quantity( type=str, shape=[], - description=''' + description=""" Below this threshold value for the SCF convergence the pseudo-diagonalization method using Jacobi rotations is activated. This method is much faster than a real diagonalization and it is even speeding up while achieving full @@ -8565,281 +9890,326 @@ class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION(MSection): eigenvalue spectrum. The MO eigenvalues are NOT updated. The method might be useful to speed up calculations for large systems e.g. using a semi-empirical method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_JACOBI_THRESHOLD = Quantity( type=str, shape=[], - description=''' + description=""" Controls the accuracy of the pseudo-diagonalization method using Jacobi rotations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations in iterative diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the diagonalization method - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DAVIDSON" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_DIAG_SUB_SCF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_KRYLOV" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION_OT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_MIXING(MSection): - ''' + """ Define type and parameters for mixingprocedures to be applied to the density matrix. Normally, only one type of mixing method should be accepted. The mixing procedures activated by this section are only active for diagonalization methods, i.e. not with minimization methods based on OT. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of new density to be included - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Denominator parameter in Kerker damping introduced to suppress charge sloshing: rho_mix(g) =rho_in(g) + alpha*g^2/(g^2 + beta^2)*(rho_out(g)-rho_in(g)) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_BROY_W0 = Quantity( type=str, shape=[], - description=''' + description=""" w0 parameter used in Broyden mixing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_BROY_WMAX = Quantity( type=str, shape=[], - description=''' + description=""" Settings for BROY_WMAX - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_BROY_WREF = Quantity( type=str, shape=[], - description=''' + description=""" Settings for BROY_WREF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_MAX_GVEC_EXP = Quantity( type=str, shape=[], - description=''' + description=""" Restricts the G-space mixing to lower part of G-vector spectrum, up to a G0, by assigning the exponent of the Gaussian that can be represented by vectors smaller than G0 within a certain accuracy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_MAX_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Upper bound for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Mixing method to be applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_N_SIMPLE_MIX = Quantity( type=str, shape=[], - description=''' + description=""" Number of kerker damping iterations before starting other mixing procedures - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_NBUFFER = Quantity( type=str, shape=[], - description=''' + description=""" Number of previous steps stored for the actual mixing scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_NMIXING = Quantity( type=str, shape=[], - description=''' + description=""" Minimal number of density mixing (should be greater than 0),before starting DIIS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_NSKIP = Quantity( type=str, shape=[], - description=''' + description=""" Number of initial iteration for which the mixing is skipped - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_PULAY_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of new density to be added to the Pulay expansion - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_PULAY_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of residual contribution to be added to Pulay expansion - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_R_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Control factor for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_REGULARIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Regularization parameter to stabilize the inversion of the residual matrix {Yn^t Yn} in the multisecant mixing scheme (noise) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MIXING_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the mixing procedure - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OT(MSection): - ''' + """ Sets the various options for the orbital transformation (OT) method. Default settings already provide an efficient, yet robust method. Most systems benefit from using the FULL_ALL preconditioner combined with a small value (0.001) of ENERGY_GAP.Well-behaved systems might benefit from using a DIIS minimizer. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to be used for OT - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_ADAPTIVE_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Enable adaptive curvature estimation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Underrelaxation for the broyden mixer - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_ENABLE_FLIP = Quantity( type=str, shape=[], - description=''' + description=""" Ensure positive definite update - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_ETA = Quantity( type=str, shape=[], - description=''' + description=""" Dampening of estimated energy curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_FORGET_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Forget history on bad approximation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Backtracking parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Growth limit of curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_SIGMA_DECREASE = Quantity( type=str, shape=[], - description=''' + description=""" Reduction of curvature on bad approximation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_SIGMA_MIN = Quantity( type=str, shape=[], - description=''' + description=""" Minimum adaptive curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_BROYDEN_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Curvature of energy functional. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_ENERGIES = Quantity( type=str, shape=[], - description=''' + description=""" Optimize orbital energies for use in Fermi-Dirac smearing (requires ROTATION and FD smearing to be active). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (can be a small number, e.g. 0.002). @@ -8847,4065 +10217,4897 @@ class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OT(MSection): issues). In general, heigher values will tame the preconditioner in case of poor initial guesses. A negative value will leave the choice to CP2K depending on type of preconditioner. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_EPS_IRAC_FILTER_MATRIX = Quantity( type=str, shape=[], - description=''' + description=""" Sets the threshold for filtering the matrices. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_EPS_IRAC_QUICK_EXIT = Quantity( type=str, shape=[], - description=''' + description=""" Only one extra refinement iteration is done when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_EPS_IRAC_SWITCH = Quantity( type=str, shape=[], - description=''' + description=""" The algorithm switches to the polynomial refinement when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_EPS_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Targeted accuracy during the refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_EPS_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy of the taylor expansion for the matrix functions, should normally be kept as is. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_GOLD_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Target relative uncertainty in the location of the minimum for LINESEARCH GOLD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_IRAC_DEGREE = Quantity( type=str, shape=[], - description=''' + description=""" The refinement polynomial degree (2, 3 or 4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_LINESEARCH = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the OT minimizer, in increasing order of robustness and cost. MINIMIZER CG combined with LINESEARCH GOLD should always find an electronic minimum. Whereas the 2PNT minimizer is almost always OK, 3PNT might be needed for systems in which successive OT CG steps do not decrease the total energy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_MAX_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_MAX_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Maximum order of the Taylor expansion before diagonalisation is prefered, for large parallel runs a slightly higher order could sometimes result in a small speedup. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_MINIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Minimizer to be used with the OT method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_MIXED_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Uses a mixed precision algorithm.With a well behaved basis set (i.e. condition number less than 1/eps_sp)it provides double precision accuracy results and up to a 2 fold speedup for building and applying the preconditioner. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_N_HISTORY_VEC = Quantity( type=str, shape=[], - description=''' + description=""" Number of history vectors to be used with DIIS or BROYDEN - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_NONDIAG_ENERGY_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" The prefactor for the non-diagonal energy penalty (FD smearing) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_NONDIAG_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Add a non-diagonal energy penalty (FD smearing) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_OCCUPATION_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Preconditioner with the occupation numbers (FD smearing) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_ON_THE_FLY_LOC = Quantity( type=str, shape=[], - description=''' + description=""" On the fly localization of the molecular orbitals. Can only be used with OT/IRAC. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_ORTHO_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" The orthogonality method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_PRECOND_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" How the preconditioner is applied to the residual. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Type of preconditioner to be used with all minimization schemes. They differ in effectiveness, cost of construction, cost of application. Properly preconditioned minimization can be orders of magnitude faster than doing nothing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_ROTATION = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional variables so that rotations of the occupied subspace are allowed as well, only needed for cases where the energy is not invariant under a rotation of the occupied subspace such as non-singlet restricted calculations or fractional occupations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_SAFE_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Reject DIIS steps if they point away from the minimum, do SD in that case. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_SCP_NDDO = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional self-consistent polarization through response basis set = orbital basis set for NDDO.) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the ot method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OT_STEPSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial stepsize used for the line search, sometimes this parameter can be reduced to stablize DIIS or to improve the CG behavior in the first few steps. The optimal value depends on the quality of the preconditioner. A negative values leaves the choice to CP2K depending on the preconditioner. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OUTER_SCF(MSection): - ''' + """ parameters controlling the outer SCF loop - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_BISECT_TRUST_COUNT = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of times the same point will be used in bisection, a small number guards against the effect of wrongly converged states. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_DIIS_BUFFER_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of DIIS vectors used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" The target gradient of the outer scf variables. Notice that the EPS_SCF of the inner loop also determines the value that can be reached in the outer loop, typically EPS_SCF of the outer loop must be smaller than EPS_SCF of the inner loop. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_EXTRAPOLATION_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Number of past states used in the extrapolation of the variables during e.g. MD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_MAX_SCF = Quantity( type=str, shape=[], - description=''' + description=""" The maximum number of outer loops - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_OPTIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Method used to bring the outer loop to a stationary point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the outer SCF loop - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" The initial step_size used in the optimizer (currently steepest descent).Note that in cases where a sadle point is sought for (DDAPC_CONSTRAINT), this can be negative - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_OUTER_SCF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies which kind of outer SCF should be employed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF_SMEAR(MSection): - ''' + """ Define the smearing of the MO occupation numbers - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_ELECTRONIC_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Electronic temperature in the case of Fermi-Dirac smearing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_EPS_FERMI_DIRAC = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy checks on occupation numbers use this as a tolerance - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_FIXED_MAGNETIC_MOMENT = Quantity( type=str, shape=[], - description=''' + description=""" Imposed difference between the numbers of electrons of spin up and spin down: m = n(up) - n(down). A negative value (default) allows for a change of the magnetic moment. -1 specifically keeps an integer number of spin up and spin down electrons. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_LIST = Quantity( type=str, shape=[], - description=''' + description=""" A list of fractional occupations to use. Must match the number of states and sum up to the correct number of electrons - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Smearing method to be applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of smearing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SMEAR_WINDOW_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Size of the energy window centred at the Fermi level - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCF(MSection): - ''' + """ parameters needed perform an scf run - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCF_ADDED_MOS = Quantity( type=str, shape=[], - description=''' + description=""" Number of additional MOS added for each spin - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_CHOLESKY = Quantity( type=str, shape=[], - description=''' + description=""" If the cholesky method should be used for computing the inverse of S, and in this case calling which Lapack routines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Threshold on the convergence to start using DIAG/DIIS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_EIGVAL = Quantity( type=str, shape=[], - description=''' + description=""" Throw away linear combinations of basis functions with a small eigenvalue in S - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_LUMO = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy of the computation of the lumo energy - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_SCF_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy for the scf convergence after the history pipeline is filled - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy for the scf convergence - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_LEVEL_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Use level shifting to improve convergence - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MAX_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of DIIS vectors to be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MAX_ITER_LUMO = Quantity( type=str, shape=[], - description=''' + description=""" The maximum number of iteration for the lumo computation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MAX_SCF_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of SCF iterations after the history pipeline is filled - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_MAX_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of SCF iteration to be performed for one optimization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_NCOL_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Sets the number of columns in a scalapack block - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_NROW_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" sets the number of rows in a scalapack block - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_ROKS_F = Quantity( type=str, shape=[], - description=''' + description=""" Allows to define the parameter f for the general ROKS scheme. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_ROKS_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Allows to define all parameters for the high-spin ROKS scheme explicitly. The full set of 6 parameters has to be specified in the order acc, bcc, aoo, boo, avv, bvv - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_ROKS_SCHEME = Quantity( type=str, shape=[], - description=''' + description=""" Selects the ROKS scheme when ROKS is applied. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCF_SCF_GUESS = Quantity( type=str, shape=[], - description=''' + description=""" Change the initial guess for the wavefunction. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCF_DIAGONALIZATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_MIXING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCF_MIXING"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OUTER_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OUTER_SCF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCF_OUTER_SCF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF_SMEAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF_SMEAR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCF_SMEAR"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER(MSection): - ''' + """ Defines the center of the sphere. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER_ATOM_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Defines a list of atoms to define the center of the sphere - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER_FIXED = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the center of the sphere should be fixed or allowed to move - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER_WEIGHT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the weight used to define the center of the sphere (if ATOM_LIST is provided) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Coordinates of the center of the sphere - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE(MSection): - ''' + """ Treats the implicit solvent environment like a sphere - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCRF_SPHERE_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Value of the spherical cavity in the dielectric medium - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE_CENTER" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SCRF(MSection): - ''' + """ Adds an implicit solvation model to the DFT calculation. Know also as Self Consistent Reaction Field. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SCRF_EPS_OUT = Quantity( type=str, shape=[], - description=''' + description=""" Value of the dielectric constant outside the sphere - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SCRF_LMAX = Quantity( type=str, shape=[], - description=''' + description=""" Maximum value of L used in the multipole expansion - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_PROGRAM_RUN_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCRF_SPHERE"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_SIC(MSection): - ''' + """ parameters for the self interaction correction - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_SIC_ORBITAL_SET = Quantity( type=str, shape=[], - description=''' + description=""" Type of orbitals treated with the SIC - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SIC_SIC_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method used to remove the self interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SIC_SIC_SCALING_A = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the coulomb term in sic [experimental] - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SIC_SIC_SCALING_B = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the xc term in sic [experimental] - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_SIC(MSection): - ''' + """ parameters for the self interaction correction - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_SIC_ORBITAL_SET = Quantity( type=str, shape=[], - description=''' + description=""" Type of orbitals treated with the SIC - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_SIC_SIC_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method used to remove the self interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_SIC_SIC_SCALING_A = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the coulomb term in sic [experimental] - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_SIC_SIC_SCALING_B = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the xc term in sic [experimental] - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING(MSection): - ''' + """ Parameters for self interation corrected hybrid functionals - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING_FUNCTIONAL_MODEL = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING_FUNCTIONAL_MODEL = ( + Quantity( + type=str, + shape=[], + description=""" Which model for the coupling constant integration should be used. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING_FUNCTIONAL_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING_FUNCTIONAL_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Which Hybrid functional should be used. (Has to be consistent with the definitions in XC and HF). - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" The point to be used along the adiabatic curve (0 < λ < 1) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Long-range parameter - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO(MSection): - ''' + """ Controls the printing basic info about hf method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI(MSection): - ''' + """ All parameters needed in a HFX RI calculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI_EPS_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of iterative RI fit - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI_EPS_SCREENING = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of geminal integral evaluation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iteration in RI fit - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL(MSection): - ''' + """ Sets up interaction potential if requested - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Determines cutoff radius for the truncated 1/r potential. Only valid when doing truncated calculation - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for short/longrange interaction - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Which interaction potential should be used (Coulomb, longrange or shortrange). - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = ( + Quantity( + type=str, + shape=[], + description=""" Scales Hartree-Fock contribution arising from a coulomb potential. Only valid when doing a mixed potential calculation - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = ( + Quantity( + type=str, + shape=[], + description=""" Scales Hartree-Fock contribution arising from a gaussian potential. Only valid when doing a mixed potential calculation - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = ( + Quantity( + type=str, + shape=[], + description=""" Scales Hartree-Fock contribution arising from a longrange potential. Only valid when doing a mixed potential calculation - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_T_C_G_DATA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL_T_C_G_DATA = ( + Quantity( + type=str, + shape=[], + description=""" Location of the file t_c_g.dat that contains the data for the evaluation of the truncated gamma function - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE(MSection): - ''' + """ Parameters influencing the load balancing of the HF - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for the atomic quartet loops. A proper choice can speedup the calculation. The default (-1) is automatic. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE_NBINS = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins per process used to group atom quartets. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE_RANDOMIZE = Quantity( type=str, shape=[], - description=''' + description=""" This flag controls the randomization of the bin assignment to processes. For highly ordered input structures with a bad load balance, setting this flag to TRUE might improve. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY(MSection): - ''' + """ Sets up memory parameters for the storage of the ERI's if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY_EPS_STORAGE_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor to scale eps_schwarz. Storage threshold for compression will be EPS_SCHWARZ*EPS_STORAGE_SCALING. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY_MAX_DISK_SPACE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of disk space [MB] used to store precomputed compressed four-center integrals. If 0, nothing is stored to disk - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY_MAX_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of memory [MB] to be consumed by the full HFX module. All temporary buffers and helper arrays are subtracted from this number. What remains will be used for storage of integrals. NOTE: This number is assumed to represent the memory available to one MPI process. When running a threaded version, cp2k automatically takes care of distributing the memory among all the threads within a process. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY_STORAGE_LOCATION = Quantity( type=str, shape=[], - description=''' + description=""" Loaction where ERI's are stored if MAX_DISK_SPACE /=0 Expects a path to a directory. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY_TREAT_FORCES_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether the derivative ERI's should be stored to RAM or not. Only meaningful when performing Ehrenfest MD. Memory usage is defined via MAX_MEMORY, i.e. the memory is shared wit the energy ERI's. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PERIODIC(MSection): - ''' + """ Sets up periodic boundary condition parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PERIODIC_NUMBER_OF_SHELLS = Quantity( type=str, shape=[], - description=''' + description=""" Number of shells taken into account for periodicity. By default, cp2k tries to automatically evaluate this number. This algorithm might be to conservative, resulting in some overhead. You can try to adjust this number in order to make a calculation cheaper. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING(MSection): - ''' + """ Sets up screening parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING_EPS_SCHWARZ_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. This will be approximately the accuracy of the forces, and should normally be similar to EPS_SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING_EPS_SCHWARZ = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = ( + Quantity( + type=str, + shape=[], + description=""" Recalculates integrals on the fly if the actual density matrix is larger by a given factor than the initial one. If the factor is set to 0.0_dp, this feature is disabled. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING_SCREEN_ON_INITIAL_P = Quantity( type=str, shape=[], - description=''' + description=""" Screen on an initial density matrix. For the first MD step this matrix must be provided by a Restart File. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING_SCREEN_P_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the electronic repulsion integrals for the forces using the density matrix. This results in a significant speedup for large systems, but might require a somewhat tigher EPS_SCHWARZ_FORCES. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF(MSection): - ''' + """ Sets up the Hartree-Fock parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" The fraction of Hartree-Fock to add to the total energy. 1.0 implies standard Hartree-Fock if used with XC_FUNCTIONAL NONE. NOTE: In a mixed potential calculation this should be set to 1.0, otherwise all parts are multiplied with this factor. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PW_HFX_BLOCKSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Improve the performance of pw_hfx at the cost of some additional memory by storing the realspace representation of PW_HFX_BLOCKSIZE states. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PW_HFX = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Hartree-Fock energy also in the plane wave basis.The value is ignored, and intended for debugging only. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_TREAT_LSD_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines how spin denisities are taken into account. If true, the beta spin density is included via a second in core call. If false, alpha and beta spins are done in one shot - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HF_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_HFX_RI" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_LOAD_BALANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_MEMORY" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PERIODIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_PERIODIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF_SCREENING" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL(MSection): - ''' + """ Information on the non local dispersion functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the FFT grid used in the calculation of the nonlocal vdW functional [Ry]. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_KERNEL_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_KERNEL_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" Name of the kernel data file, may include a path.vdW_kernel_table.dat is for DRSLL and LMKLL andrVV10_kernel_table.dat is for rVV10. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Parameters b and C of the rVV10 functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of functional (the corresponding kernel data file should be selected).Allows for common forms such as vdW-DF, vdW-DF2, optB88-vdW, rVV10. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_VERBOSE_OUTPUT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL_VERBOSE_OUTPUT = ( + Quantity( + type=str, + shape=[], + description=""" Extensive output for non local functionals - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD( + MSection +): + """ Controls the printing of some info about DFTD contributions - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL( + MSection +): + """ Information on the pair potential to calculate dispersion - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOM_COORDINATION_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordination number of a set of atoms for the C9 term in DFT-D3. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOMPARM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOMPARM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies parameters for atom types (in atomic units). If not provided default parameters are used (DFT-D2). - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_CALCULATE_C9_TERM = Quantity( type=str, shape=[], - description=''' + description=""" Calculate C9 terms in DFT-D3 model - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3_SCALING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3_SCALING = ( + Quantity( + type=str, + shape=[], + description=""" XC Functional dependent scaling parameters (s6,sr6,s8) for the DFT-D3 method, if set to zero CP2K attempts to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3BJ_SCALING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3BJ_SCALING = ( + Quantity( + type=str, + shape=[], + description=""" XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D3(BJ) method, if set to zero CP2K attempts to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EPS_CN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EPS_CN = ( + Quantity( + type=str, + shape=[], + description=""" Cutoff value for coordination number function (DFT-D3 method) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EXP_PRE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EXP_PRE = ( + Quantity( + type=str, + shape=[], + description=""" Prefactor in exponential damping factor (DFT-D2 potential) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_KIND_COORDINATION_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordination number for a kind for the C9 term in DFT-D3. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_LONG_RANGE_CORRECTION = Quantity( type=str, shape=[], - description=''' + description=""" Calculate a long range correction to the DFT-D3 model - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PARAMETER_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the parameter file, may include a path - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_R_CUTOFF = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_R_CUTOFF = ( + Quantity( + type=str, + shape=[], + description=""" Range of potential. The cutoff will be 2 times this value - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_C9_TERM = Quantity( type=str, shape=[], - description=''' + description=""" Calculate C9 terms in DFT-D3 model using reference coordination numbers - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Use parameters for this specific density functional. For available D3 and D3(BJ) parameters see: http://www.thch.uni-bonn.de/tc/downloads/DFT-D3/functionals.html, http://www.thch.uni-bonn.de/tc/downloads/DFT-D3/functionalsbj.html - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_SCALING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_SCALING = ( + Quantity( + type=str, + shape=[], + description=""" XC Functional dependent scaling parameter, if set to zero CP2K attempts to guess the xc functional that is in use and sets the associated scaling parameter. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_VERBOSE_OUTPUT = Quantity( type=str, shape=[], - description=''' + description=""" Extensive output for the DFT-D2 and DFT-D3 models - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL(MSection): - ''' + """ This section combines all possible additional dispersion corrections to the normal XC functionals. This can be more functionals or simple empirical pair potentials. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of dispersion/vdW functional or potential to use - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_NON_LOCAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL_PAIR_POTENTIAL" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CPHF(MSection): - ''' + """ Parameters influencing the solution of the Z-vector equations in MP2 gradients calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CPHF_EPS_CONV = Quantity( type=str, shape=[], - description=''' + description=""" Convergence threshold for the solution of the Z-vector equations. The Z-vector equations have the form of a linear system of equations Ax=b, convergence is achieved when |Ax-b|<=EPS_CONV. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CPHF_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations allowed for the solution of the Z-vector equations. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL( + MSection +): + """ Parameters influencing the direct canonical method - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL_BIG_SEND = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL_BIG_SEND = ( + Quantity( + type=str, + shape=[], + description=""" Send big messages between processes (useful for >48 processors). - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL( + MSection +): + """ Parameters the interaction potential in computing the biel integrals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, TShPSC operator). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TRUNCATION_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines truncation radius for the truncated TShPSC potential. Only valid when doing truncated calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TSHPSC_DATA = Quantity( type=str, shape=[], - description=''' + description=""" Location of the file TShPSC.dat that contains the data for the evaluation of the TShPSC G0 - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO(MSection): - ''' + """ Controls the printing basic info about MP2 method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS( + MSection +): + """ Parameters influencing the optimization of the RI MP2 basis. Only exponents of non- contracted auxiliary basis can be optimized. An initial RI auxiliary basis has to be specified. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_BASIS_SIZE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_BASIS_SIZE = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the size of the auxiliary basis set automatically generated as initial guess. This will be effective only if RI_AUX_BASIS_SET in the KIND section and NUM_FUNC are not specified. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_I_REL = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_I_REL = ( + Quantity( + type=str, + shape=[], + description=""" Target accuracy in the relative deviation of the amplitudes calculated with and without RI approximation, (more details in Chem.Phys.Lett.294(1998)143). - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_RI = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_RI = ( + Quantity( + type=str, + shape=[], + description=""" Target accuracy in the absolute difference between the RI-MP2 and the exact MP2 energy, DRI=ABS(E_MP2-E_RI-MP2). - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_EPS_DERIV = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_EPS_DERIV = ( + Quantity( + type=str, + shape=[], + description=""" The derivatives of the MP2 energy with respect to the exponents of the basis are calculated numerically. The change in the exponent a_i employed for the numerical evaluation is defined as h_i=EPS_DERIV*a_i. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_MAX_ITER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_MAX_ITER = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the maximum number of steps in the RI basis optimization. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_NUM_FUNC = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS_NUM_FUNC = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the number of function, for each angular momentum (s, p, d ...), employed in the automatically generated initial guess. This will be effective only if RI_AUX_BASIS_SET in the KIND section is not specified. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE(MSection): - ''' + """ Parameters influencing the RI-SOS-MP2-Laplace method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE_QUADRATURE_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of quadrature points for the numerical integration in the RI-SOS- MP2-Laplace method. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE_SIZE_INTEG_GROUP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE_SIZE_INTEG_GROUP = ( + Quantity( + type=str, + shape=[], + description=""" Group size for the integration in the Laplace method, that is the number of processes involved in the computation of each integration point. SIZE_INTEG_GROUP has to be a multiple of GROUP_SIZE in the WF_CORRELATION section. The default (-1) is automatic. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2(MSection): - ''' + """ Parameters influencing the RI MP2 method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for communication in RI-MP2. Larger BLOCK_SIZE reduces communication but requires more memory. The default (-1) is automatic. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2_EPS_CANONICAL = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2_EPS_CANONICAL = ( + Quantity( + type=str, + shape=[], + description=""" Threshold for discriminate if a given ij pairs of the unrelaxed MP2 density matrix has to be calculated with a canonical reformulation based on the occupied eigenvalues differences. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2_FREE_HFX_BUFFER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2_FREE_HFX_BUFFER = ( + Quantity( + type=str, + shape=[], + description=""" Free the buffer containing the 4 center integrals used in the Hartree-Fock exchange calculation. This will be effective only for gradients calculations, since for the energy only case, the buffers are released by default. (Right now debugging only). - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO( + MSection +): + """ Controls the printing basic info about hf method - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI( + MSection +): + """ All parameters needed in a HFX RI calculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of iterative RI fit - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_SCREENING = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of geminal integral evaluation - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_MAX_ITER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_MAX_ITER = ( + Quantity( + type=str, + shape=[], + description=""" Maximum number of iteration in RI fit - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL( + MSection +): + """ Sets up interaction potential if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines cutoff radius for the truncated 1/r potential. Only valid when doing truncated calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for short/longrange interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, longrange or shortrange). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a coulomb potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a gaussian potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a longrange potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_T_C_G_DATA = Quantity( type=str, shape=[], - description=''' + description=""" Location of the file t_c_g.dat that contains the data for the evaluation of the truncated gamma function - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE( + MSection +): + """ Parameters influencing the load balancing of the HF - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for the atomic quartet loops. A proper choice can speedup the calculation. The default (-1) is automatic. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_NBINS = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins per process used to group atom quartets. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_RANDOMIZE = Quantity( type=str, shape=[], - description=''' + description=""" This flag controls the randomization of the bin assignment to processes. For highly ordered input structures with a bad load balance, setting this flag to TRUE might improve. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY( + MSection +): + """ Sets up memory parameters for the storage of the ERI's if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_EPS_STORAGE_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor to scale eps_schwarz. Storage threshold for compression will be EPS_SCHWARZ*EPS_STORAGE_SCALING. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_DISK_SPACE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of disk space [MB] used to store precomputed compressed four-center integrals. If 0, nothing is stored to disk - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_MEMORY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_MEMORY = ( + Quantity( + type=str, + shape=[], + description=""" Defines the maximum amount of memory [MB] to be consumed by the full HFX module. All temporary buffers and helper arrays are subtracted from this number. What remains will be used for storage of integrals. NOTE: This number is assumed to represent the memory available to one MPI process. When running a threaded version, cp2k automatically takes care of distributing the memory among all the threads within a process. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_STORAGE_LOCATION = Quantity( type=str, shape=[], - description=''' + description=""" Loaction where ERI's are stored if MAX_DISK_SPACE /=0 Expects a path to a directory. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_TREAT_FORCES_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether the derivative ERI's should be stored to RAM or not. Only meaningful when performing Ehrenfest MD. Memory usage is defined via MAX_MEMORY, i.e. the memory is shared wit the energy ERI's. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC( + MSection +): + """ Sets up periodic boundary condition parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC_NUMBER_OF_SHELLS = Quantity( type=str, shape=[], - description=''' + description=""" Number of shells taken into account for periodicity. By default, cp2k tries to automatically evaluate this number. This algorithm might be to conservative, resulting in some overhead. You can try to adjust this number in order to make a calculation cheaper. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING( + MSection +): + """ Sets up screening parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. This will be approximately the accuracy of the forces, and should normally be similar to EPS_SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Recalculates integrals on the fly if the actual density matrix is larger by a given factor than the initial one. If the factor is set to 0.0_dp, this feature is disabled. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_ON_INITIAL_P = Quantity( type=str, shape=[], - description=''' + description=""" Screen on an initial density matrix. For the first MD step this matrix must be provided by a Restart File. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_P_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the electronic repulsion integrals for the forces using the density matrix. This results in a significant speedup for large systems, but might require a somewhat tigher EPS_SCHWARZ_FORCES. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF(MSection): - ''' + """ Sets up the Hartree-Fock parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" The fraction of Hartree-Fock to add to the total energy. 1.0 implies standard Hartree-Fock if used with XC_FUNCTIONAL NONE. NOTE: In a mixed potential calculation this should be set to 1.0, otherwise all parts are multiplied with this factor. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX_BLOCKSIZE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX_BLOCKSIZE = ( + Quantity( + type=str, + shape=[], + description=""" Improve the performance of pw_hfx at the cost of some additional memory by storing the realspace representation of PW_HFX_BLOCKSIZE states. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Hartree-Fock energy also in the plane wave basis.The value is ignored, and intended for debugging only. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_TREAT_LSD_IN_CORE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_TREAT_LSD_IN_CORE = ( + Quantity( + type=str, + shape=[], + description=""" Determines how spin denisities are taken into account. If true, the beta spin density is included via a second in core call. If false, alpha and beta spins are done in one shot - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA(MSection): - ''' + """ Parameters influencing the RI RPA method - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_MINIMAX_QUADRATURE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_MINIMAX_QUADRATURE = ( + Quantity( + type=str, + shape=[], + description=""" Use the Minimax quadrature scheme for performing the numerical integration. Maximum number of quadrature point limited to 20. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_MM_STYLE = Quantity( type=str, shape=[], - description=''' + description=""" Matrix multiplication style for the Q matrix. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_QUADRATURE_POINTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_QUADRATURE_POINTS = ( + Quantity( + type=str, + shape=[], + description=""" Number of quadrature points for the numerical integration in the RI-RPA method. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_SIZE_FREQ_INTEG_GROUP = Quantity( type=str, shape=[], - description=''' + description=""" Group size for frequency integration, that is the number of processes involved in the computation of each integration point. SIZE_FREQ_INTEG_GROUP has to be a multiple of GROUP_SIZE in the WF_CORRELATION section. The default (-1) is automatic. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA_HF" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW(MSection): - ''' + """ Parameters for the GPW approach in Wavefunction-based Correlation methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the finest grid level in the MP2 gpw integration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW_EPS_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Determines a threshold for the DBCSR based multiply (usually 10 times smaller than EPS_GRID). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW_EPS_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Determines a threshold for the GPW based integration - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW_PRINT_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" How much output is written by the individual groups. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Determines the grid at which a Gaussian is mapped. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION(MSection): - ''' + """ Sets up the Wavefunction-based Correlation parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CALC_COND_NUM = Quantity( type=str, shape=[], - description=''' + description=""" Calculate the condition number of the (P|Q) matrix for the RI methods. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_COL_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the column block used in the SCALAPACK block cyclic data distribution.Default is (COL_BLOCK=-1) is automatic. A proper choice can speedup the parallel matrix multiplication in the case of RI-RPA and RI-SOS-MP2-Laplace. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_GROUP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Group size used in the computation of the integrals. Default is to use all processors (GROUP_SIZE=-1).A smaller group size (for example the node size), might a better choice if the actual MP2 time is large compared to integral computation time. This is usually the case if the total number of processors is not too large. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed total memory usage during MP2 methods [Mb]. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Which method should be used to compute the MP2 energy - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_ROW_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the row block used in the SCALAPACK block cyclic data distribution.Default is (ROW_BLOCK=-1) is automatic. A proper choice can speedup the parallel matrix multiplication in the case of RI-RPA and RI-SOS-MP2-Laplace. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_SCALE_S = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor of the singlet energy component (opposite spin, OS). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_SCALE_T = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor of the triplet energy component (same spin, SS). - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CPHF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CPHF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_CPHF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_DIRECT_CANONICAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_MP2_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_OPT_RI_BASIS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_LAPLACE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_MP2" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_RI_RPA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION_WFC_GPW" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC( + MSection +): + """ Uses the Becke 88 longrange exchange functional in an adiabatic fashion - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_LAMBDA = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_LAMBDA = ( + Quantity( + type=str, + shape=[], + description=""" Defines the parameter of the adiabatic curve - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_OMEGA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_OMEGA = ( + Quantity( + type=str, + shape=[], + description=""" Potential parameter in erf(omega*r)/r - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SCALE_X = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SCALE_X = ( + Quantity( + type=str, + shape=[], + description=""" scales the exchange part of the functional - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR(MSection): - ''' + """ Uses the Becke 88 longrange exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Potential parameter in erf(omega*r)/r - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88(MSection): - ''' + """ Uses the Becke 88 exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97(MSection): - ''' + """ Uses the Becke 97 exchange correlation functional - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97_PARAMETRIZATION = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97_PARAMETRIZATION = ( + Quantity( + type=str, + shape=[], + description=""" switches between the B97 and Grimme parametrization - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional, if -1 the default for the given parametrization is used - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL( + MSection +): + """ Becke Roussel exchange hole model. Can be usedas long range correction with a truncated coulomb potential - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_CUTOFF_RADIUS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_CUTOFF_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Defines the cutoff radius for the truncation. If put to zero, the standard full range potential will be used - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter in the exchange hole. Usually this is put to 1.0 or 0.8 - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SCALE_X = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SCALE_X = ( + Quantity( + type=str, + shape=[], + description=""" scales the exchange part of the functional - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF(MSection): - ''' + """ Uses the BEEFvdW exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_CS1(MSection): - ''' + """ Uses the CS1 functional - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_CS1_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_CS1_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09(MSection): - ''' + """ Combination of three different exchange hole models - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for Becke Roussel hole - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH(MSection): - ''' + """ Uses the HCTH class of functionals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH_PARAMETER_SET = Quantity( type=str, shape=[], - description=''' + description=""" Which version of the parameters should be used - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA(MSection): - ''' + """ Uses one of the KE_GGA functionals (optimized versions of some of these functionals might be available outside this section). These functionals are needed for the computation of the kinetic energy in the Kim-Gordon method. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Which one of the KE_GGA functionals should be used - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC(MSection): - ''' + """ To be used for KG runs. Uses kinetic energy functionals from LIBXC, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" names of the functionals, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:manual .The precise list of available functionals depends on the version of libxc interfaced (currently 2.0.1). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" parameters of the functionals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factors of the functionals - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR( + MSection +): + """ LDA exchange hole model in truncated coulomb potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SCALE_X = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SCALE_X = ( + Quantity( + type=str, + shape=[], + description=""" scales the exchange part of the functional - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC(MSection): - ''' + """ Uses functionals from LIBXC, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" names of the functionals, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:manual .The precise list of available functionals depends on the version of libxc interfaced (currently 2.0.1). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" parameters of the functionals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factors of the functionals - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC( + MSection +): + """ Uses the LYP correlation functional in an adiabatic fashion - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameter of the adiabatic curve. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP(MSection): - ''' + """ Uses the LYP functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX(MSection): - ''' + """ Uses the OPTX functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C(MSection): - ''' + """ Uses the P86C functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PADE(MSection): - ''' + """ Uses the PADE functional - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PADE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PADE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR( + MSection +): + """ PBE exchange hole model in trucanted coulomb potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SCALE_X = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SCALE_X = ( + Quantity( + type=str, + shape=[], + description=""" scales the exchange part of the functional - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE(MSection): - ''' + """ Uses the PBE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" switches between the different parametrizations of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92(MSection): - ''' + """ Uses the PerdewWang correlation functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Which one of parametrizations should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the energy functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81(MSection): - ''' + """ Uses the PZ functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Which one of parametrizations should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TFW(MSection): - ''' + """ Uses the TFW functional - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TFW_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TFW_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TF(MSection): - ''' + """ Uses the TF functional - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TF_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TF_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS(MSection): - ''' + """ Uses the TPSS functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN(MSection): - ''' + """ Uses the VWN functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN_FUNCTIONAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which version of the VWN functional should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA(MSection): - ''' + """ Uses the XALPHA (SLATER) functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA_XA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xa parameter (this does not change the exponent, just the mixing) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA(MSection): - ''' + """ Uses one of the XGGA functionals (optimized versions of some of these functionals might be available outside this section). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Which one of the XGGA functionals should be used - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE(MSection): - ''' + """ Uses the short range PBE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" screening parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE_SCALE_X0 = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the original hole PBE-functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL(MSection): - ''' + """ The xc functional to use - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Shortcut for the most common functional combinations. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88_LR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE88" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE97" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_BEEF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_CS1 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_CS1'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_CS1" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_GV09" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_HCTH" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_GGA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_KE_LIBXC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LIBXC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP_ADIABATIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_LYP" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_OPTX" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_P86C" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PADE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PADE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PADE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PBE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PW92" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_PZ81" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TFW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TFW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TFW" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_TPSS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_VWN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XALPHA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XGGA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL_XWPBE" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID(MSection): - ''' + """ The xc parameters used when calculating the xc on the grid - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID_USE_FINER_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Uses a finer grid only to calculate the xc - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID_XC_DERIV = Quantity( type=str, shape=[], - description=''' + description=""" The method used to compute the derivatives - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID_XC_SMOOTH_RHO = Quantity( type=str, shape=[], - description=''' + description=""" The density smoothing used for the xc calculation - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP(MSection): - ''' + """ Uses the SAOP potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the alpha parameter (default = 1.19). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the beta parameter (default = 0.01). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP_K_RHO = Quantity( type=str, shape=[], - description=''' + description=""" Value of the K_rho parameter (default = 0.42). - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL(MSection): - ''' + """ The xc potential to use (CAREFUL: xc potential here refers to potentials that are not derived from an xc functional, but rather are modelled directly. Therefore there is no consistent xc energy available. To still get an energy expression, see ENERGY below - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" How to determine the total energy. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL_SAOP" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC(MSection): - ''' + """ parameters needed calculate the xc potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_DENSITY_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on the density used by the xc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_DENSITY_SMOOTH_CUTOFF_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for the smoothing procedure inxc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_FUNCTIONAL_ROUTINE = Quantity( type=str, shape=[], - description=''' + description=""" Select the code for xc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_GRADIENT_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on the gradient of the density used by the xc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_XC_TAU_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on tau used by the xc calculation - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_ADIABATIC_RESCALING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_HF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_VDW_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_WF_CORRELATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_FUNCTIONAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_GRID" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC_XC_POTENTIAL" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT(MSection): - ''' + """ parameters needed to set up the Time Dependent Density Functional PT - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_CONVERGENCE = Quantity( type=str, shape=[], - description=''' + description=""" The convergence of the eigenvalues - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_DIAG_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Diagonalization method used in tddfpt - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_INVERT_S = Quantity( type=str, shape=[], - description=''' + description=""" use the inverse of the overlap matrix - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_KERNEL = Quantity( type=str, shape=[], - description=''' + description=""" compute the kernel (debug purpose only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_LSD_SINGLETS = Quantity( type=str, shape=[], - description=''' + description=""" compute singlets using lsd vxc kernel - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_MAX_KV = Quantity( type=str, shape=[], - description=''' + description=""" maximal number of Krylov space vectors - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_NEV = Quantity( type=str, shape=[], - description=''' + description=""" number of excitations to calculate - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_NLUMO = Quantity( type=str, shape=[], - description=''' + description=""" number of additional unoccupied orbitals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_NREORTHO = Quantity( type=str, shape=[], - description=''' + description=""" number of reorthogonalization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_OE_CORR = Quantity( type=str, shape=[], - description=''' + description=""" Which type of orbital eigenvalue correction to use\\n(to yield better HOMO-LUMO energies) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" use the preconditioner (only for Davidson) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_RES_ETYPE = Quantity( type=str, shape=[], - description=''' + description=""" (singlets/triplets) for restricted calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TDDFPT_RESTARTS = Quantity( type=str, shape=[], - description=''' + description=""" maximal number subspace search restarts - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_SIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_SIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_SIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT_XC"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_TRANSPORT(MSection): - ''' + """ Specifies the parameters for transport, sets parameters for the OMEN code, see also http://www.nano-tcad.ethz.ch/ - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_BANDWIDTH = Quantity( type=str, shape=[], - description=''' + description=""" The number of neighboring unit cells that one unit cell interacts with. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_COLZERO_THRESHOLD = Quantity( type=str, shape=[], - description=''' + description=""" The smallest number that is not zero in the full diagonalization part. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_CORES_PER_NODE = Quantity( type=str, shape=[], - description=''' + description=""" Number of cores per node. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_DENSITY_MATRIX_CONSTRUCTION_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method used for constructing the density matrix - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_ENERGY_INTERVAL = Quantity( type=str, shape=[], - description=''' + description=""" Average distance for big intervals in energy vector. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_EPS_DECAY = Quantity( type=str, shape=[], - description=''' + description=""" The smallest imaginary part that a decaying eigenvalue may have not to be considered as propagating. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_EPS_EIGVAL_DEGEN = Quantity( type=str, shape=[], - description=''' + description=""" Filter for degenerate bands in the injection vector. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_EPS_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" The smallest eigenvalue that is kept. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_EPS_MU = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy to which the Fermi level should be determined. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_EPS_SINGULARITY_CURVATURES = Quantity( type=str, shape=[], - description=''' + description=""" Filter for degenerate bands in the bandstructure. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_MIN_INTERVAL = Quantity( type=str, shape=[], - description=''' + description=""" Smallest enery distance in energy vector. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_N_ABSCISSAE = Quantity( type=str, shape=[], - description=''' + description=""" The number of abscissae per integration interval on the real axis. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_N_CELLS = Quantity( type=str, shape=[], - description=''' + description=""" The number of unit cells. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_N_DOF = Quantity( type=str, shape=[], - description=''' + description=""" Number of degrees of freedom for the contact unit cell. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_N_KPOINTS = Quantity( type=str, shape=[], - description=''' + description=""" The number of k points for determination of the singularities. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_NUM_CONTACTS = Quantity( type=str, shape=[], - description=''' + description=""" The number of contacts. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_NUM_INTERVAL = Quantity( type=str, shape=[], - description=''' + description=""" Max number of energy points per small interval. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_TASKS_PER_POINT = Quantity( type=str, shape=[], - description=''' + description=""" Number of tasks per energy point. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_TRANSPORT_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Temperature. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_LOCALIZE(MSection): - ''' + """ Use one of the available methods to define the localization and possibly to optimize it to a minimum or a maximum. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_CRAZY_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scale angles - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_CRAZY_USE_DIAG = Quantity( type=str, shape=[], - description=''' + description=""" Use diagonalization (slow) or pade based calculation of matrix exponentials. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_ENERGY_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Select the orbitals to be localized within the given energy range.This type of selection cannot be added on top of the selection through a LIST. It reads to reals that are lower and higher boundaries of the energy range. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_EPS_LOCALIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance used in the convergence criterium of the localization methods. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_EPS_OCCUPATION = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance in the occupation number to select only fully occupied orbitals for the rotation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_JACOBI_FALLBACK = Quantity( type=str, shape=[], - description=''' + description=""" Use Jacobi method in case no convergence was achieved by using the crazy rotations method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_LIST_UNOCCUPIED = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the unoccupied states to be localized, up to now only valid in combination with GPW. This keyword has to be present if unoccupied states should be localized. This keyword can be repeated several times(useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the occupied wfn to be localizedThis keyword can be repeated several times(useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_LOCHOMO_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" File name where to read the MOS fromwhich to restart the localization procedure for occupied states - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_LOCLUMO_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" File name where to read the MOS fromwhich to restart the localization procedure for unoccupied states - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_MAX_CRAZY_ANGLE = Quantity( type=str, shape=[], - description=''' + description=""" Largest allowed angle for the crazy rotations algorithm (smaller is slower but more stable). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations used for localization methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method of optimization if any - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_MIN_OR_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Requires the maximization of the spread of the wfn - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_OPERATOR = Quantity( type=str, shape=[], - description=''' + description=""" Type of opertator which defines the spread functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_OUT_ITER_EACH = Quantity( type=str, shape=[], - description=''' + description=""" Every how many iterations of the localization algorithm(Jacobi) the tolerance value is printed out - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Restart the localization from a set of orbitals read from a localization restart file. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the MOS localization procedure - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_STATES = Quantity( type=str, shape=[], - description=''' + description=""" Which states to localize, LUMO up to now only available in GPW - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_LOCALIZE_USE_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Generate an improved initial guess based on a history of results, which is useful during MD.Will only work if the number of states to be localized remains constant. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON(MSection): - ''' + """ Settings for DAVIDSON - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_CONV_MOS_PERCENT = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_CONV_MOS_PERCENT = ( + Quantity( + type=str, + shape=[], + description=""" Minimal percent of MOS that have to converge within the Davidson loop before the SCF iteration is completed and a new Hamiltonian is computed - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (0.001 doing normally fine). For the other preconditioners, making this value larger (0.2) will tame the preconditioner in case of poor initial guesses. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_FIRST_PREC = Quantity( type=str, shape=[], - description=''' + description=""" First SCF iteration at which a Preconditioner is employed - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_NEW_PREC_EACH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_NEW_PREC_EACH = ( + Quantity( + type=str, + shape=[], + description=""" Number of SCF iterations after which a new Preconditioner is computed - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_PRECOND_SOLVER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_PRECOND_SOLVER = ( + Quantity( + type=str, + shape=[], + description=""" How the preconditioner is applied to the residual. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_PRECONDITIONER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_PRECONDITIONER = ( + Quantity( + type=str, + shape=[], + description=""" Type of preconditioner to be used with all minimization schemes. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON_SPARSE_MOS = Quantity( type=str, shape=[], - description=''' + description=""" Use MOS as sparse matrix and avoid as much as possible multiplications with full matrices - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING( + MSection +): + """ Define type and parameters for mixingprocedures to be applied to the density matrix. Normally, only one type of mixing method should be accepted. The mixing procedures activated by this section are only active for diagonalization methods, i.e. not with minimization methods based on OT. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_ALPHA = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_ALPHA = ( + Quantity( + type=str, + shape=[], + description=""" Fraction of new density to be included - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BETA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BETA = ( + Quantity( + type=str, + shape=[], + description=""" Denominator parameter in Kerker damping introduced to suppress charge sloshing: rho_mix(g) =rho_in(g) + alpha*g^2/(g^2 + beta^2)*(rho_out(g)-rho_in(g)) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_W0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_W0 = ( + Quantity( + type=str, + shape=[], + description=""" w0 parameter used in Broyden mixing - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_WMAX = Quantity( type=str, shape=[], - description=''' + description=""" Settings for BROY_WMAX - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_BROY_WREF = Quantity( type=str, shape=[], - description=''' + description=""" Settings for BROY_WREF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_GVEC_EXP = Quantity( type=str, shape=[], - description=''' + description=""" Restricts the G-space mixing to lower part of G-vector spectrum, up to a G0, by assigning the exponent of the Gaussian that can be represented by vectors smaller than G0 within a certain accuracy. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_STEP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_MAX_STEP = ( + Quantity( + type=str, + shape=[], + description=""" Upper bound for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_METHOD = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_METHOD = ( + Quantity( + type=str, + shape=[], + description=""" Mixing method to be applied - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_N_SIMPLE_MIX = Quantity( type=str, shape=[], - description=''' + description=""" Number of kerker damping iterations before starting other mixing procedures - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NBUFFER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NBUFFER = ( + Quantity( + type=str, + shape=[], + description=""" Number of previous steps stored for the actual mixing scheme - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NMIXING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NMIXING = ( + Quantity( + type=str, + shape=[], + description=""" Minimal number of density mixing (should be greater than 0),before starting DIIS - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NSKIP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_NSKIP = ( + Quantity( + type=str, + shape=[], + description=""" Number of initial iteration for which the mixing is skipped - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_PULAY_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of new density to be added to the Pulay expansion - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_PULAY_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of residual contribution to be added to Pulay expansion - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_R_FACTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_R_FACTOR = ( + Quantity( + type=str, + shape=[], + description=""" Control factor for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_REGULARIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Regularization parameter to stabilize the inversion of the residual matrix {Yn^t Yn} in the multisecant mixing scheme (noise) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the mixing procedure - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF( + MSection +): + """ Activation of self-consistenf subspace refinement by diagonalization of H by adjusting the occupation but keeping the MOS unchanged. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_ADAPT_SCF = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_ADAPT_SCF = ( + Quantity( + type=str, + shape=[], + description=""" Required density matrix accuracy as compared to current SCF convergence - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_ENE = Quantity( type=str, shape=[], - description=''' + description=""" Required energy accuracy for convergence of subspace diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_EPS_SKIP_SUB_DIAG = Quantity( type=str, shape=[], - description=''' + description=""" Level of convergence to be reached before starting the internal loop of subspace rotations. Above this threshold only the outer diagonalization method is used. If negative the subspace rotation is started at the first iteration - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MAX_ITER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MAX_ITER = ( + Quantity( + type=str, + shape=[], + description=""" Maximum number of iterations for the SCF inner loop - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of inner SCF loop to refine occupations in MOS subspace - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF_MIXING" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV(MSection): - ''' + """ Settings for KRYLOV - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV_CHECK_MOS_CONV = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV_CHECK_MOS_CONV = ( + Quantity( + type=str, + shape=[], + description=""" This requires to check the convergence of MOS also when standard diagonalization steps are performed, if the block krylov approach is active. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV_EPS_KRYLOV = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterion for the MOs - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV_EPS_STD_DIAG = Quantity( type=str, shape=[], - description=''' + description=""" Level of convergence to be reached before starting the Lanczos procedure. Above this threshold a standard diagonalization method is used. If negative Lanczos is started at the first iteration - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV_NBLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the block of vectors refined simultaneously by the Lanczos procedure - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV_NKRYLOV = Quantity( type=str, shape=[], - description=''' + description=""" Dimension of the Krylov space used for the Lanczos refinement - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT(MSection): - ''' + """ Sets the various options for the orbital transformation (OT) method. Default settings already provide an efficient, yet robust method. Most systems benefit from using the FULL_ALL preconditioner combined with a small value (0.001) of ENERGY_GAP.Well-behaved systems might benefit from using a DIIS minimizer. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to be used for OT - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_ADAPTIVE_SIGMA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_ADAPTIVE_SIGMA = ( + Quantity( + type=str, + shape=[], + description=""" Enable adaptive curvature estimation - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Underrelaxation for the broyden mixer - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_ENABLE_FLIP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_ENABLE_FLIP = ( + Quantity( + type=str, + shape=[], + description=""" Ensure positive definite update - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_ETA = Quantity( type=str, shape=[], - description=''' + description=""" Dampening of estimated energy curvature. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_FORGET_HISTORY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_FORGET_HISTORY = ( + Quantity( + type=str, + shape=[], + description=""" Forget history on bad approximation - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Backtracking parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Growth limit of curvature. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA_DECREASE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA_DECREASE = ( + Quantity( + type=str, + shape=[], + description=""" Reduction of curvature on bad approximation. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA_MIN = Quantity( type=str, shape=[], - description=''' + description=""" Minimum adaptive curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_BROYDEN_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Curvature of energy functional. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_ENERGIES = Quantity( type=str, shape=[], - description=''' + description=""" Optimize orbital energies for use in Fermi-Dirac smearing (requires ROTATION and FD smearing to be active). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (can be a small number, e.g. 0.002). @@ -12913,236 +15115,275 @@ class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT(MSection): issues). In general, heigher values will tame the preconditioner in case of poor initial guesses. A negative value will leave the choice to CP2K depending on type of preconditioner. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_IRAC_FILTER_MATRIX = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_IRAC_FILTER_MATRIX = ( + Quantity( + type=str, + shape=[], + description=""" Sets the threshold for filtering the matrices. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_IRAC_QUICK_EXIT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_IRAC_QUICK_EXIT = ( + Quantity( + type=str, + shape=[], + description=""" Only one extra refinement iteration is done when the norm is below this value. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_IRAC_SWITCH = Quantity( type=str, shape=[], - description=''' + description=""" The algorithm switches to the polynomial refinement when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Targeted accuracy during the refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_EPS_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy of the taylor expansion for the matrix functions, should normally be kept as is. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_GOLD_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Target relative uncertainty in the location of the minimum for LINESEARCH GOLD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_IRAC_DEGREE = Quantity( type=str, shape=[], - description=''' + description=""" The refinement polynomial degree (2, 3 or 4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_LINESEARCH = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the OT minimizer, in increasing order of robustness and cost. MINIMIZER CG combined with LINESEARCH GOLD should always find an electronic minimum. Whereas the 2PNT minimizer is almost always OK, 3PNT might be needed for systems in which successive OT CG steps do not decrease the total energy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_MAX_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_MAX_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Maximum order of the Taylor expansion before diagonalisation is prefered, for large parallel runs a slightly higher order could sometimes result in a small speedup. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_MINIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Minimizer to be used with the OT method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_MIXED_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Uses a mixed precision algorithm.With a well behaved basis set (i.e. condition number less than 1/eps_sp)it provides double precision accuracy results and up to a 2 fold speedup for building and applying the preconditioner. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_N_HISTORY_VEC = Quantity( type=str, shape=[], - description=''' + description=""" Number of history vectors to be used with DIIS or BROYDEN - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_NONDIAG_ENERGY_STRENGTH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_NONDIAG_ENERGY_STRENGTH = ( + Quantity( + type=str, + shape=[], + description=""" The prefactor for the non-diagonal energy penalty (FD smearing) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_NONDIAG_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Add a non-diagonal energy penalty (FD smearing) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_OCCUPATION_PRECONDITIONER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_OCCUPATION_PRECONDITIONER = ( + Quantity( + type=str, + shape=[], + description=""" Preconditioner with the occupation numbers (FD smearing) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_ON_THE_FLY_LOC = Quantity( type=str, shape=[], - description=''' + description=""" On the fly localization of the molecular orbitals. Can only be used with OT/IRAC. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_ORTHO_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" The orthogonality method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_PRECOND_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" How the preconditioner is applied to the residual. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Type of preconditioner to be used with all minimization schemes. They differ in effectiveness, cost of construction, cost of application. Properly preconditioned minimization can be orders of magnitude faster than doing nothing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_ROTATION = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional variables so that rotations of the occupied subspace are allowed as well, only needed for cases where the energy is not invariant under a rotation of the occupied subspace such as non-singlet restricted calculations or fractional occupations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_SAFE_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Reject DIIS steps if they point away from the minimum, do SD in that case. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_SCP_NDDO = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional self-consistent polarization through response basis set = orbital basis set for NDDO.) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" controls the activation of the ot method - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT_STEPSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial stepsize used for the line search, sometimes this parameter can be reduced to stablize DIIS or to improve the CG behavior in the first few steps. The optimal value depends on the quality of the preconditioner. A negative values leaves the choice to CP2K depending on the preconditioner. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION(MSection): - ''' + """ Set up type and parameters for Kohn-Sham matrix diagonalization. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to be used for diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_EPS_ADAPT = Quantity( type=str, shape=[], - description=''' + description=""" Required accuracy in iterative diagonalization as compared to current SCF convergence - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_EPS_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Required accuracy in iterative diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_EPS_JACOBI = Quantity( type=str, shape=[], - description=''' + description=""" Below this threshold value for the SCF convergence the pseudo-diagonalization method using Jacobi rotations is activated. This method is much faster than a real diagonalization and it is even speeding up while achieving full @@ -13151,281 +15392,326 @@ class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION(MSection): eigenvalue spectrum. The MO eigenvalues are NOT updated. The method might be useful to speed up calculations for large systems e.g. using a semi-empirical method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_JACOBI_THRESHOLD = Quantity( type=str, shape=[], - description=''' + description=""" Controls the accuracy of the pseudo-diagonalization method using Jacobi rotations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations in iterative diagonalization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the diagonalization method - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DAVIDSON" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_DIAG_SUB_SCF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_KRYLOV" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION_OT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_MIXING(MSection): - ''' + """ Define type and parameters for mixingprocedures to be applied to the density matrix. Normally, only one type of mixing method should be accepted. The mixing procedures activated by this section are only active for diagonalization methods, i.e. not with minimization methods based on OT. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of new density to be included - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Denominator parameter in Kerker damping introduced to suppress charge sloshing: rho_mix(g) =rho_in(g) + alpha*g^2/(g^2 + beta^2)*(rho_out(g)-rho_in(g)) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_BROY_W0 = Quantity( type=str, shape=[], - description=''' + description=""" w0 parameter used in Broyden mixing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_BROY_WMAX = Quantity( type=str, shape=[], - description=''' + description=""" Settings for BROY_WMAX - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_BROY_WREF = Quantity( type=str, shape=[], - description=''' + description=""" Settings for BROY_WREF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_MAX_GVEC_EXP = Quantity( type=str, shape=[], - description=''' + description=""" Restricts the G-space mixing to lower part of G-vector spectrum, up to a G0, by assigning the exponent of the Gaussian that can be represented by vectors smaller than G0 within a certain accuracy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_MAX_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Upper bound for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Mixing method to be applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_N_SIMPLE_MIX = Quantity( type=str, shape=[], - description=''' + description=""" Number of kerker damping iterations before starting other mixing procedures - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_NBUFFER = Quantity( type=str, shape=[], - description=''' + description=""" Number of previous steps stored for the actual mixing scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_NMIXING = Quantity( type=str, shape=[], - description=''' + description=""" Minimal number of density mixing (should be greater than 0),before starting DIIS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_NSKIP = Quantity( type=str, shape=[], - description=''' + description=""" Number of initial iteration for which the mixing is skipped - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_PULAY_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of new density to be added to the Pulay expansion - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_PULAY_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of residual contribution to be added to Pulay expansion - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_R_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Control factor for the magnitude of the unpredicted step size in the update by the multisecant mixing scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_REGULARIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Regularization parameter to stabilize the inversion of the residual matrix {Yn^t Yn} in the multisecant mixing scheme (noise) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MIXING_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the mixing procedure - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OT(MSection): - ''' + """ Sets the various options for the orbital transformation (OT) method. Default settings already provide an efficient, yet robust method. Most systems benefit from using the FULL_ALL preconditioner combined with a small value (0.001) of ENERGY_GAP.Well-behaved systems might benefit from using a DIIS minimizer. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_ALGORITHM = Quantity( type=str, shape=[], - description=''' + description=""" Algorithm to be used for OT - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_ADAPTIVE_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Enable adaptive curvature estimation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Underrelaxation for the broyden mixer - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_ENABLE_FLIP = Quantity( type=str, shape=[], - description=''' + description=""" Ensure positive definite update - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_ETA = Quantity( type=str, shape=[], - description=''' + description=""" Dampening of estimated energy curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_FORGET_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Forget history on bad approximation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Backtracking parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Growth limit of curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_SIGMA_DECREASE = Quantity( type=str, shape=[], - description=''' + description=""" Reduction of curvature on bad approximation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_SIGMA_MIN = Quantity( type=str, shape=[], - description=''' + description=""" Minimum adaptive curvature. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_BROYDEN_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Curvature of energy functional. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_ENERGIES = Quantity( type=str, shape=[], - description=''' + description=""" Optimize orbital energies for use in Fermi-Dirac smearing (requires ROTATION and FD smearing to be active). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Should be an estimate for the energy gap [a.u.] (HOMO-LUMO) and is used in preconditioning, especially effective with the FULL_ALL preconditioner, in which case it should be an underestimate of the gap (can be a small number, e.g. 0.002). @@ -13433,4507 +15719,5264 @@ class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OT(MSection): issues). In general, heigher values will tame the preconditioner in case of poor initial guesses. A negative value will leave the choice to CP2K depending on type of preconditioner. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_EPS_IRAC_FILTER_MATRIX = Quantity( type=str, shape=[], - description=''' + description=""" Sets the threshold for filtering the matrices. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_EPS_IRAC_QUICK_EXIT = Quantity( type=str, shape=[], - description=''' + description=""" Only one extra refinement iteration is done when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_EPS_IRAC_SWITCH = Quantity( type=str, shape=[], - description=''' + description=""" The algorithm switches to the polynomial refinement when the norm is below this value. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_EPS_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Targeted accuracy during the refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_EPS_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy of the taylor expansion for the matrix functions, should normally be kept as is. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_GOLD_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Target relative uncertainty in the location of the minimum for LINESEARCH GOLD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_IRAC_DEGREE = Quantity( type=str, shape=[], - description=''' + description=""" The refinement polynomial degree (2, 3 or 4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_LINESEARCH = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the OT minimizer, in increasing order of robustness and cost. MINIMIZER CG combined with LINESEARCH GOLD should always find an electronic minimum. Whereas the 2PNT minimizer is almost always OK, 3PNT might be needed for systems in which successive OT CG steps do not decrease the total energy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_MAX_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed refinement iteration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_MAX_TAYLOR = Quantity( type=str, shape=[], - description=''' + description=""" Maximum order of the Taylor expansion before diagonalisation is prefered, for large parallel runs a slightly higher order could sometimes result in a small speedup. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_MINIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Minimizer to be used with the OT method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_MIXED_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Uses a mixed precision algorithm.With a well behaved basis set (i.e. condition number less than 1/eps_sp)it provides double precision accuracy results and up to a 2 fold speedup for building and applying the preconditioner. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_N_HISTORY_VEC = Quantity( type=str, shape=[], - description=''' + description=""" Number of history vectors to be used with DIIS or BROYDEN - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_NONDIAG_ENERGY_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" The prefactor for the non-diagonal energy penalty (FD smearing) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_NONDIAG_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Add a non-diagonal energy penalty (FD smearing) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_OCCUPATION_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Preconditioner with the occupation numbers (FD smearing) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_ON_THE_FLY_LOC = Quantity( type=str, shape=[], - description=''' + description=""" On the fly localization of the molecular orbitals. Can only be used with OT/IRAC. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_ORTHO_IRAC = Quantity( type=str, shape=[], - description=''' + description=""" The orthogonality method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_PRECOND_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" How the preconditioner is applied to the residual. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Type of preconditioner to be used with all minimization schemes. They differ in effectiveness, cost of construction, cost of application. Properly preconditioned minimization can be orders of magnitude faster than doing nothing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_ROTATION = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional variables so that rotations of the occupied subspace are allowed as well, only needed for cases where the energy is not invariant under a rotation of the occupied subspace such as non-singlet restricted calculations or fractional occupations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_SAFE_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Reject DIIS steps if they point away from the minimum, do SD in that case. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_SCP_NDDO = Quantity( type=str, shape=[], - description=''' + description=""" Introduce additional self-consistent polarization through response basis set = orbital basis set for NDDO.) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the ot method - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OT_STEPSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial stepsize used for the line search, sometimes this parameter can be reduced to stablize DIIS or to improve the CG behavior in the first few steps. The optimal value depends on the quality of the preconditioner. A negative values leaves the choice to CP2K depending on the preconditioner. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF(MSection): - ''' + """ parameters controlling the outer SCF loop - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_BISECT_TRUST_COUNT = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of times the same point will be used in bisection, a small number guards against the effect of wrongly converged states. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_DIIS_BUFFER_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of DIIS vectors used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" The target gradient of the outer scf variables. Notice that the EPS_SCF of the inner loop also determines the value that can be reached in the outer loop, typically EPS_SCF of the outer loop must be smaller than EPS_SCF of the inner loop. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_EXTRAPOLATION_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Number of past states used in the extrapolation of the variables during e.g. MD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_MAX_SCF = Quantity( type=str, shape=[], - description=''' + description=""" The maximum number of outer loops - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_OPTIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Method used to bring the outer loop to a stationary point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the outer SCF loop - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" The initial step_size used in the optimizer (currently steepest descent).Note that in cases where a sadle point is sought for (DDAPC_CONSTRAINT), this can be negative - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies which kind of outer SCF should be employed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR(MSection): - ''' + """ Define the smearing of the MO occupation numbers - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_ELECTRONIC_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Electronic temperature in the case of Fermi-Dirac smearing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_EPS_FERMI_DIRAC = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy checks on occupation numbers use this as a tolerance - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_FIXED_MAGNETIC_MOMENT = Quantity( type=str, shape=[], - description=''' + description=""" Imposed difference between the numbers of electrons of spin up and spin down: m = n(up) - n(down). A negative value (default) allows for a change of the magnetic moment. -1 specifically keeps an integer number of spin up and spin down electrons. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_LIST = Quantity( type=str, shape=[], - description=''' + description=""" A list of fractional occupations to use. Must match the number of states and sum up to the correct number of electrons - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Smearing method to be applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of smearing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR_WINDOW_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Size of the energy window centred at the Fermi level - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF(MSection): - ''' + """ parameters needed perform an scf run - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_ADDED_MOS = Quantity( type=str, shape=[], - description=''' + description=""" Number of additional MOS added for each spin - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_CHOLESKY = Quantity( type=str, shape=[], - description=''' + description=""" If the cholesky method should be used for computing the inverse of S, and in this case calling which Lapack routines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_EPS_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Threshold on the convergence to start using DIAG/DIIS - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_EPS_EIGVAL = Quantity( type=str, shape=[], - description=''' + description=""" Throw away linear combinations of basis functions with a small eigenvalue in S - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_EPS_LUMO = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy of the computation of the lumo energy - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_EPS_SCF_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy for the scf convergence after the history pipeline is filled - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_EPS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy for the scf convergence - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_LEVEL_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Use level shifting to improve convergence - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MAX_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of DIIS vectors to be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MAX_ITER_LUMO = Quantity( type=str, shape=[], - description=''' + description=""" The maximum number of iteration for the lumo computation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MAX_SCF_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of SCF iterations after the history pipeline is filled - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_MAX_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of SCF iteration to be performed for one optimization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_NCOL_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Sets the number of columns in a scalapack block - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_NROW_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" sets the number of rows in a scalapack block - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_ROKS_F = Quantity( type=str, shape=[], - description=''' + description=""" Allows to define the parameter f for the general ROKS scheme. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_ROKS_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Allows to define all parameters for the high-spin ROKS scheme explicitly. The full set of 6 parameters has to be specified in the order acc, bcc, aoo, boo, avv, bvv - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_ROKS_SCHEME = Quantity( type=str, shape=[], - description=''' + description=""" Selects the ROKS scheme when ROKS is applied. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SCF_SCF_GUESS = Quantity( type=str, shape=[], - description=''' + description=""" Change the initial guess for the wavefunction. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_DIAGONALIZATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_MIXING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_MIXING"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_OUTER_SCF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF_SMEAR"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XAS(MSection): - ''' + """ Sets the method of choice to calculate core-level excitation spectra. The occupied states from which we calculate the excitation should be specified. Localization of the orbitals may be useful. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XAS_ADDED_MOS = Quantity( type=str, shape=[], - description=''' + description=""" Number of additional MOS added spin up only - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_ATOMS_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the atoms to be excitedThis keyword can be repeated several times(useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_DIPOLE_FORM = Quantity( type=str, shape=[], - description=''' + description=""" Type of integral to get the oscillator strengths in the diipole approximation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_EPS_ADDED = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy incalculation of the added orbitals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_MAX_ITER_ADDED = Quantity( type=str, shape=[], - description=''' + description=""" maximum number of iteration in calculation of added orbitals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method to be used to calculate core-level excitation spectra - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_NGAUSS = Quantity( type=str, shape=[], - description=''' + description=""" Number of gto's for the expansion of the stoof the type given by STATE_TYPE - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Restart the excited state if the restart file exists - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of core-level spectroscopy simulations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_STATE_SEARCH = Quantity( type=str, shape=[], - description=''' + description=""" # of states where to look for the one to be excited - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_STATE_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of the orbitas that are excited for the xas spectra calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_WFN_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Root of the file names where to read the MOS fromwhich to restart the calculation of the core level excited states - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_XAS_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Occupation of the core state in XAS calculation by TP_FLEX. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_XAS_TOT_EL = Quantity( type=str, shape=[], - description=''' + description=""" Total number of electrons for spin channel alpha, in XAS calculation by TP_FLEX.If negative value, the number of electrons is set to GS number of electron minus the amount subtracted from the core state - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_XES_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Occupation of the core state in XES calculation by TP_VAL.The homo is emptied by the same amount - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XAS_XES_EMPTY_HOMO = Quantity( type=str, shape=[], - description=''' + description=""" Set the occupation of the HOMO in XES calculation by TP_VAL.The HOMO can be emptied or not, if the core is still full - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_LOCALIZE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_LOCALIZE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XAS_LOCALIZE"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XAS_SCF"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING(MSection): - ''' + """ Parameters for self interation corrected hybrid functionals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING_FUNCTIONAL_MODEL = Quantity( type=str, shape=[], - description=''' + description=""" Which model for the coupling constant integration should be used. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING_FUNCTIONAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which Hybrid functional should be used. (Has to be consistent with the definitions in XC and HF). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" The point to be used along the adiabatic curve (0 < λ < 1) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Long-range parameter - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HF_INFO(MSection): - ''' + """ Controls the printing basic info about hf method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HF_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HF_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HF_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HF_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HF_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HFX_RI(MSection): - ''' + """ All parameters needed in a HFX RI calculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HFX_RI_EPS_OPTIMIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of iterative RI fit - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HFX_RI_EPS_SCREENING = Quantity( type=str, shape=[], - description=''' + description=""" Accuracy of geminal integral evaluation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_HFX_RI_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iteration in RI fit - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL(MSection): - ''' + """ Sets up interaction potential if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines cutoff radius for the truncated 1/r potential. Only valid when doing truncated calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for short/longrange interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, longrange or shortrange). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a coulomb potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a gaussian potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a longrange potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL_T_C_G_DATA = Quantity( type=str, shape=[], - description=''' + description=""" Location of the file t_c_g.dat that contains the data for the evaluation of the truncated gamma function - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE(MSection): - ''' + """ Parameters influencing the load balancing of the HF - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for the atomic quartet loops. A proper choice can speedup the calculation. The default (-1) is automatic. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE_NBINS = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins per process used to group atom quartets. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE_RANDOMIZE = Quantity( type=str, shape=[], - description=''' + description=""" This flag controls the randomization of the bin assignment to processes. For highly ordered input structures with a bad load balance, setting this flag to TRUE might improve. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_MEMORY(MSection): - ''' + """ Sets up memory parameters for the storage of the ERI's if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_MEMORY_EPS_STORAGE_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor to scale eps_schwarz. Storage threshold for compression will be EPS_SCHWARZ*EPS_STORAGE_SCALING. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_MEMORY_MAX_DISK_SPACE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of disk space [MB] used to store precomputed compressed four-center integrals. If 0, nothing is stored to disk - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_MEMORY_MAX_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Defines the maximum amount of memory [MB] to be consumed by the full HFX module. All temporary buffers and helper arrays are subtracted from this number. What remains will be used for storage of integrals. NOTE: This number is assumed to represent the memory available to one MPI process. When running a threaded version, cp2k automatically takes care of distributing the memory among all the threads within a process. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_MEMORY_STORAGE_LOCATION = Quantity( type=str, shape=[], - description=''' + description=""" Loaction where ERI's are stored if MAX_DISK_SPACE /=0 Expects a path to a directory. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_MEMORY_TREAT_FORCES_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether the derivative ERI's should be stored to RAM or not. Only meaningful when performing Ehrenfest MD. Memory usage is defined via MAX_MEMORY, i.e. the memory is shared wit the energy ERI's. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_PERIODIC(MSection): - ''' + """ Sets up periodic boundary condition parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_PERIODIC_NUMBER_OF_SHELLS = Quantity( type=str, shape=[], - description=''' + description=""" Number of shells taken into account for periodicity. By default, cp2k tries to automatically evaluate this number. This algorithm might be to conservative, resulting in some overhead. You can try to adjust this number in order to make a calculation cheaper. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_SCREENING(MSection): - ''' + """ Sets up screening parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_SCREENING_EPS_SCHWARZ_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. This will be approximately the accuracy of the forces, and should normally be similar to EPS_SCF - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_SCREENING_EPS_SCHWARZ = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Recalculates integrals on the fly if the actual density matrix is larger by a given factor than the initial one. If the factor is set to 0.0_dp, this feature is disabled. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_SCREENING_SCREEN_ON_INITIAL_P = Quantity( type=str, shape=[], - description=''' + description=""" Screen on an initial density matrix. For the first MD step this matrix must be provided by a Restart File. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_SCREENING_SCREEN_P_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the electronic repulsion integrals for the forces using the density matrix. This results in a significant speedup for large systems, but might require a somewhat tigher EPS_SCHWARZ_FORCES. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF(MSection): - ''' + """ Sets up the Hartree-Fock parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" The fraction of Hartree-Fock to add to the total energy. 1.0 implies standard Hartree-Fock if used with XC_FUNCTIONAL NONE. NOTE: In a mixed potential calculation this should be set to 1.0, otherwise all parts are multiplied with this factor. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_PW_HFX_BLOCKSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Improve the performance of pw_hfx at the cost of some additional memory by storing the realspace representation of PW_HFX_BLOCKSIZE states. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_PW_HFX = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Hartree-Fock energy also in the plane wave basis.The value is ignored, and intended for debugging only. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_HF_TREAT_LSD_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines how spin denisities are taken into account. If true, the beta spin density is included via a second in core call. If false, alpha and beta spins are done in one shot - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HF_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HF_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HF_INFO"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HFX_RI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HFX_RI'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_HFX_RI"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_LOAD_BALANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_MEMORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_MEMORY"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_PERIODIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_PERIODIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_SCREENING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF_SCREENING"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL(MSection): - ''' + """ Information on the non local dispersion functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the FFT grid used in the calculation of the nonlocal vdW functional [Ry]. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL_KERNEL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the kernel data file, may include a path.vdW_kernel_table.dat is for DRSLL and LMKLL andrVV10_kernel_table.dat is for rVV10. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Parameters b and C of the rVV10 functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of functional (the corresponding kernel data file should be selected).Allows for common forms such as vdW-DF, vdW-DF2, optB88-vdW, rVV10. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL_VERBOSE_OUTPUT = Quantity( type=str, shape=[], - description=''' + description=""" Extensive output for non local functionals - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD( + MSection +): + """ Controls the printing of some info about DFTD contributions - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL(MSection): - ''' + """ Information on the pair potential to calculate dispersion - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOM_COORDINATION_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordination number of a set of atoms for the C9 term in DFT-D3. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_ATOMPARM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies parameters for atom types (in atomic units). If not provided default parameters are used (DFT-D2). - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_CALCULATE_C9_TERM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_CALCULATE_C9_TERM = ( + Quantity( + type=str, + shape=[], + description=""" Calculate C9 terms in DFT-D3 model - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" XC Functional dependent scaling parameters (s6,sr6,s8) for the DFT-D3 method, if set to zero CP2K attempts to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_D3BJ_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D3(BJ) method, if set to zero CP2K attempts to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EPS_CN = Quantity( type=str, shape=[], - description=''' + description=""" Cutoff value for coordination number function (DFT-D3 method) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_EXP_PRE = Quantity( type=str, shape=[], - description=''' + description=""" Prefactor in exponential damping factor (DFT-D2 potential) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_KIND_COORDINATION_NUMBERS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordination number for a kind for the C9 term in DFT-D3. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_LONG_RANGE_CORRECTION = Quantity( type=str, shape=[], - description=''' + description=""" Calculate a long range correction to the DFT-D3 model - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PARAMETER_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PARAMETER_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" Name of the parameter file, may include a path - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_R_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Range of potential. The cutoff will be 2 times this value - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_C9_TERM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_C9_TERM = ( + Quantity( + type=str, + shape=[], + description=""" Calculate C9 terms in DFT-D3 model using reference coordination numbers - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_FUNCTIONAL = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_REFERENCE_FUNCTIONAL = ( + Quantity( + type=str, + shape=[], + description=""" Use parameters for this specific density functional. For available D3 and D3(BJ) parameters see: http://www.thch.uni-bonn.de/tc/downloads/DFT-D3/functionals.html, http://www.thch.uni-bonn.de/tc/downloads/DFT-D3/functionalsbj.html - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" XC Functional dependent scaling parameter, if set to zero CP2K attempts to guess the xc functional that is in use and sets the associated scaling parameter. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of potential - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_VERBOSE_OUTPUT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_VERBOSE_OUTPUT = ( + Quantity( + type=str, + shape=[], + description=""" Extensive output for the DFT-D2 and DFT-D3 models - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL_PRINT_DFTD" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL(MSection): - ''' + """ This section combines all possible additional dispersion corrections to the normal XC functionals. This can be more functionals or simple empirical pair potentials. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of dispersion/vdW functional or potential to use - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_NON_LOCAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL_PAIR_POTENTIAL" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CPHF(MSection): - ''' + """ Parameters influencing the solution of the Z-vector equations in MP2 gradients calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CPHF_EPS_CONV = Quantity( type=str, shape=[], - description=''' + description=""" Convergence threshold for the solution of the Z-vector equations. The Z-vector equations have the form of a linear system of equations Ax=b, convergence is achieved when |Ax-b|<=EPS_CONV. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CPHF_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations allowed for the solution of the Z-vector equations. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_DIRECT_CANONICAL(MSection): - ''' + """ Parameters influencing the direct canonical method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_DIRECT_CANONICAL_BIG_SEND = Quantity( type=str, shape=[], - description=''' + description=""" Send big messages between processes (useful for >48 processors). - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL( + MSection +): + """ Parameters the interaction potential in computing the biel integrals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, TShPSC operator). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TRUNCATION_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines truncation radius for the truncated TShPSC potential. Only valid when doing truncated calculation - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TSHPSC_DATA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL_TSHPSC_DATA = ( + Quantity( + type=str, + shape=[], + description=""" Location of the file TShPSC.dat that contains the data for the evaluation of the TShPSC G0 - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO(MSection): - ''' + """ Controls the printing basic info about MP2 method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS(MSection): - ''' + """ Parameters influencing the optimization of the RI MP2 basis. Only exponents of non- contracted auxiliary basis can be optimized. An initial RI auxiliary basis has to be specified. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS_BASIS_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the size of the auxiliary basis set automatically generated as initial guess. This will be effective only if RI_AUX_BASIS_SET in the KIND section and NUM_FUNC are not specified. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_I_REL = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy in the relative deviation of the amplitudes calculated with and without RI approximation, (more details in Chem.Phys.Lett.294(1998)143). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS_DELTA_RI = Quantity( type=str, shape=[], - description=''' + description=""" Target accuracy in the absolute difference between the RI-MP2 and the exact MP2 energy, DRI=ABS(E_MP2-E_RI-MP2). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS_EPS_DERIV = Quantity( type=str, shape=[], - description=''' + description=""" The derivatives of the MP2 energy with respect to the exponents of the basis are calculated numerically. The change in the exponent a_i employed for the numerical evaluation is defined as h_i=EPS_DERIV*a_i. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of steps in the RI basis optimization. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS_NUM_FUNC = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of function, for each angular momentum (s, p, d ...), employed in the automatically generated initial guess. This will be effective only if RI_AUX_BASIS_SET in the KIND section is not specified. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE(MSection): - ''' + """ Parameters influencing the RI-SOS-MP2-Laplace method - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE_QUADRATURE_POINTS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE_QUADRATURE_POINTS = ( + Quantity( + type=str, + shape=[], + description=""" Number of quadrature points for the numerical integration in the RI-SOS- MP2-Laplace method. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE_SIZE_INTEG_GROUP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE_SIZE_INTEG_GROUP = ( + Quantity( + type=str, + shape=[], + description=""" Group size for the integration in the Laplace method, that is the number of processes involved in the computation of each integration point. SIZE_INTEG_GROUP has to be a multiple of GROUP_SIZE in the WF_CORRELATION section. The default (-1) is automatic. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2(MSection): - ''' + """ Parameters influencing the RI MP2 method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Determines the blocking used for communication in RI-MP2. Larger BLOCK_SIZE reduces communication but requires more memory. The default (-1) is automatic. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2_EPS_CANONICAL = Quantity( type=str, shape=[], - description=''' + description=""" Threshold for discriminate if a given ij pairs of the unrelaxed MP2 density matrix has to be calculated with a canonical reformulation based on the occupied eigenvalues differences. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2_FREE_HFX_BUFFER = Quantity( type=str, shape=[], - description=''' + description=""" Free the buffer containing the 4 center integrals used in the Hartree-Fock exchange calculation. This will be effective only for gradients calculations, since for the energy only case, the buffers are released by default. (Right now debugging only). - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO(MSection): - ''' + """ Controls the printing basic info about hf method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI(MSection): - ''' + """ All parameters needed in a HFX RI calculation - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_OPTIMIZATION = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_OPTIMIZATION = ( + Quantity( + type=str, + shape=[], + description=""" Accuracy of iterative RI fit - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_SCREENING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_EPS_SCREENING = ( + Quantity( + type=str, + shape=[], + description=""" Accuracy of geminal integral evaluation - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iteration in RI fit - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL( + MSection +): + """ Sets up interaction potential if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Determines cutoff radius for the truncated 1/r potential. Only valid when doing truncated calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for short/longrange interaction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_POTENTIAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which interaction potential should be used (Coulomb, longrange or shortrange). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_COULOMB = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a coulomb potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_GAUSSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a gaussian potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_SCALE_LONGRANGE = Quantity( type=str, shape=[], - description=''' + description=""" Scales Hartree-Fock contribution arising from a longrange potential. Only valid when doing a mixed potential calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL_T_C_G_DATA = Quantity( type=str, shape=[], - description=''' + description=""" Location of the file t_c_g.dat that contains the data for the evaluation of the truncated gamma function - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE( + MSection +): + """ Parameters influencing the load balancing of the HF - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_BLOCK_SIZE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_BLOCK_SIZE = ( + Quantity( + type=str, + shape=[], + description=""" Determines the blocking used for the atomic quartet loops. A proper choice can speedup the calculation. The default (-1) is automatic. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_NBINS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_NBINS = ( + Quantity( + type=str, + shape=[], + description=""" Number of bins per process used to group atom quartets. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_RANDOMIZE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE_RANDOMIZE = ( + Quantity( + type=str, + shape=[], + description=""" This flag controls the randomization of the bin assignment to processes. For highly ordered input structures with a bad load balance, setting this flag to TRUE might improve. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY(MSection): - ''' + """ Sets up memory parameters for the storage of the ERI's if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_EPS_STORAGE_SCALING = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor to scale eps_schwarz. Storage threshold for compression will be EPS_SCHWARZ*EPS_STORAGE_SCALING. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_DISK_SPACE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_DISK_SPACE = ( + Quantity( + type=str, + shape=[], + description=""" Defines the maximum amount of disk space [MB] used to store precomputed compressed four-center integrals. If 0, nothing is stored to disk - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_MEMORY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_MAX_MEMORY = ( + Quantity( + type=str, + shape=[], + description=""" Defines the maximum amount of memory [MB] to be consumed by the full HFX module. All temporary buffers and helper arrays are subtracted from this number. What remains will be used for storage of integrals. NOTE: This number is assumed to represent the memory available to one MPI process. When running a threaded version, cp2k automatically takes care of distributing the memory among all the threads within a process. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_STORAGE_LOCATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_STORAGE_LOCATION = ( + Quantity( + type=str, + shape=[], + description=""" Loaction where ERI's are stored if MAX_DISK_SPACE /=0 Expects a path to a directory. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY_TREAT_FORCES_IN_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether the derivative ERI's should be stored to RAM or not. Only meaningful when performing Ehrenfest MD. Memory usage is defined via MAX_MEMORY, i.e. the memory is shared wit the energy ERI's. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC( + MSection +): + """ Sets up periodic boundary condition parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC_NUMBER_OF_SHELLS = Quantity( type=str, shape=[], - description=''' + description=""" Number of shells taken into account for periodicity. By default, cp2k tries to automatically evaluate this number. This algorithm might be to conservative, resulting in some overhead. You can try to adjust this number in order to make a calculation cheaper. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING( + MSection +): + """ Sets up screening parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. This will be approximately the accuracy of the forces, and should normally be similar to EPS_SCF - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_EPS_SCHWARZ = ( + Quantity( + type=str, + shape=[], + description=""" Screens the near field part of the electronic repulsion integrals using the Schwarz inequality for the given threshold. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_P_SCREEN_CORRECTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Recalculates integrals on the fly if the actual density matrix is larger by a given factor than the initial one. If the factor is set to 0.0_dp, this feature is disabled. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_ON_INITIAL_P = Quantity( type=str, shape=[], - description=''' + description=""" Screen on an initial density matrix. For the first MD step this matrix must be provided by a Restart File. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING_SCREEN_P_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Screens the electronic repulsion integrals for the forces using the density matrix. This results in a significant speedup for large systems, but might require a somewhat tigher EPS_SCHWARZ_FORCES. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF(MSection): - ''' + """ Sets up the Hartree-Fock parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" The fraction of Hartree-Fock to add to the total energy. 1.0 implies standard Hartree-Fock if used with XC_FUNCTIONAL NONE. NOTE: In a mixed potential calculation this should be set to 1.0, otherwise all parts are multiplied with this factor. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX_BLOCKSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Improve the performance of pw_hfx at the cost of some additional memory by storing the realspace representation of PW_HFX_BLOCKSIZE states. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PW_HFX = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Hartree-Fock energy also in the plane wave basis.The value is ignored, and intended for debugging only. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_TREAT_LSD_IN_CORE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_TREAT_LSD_IN_CORE = ( + Quantity( + type=str, + shape=[], + description=""" Determines how spin denisities are taken into account. If true, the beta spin density is included via a second in core call. If false, alpha and beta spins are done in one shot - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HF_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_HFX_RI" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_LOAD_BALANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_MEMORY" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_PERIODIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF_SCREENING" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA(MSection): - ''' + """ Parameters influencing the RI RPA method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_MINIMAX_QUADRATURE = Quantity( type=str, shape=[], - description=''' + description=""" Use the Minimax quadrature scheme for performing the numerical integration. Maximum number of quadrature point limited to 20. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_MM_STYLE = Quantity( type=str, shape=[], - description=''' + description=""" Matrix multiplication style for the Q matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_QUADRATURE_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Number of quadrature points for the numerical integration in the RI-RPA method. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_SIZE_FREQ_INTEG_GROUP = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_SIZE_FREQ_INTEG_GROUP = ( + Quantity( + type=str, + shape=[], + description=""" Group size for frequency integration, that is the number of processes involved in the computation of each integration point. SIZE_FREQ_INTEG_GROUP has to be a multiple of GROUP_SIZE in the WF_CORRELATION section. The default (-1) is automatic. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA_HF" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW(MSection): - ''' + """ Parameters for the GPW approach in Wavefunction-based Correlation methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff of the finest grid level in the MP2 gpw integration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW_EPS_FILTER = Quantity( type=str, shape=[], - description=''' + description=""" Determines a threshold for the DBCSR based multiply (usually 10 times smaller than EPS_GRID). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW_EPS_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Determines a threshold for the GPW based integration - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW_PRINT_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" How much output is written by the individual groups. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Determines the grid at which a Gaussian is mapped. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION(MSection): - ''' + """ Sets up the Wavefunction-based Correlation parameters if requested - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CALC_COND_NUM = Quantity( type=str, shape=[], - description=''' + description=""" Calculate the condition number of the (P|Q) matrix for the RI methods. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_COL_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the column block used in the SCALAPACK block cyclic data distribution.Default is (COL_BLOCK=-1) is automatic. A proper choice can speedup the parallel matrix multiplication in the case of RI-RPA and RI-SOS-MP2-Laplace. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_GROUP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Group size used in the computation of the integrals. Default is to use all processors (GROUP_SIZE=-1).A smaller group size (for example the node size), might a better choice if the actual MP2 time is large compared to integral computation time. This is usually the case if the total number of processors is not too large. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Maximum allowed total memory usage during MP2 methods [Mb]. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Which method should be used to compute the MP2 energy - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_ROW_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Size of the row block used in the SCALAPACK block cyclic data distribution.Default is (ROW_BLOCK=-1) is automatic. A proper choice can speedup the parallel matrix multiplication in the case of RI-RPA and RI-SOS-MP2-Laplace. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_SCALE_S = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor of the singlet energy component (opposite spin, OS). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_SCALE_T = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor of the triplet energy component (same spin, SS). - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CPHF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CPHF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_CPHF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_DIRECT_CANONICAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_DIRECT_CANONICAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_DIRECT_CANONICAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_INTERACTION_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_MP2_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_OPT_RI_BASIS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_LAPLACE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_MP2" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_RI_RPA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION_WFC_GPW" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC( + MSection +): + """ Uses the Becke 88 longrange exchange functional in an adiabatic fashion - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameter of the adiabatic curve - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Potential parameter in erf(omega*r)/r - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SCALE_X = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SCALE_X = ( + Quantity( + type=str, + shape=[], + description=""" scales the exchange part of the functional - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR(MSection): - ''' + """ Uses the Becke 88 longrange exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" Potential parameter in erf(omega*r)/r - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88(MSection): - ''' + """ Uses the Becke 88 exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97(MSection): - ''' + """ Uses the Becke 97 exchange correlation functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" switches between the B97 and Grimme parametrization - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional, if -1 the default for the given parametrization is used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL(MSection): - ''' + """ Becke Roussel exchange hole model. Can be usedas long range correction with a truncated coulomb potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff radius for the truncation. If put to zero, the standard full range potential will be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter in the exchange hole. Usually this is put to 1.0 or 0.8 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BEEF(MSection): - ''' + """ Uses the BEEFvdW exchange functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BEEF_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BEEF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_CS1(MSection): - ''' + """ Uses the CS1 functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_CS1_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09(MSection): - ''' + """ Combination of three different exchange hole models - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09_CUTOFF_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for Becke Roussel hole - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_HCTH(MSection): - ''' + """ Uses the HCTH class of functionals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_HCTH_PARAMETER_SET = Quantity( type=str, shape=[], - description=''' + description=""" Which version of the parameters should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_HCTH_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_GGA(MSection): - ''' + """ Uses one of the KE_GGA functionals (optimized versions of some of these functionals might be available outside this section). These functionals are needed for the computation of the kinetic energy in the Kim-Gordon method. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_GGA_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Which one of the KE_GGA functionals should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_GGA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC(MSection): - ''' + """ To be used for KG runs. Uses kinetic energy functionals from LIBXC, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" names of the functionals, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:manual .The precise list of available functionals depends on the version of libxc interfaced (currently 2.0.1). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" parameters of the functionals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factors of the functionals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR(MSection): - ''' + """ LDA exchange hole model in truncated coulomb potential - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_CUTOFF_RADIUS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_CUTOFF_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC(MSection): - ''' + """ Uses functionals from LIBXC, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" names of the functionals, see also http://www.tddft.org/programs/octopus/wiki/index.php/Libxc:manual .The precise list of available functionals depends on the version of libxc interfaced (currently 2.0.1). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" parameters of the functionals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factors of the functionals - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC(MSection): - ''' + """ Uses the LYP correlation functional in an adiabatic fashion - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameter of the adiabatic curve. - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP(MSection): - ''' + """ Uses the LYP functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_OPTX(MSection): - ''' + """ Uses the OPTX functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_OPTX_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_OPTX_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_P86C(MSection): - ''' + """ Uses the P86C functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_P86C_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_P86C_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PADE(MSection): - ''' + """ Uses the PADE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PADE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR(MSection): - ''' + """ PBE exchange hole model in trucanted coulomb potential - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_CUTOFF_RADIUS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_CUTOFF_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Defines cutoff for lower integration boundary - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') - - x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" activates the functional - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE(MSection): - ''' + """ Uses the PBE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" switches between the different parametrizations of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92(MSection): - ''' + """ Uses the PerdewWang correlation functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Which one of parametrizations should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" Scaling of the energy functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81(MSection): - ''' + """ Uses the PZ functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81_PARAMETRIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Which one of parametrizations should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TFW(MSection): - ''' + """ Uses the TFW functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TFW_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TF(MSection): - ''' + """ Uses the TF functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS(MSection): - ''' + """ Uses the TPSS functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN(MSection): - ''' + """ Uses the VWN functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN_FUNCTIONAL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which version of the VWN functional should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN_SCALE_C = Quantity( type=str, shape=[], - description=''' + description=""" scales the correlation part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA(MSection): - ''' + """ Uses the XALPHA (SLATER) functional. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA_XA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xa parameter (this does not change the exponent, just the mixing) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XGGA(MSection): - ''' + """ Uses one of the XGGA functionals (optimized versions of some of these functionals might be available outside this section). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XGGA_FUNCTIONAL = Quantity( type=str, shape=[], - description=''' + description=""" Which one of the XGGA functionals should be used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XGGA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE(MSection): - ''' + """ Uses the short range PBE functional - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE_OMEGA = Quantity( type=str, shape=[], - description=''' + description=""" screening parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE_SCALE_X0 = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the original hole PBE-functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE_SCALE_X = Quantity( type=str, shape=[], - description=''' + description=""" scales the exchange part of the functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" activates the functional - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL(MSection): - ''' + """ The xc functional to use - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Shortcut for the most common functional combinations. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR_ADIABATIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88_LR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE88" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE97" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BECKE_ROUSSEL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BEEF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BEEF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_BEEF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_CS1 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_CS1'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_CS1" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_GV09" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_HCTH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_HCTH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_HCTH" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_GGA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_GGA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_GGA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_KE_LIBXC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LDA_HOLE_T_C_LR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LIBXC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP_ADIABATIC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_LYP" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_OPTX = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_OPTX'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_OPTX" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_P86C = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_P86C'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_P86C" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PADE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PADE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PADE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE_HOLE_T_C_LR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PBE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PW92" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_PZ81" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TFW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TFW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TFW" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_TPSS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_VWN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XALPHA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XGGA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XGGA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XGGA" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL_XWPBE" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_GRID(MSection): - ''' + """ The xc parameters used when calculating the xc on the grid - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_GRID_USE_FINER_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Uses a finer grid only to calculate the xc - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_GRID_XC_DERIV = Quantity( type=str, shape=[], - description=''' + description=""" The method used to compute the derivatives - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_GRID_XC_SMOOTH_RHO = Quantity( type=str, shape=[], - description=''' + description=""" The density smoothing used for the xc calculation - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP(MSection): - ''' + """ Uses the SAOP potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the alpha parameter (default = 1.19). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Value of the beta parameter (default = 0.01). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP_K_RHO = Quantity( type=str, shape=[], - description=''' + description=""" Value of the K_rho parameter (default = 0.42). - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL(MSection): - ''' + """ The xc potential to use (CAREFUL: xc potential here refers to potentials that are not derived from an xc functional, but rather are modelled directly. Therefore there is no consistent xc energy available. To still get an energy expression, see ENERGY below - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" How to determine the total energy. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL_SAOP" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT_XC(MSection): - ''' + """ parameters needed calculate the xc potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_XC_DENSITY_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on the density used by the xc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_DENSITY_SMOOTH_CUTOFF_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Parameter for the smoothing procedure inxc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_FUNCTIONAL_ROUTINE = Quantity( type=str, shape=[], - description=''' + description=""" Select the code for xc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_GRADIENT_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on the gradient of the density used by the xc calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_XC_TAU_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" The cutoff on tau used by the xc calculation - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_ADIABATIC_RESCALING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_HF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_VDW_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_WF_CORRELATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_FUNCTIONAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_GRID'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_GRID"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC_XC_POTENTIAL"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_DFT(MSection): - ''' + """ parameter needed by dft programs - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_DFT_BASIS_SET_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the basis set file, may include a path - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" The total charge of the system - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_EXCITATIONS = Quantity( type=str, shape=[], - description=''' + description=""" If excitations should be calculated - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_GEMINAL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the geminal basis set file, may include a path - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_MULTIPLICITY = Quantity( type=str, shape=[], - description=''' + description=""" Two times the total spin plus one. Specify 3 for a triplet, 4 for a quartet, and so on. Default is 1 (singlet) for an even number and 2 (doublet) for an odd number of electrons. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_PLUS_U_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method employed for the calculation of the DFT+U contribution - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_POTENTIAL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the pseudo potential file, may include a path - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_RELAX_MULTIPLICITY = Quantity( type=str, shape=[], - description=''' + description=""" Do not enforce the occupation of alpha and beta MOs due to the initially defined multiplicity, but rather follow an Aufbau principle. A threshold value greater than zero activates this option. Larger threshold values increase the probability for a spin flip. This option is only valid for unrestricted (i.e. spin polarised) Kohn-Sham (UKS) calculations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_ROKS = Quantity( type=str, shape=[], - description=''' + description=""" Requests a restricted open Kohn-Sham calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SUBCELLS = Quantity( type=str, shape=[], - description=''' + description=""" Read the grid size for subcell generation in the construction of neighbor lists. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SURF_DIP_DIR = Quantity( type=str, shape=[], - description=''' + description=""" Cartesian axis parallel to surface normal. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_SURFACE_DIPOLE_CORRECTION = Quantity( type=str, shape=[], - description=''' + description=""" For slab calculations with asymmetric geometries, activate the correction of the electrostatic potential with by compensating for the surface dipole. Implemented only for slabs with normal parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_UKS = Quantity( type=str, shape=[], - description=''' + description=""" Requests a spin-polarized calculation using alpha and beta orbitals, i.e. no spin restriction is applied - ''') + """, + ) x_cp2k_input_FORCE_EVAL_DFT_WFN_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the wavefunction restart file, may include a path. If no file is specified, the default is to open the file as generated by the wfn restart print key. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_ALMO_SCF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_AUXILIARY_DENSITY_MATRIX_METHOD" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_DENSITY_FITTING"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_EFIELD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_DENSITY" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_POTENTIAL" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_VXC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_VXC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_EXTERNAL_VXC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_KG_METHOD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_KG_METHOD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_KG_METHOD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_KPOINTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_KPOINTS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_KPOINTS"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LOCALIZE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LOCALIZE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_LOCALIZE"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LOW_SPIN_ROKS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LOW_SPIN_ROKS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_LOW_SPIN_ROKS"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_LS_SCF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_MGRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_MGRID'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_MGRID"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_PERIODIC_EFIELD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_PERIODIC_EFIELD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_PERIODIC_EFIELD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_POISSON = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_POISSON'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_POISSON"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_QS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_QS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_QS"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_DFT_REAL_TIME_PROPAGATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_RELATIVISTIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_RELATIVISTIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_RELATIVISTIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCCS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCCS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCCS"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SCRF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SCRF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SCRF"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_SIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_SIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_SIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_TDDFPT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_TRANSPORT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_TRANSPORT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_TRANSPORT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XAS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XAS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XAS"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_DFT_XC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT_XC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT_XC"), repeats=True + ) class x_cp2k_section_input_FORCE_EVAL_EIP(MSection): - ''' + """ This section contains all information to run an Empirical Interatomic Potential (EIP) calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_EIP_EIP_MODEL = Quantity( type=str, shape=[], - description=''' + description=""" Selects the empirical interaction potential model - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_EP(MSection): - ''' + """ parameter needed by an ep calculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_EP_AT_PER_MOL = Quantity( type=str, shape=[], - description=''' + description=""" Number of atoms in each molecule (at the moment only uniform system cam be handled) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EP_COMP_INPUT = Quantity( type=str, shape=[], - description=''' + description=""" Path to the input to be used for the component of the main system - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EP_E0_ONLY = Quantity( type=str, shape=[], - description=''' + description=""" If only e0 should be calculated - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EP_EPS_LIN_SOLV = Quantity( type=str, shape=[], - description=''' + description=""" Requested convergence of the linear solver (for psi1) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EP_ROTATE = Quantity( type=str, shape=[], - description=''' + description=""" If rotations from a unique set of coefficients should be used or if single molecule optimizations generate it - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EP_START_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Starting coefficients for roatation based ep - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_EXTERNAL_POTENTIAL(MSection): - ''' + """ Section controlling the presence of an external potential dependent on the atomic positions (X,Y,Z) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_ATOMS_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the atoms on which the external potential will act - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_ERROR_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form in mathematical notation. Variables must be the atomic coordinates (X,Y,Z). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_EXTERNAL_POTENTIAL_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_COUPLING(MSection): - ''' + """ Coupling between two force_eval: E=(E1+E2 - sqrt((E1-E2)**2+4*H12**2))/2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MIXED_COUPLING_COUPLING_PARAMETER = Quantity( type=str, shape=[], - description=''' + description=""" Coupling parameter H12 used in the coupling - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_GENERIC(MSection): - ''' + """ User driven coupling between two or more force_eval. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_ERROR_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_MIXING_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the mixing functional form in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_GENERIC_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variables of the functional form. To allow an efficient mapping the order of the energy variables will be considered identical to the order of the force_eval in the force_eval_order list. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_LINEAR(MSection): - ''' + """ Linear combination between two force_eval: F= lambda F1 + (1-lambda) F2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MIXED_LINEAR_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the mixing parameter lambda in the formula: - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT(MSection): - ''' + """ Fragment definition - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Starting and ending atomic index defining one fragment must be provided - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT_MAP = Quantity( type=str, shape=[], - description=''' + description=""" Provides the index of the fragment of the MIXED force_eval mapped on the locally defined fragment. - ''') - - x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Defines the index of the fragment defined - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT(MSection): - ''' + """ Fragment definition - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Starting and ending atomic index defining one fragment must be provided - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the index of the fragment defined - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED(MSection): - ''' + """ Defines the fragments for the mixed force_eval (reference) - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED_FRAGMENT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL(MSection): - ''' + """ Defines the fragments and the mapping for each force_eval (an integer index (ID) needs to be provided as parameter) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_DEFINE_FRAGMENTS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the fragments definition of the force_eval through the fragments of the force_eval_mixed. This avoids the pedantic definition of the fragments for the force_eval, assuming the order of the fragments for the specified force_eval is the same as the sequence of integers provided. Easier to USE should be preferred to the specification of the single fragments. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the index of the force_eval for which fragments and mappings are provided - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_FRAGMENT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING(MSection): - ''' + """ Defines the mapping of atoms for the different force_eval with the mixed force_eval. The default is to have a mapping 1-1 between atom index (i.e. all force_eval share the same geometrical structure). The mapping is based on defining fragments and the mapping the fragments between the several force_eval and the mixed force_eval - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL_MIXED" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING_FORCE_EVAL" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED_RESTRAINT(MSection): - ''' + """ Restraint between two force_eval: E = E1 + k*(E1-E2-t)**2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MIXED_RESTRAINT_RESTRAINT_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Strength of the restraint (k) in k*(E1-E2-t)**2 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_RESTRAINT_RESTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Target value of the restraint (t) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MIXED(MSection): - ''' + """ This section contains all information to run with a hamiltonian defined by a mixing of force_evals - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MIXED_GROUP_PARTITION = Quantity( type=str, shape=[], - description=''' + description=""" gives the exact number of processors for each group. If not specified processors allocated will be equally distributed for the specified subforce_eval, trying to build a number of groups equal to the number of subforce_eval specified. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_MIXING_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" The type of mixing to be employed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MIXED_NGROUPS = Quantity( type=str, shape=[], - description=''' + description=""" Gives the wanted number of groups. If not specified the number of groups is set to the number of subforce_eval defined. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_COUPLING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_COUPLING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MIXED_COUPLING"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_GENERIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_GENERIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MIXED_GENERIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_LINEAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_LINEAR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MIXED_LINEAR"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MIXED_MAPPING"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MIXED_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED_RESTRAINT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MIXED_RESTRAINT"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB(MSection): - ''' + """ Specifies the Urey-Bradley potential between the external atoms defining the angle - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB_CS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cubic stretch term. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of Urey-Bradleypotential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB_K = Quantity( type=str, shape=[], - description=''' + description=""" Defines the force constant of the potential. For MORSE potentials 2 numbers are expected. For QUARTIC potentials 3 numbers are expected. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the equilibrium distance. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND(MSection): - ''' + """ Specifies the bend potential of the MM system. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the bend. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_CB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the cubic force constant of the bend - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_KBS12 = Quantity( type=str, shape=[], - description=''' + description=""" Mixed bend stretch parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_KBS32 = Quantity( type=str, shape=[], - description=''' + description=""" Mixed bend stretch parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of bend potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_KSS = Quantity( type=str, shape=[], - description=''' + description=""" Mixed bend stretch parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_K = Quantity( type=str, shape=[], - description=''' + description=""" Defines the force constant of the potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_R012 = Quantity( type=str, shape=[], - description=''' + description=""" Mixed bend stretch parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_R032 = Quantity( type=str, shape=[], - description=''' + description=""" Mixed bend stretch parameter - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BEND_THETA0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the equilibrium angle. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND_UB" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BOND(MSection): - ''' + """ Specifies the bond potential - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BOND_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the bond. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BOND_CS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cubic stretch term. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BOND_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of Bondpotential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BOND_K = Quantity( type=str, shape=[], - description=''' + description=""" Defines the force constant of the potential. For MORSE potentials 2 numbers are expected. For QUARTIC potentials 3 numbers are expected. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_BOND_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the equilibrium distance. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGES(MSection): - ''' + """ Allow to specify an array of classical charges, thus avoiding the packing and permitting the usage of different charges for same atomic types. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_CHARGES_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Value of the charge for the individual atom. Order MUST reflect the one specified for the geometry. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGE(MSection): - ''' + """ This section specifies the charge of the MM atoms - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_CHARGE_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind of the charge. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_CHARGE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the charge of the MM atom in electron charge unit. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING(MSection): - ''' + """ This section specifies optional electric field damping for the polarizable atoms. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind for this damping function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING_BIJ = Quantity( type=str, shape=[], - description=''' + description=""" Defines the BIJ parameter for this damping. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING_CIJ = Quantity( type=str, shape=[], - description=''' + description=""" Defines the CIJ parameter for this damping. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Defines the order for this damping. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the damping type. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE(MSection): - ''' + """ This section specifies that we will perform an SCF dipole calculation of the MM atoms. Needs KEYWORD POL_SCF in POISSON secton - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_APOL = Quantity( type=str, shape=[], - description=''' + description=""" Defines the isotropic polarizability of the MM atom. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind of the scf dipole. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE_DAMPING" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER(MSection): - ''' + """ Specifies the improper torsion potential of the MM system. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the improper tors. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of improper torsion potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER_K = Quantity( type=str, shape=[], - description=''' + description=""" Defines the force constant of the potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER_PHI0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the phase of the potential. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD(MSection): - ''' + """ This section specifies the input parameters for BMHFTD potential type.Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8.where f_order(r)=1-exp(-BD * r) * \\sum_{k=0}^order (BD * r)^k / k! .(Tang-Toennies damping function)No values available inside cp2k. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the BMHFTD nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the dispersion-damped Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_BD = Quantity( type=str, shape=[], - description=''' + description=""" Defines the BD parameter of the dispersion-damped Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the dispersion-damped Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the dispersion-damped Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of the dispersion-damped Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_MAP_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the kinds for which internally is defined the BMHFTD nonbond potential at the moment no species included. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Defines the order for this damping. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the BMHFTD potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT(MSection): - ''' + """ This section specifies the input parameters for BMHFT potential type.Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8.Values available inside cp2k only for the Na/Cl pair. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the BMHFT nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of the Fumi-Tosi Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_MAP_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the kinds for which internally is defined the BMHFT nonbond potential at the moment only Na and Cl. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the BMHFT potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES(MSection): - ''' + """ This section specifies the input parameters for the Buckingham 4-ranges potential type. Functional form:
  • V(r) = A*EXP(-B*r) for r < r1
  • V(r) = Sum_n POLY1(n)*rn for r1 ≤ r < r2
  • V(r) = Sum_n POLY2(n)*rn for r2 ≤ r < r3
  • V(r) = -C/r6 for r ≥ r3
- ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the Buckingham potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the Buckingham potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the Buckingham potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_POLY1 = Quantity( type=str, shape=[], - description=''' + description=""" Coefficients of the polynomial used in the second rangeThis keyword can be repeated several times. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_POLY2 = Quantity( type=str, shape=[], - description=''' + description=""" Coefficients of the polynomial used in the third rangeThis keyword can be repeated several times. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_R1 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the first range - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_R2 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the second range - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_R3 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the third range - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Buckingham potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE(MSection): - ''' + """ This section specifies the input parameters for Buckingham plus Morse potential type Functional Form: V(r) = F0*(B1+B2)*EXP([A1+A2-r]/[B1+B2])-C/r^6+D*{EXP[-2*beta*(r-R0)]-2*EXP[-beta*(r-R0)]}. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_A1 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A1 parameter of Buckingham+Morse potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_A2 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A2 parameter of Buckingham+Morse potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_B1 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B1 parameter of Buckingham+Morse potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_B2 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B2 parameter of Buckingham+Morse potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the width for the Morse part - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of Buckingham+Morse potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the amplitude for the Morse part - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_F0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the f0 parameter of Buckingham+Morse potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the equilibrium distance for the Morse part - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Buckingham potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM(MSection): - ''' + """ This section specifies the input parameters for EAM potential type. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM_PARM_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename that contains the tabulated EAM potential. File structure: the first line of the potential file contains a title. The second line contains: atomic number, mass and lattice constant. These information are parsed but not @@ -17944,1839 +20987,2143 @@ class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM(MSection): tabulated. Follow in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] and its derivative [ev*au_c^-1]. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT(MSection): - ''' + """ This section specifies the input parameters for a generic potential type.A functional form is specified. Mathematical Operators recognized are +, -, *, /, ** or alternatively ^, whereas symbols for brackets must be (). The function parser recognizes the (single argument) Fortran 90 intrinsic functions abs, exp, log10, log, sqrt, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan. Parsing for INTRINSIC functions is CASE INsensitive. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variable of the functional form. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN(MSection): - ''' + """ This section specifies the input parameters for GOODWIN potential type.Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_DC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the DC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_MC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the MC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_M = Quantity( type=str, shape=[], - description=''' + description=""" Defines the M parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN_VR0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the VR0 parameter of the Goodwin potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV(MSection): - ''' + """ This section specifies the input parameters for IPBV potential type.Functional form: Implicit table function. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the IPBV nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the IPBV potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES(MSection): - ''' + """ This section specifies the input parameters for LENNARD-JONES potential type.Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6]. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES_EPSILON = Quantity( type=str, shape=[], - description=''' + description=""" Defines the EPSILON parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the SIGMA parameter of the LJ potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP(MSection): - ''' + """ This section specifies the input parameters for QUIP potential type. Mainly intended for things like GAP corrections to DFT to achieve correlated-wavefunction-like accuracy. Requires linking with quip library from http://www.libatoms.org . - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the QUIP potential. For more than 2 elements, &QUIP section must be repeated until each element has been mentioned at least once. Set IGNORE_MISSING_CRITICAL_PARAMS to T in enclosing &FORCEFIELD section to avoid having to list every pair of elements separately. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP_CALC_ARGS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the potential calculation arguments for the QUIP potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP_INIT_ARGS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the potential initialization arguments for the QUIP potential. If blank (default) first potential defined in QUIP parameter file will be used. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP_PARM_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename that contains the QUIP potential. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN(MSection): - ''' + """ This section specifies the input parameters for the Siepmann-Sprik potential type. Consist of 4 terms: T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6 have to be given via the GENPOT section. The terms T3+T4 are obtained from the SIEPMANN section. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the beta parameter of Siepmann potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of Siepmann potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of Siepmann potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_E = Quantity( type=str, shape=[], - description=''' + description=""" Defines the E parameter of Siepmann potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_F = Quantity( type=str, shape=[], - description=''' + description=""" Defines the F parameter of Siepmann potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of Siepmann potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF(MSection): - ''' + """ This section specifies the input parameters for Tersoff potential type. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the alpha parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the beta parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_BIGD = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_BIGR = Quantity( type=str, shape=[], - description=''' + description=""" Defines the bigR parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the c parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the d parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_H = Quantity( type=str, shape=[], - description=''' + description=""" Defines the h parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_LAMBDA1 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lambda1 parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_LAMBDA2 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lambda2 parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_LAMBDA3 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lambda3 parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_N = Quantity( type=str, shape=[], - description=''' + description=""" Defines the n parameter of Tersoff potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the tersoff potential. This parameter is in principle already defined by the values of bigD and bigR. But it is necessary to define it when using the tersoff in conjuction with other potentials (for the same atomic pair) in order to have the same consistent definition of RCUT for all potentials. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS(MSection): - ''' + """ This section specifies the input parameters for WILLIAMS potential type.Functional form: V(r) = A*EXP(-B*r) - C / r^6 . - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT(MSection): - ''' + """ This section specifies the input parameters for a generic potential type.A functional form is specified. Mathematical Operators recognized are +, -, *, /, ** or alternatively ^, whereas symbols for brackets must be (). The function parser recognizes the (single argument) Fortran 90 intrinsic functions abs, exp, log10, log, sqrt, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan. Parsing for INTRINSIC functions is CASE INsensitive. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variable of the functional form. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN(MSection): - ''' + """ This section specifies the input parameters for GOODWIN potential type.Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_DC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the DC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_MC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the MC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_M = Quantity( type=str, shape=[], - description=''' + description=""" Defines the M parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN_VR0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the VR0 parameter of the Goodwin potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES(MSection): - ''' + """ This section specifies the input parameters for LENNARD-JONES potential type.Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6]. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES_EPSILON = Quantity( type=str, shape=[], - description=''' + description=""" Defines the EPSILON parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the SIGMA parameter of the LJ potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS(MSection): - ''' + """ This section specifies the input parameters for WILLIAMS potential type.Functional form: V(r) = A*EXP(-B*r) - C / r^6 . - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14(MSection): - ''' + """ This section specifies the input parameters for 1-4 NON-BONDED interactions. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GENPOT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_GOODWIN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_LENNARD_JONES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14_WILLIAMS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED(MSection): - ''' + """ This section specifies the input parameters for NON-BONDED interactions. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFTD" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BMHFT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCK4RANGES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_BUCKMORSE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_EAM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GENPOT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_GOODWIN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_IPBV" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_LENNARD_JONES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_QUIP" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_SIEPMANN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_TERSOFF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED_WILLIAMS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND(MSection): - ''' + """ Specifies the out of plane bend potential of the MM system.(Only defined for atom quadruples which are also defined as an improper pattern in the topology.) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the opbend. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of out of plane bend potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND_K = Quantity( type=str, shape=[], - description=''' + description=""" Defines the force constant of the potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND_PHI0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the phase of the potential. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_QUADRUPOLE(MSection): - ''' + """ This section specifies that we will perform an SCF quadrupole calculation of the MM atoms. Needs KEYWORD POL_SCF in POISSON secton - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_QUADRUPOLE_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind of the scf quadrupole. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_QUADRUPOLE_CPOL = Quantity( type=str, shape=[], - description=''' + description=""" Defines the isotropic polarizability of the MM atom. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SHELL(MSection): - ''' + """ This section specifies the parameters for shell-model potentials - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_CORE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Partial charge assigned to the core (electron charge units) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_K2_SPRING = Quantity( type=str, shape=[], - description=''' + description=""" Force constant k2 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 binding a core- shell pair when a core-shell potential is employed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_K4_SPRING = Quantity( type=str, shape=[], - description=''' + description=""" Force constant k4 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 binding a core- shell pair when a core-shell potential is employed. By default a harmonic spring potential is used, i.e. k4 is zero. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_MASS_FRACTION = Quantity( type=str, shape=[], - description=''' + description=""" Fraction of the mass of the atom to be assigned to the shell - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_MAX_DISTANCE = Quantity( type=str, shape=[], - description=''' + description=""" Assign a maximum elongation of the spring, if negative no limit is imposed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The kind for which the shell potential parameters are given - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_SHELL_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Partial charge assigned to the shell (electron charge units) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHELL_SHELL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Define a screening function to exclude some neighbors of the shell when electrostatic interaction are considered, if negative no screening is operated - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE(MSection): - ''' + """ specifies parameters to set up the splines used in the nonboned interactions (both pair body potential and many body potential) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_EMAX_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum value of energy used to check the accuracy requested through EPS_SPLINE. Energy values larger than EMAX_ACCURACY generally do not satisfy the requested accuracy - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_EMAX_SPLINE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum value of the potential up to which splines will be constructed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_EPS_SPLINE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the threshold for the choice of the number of points used in the splines (comparing the splined value with the analytically evaluated one) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_NPOINTS = Quantity( type=str, shape=[], - description=''' + description=""" Override the default search for an accurate spline by specifying a fixed number of spline points. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_R0_NB = Quantity( type=str, shape=[], - description=''' + description=""" Specify the minimum value of the distance interval that brackets the value of emax_spline. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_RCUT_NB = Quantity( type=str, shape=[], - description=''' + description=""" Cutoff radius for nonbonded interactions. This value overrides the value specified in the potential definition and is global for all potentials. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE_UNIQUE_SPLINE = Quantity( type=str, shape=[], - description=''' + description=""" For few potentials (Lennard-Jones) one global optimal spline is generated instead of different optimal splines for each kind of potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_TORSION(MSection): - ''' + """ Specifies the torsion potential of the MM system. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_TORSION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the tors. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_TORSION_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of torsion potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_TORSION_K = Quantity( type=str, shape=[], - description=''' + description=""" Defines the force constant of the potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_TORSION_M = Quantity( type=str, shape=[], - description=''' + description=""" Defines the multiplicity of the potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_TORSION_PHI0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the phase of the potential. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD(MSection): - ''' + """ Section specifying information regarding how to set up properly a force_field for the classical calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_DO_NONBONDED = Quantity( type=str, shape=[], - description=''' + description=""" Controls the computation of all the real-sapce (short-range) nonbonded interactions. This also includes the real-space corrections for excluded or scaled 1-2, 1-3 and 1-4 interactions. When set to F, the neighborlists are not created and all interactions that depend on them are not computed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_EI_SCALE14 = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor for the electrostatics 1-4 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_IGNORE_MISSING_CRITICAL_PARAMS = Quantity( type=str, shape=[], - description=''' + description=""" Do not abort when critical force-field parameters are missing. CP2K will run as if the terms containing the missing parameters are zero. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_MULTIPLE_POTENTIAL = Quantity( type=str, shape=[], - description=''' + description=""" Enables the possibility to define NONBONDED and NONBONDED14 as a sum of different kinds of potential. Useful for piecewise defined potentials. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_PARM_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename that contains the parameters of the FF. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_PARMTYPE = Quantity( type=str, shape=[], - description=''' + description=""" Define the kind of torsion potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_SHIFT_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Add a constant energy shift to the real-space non-bonding interactions (both Van der Waals and electrostatic) such that the energy at the cutoff radius is zero. This makes the non-bonding interactions continuous at the cutoff. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_VDW_SCALE14 = Quantity( type=str, shape=[], - description=''' + description=""" Scaling factor for the VDW 1-4 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_FORCEFIELD_ZBL_SCATTERING = Quantity( type=str, shape=[], - description=''' + description=""" A short range repulsive potential is added, to simulate collisions and scattering. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BEND"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BOND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BOND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_BOND"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_CHARGE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_DIPOLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_IMPROPER" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED14" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_NONBONDED" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_OPBEND" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_QUADRUPOLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_QUADRUPOLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_QUADRUPOLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SHELL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SHELL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SHELL"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_SPLINE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_TORSION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_TORSION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD_TORSION" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_NEIGHBOR_LISTS(MSection): - ''' + """ This section specifies the input parameters for the construction of neighbor lists. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_NEIGHBOR_LISTS_GEO_CHECK = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables the check that two atoms are never below the minimum value used to construct the splines during the construction of the neighbouring list. Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum value of the radius used to generate the splines. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_NEIGHBOR_LISTS_NEIGHBOR_LISTS_FROM_SCRATCH = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables the building of the neighbouring list from scratch. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_NEIGHBOR_LISTS_VERLET_SKIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the Verlet Skin for the generation of the neighbor lists - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES(MSection): - ''' + """ Enables the use of multipoles in the treatment of the electrostatics. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES_EPS_POL = Quantity( type=str, shape=[], - description=''' + description=""" Specify the rmsd threshold for the derivatives of the energy towards the Cartesian dipoles components - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES_MAX_IPOL_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum number of iterations for induced dipoles - ''') - - x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES_MAX_MULTIPOLE_EXPANSION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES_MAX_MULTIPOLE_EXPANSION = ( + Quantity( + type=str, + shape=[], + description=""" Specify the maximum level of multipoles expansion used for the electrostatics. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES_POL_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the method to obtain self consistent induced multipole moments. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the Multipoles - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID(MSection): - ''' + """ Set options that influence how the realspace grids are being distributed in parallel runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID_DISTRIBUTION_LAYOUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of slices in the x, y and z directions.-1 specifies that any number of slices is OK.If a given distribution can not be satisfied, a replicated grid will result.Also see LOCK_DISTRIBUTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID_DISTRIBUTION_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Parallelization strategy. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID_HALO_REDUCTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to reduce the halo of the distributed grid (experimental features). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID_LOCK_DISTRIBUTION = Quantity( type=str, shape=[], - description=''' + description=""" Expert use only, only basic QS deals correctly with a non-default value.If the distribution is locked, a grid will have the same distribution asthe next finer multigrid (provided it is distributed).If unlocked, all grids can be distributed freely. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID_MAX_DISTRIBUTED_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" If the multigrid-level of a grid is larger than the parameter, it will not be distributed in the automatic scheme. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID_MEMORY_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" A grid will only be distributed if the memory usage for that grid (including halo) is smaller than a replicated grid by this parameter. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD(MSection): - ''' + """ Ewald parameters controlling electrostatic only for CLASSICAL MM. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" alpha parameter associated with Ewald (EWALD|PME|SPME). Recommended for small systems is is alpha = 3.5 / r_cut. Tuning alpha, r_cut and gmax is needed to obtain O(N**1.5) scaling for ewald. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_EPSILON = Quantity( type=str, shape=[], - description=''' + description=""" tolerance of gaussians for fft interpolation (PME only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_EWALD_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Expected accuracy in the Ewald sum. This number affects only the calculation of the cutoff for the real-space term of the ewald summation (EWALD|PME|SPME) as well as the construction of the neighbor lists (if the cutoff for non-bonded terms is smaller than the value employed to compute the EWALD real-space term). This keyword has no effect on the reciprocal space term (which can be tuned independently). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_EWALD_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" The type of ewald you want to perform. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_GMAX = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points (SPME and EWALD). If a single number is specified,the same number of points is used for all three directions on the grid.If three numbers are given, each direction can have a different number of points.The number of points needs to be FFTable (which depends on the library used) and odd for EWALD.The optimal number depends e.g. on alpha and the size of the cell. 1 point per Angstrom is common. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_NS_MAX = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points on small mesh (PME only), should be odd. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_O_SPLINE = Quantity( type=str, shape=[], - description=''' + description=""" order of the beta-Euler spline (SPME only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_EWALD_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Explicitly provide the real-space cutoff of the ewald summation (EWALD|PME|SPME). If present, overwrites the estimate of EWALD_ACCURACY and may affect the construction of the neighbor lists for non-bonded terms (in FIST), if the value specified is larger than the cutoff for non-bonded interactions. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_MULTIPOLES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD_RS_GRID" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MT(MSection): - ''' + """ Sets up parameters of Martyna-Tuckerman poisson solver. Note that exact results are only guaranteed if the unit cell is twice as large as charge density (and serious artefacts can result if the cell is much smaller). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_MT_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Convergence parameter ALPHA*RMIN. Default value 7.0 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MT_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the multiplicative factor for the CUTOFF keyword in MULTI_GRID section. The result gives the cutoff at which the 1/r non-periodic FFT3D is evaluated.Default is 2.0 - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE(MSection): - ''' + """ Controls the checking of the G-space term Spline Interpolation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR(MSection): - ''' + """ controls the interpolation for the G-space term - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing of basic information during the run - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE(MSection): - ''' + """ This section is used to set up the decoupling of QM periodic images with the use of density derived atomic point charges. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_ANALYTICAL_GTERM = Quantity( type=str, shape=[], - description=''' + description=""" Evaluates the Gterm in the Ewald Scheme analytically instead of using Splines. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_EWALD_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Precision achieved in the Ewald sum. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_NGRIDS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of grid points used for the Interpolation of the G-space term - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Real space cutoff for the Ewald sum. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_CHECK_SPLINE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_INTERPOLATOR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON_WAVELET(MSection): - ''' + """ Sets up parameters of wavelet based poisson solver.This solver allows for non- periodic (PERIODIC NONE) boundary conditions and slab-boundary conditions (but only PERIODIC XZ).It does not require very large unit cells, only that the density goes to zero on the faces of the cell.The use of PREFERRED_FFT_LIBRARY FFTSG is required - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_WAVELET_SCF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of scaling function used in the wavelet approach, the total energy depends on this choice,and the convergence with respect to cutoff depends on the selected scaling functions.Possible values are 8,14,16,20,24,30,40,50,60,100 - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_MM_POISSON(MSection): - ''' + """ Sets up the poisson resolutor. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_MM_POISSON_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions on wich apply PBC. Important notice, this only applies to the electrostatics. See the CELL section to specify the periodicity used for e.g. the pair lists. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_MM_POISSON_POISSON_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of solver to use to solve the Poisson equation. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_POISSON_EWALD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_MM_POISSON_MULTIPOLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON_WAVELET = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON_WAVELET'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_POISSON_WAVELET"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_MM(MSection): - ''' + """ This section contains all information to run a MM calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_FORCEFIELD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_NEIGHBOR_LISTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_NEIGHBOR_LISTS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_NEIGHBOR_LISTS"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MM_POISSON = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM_POISSON'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM_POISSON"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -19784,118 +23131,133 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -19903,176 +23265,199 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D(MSection): - ''' + """ Each node prints out its distribution info ... - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -20080,234 +23465,265 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D(MSection): - ''' + """ Controls the printing of the distribution of matrix blocks,... - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION(MSection): - ''' + """ Controls the printing of the distribution of molecules, atoms, ... - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_DISTRIBUTION_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -20315,183 +23731,205 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES(MSection): - ''' + """ Controls the printing of the forces after each force evaluation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_NDIGITS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of digits used for the printing of the forces - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_FORCES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES_EACH"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -20499,176 +23937,199 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION(MSection): - ''' + """ Controls the printing of information regarding the PW and RS grid structures. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_GRID_INFORMATION_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -20676,176 +24137,199 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing of basic information generated by force_eval - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -20853,183 +24337,207 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR(MSection): - ''' + """ Controls the printing of the stress tensor - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_NDIGITS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of digits used for the printing of the stress tensor - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_STRESS_TENSOR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -21037,2915 +24545,3473 @@ class x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS(MSection): - ''' + """ Controls the printing of the total number of atoms, kinds,... - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PRINT(MSection): - ''' + """ Properties that you want to output and that are common to all methods - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION1D" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION2D" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PRINT_DISTRIBUTION"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PRINT_FORCES"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_GRID_INFORMATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PRINT_PROGRAM_RUN_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PRINT_STRESS_TENSOR"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PRINT_TOTAL_NUMBERS"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ATOMIC(MSection): - ''' + """ Controls the calculation of atomic properties. Printing is controled by FORCE_EVAL / PRINT / PROGRAM_RUN_INFO - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ATOMIC_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Calculate atomic energies - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ATOMIC_PRESSURE = Quantity( type=str, shape=[], - description=''' + description=""" Calculate atomic pressure tensors - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO( + MSection +): + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A( + MSection +): + """ Use DDAPC charges in a restraint (check code for details), section can be repeated, but only one constraint is possible at the moment. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the coefficient of the atom in the atom list (default is one), currently DDAPC only - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_FUNCTIONAL_FORM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_FUNCTIONAL_FORM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the functional form of the term added - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_STRENGTH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_STRENGTH = ( + Quantity( + type=str, + shape=[], + description=""" force constant of the restraint - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_TYPE_OF_DENSITY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_TYPE_OF_DENSITY = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the type of density used for the fitting - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A_PROGRAM_RUN_INFO" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO( + MSection +): + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B( + MSection +): + """ Use DDAPC charges in a restraint (check code for details), section can be repeated, but only one constraint is possible at the moment. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the coefficient of the atom in the atom list (default is one), currently DDAPC only - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_FUNCTIONAL_FORM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_FUNCTIONAL_FORM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the functional form of the term added - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_STRENGTH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_STRENGTH = ( + Quantity( + type=str, + shape=[], + description=""" force constant of the restraint - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_TYPE_OF_DENSITY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_TYPE_OF_DENSITY = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the type of density used for the fitting - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B_PROGRAM_RUN_INFO" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO( + MSection +): + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A( + MSection +): + """ Use DDAPC charges in a restraint (check code for details), section can be repeated, but only one constraint is possible at the moment. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the coefficient of the atom in the atom list (default is one), currently DDAPC only - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_FUNCTIONAL_FORM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_FUNCTIONAL_FORM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the functional form of the term added - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_STRENGTH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_STRENGTH = ( + Quantity( + type=str, + shape=[], + description=""" force constant of the restraint - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_TYPE_OF_DENSITY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_TYPE_OF_DENSITY = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the type of density used for the fitting - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A_PROGRAM_RUN_INFO" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO( + MSection +): + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B( + MSection +): + """ Use DDAPC charges in a restraint (check code for details), section can be repeated, but only one constraint is possible at the moment. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that is summed in the restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the the coefficient of the atom in the atom list (default is one), currently DDAPC only - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_FUNCTIONAL_FORM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_FUNCTIONAL_FORM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the functional form of the term added - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_STRENGTH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_STRENGTH = ( + Quantity( + type=str, + shape=[], + description=""" force constant of the restraint - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" target value of the restraint - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_TYPE_OF_DENSITY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_TYPE_OF_DENSITY = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the type of density used for the fitting - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing basic info about the method - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING(MSection): - ''' + """ specifies the two constraints/restraints for extracting ET coupling elements - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_TYPE_OF_CONSTRAINT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of constraint - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_A" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_BECKE_RESTRAINT_B" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_A" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_DDAPC_RESTRAINT_B" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE(MSection): - ''' + """ This section is used to print the density derived atomic point charges.The fit of the charges is controlled through the DENSITY_FITTING section - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE_TYPE_OF_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of density used for the fitting - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_AINT_PRECOND = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_AINT_PRECOND = ( + Quantity( + type=str, + shape=[], + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_SAFE_COMPUTATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_SAFE_COMPUTATION = ( + Quantity( + type=str, + shape=[], + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT(MSection): - ''' + """ The induced current density is calculated by DFPT. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_CHI_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Calculate the succeptibility correction to the shift with PBC - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_COMMON_CENTER = Quantity( type=str, shape=[], - description=''' + description=""" The common center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_GAUGE_ATOM_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Build the gauge=atom using only the atoms within this radius. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_GAUGE = Quantity( type=str, shape=[], - description=''' + description=""" The gauge used to compute the induced current within GAPW. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_NBOX = Quantity( type=str, shape=[], - description=''' + description=""" How many boxes along each directions - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_ORBITAL_CENTER = Quantity( type=str, shape=[], - description=''' + description=""" The orbital center. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_RESTART_CURRENT = Quantity( type=str, shape=[], - description=''' + description=""" Restart the induced current density calculation from a previous run (not working yet). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the induced current calculation - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_SELECTED_STATES_ATOM_RADIUS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_SELECTED_STATES_ATOM_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Select all the states included in the given radius arround each atoms in SELECTED_STATES_ON_ATOM_LIST. - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_SELECTED_STATES_ON_ATOM_LIST = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_SELECTED_STATES_ON_ATOM_LIST = ( + Quantity( + type=str, + shape=[], + description=""" Indexes of the atoms for selecting the states to be used for the response calculations. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_USE_OLD_GAUGE_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Use the old way to compute the gauge. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT_INTERPOLATOR" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_SAFE_COMPUTATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_SAFE_COMPUTATION = ( + Quantity( + type=str, + shape=[], + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR(MSection): - ''' + """ The g tensor is calculated by DFPT - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_RESTART_EPR = Quantity( type=str, shape=[], - description=''' + description=""" Restart the EPR calculation from a previous run (NOT WORKING) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the epr calculation - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR_INTERPOLATOR" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE(MSection): - ''' + """ Use one of the available methods to define the localization and possibly to optimize it to a minimum or a maximum. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_CRAZY_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scale angles - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_CRAZY_USE_DIAG = Quantity( type=str, shape=[], - description=''' + description=""" Use diagonalization (slow) or pade based calculation of matrix exponentials. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_ENERGY_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Select the orbitals to be localized within the given energy range.This type of selection cannot be added on top of the selection through a LIST. It reads to reals that are lower and higher boundaries of the energy range. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_EPS_LOCALIZATION = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance used in the convergence criterium of the localization methods. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_EPS_OCCUPATION = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance in the occupation number to select only fully occupied orbitals for the rotation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_JACOBI_FALLBACK = Quantity( type=str, shape=[], - description=''' + description=""" Use Jacobi method in case no convergence was achieved by using the crazy rotations method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_LIST_UNOCCUPIED = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the unoccupied states to be localized, up to now only valid in combination with GPW. This keyword has to be present if unoccupied states should be localized. This keyword can be repeated several times(useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Indexes of the occupied wfn to be localizedThis keyword can be repeated several times(useful if you have to specify many indexes). - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_LOCHOMO_RESTART_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_LOCHOMO_RESTART_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" File name where to read the MOS fromwhich to restart the localization procedure for occupied states - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_LOCLUMO_RESTART_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_LOCLUMO_RESTART_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" File name where to read the MOS fromwhich to restart the localization procedure for unoccupied states - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_MAX_CRAZY_ANGLE = Quantity( type=str, shape=[], - description=''' + description=""" Largest allowed angle for the crazy rotations algorithm (smaller is slower but more stable). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations used for localization methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Method of optimization if any - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_MIN_OR_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Requires the maximization of the spread of the wfn - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_OPERATOR = Quantity( type=str, shape=[], - description=''' + description=""" Type of opertator which defines the spread functional - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_OUT_ITER_EACH = Quantity( type=str, shape=[], - description=''' + description=""" Every how many iterations of the localization algorithm(Jacobi) the tolerance value is printed out - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Restart the localization from a set of orbitals read from a localization restart file. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the MOS localization procedure - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_STATES = Quantity( type=str, shape=[], - description=''' + description=""" Which states to localize, LUMO up to now only available in GPW - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE_USE_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" Generate an improved initial guess based on a history of results, which is useful during MD.Will only work if the number of states to be localized remains constant. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_SAFE_COMPUTATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_SAFE_COMPUTATION = ( + Quantity( + type=str, + shape=[], + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR(MSection): - ''' + """ The chemical shift is calculated by DFPT. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATE_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Calculate the soft part of the chemical shift by interpolation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_NICS_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the file with the NICS points coordinates - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_NICS = Quantity( type=str, shape=[], - description=''' + description=""" Calculate the chemical shift in a set of points given from an external file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_RESTART_NMR = Quantity( type=str, shape=[], - description=''' + description=""" Restart the NMR calculation from a previous run (NOT WORKING YET) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the nmr calculation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_SHIFT_GAPW_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" While computing the local part of the shift (GAPW), the integration is restricted to nuclei that are within this radius. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR_INTERPOLATOR" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_AINT_PRECOND = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_AINT_PRECOND = ( + Quantity( + type=str, + shape=[], + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_SAFE_COMPUTATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_SAFE_COMPUTATION = ( + Quantity( + type=str, + shape=[], + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR(MSection): - ''' + """ Compute polarizabilities. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_DO_RAMAN = Quantity( type=str, shape=[], - description=''' + description=""" Compute the electric-dipole--electric-dipole polarizability - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the polarizability calculation - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR_INTERPOLATOR" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_AINT_PRECOND = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_AINT_PRECOND = ( + Quantity( + type=str, + shape=[], + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') - - x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_SAFE_COMPUTATION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_SAFE_COMPUTATION = ( + Quantity( + type=str, + shape=[], + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN(MSection): - ''' + """ Compute indirect spin-spin coupling constants. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_DO_DSO = Quantity( type=str, shape=[], - description=''' + description=""" Compute the diamagnetic spin-orbit contribution (NOT YET IMPLEMENTED) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_DO_FC = Quantity( type=str, shape=[], - description=''' + description=""" Compute the Fermi contact contribution - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_DO_PSO = Quantity( type=str, shape=[], - description=''' + description=""" Compute the paramagnetic spin-orbit contribution - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_DO_SD = Quantity( type=str, shape=[], - description=''' + description=""" Compute the spin-dipolar contribution - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_ISSC_ON_ATOM_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Atoms for which the issc is computed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_RESTART_SPINSPIN = Quantity( type=str, shape=[], - description=''' + description=""" Restart the spin-spin calculation from a previous run (NOT WORKING YET) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the nmr calculation - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN_INTERPOLATOR" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES(MSection): - ''' + """ The linear response is used to calculate one of the following properties: nmr, epr, raman, ... - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_ENERGY_GAP = Quantity( type=str, shape=[], - description=''' + description=""" Energy gap estimate [a.u.] for preconditioning - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_EPS = Quantity( type=str, shape=[], - description=''' + description=""" target accuracy for the convergence of the conjugate gradient. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of conjugate gradient iteration to be performed for one optimization. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_PRECONDITIONER = Quantity( type=str, shape=[], - description=''' + description=""" Type of preconditioner to be used with all minimization schemes. They differ in effectiveness, cost of construction, cost of application. Properly preconditioned minimization can be orders of magnitude faster than doing nothing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_RESTART_EVERY = Quantity( type=str, shape=[], - description=''' + description=""" Restart the conjugate gradient after the specified number of iterations. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Restart the response calculation if the restart file exists - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_LINRES_WFN_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Root of the file names where to read the response functions fromwhich to restart the calculation of the linear response - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_CURRENT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_EPR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_LOCALIZE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_NMR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_POLAR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES_SPINSPIN" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT(MSection): - ''' + """ specifies a linear constraint on the fitted charges.This can be used to give equal values to equivalent atoms.sum over atom_list c_i * q_i = t - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT_ATOM_COEF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the coefficient of the atom in this linear constraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT_ATOM_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Defines the list of atoms involved in this constraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT_EQUAL_CHARGES = Quantity( type=str, shape=[], - description=''' + description=""" All atoms in ATOM_LIST are constrained to have the same charges. When using this keyword, TARGET and ATOM_COEF do not need to be set and will be ignored. Instead of using this keyword, the constraint section could be repeated. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" the target value for the constraint - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS(MSection): - ''' + """ Specifies the parameter for sampling the RESP fitting points for non-periodic systems, i.e. systems that do not involve surfaces. This section can be used with periodic and nonperiodic Poisson solvers, it only affects the sampling of grid points. All grid points in the shell defined by rmin and rmax are accepted for fitting. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_RMAX_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum distance a fit point is away from an atom of a given kind - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum distance a fit point is away from an atom. Valid for all atomic kinds for which no RMAX_KIND are specified. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_RMIN_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the minimum distance a fit point is away from an atom of a given kind - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the minimum distance a fit point is away from an atom. Valid for all atomic kinds for which no RMIN_KIND are specified. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_X_HI = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the upper boundary of the box along X used to sample the potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_X_LOW = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the lower boundary of the box along X used to sample the potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_Y_HI = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the upper boundary of the box along Y used to sample the potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_Y_LOW = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the lower boundary of the box along Y used to sample the potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_Z_HI = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the upper boundary of the box along Z used to sample the potential. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS_Z_LOW = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the lower boundary of the box along Z used to sample the potential. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS(MSection): - ''' + """ Specifies the parameter for sampling the RESP fitting points for periodic systems, i.e. systems that involve surfaces. This section can only be used with periodic Poisson solver and cell. To see, which grid points were used, switch on COORD_FIT_POINTS in the PRINT section. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS_ATOM_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of indexes of atoms used to define the region for the RESP fitting. The list should contain indexes of atoms of the first surface layer. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Length of the sampling box, i.e. a box of this length and the height specified by RANGE is defined above each surface atom given in ATOM_LIST. The grid points in the boxes are accepted as fitting point. Should be in the range of the nearest neighbour distance (a bit larger to be on the safe side). Allows for a refined sampling of grid points in case of corrugated surfaces. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Range where the fitting points are sampled. A range of 3 to 5 Angstroms means that the fitting points are sampled in the region of 3 to 5 Angstroms above the surface which is defined by atom indexes given in ATOM_LIST. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS_SURF_DIRECTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies what above the surface means. Defines the direction. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT(MSection): - ''' + """ specifies a restraint on the fitted charges.This can be used to restrain values to zero.s*(sum over atom_list q_i - t)**2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT_ATOM_COEF = Quantity( type=str, shape=[], - description=''' + description=""" Defines the coefficient of the atom in this linear restraint. If given, the restraint will be: s*(sum over atom_list c_i * q_i - t)**2 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT_ATOM_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Defines the list of atoms involved in this restraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" the target value for the constraint - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" the target value for the restraint - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP(MSection): - ''' + """ Requests a RESP fit of charges. When using a periodic Poisson solver and a periodic cell, the periodic RESP routines are used. If the Hartree potential matches with the one of an isolated system (i.e. isolated Poisson solver and big, nonperiodic cells), the nonperiodic RESP routines are automatically used. The subsections NONPERIODIC_SYS and PERIODIC_SYS do not request a nonperiodic or periodic solution, they only determine the sampling of the fitting points. All restraints are harmonic! - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_INTEGER_TOTAL_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Forces the total charge to be integer - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAIN_HEAVIES_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" If defined, enforce the restraint of non-hydrogen atoms to zero. Its value is the strength of the restraint on the heavy atoms. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAIN_HEAVIES_TO_ZERO = Quantity( type=str, shape=[], - description=''' + description=""" Restrain non-hydrogen atoms to zero. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_STRIDE = Quantity( type=str, shape=[], - description=''' + description=""" The stride (X,Y,Z) used to write the cube file (larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or 1 number valid for all components. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_PROPERTIES_RESP_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the value of the width of the Gaussian charge distribution carried by each atom. Needs only to be specified when using a periodic Poisson solver. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_CONSTRAINT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_NONPERIODIC_SYS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_PERIODIC_SYS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_PROPERTIES(MSection): - ''' + """ This section is used to set up the PROPERTIES calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ATOMIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ATOMIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ATOMIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_ET_COUPLING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_PROPERTIES_FIT_CHARGE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PROPERTIES_LINRES"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PROPERTIES_RESP"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_CELL_CELL_REF(MSection): - ''' + """ Input parameters needed to set up the CELL_REF. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_ABC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lengths of the cell vectors A, B, and C, which defines the diagonal elements of h matrix for an orthorhombic cell. For non-orthorhombic cells it is possible either to specify the angles ALPHA, BETA, GAMMA via ALPHA_BETA_GAMMA keyword or alternatively use the keywords A, B, and C. The convention is that A lies along the X-axis, B is in the XY plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_ALPHA_BETA_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the angles between the vectors A, B and C when using the ABC keyword. The convention is that A lies along the X-axis, B is in the XY plane. ALPHA is the angle between B and C, BETA is the angle between A and C and GAMMA the angle between A and B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_A = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector A. This defines the first column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_B = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector B. This defines the second column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_CELL_FILE_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the format of the cell file (if used) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Possibility to read the cell from an external file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_C = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector C. This defines the third column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_MULTIPLE_UNIT_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, assuming it as a unit cell. This keyword affects only the CELL specification. The same keyword in SUBSYS%TOPOLOGY%MULTIPLE_UNIT_CELL should be modified in order to affect the coordinates specification. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions for which periodic boundary conditions (PBC) will be applied. Important notice: This applies to the generation of the pair lists as well as to the application of the PBCs to positions. See the POISSON section to specify the periodicity used for the electrostatics. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_REF_SYMMETRY = Quantity( type=str, shape=[], - description=''' + description=""" Imposes an initial cell symmetry. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_CELL(MSection): - ''' + """ Input parameters needed to set up the CELL. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_CELL_ABC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lengths of the cell vectors A, B, and C, which defines the diagonal elements of h matrix for an orthorhombic cell. For non-orthorhombic cells it is possible either to specify the angles ALPHA, BETA, GAMMA via ALPHA_BETA_GAMMA keyword or alternatively use the keywords A, B, and C. The convention is that A lies along the X-axis, B is in the XY plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_ALPHA_BETA_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the angles between the vectors A, B and C when using the ABC keyword. The convention is that A lies along the X-axis, B is in the XY plane. ALPHA is the angle between B and C, BETA is the angle between A and C and GAMMA the angle between A and B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_A = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector A. This defines the first column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_B = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector B. This defines the second column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_FILE_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the format of the cell file (if used) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Possibility to read the cell from an external file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_C = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector C. This defines the third column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_MULTIPLE_UNIT_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, assuming it as a unit cell. This keyword affects only the CELL specification. The same keyword in SUBSYS%TOPOLOGY%MULTIPLE_UNIT_CELL should be modified in order to affect the coordinates specification. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions for which periodic boundary conditions (PBC) will be applied. Important notice: This applies to the generation of the pair lists as well as to the application of the PBCs to positions. See the POISSON section to specify the periodicity used for the electrostatics. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CELL_SYMMETRY = Quantity( type=str, shape=[], - description=''' + description=""" Imposes an initial cell symmetry. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_CELL_CELL_REF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_CELL_CELL_REF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_CELL_CELL_REF"), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE( + MSection +): + """ Specify information to add a classical charge before the QM/MM energies and forces evaluation - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_ALPHA = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_ALPHA = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the scaling factor that defines the movement along the defined direction - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_ATOM_INDEX_1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the first atom defining the direction along which the atom will be added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_ATOM_INDEX_2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the second atom defining the direction along which the atom will be added - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_CHARGE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_CHARGE = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the charge for the added source of QM/MM potential - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius used for the QM/MM electrostatic coupling for the added source - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_RADIUS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the radius used for the QM/MM electrostatic coupling for the added source - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE( + MSection +): + """ Specify information to move a classical charge before the QM/MM energies and forces evaluation - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE_ALPHA = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE_ALPHA = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the scaling factor that defines the movement along the defined direction - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE_ATOM_INDEX_1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the MM atom involved in the QM/MM link to be moved - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE_ATOM_INDEX_2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the second atom defining the direction along which the atom will be moved - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius used for the QM/MM electrostatic coupling after movement - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the radius used for the QM/MM electrostatic coupling after movement - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK(MSection): - ''' + """ Specify information on the QM/MM link treatment - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ALPHA_IMOMM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor to be used for projecting the forces on the capping hydrogen in the IMOMM QM/MM link scheme to the MM atom of the link. A good guess can be derived from the bond distances of the forcefield: alpha = r_eq(QM-MM) / r_eq(QM-H). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Overwrite the specification of the correction radius only for the MM atom involved in the link.Default is to use the same correction radius as for the specified type. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_FIST_SCALE_FACTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_FIST_SCALE_FACTOR = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the scaling factor for the MM charge involved in the link QM/MM. This keyword modifies the MM charge in FIST. The modified charge will be used then also for the generation of the QM/MM potential. Default 1.0 i.e. no charge rescaling of the MM atom of the QM/MM link bond. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_LINK_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the method to use to treat the defined QM/MM link - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MM_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the MM atom involved in the QM/MM link, Default hydrogen. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_QM_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the QM atom involved in the QM/MM link - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_QM_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the element of the QM capping atom involved in the QM/MM link - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_QMMM_SCALE_FACTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_QMMM_SCALE_FACTOR = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the scaling factor for the MM charge involved in the link QM/MM. This keyword affects only the QM/MM potential, it doesn't affect the electrostatic in the classical part of the code. Default 1.0 i.e. no charge rescaling of the MM atom of the QM/MM link bond. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Overwrite the specification of the radius only for the MM atom involved in the link.Default is to use the same radius as for the specified type. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_ADD_MM_CHARGE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK_MOVE_MM_CHARGE" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS(MSection): - ''' + """ Information about possible links for automatic covalent bond breaking for the buffer QM/MM calculation.Ignored - need to implement buffer selection by atom and walking of connectivity data. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS_LINK" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE( + MSection +): + """ Specify information to add a classical charge before the QM/MM energies and forces evaluation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor that defines the movement along the defined direction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE_ATOM_INDEX_1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the first atom defining the direction along which the atom will be added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE_ATOM_INDEX_2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the second atom defining the direction along which the atom will be added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the charge for the added source of QM/MM potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius used for the QM/MM electrostatic coupling for the added source - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the radius used for the QM/MM electrostatic coupling for the added source - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE( + MSection +): + """ Specify information to move a classical charge before the QM/MM energies and forces evaluation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor that defines the movement along the defined direction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE_ATOM_INDEX_1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the MM atom involved in the QM/MM link to be moved - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE_ATOM_INDEX_2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the second atom defining the direction along which the atom will be moved - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius used for the QM/MM electrostatic coupling after movement - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the radius used for the QM/MM electrostatic coupling after movement - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK( + MSection +): + """ Specify information on the QM/MM link treatment - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ALPHA_IMOMM = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ALPHA_IMOMM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the scaling factor to be used for projecting the forces on the capping hydrogen in the IMOMM QM/MM link scheme to the MM atom of the link. A good guess can be derived from the bond distances of the forcefield: alpha = r_eq(QM-MM) / r_eq(QM-H). - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_CORR_RADIUS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_CORR_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Overwrite the specification of the correction radius only for the MM atom involved in the link.Default is to use the same correction radius as for the specified type. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_FIST_SCALE_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor for the MM charge involved in the link QM/MM. This keyword modifies the MM charge in FIST. The modified charge will be used then also for the generation of the QM/MM potential. Default 1.0 i.e. no charge rescaling of the MM atom of the QM/MM link bond. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_LINK_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_LINK_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the method to use to treat the defined QM/MM link - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MM_INDEX = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MM_INDEX = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the index of the MM atom involved in the QM/MM link, Default hydrogen. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_QM_INDEX = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_QM_INDEX = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the index of the QM atom involved in the QM/MM link - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_QM_KIND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_QM_KIND = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the element of the QM capping atom involved in the QM/MM link - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_QMMM_SCALE_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor for the MM charge involved in the link QM/MM. This keyword affects only the QM/MM potential, it doesn't affect the electrostatic in the classical part of the code. Default 1.0 i.e. no charge rescaling of the MM atom of the QM/MM link bond. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_RADIUS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Overwrite the specification of the radius only for the MM atom involved in the link.Default is to use the same radius as for the specified type. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_ADD_MM_CHARGE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK_MOVE_MM_CHARGE" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND( + MSection +): + """ Information about the qm kind in the qm/mm scheme - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND_MM_INDEX = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND_MM_INDEX = ( + Quantity( + type=str, + shape=[], + description=""" The indexes of the mm atoms that have this kind. This keyword can be repeated several times (useful if you have to specify many indexes). - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The qm kind - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE(MSection): - ''' + """ List of atoms always in buffer region, non-adaptively, and any needed LINK sections - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_LINK" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE_QM_KIND" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND( + MSection +): + """ Information about the qm kind in the qm/mm scheme - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND_MM_INDEX = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND_MM_INDEX = ( + Quantity( + type=str, + shape=[], + description=""" The indexes of the mm atoms that have this kind. This keyword can be repeated several times (useful if you have to specify many indexes). - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The qm kind - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE(MSection): - ''' + """ List of atoms always in QM region, non-adaptively - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE_QM_KIND" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_RESTART_INFO(MSection): - ''' + """ This section provides information about old force-mixing indices and labels, for restarts. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_RESTART_INFO_INDICES = Quantity( type=str, shape=[], - description=''' + description=""" Indices of atoms in previous step QM regions. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_RESTART_INFO_LABELS = Quantity( type=str, shape=[], - description=''' + description=""" Labels of atoms in previous step QM regions. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING(MSection): - ''' + """ This section enables and defines parameters for force-mixing based QM/MM, which actually does two conventional QM/MM calculations, on a small and a large QM region, and combines the MM forces from one and QM forces from the other to create a complete @@ -23959,10316 +28025,12636 @@ class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING(MSection): stress, or an energy that is consistent with the forces. For GEO_OPT this means only MOTION&GEO_OPT&TYPE CG, MOTION&GEO_OPT&CG&LINE_SEARCH&TYPE 2PNT, and MOTION&GEO_OPT&CG&LINE_SEARCH&2PNT&LINMIN_GRAD_ONLY T - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_ADAPTIVE_EXCLUDE_MOLECULES = Quantity( type=str, shape=[], - description=''' + description=""" List of molecule names to exclude from adaptive regions (e.g. big things like proteins) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_EXTENDED_DELTA_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Additional net charge in extended region relative to core (core charge is specified in DFT section, as usual for a convetional QM/MM calculation) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_MAX_N_QM = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of QM atoms, for detection of runaway adaptive selection. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_MOMENTUM_CONSERVATION_REGION = Quantity( type=str, shape=[], - description=''' + description=""" Region to apply correction force to for momentum conservation - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_MOMENTUM_CONSERVATION_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" How to apply force to get momentum conservation - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_EXTENDED_SEED_IS_ONLY_CORE_LIST = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_EXTENDED_SEED_IS_ONLY_CORE_LIST = ( + Quantity( + type=str, + shape=[], + description=""" Makes the extended QM zone be defined hysterestically by distance from QM core list (i.e. atoms specified explicitly by user) instead of from full QM core region (specified by user + hysteretic selection + unbreakable bonds) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_KIND_ELEMENT_MAPPING = Quantity( type=str, shape=[], - description=''' + description=""" Mapping from elements to QM_KINDs for adaptively included atoms. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_R_BUF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the inner and outer radii of buffer region. All atoms within this distance (hysteretically) of any QM atoms will be buffer atoms in the force- mixing calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_R_CORE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the inner and outer radii of core QM region. All molecules with any atoms within this distance (hysteretically) of any atoms specified as QM in enclosing QM/MM section will be core QM atoms in the force-mixing calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_R_QM = Quantity( type=str, shape=[], - description=''' + description=""" Specify the inner and outer radii of QM dynamics region. All molecules with atoms within this distance (hysteretically) of any atoms in core will follow QM dynamics in the force-mixing calculation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCE_MIXING_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Enables force-mixing - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_LINKS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_BUFFER_NON_ADAPTIVE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_QM_NON_ADAPTIVE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_RESTART_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_RESTART_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING_RESTART_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT(MSection): - ''' + """ This section specifies the input parameters for a generic potential type.A functional form is specified. Mathematical Operators recognized are +, -, *, /, ** or alternatively ^, whereas symbols for brackets must be (). The function parser recognizes the (single argument) Fortran 90 intrinsic functions abs, exp, log10, log, sqrt, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan. Parsing for INTRINSIC functions is CASE INsensitive. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variable of the functional form. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN(MSection): - ''' + """ This section specifies the input parameters for GOODWIN potential type.Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_DC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the DC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_MC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the MC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_M = Quantity( type=str, shape=[], - description=''' + description=""" Defines the M parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN_VR0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the VR0 parameter of the Goodwin potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES(MSection): - ''' + """ This section specifies the input parameters for LENNARD-JONES potential type.Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6]. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES_EPSILON = Quantity( type=str, shape=[], - description=''' + description=""" Defines the EPSILON parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the SIGMA parameter of the LJ potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS(MSection): - ''' + """ This section specifies the input parameters for WILLIAMS potential type.Functional form: V(r) = A*EXP(-B*r) - C / r^6 . - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT(MSection): - ''' + """ This section specifies the input parameters for a generic potential type.A functional form is specified. Mathematical Operators recognized are +, -, *, /, ** or alternatively ^, whereas symbols for brackets must be (). The function parser recognizes the (single argument) Fortran 90 intrinsic functions abs, exp, log10, log, sqrt, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan. Parsing for INTRINSIC functions is CASE INsensitive. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the generic potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variable of the functional form. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN(MSection): - ''' + """ This section specifies the input parameters for GOODWIN potential type.Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_DC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the DC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_D = Quantity( type=str, shape=[], - description=''' + description=""" Defines the D parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_MC = Quantity( type=str, shape=[], - description=''' + description=""" Defines the MC parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_M = Quantity( type=str, shape=[], - description=''' + description=""" Defines the M parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Goodwin potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN_VR0 = Quantity( type=str, shape=[], - description=''' + description=""" Defines the VR0 parameter of the Goodwin potential - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES( + MSection +): + """ This section specifies the input parameters for LENNARD-JONES potential type.Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6]. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_EPSILON = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_EPSILON = ( + Quantity( + type=str, + shape=[], + description=""" Defines the EPSILON parameter of the LJ potential - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the LJ potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Defines the SIGMA parameter of the LJ potential - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS(MSection): - ''' + """ This section specifies the input parameters for WILLIAMS potential type.Functional form: V(r) = A*EXP(-B*r) - C / r^6 . - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind involved in the nonbond potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_A = Quantity( type=str, shape=[], - description=''' + description=""" Defines the A parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_B = Quantity( type=str, shape=[], - description=''' + description=""" Defines the B parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_C = Quantity( type=str, shape=[], - description=''' + description=""" Defines the C parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the cutoff parameter of the Williams potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" Defines the upper bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" Defines the lower bound of the potential. If not set the range is the full range generate by the spline - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14(MSection): - ''' + """ This section specifies the input parameters for 1-4 NON-BONDED interactions. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GENPOT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_GOODWIN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_LENNARD_JONES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14_WILLIAMS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED(MSection): - ''' + """ Specify information on the QM/MM non-bonded forcefield - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GENPOT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_GOODWIN" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_LENNARD_JONES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED_WILLIAMS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD(MSection): - ''' + """ Specify information on the QM/MM forcefield - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_FORCEFIELD_MULTIPLE_POTENTIAL = Quantity( type=str, shape=[], - description=''' + description=""" Enables the possibility to define NONBONDED and NONBONDED14 as a sum of different kinds of potential. Useful for piecewise defined potentials. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED14" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD_NONBONDED" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_IMAGE_CHARGE(MSection): - ''' + """ Inclusion of polarization effects within the image charge approach for systems where QM molecules are physisorbed on e.g. metal surfaces described by MM. QM box size has to be equal to MM box size. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_IMAGE_CHARGE_DETERM_COEFF = Quantity( type=str, shape=[], - description=''' + description=""" Specifies how the coefficients are determined. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_IMAGE_CHARGE_EXT_POTENTIAL = Quantity( type=str, shape=[], - description=''' + description=""" External potential applied to the metal electrode - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_IMAGE_CHARGE_IMAGE_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" File name where to read the image matrix used as preconditioner in the iterative scheme - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_IMAGE_CHARGE_MM_ATOM_LIST = Quantity( type=str, shape=[], - description=''' + description=""" List of MM atoms carrying an induced Gaussian charge. If this keyword is not given, all MM atoms will carry an image charge. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_IMAGE_CHARGE_RESTART_IMAGE_MATRIX = Quantity( type=str, shape=[], - description=''' + description=""" Restart the image matrix. Useful when calculating coefficients iteratively (the image matrix is used as preconditioner in that case) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_IMAGE_CHARGE_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the value of the width of the (induced) Gaussian charge distribution carried by each MM atom. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO(MSection): - ''' + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS(MSection): - ''' + """ outputs a cube with the coefficents calculated for the spline interpolation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR(MSection): - ''' + """ kind of interpolation used between the multigrids - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_KIND = Quantity( type=str, shape=[], - description=''' + description=""" the interpolator to use - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INTERPOLATOR_SAFE_COMPUTATION = Quantity( type=str, shape=[], - description=''' + description=""" if a non unrolled calculation is to be performed in parallel - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR_SPL_COEFFS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE(MSection): - ''' + """ Specify information to add a classical charge before the QM/MM energies and forces evaluation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor that defines the movement along the defined direction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE_ATOM_INDEX_1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the first atom defining the direction along which the atom will be added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE_ATOM_INDEX_2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the second atom defining the direction along which the atom will be added - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the charge for the added source of QM/MM potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius used for the QM/MM electrostatic coupling for the added source - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the radius used for the QM/MM electrostatic coupling for the added source - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE(MSection): - ''' + """ Specify information to move a classical charge before the QM/MM energies and forces evaluation - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor that defines the movement along the defined direction - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE_ATOM_INDEX_1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the MM atom involved in the QM/MM link to be moved - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE_ATOM_INDEX_2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the second atom defining the direction along which the atom will be moved - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius used for the QM/MM electrostatic coupling after movement - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the radius used for the QM/MM electrostatic coupling after movement - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_LINK(MSection): - ''' + """ Specify information on the QM/MM link treatment - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_LINK_ALPHA_IMOMM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor to be used for projecting the forces on the capping hydrogen in the IMOMM QM/MM link scheme to the MM atom of the link. A good guess can be derived from the bond distances of the forcefield: alpha = r_eq(QM-MM) / r_eq(QM-H). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Overwrite the specification of the correction radius only for the MM atom involved in the link.Default is to use the same correction radius as for the specified type. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_FIST_SCALE_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor for the MM charge involved in the link QM/MM. This keyword modifies the MM charge in FIST. The modified charge will be used then also for the generation of the QM/MM potential. Default 1.0 i.e. no charge rescaling of the MM atom of the QM/MM link bond. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_LINK_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the method to use to treat the defined QM/MM link - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_MM_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the MM atom involved in the QM/MM link, Default hydrogen. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_QM_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the QM atom involved in the QM/MM link - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_QM_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the element of the QM capping atom involved in the QM/MM link - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_QMMM_SCALE_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scaling factor for the MM charge involved in the link QM/MM. This keyword affects only the QM/MM potential, it doesn't affect the electrostatic in the classical part of the code. Default 1.0 i.e. no charge rescaling of the MM atom of the QM/MM link bond. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_LINK_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Overwrite the specification of the radius only for the MM atom involved in the link.Default is to use the same radius as for the specified type. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_ADD_MM_CHARGE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_LINK_MOVE_MM_CHARGE" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_MM_KIND(MSection): - ''' + """ Information about the mm kind in the qm/mm scheme - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_MM_KIND_CORR_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the correction radius of the atomic kinds The correction radius is connected to the use of the compatibility keyword. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_MM_KIND_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the radius of the atomic kinds - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_MM_KIND_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The MM kind - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE(MSection): - ''' + """ Controls the checking of the G-space term Spline Interpolation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO(MSection): - ''' + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR(MSection): - ''' + """ controls the interpolation for the G-space term - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE(MSection): - ''' + """ Controls the checking of the G-space term Spline Interpolation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR(MSection): - ''' + """ controls the interpolation for the G-space term - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_AINT_PRECOND = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_AINT_PRECOND = ( + Quantity( + type=str, + shape=[], + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_EPS_R = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the residual for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_EPS_X = Quantity( type=str, shape=[], - description=''' + description=""" accuracy on the solution for spline3 the interpolators - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" the maximum number of iterations - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO( + MSection +): + """ Controls the printing of basic information during the run - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE(MSection): - ''' + """ This section is used to set up the decoupling of QM periodic images with the use of density derived atomic point charges. Switched on by default even if not explicitly given. Can be switched off if e.g. QM and MM box are of the same size. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_ANALYTICAL_GTERM = Quantity( type=str, shape=[], - description=''' + description=""" Evaluates the Gterm in the Ewald Scheme analytically instead of using Splines. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_EWALD_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Precision achieved in the Ewald sum. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_NGRIDS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of grid points used for the Interpolation of the G-space term - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Real space cutoff for the Ewald sum. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the usage of the multipole section - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_CHECK_SPLINE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_INTERPOLATOR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES(MSection): - ''' + """ Enables the use of multipoles in the treatment of the electrostatics. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES_EPS_POL = Quantity( type=str, shape=[], - description=''' + description=""" Specify the rmsd threshold for the derivatives of the energy towards the Cartesian dipoles components - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES_MAX_IPOL_ITER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES_MAX_IPOL_ITER = ( + Quantity( + type=str, + shape=[], + description=""" Specify the maximum number of iterations for induced dipoles - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES_MAX_MULTIPOLE_EXPANSION = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum level of multipoles expansion used for the electrostatics. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES_POL_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the method to obtain self consistent induced multipole moments. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the Multipoles - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID(MSection): - ''' + """ Set options that influence how the realspace grids are being distributed in parallel runs. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_DISTRIBUTION_LAYOUT = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_DISTRIBUTION_LAYOUT = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the number of slices in the x, y and z directions.-1 specifies that any number of slices is OK.If a given distribution can not be satisfied, a replicated grid will result.Also see LOCK_DISTRIBUTION. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_DISTRIBUTION_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_DISTRIBUTION_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Parallelization strategy. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_HALO_REDUCTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to reduce the halo of the distributed grid (experimental features). - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_LOCK_DISTRIBUTION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_LOCK_DISTRIBUTION = ( + Quantity( + type=str, + shape=[], + description=""" Expert use only, only basic QS deals correctly with a non-default value.If the distribution is locked, a grid will have the same distribution asthe next finer multigrid (provided it is distributed).If unlocked, all grids can be distributed freely. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_MAX_DISTRIBUTED_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" If the multigrid-level of a grid is larger than the parameter, it will not be distributed in the automatic scheme. - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_MEMORY_FACTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID_MEMORY_FACTOR = ( + Quantity( + type=str, + shape=[], + description=""" A grid will only be distributed if the memory usage for that grid (including halo) is smaller than a replicated grid by this parameter. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD(MSection): - ''' + """ Ewald parameters controlling electrostatic only for CLASSICAL MM. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" alpha parameter associated with Ewald (EWALD|PME|SPME). Recommended for small systems is is alpha = 3.5 / r_cut. Tuning alpha, r_cut and gmax is needed to obtain O(N**1.5) scaling for ewald. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_EPSILON = Quantity( type=str, shape=[], - description=''' + description=""" tolerance of gaussians for fft interpolation (PME only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_EWALD_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Expected accuracy in the Ewald sum. This number affects only the calculation of the cutoff for the real-space term of the ewald summation (EWALD|PME|SPME) as well as the construction of the neighbor lists (if the cutoff for non-bonded terms is smaller than the value employed to compute the EWALD real-space term). This keyword has no effect on the reciprocal space term (which can be tuned independently). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_EWALD_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" The type of ewald you want to perform. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_GMAX = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points (SPME and EWALD). If a single number is specified,the same number of points is used for all three directions on the grid.If three numbers are given, each direction can have a different number of points.The number of points needs to be FFTable (which depends on the library used) and odd for EWALD.The optimal number depends e.g. on alpha and the size of the cell. 1 point per Angstrom is common. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_NS_MAX = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points on small mesh (PME only), should be odd. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_O_SPLINE = Quantity( type=str, shape=[], - description=''' + description=""" order of the beta-Euler spline (SPME only) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Explicitly provide the real-space cutoff of the ewald summation (EWALD|PME|SPME). If present, overwrites the estimate of EWALD_ACCURACY and may affect the construction of the neighbor lists for non-bonded terms (in FIST), if the value specified is larger than the cutoff for non-bonded interactions. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_MULTIPOLES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD_RS_GRID" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MT(MSection): - ''' + """ Sets up parameters of Martyna-Tuckerman poisson solver. Note that exact results are only guaranteed if the unit cell is twice as large as charge density (and serious artefacts can result if the cell is much smaller). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MT_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Convergence parameter ALPHA*RMIN. Default value 7.0 - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MT_REL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Specify the multiplicative factor for the CUTOFF keyword in MULTI_GRID section. The result gives the cutoff at which the 1/r non-periodic FFT3D is evaluated.Default is 2.0 - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE( + MSection +): + """ Controls the checking of the G-space term Spline Interpolation. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO( + MSection +): + """ if convergence information about the linear solver of the spline methods should be printed - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR( + MSection +): + """ controls the interpolation for the G-space term - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_AINT_PRECOND = Quantity( type=str, shape=[], - description=''' + description=""" the approximate inverse to use to get the starting point for the linear solver of the spline3 methods - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_EPS_R = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_EPS_R = ( + Quantity( + type=str, + shape=[], + description=""" accuracy on the residual for spline3 the interpolators - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_EPS_X = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_EPS_X = ( + Quantity( + type=str, + shape=[], + description=""" accuracy on the solution for spline3 the interpolators - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_MAX_ITER = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_MAX_ITER = ( + Quantity( + type=str, + shape=[], + description=""" the maximum number of iterations - ''') - - x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_PRECOND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_PRECOND = ( + Quantity( + type=str, + shape=[], + description=""" The preconditioner used for the linear solver of the spline3 methods - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR_CONV_INFO" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO( + MSection +): + """ Controls the printing of basic information during the run - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE(MSection): - ''' + """ This section is used to set up the decoupling of QM periodic images with the use of density derived atomic point charges. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_ANALYTICAL_GTERM = Quantity( type=str, shape=[], - description=''' + description=""" Evaluates the Gterm in the Ewald Scheme analytically instead of using Splines. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_EWALD_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" Precision achieved in the Ewald sum. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_NGRIDS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of grid points used for the Interpolation of the G-space term - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Real space cutoff for the Ewald sum. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_CHECK_SPLINE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_INTERPOLATOR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE_PROGRAM_RUN_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_WAVELET(MSection): - ''' + """ Sets up parameters of wavelet based poisson solver.This solver allows for non- periodic (PERIODIC NONE) boundary conditions and slab-boundary conditions (but only PERIODIC XZ).It does not require very large unit cells, only that the density goes to zero on the faces of the cell.The use of PREFERRED_FFT_LIBRARY FFTSG is required - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_WAVELET_SCF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of scaling function used in the wavelet approach, the total energy depends on this choice,and the convergence with respect to cutoff depends on the selected scaling functions.Possible values are 8,14,16,20,24,30,40,50,60,100 - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON(MSection): - ''' + """ Sets up the poisson resolutor. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions on wich apply PBC. Important notice, this only applies to the electrostatics. See the CELL section to specify the periodicity used for e.g. the pair lists. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_POISSON_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of solver to use to solve the Poisson equation. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_EWALD" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MT" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_MULTIPOLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_WAVELET = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_WAVELET'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON_WAVELET" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC(MSection): - ''' + """ Specify parameters for QM/MM periodic boundary conditions calculations - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_GMAX = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum value of G in the reciprocal space over which perform the Ewald sum. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_NGRIDS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of grid points used for the Interpolation of the G-space term - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PERIODIC_REPLICA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of replica to take into consideration for the real part of the calculation. Default is letting the qmmm module decide how many replica you really need. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_CHECK_SPLINE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_INTERPOLATOR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_MULTIPOLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC_POISSON" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_QM_KIND(MSection): - ''' + """ Information about the qm kind in the qm/mm scheme - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_QM_KIND_MM_INDEX = Quantity( type=str, shape=[], - description=''' + description=""" The indexes of the mm atoms that have this kind. This keyword can be repeated several times (useful if you have to specify many indexes). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_QM_KIND_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The qm kind - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM_WALLS(MSection): - ''' + """ Enables Walls for the QM box. This can be used to avoid that QM atoms move out of the QM box. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_WALLS_K = Quantity( type=str, shape=[], - description=''' + description=""" Specify the value of the the force constant for the quadratic wall - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_WALLS_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of wall - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_WALLS_WALL_SKIN = Quantity( type=str, shape=[], - description=''' + description=""" Specify the value of the skin of the Wall in each dimension. The wall's effect is felt when atoms fall within the skin of the Wall. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_QMMM(MSection): - ''' + """ Input for QM/MM calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_QMMM_CENTER_GRID = Quantity( type=str, shape=[], - description=''' + description=""" This keyword specifies whether the QM system is centered in units of the grid spacing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CENTER_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" How to do the centering - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_CENTER = Quantity( type=str, shape=[], - description=''' + description=""" This keyword sets when the qm system is automatically centered. Default is EVERY_STEP. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_DELTA_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Additional net charge relative to that specified in DFT section. Used automatically by force mixing - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_E_COUPL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of the QM - MM electrostatic coupling. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_EPS_MM_RSPACE = Quantity( type=str, shape=[], - description=''' + description=""" Set the threshold for the collocation of the GEEP gaussian functions.this keyword affects only the GAUSS E_COUPLING. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_INITIAL_TRANSLATION_VECTOR = Quantity( type=str, shape=[], - description=''' + description=""" This keyword specify the initial translation vector to be applied to the system. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_MM_POTENTIAL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the file containing the potential expansion in gaussians. See the USE_GEEP_LIB keyword. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_NOCOMPATIBILITY = Quantity( type=str, shape=[], - description=''' + description=""" This keyword disables the compatibility of QM/MM potential between CPMD and CP2K implementations. The compatibility is achieved using an MM potential of the form: Erf[x/rc]/x + (1/rc -2/(pi^1/2*rc))*Exp[-(x/rc)^2] .This keyword has effect only selecting GAUSS E_COUPLING type. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_PARALLEL_SCHEME = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the parallel_scheme for the long range Potential - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_SPHERICAL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" Set the spherical cutoff for the QMMM electrostatic interaction. This acts like a charge multiplicative factor dependent on cutoff. For MM atoms farther than the SPHERICAL_CUTOFF(1) their charge is zero. The switch is performed with a smooth function: 0.5*(1-TANH((r-[SPH_CUT(1)-20*SPH_CUT(2)])/(SPH_CUT(2)))). Two values are required: the first one is the distance cutoff. The second one controls the stiffness of the smoothing. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_QMMM_USE_GEEP_LIB = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables the use of the internal GEEP library to generate the gaussian expansion of the MM potential. Using this keyword there's no need to provide the MM_POTENTIAL_FILENAME. It expects a number from 2 to 15 (the number of gaussian funtions to be used in the expansion. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_CELL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_CELL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_CELL"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_FORCE_MIXING"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_FORCEFIELD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_IMAGE_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_IMAGE_CHARGE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_IMAGE_CHARGE"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_INTERPOLATOR"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_LINK = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_LINK'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_LINK"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_MM_KIND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_MM_KIND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_MM_KIND"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_PERIODIC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_QM_KIND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_QM_KIND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_QM_KIND"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM_WALLS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM_WALLS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM_WALLS"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_RESCALE_FORCES(MSection): - ''' + """ Section controlling the rescaling of forces. Useful when starting from quite bad geometries with unphysically large forces. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_RESCALE_FORCES_MAX_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Maximum Values of the force. If the force of one atom exceed this value it's rescaled to the MAX_FORCE value. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF(MSection): - ''' + """ Input parameters needed to set up the CELL_REF. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_ABC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lengths of the cell vectors A, B, and C, which defines the diagonal elements of h matrix for an orthorhombic cell. For non-orthorhombic cells it is possible either to specify the angles ALPHA, BETA, GAMMA via ALPHA_BETA_GAMMA keyword or alternatively use the keywords A, B, and C. The convention is that A lies along the X-axis, B is in the XY plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_ALPHA_BETA_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the angles between the vectors A, B and C when using the ABC keyword. The convention is that A lies along the X-axis, B is in the XY plane. ALPHA is the angle between B and C, BETA is the angle between A and C and GAMMA the angle between A and B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_A = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector A. This defines the first column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_B = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector B. This defines the second column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_CELL_FILE_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the format of the cell file (if used) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Possibility to read the cell from an external file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_C = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector C. This defines the third column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_MULTIPLE_UNIT_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, assuming it as a unit cell. This keyword affects only the CELL specification. The same keyword in SUBSYS%TOPOLOGY%MULTIPLE_UNIT_CELL should be modified in order to affect the coordinates specification. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions for which periodic boundary conditions (PBC) will be applied. Important notice: This applies to the generation of the pair lists as well as to the application of the PBCs to positions. See the POISSON section to specify the periodicity used for the electrostatics. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF_SYMMETRY = Quantity( type=str, shape=[], - description=''' + description=""" Imposes an initial cell symmetry. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL(MSection): - ''' + """ Input parameters needed to set up the CELL. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_ABC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lengths of the cell vectors A, B, and C, which defines the diagonal elements of h matrix for an orthorhombic cell. For non-orthorhombic cells it is possible either to specify the angles ALPHA, BETA, GAMMA via ALPHA_BETA_GAMMA keyword or alternatively use the keywords A, B, and C. The convention is that A lies along the X-axis, B is in the XY plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_ALPHA_BETA_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the angles between the vectors A, B and C when using the ABC keyword. The convention is that A lies along the X-axis, B is in the XY plane. ALPHA is the angle between B and C, BETA is the angle between A and C and GAMMA the angle between A and B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_A = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector A. This defines the first column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_B = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector B. This defines the second column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_FILE_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the format of the cell file (if used) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Possibility to read the cell from an external file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_C = Quantity( type=str, shape=[], - description=''' + description=""" Specify the Cartesian components for the cell vector C. This defines the third column of the h matrix. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_MULTIPLE_UNIT_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, assuming it as a unit cell. This keyword affects only the CELL specification. The same keyword in SUBSYS%TOPOLOGY%MULTIPLE_UNIT_CELL should be modified in order to affect the coordinates specification. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Specify the directions for which periodic boundary conditions (PBC) will be applied. Important notice: This applies to the generation of the pair lists as well as to the application of the PBCs to positions. See the POISSON section to specify the periodicity used for the electrostatics. Typically the settings should be the same. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CELL_SYMMETRY = Quantity( type=str, shape=[], - description=''' + description=""" Imposes an initial cell symmetry. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL_CELL_REF" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE(MSection): - ''' + """ This section defines the plane. When using this colvar, two plane section must be defined! - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of 3 atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE_DEF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify how the plane is defined: either by 3 atoms or by a fixed normal vector. At least one plane must be defined through atoms. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE_NORMAL_VECTOR = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE_NORMAL_VECTOR = ( + Quantity( + type=str, + shape=[], + description=""" Alternatively to 3 atoms/points one can define one of the two, planes by defining its NORMAL vector. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE(MSection): - ''' + """ This section defines the angle between two planes as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE(MSection): - ''' + """ Section to define the angle as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the angle. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION(MSection): - ''' + """ Section to define the rotation of a bond/line with respect toanother bond/line - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_P1_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_P1_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the second bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_P2_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_P2_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the second bond/line. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COLVAR_FUNC_INFO(MSection): - ''' + """ Specify further data possibly used by colvars, depending on the starting geometry, for computing the functions value. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COLVAR_FUNC_INFO_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Colvar function data. The order is an internal order. So if you decide to edit/modify/add these values by hand you should know very well what you are doing.! - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE( + MSection +): + """ This section defines the plane. When using this colvar, two plane section must be defined! - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of 3 atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE_DEF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify how the plane is defined: either by 3 atoms or by a fixed normal vector. At least one plane must be defined through atoms. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE_NORMAL_VECTOR = Quantity( type=str, shape=[], - description=''' + description=""" Alternatively to 3 atoms/points one can define one of the two, planes by defining its NORMAL vector. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE( + MSection +): + """ This section defines the angle between two planes as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE( + MSection +): + """ Section to define the angle as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the angle. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION( + MSection +): + """ Section to define the rotation of a bond/line with respect toanother bond/line - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_P1_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_P1_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the second bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_P2_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_P2_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the second bond/line. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COLVAR_FUNC_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COLVAR_FUNC_INFO( + MSection +): + """ Specify further data possibly used by colvars, depending on the starting geometry, for computing the functions value. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COLVAR_FUNC_INFO_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Colvar function data. The order is an internal order. So if you decide to edit/modify/add these values by hand you should know very well what you are doing.! - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE( + MSection +): + """ Section to define the conditioned distance as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_ATOMS_DISTANCE = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points from which the distance is computed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lambda parameter at the exponent of the conditioned distance function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION( + MSection +): + """ Section to define the coordination number as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ATOMS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify indexes of the third set of atoms/points. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_KINDS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ND_B = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ND_B = ( + Quantity( + type=str, + shape=[], + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_ND = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_NN_B = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_NN_B = ( + Quantity( + type=str, + shape=[], + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_NN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_NN = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_R0_B = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_R0_B = ( + Quantity( + type=str, + shape=[], + description=""" For the CV given by the multiplication of two coorination numbers, specify the R0 parameter in the second coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_R0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_R0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION( + MSection +): + """ Section to define functions between two distances as collective variables. The function is defined as d1+coeff*d2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_COEFFICIENT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coefficient in the function for the constraint. -1.0 has to be used for distance difference, 1.0 for distance addition - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE( + MSection +): + """ Section to define the distance of a point from a plane as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_ATOM_POINT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the atom/point index defining the point. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_ATOMS_PLANE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE( + MSection +): + """ Section to define the distance as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the distance. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_AXIS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_AXIS = ( + Quantity( + type=str, + shape=[], + description=""" Define the axes along which the colvar should be evaluated - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS( + MSection +): + """ Section to define the gyration radius as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points defyining the gyration radius variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_KINDS = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms defining the gyration radius. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP(MSection): - ''' + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_NPOINTS = Quantity( type=str, shape=[], - description=''' + description=""" The number of points in the path - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for shifting each term in the sum - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM( + MSection +): + """ Section to define the formation of a hydronium as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_HYDROGENS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_HYDROGENS = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_LAMBDA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_LAMBDA = ( + Quantity( + type=str, + shape=[], + description=""" Specify the LAMBDA parameter in the hydronium function. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_NH = Quantity( type=str, shape=[], - description=''' + description=""" Specify the NH parameter in the hydronium function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_OXYGENS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_OXYGENS = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_PNH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_PNH = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_PNO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_PNO = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_P = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_QNH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_QNH = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_QNO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_QNO = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_Q = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_ROH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_ROH = ( + Quantity( + type=str, + shape=[], + description=""" Specify the ROH parameter in the coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_ROO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_ROO = ( + Quantity( + type=str, + shape=[], + description=""" Specify the ROO parameter in the coordination function. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION( + MSection +): + """ Section to define the population of specie as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_ATOMS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_ATOMS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_KINDS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_KINDS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_N0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_N0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the n0 parameter that sets the coordination of the species. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_ND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_ND = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_NN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_NN = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_R0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_R0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the R0 parameter in the coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_SIGMA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_SIGMA = ( + Quantity( + type=str, + shape=[], + description=""" Specify the gaussian width of used to build the population istogram. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM( + MSection +): + """ Section to define the Q parameter (crystalline order parameter) as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the width of the Fermi-Dirac style smearing around RCUT. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_ATOMS_FROM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_ATOMS_FROM = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_ATOMS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_ATOMS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_L = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the L spherical harmonics from Ylm. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the distance cutoff for neighbors. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING( + MSection +): + """ Section to define general ring puckering collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the ring.At least 4 Atoms are needed. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_COORDINATE = Quantity( type=str, shape=[], - description=''' + description=""" Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring.0 is the total puckering variable Q,2..[N/2] are puckering coordinates.-2..-[N/2-1] are puckering angles. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD( + MSection +): + """ The positions for RMSD used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME( + MSection +): + """ Specify coordinates of the frame (number of frames can be either 1 or 2) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME_COORD" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD( + MSection +): + """ Section to define a CV as function of RMSD computed with respect to given reference configurations. For 2 configurations the colvar is equal to: ss = (RMSDA- RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the colvar is just the RMSD from that frame. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_ALIGN_FRAMES = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_ALIGN_FRAMES = ( + Quantity( + type=str, + shape=[], + description=""" Whether the reference frames should be aligned to minimize the RMSD - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the subset. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_SUBSET_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_SUBSET_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Define the subsytem used to compute the RMSD - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specify weights of atoms building the subset. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD_FRAME" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION( + MSection +): + """ Section to define the torsion as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the torsion. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED( + MSection +): + """ This section allows to use any function of the energy subsystems in a mixed_env calculation as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_ENERGY_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the collective variable in mathematical notation. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_ERROR_LIMIT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_ERROR_LIMIT = ( + Quantity( + type=str, + shape=[], + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Defines the parameters of the functional form - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_UNITS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_UNITS = ( + Quantity( + type=str, + shape=[], + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_VALUES = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_VALUES = ( + Quantity( + type=str, + shape=[], + description=""" Defines the values of parameter of the functional form - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_VARIABLES = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED_VARIABLES = ( + Quantity( + type=str, + shape=[], + description=""" Defines the variables of the functional form. To allow an efficient mapping the order of the energy variables will be considered identical to the order of the force_eval in the force_eval_order list. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U(MSection): - ''' + """ Section to define the energy as a generalized collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U_MIXED" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC(MSection): - ''' + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG( + MSection +): + """ Section to define the distance of an atom from its starting position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable.If absolute_position is specified, instead the CV is represented by the instantaneous position of the atom (only available for X, Y or Z components). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_ABSOLUTE_POSITION = Quantity( type=str, shape=[], - description=''' + description=""" If enabled, the absolute position of the atoms will be used. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_ATOM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_ATOM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the index of the atom/point. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_COMPONENT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_COMPONENT = ( + Quantity( + type=str, + shape=[], + description=""" Define the component of the position vector which will be used as a colvar. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG( + MSection +): + """ Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0)) or part of its components as a collective variable. The final term is given by the product of the components of A with the components of B. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the index of the atoms/points A and B. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_COMPONENT_A = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom A. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_COMPONENT_B = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom B. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_PBC = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_PBC = ( + Quantity( + type=str, + shape=[], + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR(MSection): - ''' + """ This section specifies the nature of the collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_ANGLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_BOND_ROTATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COLVAR_FUNC_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COLVAR_FUNC_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COLVAR_FUNC_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_CONDITIONED_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_COORDINATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_FUNCTION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE_POINT_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_GYRATION_RADIUS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HBP" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_HYDRONIUM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_POPULATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_QPARM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RING_PUCKERING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_RMSD" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_TORSION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_U" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_WC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_DIAG" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR_XYZ_OUTERDIAG" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR(MSection): - ''' + """ Allows the possibility to combine several COLVARs into one COLVAR with a generic function. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative of the combination of COLVARs with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_ERROR_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the function used to combine different COLVARs into one. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the variable that parametrises the FUNCTION defining how COLVARS should be combined. The matching follows the same order of the COLVARS definition in the input file. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR_COLVAR" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE(MSection): - ''' + """ Section to define the conditioned distance as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_ATOMS_DISTANCE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_ATOMS_DISTANCE = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points from which the distance is computed. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lambda parameter at the exponent of the conditioned distance function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION(MSection): - ''' + """ Section to define the coordination number as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_ATOMS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify indexes of the third set of atoms/points. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_KINDS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_ND_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_NN_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_R0_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, specify the R0 parameter in the second coordination function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE( + MSection +): + """ This section defines the plane. When using this colvar, two plane section must be defined! - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of 3 atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE_DEF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify how the plane is defined: either by 3 atoms or by a fixed normal vector. At least one plane must be defined through atoms. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE_NORMAL_VECTOR = Quantity( type=str, shape=[], - description=''' + description=""" Alternatively to 3 atoms/points one can define one of the two, planes by defining its NORMAL vector. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE( + MSection +): + """ This section defines the angle between two planes as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE( + MSection +): + """ Section to define the angle as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the angle. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION( + MSection +): + """ Section to define the rotation of a bond/line with respect toanother bond/line - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_P1_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_P1_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the second bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_P2_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_P2_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the second bond/line. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COLVAR_FUNC_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COLVAR_FUNC_INFO( + MSection +): + """ Specify further data possibly used by colvars, depending on the starting geometry, for computing the functions value. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COLVAR_FUNC_INFO_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Colvar function data. The order is an internal order. So if you decide to edit/modify/add these values by hand you should know very well what you are doing.! - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE( + MSection +): + """ Section to define the conditioned distance as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_ATOMS_DISTANCE = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points from which the distance is computed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lambda parameter at the exponent of the conditioned distance function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION( + MSection +): + """ Section to define the coordination number as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_ATOMS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify indexes of the third set of atoms/points. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_KINDS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_ND_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_ND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_ND = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_NN_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_NN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_NN = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_R0_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, specify the R0 parameter in the second coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_R0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_R0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION( + MSection +): + """ Section to define functions between two distances as collective variables. The function is defined as d1+coeff*d2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_COEFFICIENT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coefficient in the function for the constraint. -1.0 has to be used for distance difference, 1.0 for distance addition - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE( + MSection +): + """ Section to define the distance of a point from a plane as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_ATOM_POINT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the atom/point index defining the point. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_ATOMS_PLANE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE( + MSection +): + """ Section to define the distance as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the distance. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_AXIS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_AXIS = ( + Quantity( + type=str, + shape=[], + description=""" Define the axes along which the colvar should be evaluated - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS( + MSection +): + """ Section to define the gyration radius as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points defyining the gyration radius variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_KINDS = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms defining the gyration radius. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP( + MSection +): + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_NPOINTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_NPOINTS = ( + Quantity( + type=str, + shape=[], + description=""" The number of points in the path - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_SHIFT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_SHIFT = ( + Quantity( + type=str, + shape=[], + description=""" Parameter used for shifting each term in the sum - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM( + MSection +): + """ Section to define the formation of a hydronium as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_HYDROGENS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_LAMBDA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_LAMBDA = ( + Quantity( + type=str, + shape=[], + description=""" Specify the LAMBDA parameter in the hydronium function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_NH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_NH = ( + Quantity( + type=str, + shape=[], + description=""" Specify the NH parameter in the hydronium function. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_OXYGENS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_PNH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_PNH = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_PNO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_PNO = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_P = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_P = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_QNH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_QNH = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_QNO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_QNO = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_Q = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_Q = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_ROH = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_ROH = ( + Quantity( + type=str, + shape=[], + description=""" Specify the ROH parameter in the coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_ROO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_ROO = ( + Quantity( + type=str, + shape=[], + description=""" Specify the ROO parameter in the coordination function. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION( + MSection +): + """ Section to define the population of specie as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_N0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_N0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the n0 parameter that sets the coordination of the species. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_ND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_ND = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_NN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_NN = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_R0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_R0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the R0 parameter in the coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_SIGMA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_SIGMA = ( + Quantity( + type=str, + shape=[], + description=""" Specify the gaussian width of used to build the population istogram. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM( + MSection +): + """ Section to define the Q parameter (crystalline order parameter) as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_ALPHA = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_ALPHA = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the width of the Fermi-Dirac style smearing around RCUT. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_ATOMS_FROM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_ATOMS_FROM = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_ATOMS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_ATOMS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_L = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the L spherical harmonics from Ylm. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_RCUT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_RCUT = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the distance cutoff for neighbors. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING( + MSection +): + """ Section to define general ring puckering collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the ring.At least 4 Atoms are needed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_COORDINATE = Quantity( type=str, shape=[], - description=''' + description=""" Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring.0 is the total puckering variable Q,2..[N/2] are puckering coordinates.-2..-[N/2-1] are puckering angles. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD( + MSection +): + """ The positions for RMSD used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME( + MSection +): + """ Specify coordinates of the frame (number of frames can be either 1 or 2) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME_COORD" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD( + MSection +): + """ Section to define a CV as function of RMSD computed with respect to given reference configurations. For 2 configurations the colvar is equal to: ss = (RMSDA- RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the colvar is just the RMSD from that frame. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_ALIGN_FRAMES = Quantity( type=str, shape=[], - description=''' + description=""" Whether the reference frames should be aligned to minimize the RMSD - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_ATOMS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms building the subset. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_SUBSET_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_SUBSET_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Define the subsytem used to compute the RMSD - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specify weights of atoms building the subset. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD_FRAME" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION( + MSection +): + """ Section to define the torsion as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the torsion. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED( + MSection +): + """ This section allows to use any function of the energy subsystems in a mixed_env calculation as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_DX = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_DX = ( + Quantity( + type=str, + shape=[], + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_ENERGY_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the collective variable in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_ERROR_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_UNITS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_UNITS = ( + Quantity( + type=str, + shape=[], + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_VALUES = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_VALUES = ( + Quantity( + type=str, + shape=[], + description=""" Defines the values of parameter of the functional form - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variables of the functional form. To allow an efficient mapping the order of the energy variables will be considered identical to the order of the force_eval in the force_eval_order list. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U( + MSection +): + """ Section to define the energy as a generalized collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U_MIXED" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC( + MSection +): + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG( + MSection +): + """ Section to define the distance of an atom from its starting position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable.If absolute_position is specified, instead the CV is represented by the instantaneous position of the atom (only available for X, Y or Z components). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_ABSOLUTE_POSITION = Quantity( type=str, shape=[], - description=''' + description=""" If enabled, the absolute position of the atoms will be used. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_ATOM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_ATOM = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the index of the atom/point. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_COMPONENT = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_PBC = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_PBC = ( + Quantity( + type=str, + shape=[], + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG( + MSection +): + """ Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0)) or part of its components as a collective variable. The final term is given by the product of the components of A with the components of B. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the atoms/points A and B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_COMPONENT_A = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom A. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_COMPONENT_B = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR(MSection): - ''' + """ This section specifies the nature of the collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_ANGLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_BOND_ROTATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COLVAR_FUNC_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COLVAR_FUNC_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COLVAR_FUNC_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_CONDITIONED_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_COORDINATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_FUNCTION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE_POINT_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_GYRATION_RADIUS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HBP" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_HYDRONIUM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_POPULATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_QPARM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RING_PUCKERING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_RMSD" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_TORSION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_U" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_WC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_DIAG" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR_XYZ_OUTERDIAG" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD( + MSection +): + """ The positions for RMSD used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME(MSection): - ''' + """ Specify coordinates of the frame - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME_COORD" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP(MSection): - ''' + """ Activating this print key will print once a file with the values of the FUNCTION on a grid of COLVAR values in a specified range. GRID_SPACING and RANGE for every COLVAR has to be specified again in the same order as they are in the input. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_GRID_SPACING = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_GRID_SPACING = ( + Quantity( + type=str, + shape=[], + description=""" Distance between two gridpoints for the grid on the COLVAR - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" The range of of the grid of the COLVAR. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH(MSection): - ''' + """ Section defining the distance from a one dimensional reaction path in an Q-dimensional space of colvars. Constraining this colvar, allows to sample the space equidistant to the reaction path, both in the Q-dimensional colvar and 3N-Q remaining coordinates. For the details of the function see cited literature. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_ALIGN_FRAMES = Quantity( type=str, shape=[], - description=''' + description=""" Whether the reference frames should be aligned to minimize the RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the subset. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_DISTANCES_RMSD = Quantity( type=str, shape=[], - description=''' + description=""" Settings for DISTANCES_RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the ith element of the vector valued function that defines the reaction path. This keyword needs to repeat exactly Q times, and the order must match the order of the colvars. The VARIABLE (e.g. T) which parametrises the curve can be used as the target of a constraint. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the exponent of the Gaussian used in the integral representation of the colvar.The shape of the space orthogonal to the reaction path is defined by this choice. In the limit of large values, it is given by the plane orthogonal to the path.In practice, modest values are required for stable numerical integration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" The range of VARIABLE used for the parametrisation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_RMSD = Quantity( type=str, shape=[], - description=''' + description=""" Settings for RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Step size in the numerical integration, a few thousand points are common, and the proper number also depends on LAMBDA. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_SUBSET_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Define the subsytem used to compute the RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_VARIABLE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the variable that parametrises the FUNCTION defining the reaction path. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_COLVAR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_FRAME" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH_MAP" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION(MSection): - ''' + """ Section to define functions between two distances as collective variables. The function is defined as d1+coeff*d2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_COEFFICIENT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coefficient in the function for the constraint. -1.0 has to be used for distance difference, 1.0 for distance addition - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE(MSection): - ''' + """ Section to define the distance of a point from a plane as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_ATOM_POINT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the atom/point index defining the point. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_ATOMS_PLANE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE(MSection): - ''' + """ Section to define the distance as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the distance. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_AXIS = Quantity( type=str, shape=[], - description=''' + description=""" Define the axes along which the colvar should be evaluated - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS(MSection): - ''' + """ Section to define the gyration radius as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points defyining the gyration radius variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_KINDS = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms defining the gyration radius. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP(MSection): - ''' + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_NPOINTS = Quantity( type=str, shape=[], - description=''' + description=""" The number of points in the path - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for shifting each term in the sum - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM(MSection): - ''' + """ Section to define the formation of a hydronium as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_HYDROGENS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the LAMBDA parameter in the hydronium function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_NH = Quantity( type=str, shape=[], - description=''' + description=""" Specify the NH parameter in the hydronium function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_OXYGENS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_PNH = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_PNO = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_P = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_QNH = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_QNO = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_Q = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_ROH = Quantity( type=str, shape=[], - description=''' + description=""" Specify the ROH parameter in the coordination function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_ROO = Quantity( type=str, shape=[], - description=''' + description=""" Specify the ROO parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION(MSection): - ''' + """ Section to define the population of specie as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_N0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the n0 parameter that sets the coordination of the species. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the gaussian width of used to build the population istogram. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM(MSection): - ''' + """ Section to define the Q parameter (crystalline order parameter) as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the width of the Fermi-Dirac style smearing around RCUT. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_L = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the L spherical harmonics from Ylm. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the distance cutoff for neighbors. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE( + MSection +): + """ This section defines the plane. When using this colvar, two plane section must be defined! - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of 3 atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE_DEF_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify how the plane is defined: either by 3 atoms or by a fixed normal vector. At least one plane must be defined through atoms. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE_NORMAL_VECTOR = Quantity( type=str, shape=[], - description=''' + description=""" Alternatively to 3 atoms/points one can define one of the two, planes by defining its NORMAL vector. - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE( + MSection +): + """ This section defines the angle between two planes as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE( + MSection +): + """ Section to define the angle as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the angle. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION( + MSection +): + """ Section to define the rotation of a bond/line with respect toanother bond/line - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_P1_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_P1_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the first pointof the second bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_P2_BOND1 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the first bond/line. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_P2_BOND2 = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of atom/point defining the second pointof the second bond/line. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COLVAR_FUNC_INFO(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COLVAR_FUNC_INFO( + MSection +): + """ Specify further data possibly used by colvars, depending on the starting geometry, for computing the functions value. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COLVAR_FUNC_INFO_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Colvar function data. The order is an internal order. So if you decide to edit/modify/add these values by hand you should know very well what you are doing.! - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE( + MSection +): + """ Section to define the conditioned distance as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_ATOMS_DISTANCE = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points from which the distance is computed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_ATOMS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_KINDS_TO = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the lambda parameter at the exponent of the conditioned distance function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION( + MSection +): + """ Section to define the coordination number as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ATOMS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ATOMS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify indexes of the third set of atoms/points. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ATOMS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ATOMS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_KINDS_FROM = Quantity( type=str, shape=[], - description=''' + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_KINDS_TO_B = Quantity( type=str, shape=[], - description=''' + description=""" For the CV given by the multiplication of two coorination numbers, here specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_KINDS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_KINDS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ND_B = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ND_B = ( + Quantity( + type=str, + shape=[], + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ND = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_ND = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_NN_B = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_NN_B = ( + Quantity( + type=str, + shape=[], + description=""" For the CV given by the multiplication of two coorination numbers,Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_NN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_NN = ( + Quantity( + type=str, + shape=[], + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_R0_B = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_R0_B = ( + Quantity( + type=str, + shape=[], + description=""" For the CV given by the multiplication of two coorination numbers, specify the R0 parameter in the second coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_R0 = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_R0 = ( + Quantity( + type=str, + shape=[], + description=""" Specify the R0 parameter in the coordination function. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION( + MSection +): + """ Section to define functions between two distances as collective variables. The function is defined as d1+coeff*d2 - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_COEFFICIENT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coefficient in the function for the constraint. -1.0 has to be used for distance difference, 1.0 for distance addition - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_PBC = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_PBC = ( + Quantity( + type=str, + shape=[], + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE( + MSection +): + """ Section to define the distance of a point from a plane as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_ATOM_POINT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the atom/point index defining the point. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_ATOMS_PLANE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the plane. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE( + MSection +): + """ Section to define the distance as a collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the distance. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_AXIS = Quantity( type=str, shape=[], - description=''' + description=""" Define the axes along which the colvar should be evaluated - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS( + MSection +): + """ Section to define the gyration radius as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points defyining the gyration radius variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_KINDS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_KINDS = ( + Quantity( + type=str, + shape=[], + description=""" Specify alternatively kinds of atoms defining the gyration radius. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP(MSection): - ''' + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_NPOINTS = Quantity( type=str, shape=[], - description=''' + description=""" The number of points in the path - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_SHIFT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for shifting each term in the sum - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM( + MSection +): + """ Section to define the formation of a hydronium as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_HYDROGENS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_HYDROGENS = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_LAMBDA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_LAMBDA = ( + Quantity( + type=str, + shape=[], + description=""" Specify the LAMBDA parameter in the hydronium function. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_NH = Quantity( type=str, shape=[], - description=''' + description=""" Specify the NH parameter in the hydronium function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_OXYGENS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_OXYGENS = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_PNH = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_PNO = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_P = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_QNH = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_QNO = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_Q = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_ROH = Quantity( type=str, shape=[], - description=''' + description=""" Specify the ROH parameter in the coordination function. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_ROO = Quantity( type=str, shape=[], - description=''' + description=""" Specify the ROO parameter in the coordination function. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION( + MSection +): + """ Section to define the population of specie as a collective variable. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_ATOMS_FROM = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_ATOMS_FROM = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_ATOMS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_ATOMS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_KINDS_FROM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_KINDS_FROM = ( + Quantity( + type=str, + shape=[], + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_KINDS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_KINDS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify alternatively kinds of atoms building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_N0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the n0 parameter that sets the coordination of the species. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_ND = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the denominator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_NN = Quantity( type=str, shape=[], - description=''' + description=""" Sets the value of the numerator of the exponential factorin the coordination FUNCTION. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_R0 = Quantity( type=str, shape=[], - description=''' + description=""" Specify the R0 parameter in the coordination function. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_SIGMA = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_SIGMA = ( + Quantity( + type=str, + shape=[], + description=""" Specify the gaussian width of used to build the population istogram. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM( + MSection +): + """ Section to define the Q parameter (crystalline order parameter) as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the width of the Fermi-Dirac style smearing around RCUT. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_ATOMS_FROM = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_ATOMS_FROM = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_ATOMS_TO = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_ATOMS_TO = ( + Quantity( + type=str, + shape=[], + description=""" Specify indexes of atoms/points building the coordination variable. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_L = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the L spherical harmonics from Ylm. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the distance cutoff for neighbors. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING( + MSection +): + """ Section to define general ring puckering collective variables. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms/points defining the ring.At least 4 Atoms are needed. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_COORDINATE = Quantity( type=str, shape=[], - description=''' + description=""" Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring.0 is the total puckering variable Q,2..[N/2] are puckering coordinates.-2..-[N/2-1] are puckering angles. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD( + MSection +): + """ The positions for RMSD used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME( + MSection +): + """ Specify coordinates of the frame (number of frames can be either 1 or 2) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME_COORD" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD(MSection): - ''' + """ Section to define a CV as function of RMSD computed with respect to given reference configurations. For 2 configurations the colvar is equal to: ss = (RMSDA- RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the colvar is just the RMSD from that frame. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_ALIGN_FRAMES = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_ALIGN_FRAMES = ( + Quantity( + type=str, + shape=[], + description=""" Whether the reference frames should be aligned to minimize the RMSD - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the subset. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_SUBSET_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_SUBSET_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Define the subsytem used to compute the RMSD - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specify weights of atoms building the subset. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD_FRAME" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION( + MSection +): + """ Section to define the torsion as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the torsion. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED( + MSection +): + """ This section allows to use any function of the energy subsystems in a mixed_env calculation as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_ENERGY_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the collective variable in mathematical notation. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_ERROR_LIMIT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_ERROR_LIMIT = ( + Quantity( + type=str, + shape=[], + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Defines the parameters of the functional form - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_VALUES = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_VALUES = ( + Quantity( + type=str, + shape=[], + description=""" Defines the values of parameter of the functional form - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_VARIABLES = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED_VARIABLES = ( + Quantity( + type=str, + shape=[], + description=""" Defines the variables of the functional form. To allow an efficient mapping the order of the energy variables will be considered identical to the order of the force_eval in the force_eval_order list. - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U(MSection): - ''' + """ Section to define the energy as a generalized collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U_MIXED" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT_WEIGHTS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT_WEIGHTS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC(MSection): - ''' + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the indexes of atoms defining the geometrical center - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_TYPE = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" Chooses the type of geometrical point - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_XYZ = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT_XYZ = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG( + MSection +): + """ Section to define the distance of an atom from its starting position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable.If absolute_position is specified, instead the CV is represented by the instantaneous position of the atom (only available for X, Y or Z components). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_ABSOLUTE_POSITION = Quantity( type=str, shape=[], - description=''' + description=""" If enabled, the absolute position of the atoms will be used. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the atom/point. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_COMPONENT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_COMPONENT = ( + Quantity( + type=str, + shape=[], + description=""" Define the component of the position vector which will be used as a colvar. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG_POINT" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT( + MSection +): + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG( + MSection +): + """ Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0)) or part of its components as a collective variable. The final term is given by the product of the components of A with the components of B. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the index of the atoms/points A and B. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_COMPONENT_A = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom A. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_COMPONENT_B = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom B. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_PBC = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_PBC = ( + Quantity( + type=str, + shape=[], + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR(MSection): - ''' + """ This section specifies the nature of the collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_ANGLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_BOND_ROTATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COLVAR_FUNC_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COLVAR_FUNC_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COLVAR_FUNC_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_CONDITIONED_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_COORDINATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_FUNCTION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE_POINT_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_GYRATION_RADIUS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HBP" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_HYDRONIUM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_POPULATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_QPARM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RING_PUCKERING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_RMSD" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_TORSION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_U" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_WC" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_DIAG" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR_XYZ_OUTERDIAG" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD(MSection): - ''' + """ The positions for RMSD used for restart - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify positions of the system - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME(MSection): - ''' + """ Specify coordinates of the frame - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD_FILE_NAME = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD_FILE_NAME = ( + Quantity( + type=str, + shape=[], + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME_COORD" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP(MSection): - ''' + """ Activating this print key will print once a file with the values of the FUNCTION on a grid of COLVAR values in a specified range. GRID_SPACING and RANGE for every COLVAR has to be specified again in the same order as they are in the input. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_GRID_SPACING = Quantity( type=str, shape=[], - description=''' + description=""" Distance between two gridpoints for the grid on the COLVAR - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" The range of of the grid of the COLVAR. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH(MSection): - ''' + """ Section defining a one dimensional reaction path in an Q-dimensional space of colvars. Constraining this colvar, allows to sample the space orthogonal to the reaction path, both in the Q-dimensional colvar and 3N-Q remaining coordinates. For the details of the function see cited literature. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_ALIGN_FRAMES = Quantity( type=str, shape=[], - description=''' + description=""" Whether the reference frames should be aligned to minimize the RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the subset. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_DISTANCES_RMSD = Quantity( type=str, shape=[], - description=''' + description=""" Settings for DISTANCES_RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the ith element of the vector valued function that defines the reaction path. This keyword needs to repeat exactly Q times, and the order must match the order of the colvars. The VARIABLE (e.g. T) which parametrises the curve can be used as the target of a constraint. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the exponent of the Gaussian used in the integral representation of the colvar.The shape of the space orthogonal to the reaction path is defined by this choice. In the limit of large values, it is given by the plane orthogonal to the path.In practice, modest values are required for stable numerical integration. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" The range of VARIABLE used for the parametrisation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_RMSD = Quantity( type=str, shape=[], - description=''' + description=""" Settings for RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Step size in the numerical integration, a few thousand points are common, and the proper number also depends on LAMBDA. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_SUBSET_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Define the subsytem used to compute the RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_VARIABLE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the variable that parametrises the FUNCTION defining the reaction path. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_COLVAR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_FRAME" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH_MAP" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING(MSection): - ''' + """ Section to define general ring puckering collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the ring.At least 4 Atoms are needed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_COORDINATE = Quantity( type=str, shape=[], - description=''' + description=""" Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring.0 is the total puckering variable Q,2..[N/2] are puckering coordinates.-2..-[N/2-1] are puckering angles. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME_COORD(MSection): - ''' + """ The positions for RMSD used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME(MSection): - ''' + """ Specify coordinates of the frame (number of frames can be either 1 or 2) - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME_COORD_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME_COORD" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD(MSection): - ''' + """ Section to define a CV as function of RMSD computed with respect to given reference configurations. For 2 configurations the colvar is equal to: ss = (RMSDA- RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the colvar is just the RMSD from that frame. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_ALIGN_FRAMES = Quantity( type=str, shape=[], - description=''' + description=""" Whether the reference frames should be aligned to minimize the RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specify indexes of atoms building the subset. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_SUBSET_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Define the subsytem used to compute the RMSD - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specify weights of atoms building the subset. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD_FRAME" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION(MSection): - ''' + """ Section to define the torsion as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the torsion. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED(MSection): - ''' + """ This section allows to use any function of the energy subsystems in a mixed_env calculation as a collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_DX = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the derivative with the Ridders method. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_ENERGY_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the functional form of the collective variable in mathematical notation. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_ERROR_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Checks that the error in computing the derivative is not larger than the value set. In case prints a warning message. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the parameters of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_UNITS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally, allows to define valid CP2K unit strings for each parameter value. It is assumed that the corresponding parameter value is specified in this unit. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_VALUES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the values of parameter of the functional form - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the variables of the functional form. To allow an efficient mapping the order of the energy variables will be considered identical to the order of the force_eval in the force_eval_order list. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U(MSection): - ''' + """ Section to define the energy as a generalized collective variable. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U_MIXED" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC(MSection): - ''' + """ Section to define the hbond wannier centre as a collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_WC_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms/points defining the bond (Od, H, Oa). - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_WC_RCUT = Quantity( type=str, shape=[], - description=''' + description=""" Parameter used for computing the cutoff radius for searching the wannier centres around an atom - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG(MSection): - ''' + """ Section to define the distance of an atom from its starting position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable.If absolute_position is specified, instead the CV is represented by the instantaneous position of the atom (only available for X, Y or Z components). - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_ABSOLUTE_POSITION = Quantity( type=str, shape=[], - description=''' + description=""" If enabled, the absolute position of the atoms will be used. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the atom/point. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_COMPONENT = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT(MSection): - ''' + """ Enables the possibility to use geometrical centers instead of single atoms to define colvars - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of atoms defining the geometrical center - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Chooses the type of geometrical point - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT_WEIGHTS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT_XYZ = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the xyz of the fixed point (if the case) - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG(MSection): - ''' + """ Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0)) or part of its components as a collective variable. The final term is given by the product of the components of A with the components of B. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the atoms/points A and B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_COMPONENT_A = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom A. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_COMPONENT_B = Quantity( type=str, shape=[], - description=''' + description=""" Define the component of the position vector which will be used as a colvar for atom B. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_PBC = Quantity( type=str, shape=[], - description=''' + description=""" Whether periodic boundary conditions should be applied on the atomic position before computing the colvar or not. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG_POINT" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR(MSection): - ''' + """ This section specifies the nature of the collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE_PLANE_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_ANGLE"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_BOND_ROTATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COLVAR_FUNC_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COLVAR_FUNC_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COLVAR_FUNC_INFO" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COMBINE_COLVAR" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_CONDITIONED_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_COORDINATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FROM_PATH" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_FUNCTION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE_POINT_PLANE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_DISTANCE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_GYRATION_RADIUS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HBP"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_HYDRONIUM" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_POPULATION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_QPARM"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_REACTION_PATH" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RING_PUCKERING" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_RMSD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_TORSION" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_U"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_WC"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_DIAG" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR_XYZ_OUTERDIAG" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_COORD(MSection): - ''' + """ The coordinates for simple systems (like the QM ones) xyz format by default. More complex systems should be given with an external pdb file. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The atomic coordinates in the format:

ATOMIC_KIND X Y Z MOLNAME

The MOLNAME is optional. If not provided the molecule name is internally created. All other fields after MOLNAME are simply ignored. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COORD_SCALED = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the coordinateds in input are scaled. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_COORD_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the coordinates in inputAll available CP2K units can be used. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_COORD(MSection): - ''' + """ The core coordinates for the shell-model potentials xyz format with an additional column for the index of the corresponding particle - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_CORE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The core particle coordinates in the format:

ATOMIC_KIND X Y Z ATOMIC_INDEX

The ATOMIC_INDEX refers to the atom the core particle belongs to. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CORE_COORD_SCALED = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the coordinateds in input are scaled. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_CORE_COORD_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the coordinates in inputAll available CP2K units can be used. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_VELOCITY(MSection): - ''' + """ The velocities of cores for shell-model potentials, in xyz format - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_CORE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The core particle velocities in the format:

vx vy vz

The same order as for the core particle coordinates is assumed. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BASIS(MSection): - ''' + """ Section used to specify a general basis set for QM calculations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BASIS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" CP2K Basis Set Standard Format
@@ -34315,414 +40701,472 @@ class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BASIS(MSection):
 
         Source:
         ftp://ftp.aip.org/epaps/journ_chem_phys/E-JCPSA6-127-308733/BASIS_MOLOPT_JCP.txt
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA(MSection):
-    '''
+    """
     alpha spin
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA_L = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Angular momentum quantum number of theorbitals whose occupation is changed
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA_NEL = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Orbital ccupation change per angular momentum quantum number.In unrestricted
         calculations applied to spin alpha.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA_N = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Principal quantum number of theorbitals whose occupation is changed. Default is
         the first not occupied
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA(MSection):
-    '''
+    """
     beta spin
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA_L = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Angular momentum quantum number of theorbitals of beta spin whose occupation is
         changed.Active only for unrestricted calculations
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA_NEL = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Orbital ccupation change per angular momentum quantum number.Applied to spin beta
         and active only in unrestricted calculations.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA_N = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Principal quantum number of theorbitals of beta spin whose occupation is changed.
         Default is the first not occupied.Active only for unrestricted calculations
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS(MSection):
-    '''
+    """
     Define the required atomic orbital occupation assigned in initialization of the
     density matrix, by adding or subtracting electrons from specific angular momentum
     channels. It works only with GUESS ATOMIC.
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BS_SECTION_PARAMETERS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         controls the activation of the BS section
-        ''')
+        """,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA'),
-        repeats=True)
+        sub_section=SectionProxy(
+            "x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_ALPHA"
+        ),
+        repeats=True,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA'),
-        repeats=True)
+        sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS_BETA"),
+        repeats=True,
+    )
 
 
-class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION(MSection):
-    '''
+class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION(
+    MSection
+):
+    """
     Enforce and control a special (initial) orbital occupation. Note, this feature works
     only for the methods MULLIKEN and LOWDIN. It should only be used to prepare an initial
     configuration. An inadequate parameter choice can easily inhibit SCF convergence.
-    '''
+    """
 
     m_def = Section(validate=False)
 
-    x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_EPS_SCF = Quantity(
-        type=str,
-        shape=[],
-        description='''
+    x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_EPS_SCF = (
+        Quantity(
+            type=str,
+            shape=[],
+            description="""
         The occupation constraint is enforced until this threshold value for the SCF
         convergence criterion is reached
-        ''')
-
-    x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_MAX_SCF = Quantity(
-        type=str,
-        shape=[],
-        description='''
+        """,
+        )
+    )
+
+    x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_MAX_SCF = (
+        Quantity(
+            type=str,
+            shape=[],
+            description="""
         The occupation constraint is applied for this number of initial SCF iterations
-        ''')
-
-    x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_ORBITALS = Quantity(
-        type=str,
-        shape=[],
-        description='''
+        """,
+        )
+    )
+
+    x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_ORBITALS = (
+        Quantity(
+            type=str,
+            shape=[],
+            description="""
         Select orbitals and occupation order. An input of 1 to 2*L+1 integer values in the
         range -L to L defining the M values of the spherical orbitals is expected.
-        ''')
+        """,
+        )
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_SECTION_PARAMETERS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Controls the activation of the ENFORCE_OCCUPATION section
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION_SMEAR = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The occupation constraint is applied with smearing
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U(MSection):
-    '''
+    """
     Define the parameters for a DFT+U run
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_EPS_U_RAMPING = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Threshold value (SCF convergence) for incrementing the effective U value when U
         ramping is active.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_INIT_U_RAMPING_EACH_SCF = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Set the initial U ramping value to zero before each wavefunction optimisation. The
         default is to apply U ramping only for the initial wavefunction optimisation.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_L = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Angular momentum quantum number of theorbitals to which the correction is applied
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_SECTION_PARAMETERS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Controls the activation of the DFT+U section
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_U_MINUS_J = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Effective parameter U(eff) = U - J
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_U_RAMPING = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Increase the effective U parameter stepwise using the specified increment until
         the target value given by U_MINUS_J is reached.
-        ''')
+        """,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION'),
-        repeats=True)
+        sub_section=SectionProxy(
+            "x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U_ENFORCE_OCCUPATION"
+        ),
+        repeats=True,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_GEMINAL(MSection):
-    '''
+    """
     Section used to specify a geminal basis set for QM calculations.
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_GEMINAL_DEFAULT_KEYWORD = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         CP2K Basis Set Standard Format
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_KG_POTENTIAL(MSection):
-    '''
+    """
     Section used to specify KG Potentials.
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_KG_POTENTIAL_DEFAULT_KEYWORD = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         CP2K KG TNADD Potential Standard Format (TNADD)
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_POTENTIAL(MSection):
-    '''
+    """
     Section used to specify Potentials.
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_POTENTIAL_DEFAULT_KEYWORD = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         CP2K Pseudo Potential Standard Format (GTH, ALL)
-        ''')
+        """,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND(MSection):
-    '''
+    """
     The description of the kind of the atoms (mostly for QM)
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_ALPHA_SCP = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The polarizability for scalar-isotropic polarization using SCP with FIST as the
         driver
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_AUX_BASIS_FIT_NORMALIZATION = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The normalization of the basis set for auxiliary density matrix method
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_AUX_BASIS_NORMALIZATION = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The normalization of the auxliliary basis set
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_AUX_BASIS_SET = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The auxliliary basis set (GTO type)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_AUX_FIT_BASIS_SET = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The auxliliary basis set (GTO type) for auxiliary density matrix method
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BASIS_NORMALIZATION = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The normalization of the auxliliary basis set
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_BASIS_SET = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The primary Gaussian basis set (NONE implies no basis used, meaningful with GHOST)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_CORE_CORRECTION = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Corrects the effective nuclear charge
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_DFTB3_PARAM = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The third order parameter (derivative of hardness) used in diagonal DFTB3
         correction.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_ELEC_CONF = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Specifies the electronic configration used in construction the atomic initial
         guess (see the pseudo potential file for the default values.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_ELEMENT = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The element of the actual kind (if not given it is inferred from the kind name)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_GEMINAL_BASIS_SET = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The Geminal Gaussian basis set to be used in HF exchange fitting
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_GHOST = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         This keyword makes all atoms of this kind ghost atoms, i.e. without pseudo or
         nuclear charge.Useful to just have the basis set at that position (BSSE
         calculations),or to have a non-interacting particle with BASIS_SET NONE
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_GPW_TYPE = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Force one type to be treated by the GPW scheme, whatever are its primitives, even
         if the GAPW method is used
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_HARD_EXP_RADIUS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The region where the hard density is supposed to be confined(GAPW)(in Bohr,
         default is 1.2 for H and 1.512 otherwise)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_I_SCP = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The dispersion parameter for scalar-isotropic polarization using SCP with FIST as
         the driver
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_KG_POTENTIAL = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The name of the non-additive atomic kinetic energy potential.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_LEBEDEV_GRID = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The number of points for the angular part of the local grid (GAPW)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_LRI_BASIS_SET = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The local resolution of identity basis set (GTO type)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_MASS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The mass of the atom (if negative or non present it is inferred from the element
         symbol)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_MAX_RAD_LOCAL = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Max radius for the basis functions used to generate the local projectors in GAPW
         [Bohr]
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_MM_RADIUS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Defines the radius of the electrostatic multipole of the atom in Fist. This radius
         applies to the charge, the dipole and the quadrupole. When zero, the atom is
         treated as a point multipole, otherwise it is treated as a Gaussian charge
@@ -34730,757 +41174,890 @@ class x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND(MSection):
         p(x,y,z)*N*exp(-(x**2+y**2+z**2)/(2*MM_RADIUS**2)), where N is a normalization
         constant. In the core-shell model, only the shell is treated as a Gaussian and the
         core is always a point charge.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_NO_OPTIMIZE = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Skip optimization of this type (used in specific basis set or potential
         optimization schemes
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_POTENTIAL = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The name of the pseudopotential for the defined kind.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_RADIAL_GRID = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The number of points for the radial part of the local grid (GAPW)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_RHO0_EXP_RADIUS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         the radius which defines the atomic region where the hard compensation density is
         confined.should be less than HARD_EXP_RADIUS (GAPW)(Bohr, default equals
         HARD_EXP_RADIUS)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_RI_AUX_BASIS_SET = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The RI auxliliary basis set used in WF_CORRELATION (GTO type)
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_SE_P_ORBITALS_ON_H = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         Forces the usage of p-orbitals on H for SEMI-EMPIRICAL calculations.  This keyword
         applies only when the KIND is specifying an Hydrogen element. In all  other cases
         is simply ignored.
-        ''')
+        """,
+    )
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_KIND_SECTION_PARAMETERS = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The name of the kind described in this section.
-        ''')
+        """,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BASIS = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BASIS'),
-        repeats=True)
+        sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BASIS"),
+        repeats=True,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS'),
-        repeats=True)
+        sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_BS"),
+        repeats=True,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U'),
-        repeats=True)
+        sub_section=SectionProxy(
+            "x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_DFT_PLUS_U"
+        ),
+        repeats=True,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_GEMINAL = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_GEMINAL'),
-        repeats=True)
+        sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_GEMINAL"),
+        repeats=True,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_KG_POTENTIAL = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_KG_POTENTIAL'),
-        repeats=True)
+        sub_section=SectionProxy(
+            "x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_KG_POTENTIAL"
+        ),
+        repeats=True,
+    )
 
     x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_POTENTIAL = SubSection(
-        sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_POTENTIAL'),
-        repeats=True)
+        sub_section=SectionProxy(
+            "x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND_POTENTIAL"
+        ),
+        repeats=True,
+    )
 
 
 class x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_DIPOLES(MSection):
-    '''
+    """
     Specifies the dipoles of the particles.
-    '''
+    """
 
     m_def = Section(validate=False)
 
     x_cp2k_input_FORCE_EVAL_SUBSYS_MULTIPOLES_DIPOLES_DEFAULT_KEYWORD = Quantity(
         type=str,
         shape=[],
-        description='''
+        description="""
         The dipole components for each atom in the format:

Dx Dy Dz

- ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_QUADRUPOLES(MSection): - ''' + """ Specifies the quadrupoles of the particles. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_MULTIPOLES_QUADRUPOLES_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The quadrupole components for each atom in the format:

Qxx Qxy Qxz Qyy Qyz Qzz

- ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES(MSection): - ''' + """ Specifies the dipoles and quadrupoles for particles. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_DIPOLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_DIPOLES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_DIPOLES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_QUADRUPOLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_QUADRUPOLES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES_QUADRUPOLES" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_COORD(MSection): - ''' + """ The shell coordinates for the shell-model potentials xyz format with an additional column for the index of the corresponding particle - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_SHELL_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The shell particle coordinates in the format:

ATOMIC_KIND X Y Z ATOMIC_INDEX

The ATOMIC_INDEX refers to the atom the shell particle belongs to. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_SHELL_COORD_SCALED = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the coordinateds in input are scaled. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_SHELL_COORD_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the coordinates in inputAll available CP2K units can be used. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_VELOCITY(MSection): - ''' + """ The velocities of shells for shell-model potentials, in xyz format - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_SHELL_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The shell particle velocities in the format:

vx vy vz

The same order as for the shell particle coordinates is assumed. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES(MSection): - ''' + """ Allows centering the coordinates of the system in the box. The centering point can be defined by the user. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES_CENTER_POINT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the point used for centering the coordinates. Default is to center the system in cell/2. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Controls the activation of the centering method - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB(MSection): - ''' + """ controls the dumping of the PDB at the starting geometry - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_CHARGE_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the BETA field of the PDB file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_CHARGE_EXTENDED = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the very last field of the PDB file (starting from column 81) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_CHARGE_OCCUP = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the OCCUP field of the PDB file - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF(MSection): - ''' + """ controls the dumping of the PSF connectivity - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_EI_LIST(MSection): - ''' + """ Speficy bonds (via atom kinds) for fine tuning of 1-2 exclusion lists. If this section is not present the 1-2 exclusion is applied to all bond kinds. When this section is present the 1-2 exclusion is applied ONLY to the bonds defined herein. This section allows ONLY fine tuning of 1-2 interactions. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_EI_LIST_BOND = Quantity( type=str, shape=[], - description=''' + description=""" Specify the atom kinds involved in the bond for which 1-2 exclusion holds. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_VDW_LIST(MSection): - ''' + """ Speficy bonds (via atom kinds) for fine tuning of 1-2 exclusion lists. If this section is not present the 1-2 exclusion is applied to all bond kinds. When this section is present the 1-2 exclusion is applied ONLY to the bonds defined herein. This section allows ONLY fine tuning of 1-2 interactions. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_VDW_LIST_BOND = Quantity( type=str, shape=[], - description=''' + description=""" Specify the atom kinds involved in the bond for which 1-2 exclusion holds. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE(MSection): - ''' + """ Section used to add/remove angles in the connectivity. Useful for systems with a complex connectivity, difficult to find out automatically. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies two atomic index united by a covalent bond - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" controls the activation of the bond - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BOND(MSection): - ''' + """ Section used to add/remove bonds in the connectivity. Useful for systems with a complex connectivity, difficult to find out automatically. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BOND_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies two atomic index united by a covalent bond - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BOND_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of the bond - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER(MSection): - ''' + """ Section used to add/remove improper in the connectivity. Useful for systems with a complex connectivity, difficult to find out automatically. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies two atomic index united by a covalent bond - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" controls the activation of the bond - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ISOLATED_ATOMS(MSection): - ''' + """ This section specifies the atoms that one considers isolated. Useful when present ions in solution. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ISOLATED_ATOMS_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atomic indexes of the isolated ion - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS(MSection): - ''' + """ This section specifies the input parameters for the construction of neighbor lists. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS_GEO_CHECK = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS_GEO_CHECK = ( + Quantity( + type=str, + shape=[], + description=""" This keyword enables the check that two atoms are never below the minimum value used to construct the splines during the construction of the neighbouring list. Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum value of the radius used to generate the splines. - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS_NEIGHBOR_LISTS_FROM_SCRATCH = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables the building of the neighbouring list from scratch. - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS_VERLET_SKIN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS_VERLET_SKIN = ( + Quantity( + type=str, + shape=[], + description=""" Defines the Verlet Skin for the generation of the neighbor lists - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION(MSection): - ''' + """ Section used to add/remove torsion in the connectivity. Useful for systems with a complex connectivity, difficult to find out automatically. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies two atomic index united by a covalent bond - ''') - - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" controls the activation of the bond - ''') + """, + ) + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE(MSection): - ''' + """ Setup of keywords controlling the generation of the connectivity - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BONDLENGTH_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Maximum distance to generate neighbor lists to build connectivity - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BONDLENGTH_MIN = Quantity( type=str, shape=[], - description=''' + description=""" Minimum distance to generate neighbor lists to build connectivity - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BONDPARM_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Used in conjunction with BONDPARM to help determine wheather there is bonding between two atoms based on a distance criteria. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BONDPARM = Quantity( type=str, shape=[], - description=''' + description=""" Used in conjunction with BONDPARM_FACTOR to help determine wheather there is bonding between two atoms based on a distance criteria. Can use covalent radii information or VDW radii information - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_CREATE_MOLECULES = Quantity( type=str, shape=[], - description=''' + description=""" Create molecules names and definition. Can be used to override the molecules specifications of a possible input connectivity or to create molecules specifications for file types as XYZ, missing of molecules definitions. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_REORDER = Quantity( type=str, shape=[], - description=''' + description=""" Reorder a list of atomic coordinates into order so it can be packed correctly. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ANGLE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BOND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BOND'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_BOND" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_IMPROPER" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ISOLATED_ATOMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ISOLATED_ATOMS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_ISOLATED_ATOMS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_NEIGHBOR_LISTS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE_TORSION" + ), + repeats=True, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_ANGLES(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_ANGLES( + MSection +): + """ Defines new angles - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_ANGLES_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Three integer indexes per line defining the new angle Indexes must be relative to the full system and not to the single molecules - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_BONDS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_BONDS( + MSection +): + """ Defines new bonds - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_BONDS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Two integer indexes per line defining the new bond. Indexes must be relative to the full system and not to the single molecules - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_IMPROPERS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_IMPROPERS( + MSection +): + """ Defines new impropers - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_IMPROPERS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Four integer indexes per line defining the new improper Indexes must be relative to the full system and not to the single molecules - ''') + """, + ) -class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_TORSIONS(MSection): - ''' +class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_TORSIONS( + MSection +): + """ Defines new torsions - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_TORSIONS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Four integer indexes per line defining the new torsion Indexes must be relative to the full system and not to the single molecules - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES(MSection): - ''' + """ Enables the creation of connecting bridges (bonds, angles, torsions, impropers) between the two or more molecules defined with independent connectivity. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_ANGLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_ANGLES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_ANGLES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_BONDS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_BONDS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_BONDS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_IMPROPERS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_IMPROPERS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_IMPROPERS" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_TORSIONS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_TORSIONS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES_TORSIONS" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE(MSection): - ''' + """ Specify information about the connectivity of single molecules - ''' + """ m_def = Section(validate=False) - x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE_CONN_FILE_FORMAT = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE_CONN_FILE_FORMAT = ( + Quantity( + type=str, + shape=[], + description=""" Ways to determine and generate a molecules. Default is to use GENERATE - ''') + """, + ) + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE_CONN_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename that contains the molecular connectivity. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE_NMOL = Quantity( type=str, shape=[], - description=''' + description=""" number of molecules - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET(MSection): - ''' + """ Specify the connectivity of a full system specifying the connectivity of the fragments of the system. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MERGE_MOLECULES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET_MOLECULE" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY(MSection): - ''' + """ Section specifying information regarding how to handle the topology for classical runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_AUTOGEN_EXCLUDE_LISTS = Quantity( type=str, shape=[], - description=''' + description=""" When True, the exclude lists are solely based on the bond data in the topology. The (minimal) number of bonds between two atoms is used to determine if the atom pair is added to an exclusion list. When False, 1-2 exclusion is based on bonds in @@ -35489,879 +42066,1002 @@ class x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY(MSection): that a missing dihedral in the topology will cause the corresponding 1-4 pair not to be in the exclusion list, in case 1-4 exclusion is requested for VDW or EI interactions. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CHARGE_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Read MM charges from the BETA field of PDB file. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CHARGE_EXTENDED = Quantity( type=str, shape=[], - description=''' + description=""" Read MM charges from the very last field of PDB file (starting from column 81). No limitations of number of digits. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CHARGE_OCCUP = Quantity( type=str, shape=[], - description=''' + description=""" Read MM charges from the OCCUP field of PDB file. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CONN_FILE_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Ways to determine and generate a molecules. Default is to use GENERATE - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CONN_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename that contains the molecular connectivity. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_COORD_FILE_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Set up the way in which coordinates will be read. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_COORD_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the filename that contains coordinates. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DISABLE_EXCLUSION_LISTS = Quantity( type=str, shape=[], - description=''' + description=""" Do not build any exclusion lists. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_EI = Quantity( type=str, shape=[], - description=''' + description=""" Specifies which kind of Electrostatic interaction to skip. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_VDW = Quantity( type=str, shape=[], - description=''' + description=""" Specifies which kind of Van der Waals interaction to skip. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MEMORY_PROGRESSION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" This keyword is quite technical and should normally not be changed by the user. It affects the memory allocation during the construction of the topology. It does NOT affect the memory used once the topology is built. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_CHECK = Quantity( type=str, shape=[], - description=''' + description=""" Check molecules have the same number of atom and names. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MULTIPLE_UNIT_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, assuming it as a unit cell. This keyword affects only the coordinates specification. The same keyword in SUBSYS%CELL%MULTIPLE_UNIT_CELL should be modified in order to affect the cell specification. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_NUMBER_OF_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Optionally define the number of atoms read from an external file (see COORD_FILE_NAME) if the COORD_FILE_FORMAT CP2K is used - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_PARA_RES = Quantity( type=str, shape=[], - description=''' + description=""" For a protein, each residue is now considered a molecule - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_TOPOLOGY_USE_G96_VELOCITY = Quantity( type=str, shape=[], - description=''' + description=""" Use the velocities in the G96 coordinate files as the starting velocity - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_CENTER_COORDINATES" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PDB" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_DUMP_PSF" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_EI_LIST = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_EI_LIST'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_EI_LIST" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_VDW_LIST = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_VDW_LIST'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_EXCLUDE_VDW_LIST" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_GENERATE" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY_MOL_SET" + ), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS_VELOCITY(MSection): - ''' + """ The velocities for simple systems or the centroid mode in PI runs, xyz format by default - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_SUBSYS_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The atomic velocities in the format:

vx vy vz

The same order as for the atomic coordinates is assumed. - ''') + """, + ) x_cp2k_input_FORCE_EVAL_SUBSYS_VELOCITY_PINT_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the units of measurement for the velocities (currently works only for the path integral code). All available CP2K units can be used. - ''') + """, + ) class x_cp2k_section_input_FORCE_EVAL_SUBSYS(MSection): - ''' + """ a subsystem: coordinates, topology, molecules and cell - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_CELL"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COLVAR"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_COORD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_COORD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_CORE_VELOCITY" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_KIND"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_MULTIPOLES"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_RNG_INIT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_RNG_INIT"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_COORD"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_FORCE_EVAL_SUBSYS_SHELL_VELOCITY" + ), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_TOPOLOGY"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS_VELOCITY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS_VELOCITY"), + repeats=True, + ) class x_cp2k_section_input_FORCE_EVAL(MSection): - ''' + """ parameters needed to calculate energy and forces and describe the system you want to analyze. - ''' + """ m_def = Section(validate=False) x_cp2k_input_FORCE_EVAL_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Which method should be used to compute forces - ''') + """, + ) x_cp2k_input_FORCE_EVAL_STRESS_TENSOR = Quantity( type=str, shape=[], - description=''' + description=""" Controls the calculation of the stress tensor. The combinations defined below are not implemented for all methods. - ''') + """, + ) x_cp2k_section_input_FORCE_EVAL_BSSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_BSSE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_BSSE"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_DFT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_DFT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_DFT"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_EIP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_EIP'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_EIP"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_EP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_EP'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_EP"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_EXTERNAL_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_EXTERNAL_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_EXTERNAL_POTENTIAL"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_MIXED = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MIXED'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MIXED"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_MM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_MM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_MM"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_PRINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PRINT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PRINT"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_PROPERTIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_PROPERTIES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_PROPERTIES"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_QMMM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_QMMM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_QMMM"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL_RESCALE_FORCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_RESCALE_FORCES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_RESCALE_FORCES"), + repeats=True, + ) x_cp2k_section_input_FORCE_EVAL_SUBSYS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL_SUBSYS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL_SUBSYS"), repeats=True + ) class x_cp2k_section_input_GLOBAL_DBCSR_ACC(MSection): - ''' + """ Configuration options for the ACC-Driver. - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_DBCSR_ACC_AVOID_AFTER_BUSY = Quantity( type=str, shape=[], - description=''' + description=""" If enabled, stacks are not processed by the acc-driver after it has signaled congestion during a round of flushing. For the next round of flusing the driver is used again. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_BINNING_BINSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Size of bins used when ordering the stacks with the binning-scheme. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_BINNING_NBINS = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins used when ordering the stacks with the binning-scheme. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_MIN_FLOP_PROCESS = Quantity( type=str, shape=[], - description=''' + description=""" Only process stacks with more than the given number of floating-point operations per stack-entry (2*m*n*k). - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_MIN_FLOP_SORT = Quantity( type=str, shape=[], - description=''' + description=""" Only sort stacks with more than the given number of floating-point operations per stack-entry (2*m*n*k). Alternatively, the stacks are roughly ordered through a binning-scheme by Peter Messmer. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_POSTERIOR_BUFFERS = Quantity( type=str, shape=[], - description=''' + description=""" Number of transfer-buffers associated with low priority streams. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_POSTERIOR_STREAMS = Quantity( type=str, shape=[], - description=''' + description=""" Number of acc streams created with low priority. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_PRIORITY_BUFFERS = Quantity( type=str, shape=[], - description=''' + description=""" Number of transfer-buffers associated with high priority streams. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_PRIORITY_STREAMS = Quantity( type=str, shape=[], - description=''' + description=""" Number of acc streams created with high priority. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_ACC_PROCESS_INHOMOGENOUS = Quantity( type=str, shape=[], - description=''' + description=""" If enabled, inhomogenous stacks are also processed by the acc driver. - ''') + """, + ) class x_cp2k_section_input_GLOBAL_DBCSR(MSection): - ''' + """ Configuration options for the DBCSR library. - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_DBCSR_COMBINED_TYPES = Quantity( type=str, shape=[], - description=''' + description=""" Combine matrix index and data into a single MPI derived data type for communication (avoid using). - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_COMM_THREAD_LOAD = Quantity( type=str, shape=[], - description=''' + description=""" If a communications thread is used, specify how much multiplication workload (%) the thread should perform in addition to communication tasks. A negative value leaves the decision up to DBCSR. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_MAX_ELEMENTS_PER_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" Default block size for turning dense matrices in blocked ones - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_MM_DRIVER = Quantity( type=str, shape=[], - description=''' + description=""" Select which routines to use for matrix block multiplications. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_MM_STACK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Size of multiplication parameter stack. A negative value leaves the decision up to DBCSR. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_MULTREC_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Recursion limit of cache oblivious multrec algorithm. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_N_SIZE_MNK_STACKS = Quantity( type=str, shape=[], - description=''' + description=""" Number of stacks to use for distinct atomic sizes (e.g., 2 for a system of mostly waters). A negative value leaves the decision up to DBCSR. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_SUBCOMMUNICATORS = Quantity( type=str, shape=[], - description=''' + description=""" Use MPI subcommunicators for transfers that are limited to process grid rows and columns. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_USE_COMM_THREAD = Quantity( type=str, shape=[], - description=''' + description=""" During multiplication, use a thread to periodically poll MPI to progress outstanding message completions. This is beneficial on systems without a DMA- capable network adapter e.g. Cray XE6. - ''') + """, + ) x_cp2k_input_GLOBAL_DBCSR_USE_MPI_ALLOCATION = Quantity( type=str, shape=[], - description=''' + description=""" Allow use of MPI-allocated memory for potentially faster network communication. - ''') + """, + ) x_cp2k_section_input_GLOBAL_DBCSR_ACC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_DBCSR_ACC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_DBCSR_ACC"), repeats=True + ) class x_cp2k_section_input_GLOBAL_FM(MSection): - ''' + """ Configuration options for the full matrices. - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_FM_FORCE_BLOCK_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Ensure for small matrices that the layout is compatible with bigger ones, i.e. no subdivision is performed (can break LAPACK!!!). - ''') + """, + ) x_cp2k_input_GLOBAL_FM_NCOL_BLOCKS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the number of columns per scalapack block in the creation of vlock cyclic dense matrices - ''') + """, + ) x_cp2k_input_GLOBAL_FM_NROW_BLOCKS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the number of rows per scalapack block in the creation of block cyclic dense matrices - ''') + """, + ) x_cp2k_input_GLOBAL_FM_TYPE_OF_MATRIX_MULTIPLICATION = Quantity( type=str, shape=[], - description=''' + description=""" Allows to switch between scalapack pdgemm and dbcsr_multiply. On normal systems pdgemm is recommended on system with GPU is optimized and can give better performance. NOTE: if DBCSR is employed FORCE_BLOCK_SIZE should be set. The perfomance on GPU's dependes crucially on the BLOCK_SIZES. Make sure optimized kernels are available. - ''') + """, + ) class x_cp2k_section_input_GLOBAL_MACHINE_ARCH(MSection): - ''' + """ Configuration options for the machine architecture. - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_MACHINE_ARCH_MEM_POL = Quantity( type=str, shape=[], - description=''' + description=""" Enable memory binding on the compute node. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" The memory banks ID for each MPI process. It will beuse to set memory bank of the MPI process - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_MPI_REORDERING = Quantity( type=str, shape=[], - description=''' + description=""" Apply a global MPI reordering for the run - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PRINT_BRANCH = Quantity( type=str, shape=[], - description=''' + description=""" Print machine architecture component organization. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PRINT_FULL = Quantity( type=str, shape=[], - description=''' + description=""" Print full machine architecture - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PRINT_PROC = Quantity( type=str, shape=[], - description=''' + description=""" Print the process binding in the machine. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PRINT_RESUME = Quantity( type=str, shape=[], - description=''' + description=""" Print the compute node architecture number of components. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PRINT_THREAD_CUR = Quantity( type=str, shape=[], - description=''' + description=""" Print the current threads binding in the machine. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PRINT_THREAD = Quantity( type=str, shape=[], - description=''' + description=""" Print the threads binding in the machine. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_PROCESS = Quantity( type=str, shape=[], - description=''' + description=""" Core ID for each MPI process of a compute node. It will be used to place the MPI process. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_SCHED_MPI = Quantity( type=str, shape=[], - description=''' + description=""" Enable process scheduling on the compute node. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_SCHED_THREAD = Quantity( type=str, shape=[], - description=''' + description=""" Enable thread scheduling on the compute node. - ''') + """, + ) x_cp2k_input_GLOBAL_MACHINE_ARCH_THREAD = Quantity( type=str, shape=[], - description=''' + description=""" Core ID for each thread of a compute node. It will be used to place the thread. - ''') + """, + ) class x_cp2k_section_input_GLOBAL_PROGRAM_RUN_INFO(MSection): - ''' + """ controls the printing of initialization controlled by the global section - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_GLOBAL_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_GLOBAL_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_GLOBAL_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_GLOBAL_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_GLOBAL_REFERENCES(MSection): - ''' + """ Controls the printing of the references relevant to the calculations performed - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_REFERENCES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_GLOBAL_REFERENCES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_GLOBAL_REFERENCES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_GLOBAL_REFERENCES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_GLOBAL_REFERENCES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_GLOBAL_TIMINGS(MSection): - ''' + """ Controls the printing of the timing report at the end of CP2K execution - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_TIMINGS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_GLOBAL_TIMINGS_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_GLOBAL_TIMINGS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_GLOBAL_TIMINGS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_GLOBAL_TIMINGS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_GLOBAL_TIMINGS_SORT_BY_SELF_TIME = Quantity( type=str, shape=[], - description=''' + description=""" Sort the final timing report by the average self (exclusive) time instead of the total (inclusive) time of a routine - ''') + """, + ) x_cp2k_input_GLOBAL_TIMINGS_THRESHOLD = Quantity( type=str, shape=[], - description=''' + description=""" Specify % of CPUTIME above which the contribution will be inserted in the final timing report (e.g. 0.02 = 2%) - ''') + """, + ) class x_cp2k_section_input_GLOBAL(MSection): - ''' + """ Section with general information regarding which kind of simulation to perform an parameters for the whole PROGRAM - ''' + """ m_def = Section(validate=False) x_cp2k_input_GLOBAL_ALLTOALL_SGL = Quantity( type=str, shape=[], - description=''' + description=""" All-to-all communication (FFT) should use single precision - ''') + """, + ) x_cp2k_input_GLOBAL_BLACS_GRID = Quantity( type=str, shape=[], - description=''' + description=""" how to distribute the processors on the 2d grid needed by BLACS (and thus SCALAPACK) - ''') + """, + ) x_cp2k_input_GLOBAL_BLACS_REPEATABLE = Quantity( type=str, shape=[], - description=''' + description=""" Use a topology for BLACS collectives that is guaranteed to be repeatable on homegeneous architectures - ''') + """, + ) x_cp2k_input_GLOBAL_CALLGRAPH_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the callgraph file, which is writte a the end of the run. If not specified the project name will be used as filename. - ''') + """, + ) x_cp2k_input_GLOBAL_CALLGRAPH = Quantity( type=str, shape=[], - description=''' + description=""" At the end of the run write a callgraph to file, which contains detailed timing informations. This callgraph can be viewed e.g. with the open-source program kcachegrind. - ''') + """, + ) x_cp2k_input_GLOBAL_ECHO_ALL_HOSTS = Quantity( type=str, shape=[], - description=''' + description=""" Echo a list of hostname and pid for all MPI processes. - ''') + """, + ) x_cp2k_input_GLOBAL_ECHO_INPUT = Quantity( type=str, shape=[], - description=''' + description=""" If the input should be echoed to the output with all the defaults made explicit - ''') + """, + ) x_cp2k_input_GLOBAL_ENABLE_UNSUPPORTED_FEATURES = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the usage of unsupported features in a release version. It affects ONLY release versions of CP2K (no effects on development versions). - ''') + """, + ) x_cp2k_input_GLOBAL_EXTENDED_FFT_LENGTHS = Quantity( type=str, shape=[], - description=''' + description=""" Use fft library specific values for the allows number of points in FFTs. The default is to use the internal FFT lengths. For external fft libraries this may create an error at the external library level, because the length provided by cp2k @@ -36371,32 +43071,35 @@ class x_cp2k_section_input_GLOBAL(MSection): cutoff. IMPORTANT NOTE: in this case, the actual grids used in CP2K depends on the FFT library. A change of FFT library must therefore be considered equivalent to a change of basis, which implies a change of total energy. - ''') + """, + ) x_cp2k_input_GLOBAL_FFT_POOL_SCRATCH_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Limits the memory usage of the FFT scratch pool, potentially reducing efficiency a bit - ''') + """, + ) x_cp2k_input_GLOBAL_FFTW_PLAN_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" FFTW can have improved performance if it is allowed to plan with explicit measurements which strategy is best for a given FFT. While a plan based on measurements is generally faster, differences in machine load will lead to different plans for the same input file, and thus numerics for the FFTs will be slightly different from run to run.PATIENT planning is recommended for long ab initio MD runs. - ''') + """, + ) x_cp2k_input_GLOBAL_FFTW_WISDOM_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The name of the file that contains wisdom (pre-planned FFTs) for use with FFTW3. Using wisdom can significantly speed up the FFTs (see the FFTW homepage for details). Note that wisdom is not transferable between different computer @@ -36404,35 +43107,39 @@ class x_cp2k_section_input_GLOBAL(MSection): of the fftw installation. cp2k/tools/cp2k-wisdom is a script that contains some additional info, and can help to generate a useful default for /etc/fftw/wisdom or particular values for a given simulation. - ''') + """, + ) x_cp2k_input_GLOBAL_FLUSH_SHOULD_FLUSH = Quantity( type=str, shape=[], - description=''' + description=""" Flush output regularly, enabling this option might degrade performance significantly on certain machines. - ''') + """, + ) x_cp2k_input_GLOBAL_OUTPUT_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the output file. Relevant only if automatically started (through farming for example). If empty uses the project name as basis for it. - ''') + """, + ) x_cp2k_input_GLOBAL_PREFERRED_DIAG_LIBRARY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the DIAGONALIZATION library. If not availabe .... - ''') + """, + ) x_cp2k_input_GLOBAL_PREFERRED_FFT_LIBRARY = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the FFT library which should be preferred. If it is not available, use FFTW3 if this is linked in, if FFTW3 is not available use FFTSG. Improved performance with FFTW3 can be obtained specifying a proper value for @@ -36441,6635 +43148,7722 @@ class x_cp2k_section_input_GLOBAL(MSection): See EXTENDED_FFT_LENGTHS if larger FFTs or grids that more precisely match a given cutoff are needed, or older results need to be reproduced. FFTW3 is often (close to) optimal, and well tested with CP2K. - ''') + """, + ) x_cp2k_input_GLOBAL_PRINT_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" How much output is written out. - ''') + """, + ) x_cp2k_input_GLOBAL_PROGRAM_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Which program should be run - ''') + """, + ) x_cp2k_input_GLOBAL_PROJECT_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the project (used to build the name of the trajectory, and other files generated by the program) - ''') + """, + ) x_cp2k_input_GLOBAL_RUN_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Type of run that you want to perform Geometry optimization, md, montecarlo,... - ''') + """, + ) x_cp2k_input_GLOBAL_SAVE_MEM = Quantity( type=str, shape=[], - description=''' + description=""" Some sections of the input structure are deallocated when not needed, and reallocated only when used. This reduces the required maximum memory - ''') + """, + ) x_cp2k_input_GLOBAL_SEED = Quantity( type=str, shape=[], - description=''' + description=""" Initial seed for the global (pseudo)random number generator to create a stream of normally Gaussian distributed random numbers. - ''') + """, + ) x_cp2k_input_GLOBAL_TRACE_MASTER = Quantity( type=str, shape=[], - description=''' + description=""" For parallel TRACEd runs: only the master node writes output. - ''') + """, + ) x_cp2k_input_GLOBAL_TRACE_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Limit the total number a given subroutine is printed in the trace. Accounting is not influenced. - ''') + """, + ) x_cp2k_input_GLOBAL_TRACE_ROUTINES = Quantity( type=str, shape=[], - description=''' + description=""" A list of routines to trace. If left empty all routines are traced. Accounting is not influenced. - ''') + """, + ) x_cp2k_input_GLOBAL_TRACE = Quantity( type=str, shape=[], - description=''' + description=""" If a debug trace of the execution of the program should be written - ''') + """, + ) x_cp2k_input_GLOBAL_WALLTIME = Quantity( type=str, shape=[], - description=''' + description=""" Maximum execution time for this run. Time in seconds or in HH:MM:SS. - ''') + """, + ) x_cp2k_section_input_GLOBAL_DBCSR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_DBCSR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_DBCSR"), repeats=True + ) x_cp2k_section_input_GLOBAL_FM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_FM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_FM"), repeats=True + ) x_cp2k_section_input_GLOBAL_MACHINE_ARCH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_MACHINE_ARCH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_MACHINE_ARCH"), + repeats=True, + ) x_cp2k_section_input_GLOBAL_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_PROGRAM_RUN_INFO"), + repeats=True, + ) x_cp2k_section_input_GLOBAL_REFERENCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_REFERENCES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_REFERENCES"), repeats=True + ) x_cp2k_section_input_GLOBAL_TIMINGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL_TIMINGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL_TIMINGS"), repeats=True + ) class x_cp2k_section_input_MOTION_BAND_BANNER(MSection): - ''' + """ Controls the printing of the BAND banner - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_BANNER_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_BAND_BANNER_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_BAND_BANNER_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_BANNER_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_BAND_BANNER_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_CI_NEB(MSection): - ''' + """ Controls parameters for CI-NEB type calculation only. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_CI_NEB_NSTEPS_IT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of steps of IT-NEB to perform before switching on the CI algorithm - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_CONVERGENCE_CONTROL(MSection): - ''' + """ Setup parameters to control the convergence criteria for BAND - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_CONVERGENCE_CONTROL_MAX_DR = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance on the maximum value of the displacement on the BAND. - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_CONTROL_MAX_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance on the maximum value of Forces on the BAND. - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_CONTROL_RMS_DR = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance on RMS displacements on the BAND. - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_CONTROL_RMS_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance on RMS Forces on the BAND. - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_CONVERGENCE_INFO(MSection): - ''' + """ Controls the printing of the convergence criteria during a BAND run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_CONVERGENCE_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_BAND_CONVERGENCE_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_ENERGY(MSection): - ''' + """ Controls the printing of the ENER file in a BAND run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_ENERGY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_BAND_ENERGY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_BAND_ENERGY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_ENERGY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_BAND_ENERGY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO(MSection): - ''' + """ Controls the printing of diis info during a BAND run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS(MSection): - ''' + """ Activate the DIIS based optimization procedure for BAND - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_CHECK_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Performes a series of checks on the DIIS solution in order to accept the DIIS step. If set to .FALSE. the only check performed is that the angle between the DIIS solution and the reference vector is less than Pi/2. Can be useful if many DIIS steps are rejected. - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_MAX_SD_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum number of SD steps to perform before switching on DIIS (the minimum number will always be equal to N_DIIS). - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_MAX_STEPSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Maximum stepsize used for the line search, sometimes this parametercan be reduced to stablize the LS for particularly difficult initial geometries - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_MAX_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum number of optimization steps - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_N_DIIS = Quantity( type=str, shape=[], - description=''' + description=""" Number of history vectors to be used with DIIS - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_NO_LS = Quantity( type=str, shape=[], - description=''' + description=""" Does not perform LS during SD. Useful in combination with a proper STEPSIZE for particularly out of equilibrium starting geometries. - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_NP_LS = Quantity( type=str, shape=[], - description=''' + description=""" Number of points used in the line search SD. - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_STEPSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial stepsize used for the line search, sometimes this parametercan be reduced to stablize DIIS - ''') + """, + ) x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS_DIIS_INFO" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL(MSection): - ''' + """ Setup parameters to control the temperature during a BAND MD run. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL_TEMP_TOL_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of steps to apply a temperature control - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL_TEMP_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Specify the tolerance on the temperature for rescaling - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the target temperature - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL(MSection): - ''' + """ Setup parameters to control the velocity during a BAND MD run. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL_ANNEALING = Quantity( type=str, shape=[], - description=''' + description=""" Specify the annealing coefficient - ''') - - x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL_PROJ_VELOCITY_VERLET = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL_PROJ_VELOCITY_VERLET = ( + Quantity( + type=str, + shape=[], + description=""" Uses a Projected Velocity Verlet instead of a normal Velocity Verlet. Every time the cosine between velocities and forces is < 0 velocities are zeroed. - ''') + """, + ) + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL_SD_LIKE = Quantity( type=str, shape=[], - description=''' + description=""" Zeros velocity at each MD step emulating a steepest descent like(SD_LIKE) approach - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD(MSection): - ''' + """ Activate the MD based optimization procedure for BAND - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_MAX_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum number of MD steps - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the initial temperature - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_MD_TIMESTEP = Quantity( type=str, shape=[], - description=''' + description=""" The length of an integration step - ''') + """, + ) x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_TEMP_CONTROL" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD_VEL_CONTROL" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND(MSection): - ''' + """ Specify the optimization method for the band - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_OPT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type optimizer used for the band - ''') + """, + ) x_cp2k_input_MOTION_BAND_OPTIMIZE_BAND_OPTIMIZE_END_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Performs also an optimization of the end points of the band. - ''') + """, + ) x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_DIIS"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND_MD"), + repeats=True, + ) class x_cp2k_section_input_MOTION_BAND_PROGRAM_RUN_INFO(MSection): - ''' + """ Controls the printing basic info about the BAND run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_BAND_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_BAND_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_PROGRAM_RUN_INFO_INITIAL_CONFIGURATION_INFO = Quantity( type=str, shape=[], - description=''' + description=""" Print information for the setup of the initial configuration. - ''') + """, + ) x_cp2k_input_MOTION_BAND_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_BAND_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_REPLICA_COORD(MSection): - ''' + """ The positions for BAND used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_REPLICA_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_REPLICA_VELOCITY(MSection): - ''' + """ The velocities for BAND used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_REPLICA_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_REPLICA_INFO(MSection): - ''' + """ Controls the printing of each replica info during a BAND run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_REPLICA_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_BAND_REPLICA_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_BAND_REPLICA_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_REPLICA_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_BAND_REPLICA_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND_REPLICA(MSection): - ''' + """ Specify coordinates and velocities (possibly) of the replica - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_REPLICA_COLLECTIVE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the value of the collective variables used in the projected BAND method. The order of the values is the order of the COLLECTIVE section in the constraints/restraints section - ''') + """, + ) x_cp2k_input_MOTION_BAND_REPLICA_COORD_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the xyz file with coordinates (alternative to &COORD section) - ''') + """, + ) x_cp2k_section_input_MOTION_BAND_REPLICA_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_REPLICA_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_REPLICA_COORD"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_REPLICA_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_REPLICA_VELOCITY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_REPLICA_VELOCITY"), + repeats=True, + ) class x_cp2k_section_input_MOTION_BAND_STRING_METHOD(MSection): - ''' + """ Controls parameters for String Method type calculation only. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_STRING_METHOD_SMOOTHING = Quantity( type=str, shape=[], - description=''' + description=""" Smoothing parameter for the reparametrization of the frames. - ''') + """, + ) x_cp2k_input_MOTION_BAND_STRING_METHOD_SPLINE_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Specify the oder of the spline used in the String Method. - ''') + """, + ) class x_cp2k_section_input_MOTION_BAND(MSection): - ''' + """ The section that controls a BAND run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_BAND_ALIGN_FRAMES = Quantity( type=str, shape=[], - description=''' + description=""" Enables the alignment of the frames at the beginning of a BAND calculation. This keyword does not affect the rotation of the replicas during a BAND calculation. - ''') + """, + ) x_cp2k_input_MOTION_BAND_BAND_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of BAND calculation - ''') + """, + ) x_cp2k_input_MOTION_BAND_K_SPRING = Quantity( type=str, shape=[], - description=''' + description=""" Specify the value of the spring constant - ''') + """, + ) x_cp2k_input_MOTION_BAND_NPROC_REP = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of processors to be used per replica environment (for parallel runs) - ''') + """, + ) x_cp2k_input_MOTION_BAND_NUMBER_OF_REPLICA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of Replica to use in the BAND - ''') + """, + ) x_cp2k_input_MOTION_BAND_POT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the type of potential used in the BAND calculation - ''') + """, + ) x_cp2k_input_MOTION_BAND_PROC_DIST_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the topology of the mapping of processors into replicas. - ''') + """, + ) x_cp2k_input_MOTION_BAND_ROTATE_FRAMES = Quantity( type=str, shape=[], - description=''' + description=""" Compute at each BAND step the RMSD and rotate the frames in order to minimize it. - ''') + """, + ) x_cp2k_input_MOTION_BAND_USE_COLVARS = Quantity( type=str, shape=[], - description=''' + description=""" Uses a version of the band scheme projected in a subspace of colvars. - ''') + """, + ) x_cp2k_section_input_MOTION_BAND_BANNER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_BANNER'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_BANNER"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_CI_NEB = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_CI_NEB'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_CI_NEB"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_CONVERGENCE_CONTROL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_CONVERGENCE_CONTROL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_BAND_CONVERGENCE_CONTROL" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_CONVERGENCE_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_CONVERGENCE_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_CONVERGENCE_INFO"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_ENERGY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_ENERGY"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_OPTIMIZE_BAND"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_PROGRAM_RUN_INFO"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_REPLICA_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_REPLICA_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_REPLICA_INFO"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_REPLICA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_REPLICA'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_REPLICA"), + repeats=True, + ) x_cp2k_section_input_MOTION_BAND_STRING_METHOD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND_STRING_METHOD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND_STRING_METHOD"), + repeats=True, + ) class x_cp2k_section_input_MOTION_CELL_OPT_BFGS_RESTART(MSection): - ''' + """ Controls the printing of Hessian Restart file - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_CELL_OPT_BFGS(MSection): - ''' + """ Provides parameters to tune the BFGS optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the file used to read the initial Hessian. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_RESTART_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Controls the reading of the initial Hessian from file. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_TRUST_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Trust radius used in BFGS. Previously set to 0.1. Large values can lead to instabilities - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_USE_MODEL_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Uses a model Hessian as initial guess instead of a unit matrix. Should lead in general to improved convergence might be switched off for exotic cases - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_BFGS_USE_RAT_FUN_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Includes a rational function optimization to determine the step. Previously default but did not improve convergence in many cases - ''') + """, + ) x_cp2k_section_input_MOTION_CELL_OPT_BFGS_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_BFGS_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CELL_OPT_BFGS_RESTART"), + repeats=True, + ) class x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_2PNT(MSection): - ''' + """ Provides parameters to tune the line search for the two point based line search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_2PNT_LINMIN_GRAD_ONLY = Quantity( type=str, shape=[], - description=''' + description=""" Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients). - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_2PNT_MAX_ALLOWED_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Max allowed value for the line search step. - ''') + """, + ) class x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD(MSection): - ''' + """ Provides parameters to tune the line search for the gold search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD_BRACK_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Limit in 1D bracketing during line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD_BRENT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations in brent algorithm (used for the line search in Conjugated Gradients Optimization) - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD_BRENT_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance requested during Brent line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD_INITIAL_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size used, e.g. for bracketing or minimizers. Might need to be reduced for systems with close contacts - ''') + """, + ) class x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH(MSection): - ''' + """ Provides parameters to tune the line search during the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_CG_LINE_SEARCH_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the CG optimizer, in increasing order of robustness and cost. - ''') + """, + ) x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_2PNT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_2PNT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_2PNT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH_GOLD" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CELL_OPT_CG(MSection): - ''' + """ Provides parameters to tune the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_CG_FLETCHER_REEVES = Quantity( type=str, shape=[], - description=''' + description=""" Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_CG_MAX_STEEP_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of steepest descent steps before starting the conjugate gradients optimization. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_CG_RESTART_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Cosine of the angle between two consecutive searching directions. If the angle during a CG optimization is less than the one corresponding to to the RESTART_LIMIT the CG is reset and one step of steepest descent is performed. - ''') + """, + ) x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CELL_OPT_CG_LINE_SEARCH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_CELL_OPT_LBFGS(MSection): - ''' + """ Provides parameters to tune the limited memory BFGS (LBFGS) optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_LBFGS_MAX_F_PER_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of force evaluations per iteration(used for the line search) - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_LBFGS_MAX_H_RANK = Quantity( type=str, shape=[], - description=''' + description=""" Maximum rank (and consequently size) of the approximate Hessian matrix used by the LBFGS optimizer. Larger values (e.g. 30) will accelerate the convergence behaviour at the cost of a larger memory consumption. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_LBFGS_WANTED_PROJ_GRADIENT = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested norm threshold of the gradient multiplied by the approximate Hessian. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_LBFGS_WANTED_REL_F_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested relative error on the objective functionof the optimizer (the energy) - ''') + """, + ) class x_cp2k_section_input_MOTION_CELL_OPT(MSection): - ''' + """ This section sets the environment for the optimization of the simulation cell. Two possible schemes are available: (1) Zero temperature optimization; (2) Finite temperature optimization. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CELL_OPT_EXTERNAL_PRESSURE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the external pressure (1 value or the full 9 components of the pressure tensor) applied during the cell optimization. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_KEEP_ANGLES = Quantity( type=str, shape=[], - description=''' + description=""" Keep angles between the cell vectors constant, but allow the lenghts of the cell vectors to change independently. Albeit general, this is most useful for triclinic cells, to enforce higher symmetry, see KEEP_SYMMETRY. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_KEEP_SYMMETRY = Quantity( type=str, shape=[], - description=''' + description=""" Keep the requested initial cell symmetry (e.g. during a cell optimisation). The initial symmetry must be specified in the &CELL section. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_MAX_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_MAX_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum force component of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of geometry optimization steps. One step might imply several force evaluations for the CG and LBFGS optimizers. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_OPTIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which method to use to perform a geometry optimization. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_PRESSURE_TOLERANCE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the Pressure tolerance (compared to the external pressure) to achieve during the cell optimization. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_RMS_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_RMS_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) force of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_STEP_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting step value for the CELL_OPT module. - ''') + """, + ) x_cp2k_input_MOTION_CELL_OPT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of method to use for the optimization of the simulation cell - ''') + """, + ) x_cp2k_section_input_MOTION_CELL_OPT_BFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_BFGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CELL_OPT_BFGS"), + repeats=True, + ) x_cp2k_section_input_MOTION_CELL_OPT_CG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_CG'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CELL_OPT_CG"), + repeats=True, + ) x_cp2k_section_input_MOTION_CELL_OPT_LBFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT_LBFGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CELL_OPT_LBFGS"), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE_RESTRAINT(MSection): - ''' + """ Activate and specify information on restraint instead of constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_RESTRAINT_K = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the force constant for the harmonic restraint. The functional form for the restraint is: K*(X-TARGET)^2. - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE(MSection): - ''' + """ Used to constraint collective (general) degrees of freedom, writing langrangian multipliers to file. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_COLVAR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index (in input file order) of the type of colvar to constrain. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_EXCLUDE_MM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the MM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_EXCLUDE_QM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the QM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_INTERMOLECULAR = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the constraint/restraint is intermolecular. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_MOLECULE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the index of the molecule kind (in input file order)on which the constraint will be applied. MOLECULE and MOLNAME keyword exclude themself mutually. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecule on which the constraint will be applied. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_TARGET_GROWTH = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the growth speed of the target value of the constrained collective variable. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_TARGET_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the limit of the growth of the target value of the constrained collective variable. By default no limit at the colvar growth is set. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_COLLECTIVE_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the target value of the constrained collective variable (units depend on the colvar). - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_COLVAR_RESTART(MSection): - ''' + """ Specify restart position only for COLVAR restraints. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_COLVAR_RESTART_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The restarting values for COLVAR restraints. The order is an internal order. So if you decide to modify these values by hand first think what you're doing! - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_CONSTRAINT_INFO(MSection): - ''' + """ Prints information about iterative constraints solutions - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_CONSTRAINT_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_CONSTRAINT_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_CONSTRAINT_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_CONSTRAINT_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_CONSTRAINT_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_FIX_ATOM_RESTART(MSection): - ''' + """ Specify restart position only for FIXED_ATOMS restraints. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_FIX_ATOM_RESTART_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" The restarting position of fixed atoms for restraints. The order is an internal order. So if you decide to modify these values by hand first think what you're doing! - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS_RESTRAINT(MSection): - ''' + """ Activate and specify information on restraint instead of constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_RESTRAINT_K = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the force constant for the harmonic restraint. The functional form for the restraint is: K*(X-TARGET)^2. - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS(MSection): - ''' + """ This section is used to constraint the overall atomic position (X,Y,Z). In case a restraint is specified the value of the TARGET is considered to be the value of the coordinates at the beginning of the run or alternatively the corresponding value in the section: FIX_ATOM_RESTART. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_COMPONENTS_TO_FIX = Quantity( type=str, shape=[], - description=''' + description=""" Specify which components (X,Y,Z or combinations) of the atoms specified in the sectionwill be constrained/restrained. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_EXCLUDE_MM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the MM region within a QM/MM calculation. This keyword is active only together with MOLNAME - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_EXCLUDE_QM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the QM region within a QM/MM calculation. This keyword is active only together with MOLNAME - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms to freeze. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_MM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all MM atoms are fixed according to the argument. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecule to fix - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_FIXED_ATOMS_QM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all QM atoms are fixed according to the argument. - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_G3X3_RESTRAINT(MSection): - ''' + """ Activate and specify information on restraint instead of constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_G3X3_RESTRAINT_K = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the force constant for the harmonic restraint. The functional form for the restraint is: K*(X-TARGET)^2. - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_G3X3(MSection): - ''' + """ This section is used to set 3x3 (3 atoms and 3 distances) constraints. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_G3X3_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Atoms' index on which apply the constraint - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G3X3_DISTANCES = Quantity( type=str, shape=[], - description=''' + description=""" The constrained distances' values. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G3X3_EXCLUDE_MM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the MM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G3X3_EXCLUDE_QM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the QM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G3X3_INTERMOLECULAR = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the constraint/restraint is intermolecular. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G3X3_MOLECULE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the molecule kind number on which constraint will be applied. MOLECULE and MOLNAME keyword exclude themself mutually. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G3X3_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecule on which the constraint will be applied. - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_G3X3_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_G3X3_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_G3X3_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_G4X6_RESTRAINT(MSection): - ''' + """ Activate and specify information on restraint instead of constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_G4X6_RESTRAINT_K = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the force constant for the harmonic restraint. The functional form for the restraint is: K*(X-TARGET)^2. - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_G4X6(MSection): - ''' + """ This section is used to set 4x6 (4 atoms and 6 distances) constraints. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_G4X6_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Atoms' index on which apply the constraint - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G4X6_DISTANCES = Quantity( type=str, shape=[], - description=''' + description=""" The constrained distances' values. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G4X6_EXCLUDE_MM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the MM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G4X6_EXCLUDE_QM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the QM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G4X6_INTERMOLECULAR = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the constraint/restraint is intermolecular. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G4X6_MOLECULE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the molecule number on which constraint will be applied. MOLECULE and MOLNAME keyword exclude themself mutually. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_G4X6_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecule on which the constraint will be applied. - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_G4X6_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_G4X6_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_G4X6_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS_RESTRAINT(MSection): - ''' + """ Activate and specify information on restraint instead of constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_RESTRAINT_K = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the force constant for the harmonic restraint. The functional form for the restraint is: K*(X-TARGET)^2. - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS(MSection): - ''' + """ This section is used to set bonds constraints involving Hydrogen atoms - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_ATOM_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atoms' type forming a bond with an hydrogen. If not specified the default bond value of the first molecule is used as constraint target - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_EXCLUDE_MM = Quantity( type=str, shape=[], - description=''' + description=""" Does not shake HBONDS in the MM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_EXCLUDE_QM = Quantity( type=str, shape=[], - description=''' + description=""" Does not shake HBONDS in the QM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_MOLECULE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the indexes of the molecule kind (in input file order)on which the constraint will be applied. MOLECULE and MOLNAME keyword exclude themself mutually. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the names of the molecule on which the constraint will be applied. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_HBONDS_TARGETS = Quantity( type=str, shape=[], - description=''' + description=""" The constrained distances' values for the types defines in ATOM_TYPE. - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS(MSection): - ''' + """ Prints out the lagrange multipliers of the specified constraints during an MD. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE_RESTRAINT(MSection): - ''' + """ Activate and specify information on restraint instead of constraint - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_RESTRAINT_K = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the force constant for the harmonic restraint. The functional form for the restraint is: K*(X-TARGET)^2. - ''') + """, + ) class x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE(MSection): - ''' + """ This section is used to set a virtual interaction-site constraint. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Atoms' index on which apply the constraint (v i j k), first is virtual site - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_EXCLUDE_MM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the MM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_EXCLUDE_QM = Quantity( type=str, shape=[], - description=''' + description=""" Does not apply the constraint to the QM region within a QM/MM calculation - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_INTERMOLECULAR = Quantity( type=str, shape=[], - description=''' + description=""" Specify if the constraint/restraint is intermolecular. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_MOLECULE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the molecule number on which constraint will be applied. MOLECULE and MOLNAME keyword exclude themself mutually. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecule on which the constraint will be applied. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_VIRTUAL_SITE_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The constrained paramters' values to construct virtual site.r_v=a*r_ij+b*r_kj - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE_RESTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE_RESTRAINT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE_RESTRAINT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_CONSTRAINT(MSection): - ''' + """ Section specifying information regarding how to impose constraints on the system. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_CONSTRAINT_CONSTRAINT_INIT = Quantity( type=str, shape=[], - description=''' + description=""" Apply constraints to the initial position and velocities. Default is to apply constraints only after the first MD step. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_ROLL_TOLERANCE = Quantity( type=str, shape=[], - description=''' + description=""" Set the tolerance for the roll constraint algorithm. - ''') + """, + ) x_cp2k_input_MOTION_CONSTRAINT_SHAKE_TOLERANCE = Quantity( type=str, shape=[], - description=''' + description=""" Set the tolerance for the shake/rattle constraint algorithm. - ''') + """, + ) x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT_COLLECTIVE"), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_COLVAR_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_COLVAR_RESTART'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_COLVAR_RESTART" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_CONSTRAINT_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_CONSTRAINT_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_CONSTRAINT_INFO" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_FIX_ATOM_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_FIX_ATOM_RESTART'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_FIX_ATOM_RESTART" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT_FIXED_ATOMS"), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_G3X3 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_G3X3'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT_G3X3"), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_G4X6 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_G4X6'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT_G4X6"), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT_HBONDS"), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_CONSTRAINT_LAGRANGE_MULTIPLIERS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT_VIRTUAL_SITE"), + repeats=True, + ) class x_cp2k_section_input_MOTION_DRIVER(MSection): - ''' + """ This section defines the parameters needed to run in i-PI driver mode. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_DRIVER_HOST = Quantity( type=str, shape=[], - description=''' + description=""" Host name for the i-PI server. - ''') + """, + ) x_cp2k_input_MOTION_DRIVER_PORT = Quantity( type=str, shape=[], - description=''' + description=""" Port number for the i-PI server. - ''') + """, + ) x_cp2k_input_MOTION_DRIVER_UNIX = Quantity( type=str, shape=[], - description=''' + description=""" Use a UNIX socket rather than an INET socket. - ''') + """, + ) class x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL(MSection): - ''' + """ Controls the printing of FP info at startup - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS(MSection): - ''' + """ Controls the printing of FP info during flexible partitioning simulations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING(MSection): - ''' + """ This section sets up flexible_partitioning - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_BIAS = Quantity( type=str, shape=[], - description=''' + description=""" If a bias potential counter-acting the weight term should be applied (recommended). - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_CENTRAL_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the central atom. - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_INNER_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that should remain close to the central atom. - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_INNER_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" radius of the inner wall - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_OUTER_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms that should remain far from the central atom. - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_OUTER_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" radius of the outer wall - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_SMOOTH_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Sets the width of the smooth counting function. - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_STRENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Sets the force constant of the repulsive harmonic potential - ''') + """, + ) x_cp2k_input_MOTION_FLEXIBLE_PARTITIONING_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Sets the temperature parameter that is used in the baising potential.It is recommended to use the actual simulation temperature - ''') + """, + ) x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_CONTROL" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING_WEIGHTS" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE(MSection): - ''' + """ Controls the calculation of delta free energies with the alchemical change method. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE_EPS_CONV = Quantity( type=str, shape=[], - description=''' + description=""" Set the relative tolerance for the convergence of the free energy derivative - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE_NEQUIL_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Set the number of equilibration steps, skipped to compute averages - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE_PARAMETER = Quantity( type=str, shape=[], - description=''' + description=""" Defines the perturbing parameter of the alchemical change tranformation - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE_WEIGHTING_FUNCTION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the weighting function (umbrella potential, part of the mixing function) - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO(MSection): - ''' + """ Controls the printing of basic and summary information during the Free Energy calculation - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_FS(MSection): - ''' + """ Colvar force within an extended Lagrangian formalism.Used for RESTART. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_FS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specified the theta - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS0(MSection): - ''' + """ Colvar position within an extended Lagrangian formalism.Used for RESTART. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS0_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specified the positions - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS(MSection): - ''' + """ Colvar Theta within an extended Lagrangian formalism.Used for RESTART. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specified the theta - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_VVP(MSection): - ''' + """ Colvar velocities within an extended Lagrangian formalism.Used for RESTART. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_VVP_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specified the velocities - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_GAUSSIAN(MSection): - ''' + """ Parameters controlling the gaussian wall. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_GAUSSIAN_SIGMA = Quantity( type=str, shape=[], - description=''' + description=""" Specify the width of the gaussian: WW*e^(-((CV-POS)/sigma)^2) - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_GAUSSIAN_WW = Quantity( type=str, shape=[], - description=''' + description=""" Specify the height of the gaussian: WW*e^(-((CV-POS)/sigma)^2) - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUADRATIC(MSection): - ''' + """ Parameters controlling the quadratic wall - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUADRATIC_DIRECTION = Quantity( type=str, shape=[], - description=''' + description=""" Specify the direction of the wall. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUADRATIC_K = Quantity( type=str, shape=[], - description=''' + description=""" Specify the value of the quadratic potential constant: K*(CV-POS)^2 - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUARTIC(MSection): - ''' + """ Parameters controlling the quartic wall - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUARTIC_DIRECTION = Quantity( type=str, shape=[], - description=''' + description=""" Specify the direction of the wall. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUARTIC_K = Quantity( type=str, shape=[], - description=''' + description=""" Specify the value of the quartic potential constant: K*(CV-(POS+/-(1/K^(1/4))))^4 - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_REFLECTIVE(MSection): - ''' + """ Parameters controlling the reflective wall - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_REFLECTIVE_DIRECTION = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_REFLECTIVE_DIRECTION = ( + Quantity( + type=str, + shape=[], + description=""" Specify the direction of the wall. - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL(MSection): - ''' + """ Controls the activation of walls on COLVAR during a metadynamic run. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_POSITION = Quantity( type=str, shape=[], - description=''' + description=""" Specify the value of the colvar for the wall position - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the type of wall - ''') + """, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_GAUSSIAN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_GAUSSIAN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_GAUSSIAN" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUADRATIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUADRATIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUADRATIC" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUARTIC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUARTIC'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_QUARTIC" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_REFLECTIVE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_REFLECTIVE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL_REFLECTIVE" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR(MSection): - ''' + """ This section specify the nature of the collective variables. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_COLVAR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the colvar on which to apply metadynamics. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the friction term in Langevin integration of the collective variable in the extended lagrangian scheme. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_LAMBDA = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the lambda parameter of the collective variable in the extended lagrangian scheme. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_MASS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the mass parameter of the collective variable in the extended lagrangian scheme. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_METAVAR_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the scale factor for the following collective variable. The history dependent term has the expression: WW * Sum_{j=1}^{nhills} Prod_{k=1}^{ncolvar} [EXP[-0.5*((ss-ss0(k,j))/SCALE(k))^2]], where ncolvar is the number of defined METAVAR and nhills is the number of spawned hills. - ''') + """, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR_WALL" + ), + repeats=True, + ) -class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_FILE_NAME(MSection): - ''' +class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_FILE_NAME( + MSection +): + """ Specify the basename for the NUMBER_OF_WALKERS files used to communicate between the walkers. Absolute path can be input as well together with the filename. One file will be created for each spawned hill. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_FILE_NAME_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specified the communication filename for each walker. - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS(MSection): - ''' + """ Enables and configures the metadynamics using multiple walkers. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_NUMBER_OF_WALKERS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_NUMBER_OF_WALKERS = ( + Quantity( + type=str, + shape=[], + description=""" Sets the total number of walkers in the metadynamic run. - ''') - - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Controls the usage of the multiple walkers in a metadynamics run. - ''') - - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKER_COMM_FREQUENCY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKER_COMM_FREQUENCY = ( + Quantity( + type=str, + shape=[], + description=""" Sets the frequency (in unit of spawned hills) for the communication between the several walkers, in order to update the local list of hills with the ones coming from the other walkers - ''') + """, + ) + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKER_ID = Quantity( type=str, shape=[], - description=''' + description=""" Sets the walker ID for the local metadynamics run. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_STATUS = Quantity( type=str, shape=[], - description=''' + description=""" Stores the status of the several walkers in the local run. - ''') + """, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_FILE_NAME = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_FILE_NAME'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS_WALKERS_FILE_NAME" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_HEIGHT(MSection): - ''' + """ The height of the spawned hills during metadynamics.Used for RESTART. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_HEIGHT_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_HEIGHT_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify the spawned hills - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_INVDT(MSection): - ''' + """ The inverse of the DELTA_T parameter used for Well-Tempered metadynamics.Used for RESTART. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_INVDT_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_INVDT_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify the spawned hills - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_POS(MSection): - ''' + """ The position of the spawned hills during metadynamics.Used for RESTART. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_POS_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_POS_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify the spawned hills - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_SCALE(MSection): - ''' + """ The scales of the spawned hills during metadynamics.Used for RESTART. When a scale is zero in one or more directions, the Gaussian hill is assumed to be infinitely wide in those directions. The latter can be used to combine spawned hills from multiple 1D metadynamics runs in one multidimensional metadynamics run. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_SCALE_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_SCALE_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify the spawned hills - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN(MSection): - ''' + """ This section sets parameters to set up a calculation of metadynamics. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_COLVAR_AVG_TEMPERATURE_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" COLVAR average temperature. Only for restarting purposes. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_DELTA_T = Quantity( type=str, shape=[], - description=''' + description=""" If Well-tempered metaD is used, the temperature parameter must be specified. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_DO_HILLS = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables the spawning of the hills. Default .FALSE. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_HILL_TAIL_CUTOFF = Quantity( type=str, shape=[], - description=''' + description=""" By setting this variable larger than 0 the tail of the Gaussian hill is damped to zero faster. The Gaussian function is multiplied by a cutoff function that becomes active at |x-X0|>HILL_TAIL_CUTOFF*SCALE, where X0 is the location of the Gaussian and SCALE is the width of the Gaussian. For more than one METAVAR X0 and SCALE are METAVAR-dependent. (1-(|x-X0|/HILL_TAIL_CUTOFF*SCALE)^P_EXP)/(1-(|x-X0|/HILL_TAIL _CUTOFF*SCALE)^Q_EXP) - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_LAGRANGE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies whether an extended-lagrangian should be used. Default .FALSE. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_LANGEVIN = Quantity( type=str, shape=[], - description=''' + description=""" If a Lagrangian scheme is used the eq. motion of the COLVARS are integrated with a LANGEVIN scheme. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MIN_DISP = Quantity( type=str, shape=[], - description=''' + description=""" Minimum displacement between hills before placing a new hill. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_MIN_NT_HILLS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the minimum MD step interval between spawning two hills. If specified, it must be >= than NT_HILLS. In case MIN_DISP is used, if MIN_DISP is satisfied before MIN_NT_HILLS MD steps have been performed, the MD will continue without any spawning until MIN_NT_HILLS is reached. The default value has the net effect of skipping this check. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_NHILLS_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting value of previously spawned hills - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_NT_HILLS = Quantity( type=str, shape=[], - description=''' + description=""" Specify the maximum MD step interval between spawning two hills. When negative, no new hills are spawned and only the hills read from SPAWNED_HILLS_* are in effect. The latteris useful when one wants to add a custom constant bias potential. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_OLD_HILL_NUMBER = Quantity( type=str, shape=[], - description=''' + description=""" Index of the last hill spawned for this walker.Needed to calculate MIN_DISP - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_OLD_HILL_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Timestep of the last hill spawned for this walker.Needed to calculate MIN_DISP - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_P_EXPONENT = Quantity( type=str, shape=[], - description=''' + description=""" Exponent at the numerator of the cutoff function to damp the tail of the Gaussian. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_PLUMED_INPUT_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the file name of the external plumed input file - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_Q_EXPONENT = Quantity( type=str, shape=[], - description=''' + description=""" Exponent at the denominator of the cutoff function to damp the tail of the Gaussian. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_SLOW_GROWTH = Quantity( type=str, shape=[], - description=''' + description=""" Let the last hill grow slowly over NT_HILLS. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_STEP_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting step value for metadynamics - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_TAMCSTEPS = Quantity( type=str, shape=[], - description=''' + description=""" Number of sampling points for z - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_TEMP_TOL = Quantity( type=str, shape=[], - description=''' + description=""" If a Lagrangian scheme is used the temperature tolerance for the collective variables is specified. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" If a Lagrangian scheme is used the temperature for the collective variables is specified. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_TIMESTEP = Quantity( type=str, shape=[], - description=''' + description=""" The length of an integration step for colvars (TAMC only) - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_USE_PLUMED = Quantity( type=str, shape=[], - description=''' + description=""" Specify whether to use plumed as an external metadynamics driver. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_WELL_TEMPERED = Quantity( type=str, shape=[], - description=''' + description=""" This keyword enables Well-tempered metadynamics. Default .FALSE. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_WTGAMMA = Quantity( type=str, shape=[], - description=''' + description=""" If Well-tempered metaD is used, the gamma parameter must be specified if not DELTA_T. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_METADYN_WW = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the height of the gaussian to spawn. Default 0.1 . - ''') + """, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_FS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_FS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_FS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS0 = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS0'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS0" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_SS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_VVP = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_VVP'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_EXT_LAGRANGE_VVP" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_METAVAR" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_MULTIPLE_WALKERS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_HEIGHT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_HEIGHT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_HEIGHT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_INVDT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_INVDT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_INVDT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_POS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_POS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_POS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_SCALE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_SCALE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN_SPAWNED_HILLS_SCALE" + ), + repeats=True, + ) -class x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL(MSection): - ''' +class x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL( + MSection +): + """ This section specify parameters controlling the convergence of the free energy. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_COARSE_GRAINED_POINTS = Quantity( type=str, shape=[], - description=''' + description=""" Set the minimum amount of coarse grained points to collect before starting the statistical analysis - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_COARSE_GRAINED_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Width of segments in MD steps to generate the set of coarse grained data, providing a correlation independent data set. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_EPS_CONV = Quantity( type=str, shape=[], - description=''' + description=""" Set the relative tolerance for the convergence of the collective variable averages used to compute the free energy. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_K_CONFIDENCE_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Set the confidence limit for the Mann-Kendall trend test. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_MAX_COARSE_GRAINED_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Max Width of segments in MD steps to generate the set of coarse grained data. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_SW_CONFIDENCE_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Set the confidence limit for the Shapiro-Wilks normality test. - ''') + """, + ) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL_VN_CONFIDENCE_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Set the confidence limit for the Von Neumann serial correlation test. - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_UVAR(MSection): - ''' + """ This section specify the nature of the collective variables used in computing the free energy. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_UVAR_COLVAR = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the colvar used to compute free energy - ''') + """, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION(MSection): - ''' + """ Controls the calculation of free energy derivatives with the umbrella integration method. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_CONVERGENCE_CONTROL" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_UVAR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_UVAR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION_UVAR" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_FREE_ENERGY(MSection): - ''' + """ Controls the calculation of free energy and free energy derivatives with different possible methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_FREE_ENERGY_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Defines the method to use to compute free energy. - ''') + """, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_ALCHEMICAL_CHANGE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_FREE_ENERGY_INFO" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_FREE_ENERGY_METADYN"), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_FREE_ENERGY_UMBRELLA_INTEGRATION" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_BFGS_RESTART(MSection): - ''' + """ Controls the printing of Hessian Restart file - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_GEO_OPT_BFGS(MSection): - ''' + """ Provides parameters to tune the BFGS optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the file used to read the initial Hessian. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_RESTART_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Controls the reading of the initial Hessian from file. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_TRUST_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Trust radius used in BFGS. Previously set to 0.1. Large values can lead to instabilities - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_USE_MODEL_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Uses a model Hessian as initial guess instead of a unit matrix. Should lead in general to improved convergence might be switched off for exotic cases - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_BFGS_USE_RAT_FUN_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Includes a rational function optimization to determine the step. Previously default but did not improve convergence in many cases - ''') + """, + ) x_cp2k_section_input_MOTION_GEO_OPT_BFGS_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_BFGS_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_GEO_OPT_BFGS_RESTART"), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_2PNT(MSection): - ''' + """ Provides parameters to tune the line search for the two point based line search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_2PNT_LINMIN_GRAD_ONLY = Quantity( type=str, shape=[], - description=''' + description=""" Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients). - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_2PNT_MAX_ALLOWED_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Max allowed value for the line search step. - ''') + """, + ) class x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD(MSection): - ''' + """ Provides parameters to tune the line search for the gold search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD_BRACK_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Limit in 1D bracketing during line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD_BRENT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations in brent algorithm (used for the line search in Conjugated Gradients Optimization) - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD_BRENT_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance requested during Brent line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD_INITIAL_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size used, e.g. for bracketing or minimizers. Might need to be reduced for systems with close contacts - ''') + """, + ) class x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH(MSection): - ''' + """ Provides parameters to tune the line search during the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_CG_LINE_SEARCH_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the CG optimizer, in increasing order of robustness and cost. - ''') + """, + ) x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_2PNT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_2PNT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_2PNT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH_GOLD" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_CG(MSection): - ''' + """ Provides parameters to tune the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_CG_FLETCHER_REEVES = Quantity( type=str, shape=[], - description=''' + description=""" Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_CG_MAX_STEEP_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of steepest descent steps before starting the conjugate gradients optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_CG_RESTART_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Cosine of the angle between two consecutive searching directions. If the angle during a CG optimization is less than the one corresponding to to the RESTART_LIMIT the CG is reset and one step of steepest descent is performed. - ''') + """, + ) x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_GEO_OPT_CG_LINE_SEARCH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_LBFGS(MSection): - ''' + """ Provides parameters to tune the limited memory BFGS (LBFGS) optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_LBFGS_MAX_F_PER_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of force evaluations per iteration(used for the line search) - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_LBFGS_MAX_H_RANK = Quantity( type=str, shape=[], - description=''' + description=""" Maximum rank (and consequently size) of the approximate Hessian matrix used by the LBFGS optimizer. Larger values (e.g. 30) will accelerate the convergence behaviour at the cost of a larger memory consumption. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_LBFGS_WANTED_PROJ_GRADIENT = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested norm threshold of the gradient multiplied by the approximate Hessian. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_LBFGS_WANTED_REL_F_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested relative error on the objective functionof the optimizer (the energy) - ''') + """, + ) class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DIMER_VECTOR(MSection): - ''' + """ Specifies the initial dimer vector (used frequently to restart DIMER calculations). If not provided the starting orientation of the dimer is chosen randomly. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DIMER_VECTOR_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DIMER_VECTOR_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify on each line the components of the dimer vector. - ''') + """, + ) + ) -class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART(MSection): - ''' +class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART( + MSection +): + """ Controls the printing of Hessian Restart file - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_ADD_LAST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_ADD_LAST = ( + Quantity( + type=str, + shape=[], + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_FILENAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_FILENAME = ( + Quantity( + type=str, + shape=[], + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS(MSection): - ''' + """ Provides parameters to tune the BFGS optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the file used to read the initial Hessian. - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_HESSIAN = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART_HESSIAN = ( + Quantity( + type=str, + shape=[], + description=""" Controls the reading of the initial Hessian from file. - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_TRUST_RADIUS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_TRUST_RADIUS = ( + Quantity( + type=str, + shape=[], + description=""" Trust radius used in BFGS. Previously set to 0.1. Large values can lead to instabilities - ''') + """, + ) + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_USE_MODEL_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Uses a model Hessian as initial guess instead of a unit matrix. Should lead in general to improved convergence might be switched off for exotic cases - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_USE_RAT_FUN_OPT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_USE_RAT_FUN_OPT = ( + Quantity( + type=str, + shape=[], + description=""" Includes a rational function optimization to determine the step. Previously default but did not improve convergence in many cases - ''') + """, + ) + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS_RESTART" + ), + repeats=True, + ) -class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT(MSection): - ''' +class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT( + MSection +): + """ Provides parameters to tune the line search for the two point based line search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT_LINMIN_GRAD_ONLY = Quantity( type=str, shape=[], - description=''' + description=""" Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients). - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT_MAX_ALLOWED_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Max allowed value for the line search step. - ''') + """, + ) -class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD(MSection): - ''' +class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD( + MSection +): + """ Provides parameters to tune the line search for the gold search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD_BRACK_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Limit in 1D bracketing during line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD_BRENT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations in brent algorithm (used for the line search in Conjugated Gradients Optimization) - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD_BRENT_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance requested during Brent line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD_INITIAL_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size used, e.g. for bracketing or minimizers. Might need to be reduced for systems with close contacts - ''') + """, + ) -class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH(MSection): - ''' +class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH( + MSection +): + """ Provides parameters to tune the line search during the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_TYPE = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_TYPE = ( + Quantity( + type=str, + shape=[], + description=""" 1D line search algorithm to be used with the CG optimizer, in increasing order of robustness and cost. - ''') + """, + ) + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_2PNT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH_GOLD" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG(MSection): - ''' + """ Provides parameters to tune the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_FLETCHER_REEVES = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_FLETCHER_REEVES = ( + Quantity( + type=str, + shape=[], + description=""" Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_MAX_STEEP_STEPS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_MAX_STEEP_STEPS = ( + Quantity( + type=str, + shape=[], + description=""" Maximum number of steepest descent steps before starting the conjugate gradients optimization. - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_RESTART_LIMIT = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_RESTART_LIMIT = ( + Quantity( + type=str, + shape=[], + description=""" Cosine of the angle between two consecutive searching directions. If the angle during a CG optimization is less than the one corresponding to to the RESTART_LIMIT the CG is reset and one step of steepest descent is performed. - ''') + """, + ) + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG_LINE_SEARCH" + ), + repeats=True, + ) -class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS(MSection): - ''' +class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS( + MSection +): + """ Provides parameters to tune the limited memory BFGS (LBFGS) optimization - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS_MAX_F_PER_ITER = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS_MAX_F_PER_ITER = ( + Quantity( + type=str, + shape=[], + description=""" Maximum number of force evaluations per iteration(used for the line search) - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS_MAX_H_RANK = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS_MAX_H_RANK = ( + Quantity( + type=str, + shape=[], + description=""" Maximum rank (and consequently size) of the approximate Hessian matrix used by the LBFGS optimizer. Larger values (e.g. 30) will accelerate the convergence behaviour at the cost of a larger memory consumption. - ''') + """, + ) + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS_WANTED_PROJ_GRADIENT = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested norm threshold of the gradient multiplied by the approximate Hessian. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS_WANTED_REL_F_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested relative error on the objective functionof the optimizer (the energy) - ''') + """, + ) class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT(MSection): - ''' + """ This section sets the environment for the optimization of the rotation of the Dimer. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_MAX_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_MAX_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum force component of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of geometry optimization steps. One step might imply several force evaluations for the CG and LBFGS optimizers. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_OPTIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which method to use to perform a geometry optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_RMS_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_RMS_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) force of the current configuration. - ''') - - x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_STEP_START_VAL = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_STEP_START_VAL = ( + Quantity( + type=str, + shape=[], + description=""" The starting step value for the ROT_OPT module. - ''') + """, + ) + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_BFGS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_CG" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT_LBFGS" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER(MSection): - ''' + """ Specifies parameters for Dimer Method - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ANGLE_TOLERANCE = Quantity( type=str, shape=[], - description=''' + description=""" This keyword sets the value of the tolerance angle for the line search performed to optimize the orientation of the dimer. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DR = Quantity( type=str, shape=[], - description=''' + description=""" This keyword sets the value for the DR parameter. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_INTERPOLATE_GRADIENT = Quantity( type=str, shape=[], - description=''' + description=""" This keyword controls the interpolation of the gradient whenever possible during the optimization of the Dimer. The use of this keywords saves 1 evaluation of energy/forces. - ''') + """, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DIMER_VECTOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DIMER_VECTOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_DIMER_VECTOR" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER_ROT_OPT" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE(MSection): - ''' + """ Specifies parameters to perform a transition state search - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_TRANSITION_STATE_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of method to use for locating transition states - ''') + """, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE_DIMER" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_GEO_OPT(MSection): - ''' + """ This section sets the environment of the geometry optimizer. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_GEO_OPT_MAX_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_MAX_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum force component of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of geometry optimization steps. One step might imply several force evaluations for the CG and LBFGS optimizers. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_OPTIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which method to use to perform a geometry optimization. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_RMS_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_RMS_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) force of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_STEP_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting step value for the GEO_OPT module. - ''') + """, + ) x_cp2k_input_MOTION_GEO_OPT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify which kind of geometry optimization to perform - ''') + """, + ) x_cp2k_section_input_MOTION_GEO_OPT_BFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_BFGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_GEO_OPT_BFGS"), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_CG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_CG'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_GEO_OPT_CG"), repeats=True + ) x_cp2k_section_input_MOTION_GEO_OPT_LBFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_LBFGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_GEO_OPT_LBFGS"), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_GEO_OPT_TRANSITION_STATE" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MC_AVBMC(MSection): - ''' + """ Parameters for Aggregation Volume Bias Monte Carlo (AVBMC) which explores cluster formation and destruction. Chen and Siepmann, J. Phys. Chem. B 105, 11275-11282 (2001). - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_AVBMC_AVBMC_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" The target atom for an AVBMC swap move for each molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_AVBMC_AVBMC_RMAX = Quantity( type=str, shape=[], - description=''' + description=""" The outer radius for an AVBMC swap move, in angstroms, for every molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_AVBMC_AVBMC_RMIN = Quantity( type=str, shape=[], - description=''' + description=""" The inner radius for an AVBMC swap move, in angstroms for every molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_AVBMC_PBIAS = Quantity( type=str, shape=[], - description=''' + description=""" The probability of swapping to an inner region in an AVBMC swap move for each molecule type. - ''') + """, + ) class x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_BOX_DISPLACEMENTS(MSection): - ''' + """ Maximum displacements for any move that is performed on each simulation box. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_MAX_DISPLACEMENTS_BOX_DISPLACEMENTS_RMVOLUME = Quantity( type=str, shape=[], - description=''' + description=""" Maximum volume displacement, in angstrom**3. - ''') + """, + ) class x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS(MSection): - ''' + """ Maximum displacements for every move type that requires a value for each molecular type in the simulation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS_RMANGLE = Quantity( type=str, shape=[], - description=''' + description=""" Maximum bond angle displacement, in degrees, for each molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS_RMBOND = Quantity( type=str, shape=[], - description=''' + description=""" Maximum bond length displacement, in angstroms, for each molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS_RMDIHEDRAL = Quantity( type=str, shape=[], - description=''' + description=""" Maximum dihedral angle distplacement, in degrees, for each molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS_RMROT = Quantity( type=str, shape=[], - description=''' + description=""" Maximum rotational displacement, in degrees, for each molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS_RMTRANS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum translational displacement, in angstroms, for each molecule type. - ''') + """, + ) class x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS(MSection): - ''' + """ The maximum displacements for all attempted moves. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_BOX_DISPLACEMENTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_BOX_DISPLACEMENTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_BOX_DISPLACEMENTS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS_MOL_DISPLACEMENTS" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_BOX_PROBABILITIES(MSection): - ''' + """ Probabilities of attempting various moves types on the box. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_BOX_PROBABILITIES_PMHMC_BOX = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a HMC move on this box. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_BOX_PROBABILITIES_PMVOL_BOX = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a volume move on this box (GEMC_NpT). - ''') + """, + ) class x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES(MSection): - ''' + """ Probabilities of attempting various moves types on the various molecular types present in the simulation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES_PMAVBMC_MOL = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting an AVBMC swap move on each molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES_PMROT_MOL = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a molecule rotation of a given molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES_PMSWAP_MOL = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a molecule swap of a given molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES_PMTRAION_MOL = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a conformational change of a given molecule type. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES_PMTRANS_MOL = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a molecule translation of a given molecule type. - ''') + """, + ) class x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES(MSection): - ''' + """ Parameters for fraction of moves performed for each move type. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_PMAVBMC = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting an AVBMC swap move. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_PMHMC = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a hybrid MC move. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_PMSWAP = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a swap move. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_PMTRAION = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a conformational change. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_PMTRANS = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a molecule translation. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_PROBABILITIES_PMVOLUME = Quantity( type=str, shape=[], - description=''' + description=""" The probability of attempting a volume move. - ''') + """, + ) x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_BOX_PROBABILITIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_BOX_PROBABILITIES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_BOX_PROBABILITIES" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES_MOL_PROBABILITIES" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MC_MOVE_UPDATES(MSection): - ''' + """ Frequency for updating move maximum displacements. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_MOVE_UPDATES_IUPTRANS = Quantity( type=str, shape=[], - description=''' + description=""" Every iuptrans steps update maximum translation/rotation/configurational changes. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVE_UPDATES_IUPVOLUME = Quantity( type=str, shape=[], - description=''' + description=""" Every iupvolume steps update maximum volume displacement. - ''') + """, + ) class x_cp2k_section_input_MOTION_MC(MSection): - ''' + """ This section sets parameters to set up a MonteCarlo calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MC_BOX2_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" For GEMC, the name of the input file for the other box. - ''') + """, + ) x_cp2k_input_MOTION_MC_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print current cell length info to. - ''') + """, + ) x_cp2k_input_MOTION_MC_COORDINATE_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print the current coordinates to. - ''') + """, + ) x_cp2k_input_MOTION_MC_DATA_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print current configurational info to. - ''') + """, + ) x_cp2k_input_MOTION_MC_DISCRETE_STEP = Quantity( type=str, shape=[], - description=''' + description=""" The size of the discrete volume move step, in angstroms. - ''') + """, + ) x_cp2k_input_MOTION_MC_ENERGY_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print current energies to. - ''') + """, + ) x_cp2k_input_MOTION_MC_ENSEMBLE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the type of simulation - ''') + """, + ) x_cp2k_input_MOTION_MC_ETA = Quantity( type=str, shape=[], - description=''' + description=""" The free energy bias (in Kelvin) for swapping a molecule of each type into this box. - ''') + """, + ) x_cp2k_input_MOTION_MC_IPRINT = Quantity( type=str, shape=[], - description=''' + description=""" Prints coordinate/cell/etc information every IPRINT steps. - ''') + """, + ) x_cp2k_input_MOTION_MC_LBIAS = Quantity( type=str, shape=[], - description=''' + description=""" Dictates if we presample moves with a different potential. - ''') + """, + ) x_cp2k_input_MOTION_MC_LDISCRETE = Quantity( type=str, shape=[], - description=''' + description=""" Changes the volume of the box in discrete steps, one side at a time. - ''') + """, + ) x_cp2k_input_MOTION_MC_LSTOP = Quantity( type=str, shape=[], - description=''' + description=""" Makes nstep in terms of steps, instead of cycles. - ''') + """, + ) x_cp2k_input_MOTION_MC_MAX_DISP_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print current maximum displacement info to. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOLECULES_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print the number of molecules to. - ''') + """, + ) x_cp2k_input_MOTION_MC_MOVES_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" The file to print the move statistics to. - ''') + """, + ) x_cp2k_input_MOTION_MC_NMOVES = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of classical moves between energy evaluations. - ''') + """, + ) x_cp2k_input_MOTION_MC_NSTEP = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of MC cycles. - ''') + """, + ) x_cp2k_input_MOTION_MC_NSWAPMOVES = Quantity( type=str, shape=[], - description=''' + description=""" How many insertions to try per swap move. - ''') + """, + ) x_cp2k_input_MOTION_MC_NVIRIAL = Quantity( type=str, shape=[], - description=''' + description=""" Use this many random orientations to compute the second virial coefficient (ENSEMBLE=VIRIAL) - ''') + """, + ) x_cp2k_input_MOTION_MC_PRESSURE = Quantity( type=str, shape=[], - description=''' + description=""" The pressure for NpT simulations, in bar. - ''') + """, + ) x_cp2k_input_MOTION_MC_RANDOMTOSKIP = Quantity( type=str, shape=[], - description=''' + description=""" Number of random numbers from the acceptance/rejection stream to skip - ''') + """, + ) x_cp2k_input_MOTION_MC_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the restart file for MC information. - ''') + """, + ) x_cp2k_input_MOTION_MC_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Read initial configuration from restart file. - ''') + """, + ) x_cp2k_input_MOTION_MC_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" The temperature of the simulation, in Kelvin. - ''') + """, + ) x_cp2k_input_MOTION_MC_VIRIAL_TEMPS = Quantity( type=str, shape=[], - description=''' + description=""" The temperatures you wish to compute the virial coefficient for. Only used if ensemble=VIRIAL. - ''') + """, + ) x_cp2k_section_input_MOTION_MC_AVBMC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_AVBMC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MC_AVBMC"), repeats=True + ) x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MC_MAX_DISPLACEMENTS"), + repeats=True, + ) x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MC_MOVE_PROBABILITIES"), + repeats=True, + ) x_cp2k_section_input_MOTION_MC_MOVE_UPDATES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC_MOVE_UPDATES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MC_MOVE_UPDATES"), + repeats=True, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION( + MSection +): + """ This section provides the possibility to define arbitrary region for the fast thermostat. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION_LIST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION_LIST = ( + Quantity( + type=str, + shape=[], + description=""" Specifies a list of atoms to thermostat. - ''') + """, + ) + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION_MM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all MM atoms are specified as a whole ensemble to be thermostated - ''') - - x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION_MOLNAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION_MOLNAME = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the name of the molecules to thermostat - ''') + """, + ) + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION_QM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all QM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_COORD(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_COORD( + MSection +): + """ The positions for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_FORCE(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_FORCE( + MSection +): + """ The forces for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_FORCE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MASS(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MASS( + MSection +): + """ The masses for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_VELOCITY(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_VELOCITY( + MSection +): + """ The velocities for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE(MSection): - ''' + """ paramameters of the Nose Hoover thermostat chain - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" length of the Nose-Hoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MTS = Quantity( type=str, shape=[], - description=''' + description=""" number of multiple timesteps to be used for the NoseHoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" timeconstant of the thermostat chain - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_YOSHIDA = Quantity( type=str, shape=[], - description=''' + description=""" order of the yoshida integretor used for the thermostat - ''') + """, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_COORD" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_FORCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_FORCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_FORCE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_MASS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE_VELOCITY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST(MSection): - ''' + """ Specify thermostat type and parameters controlling the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_REGION = Quantity( type=str, shape=[], - description=''' + description=""" Determines the defined region for fast thermostat - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the thermostat used for the constant temperature ensembles. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_DEFINE_REGION" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST_NOSE" + ), + repeats=True, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION( + MSection +): + """ This section provides the possibility to define arbitrary region for the slow thermostat. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION_LIST = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION_LIST = ( + Quantity( + type=str, + shape=[], + description=""" Specifies a list of atoms to thermostat. - ''') + """, + ) + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION_MM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all MM atoms are specified as a whole ensemble to be thermostated - ''') - - x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION_MOLNAME = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION_MOLNAME = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the name of the molecules to thermostat - ''') + """, + ) + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION_QM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all QM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_COORD(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_COORD( + MSection +): + """ The positions for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_FORCE(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_FORCE( + MSection +): + """ The forces for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_FORCE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MASS(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MASS( + MSection +): + """ The masses for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_VELOCITY(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_VELOCITY( + MSection +): + """ The velocities for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE(MSection): - ''' + """ paramameters of the Nose Hoover thermostat chain - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" length of the Nose-Hoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MTS = Quantity( type=str, shape=[], - description=''' + description=""" number of multiple timesteps to be used for the NoseHoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" timeconstant of the thermostat chain - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_YOSHIDA = Quantity( type=str, shape=[], - description=''' + description=""" order of the yoshida integretor used for the thermostat - ''') + """, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_COORD" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_FORCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_FORCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_FORCE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_MASS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE_VELOCITY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW(MSection): - ''' + """ Specify thermostat type and parameters controlling the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_REGION = Quantity( type=str, shape=[], - description=''' + description=""" Determines the defined region for slow thermostat - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the thermostat used for the constant temperature ensembles. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_DEFINE_REGION" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW_NOSE" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS(MSection): - ''' + """ Parameters used in canonical adiabatic free energy sampling (CAFES). - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_N_RESP_FAST = Quantity( type=str, shape=[], - description=''' + description=""" number of respa steps for fast degrees of freedom - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_TEMP_FAST = Quantity( type=str, shape=[], - description=''' + description=""" Temperature in K used to control the fast degrees of freedom - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_TEMP_SLOW = Quantity( type=str, shape=[], - description=''' + description=""" Temperature in K used to control the slow degrees of freedom - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_TEMP_TOL_FAST = Quantity( type=str, shape=[], - description=''' + description=""" Maximum accepted temperature deviation from the expected value, for the fast motion.If 0, no rescaling is performed - ''') + """, + ) x_cp2k_input_MOTION_MD_ADIABATIC_DYNAMICS_TEMP_TOL_SLOW = Quantity( type=str, shape=[], - description=''' + description=""" Maximum accepted temperature deviation from the expected value, for the slow motion.If 0, no rescaling is performed - ''') + """, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_FAST" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS_THERMOSTAT_SLOW" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_AVERAGES_PRINT_AVERAGES(MSection): - ''' + """ Controls the output the averaged quantities - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_AVERAGES_PRINT_AVERAGES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_PRINT_AVERAGES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_PRINT_AVERAGES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_PRINT_AVERAGES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_PRINT_AVERAGES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_AVERAGES_RESTART_AVERAGES(MSection): - ''' + """ Stores information for restarting averages. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_COLVARS = Quantity( type=str, shape=[], - description=''' + description=""" COLVARS averages - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_ECONS = Quantity( type=str, shape=[], - description=''' + description=""" CONSTANT ENERGY average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_MMATRIX = Quantity( type=str, shape=[], - description=''' + description=""" METRIC TENSOR averages - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PRESS = Quantity( type=str, shape=[], - description=''' + description=""" PRESSURE average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PV_CNSTR = Quantity( type=str, shape=[], - description=''' + description=""" PV CONSTRAINTS average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PV_FOCK_4C = Quantity( type=str, shape=[], - description=''' + description=""" PV XC average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PV_KIN = Quantity( type=str, shape=[], - description=''' + description=""" PV KINETIC average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PV_TOT = Quantity( type=str, shape=[], - description=''' + description=""" PV TOTAL average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PV_VIR = Quantity( type=str, shape=[], - description=''' + description=""" PV VIRIAL average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PV_XC = Quantity( type=str, shape=[], - description=''' + description=""" PV XC average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVE_PXX = Quantity( type=str, shape=[], - description=''' + description=""" P_{XX} average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEALPHA = Quantity( type=str, shape=[], - description=''' + description=""" ALPHA cell angle average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEBETA = Quantity( type=str, shape=[], - description=''' + description=""" BETA cell angle average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVECELL_A = Quantity( type=str, shape=[], - description=''' + description=""" CELL VECTOR A average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVECELL_B = Quantity( type=str, shape=[], - description=''' + description=""" CELL VECTOR B average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVECELL_C = Quantity( type=str, shape=[], - description=''' + description=""" CELL VECTOR C average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVECPU = Quantity( type=str, shape=[], - description=''' + description=""" CPU average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEGAMMA = Quantity( type=str, shape=[], - description=''' + description=""" GAMMA cell angle average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEHUGONIOT = Quantity( type=str, shape=[], - description=''' + description=""" HUGONIOT average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEKIN_QM = Quantity( type=str, shape=[], - description=''' + description=""" QM KINETIC ENERGY average in QMMM runs - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEKIN = Quantity( type=str, shape=[], - description=''' + description=""" KINETIC ENERGY average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEPOT = Quantity( type=str, shape=[], - description=''' + description=""" POTENTIAL ENERGY average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVETEMP_BARO = Quantity( type=str, shape=[], - description=''' + description=""" BAROSTAT TEMPERATURE average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVETEMP_QM = Quantity( type=str, shape=[], - description=''' + description=""" QM TEMPERATURE average in QMMM runs - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVETEMP = Quantity( type=str, shape=[], - description=''' + description=""" TEMPERATURE average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_AVEVOL = Quantity( type=str, shape=[], - description=''' + description=""" VOLUME average - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_RESTART_AVERAGES_ITIMES_START = Quantity( type=str, shape=[], - description=''' + description=""" TIME STEP starting the evaluation of averages - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_AVERAGES(MSection): - ''' + """ Controls the calculation of the averages during an MD run. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_AVERAGES_ACQUISITION_START_TIME = Quantity( type=str, shape=[], - description=''' + description=""" Setup up the simulation time when the acquisition process to compute averages is started. - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_AVERAGE_COLVAR = Quantity( type=str, shape=[], - description=''' + description=""" Switch for computing the averages of COLVARs. - ''') + """, + ) x_cp2k_input_MOTION_MD_AVERAGES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the calculations of the averages. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_AVERAGES_PRINT_AVERAGES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_AVERAGES_PRINT_AVERAGES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_AVERAGES_PRINT_AVERAGES" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_AVERAGES_RESTART_AVERAGES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_AVERAGES_RESTART_AVERAGES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_AVERAGES_RESTART_AVERAGES" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_MASS(MSection): - ''' + """ The masses for BAROSTAT used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_CHI(MSection): - ''' + """ Information to initialize the Ad-Langevin thermostat DOF CHI - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_CHI_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_CHI_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify an initial thermostat DOF CHI for Ad-Langevin thermostat. - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_MASS(MSection): - ''' + """ Information to initialize the Ad-Langevin thermostat DOF MASS - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_MASS_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_MASS_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify an initial thermostat DOF MASS for Ad-Langevin thermostat. - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN(MSection): - ''' + """ Parameters of the adaptive-Langevin thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_TIMECON_LANGEVIN = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the Langevin part of the AD_LANGEVIN thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_TIMECON_NH = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the Nose-Hoover part of the AD_LANGEVIN thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_CHI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_CHI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_CHI" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN_MASS" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_THERMOSTAT_ENERGY(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_THERMOSTAT_ENERGY( + MSection +): + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR(MSection): - ''' + """ Parameters of the canonical sampling through velocity rescaling thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the CSVR thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_RNG_INIT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_RNG_INIT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_S(MSection): - ''' + """ The s variable for GLE used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_S_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify s variable for GLE thermostat - ''') + """, + ) -class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY(MSection): - ''' +class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY( + MSection +): + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE(MSection): - ''' + """ paramameters of the gle thermostat. This section can be generated from https://epfl- cosmo.github.io/gle4md/index.html?page=matrix - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_A_LIST = Quantity( type=str, shape=[], - description=''' + description=""" A matrix The defaults give optimal sampling for most cristalline and liquid compounds. Generated with the parameters set kv_4-4.acentered on w_0=40 cm^-1. - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_A_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factor for matrix A (for generic matrix A, depends on the characteristic frequency of the system). - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_C_LIST = Quantity( type=str, shape=[], - description=''' + description=""" C matrix - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_NDIM = Quantity( type=str, shape=[], - description=''' + description=""" Size of the gle matrix - ''') + """, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_RNG_INIT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_RNG_INIT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_S = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_S'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_S" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_COORD(MSection): - ''' + """ The positions for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_FORCE(MSection): - ''' + """ The forces for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_FORCE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_MASS(MSection): - ''' + """ The masses for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_VELOCITY(MSection): - ''' + """ The velocities for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE(MSection): - ''' + """ paramameters of the Nose Hoover thermostat chain - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" length of the Nose-Hoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_MTS = Quantity( type=str, shape=[], - description=''' + description=""" number of multiple timesteps to be used for the NoseHoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" timeconstant of the thermostat chain - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_YOSHIDA = Quantity( type=str, shape=[], - description=''' + description=""" order of the yoshida integretor used for the thermostat - ''') + """, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_COORD" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_FORCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_FORCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_FORCE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_MASS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE_VELOCITY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT(MSection): - ''' + """ Specify thermostat type and parameters controlling the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_THERMOSTAT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the thermostat used for the constant temperature ensembles. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_AD_LANGEVIN" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_CSVR" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_GLE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT_NOSE" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT_VELOCITY(MSection): - ''' + """ The velocities for BAROSTAT used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_BAROSTAT(MSection): - ''' + """ Parameters of barostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_BAROSTAT_PRESSURE = Quantity( type=str, shape=[], - description=''' + description=""" Initial pressure - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_TEMP_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Maximum oscillation of the Barostat temperature imposed by rescaling. - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Barostat initial temperature. If not set, the ensemble temperature is used instead. - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" Barostat time constant - ''') + """, + ) x_cp2k_input_MOTION_MD_BAROSTAT_VIRIAL = Quantity( type=str, shape=[], - description=''' + description=""" For NPT_F only: allows the screening of one or more components of the virial in order to relax the cell only along specific cartesian axis - ''') + """, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_MASS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_BAROSTAT_MASS"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_BAROSTAT_THERMOSTAT"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT_VELOCITY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_BAROSTAT_VELOCITY"), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_CASCADE_ATOM_LIST(MSection): - ''' + """ Defines a list of atoms for which the initial velocities are modified - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_CASCADE_ATOM_LIST_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Defines the list of atoms for which the velocities are modified. Each record consists of the atomic index, the velocity vector, and a weight to define which fraction of the total energy is assigned to the current atom:

Atomic_index vx vy vx Weight

- ''') + """, + ) class x_cp2k_section_input_MOTION_MD_CASCADE(MSection): - ''' + """ Defines the parameters for the setup of a cascade simulation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_CASCADE_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Total energy transferred to the system during the cascade event. - ''') + """, + ) x_cp2k_input_MOTION_MD_CASCADE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Controls the activation of the CASCADE section. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_CASCADE_ATOM_LIST = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_CASCADE_ATOM_LIST'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_CASCADE_ATOM_LIST"), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_LANGEVIN(MSection): - ''' + """ Controls the set of parameters to run a Langevin MD. The integrator used follows that given in the article by Ricci et al. The user can define regions in the system where the atoms inside undergoes Langevin MD, while those outside the regions undergoes NVE Born Oppenheimer MD. To define the regions, the user should use THERMAL_REGION subsection of MOTION%MD. The theory for Langevin MD involving sub-regions can be found in articles by Kantorovitch et al. All the references can be found in the links below. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_LANGEVIN_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Gamma parameter for the Langevin dynamics (LD) - ''') + """, + ) x_cp2k_input_MOTION_MD_LANGEVIN_NOISY_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Imaginary Langevin Friction term for LD with noisy forces. - ''') + """, + ) x_cp2k_input_MOTION_MD_LANGEVIN_SHADOW_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Shadow Langevin Friction term for LD with noisy forces in order to adjust Noisy_Gamma. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_MSST(MSection): - ''' + """ Parameters for Multi-Scale Shock Technique (MSST) which simulate the effect of a steady planar shock on a unit cell. Reed et. al. Physical Review Letters 90, 235503 (2003). - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_MSST_CMASS = Quantity( type=str, shape=[], - description=''' + description=""" Effective cell mass - ''') + """, + ) x_cp2k_input_MOTION_MD_MSST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Initial energy - ''') + """, + ) x_cp2k_input_MOTION_MD_MSST_GAMMA = Quantity( type=str, shape=[], - description=''' + description=""" Damping coefficient for cell volume - ''') + """, + ) x_cp2k_input_MOTION_MD_MSST_PRESSURE = Quantity( type=str, shape=[], - description=''' + description=""" Initial pressure - ''') + """, + ) x_cp2k_input_MOTION_MD_MSST_VOLUME = Quantity( type=str, shape=[], - description=''' + description=""" Initial volume - ''') + """, + ) x_cp2k_input_MOTION_MD_MSST_VSHOCK = Quantity( type=str, shape=[], - description=''' + description=""" Velocity shock - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION(MSection): - ''' + """ This section provides the possibility to define arbitrary region for the MSD calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms to thermostat. - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION_MM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all MM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecules to thermostat - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION_QM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all QM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD(MSection): - ''' + """ Loads an external trajectory file and performs analysis on the loaded snapshots. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_DISPLACED_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Identify the atoms that moved from their initialposition of a distance larger than a given tolerance (see msd%displacement_tol). - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_DISPLACEMENT_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Lower limit to define displaced atoms - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_MSD_PER_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Set up the calculation of the MSD for each atomic kind - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_MSD_PER_MOLKIND = Quantity( type=str, shape=[], - description=''' + description=""" Set up the calculation of the MSD for each molecule kind.The position of the center of mass of the molecule is considered. - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_MSD_PER_REGION = Quantity( type=str, shape=[], - description=''' + description=""" Set up the calculation of the MSD for each defined region. - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_REF0_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" Specify the filename where the initial reference configuration is stored. - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_MSD_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" controls the activation of core-level spectroscopy simulations - ''') + """, + ) x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD_DEFINE_REGION" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_REFTRAJ(MSection): - ''' + """ Loads an external trajectory file and performs analysis on the loaded snapshots. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_REFTRAJ_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specify the filename where the cell is stored (for trajectories generated within variable cell ensembles). - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_EVAL_ENERGY_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" Evaluate energy and forces for each retrieved snapshot during a REFTRAJ run - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_FIRST_SNAPSHOT = Quantity( type=str, shape=[], - description=''' + description=""" Index of the snapshot stored in the trajectory file from which to start a REFTRAJ run - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_LAST_SNAPSHOT = Quantity( type=str, shape=[], - description=''' + description=""" Index of the last snapshot stored in the trajectory file that is read along a REFTRAJ run - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_STRIDE = Quantity( type=str, shape=[], - description=''' + description=""" Stride in number of snapshot for the reftraj analysis - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_TRAJ_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specify the filename where the trajectory is stored. - ''') + """, + ) x_cp2k_input_MOTION_MD_REFTRAJ_VARIABLE_VOLUME = Quantity( type=str, shape=[], - description=''' + description=""" Enables the possibility to read a CELL file with information on the CELL size during the MD. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_REFTRAJ_MSD"), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_RESPA(MSection): - ''' + """ Multiple timestep integration based on RESPA (implemented for NVE only). RESPA exploits multiple force_eval. In this case the order of the force_eval maps the order of the respa shells from the slowest to the fastest force evaluation. If force_evals share the same subsys, it's enough then to specify the subsys in the force_eval corresponding at the first index in the multiple_force_eval list. Can be used to speedup classical and ab initio MD simulations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_RESPA_FREQUENCY = Quantity( type=str, shape=[], - description=''' + description=""" The number of reference MD steps between two RESPA corrections. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_CHI(MSection): - ''' + """ Information to initialize the Ad-Langevin thermostat DOF CHI - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_CHI_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat DOF CHI for Ad-Langevin thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_MASS(MSection): - ''' + """ Information to initialize the Ad-Langevin thermostat DOF MASS - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat DOF MASS for Ad-Langevin thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN(MSection): - ''' + """ Parameters of the adaptive-Langevin thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_TIMECON_LANGEVIN = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the Langevin part of the AD_LANGEVIN thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_TIMECON_NH = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the Nose-Hoover part of the AD_LANGEVIN thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_CHI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_CHI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_CHI" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN_MASS" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_THERMOSTAT_ENERGY(MSection): - ''' + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR(MSection): - ''' + """ Parameters of the canonical sampling through velocity rescaling thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the CSVR thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_RNG_INIT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_RNG_INIT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION(MSection): - ''' + """ This section provides the possibility to define arbitrary region for the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms to thermostat. - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION_MM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all MM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecules to thermostat - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION_QM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all QM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_S(MSection): - ''' + """ The s variable for GLE used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_S_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify s variable for GLE thermostat - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_THERMOSTAT_ENERGY(MSection): - ''' + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) - x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = ( + Quantity( + type=str, + shape=[], + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE(MSection): - ''' + """ paramameters of the gle thermostat. This section can be generated from https://epfl- cosmo.github.io/gle4md/index.html?page=matrix - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_A_LIST = Quantity( type=str, shape=[], - description=''' + description=""" A matrix The defaults give optimal sampling for most cristalline and liquid compounds. Generated with the parameters set kv_4-4.acentered on w_0=40 cm^-1. - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_A_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factor for matrix A (for generic matrix A, depends on the characteristic frequency of the system). - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_C_LIST = Quantity( type=str, shape=[], - description=''' + description=""" C matrix - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_GLE_NDIM = Quantity( type=str, shape=[], - description=''' + description=""" Size of the gle matrix - ''') + """, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_RNG_INIT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_RNG_INIT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_S = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_S'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_S" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_COORD(MSection): - ''' + """ The positions for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_FORCE(MSection): - ''' + """ The forces for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_FORCE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_MASS(MSection): - ''' + """ The masses for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_VELOCITY(MSection): - ''' + """ The velocities for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE(MSection): - ''' + """ paramameters of the Nose Hoover thermostat chain - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" length of the Nose-Hoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_MTS = Quantity( type=str, shape=[], - description=''' + description=""" number of multiple timesteps to be used for the NoseHoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" timeconstant of the thermostat chain - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_YOSHIDA = Quantity( type=str, shape=[], - description=''' + description=""" order of the yoshida integretor used for the thermostat - ''') + """, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_COORD" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_FORCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_FORCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_FORCE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_MASS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE_VELOCITY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT(MSection): - ''' + """ Specify thermostat type and parameters controlling the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_REGION = Quantity( type=str, shape=[], - description=''' + description=""" Determines the region each thermostat is attached to. - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_THERMOSTAT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the thermostat used for the constant temperature ensembles. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_AD_LANGEVIN" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_CSVR" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_DEFINE_REGION" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_GLE"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT_NOSE" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_SHELL(MSection): - ''' + """ Parameters of shell model in adiabatic dynamics. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_SHELL_DISPLACEMENT_SHELL_TOL = Quantity( type=str, shape=[], - description=''' + description=""" This keyword sets a maximum variation of the shell core distance in each Cartesian direction.The maximum internal core-shell velocity is evaluated and if it is too large to remainwithin the assigned limit, the time step is rescaled accordingly,and the first half step of the velocity verlet is repeated. - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_NOSE_PARTICLE = Quantity( type=str, shape=[], - description=''' + description=""" If nvt or npt, the core and shell velocities are controlled by the same thermostat used for the particle. This might favour heat exchange and additional rescaling of the internal core-shell velocity is needed (TEMP_TOL) - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_TEMP_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Maximum accepted temperature deviation from the expected value, for the internal core-shell motion.If 0, no rescaling is performed - ''') + """, + ) x_cp2k_input_MOTION_MD_SHELL_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" Temperature in K used to control the internal velocities of the core-shell motion - ''') + """, + ) x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_SHELL_THERMOSTAT"), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION(MSection): - ''' + """ This section provides the possibility to define arbitrary region - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION_DO_LANGEVIN = Quantity( type=str, shape=[], - description=''' + description=""" When ENSEMBLE is set to LANGEVIN, Controls whether the atoms in the thermal region should undergo Langevin MD. If not, then they will undergo NVE Born-Oppenheimer MD. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms belonging to the region. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION_TEMP_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Maximum accepted temperature deviation from the expected value for this region. If temp_tol=0 no rescaling is performed - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" The temperature in K used to initialize the velocities of the atoms in this region - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMAL_REGION(MSection): - ''' + """ Define regions where different initialization and control of the temperature is used. When MOTION%MD%ENSEMBLE is set to LANGEVIN, this section controls if the atoms defined inside and outside the thermal regions should undergo Langevin MD or NVE Born- Oppenheimer MD. The theory behind Langevin MD using different regions can be found in articles by Kantorovitch et al. listed below. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMAL_REGION_DO_LANGEVIN_DEFAULT = Quantity( type=str, shape=[], - description=''' + description=""" If ENSEMBLE is set to LANGEVIN, controls whether the atoms NOT defined in the thermal regions to undergo langevin MD or not. If not, then the atoms will undergo NVE Born-Oppenheimer MD. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMAL_REGION_FORCE_RESCALING = Quantity( type=str, shape=[], - description=''' + description=""" Control the rescaling ot the velocities in all the regions, according to the temperature assigned to each reagion, when RESTART_VELOCITY in EXT_RESTART is active. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMAL_REGION_DEFINE_REGION" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_CHI(MSection): - ''' + """ Information to initialize the Ad-Langevin thermostat DOF CHI - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_CHI_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat DOF CHI for Ad-Langevin thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_MASS(MSection): - ''' + """ Information to initialize the Ad-Langevin thermostat DOF MASS - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat DOF MASS for Ad-Langevin thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN(MSection): - ''' + """ Parameters of the adaptive-Langevin thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_TIMECON_LANGEVIN = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the Langevin part of the AD_LANGEVIN thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_TIMECON_NH = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the Nose-Hoover part of the AD_LANGEVIN thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_CHI = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_CHI'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_CHI" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_MASS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN_MASS" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_CSVR_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_THERMOSTAT_ENERGY(MSection): - ''' + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_CSVR_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR(MSection): - ''' + """ Parameters of the canonical sampling through velocity rescaling thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_CSVR_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" Time constant of the CSVR thermostat. A small time constant will result in strong thermostatting (useful for initial equilibrations) and a large time constant would be adequate to get weak thermostatting in production runs. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_RNG_INIT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_RNG_INIT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_DEFINE_REGION(MSection): - ''' + """ This section provides the possibility to define arbitrary region for the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_DEFINE_REGION_LIST = Quantity( type=str, shape=[], - description=''' + description=""" Specifies a list of atoms to thermostat. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_DEFINE_REGION_MM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all MM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_DEFINE_REGION_MOLNAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the molecules to thermostat - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_DEFINE_REGION_QM_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" In a QM/MM run all QM atoms are specified as a whole ensemble to be thermostated - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_S(MSection): - ''' + """ The s variable for GLE used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_S_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify s variable for GLE thermostat - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_THERMOSTAT_ENERGY(MSection): - ''' + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE(MSection): - ''' + """ paramameters of the gle thermostat. This section can be generated from https://epfl- cosmo.github.io/gle4md/index.html?page=matrix - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_A_LIST = Quantity( type=str, shape=[], - description=''' + description=""" A matrix The defaults give optimal sampling for most cristalline and liquid compounds. Generated with the parameters set kv_4-4.acentered on w_0=40 cm^-1. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_A_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factor for matrix A (for generic matrix A, depends on the characteristic frequency of the system). - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_C_LIST = Quantity( type=str, shape=[], - description=''' + description=""" C matrix - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_GLE_NDIM = Quantity( type=str, shape=[], - description=''' + description=""" Size of the gle matrix - ''') + """, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_RNG_INIT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_RNG_INIT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_S = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_S'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_S"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_COORD(MSection): - ''' + """ The positions for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_FORCE(MSection): - ''' + """ The forces for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_FORCE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_MASS(MSection): - ''' + """ The masses for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_MASS_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify masses of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_VELOCITY(MSection): - ''' + """ The velocities for NOSE HOOVER used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE(MSection): - ''' + """ paramameters of the Nose Hoover thermostat chain - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" length of the Nose-Hoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_MTS = Quantity( type=str, shape=[], - description=''' + description=""" number of multiple timesteps to be used for the NoseHoover chain - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_TIMECON = Quantity( type=str, shape=[], - description=''' + description=""" timeconstant of the thermostat chain - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_NOSE_YOSHIDA = Quantity( type=str, shape=[], - description=''' + description=""" order of the yoshida integretor used for the thermostat - ''') + """, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_COORD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_COORD" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_FORCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_FORCE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_FORCE" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_MASS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_MASS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_MASS"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_VELOCITY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE_VELOCITY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_THERMOSTAT(MSection): - ''' + """ Specify thermostat type and parameters controlling the thermostat. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_THERMOSTAT_REGION = Quantity( type=str, shape=[], - description=''' + description=""" Determines the region each thermostat is attached to. - ''') + """, + ) x_cp2k_input_MOTION_MD_THERMOSTAT_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the thermostat used for the constant temperature ensembles. - ''') + """, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_AD_LANGEVIN" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMOSTAT_CSVR"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_DEFINE_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_DEFINE_REGION'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_MD_THERMOSTAT_DEFINE_REGION" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMOSTAT_GLE"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMOSTAT_NOSE"), + repeats=True, + ) class x_cp2k_section_input_MOTION_MD_VELOCITY_SOFTENING(MSection): - ''' + """ A method to initialize the velocities along low-curvature directions in order to favors MD trajectories to cross rapidly over small energy barriers into neighboring basins. In each iteration the forces are calculated at a point y, which is slightly @@ -43077,961 +50871,1072 @@ class x_cp2k_section_input_MOTION_MD_VELOCITY_SOFTENING(MSection): The velocities are then updated with the force component F_t, which is perpendicular to N. N = v / |v|; y = x + delta * N; F_t = F(y) - 〈 F(y) | N 〉 * N; v' = v + alpha * F_t - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_VELOCITY_SOFTENING_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Mixing factor used for updating velocities. - ''') + """, + ) x_cp2k_input_MOTION_MD_VELOCITY_SOFTENING_DELTA = Quantity( type=str, shape=[], - description=''' + description=""" Displacement used to obtain y. - ''') + """, + ) x_cp2k_input_MOTION_MD_VELOCITY_SOFTENING_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Number of softening iterations performed. Typical values are around 40 steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_MD(MSection): - ''' + """ This section defines the whole set of parameters needed perform an MD run. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_MD_ANGVEL_TOL = Quantity( type=str, shape=[], - description=''' + description=""" The maximum accepted angular velocity. This option is ignored when the system is periodic. Removes the components of the velocities thatproject on the external rotational degrees of freedom. - ''') + """, + ) x_cp2k_input_MOTION_MD_ANGVEL_ZERO = Quantity( type=str, shape=[], - description=''' + description=""" Set the initial angular velocity to zero. This option is ignored when the system is periodic or when initial velocities are defined. Technically, the part of the random initial velocities that projects on the external rotational degrees of freedom is subtracted. - ''') + """, + ) x_cp2k_input_MOTION_MD_ANNEALING_CELL = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the rescaling factor for annealing velocities of the CELL Automatically enables the annealing procedure for the CELL. This scheme works only for ensambles that do not have thermostat on CELLS velocities. - ''') + """, + ) x_cp2k_input_MOTION_MD_ANNEALING = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the rescaling factor for annealing velocities. Automatically enables the annealing procedure. This scheme works only for ensembles that do not have thermostats on particles. - ''') + """, + ) x_cp2k_input_MOTION_MD_COMVEL_TOL = Quantity( type=str, shape=[], - description=''' + description=""" The maximum accepted velocity of the center of mass. With Shell-Model, comvel may drift if MD%THERMOSTAT%REGION /= GLOBAL - ''') + """, + ) x_cp2k_input_MOTION_MD_DISPLACEMENT_TOL = Quantity( type=str, shape=[], - description=''' + description=""" This keyword sets a maximum atomic displacement in each Cartesian direction.The maximum velocity is evaluated and if it is too large to remainwithin the assigned limit, the time step is rescaled accordingly,and the first half step of the velocity verlet is repeated. - ''') + """, + ) x_cp2k_input_MOTION_MD_ECONS_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting value of the conserved quantity - ''') + """, + ) x_cp2k_input_MOTION_MD_ENSEMBLE = Quantity( type=str, shape=[], - description=''' + description=""" The ensemble/integrator that you want to use for MD propagation - ''') + """, + ) x_cp2k_input_MOTION_MD_SCALE_TEMP_KIND = Quantity( type=str, shape=[], - description=''' + description=""" When necessary rescale the temperature per each kind separately - ''') + """, + ) x_cp2k_input_MOTION_MD_STEP_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting step value for the MD - ''') + """, + ) x_cp2k_input_MOTION_MD_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" The number of MD steps to perform - ''') + """, + ) x_cp2k_input_MOTION_MD_TEMP_KIND = Quantity( type=str, shape=[], - description=''' + description=""" Compute the temperature per each kind separately - ''') + """, + ) x_cp2k_input_MOTION_MD_TEMP_TOL = Quantity( type=str, shape=[], - description=''' + description=""" The maximum accepted deviation of the (global) temperaturefrom the desired target temperature before a rescaling of the velocites is performed. If it is 0 no rescaling is performed. NOTE: This keyword is obsolescent; Using a CSVR thermostat with a short timeconstant is recommended as a better alternative. - ''') + """, + ) x_cp2k_input_MOTION_MD_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" The temperature in K used to initialize the velocities with init and pos restart, and in the NPT/NVT simulations - ''') + """, + ) x_cp2k_input_MOTION_MD_TIME_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting timer value for the MD - ''') + """, + ) x_cp2k_input_MOTION_MD_TIMESTEP = Quantity( type=str, shape=[], - description=''' + description=""" The length of an integration step (in case RESPA the large TIMESTEP) - ''') + """, + ) x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_ADIABATIC_DYNAMICS"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_AVERAGES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_AVERAGES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_AVERAGES"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_BAROSTAT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_BAROSTAT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_BAROSTAT"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_CASCADE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_CASCADE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_CASCADE"), repeats=True + ) x_cp2k_section_input_MOTION_MD_LANGEVIN = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_LANGEVIN'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_LANGEVIN"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_MSST = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_MSST'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_MSST"), repeats=True + ) x_cp2k_section_input_MOTION_MD_REFTRAJ = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_REFTRAJ'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_REFTRAJ"), repeats=True + ) x_cp2k_section_input_MOTION_MD_RESPA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_RESPA'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_RESPA"), repeats=True + ) x_cp2k_section_input_MOTION_MD_SHELL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_SHELL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_SHELL"), repeats=True + ) x_cp2k_section_input_MOTION_MD_THERMAL_REGION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMAL_REGION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMAL_REGION"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_THERMOSTAT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_THERMOSTAT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_THERMOSTAT"), + repeats=True, + ) x_cp2k_section_input_MOTION_MD_VELOCITY_SOFTENING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD_VELOCITY_SOFTENING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD_VELOCITY_SOFTENING"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PINT_BEADS_COORD(MSection): - ''' + """ The positions for BEADS used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_BEADS_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_BEADS_VELOCITY(MSection): - ''' + """ The velocities for BEADS used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_BEADS_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_BEADS(MSection): - ''' + """ Sets positions and velocities of the beads - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_MOTION_PINT_BEADS_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_BEADS_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_BEADS_COORD"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_BEADS_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_BEADS_VELOCITY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_BEADS_VELOCITY"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PINT_GLE_RNG_INIT(MSection): - ''' + """ Information to initialize the parallel random number generator streams - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_GLE_RNG_INIT_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial RNG stream record - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_GLE_S(MSection): - ''' + """ The s variable for GLE used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_GLE_S_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify s variable for GLE thermostat - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_GLE_THERMOSTAT_ENERGY(MSection): - ''' + """ Information to initialize the CSVR thermostat energy. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_GLE_THERMOSTAT_ENERGY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify an initial thermostat energy for CSVR thermostat. - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_GLE(MSection): - ''' + """ paramameters of the gle thermostat. This section can be generated from https://epfl- cosmo.github.io/gle4md/index.html?page=matrix - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_GLE_A_LIST = Quantity( type=str, shape=[], - description=''' + description=""" A matrix The defaults give optimal sampling for most cristalline and liquid compounds. Generated with the parameters set kv_4-4.acentered on w_0=40 cm^-1. - ''') + """, + ) x_cp2k_input_MOTION_PINT_GLE_A_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scaling factor for matrix A (for generic matrix A, depends on the characteristic frequency of the system). - ''') + """, + ) x_cp2k_input_MOTION_PINT_GLE_C_LIST = Quantity( type=str, shape=[], - description=''' + description=""" C matrix - ''') + """, + ) x_cp2k_input_MOTION_PINT_GLE_NDIM = Quantity( type=str, shape=[], - description=''' + description=""" Size of the gle matrix - ''') + """, + ) x_cp2k_section_input_MOTION_PINT_GLE_RNG_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_GLE_RNG_INIT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_GLE_RNG_INIT"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_GLE_S = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_GLE_S'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_GLE_S"), repeats=True + ) x_cp2k_section_input_MOTION_PINT_GLE_THERMOSTAT_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_GLE_THERMOSTAT_ENERGY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PINT_GLE_THERMOSTAT_ENERGY" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_COORD(MSection): - ''' + """ The positions for HELIUM used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_FORCE(MSection): - ''' + """ Forces exerted by the helium on the solute system (used for restarts) - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_FORCE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Number of real values should be 3 * * - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_M_SAMPLING(MSection): - ''' + """ Permutation cycle length sampling settings - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_M_SAMPLING_M_RATIO = Quantity( type=str, shape=[], - description=''' + description=""" Probability ratio betw M-VALUE and other cycle lengths - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_M_SAMPLING_M_VALUE = Quantity( type=str, shape=[], - description=''' + description=""" Value of m treated in a special way - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_PERM(MSection): - ''' + """ Permutation state used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_PERM_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify particle index permutation for every helium atom - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_RDF(MSection): - ''' + """ Radial distribution function generation settings - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_RDF_MAXR = Quantity( type=str, shape=[], - description=''' + description=""" Maximum RDF range, defaults to unit cell size - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_RDF_NBIN = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_RHO_CUBE_DATA(MSection): - ''' + """ Density data used for restarts - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_RHO_CUBE_DATA_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Cubefile data - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_RHO(MSection): - ''' + """ Density distribution settings - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_RHO_IWEIGHT = Quantity( type=str, shape=[], - description=''' + description=""" Weight the restarted density should be given (number of MC steps used to average the restarted density, negative value - the same weight as the run-time density, usually should not be changed) - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_RHO_NBIN = Quantity( type=str, shape=[], - description=''' + description=""" Number of bins - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_RHO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Whether or not to actually calculate densities (requires significant amount of memory, depending on the value of NBIN) - ''') + """, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_RHO_CUBE_DATA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_RHO_CUBE_DATA'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PINT_HELIUM_RHO_CUBE_DATA" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM_RNG_STATE(MSection): - ''' + """ Random number generator state for all processors - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_RNG_STATE_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Three real arrays of DIMENSION(3,2) times two RNG streams - 36 real values per processor - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_HELIUM(MSection): - ''' + """ The section that controls optional helium solvent environment (highly experimental, not for general use yet) - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_HELIUM_BISECTION = Quantity( type=str, shape=[], - description=''' + description=""" how many time slices to change at once (+1). Must be a power of 2 currently - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_CELL_SHAPE = Quantity( type=str, shape=[], - description=''' + description=""" PBC unit cell shape for helium - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_CELL_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" PBC unit cell size (NOTE 1: density, number of atoms and volume are interdependent - give only two of them; NOTE 2: for small cell sizes specify NATOMS instead) - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" trial density of helium for determining the helium box size - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_DROP_UNUSED_ENVS = Quantity( type=str, shape=[], - description=''' + description=""" Drop He environments if N_restart > N_runtime (Warning: this will cause data loss in the restart file!) - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_HELIUM_ONLY = Quantity( type=str, shape=[], - description=''' + description=""" Simulate helium solvent only, disregard solute entirely - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_INOROT = Quantity( type=str, shape=[], - description=''' + description=""" Number of MC iterations at the same time slice(s) - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_IROT = Quantity( type=str, shape=[], - description=''' + description=""" how often to reselect the time slice(s) to work on - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_MAX_PERM_CYCLE = Quantity( type=str, shape=[], - description=''' + description=""" how large cyclic permutations to try - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_NATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Number of helium atoms - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_NBEADS = Quantity( type=str, shape=[], - description=''' + description=""" Number of helium path integral beads - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_NUM_ENV = Quantity( type=str, shape=[], - description=''' + description=""" Number of independent helium environments (only for restarts, do not set explicitly) - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Use periodic boundary conditions for helium - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_POTENTIAL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Name of the Helium interaction potential file - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_PRESAMPLE = Quantity( type=str, shape=[], - description=''' + description=""" Presample He coordinates before first PIMD step - ''') + """, + ) x_cp2k_input_MOTION_PINT_HELIUM_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Whether or not to actually use this section - ''') + """, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_COORD"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_FORCE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_FORCE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_FORCE"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_M_SAMPLING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_M_SAMPLING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_M_SAMPLING"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_PERM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_PERM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_PERM"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_RDF = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_RDF'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_RDF"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_RHO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_RHO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_RHO"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_HELIUM_RNG_STATE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM_RNG_STATE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM_RNG_STATE"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PINT_INIT(MSection): - ''' + """ Controls the initialization if the beads are not present - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_INIT_CENTROID_SPEED = Quantity( type=str, shape=[], - description=''' + description=""" adds random velocity component to the centroid modes (useful to correct for the averaging out of the speed of various beads) - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_LEVY_CORRELATED = Quantity( type=str, shape=[], - description=''' + description=""" Use the same Levy path for all atoms, though with mass-dependent variances (might help at very low T) - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_LEVY_POS_SAMPLE = Quantity( type=str, shape=[], - description=''' + description=""" Sample bead positions assuming free particle behavior (performs a Levy random walk of length P around the classical position of each atom at the physical temperature defined in PINT%TEMP) - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_LEVY_SEED = Quantity( type=str, shape=[], - description=''' + description=""" Initial seed for the (pseudo)random number generator that controls Levy walk for bead positions. - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_LEVY_TEMP_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Multiplicative correction factor for the temperature at which the Levy walk is performed (correction is due to the interactions that modify the spread of a free particle) - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_RANDOMIZE_POS = Quantity( type=str, shape=[], - description=''' + description=""" add gaussian noise to the positions of the beads - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_VELOCITY_QUENCH = Quantity( type=str, shape=[], - description=''' + description=""" set the initial velocities to zero - ''') + """, + ) x_cp2k_input_MOTION_PINT_INIT_VELOCITY_SCALE = Quantity( type=str, shape=[], - description=''' + description=""" scale initial velocities to the temperature given in MOTION%PINT%TEMP - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_NORMALMODE(MSection): - ''' + """ Controls the normal mode transformation - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_NORMALMODE_MODEFACTOR = Quantity( type=str, shape=[], - description=''' + description=""" mass scale factor for non-centroid degrees of freedom - ''') + """, + ) x_cp2k_input_MOTION_PINT_NORMALMODE_Q_BEAD = Quantity( type=str, shape=[], - description=''' + description=""" Value of the thermostat mass of non-centroid degrees of freedom - ''') + """, + ) x_cp2k_input_MOTION_PINT_NORMALMODE_Q_CENTROID = Quantity( type=str, shape=[], - description=''' + description=""" Value of the thermostat mass of centroid degree of freedom - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_NOSE_COORD(MSection): - ''' + """ The positions for NOSE used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_NOSE_COORD_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify positions of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_NOSE_VELOCITY(MSection): - ''' + """ The velocities for NOSE used for restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_NOSE_VELOCITY_DEFAULT_KEYWORD = Quantity( type=str, shape=[], - description=''' + description=""" Specify velocities of the system - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT_NOSE(MSection): - ''' + """ Controls the Nose-Hoover thermostats - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_NOSE_NNOS = Quantity( type=str, shape=[], - description=''' + description=""" length of nose-hoover chain. 0 means no thermostat - ''') + """, + ) x_cp2k_section_input_MOTION_PINT_NOSE_COORD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_NOSE_COORD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_NOSE_COORD"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_NOSE_VELOCITY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_NOSE_VELOCITY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_NOSE_VELOCITY"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PINT_STAGING(MSection): - ''' + """ The section that controls the staging transformation - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_STAGING_J = Quantity( type=str, shape=[], - description=''' + description=""" Value of the j parameter for the staging transformation - ''') + """, + ) x_cp2k_input_MOTION_PINT_STAGING_Q_END = Quantity( type=str, shape=[], - description=''' + description=""" Value of the nose-hoover mass for the endbead (Q_end) - ''') + """, + ) class x_cp2k_section_input_MOTION_PINT(MSection): - ''' + """ The section that controls a path integral run - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PINT_DT = Quantity( type=str, shape=[], - description=''' + description=""" timestep (might be subdivised in nrespa subtimesteps - ''') + """, + ) x_cp2k_input_MOTION_PINT_FIX_CENTROID_POS = Quantity( type=str, shape=[], - description=''' + description=""" Propagate all DOF but the centroid - useful for equilibration of the non-centroid modes (activated only if TRANSFORMATION==NORMAL) - ''') + """, + ) x_cp2k_input_MOTION_PINT_ITERATION = Quantity( type=str, shape=[], - description=''' + description=""" Specify the iteration number from which it should be counted - ''') + """, + ) x_cp2k_input_MOTION_PINT_MAX_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Maximum step number (the program will stop if ITERATION >= MAX_STEP even if NUM_STEPS has not been reached) - ''') + """, + ) x_cp2k_input_MOTION_PINT_NRESPA = Quantity( type=str, shape=[], - description=''' + description=""" number of respa steps for the bead for each md step - ''') + """, + ) x_cp2k_input_MOTION_PINT_NUM_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Number of steps (if MAX_STEP is not explicitly given the program will perform this number of steps) - ''') + """, + ) x_cp2k_input_MOTION_PINT_PROC_PER_REPLICA = Quantity( type=str, shape=[], - description=''' + description=""" Specify number of processors to use for each replica - ''') + """, + ) x_cp2k_input_MOTION_PINT_P = Quantity( type=str, shape=[], - description=''' + description=""" Specify number beads to use - ''') + """, + ) x_cp2k_input_MOTION_PINT_T_TOL = Quantity( type=str, shape=[], - description=''' + description=""" threshold for the oscillations of the temperature excedeed which the temperature is rescaled. 0 means no rescaling. - ''') + """, + ) x_cp2k_input_MOTION_PINT_TEMP = Quantity( type=str, shape=[], - description=''' + description=""" The temperature you want to simulate - ''') + """, + ) x_cp2k_input_MOTION_PINT_TRANSFORMATION = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the coordinate transformation to use - ''') + """, + ) x_cp2k_section_input_MOTION_PINT_BEADS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_BEADS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_BEADS"), repeats=True + ) x_cp2k_section_input_MOTION_PINT_GLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_GLE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_GLE"), repeats=True + ) x_cp2k_section_input_MOTION_PINT_HELIUM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_HELIUM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_HELIUM"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_INIT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_INIT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_INIT"), repeats=True + ) x_cp2k_section_input_MOTION_PINT_NORMALMODE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_NORMALMODE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_NORMALMODE"), + repeats=True, + ) x_cp2k_section_input_MOTION_PINT_NOSE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_NOSE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_NOSE"), repeats=True + ) x_cp2k_section_input_MOTION_PINT_STAGING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT_STAGING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT_STAGING"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_CELL_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -44039,178 +51944,199 @@ class x_cp2k_section_input_MOTION_PRINT_CELL_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CELL_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_CELL(MSection): - ''' + """ Controls the output of the simulation cell. For later analysis of the trajectory it is recommendable that the frequency of printing is the same as the one used for the trajectory file. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CELL_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CELL_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_CELL_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CELL_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_CELL_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_CORE_FORCES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -44218,191 +52144,214 @@ class x_cp2k_section_input_MOTION_PRINT_CORE_FORCES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_CORE_FORCES(MSection): - ''' + """ controls the output of the forces on cores when shell-model is used - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CORE_FORCES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the forces on cores. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_FORCES_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_CORE_FORCES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CORE_FORCES_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_CORE_FORCES_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -44410,213 +52359,241 @@ class x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY(MSection): - ''' + """ Controls the output of the trajectory of cores when the shell-model is used - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_CHARGE_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the BETA field of the PDB file - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_CHARGE_EXTENDED = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the very last field of the PDB file (starting from column 81) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_CHARGE_OCCUP = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the OCCUP field of the PDB file - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the trajectory of cores. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_TRAJECTORY_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -44624,191 +52601,216 @@ class x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES(MSection): - ''' + """ controls the output of the velocities of cores when the shell model is used - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the velocities of cores. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_CORE_VELOCITIES_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -44816,183 +52818,207 @@ class x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS(MSection): - ''' + """ Controls the output of the force mixing (FORCE_EVAL&QMMM&FORCE_MIXING) labels - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the force mixing labels. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCE_MIXING_LABELS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_FORCES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -45000,191 +53026,214 @@ class x_cp2k_section_input_MOTION_PRINT_FORCES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_FORCES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_FORCES(MSection): - ''' + """ Controls the output of the forces - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_FORCES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the forces. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_FORCES_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_FORCES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_FORCES_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_FORCES_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -45192,177 +53241,200 @@ class x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES(MSection): - ''' + """ Controls the output of the energies of the tworegular FORCE_EVALS in the MIXED methodprinted is step,time,Etot,E_F1,E_F2,CONS_QNT - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_MIXED_ENERGIES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_RESTART_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -45370,118 +53442,133 @@ class x_cp2k_section_input_MOTION_PRINT_RESTART_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_RESTART_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -45489,254 +53576,285 @@ class x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY(MSection): - ''' + """ Dumps unique restart files during the run keeping all of them.Most useful if recovery is needed at a later point. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_HISTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_RESTART(MSection): - ''' + """ Controls the dumping of the restart file during runs. By default keeps a short history of three restarts. See also RESTART_HISTORY - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_RESTART_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_BACKUP_COPIES = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of backup copies. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_RESTART_SPLIT_RESTART_FILE = Quantity( type=str, shape=[], - description=''' + description=""" If specified selected input sections, which are growing with the number of atoms in the system, are written to another restart file in binary format instead of the default restart file in human readable ASCII format. This split of the restart file may provide significant memory savings and an accelerated I/O for systems with a very large number of atoms - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_RESTART_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_RESTART_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_RESTART_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -45744,191 +53862,214 @@ class x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES(MSection): - ''' + """ controls the output of the forces on shells when shell-model is used - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the forces on shells. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_FORCES_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -45936,213 +54077,241 @@ class x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY(MSection): - ''' + """ Controls the output of the trajectory of shells when the shell-model is used - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_CHARGE_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the BETA field of the PDB file - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_CHARGE_EXTENDED = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the very last field of the PDB file (starting from column 81) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_CHARGE_OCCUP = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the OCCUP field of the PDB file - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the trajectory of shells. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_TRAJECTORY_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -46150,191 +54319,216 @@ class x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES(MSection): - ''' + """ Controls the output of the velocities of shells when the shell model is used - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the velocities of shells. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_SHELL_VELOCITIES_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_STRESS_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -46342,176 +54536,197 @@ class x_cp2k_section_input_MOTION_PRINT_STRESS_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_STRESS_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_STRESS(MSection): - ''' + """ Controls the output of the stress tensor - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_STRESS_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRESS_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_STRESS_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_STRESS_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_STRESS_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -46519,223 +54734,252 @@ class x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA(MSection): - ''' + """ Request the printing of special structure data during a structure optimization (in MOTION%PRINT) or when setting up a subsys (in SUBSYS%PRINT). - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_ANGLE = Quantity( type=str, shape=[], - description=''' + description=""" Print the angle formed by the atoms specified by their indices - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_DIHEDRAL_ANGLE = Quantity( type=str, shape=[], - description=''' + description=""" Print the dihedral angle between the planes defined by the atoms (a,b,c) and the atoms (b,c,d) specified by their indices - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_DISTANCE = Quantity( type=str, shape=[], - description=''' + description=""" Print the distance between the atoms a and b specified by their indices - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_POSITION_SCALED = Quantity( type=str, shape=[], - description=''' + description=""" Print the position vectors in scaled coordinates of the atoms specified by a list of their indices - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_POSITION = Quantity( type=str, shape=[], - description=''' + description=""" Print the position vectors in Cartesian coordinates of the atoms specified by a list of their indices - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_STRUCTURE_DATA_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_TRAJECTORY_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -46743,213 +54987,239 @@ class x_cp2k_section_input_MOTION_PRINT_TRAJECTORY_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_TRAJECTORY(MSection): - ''' + """ Controls the output of the trajectory - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_TRAJECTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_CHARGE_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the BETA field of the PDB file - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_CHARGE_EXTENDED = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the very last field of the PDB file (starting from column 81) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_CHARGE_OCCUP = Quantity( type=str, shape=[], - description=''' + description=""" Write the MM charges to the OCCUP field of the PDB file - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the trajectory. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRAJECTORY_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_TRAJECTORY_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_TRAJECTORY_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_TRAJECTORY_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -46957,177 +55227,200 @@ class x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR(MSection): - ''' + """ Dumps the translation vector applied along an MD (if any). Useful for postprocessing of QMMM trajectories in which the QM fragment is continuously centered in the QM box - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_TRANSLATION_VECTOR_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR_EACH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT_VELOCITIES_EACH(MSection): - ''' + """ This section specifies how often this proprety is printed.Each keyword inside this section is mapping to a specific iteration level and the value of each of these keywords is matched with the iteration level during the calculation. How to handle the @@ -47135,3328 +55428,3758 @@ class x_cp2k_section_input_MOTION_PRINT_VELOCITIES_EACH(MSection): (MD, GEO_OPT, etc..), though equal to 0, might print the last iteration). If an iteration level is specified that is not present in the flow of the calculation it is just ignored. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_BAND = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Band Calculation Steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_BSSE = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Basis Set Superposition Error (BSSE) Calculation - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_CELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Cell optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_EP_LIN_SOLVER = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Energy Perturbation (EP) linear solver - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_GEO_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Geometry optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_JUST_ENERGY = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for an ENERGY/ENERGY_FORCE calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_MD = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the MD steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_METADYNAMICS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the METADYNAMICS steps (number of hills added). - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_POWELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for POWELL based optimization steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_QS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the SCF Steps. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_REPLICA_EVAL = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the evaluation of the Replica Environment - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_ROT_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Rotational optimization steps in the Dimer Calculation. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_SHELL_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the Shell-Core distances optimization steps - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_SPLINE_FIND_COEFFS = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the solution of the coefficients of the splines - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_EACH_XAS_SCF = Quantity( type=str, shape=[], - description=''' + description=""" Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF Steps. - ''') + """, + ) class x_cp2k_section_input_MOTION_PRINT_VELOCITIES(MSection): - ''' + """ Controls the output of the velocities - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_PRINT_VELOCITIES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_FORMAT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the format of the output file for the velocities. - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_MOTION_PRINT_VELOCITIES_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) x_cp2k_section_input_MOTION_PRINT_VELOCITIES_EACH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_VELOCITIES_EACH'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_VELOCITIES_EACH"), + repeats=True, + ) class x_cp2k_section_input_MOTION_PRINT(MSection): - ''' + """ Controls the printing properties during an MD run - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_MOTION_PRINT_CELL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CELL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_CELL"), repeats=True + ) x_cp2k_section_input_MOTION_PRINT_CORE_FORCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CORE_FORCES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_CORE_FORCES"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_CORE_TRAJECTORY"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_CORE_VELOCITIES"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_FORCE_MIXING_LABELS" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_FORCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_FORCES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_FORCES"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_MIXED_ENERGIES"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_RESTART_HISTORY"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_RESTART"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_SHELL_FORCES"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_SHELL_TRAJECTORY"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_SHELL_VELOCITIES"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_STRESS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_STRESS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_STRESS"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_STRUCTURE_DATA"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_TRAJECTORY"), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_PRINT_TRANSLATION_VECTOR" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_PRINT_VELOCITIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT_VELOCITIES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT_VELOCITIES"), + repeats=True, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_BFGS_RESTART(MSection): - ''' + """ Controls the printing of Hessian Restart file - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_BFGS(MSection): - ''' + """ Provides parameters to tune the BFGS optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the file used to read the initial Hessian. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_RESTART_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Controls the reading of the initial Hessian from file. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_TRUST_RADIUS = Quantity( type=str, shape=[], - description=''' + description=""" Trust radius used in BFGS. Previously set to 0.1. Large values can lead to instabilities - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_USE_MODEL_HESSIAN = Quantity( type=str, shape=[], - description=''' + description=""" Uses a model Hessian as initial guess instead of a unit matrix. Should lead in general to improved convergence might be switched off for exotic cases - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_BFGS_USE_RAT_FUN_OPT = Quantity( type=str, shape=[], - description=''' + description=""" Includes a rational function optimization to determine the step. Previously default but did not improve convergence in many cases - ''') + """, + ) x_cp2k_section_input_MOTION_SHELL_OPT_BFGS_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_BFGS_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_SHELL_OPT_BFGS_RESTART"), + repeats=True, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_2PNT(MSection): - ''' + """ Provides parameters to tune the line search for the two point based line search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_2PNT_LINMIN_GRAD_ONLY = Quantity( type=str, shape=[], - description=''' + description=""" Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients). - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_2PNT_MAX_ALLOWED_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Max allowed value for the line search step. - ''') + """, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD(MSection): - ''' + """ Provides parameters to tune the line search for the gold search. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD_BRACK_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Limit in 1D bracketing during line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD_BRENT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of iterations in brent algorithm (used for the line search in Conjugated Gradients Optimization) - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD_BRENT_TOL = Quantity( type=str, shape=[], - description=''' + description=""" Tolerance requested during Brent line search in Conjugate Gradients Optimization. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD_INITIAL_STEP = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size used, e.g. for bracketing or minimizers. Might need to be reduced for systems with close contacts - ''') + """, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH(MSection): - ''' + """ Provides parameters to tune the line search during the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" 1D line search algorithm to be used with the CG optimizer, in increasing order of robustness and cost. - ''') + """, + ) x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_2PNT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_2PNT'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_2PNT" + ), + repeats=True, + ) x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH_GOLD" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_CG(MSection): - ''' + """ Provides parameters to tune the conjugate gradient optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_CG_FLETCHER_REEVES = Quantity( type=str, shape=[], - description=''' + description=""" Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_CG_MAX_STEEP_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of steepest descent steps before starting the conjugate gradients optimization. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_CG_RESTART_LIMIT = Quantity( type=str, shape=[], - description=''' + description=""" Cosine of the angle between two consecutive searching directions. If the angle during a CG optimization is less than the one corresponding to to the RESTART_LIMIT the CG is reset and one step of steepest descent is performed. - ''') + """, + ) x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_SHELL_OPT_CG_LINE_SEARCH" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_SHELL_OPT_LBFGS(MSection): - ''' + """ Provides parameters to tune the limited memory BFGS (LBFGS) optimization - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_LBFGS_MAX_F_PER_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of force evaluations per iteration(used for the line search) - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_LBFGS_MAX_H_RANK = Quantity( type=str, shape=[], - description=''' + description=""" Maximum rank (and consequently size) of the approximate Hessian matrix used by the LBFGS optimizer. Larger values (e.g. 30) will accelerate the convergence behaviour at the cost of a larger memory consumption. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_LBFGS_WANTED_PROJ_GRADIENT = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested norm threshold of the gradient multiplied by the approximate Hessian. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_LBFGS_WANTED_REL_F_ERROR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium (overrides the general ones):Requested relative error on the objective functionof the optimizer (the energy) - ''') + """, + ) class x_cp2k_section_input_MOTION_SHELL_OPT(MSection): - ''' + """ This section sets the environment for the optimization of the shell-core distances that might turn to be necessary along a MD run using a shell-model potential. The optimization procedure is activated when at least one of the shell-core pairs becomes too elongated, i.e. when the assumption of point dipole is not longer valid. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_SHELL_OPT_MAX_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_MAX_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the maximum force component of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum number of geometry optimization steps. One step might imply several force evaluations for the CG and LBFGS optimizers. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_OPTIMIZER = Quantity( type=str, shape=[], - description=''' + description=""" Specify which method to use to perform a geometry optimization. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_RMS_DR = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_RMS_FORCE = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the root mean square (RMS) force of the current configuration. - ''') + """, + ) x_cp2k_input_MOTION_SHELL_OPT_STEP_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" The starting step value for the SHELL_OPT module. - ''') + """, + ) x_cp2k_section_input_MOTION_SHELL_OPT_BFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_BFGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_SHELL_OPT_BFGS"), + repeats=True, + ) x_cp2k_section_input_MOTION_SHELL_OPT_CG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_CG'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_SHELL_OPT_CG"), + repeats=True, + ) x_cp2k_section_input_MOTION_SHELL_OPT_LBFGS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT_LBFGS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_SHELL_OPT_LBFGS"), + repeats=True, + ) class x_cp2k_section_input_MOTION_TMC_MOVE_TYPE(MSection): - ''' + """ This section specifies the TMC move type, and its properties. Selectable types are: ATOM_TRANS atom translation, MOL_TRANS molecule translation, MOL_ROT molecule rotation, PROT_REORDER proton reordering, PT_SWAP Parallel Tempering swap, VOL_MOVE volume change, ATOM_SWAP swaps two atoms of different type. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_MOVE_TYPE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the move. Up to now only used for the atom swap. - ''') + """, + ) x_cp2k_input_MOTION_TMC_MOVE_TYPE_INIT_ACC_PROB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the initial probability of accepting the move. - ''') + """, + ) x_cp2k_input_MOTION_TMC_MOVE_TYPE_PROB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the probability of the move (considering the ration between the selected moves) - ''') + """, + ) x_cp2k_input_MOTION_TMC_MOVE_TYPE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The name of the move type described in this section. - ''') + """, + ) x_cp2k_input_MOTION_TMC_MOVE_TYPE_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the size of the move:ATOM_TRANS [A], MOL_TRANS [A], MOL_ROT [degree], PROT_REORDER [], VOL_MOVE [A], ATOM_SWAP - ''') + """, + ) class x_cp2k_section_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE(MSection): - ''' + """ This section specifies the TMC move type, and its properties. Selectable types are: ATOM_TRANS atom translation, MOL_TRANS molecule translation, MOL_ROT molecule rotation, PROT_REORDER proton reordering, PT_SWAP Parallel Tempering swap, VOL_MOVE volume change, ATOM_SWAP swaps two atoms of different type. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kinds involved in the move. Up to now only used for the atom swap. - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE_INIT_ACC_PROB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the initial probability of accepting the move. - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE_PROB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the probability of the move (considering the ration between the selected moves) - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The name of the move type described in this section. - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the size of the move:ATOM_TRANS [A], MOL_TRANS [A], MOL_ROT [degree], PROT_REORDER [], VOL_MOVE [A], ATOM_SWAP - ''') + """, + ) class x_cp2k_section_input_MOTION_TMC_NMC_MOVES(MSection): - ''' + """ This section specifies the TMC move types, which are performed within the nested Monte Carlo (NMC). thus using the approximate potential. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_NMC_MOVES_INIT_ACC_PROB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the initial probability of accepting the move. - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_NMC_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" input file name for the approximate potential for Nested Monte Carlo. - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_NR_NMC_STEPS = Quantity( type=str, shape=[], - description=''' + description=""" the number of Nested Mont Carlo moves with in one MC move should be huge enough to reach euilibrium state - ''') + """, + ) x_cp2k_input_MOTION_TMC_NMC_MOVES_PROB = Quantity( type=str, shape=[], - description=''' + description=""" Defines the probability of the NMC move (considering the ration between the selected other moves)the probabilities of the move types in the NMC section defines only the weight within the NMC steps - ''') + """, + ) x_cp2k_section_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC_NMC_MOVES_MOVE_TYPE"), + repeats=True, + ) class x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_CHARGE(MSection): - ''' + """ This section specifies the charge of the MM atoms - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_CHARGE_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind of the charge. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_CHARGE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the charge of the MM atom in electron charge unit. - ''') + """, + ) class x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES_CHARGE(MSection): - ''' + """ This section specifies the charge of the MM atoms - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_CHARGE_ATOM = Quantity( type=str, shape=[], - description=''' + description=""" Defines the atomic kind of the charge. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_CHARGE_CHARGE = Quantity( type=str, shape=[], - description=''' + description=""" Defines the charge of the MM atom in electron charge unit. - ''') + """, + ) class x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES(MSection): - ''' + """ Analysing the Markov Chain elments with the specified methods, reading form default or specified files - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_CELL_FILE = Quantity( type=str, shape=[], - description=''' + description=""" file name for analysing the cell file - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_CLASSICAL_DIPOLE_MOMENTS = Quantity( type=str, shape=[], - description=''' + description=""" calculates the classical dipole Moment. Following flag specifies if they should be written. Class. Dip. Mom. are also used to unfold the exact dipole moment. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Mass density in the simulation cell, or if specified in sub cubes - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_DEVIATION = Quantity( type=str, shape=[], - description=''' + description=""" Calculates the deviation of the position from the last configuration - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_DIPOLE_ANALYSIS = Quantity( type=str, shape=[], - description=''' + description=""" Enables analysis of dipole moments, espacially dielectric constant. An additional type can be specified, e.g. analyzing ice structures.using SYM_XYZ also dipoles (-x,y,z) .. .. (-x,-y,z).... (-x,-y-z) are regarded, only use it if this configurations have all the same energy. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_DIPOLE_FILE = Quantity( type=str, shape=[], - description=''' + description=""" file name for analysing the dipole file - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_DIRECTORIES = Quantity( type=str, shape=[], - description=''' + description=""" Analysing multiple directories, created by standard parallel MC (e.g. using TMC farming - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_END_ELEM = Quantity( type=str, shape=[], - description=''' + description=""" end analysis at element with number # - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_FORCE_ENV_FILE = Quantity( type=str, shape=[], - description=''' + description=""" input file name for force env, to get initial configuration with dimensions and cell - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_G_R = Quantity( type=str, shape=[], - description=''' + description=""" Radial Distribution Function for each pair of atomsusing the amount of specified bins within MAX(cell_lenght)/2 - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_NR_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" the number of different temperature for parallel tempering - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_POSITION_FILE = Quantity( type=str, shape=[], - description=''' + description=""" file name for analysing the position file - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_PREFIX_ANA_FILES = Quantity( type=str, shape=[], - description=''' + description=""" specifies a prefix for all analysis files. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Enables/disables the reading and writing of analysis restart files - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_START_ELEM = Quantity( type=str, shape=[], - description=''' + description=""" start analysis at element with number # - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_FILES_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" one temperatue OR for parallel tempering: Tmin Tmax or each temperature T1 T2 T3 ... If every single temperature is specified, do NOT use keyword NR_TEMPERATURE - ''') + """, + ) x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES_CHARGE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES_CHARGE" + ), + repeats=True, + ) class x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS(MSection): - ''' + """ Analysing the Markov Chain elments with the specified methods - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_CLASSICAL_DIPOLE_MOMENTS = Quantity( type=str, shape=[], - description=''' + description=""" calculates the classical dipole Moment. Following flag specifies if they should be written. Class. Dip. Mom. are also used to unfold the exact dipole moment. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_DENSITY = Quantity( type=str, shape=[], - description=''' + description=""" Mass density in the simulation cell, or if specified in sub cubes - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_DEVIATION = Quantity( type=str, shape=[], - description=''' + description=""" Calculates the deviation of the position from the last configuration - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_DIPOLE_ANALYSIS = Quantity( type=str, shape=[], - description=''' + description=""" Enables analysis of dipole moments, espacially dielectric constant. An additional type can be specified, e.g. analyzing ice structures.using SYM_XYZ also dipoles (-x,y,z) .. .. (-x,-y,z).... (-x,-y-z) are regarded, only use it if this configurations have all the same energy. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_G_R = Quantity( type=str, shape=[], - description=''' + description=""" Radial Distribution Function for each pair of atomsusing the amount of specified bins within MAX(cell_lenght)/2 - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_PREFIX_ANA_FILES = Quantity( type=str, shape=[], - description=''' + description=""" specifies a prefix for all analysis files. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TMC_ANALYSIS_RESTART = Quantity( type=str, shape=[], - description=''' + description=""" Enables/disables the reading and writing of analysis restart files - ''') + """, + ) x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_CHARGE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_CHARGE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_CHARGE"), + repeats=True, + ) class x_cp2k_section_input_MOTION_TMC(MSection): - ''' + """ A parallelized MC algorithm, presampling the configurations, espacially the Markov chain elements - ''' + """ m_def = Section(validate=False) x_cp2k_input_MOTION_TMC_ALL_CONF_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" file name for printing every single calculated configuration (e.g. for fitting). - ''') + """, + ) x_cp2k_input_MOTION_TMC_DOT_TREE = Quantity( type=str, shape=[], - description=''' + description=""" file name for GrapgViz dot file - ''') + """, + ) x_cp2k_input_MOTION_TMC_ENERGY_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" input file name for the exact potential energy calculation. - ''') + """, + ) x_cp2k_input_MOTION_TMC_ESIMATE_ACC_PROB = Quantity( type=str, shape=[], - description=''' + description=""" set the estimation of the acceptance probability using run time information of the energy - ''') + """, + ) x_cp2k_input_MOTION_TMC_GROUP_ANLYSIS_NR = Quantity( type=str, shape=[], - description=''' + description=""" amount of groups (cores) for analysing the configurations - ''') + """, + ) x_cp2k_input_MOTION_TMC_GROUP_CC_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" amount of of CPUs per group for configurational change - ''') + """, + ) x_cp2k_input_MOTION_TMC_GROUP_ENERGY_NR = Quantity( type=str, shape=[], - description=''' + description=""" amount of groups for exact energy calculation - ''') + """, + ) x_cp2k_input_MOTION_TMC_GROUP_ENERGY_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" amount of CPUs per group for energy calculation - ''') + """, + ) x_cp2k_input_MOTION_TMC_INFO_OUT_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" the number the amount of calculated configurations between to output printings. - ''') + """, + ) x_cp2k_input_MOTION_TMC_MOVE_CENTER_OF_MASS = Quantity( type=str, shape=[], - description=''' + description=""" Moves the center of mass of defined molecules (in volume moves) - ''') + """, + ) x_cp2k_input_MOTION_TMC_NR_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" the number of different temperature for parallel tempering - ''') + """, + ) x_cp2k_input_MOTION_TMC_NUM_MC_ELEM = Quantity( type=str, shape=[], - description=''' + description=""" the minimum Markov Chain elements, to be sampled - ''') + """, + ) x_cp2k_input_MOTION_TMC_NUM_MV_ELEM_IN_CELL = Quantity( type=str, shape=[], - description=''' + description=""" the number of elements (atoms or molecules) moves in cell or sub box.if 0 all elements are moved once in a MC move - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRESSURE = Quantity( type=str, shape=[], - description=''' + description=""" enables NPT calculation with specified constant pressure [bar] - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_CELL = Quantity( type=str, shape=[], - description=''' + description=""" printing the cell vectors of the Markov Chain elements - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_COORDS = Quantity( type=str, shape=[], - description=''' + description=""" printing coordinates of the Markov Chain elements - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_DIPOLE = Quantity( type=str, shape=[], - description=''' + description=""" enables the calculation and printing the exact cell dipoles (only for QS methods) - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_ENERGIES = Quantity( type=str, shape=[], - description=''' + description=""" printing the different calculated energies (approximated, scf and exact) - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_FORCES = Quantity( type=str, shape=[], - description=''' + description=""" printing forces of the Markov Chain elements - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_ONLY_ACC = Quantity( type=str, shape=[], - description=''' + description=""" printing only accepted elements of the Markov Chain. - ''') + """, + ) x_cp2k_input_MOTION_TMC_PRINT_TEST_OUTPUT = Quantity( type=str, shape=[], - description=''' + description=""" printing different values for regtest comparison - ''') + """, + ) x_cp2k_input_MOTION_TMC_RESTART_IN = Quantity( type=str, shape=[], - description=''' + description=""" if existing use the last restart file - ''') + """, + ) x_cp2k_input_MOTION_TMC_RESTART_OUT = Quantity( type=str, shape=[], - description=''' + description=""" Defines the frequency to write restart files. If no frequency is specified (lone keyword) the restart file is written at the end (only). If the value is 0, no restart file is written at all. The frequency specifies is related to the calculated Markov chain elements - ''') + """, + ) x_cp2k_input_MOTION_TMC_RESULT_LIST_IN_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" enables the storing of the whole Markov Chain - ''') + """, + ) x_cp2k_input_MOTION_TMC_RND_DETERMINISTIC = Quantity( type=str, shape=[], - description=''' + description=""" the initialisation number for the random number generator - ''') + """, + ) x_cp2k_input_MOTION_TMC_SPECULATIVE_CANCELING = Quantity( type=str, shape=[], - description=''' + description=""" enables or disables the speculative canceling. If we have further knowledge of acceptance probabilities using parent acceptance or the estimated energy. - ''') + """, + ) x_cp2k_input_MOTION_TMC_SUB_BOX = Quantity( type=str, shape=[], - description=''' + description=""" specifies the size ot the sub box. Standard moves only within subbox of random position, to compensate the potential difference of the approximate potential. - ''') + """, + ) x_cp2k_input_MOTION_TMC_TASK_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Select specialized types. Selectable:IDEAL_GAS (constant configuration energy E=0.0), - ''') + """, + ) x_cp2k_input_MOTION_TMC_TEMPERATURE = Quantity( type=str, shape=[], - description=''' + description=""" one temperatue OR for parallel tempering: Tmin Tmax or each temperature T1 T2 T3 ... If every single temperature is specified, do NOT use keyword NR_TEMPERATURE - ''') + """, + ) x_cp2k_input_MOTION_TMC_USE_SCF_ENERGY_INFO = Quantity( type=str, shape=[], - description=''' + description=""" enables or disables the usage of SCF energy information for estimating the acceptance probability. - ''') + """, + ) x_cp2k_input_MOTION_TMC_VOLUME_ISOTROPIC = Quantity( type=str, shape=[], - description=''' + description=""" volume move is equal in each direction - ''') + """, + ) x_cp2k_section_input_MOTION_TMC_MOVE_TYPE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_MOVE_TYPE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC_MOVE_TYPE"), + repeats=True, + ) x_cp2k_section_input_MOTION_TMC_NMC_MOVES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_NMC_MOVES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC_NMC_MOVES"), + repeats=True, + ) x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS_FILES"), + repeats=True, + ) x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC_TMC_ANALYSIS"), + repeats=True, + ) class x_cp2k_section_input_MOTION(MSection): - ''' + """ This section defines a set of tool connected with the motion of the nuclei. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_MOTION_BAND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_BAND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_BAND"), repeats=True + ) x_cp2k_section_input_MOTION_CELL_OPT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CELL_OPT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CELL_OPT"), repeats=True + ) x_cp2k_section_input_MOTION_CONSTRAINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_CONSTRAINT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_CONSTRAINT"), repeats=True + ) x_cp2k_section_input_MOTION_DRIVER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_DRIVER'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_DRIVER"), repeats=True + ) x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_FLEXIBLE_PARTITIONING"), + repeats=True, + ) x_cp2k_section_input_MOTION_FREE_ENERGY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_FREE_ENERGY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_FREE_ENERGY"), + repeats=True, + ) x_cp2k_section_input_MOTION_GEO_OPT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_GEO_OPT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_GEO_OPT"), repeats=True + ) x_cp2k_section_input_MOTION_MC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MC"), repeats=True + ) x_cp2k_section_input_MOTION_MD = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_MD'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_MD"), repeats=True + ) x_cp2k_section_input_MOTION_PINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PINT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PINT"), repeats=True + ) x_cp2k_section_input_MOTION_PRINT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_PRINT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_PRINT"), repeats=True + ) x_cp2k_section_input_MOTION_SHELL_OPT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_SHELL_OPT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_SHELL_OPT"), repeats=True + ) x_cp2k_section_input_MOTION_TMC = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION_TMC'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION_TMC"), repeats=True + ) class x_cp2k_section_input_MULTIPLE_FORCE_EVALS(MSection): - ''' + """ Describes how to handle multiple force_evals. - ''' + """ m_def = Section(validate=False) x_cp2k_input_MULTIPLE_FORCE_EVALS_FORCE_EVAL_ORDER = Quantity( type=str, shape=[], - description=''' + description=""" Specify the orders of the different force_eval. When using a MIXED force_eval this does not need to be specified in this list, because it that takes into account only the real energy contributions - ''') + """, + ) x_cp2k_input_MULTIPLE_FORCE_EVALS_MULTIPLE_SUBSYS = Quantity( type=str, shape=[], - description=''' + description=""" Specify if force_eval have different subsys. In case they share the same subsys, it needs to be specified only in the MIXED force_eval (if using MIXED) or in the force_eval corresponding to first force_eval of the previous order (when not using MIXED). - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS(MSection): - ''' + """ specicifies contraints for the exponents to be fitted. Only a single constraint can be applied to an exponent - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS_BOUNDARIES = Quantity( type=str, shape=[], - description=''' + description=""" Defines the boundaries to which the optimization is restricted. First value is the lower bound, second value is the upper bound. - ''') - - x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS_MAX_VAR_FRACTION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS_MAX_VAR_FRACTION = ( + Quantity( + type=str, + shape=[], + description=""" Defines the maximum fractionr by which the exponent is allowed to vary. e.g. 0.5 allows the exp to vary by 0.5*exp in both directions. - ''') + """, + ) + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS_USE_EXP = Quantity( type=str, shape=[], - description=''' + description=""" Defines the exponent to be constraint. The two integers indicate the set number and i'th exponent. The value -1 can be used to mark all sets/expoenents in a set. - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS(MSection): - ''' + """ This section can be used to create subsets of a basis which will be fitted at the same time. This is especially useful if connected bsis sets e.g. TZVP, DZVP, SZV should be fitted. - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS_REFERENCE_SET = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the reference basis ID which is used as template to create the new set. The original basis has ID 0. All follwing sets are counted in order as specified in the Input. The decriptors always assume the structure of the input basis set. - ''') - - x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS_REMOVE_CONTRACTION = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS_REMOVE_CONTRACTION = ( + Quantity( + type=str, + shape=[], + description=""" Can be used to remove a contraction from the reference basis set. The contraction is speciefied by set number, angular momentum and number of contraction. The decriptors always assume the structure of the input basis set. - ''') + """, + ) + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS_REMOVE_SET = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to remove a set from the reference basis set. - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND(MSection): - ''' + """ specicifies the atomic kinds to be fitted and the basis sets associated with the kind. - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_BASIS_SET = Quantity( type=str, shape=[], - description=''' + description=""" The name of the basis set for the kind. Has to be specified in BASIS_TEMPLATE_FILE. - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_INITIAL_DEGREES_OF_FREEDOM = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the initial degrees of freedom in the basis optimization.This can be used to make further specifications easier - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" The name of the kind described in this section. - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_SWITCH_COEFF_STATE = Quantity( type=str, shape=[], - description=''' + description=""" Allows to switch the state of a given coefficient from current state (varibale/fixed)) to the opposite state. The three integers indicate the set number, the angular momentum i'th contraction and i'th coefficient - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_SWITCH_CONTRACTION_STATE = Quantity( type=str, shape=[], - description=''' + description=""" Allows to switch the state of a given contraction from current state (varibale/fixed)) to the opposite state. The three integers indicate the set number, the angular momentum and i'th contraction - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_SWITCH_EXP_STATE = Quantity( type=str, shape=[], - description=''' + description=""" Allows to switch the state of a given exponent from current state (varibale/fixed)) to the opposite state. The two integers indicate the set number and i'th exponent - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_FIT_KIND_SWITCH_SET_STATE = Quantity( type=str, shape=[], - description=''' + description=""" Allows to switch the states of in a set from current state (varibale/fixed)) to the opposite state. The two integers indicate the affected part (0=ALL,1=EXPS,2=COEFF) and i'th set - ''') + """, + ) x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_CONSTRAIN_EXPONENTS" + ), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND_DERIVED_BASIS_SETS" + ), + repeats=True, + ) class x_cp2k_section_input_OPTIMIZE_BASIS_OPTIMIZATION(MSection): - ''' + """ sets the parameters for optimizition, output frequency and restarts - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_BASIS_OPTIMIZATION_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Final accuracy requested in optimization (RHOEND) - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_OPTIMIZATION_MAX_FUN = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of function evaluations - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_OPTIMIZATION_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size for search algorithm (RHOBEG) - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_BASIS_TRAINING_FILES(MSection): - ''' + """ specicifies the location in which the files necessary for fitting procedure are located. Each Training set needs a reptition of this section. - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_BASIS_TRAINING_FILES_DIRECTORY = Quantity( type=str, shape=[], - description=''' + description=""" the directory in which the files are placed - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_TRAINING_FILES_INPUT_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the input file used to run the original calcuation - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_BASIS(MSection): - ''' + """ describes a basis optimization job, in which an ADMM like approach is used to find the best exponents and/or coefficients to match a given training set. - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_BASIS_BASIS_COMBINATIONS = Quantity( type=str, shape=[], - description=''' + description=""" If multiple atomic kinds are fitted at the same time, this keyword allows to specify which basis sets should be used together in optimization (underived set ID=0). If skipped all combinations are used. The order is taken as the kinds and sets are specified in the input - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_BASIS_OUTPUT_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Name of the basis set file containing the optimized basis - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_BASIS_TEMPLATE_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Name of the basis set file, containing the structure of the new basis set - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_BASIS_WORK_FILE = Quantity( type=str, shape=[], - description=''' + description=""" Name of the basis set file which is created to be read as initial guess - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_CONDITION_WEIGHT = Quantity( type=str, shape=[], - description=''' + description=""" This keyword allows to give different weight factors to the condition number of different basis combinations (LOG(cond) is used). The first entry corresponds to the original basis sets. Every further value is assigned to the combinations in the order given for BASIS_COMBINATIONS. - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_GROUP_PARTITION = Quantity( type=str, shape=[], - description=''' + description=""" Allows the specification of the group mpi group sizes in parallel runs. If less Groups than tasks are speciefied, consecutive calculations Will be assigned to one group (derived basis sets and then training sets) If keyword is skipped, equal group sizes will be generated trying to fit all calculations. - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_RESIDUUM_WEIGHT = Quantity( type=str, shape=[], - description=''' + description=""" This keyword allows to give different weight factors to the residuum of the different basis combinations. The first entry corresponds to the original basis sets. Every further value is assigned to the combinations in the order given for BASIS_COMBINATIONS. - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_USE_CONDITION_NUMBER = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether condition number should be part of optimization or not - ''') + """, + ) x_cp2k_input_OPTIMIZE_BASIS_WRITE_FREQUENCY = Quantity( type=str, shape=[], - description=''' + description=""" Frequency at which the intermediate results should be written - ''') + """, + ) x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_BASIS_FIT_KIND"), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_BASIS_OPTIMIZATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_BASIS_OPTIMIZATION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_BASIS_OPTIMIZATION"), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_BASIS_TRAINING_FILES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_BASIS_TRAINING_FILES'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_BASIS_TRAINING_FILES"), + repeats=True, + ) class x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES(MSection): - ''' + """ A comparison of energies between fit and reference - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + ) + + x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES(MSection): - ''' + """ A comparison of forces between fit and reference - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') - - x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES_SECTION_PARAMETERS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES_SECTION_PARAMETERS = ( + Quantity( + type=str, + shape=[], + description=""" Level starting at which this proprety is printed - ''') + """, + ) + ) class x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING(MSection): - ''' + """ Specify the force matching input. - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_ENERGY_WEIGHT = Quantity( type=str, shape=[], - description=''' + description=""" Relative weight of the energy RMSD vs the force RMSD - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_FRAME_COUNT = Quantity( type=str, shape=[], - description=''' + description=""" Use at most FRAME_COUNT frames from the reference trajectory, adjusting the stride to have them as fas apart as possible (all=-1). - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_FRAME_START = Quantity( type=str, shape=[], - description=''' + description=""" starting frame to be used from the reference trajectory - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_FRAME_STOP = Quantity( type=str, shape=[], - description=''' + description=""" final frame to be used from the reference trajectory (all=-1) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_FRAME_STRIDE = Quantity( type=str, shape=[], - description=''' + description=""" stride when using the reference trajectory - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_GROUP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Gives the preferred size of a working group, groups will always be equal or larger than this size.Usually this should take the number of cores per socket into account for good performance. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_OPTIMIZE_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the input file which contains the parameters to be optimized - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_REF_CELL_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the reference cell - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_REF_FORCE_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the reference forces, should also contain the energy - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_REF_TRAJ_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" the filename of the reference coordinates. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_SHIFT_AVERAGE = Quantity( type=str, shape=[], - description=''' + description=""" Shift averages of the energies before computing energy RMSD. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_SHIFT_MM = Quantity( type=str, shape=[], - description=''' + description=""" Shift of the fit energies applied before computing energy RMSD. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_FORCE_MATCHING_SHIFT_QM = Quantity( type=str, shape=[], - description=''' + description=""" Shift of the reference energies applied before computing energy RMSD. - ''') + """, + ) x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_ENERGIES" + ), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING_COMPARE_FORCES" + ), + repeats=True, + ) class x_cp2k_section_input_OPTIMIZE_INPUT_HISTORY(MSection): - ''' + """ writes a history of the function value and parameters - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_HISTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_HISTORY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_HISTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_HISTORY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_HISTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_INPUT_RESTART(MSection): - ''' + """ writes an input file that can be used to restart - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_RESTART_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_RESTART_BACKUP_COPIES = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the maximum index of backup copies. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_RESTART_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_RESTART_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_RESTART_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_RESTART_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_INPUT_VARIABLE(MSection): - ''' + """ Defines initial values for variables and their labels - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_VARIABLE_FIXED = Quantity( type=str, shape=[], - description=''' + description=""" Is this variable fixed or should it be optimized. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_VARIABLE_LABEL = Quantity( type=str, shape=[], - description=''' + description=""" The label used in the input file, i.e. ${LABEL} will be replaced by the VALUE specified. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_VARIABLE_VALUE = Quantity( type=str, shape=[], - description=''' + description=""" Initial value of the variable - ''') + """, + ) class x_cp2k_section_input_OPTIMIZE_INPUT(MSection): - ''' + """ describes an input optimization job, in which parameters in input files get optimized. - ''' + """ m_def = Section(validate=False) x_cp2k_input_OPTIMIZE_INPUT_ACCURACY = Quantity( type=str, shape=[], - description=''' + description=""" Final accuracy requested in optimization (RHOEND) - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_ITER_START_VAL = Quantity( type=str, shape=[], - description=''' + description=""" Used for restarting, starting value of the iteration - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_MAX_FUN = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of function evaluations - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" What kind of input optimization to perform. - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_RANDOMIZE_VARIABLES = Quantity( type=str, shape=[], - description=''' + description=""" Percentage randomization of the free variables applied initially - ''') + """, + ) x_cp2k_input_OPTIMIZE_INPUT_STEP_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" Initial step size for search algorithm (RHOBEG) - ''') + """, + ) x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_INPUT_FORCE_MATCHING"), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_INPUT_HISTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT_HISTORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_INPUT_HISTORY"), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_INPUT_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_INPUT_RESTART"), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_INPUT_VARIABLE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT_VARIABLE'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_INPUT_VARIABLE"), + repeats=True, + ) class x_cp2k_section_input_SWARM_GLOBAL_OPT_HISTORY(MSection): - ''' + """ Section controling the history of visited minima and how minima are recognized at a later point. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_GLOBAL_OPT_HISTORY_ENERGY_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" If the difference of two energies is below this threshold they are considert equal. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_HISTORY_FINGERPRINT_PRECISION = Quantity( type=str, shape=[], - description=''' + description=""" If the euclidean distance of two fingerprints is below this threshold, they are considert equal. - ''') + """, + ) class x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY(MSection): - ''' + """ Printkey to controll the writting of the minima trajectory. This trajectory contains all encountered local minima. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') - - x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_LOG_PRINT_KEY = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_LOG_PRINT_KEY = ( + Quantity( + type=str, + shape=[], + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) class x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING(MSection): - ''' + """ Section controls Minima Crawling run. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_ESCAPE_HISTORY_LENGTH = Quantity( type=str, shape=[], - description=''' + description=""" Number of escapes averaged for scoring of minima. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_TEMPDIST_INIT_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Initial width of temperature distribution. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_TEMPDIST_UPDATE_HEIGHT = Quantity( type=str, shape=[], - description=''' + description=""" Height of gaussian used to update temperature distribution. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_TEMPDIST_UPDATE_WIDTH = Quantity( type=str, shape=[], - description=''' + description=""" Width of gaussian used to update temperature distribution. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_TEMPERATURE_INIT = Quantity( type=str, shape=[], - description=''' + description=""" Initial temperature in Kelvin - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_TEMPSTEP_BASE = Quantity( type=str, shape=[], - description=''' + description=""" Base used to calculate temperature steps base**n - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_TEMPSTEP_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of temperature steps. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_WORKER_PER_MINIMA = Quantity( type=str, shape=[], - description=''' + description=""" Maximum number of active workers per Minima. - ''') + """, + ) x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING_MINIMA_TRAJECTORY" + ), + repeats=True, + ) class x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING(MSection): - ''' + """ Section controlling the Minima Hopping method. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_ALPHA_1 = Quantity( type=str, shape=[], - description=''' + description=""" Factor used to decrease acceptance energy, when minima was accepted, should be smaller than 1. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_ALPHA_2 = Quantity( type=str, shape=[], - description=''' + description=""" Factor used to increase acceptance energy, when minima was rejected, should be larger than 1. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_BETA_1 = Quantity( type=str, shape=[], - description=''' + description=""" Factor used to increase temperature when escape failed, should be larger than 1. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_BETA_2 = Quantity( type=str, shape=[], - description=''' + description=""" Factor used to increase temperature when escape found known minima, should be larger than 1. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_BETA_3 = Quantity( type=str, shape=[], - description=''' + description=""" Factor used to decrease temperature when escape succeeded, should be smaller than 1. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_E_ACCEPT_INIT = Quantity( type=str, shape=[], - description=''' + description=""" Initial value of acceptance energy - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_SHARE_HISTORY = Quantity( type=str, shape=[], - description=''' + description=""" If set all worker will use a single share history of visited minima. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING_TEMPERATURE_INIT = Quantity( type=str, shape=[], - description=''' + description=""" Initially temperature in Kelvin - ''') + """, + ) class x_cp2k_section_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY(MSection): - ''' + """ Printkey to controll the writting of the progress trajectory. This trajectory contains the minima, which are lower in energy than the by then lowerest. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') - - x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_COMMON_ITERATION_LEVELS = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_COMMON_ITERATION_LEVELS = ( + Quantity( + type=str, + shape=[], + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) + ) x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY_UNIT = Quantity( type=str, shape=[], - description=''' + description=""" Specify the unit of measurement for the quantity in output. All available CP2K units can be used. - ''') + """, + ) class x_cp2k_section_input_SWARM_GLOBAL_OPT(MSection): - ''' + """ Section to control global geometry optimizations. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_GLOBAL_OPT_BUMP_STEPS_DOWNWARDS = Quantity( type=str, shape=[], - description=''' + description=""" Number of MD steps with potential energy decreases required for a bump. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_BUMP_STEPS_UPWARDS = Quantity( type=str, shape=[], - description=''' + description=""" Number of MD steps with potential energy increases required for a bump. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_E_TARGET = Quantity( type=str, shape=[], - description=''' + description=""" Target Energy, the optimization will quit once a lower potential energy is reached. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_FRAGMENTATION_THRESHOLD = Quantity( type=str, shape=[], - description=''' + description=""" Threshold for atom distance used for detecting fragmentation of clusters. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_MD_BUMPS_MAX = Quantity( type=str, shape=[], - description=''' + description=""" Number of bumps in potential energy after which MD runs ends. - ''') + """, + ) x_cp2k_input_SWARM_GLOBAL_OPT_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Methods to use for optimization. - ''') + """, + ) x_cp2k_section_input_SWARM_GLOBAL_OPT_HISTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM_GLOBAL_OPT_HISTORY'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_SWARM_GLOBAL_OPT_HISTORY"), + repeats=True, + ) x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_CRAWLING" + ), + repeats=True, + ) x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_SWARM_GLOBAL_OPT_MINIMA_HOPPING" + ), + repeats=True, + ) x_cp2k_section_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_SWARM_GLOBAL_OPT_PROGRESS_TRAJECTORY" + ), + repeats=True, + ) class x_cp2k_section_input_SWARM(MSection): - ''' + """ Section to control swarm runs. The swarm framework provides a common ground for master/worker algorithms. - ''' + """ m_def = Section(validate=False) x_cp2k_input_SWARM_BEHAVIOR = Quantity( type=str, shape=[], - description=''' + description=""" Which behaviour should control the swarm. - ''') + """, + ) x_cp2k_input_SWARM_MAX_ITER = Quantity( type=str, shape=[], - description=''' + description=""" The maximum number iterations the master should perform - ''') + """, + ) x_cp2k_input_SWARM_NUMBER_OF_WORKERS = Quantity( type=str, shape=[], - description=''' + description=""" Number of workers used for swarm. - ''') + """, + ) x_cp2k_input_SWARM_REPLAY_COMMUNICATION_LOG = Quantity( type=str, shape=[], - description=''' + description=""" Filename of communication log of previous run. Use this to restart a swarm. - ''') + """, + ) x_cp2k_section_input_SWARM_GLOBAL_OPT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM_GLOBAL_OPT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_SWARM_GLOBAL_OPT"), repeats=True + ) class x_cp2k_section_input_TEST_CP_DBCSR(MSection): - ''' + """ Benchmark and test the cp_dbcsr routines - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_CP_DBCSR_ALPHA = Quantity( type=str, shape=[], - description=''' + description=""" Multiplication factor - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_ALWAYS_CHECKSUM = Quantity( type=str, shape=[], - description=''' + description=""" perform a checksum after each multiplication - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_ASPARSITY = Quantity( type=str, shape=[], - description=''' + description=""" Sparsity of A matrix - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_ATYPE = Quantity( type=str, shape=[], - description=''' + description=""" Matrix A type - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_BETA = Quantity( type=str, shape=[], - description=''' + description=""" Product premultiplication factor - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_BS_K = Quantity( type=str, shape=[], - description=''' + description=""" Block sizes of inner dimension - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_BS_M = Quantity( type=str, shape=[], - description=''' + description=""" Row block sizes of C - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_BS_N = Quantity( type=str, shape=[], - description=''' + description=""" Column block sizes of C - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_BSPARSITY = Quantity( type=str, shape=[], - description=''' + description=""" Sparsity of B matrix - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_BTYPE = Quantity( type=str, shape=[], - description=''' + description=""" Matrix B type - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_CSPARSITY = Quantity( type=str, shape=[], - description=''' + description=""" Sparsity of C matrix - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_CTYPE = Quantity( type=str, shape=[], - description=''' + description=""" Matrix C type - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_DATA_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Data type of the matrices - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_FILTER_EPS = Quantity( type=str, shape=[], - description=''' + description=""" Threshold for on-the-fly and final filtering. - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_KEEPSPARSE = Quantity( type=str, shape=[], - description=''' + description=""" Keep product sparse - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_K = Quantity( type=str, shape=[], - description=''' + description=""" Inner dimension M - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_M = Quantity( type=str, shape=[], - description=''' + description=""" Dimension 1 of C - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_N_LOOP = Quantity( type=str, shape=[], - description=''' + description=""" Number of operations being timed (useful for small matrices). - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_NPROC = Quantity( type=str, shape=[], - description=''' + description=""" Number of processors to test - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_N = Quantity( type=str, shape=[], - description=''' + description=""" Dimension 2 of C - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_TEST_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Which part of DBCSR is tested - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_TRANSA = Quantity( type=str, shape=[], - description=''' + description=""" Transpose matrix A - ''') + """, + ) x_cp2k_input_TEST_CP_DBCSR_TRANSB = Quantity( type=str, shape=[], - description=''' + description=""" Transpose matrix B - ''') + """, + ) class x_cp2k_section_input_TEST_CP_FM_GEMM(MSection): - ''' + """ Benchmark and test the cp_fm_gemm routines by multiplying C=A*B - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_CP_FM_GEMM_FORCE_BLOCKSIZE = Quantity( type=str, shape=[], - description=''' + description=""" Forces the blocksize, even if this implies that a few processes might have no data - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_GRID_2D = Quantity( type=str, shape=[], - description=''' + description=""" Explicitly set the blacs 2D processor layout. If the product differs from the number of MPI ranks, it is ignored and a default nearly square layout is used. - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_K = Quantity( type=str, shape=[], - description=''' + description=""" Dimension 1 of C - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_M = Quantity( type=str, shape=[], - description=''' + description=""" Inner dimension M - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_N_LOOP = Quantity( type=str, shape=[], - description=''' + description=""" Number of cp_fm_gemm operations being timed (useful for small matrices). - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_NCOL_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" block_size for cols - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_NROW_BLOCK = Quantity( type=str, shape=[], - description=''' + description=""" block_size for rows - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_N = Quantity( type=str, shape=[], - description=''' + description=""" Dimension 2 of C - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_ROW_MAJOR = Quantity( type=str, shape=[], - description=''' + description=""" Use a row major blacs grid - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_TRANSA = Quantity( type=str, shape=[], - description=''' + description=""" Transpose matrix A - ''') + """, + ) x_cp2k_input_TEST_CP_FM_GEMM_TRANSB = Quantity( type=str, shape=[], - description=''' + description=""" Transpose matrix B - ''') + """, + ) class x_cp2k_section_input_TEST_EIGENSOLVER(MSection): - ''' + """ Benchmark and test the eigensolver routines. - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_EIGENSOLVER_DIAG_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Diagonalization strategy - ''') + """, + ) x_cp2k_input_TEST_EIGENSOLVER_EIGENVALUES = Quantity( type=str, shape=[], - description=''' + description=""" number of eigenvalues to be computed (all=<0) - ''') + """, + ) x_cp2k_input_TEST_EIGENSOLVER_INIT_METHOD = Quantity( type=str, shape=[], - description=''' + description=""" Initialization approach - ''') + """, + ) x_cp2k_input_TEST_EIGENSOLVER_N_LOOP = Quantity( type=str, shape=[], - description=''' + description=""" Number of operations being timed (useful for small matrices). - ''') + """, + ) x_cp2k_input_TEST_EIGENSOLVER_N = Quantity( type=str, shape=[], - description=''' + description=""" Dimension of the square matrix - ''') + """, + ) class x_cp2k_section_input_TEST_GRID_INFORMATION(MSection): - ''' + """ Controls the printing of information regarding the PW and RS grid structures (ONLY for TEST run). - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_GRID_INFORMATION_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_TEST_GRID_INFORMATION_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_TEST_GRID_INFORMATION_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_TEST_GRID_INFORMATION_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_TEST_GRID_INFORMATION_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_TEST_PROGRAM_RUN_INFO(MSection): - ''' + """ controls the printing of tests output - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_PROGRAM_RUN_INFO_ADD_LAST = Quantity( type=str, shape=[], - description=''' + description=""" If the last iteration should be added, and if it should be marked symbolically (with lowercase letter l) or with the iteration number. Not every iteration level is able to identify the last iteration early enough to be able to output. When this keyword is activated all iteration levels are checked for the last iteration step. - ''') + """, + ) x_cp2k_input_TEST_PROGRAM_RUN_INFO_COMMON_ITERATION_LEVELS = Quantity( type=str, shape=[], - description=''' + description=""" How many iterations levels should be written in the same file (no extra information about the actual iteration level is written to the file) - ''') + """, + ) x_cp2k_input_TEST_PROGRAM_RUN_INFO_FILENAME = Quantity( type=str, shape=[], - description=''' + description=""" controls part of the filename for output. use __STD_OUT__ (exactly as written here) for the screen or standard logger. use filename to obtain projectname- filename. use ./filename to get filename. A middle name (if present), iteration numbers and extension are always added to the filename. if you want to avoid it use =filename, in this case the filename is always exactly as typed. Please note that this can lead to clashes of filenames. - ''') + """, + ) x_cp2k_input_TEST_PROGRAM_RUN_INFO_LOG_PRINT_KEY = Quantity( type=str, shape=[], - description=''' + description=""" This keywords enables the logger for the print_key (a message is printed on screen everytime data, controlled by this print_key, are written) - ''') + """, + ) x_cp2k_input_TEST_PROGRAM_RUN_INFO_SECTION_PARAMETERS = Quantity( type=str, shape=[], - description=''' + description=""" Level starting at which this proprety is printed - ''') + """, + ) class x_cp2k_section_input_TEST_PW_TRANSFER(MSection): - ''' + """ Benchmark and test the pw_transfer routines. - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_PW_TRANSFER_DEBUG = Quantity( type=str, shape=[], - description=''' + description=""" Do the FFT in debug mode in all cases - ''') + """, + ) x_cp2k_input_TEST_PW_TRANSFER_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of grid points (not all grid points are allowed) - ''') + """, + ) x_cp2k_input_TEST_PW_TRANSFER_N_LOOP = Quantity( type=str, shape=[], - description=''' + description=""" Number of pw_transfers (backward&forward) being timed - ''') + """, + ) x_cp2k_input_TEST_PW_TRANSFER_PW_GRID_BLOCKED = Quantity( type=str, shape=[], - description=''' + description=""" Expert use only, leave the default...Can be used to set the distribution in g-space for the pw grids and their FFT. - ''') + """, + ) x_cp2k_input_TEST_PW_TRANSFER_PW_GRID_LAYOUT_ALL = Quantity( type=str, shape=[], - description=''' + description=""" loop overal all PW_GRID_LAYOUTs that are compatible with a given number of CPUs - ''') + """, + ) x_cp2k_input_TEST_PW_TRANSFER_PW_GRID_LAYOUT = Quantity( type=str, shape=[], - description=''' + description=""" Expert use only, leave the default...Can be used to set the distribution for ray- distributed FFT. - ''') + """, + ) x_cp2k_input_TEST_PW_TRANSFER_PW_GRID = Quantity( type=str, shape=[], - description=''' + description=""" What kind of PW_GRID should be employed - ''') + """, + ) class x_cp2k_section_input_TEST_RS_PW_TRANSFER_RS_GRID(MSection): - ''' + """ Set options that influence how the realspace grids are being distributed in parallel runs. - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_RS_PW_TRANSFER_RS_GRID_DISTRIBUTION_LAYOUT = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the number of slices in the x, y and z directions.-1 specifies that any number of slices is OK.If a given distribution can not be satisfied, a replicated grid will result.Also see LOCK_DISTRIBUTION. - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_RS_GRID_DISTRIBUTION_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Parallelization strategy. - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_RS_GRID_HALO_REDUCTION_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" Can be used to reduce the halo of the distributed grid (experimental features). - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_RS_GRID_LOCK_DISTRIBUTION = Quantity( type=str, shape=[], - description=''' + description=""" Expert use only, only basic QS deals correctly with a non-default value.If the distribution is locked, a grid will have the same distribution asthe next finer multigrid (provided it is distributed).If unlocked, all grids can be distributed freely. - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_RS_GRID_MAX_DISTRIBUTED_LEVEL = Quantity( type=str, shape=[], - description=''' + description=""" If the multigrid-level of a grid is larger than the parameter, it will not be distributed in the automatic scheme. - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_RS_GRID_MEMORY_FACTOR = Quantity( type=str, shape=[], - description=''' + description=""" A grid will only be distributed if the memory usage for that grid (including halo) is smaller than a replicated grid by this parameter. - ''') + """, + ) class x_cp2k_section_input_TEST_RS_PW_TRANSFER(MSection): - ''' + """ Describes how to benchmark the rs_pw_transfer routines. - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_RS_PW_TRANSFER_GRID = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of grid points (not all grid points are allowed) - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_HALO_SIZE = Quantity( type=str, shape=[], - description=''' + description=""" number of grid points of the halo - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_N_LOOP = Quantity( type=str, shape=[], - description=''' + description=""" Number of rs_pw_transfers being timed - ''') + """, + ) x_cp2k_input_TEST_RS_PW_TRANSFER_RS2PW = Quantity( type=str, shape=[], - description=''' + description=""" should the direction be rs2pw (pw2rs otherwise) - ''') + """, + ) x_cp2k_section_input_TEST_RS_PW_TRANSFER_RS_GRID = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_RS_PW_TRANSFER_RS_GRID'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_RS_PW_TRANSFER_RS_GRID"), + repeats=True, + ) class x_cp2k_section_input_TEST(MSection): - ''' + """ Tests to perform on the supported libraries. - ''' + """ m_def = Section(validate=False) x_cp2k_input_TEST_CLEBSCH_GORDON = Quantity( type=str, shape=[], - description=''' + description=""" Tests the Clebsch-Gordon Coefficients. Tests are repeated the given number of times. - ''') + """, + ) x_cp2k_input_TEST_COPY = Quantity( type=str, shape=[], - description=''' + description=""" Tests the performance to copy two vectors.The results of these tests allow to determine the size of the cache of the CPU. This can be used to optimize the performance of theFFTSG library. Tests are repeated the given number of times. - ''') + """, + ) x_cp2k_input_TEST_DGEMM = Quantity( type=str, shape=[], - description=''' + description=""" Tests the performance of different kinds of matrix matrix multiply kernels for the BLAS INTRINSIC DGEMM. Matrices up to 2**N+1 will be tested. - ''') + """, + ) x_cp2k_input_TEST_ERI = Quantity( type=str, shape=[], - description=''' + description=""" Tests the performance and correctness of ERI libraries - ''') + """, + ) x_cp2k_input_TEST_FFT = Quantity( type=str, shape=[], - description=''' + description=""" Tests the performance of all available FFT libraries for 3D FFTs Tests are repeated the given number of times. - ''') + """, + ) x_cp2k_input_TEST_MATMUL = Quantity( type=str, shape=[], - description=''' + description=""" Tests the performance of different kinds of matrix matrix multiply kernels for the F95 INTRINSIC matmul. Matrices up to 2**N+1 will be tested. - ''') + """, + ) x_cp2k_input_TEST_MEMORY = Quantity( type=str, shape=[], - description=''' + description=""" Set the maximum amount of memory allocated for a given test (in bytes) - ''') + """, + ) x_cp2k_input_TEST_MPI = Quantity( type=str, shape=[], - description=''' + description=""" Tests mpi, quickly adapted benchmark code,will ONLY work on an even number of CPUs. comm is the relevant, initialized communicator. This test will produce messages of the size 8*10**requested_size, where requested_size is the value given to this keyword - ''') + """, + ) x_cp2k_input_TEST_RANDOM_NUMBER_GENERATOR = Quantity( type=str, shape=[], - description=''' + description=""" Tests the parallel random number generator (RNG) - ''') + """, + ) x_cp2k_section_input_TEST_CP_DBCSR = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_CP_DBCSR'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_CP_DBCSR"), repeats=True + ) x_cp2k_section_input_TEST_CP_FM_GEMM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_CP_FM_GEMM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_CP_FM_GEMM"), repeats=True + ) x_cp2k_section_input_TEST_EIGENSOLVER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_EIGENSOLVER'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_EIGENSOLVER"), repeats=True + ) x_cp2k_section_input_TEST_GRID_INFORMATION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_GRID_INFORMATION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_GRID_INFORMATION"), + repeats=True, + ) x_cp2k_section_input_TEST_PROGRAM_RUN_INFO = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_PROGRAM_RUN_INFO'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_PROGRAM_RUN_INFO"), + repeats=True, + ) x_cp2k_section_input_TEST_PW_TRANSFER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_PW_TRANSFER'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_PW_TRANSFER"), repeats=True + ) x_cp2k_section_input_TEST_RS_PW_TRANSFER = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST_RS_PW_TRANSFER'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST_RS_PW_TRANSFER"), + repeats=True, + ) class x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS(MSection): - ''' + """ All parameters needed for the tracking of modes dominated by the motion of selected atoms - ''' + """ m_def = Section(validate=False) - x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS_INVOLVED_ATOMS = Quantity( - type=str, - shape=[], - description=''' + x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS_INVOLVED_ATOMS = ( + Quantity( + type=str, + shape=[], + description=""" Specifies the list of atoms on which the tracked eigenvector should have the highest value similar to looking for the vibration of a set of atoms - ''') + """, + ) + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the range of wavenumbers in which the modes related to the ATOMS have to be tracked. If not specified frequencies >400cm-1 will be used to avoid tracking of translational or rotational modes - ''') + """, + ) class x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE(MSection): - ''' + """ All parameters needed for to run a mode selective vibrational analysis - ''' + """ m_def = Section(validate=False) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_ATOMS = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the list of atoms which should be displaced for the Initial guess - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_EPS_MAX_VAL = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the davidson algorithm. Specifies the maximal value in the residuum vectors - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_EPS_NORM = Quantity( type=str, shape=[], - description=''' + description=""" Convergence criterium for the davidson algorithm. Specifies the maximal value of the norm of the residuum vectors - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_FREQUENCY = Quantity( type=str, shape=[], - description=''' + description=""" value close to the expected value of the frequency for to look for. If the block Davidson algorithm is applied, the nrep closest frequencies are tracked. - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INITIAL_GUESS = Quantity( type=str, shape=[], - description=''' + description=""" The type of initial guess for the normal modes - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_RANGE = Quantity( type=str, shape=[], - description=''' + description=""" Track modes in a given range of frequencies. No warranty that the set of frequencies is complete. - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_RESTART_FILE_NAME = Quantity( type=str, shape=[], - description=''' + description=""" Specifies the name of the file used to create the restarted vectors - ''') + """, + ) x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE_INVOLVED_ATOMS" + ), + repeats=True, + ) class x_cp2k_section_input_VIBRATIONAL_ANALYSIS(MSection): - ''' + """ Section to setup parameters to perform a Normal Modes analysis. - ''' + """ m_def = Section(validate=False) x_cp2k_input_VIBRATIONAL_ANALYSIS_DX = Quantity( type=str, shape=[], - description=''' + description=""" Specify the increment to be used to construct the HESSIAN with finite difference method - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_FULLY_PERIODIC = Quantity( type=str, shape=[], - description=''' + description=""" Avoids to clean rotations from the Hessian matrix. - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_INTENSITIES = Quantity( type=str, shape=[], - description=''' + description=""" Calculation of the IR-Intensities. Calculation of dipols has to be specified explicitly - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_NPROC_REP = Quantity( type=str, shape=[], - description=''' + description=""" Specify the number of processors to be used per replica environment (for parallel runs). In case of mode selective calculations more than one replica will start a block Davidson algorithm to track more than only one frequency - ''') + """, + ) x_cp2k_input_VIBRATIONAL_ANALYSIS_PROC_DIST_TYPE = Quantity( type=str, shape=[], - description=''' + description=""" Specify the topology of the mapping of processors into replicas. - ''') + """, + ) x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_input_VIBRATIONAL_ANALYSIS_MODE_SELECTIVE" + ), + repeats=True, + ) class x_cp2k_section_input(MSection): - ''' + """ This section contains the explicitly stated keywords, default keywords, and section parameters in the CP2K input file. Only some of the sections that control printing (PRINT, EACH) are supported, because including all of them would double the size of this metadata without adding much useful information. The hidden input keywords starting with a double underscore are not included. - ''' + """ m_def = Section(validate=False) x_cp2k_section_input_ATOM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_ATOM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_ATOM"), repeats=True + ) x_cp2k_section_input_DEBUG = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_DEBUG'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_DEBUG"), repeats=True + ) x_cp2k_section_input_EXT_RESTART = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_EXT_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_EXT_RESTART"), repeats=True + ) x_cp2k_section_input_FARMING = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FARMING'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FARMING"), repeats=True + ) x_cp2k_section_input_FORCE_EVAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_FORCE_EVAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_FORCE_EVAL"), repeats=True + ) x_cp2k_section_input_GLOBAL = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_GLOBAL'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_GLOBAL"), repeats=True + ) x_cp2k_section_input_MOTION = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MOTION'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MOTION"), repeats=True + ) x_cp2k_section_input_MULTIPLE_FORCE_EVALS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_MULTIPLE_FORCE_EVALS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_MULTIPLE_FORCE_EVALS"), + repeats=True, + ) x_cp2k_section_input_OPTIMIZE_BASIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_BASIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_BASIS"), repeats=True + ) x_cp2k_section_input_OPTIMIZE_INPUT = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_OPTIMIZE_INPUT'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_OPTIMIZE_INPUT"), repeats=True + ) x_cp2k_section_input_SWARM = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_SWARM'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_SWARM"), repeats=True + ) x_cp2k_section_input_TEST = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_TEST'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_TEST"), repeats=True + ) x_cp2k_section_input_VIBRATIONAL_ANALYSIS = SubSection( - sub_section=SectionProxy('x_cp2k_section_input_VIBRATIONAL_ANALYSIS'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input_VIBRATIONAL_ANALYSIS"), + repeats=True, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_section_input = SubSection( - sub_section=SectionProxy('x_cp2k_section_input'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_input"), repeats=True + ) diff --git a/electronicparsers/cp2k/metainfo/cp2k_general.py b/electronicparsers/cp2k/metainfo/cp2k_general.py index f1d13494..c69bc4e9 100644 --- a/electronicparsers/cp2k/metainfo/cp2k_general.py +++ b/electronicparsers/cp2k/metainfo/cp2k_general.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import simulationworkflowschema @@ -34,884 +42,973 @@ class x_cp2k_section_restart_information(MSection): - ''' + """ Contains restart information for this calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_restart_file_name = Quantity( type=str, shape=[], - description=''' + description=""" Name of the restart file. - ''') + """, + ) x_cp2k_restarted_quantity_name = Quantity( type=str, shape=[], - description=''' + description=""" Name of a restarted quantity. - ''') + """, + ) class x_cp2k_section_geometry_optimization_energy_reevaluation(MSection): - ''' + """ Information for the energy re-evaluation at the end of an optimization procedure. - ''' + """ m_def = Section(validate=False) class x_cp2k_section_geometry_optimization_step(MSection): - ''' + """ Contains information about the geometry optimization process for every optimization step. - ''' + """ m_def = Section(validate=False) x_cp2k_optimization_energy_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy change for this optimization step. - ''') + """, + ) x_cp2k_optimization_energy_decrease = Quantity( type=str, shape=[], - description=''' + description=""" Whether there has been energy decrease. YES or NO. - ''') + """, + ) x_cp2k_optimization_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy for this optimization step. - ''') + """, + ) x_cp2k_optimization_gradient_convergence_limit = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Convergence criterium for the maximum force component of the current configuration. - ''') + """, + ) x_cp2k_optimization_max_gradient_convergence = Quantity( type=str, shape=[], - description=''' + description=""" Whether there is convergence in max gradient. YES or NO. - ''') + """, + ) x_cp2k_optimization_max_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Max gradient for this optimization step. - ''') + """, + ) x_cp2k_optimization_max_step_size = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Maximum step size for this optimization step. - ''') + """, + ) x_cp2k_optimization_method = Quantity( type=str, shape=[], - description=''' + description=""" Optimization method for this step - ''') + """, + ) x_cp2k_optimization_rms_gradient_convergence = Quantity( type=str, shape=[], - description=''' + description=""" Whether there is convergence in rms gradient. YES or NO. - ''') + """, + ) x_cp2k_optimization_rms_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" RMS gradient for this optimization step. - ''') + """, + ) x_cp2k_optimization_rms_step_size_convergence = Quantity( type=str, shape=[], - description=''' + description=""" Whether there is convergence in rms step size. YES or NO. - ''') + """, + ) x_cp2k_optimization_rms_step_size = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" RMS step size for this optimization step. - ''') + """, + ) x_cp2k_optimization_step_size_convergence_limit = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Convergence criterium for the maximum geometry change between the current and the last optimizer iteration. - ''') + """, + ) x_cp2k_optimization_step_size_convergence = Quantity( type=str, shape=[], - description=''' + description=""" Whether there is convergence in step size. YES or NO. - ''') + """, + ) x_cp2k_optimization_used_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Time used for this optimization step. - ''') + """, + ) class x_cp2k_section_geometry_optimization(MSection): - ''' + """ CP2K geometry optimization information. - ''' + """ m_def = Section(validate=False) x_cp2k_section_geometry_optimization_energy_reevaluation = SubSection( - sub_section=SectionProxy('x_cp2k_section_geometry_optimization_energy_reevaluation'), - repeats=True) + sub_section=SectionProxy( + "x_cp2k_section_geometry_optimization_energy_reevaluation" + ), + repeats=True, + ) x_cp2k_section_geometry_optimization_step = SubSection( - sub_section=SectionProxy('x_cp2k_section_geometry_optimization_step'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_geometry_optimization_step"), + repeats=True, + ) class x_cp2k_section_maximum_angular_momentum(MSection): - ''' + """ Contains the maximum angular momentum values used in the calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_local_part_of_gth_pseudopotential = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum angular momentum of the local part of the GTH pseudopotential. - ''') + """, + ) x_cp2k_non_local_part_of_gth_pseudopotential = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum angular momentum of the non-local part of the GTH pseudopotential. - ''') + """, + ) x_cp2k_orbital_basis_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum angular momentum of orbital basis functions. - ''') + """, + ) class x_cp2k_section_startinformation(MSection): - ''' + """ Contains information about the starting conditions for this run. - ''' + """ m_def = Section(validate=False) x_cp2k_start_time = Quantity( type=str, shape=[], - description=''' + description=""" The starting time for this run. - ''') + """, + ) x_cp2k_start_host = Quantity( type=str, shape=[], - description=''' + description=""" The name of the host machine this calculation started on. - ''') + """, + ) x_cp2k_start_user = Quantity( type=str, shape=[], - description=''' + description=""" The name of the user at the start of the calculation. - ''') + """, + ) x_cp2k_start_id = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The process id at the start of this run. - ''') + """, + ) x_cp2k_start_path = Quantity( type=str, shape=[], - description=''' + description=""" The path where this calculation started. - ''') + """, + ) class x_cp2k_section_end_information(MSection): - ''' + """ Contains information about the ending conditions for this run. - ''' + """ m_def = Section(validate=False) x_cp2k_end_time = Quantity( type=str, shape=[], - description=''' + description=""" The ending time for this run. - ''') + """, + ) x_cp2k_end_host = Quantity( type=str, shape=[], - description=''' + description=""" The name of the host machine this calculation ended on. - ''') + """, + ) x_cp2k_end_user = Quantity( type=str, shape=[], - description=''' + description=""" The name of the user at the end of the calculation. - ''') + """, + ) x_cp2k_end_id = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The process id at the end of this run. - ''') + """, + ) x_cp2k_end_path = Quantity( type=str, shape=[], - description=''' + description=""" The path where this calculation ended. - ''') + """, + ) class x_cp2k_section_total_numbers(MSection): - ''' + """ The total number of different entities in the calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_atomic_kinds = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of atomic kinds in the calculation. - ''') + """, + ) x_cp2k_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of atoms in the calculation. - ''') + """, + ) x_cp2k_cartesian_basis_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of Cartesian basis functions. - ''') + """, + ) x_cp2k_primitive_cartesian_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of primitive Cartesian functions. - ''') + """, + ) x_cp2k_shell_sets = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of shell sets in the calculation. - ''') + """, + ) x_cp2k_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of shells. - ''') + """, + ) x_cp2k_spherical_basis_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of Spherical basis functions. - ''') + """, + ) class x_cp2k_section_md_settings(MSection): - ''' + """ Settings for CP2K Molecular Dynamics. - ''' + """ m_def = Section(validate=False) x_cp2k_md_target_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" Thermostat target temperature. - ''') + """, + ) x_cp2k_md_target_temperature_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" Target temperature tolerance. - ''') + """, + ) x_cp2k_md_print_frequency = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The print frequency of molecular dynamics information in the CP2K output file. - ''') + """, + ) x_cp2k_md_coordinates_print_frequency = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Print frequency for the coordinate file. - ''') + """, + ) x_cp2k_md_coordinates_filename = Quantity( type=str, shape=[], - description=''' + description=""" Name of the coordinate file. - ''') + """, + ) x_cp2k_md_velocities_print_frequency = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Print frequency for the velocities file. - ''') + """, + ) x_cp2k_md_velocities_filename = Quantity( type=str, shape=[], - description=''' + description=""" Name of the velocities file. - ''') + """, + ) x_cp2k_md_energies_print_frequency = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Print frequency for the energies file. - ''') + """, + ) x_cp2k_md_energies_filename = Quantity( type=str, shape=[], - description=''' + description=""" Name of the energies file. - ''') + """, + ) x_cp2k_md_dump_print_frequency = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Print frequency for the dump file. - ''') + """, + ) x_cp2k_md_dump_filename = Quantity( type=str, shape=[], - description=''' + description=""" Name of the dump file. - ''') + """, + ) x_cp2k_md_target_pressure = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Target pressure for the barostat. - ''') + """, + ) x_cp2k_md_barostat_time_constant = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Barostat time constant. - ''') + """, + ) x_cp2k_md_simulation_cell_print_frequency = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Simulation cell print frequency. - ''') + """, + ) x_cp2k_md_simulation_cell_filename = Quantity( type=str, shape=[], - description=''' + description=""" Simulation cell filename. - ''') + """, + ) x_cp2k_md_number_of_time_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of requested time steps in molecular dynamics. - ''') + """, + ) class x_cp2k_section_quickstep_settings(MSection): - ''' + """ Quickstep settings. - ''' + """ m_def = Section(validate=False) x_cp2k_planewave_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The plane-wave cutoff for the auxiliary basis. - ''') + """, + ) x_cp2k_spin_restriction = Quantity( type=str, shape=[], - description=''' + description=""" Indicates the restriction applied for the spin (e.g. RKS). - ''') + """, + ) x_cp2k_quickstep_method = Quantity( type=str, shape=[], - description=''' + description=""" The method used for the Quickstep calculations (GPW, GAPW). - ''') + """, + ) x_cp2k_section_maximum_angular_momentum = SubSection( - sub_section=SectionProxy('x_cp2k_section_maximum_angular_momentum'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_maximum_angular_momentum"), + repeats=True, + ) x_cp2k_section_total_numbers = SubSection( - sub_section=SectionProxy('x_cp2k_section_total_numbers'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_total_numbers"), repeats=True + ) x_cp2k_section_atomic_kinds = SubSection( - sub_section=SectionProxy('x_cp2k_section_atomic_kinds'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_atomic_kinds"), repeats=True + ) class x_cp2k_section_atomic_kinds(MSection): - ''' + """ Information about all the atomic kinds in this Quickstep calculation. - ''' + """ m_def = Section(validate=False) x_cp2k_section_atomic_kind = SubSection( - sub_section=SectionProxy('x_cp2k_section_atomic_kind'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_atomic_kind"), repeats=True + ) class x_cp2k_section_vdw_settings(MSection): - ''' + """ Van der Waals settings. - ''' + """ m_def = Section(validate=False) x_cp2k_vdw_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of the van der Waals method. - ''') + """, + ) x_cp2k_vdw_name = Quantity( type=str, shape=[], - description=''' + description=""" Name of the van der Waals method. - ''') + """, + ) x_cp2k_vdw_bj_damping_name = Quantity( type=str, shape=[], - description=''' + description=""" Name of the BJ damping method. - ''') + """, + ) x_cp2k_vdw_cutoff_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Cutoff radius of the van der Waals method. - ''') + """, + ) x_cp2k_section_vdw_d2_settings = SubSection( - sub_section=SectionProxy('x_cp2k_section_vdw_d2_settings'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_vdw_d2_settings"), repeats=True + ) x_cp2k_section_vdw_d3_settings = SubSection( - sub_section=SectionProxy('x_cp2k_section_vdw_d3_settings'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_vdw_d3_settings"), repeats=True + ) class x_cp2k_section_vdw_d2_settings(MSection): - ''' + """ D2 settings. - ''' + """ m_def = Section(validate=False) x_cp2k_vdw_scaling_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Scaling factor. - ''') + """, + ) x_cp2k_vdw_damping_factor = Quantity( type=str, shape=[], - description=''' + description=""" Exponential damping prefactor for the van der Waals method. - ''') + """, + ) x_cp2k_section_vdw_element_settings = SubSection( - sub_section=SectionProxy('x_cp2k_section_vdw_element_settings'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_vdw_element_settings"), repeats=True + ) class x_cp2k_section_vdw_element_settings(MSection): - ''' + """ Contains element-specific Van der Waals settings. - ''' + """ m_def = Section(validate=False) x_cp2k_vdw_parameter_element_name = Quantity( type=str, shape=[], - description=''' + description=""" Name of the element. - ''') + """, + ) x_cp2k_vdw_parameter_c6 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" C6 parameter. - ''') + """, + ) x_cp2k_vdw_parameter_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Radius parameter. - ''') + """, + ) class x_cp2k_section_vdw_d3_settings(MSection): - ''' + """ D3 settings. - ''' + """ m_def = Section(validate=False) x_cp2k_vdw_s6_scaling_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" S6 scaling factor. - ''') + """, + ) x_cp2k_vdw_sr6_scaling_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SR6 scaling factor. - ''') + """, + ) x_cp2k_vdw_s8_scaling_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" S8 scaling factor. - ''') + """, + ) x_cp2k_vdw_cn_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Cutoff for CN calculation. - ''') + """, + ) class x_cp2k_section_atomic_kind(MSection): - ''' + """ Information one atomic kind. - ''' + """ m_def = Section(validate=False) x_cp2k_kind_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The atomic kind number. For each element there may be multiple kinds specified. This number differentiates them. Not the atomic number. - ''') + """, + ) x_cp2k_kind_label = Quantity( type=str, shape=[], - description=''' + description=""" The label for this atomic kind. - ''') + """, + ) x_cp2k_kind_number_of_atoms = Quantity( type=str, shape=[], - description=''' + description=""" The number of atoms with this kind. - ''') + """, + ) x_cp2k_section_kind_basis_set = SubSection( - sub_section=SectionProxy('x_cp2k_section_kind_basis_set'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_kind_basis_set"), repeats=True + ) class x_cp2k_section_kind_basis_set(MSection): - ''' + """ Description of the basis set used for this kind. - ''' + """ m_def = Section(validate=False) x_cp2k_kind_basis_set_name = Quantity( type=str, shape=[], - description=''' + description=""" The name of the orbital basis set used for this kind. - ''') + """, + ) x_cp2k_basis_set_number_of_orbital_shell_sets = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of orbital shell sets. - ''') + """, + ) x_cp2k_basis_set_number_of_orbital_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of orbital shells. - ''') + """, + ) x_cp2k_basis_set_number_of_primitive_cartesian_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of primitive Cartesian functions. - ''') + """, + ) x_cp2k_basis_set_number_of_cartesian_basis_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of Cartesian basis functions. - ''') + """, + ) x_cp2k_basis_set_number_of_spherical_basis_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of spherical basis functions. - ''') + """, + ) x_cp2k_basis_set_norm_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Norm type. - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_section_restart_information = SubSection( - sub_section=SectionProxy('x_cp2k_section_restart_information'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_restart_information"), repeats=True + ) x_cp2k_program_information = Quantity( type=JSON, shape=[], - description=''' + description=""" A JSON quantity containing all code-specific code information. - ''') + """, + ) x_cp2k_dbcsr = Quantity( type=JSON, shape=[], - description=''' + description=""" A JSON quantity containing all code-specific DBCSR (a sparse matrix library) information. - ''') + """, + ) x_cp2k_global_settings = Quantity( type=JSON, shape=[], - description=''' + description=""" A JSON quantity containing all code-specific global information. - ''') + """, + ) x_cp2k_section_startinformation = SubSection( - sub_section=SectionProxy('x_cp2k_section_startinformation'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_startinformation"), repeats=True + ) x_cp2k_section_end_information = SubSection( - sub_section=SectionProxy('x_cp2k_section_end_information'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_end_information"), repeats=True + ) class GeometryOptimization(simulationworkflowschema.GeometryOptimization): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_section_geometry_optimization = SubSection( - sub_section=SectionProxy('x_cp2k_section_geometry_optimization'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_geometry_optimization"), repeats=True + ) class GeometryOptimizationMethod(simulationworkflowschema.GeometryOptimizationMethod): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_section_geometry_optimization = SubSection( - sub_section=SectionProxy('x_cp2k_section_geometry_optimization'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_geometry_optimization"), repeats=True + ) class MolecularDynamicsMethod(simulationworkflowschema.MolecularDynamicsMethod): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_section_md_settings = SubSection( - sub_section=SectionProxy('x_cp2k_section_md_settings'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_md_settings"), repeats=True + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_section_quickstep_settings = SubSection( - sub_section=SectionProxy('x_cp2k_section_quickstep_settings'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_quickstep_settings"), repeats=True + ) x_cp2k_quickstep_settings = Quantity( type=JSON, shape=[], - description=''' + description=""" A JSON quantity containing all code-specific global information. - ''') + """, + ) x_cp2k_section_vdw_settings = SubSection( - sub_section=SectionProxy('x_cp2k_section_vdw_settings'), - repeats=True) + sub_section=SectionProxy("x_cp2k_section_vdw_settings"), repeats=True + ) class x_cp2k_pdos_histogram(MSection): - ''' + """ Section with projected DOS histogram data. - ''' + """ m_def = Section(validate=False) x_cp2k_pdos_histogram_energies = Quantity( type=np.float64, - shape=['n_energies'], - unit='joule', - description=''' + shape=["n_energies"], + unit="joule", + description=""" Values of the histogram energies. - ''') + """, + ) x_cp2k_pdos_histogram_values = Quantity( type=np.float64, - shape=['n_orbitals', 'n_energies'], - description=''' + shape=["n_orbitals", "n_energies"], + description=""" Values of the projected orbital / atomic / species histogram. This is then convoluted with a Gaussian distribution function and stored in the corresponding projected DOS value. - ''') + """, + ) x_cp2k_pdos_histogram_atom_label = Quantity( type=str, - description=''' + description=""" Atom label for the projected DOS histogram. - ''') + """, + ) x_cp2k_pdos_histogram_atom_index = Quantity( type=np.int32, - description=''' + description=""" Atom index for the projected DOS histogram. - ''') + """, + ) x_cp2k_pdos_histogram_orbital = Quantity( type=str, - shape=['n_orbitals'], - description=''' + shape=["n_orbitals"], + description=""" Orbital label for the projected DOS histogram. - ''') + """, + ) x_cp2k_gaussian_width = Quantity( type=np.float64, - unit='joule', - description=''' + unit="joule", + description=""" Width of the Gaussian distribution function. - ''') + """, + ) x_cp2k_gaussian_delta_energy = Quantity( type=np.float64, - unit='joule', - description=''' + unit="joule", + description=""" New energies mesh separation. - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_cp2k_pdos = SubSection(sub_section=x_cp2k_pdos_histogram.m_def, repeats=True) diff --git a/electronicparsers/cp2k/parser.py b/electronicparsers/cp2k/parser.py index 1b95138f..c962171d 100644 --- a/electronicparsers/cp2k/parser.py +++ b/electronicparsers/cp2k/parser.py @@ -28,47 +28,71 @@ from .metainfo import m_env from nomad.units import ureg from nomad.parsing.file_parser import TextParser, Quantity, FileParser, DataTextParser -from runschema.run import ( - Run, Program) +from runschema.run import Run, Program from runschema.method import ( - Method, DFT, XCFunctional, Functional, BasisSet, BasisSetContainer, - AtomParameters, Scf, Electronic, BasisSetAtomCentered -) -from runschema.system import ( - System, Atoms + Method, + DFT, + XCFunctional, + Functional, + BasisSet, + BasisSetContainer, + AtomParameters, + Scf, + Electronic, + BasisSetAtomCentered, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Stress, StressEntry, ScfIteration, Forces, - ForcesEntry, Dos, DosValues + Calculation, + Energy, + EnergyEntry, + Stress, + StressEntry, + ScfIteration, + Forces, + ForcesEntry, + Dos, + DosValues, ) from simulationworkflowschema import ( - SinglePoint, GeometryOptimization, GeometryOptimizationMethod, - MolecularDynamics, MolecularDynamicsMethod + SinglePoint, + GeometryOptimization, + GeometryOptimizationMethod, + MolecularDynamics, + MolecularDynamicsMethod, ) -from .metainfo.cp2k_general import x_cp2k_section_quickstep_settings,\ - x_cp2k_section_startinformation, x_cp2k_section_end_information,\ - x_cp2k_section_atomic_kinds,\ - x_cp2k_section_atomic_kind, x_cp2k_section_kind_basis_set, x_cp2k_section_total_numbers,\ - x_cp2k_section_maximum_angular_momentum, x_cp2k_section_md_settings,\ - x_cp2k_section_restart_information, x_cp2k_section_geometry_optimization,\ - x_cp2k_section_geometry_optimization_step, x_cp2k_pdos_histogram +from .metainfo.cp2k_general import ( + x_cp2k_section_quickstep_settings, + x_cp2k_section_startinformation, + x_cp2k_section_end_information, + x_cp2k_section_atomic_kinds, + x_cp2k_section_atomic_kind, + x_cp2k_section_kind_basis_set, + x_cp2k_section_total_numbers, + x_cp2k_section_maximum_angular_momentum, + x_cp2k_section_md_settings, + x_cp2k_section_restart_information, + x_cp2k_section_geometry_optimization, + x_cp2k_section_geometry_optimization_step, + x_cp2k_pdos_histogram, +) from ..utils import get_files units_map = { - 'hbar': ureg.hbar, - 'hartree': ureg.hartree, - 'angstrom': ureg.angstrom, - 'au_t': ureg.hbar / ureg.hartree, - 'fs': ureg.femtosecond, - 'K': ureg.kelvin, + "hbar": ureg.hbar, + "hartree": ureg.hartree, + "angstrom": ureg.angstrom, + "au_t": ureg.hbar / ureg.hartree, + "fs": ureg.femtosecond, + "K": ureg.kelvin, } def resolve_unit(unit_str, parts=[]): - unit_str = unit_str.lower().replace(' ', '') + unit_str = unit_str.lower().replace(" ", "") parts = list(parts) if unit_str in units_map: @@ -79,23 +103,23 @@ def resolve_unit(unit_str, parts=[]): except Exception: pass - if unit_str == '': + if unit_str == "": return 1 - open_p = unit_str.rfind('(') + open_p = unit_str.rfind("(") if open_p > -1: - n_groups = unit_str.count('(') - if n_groups != unit_str.count(')'): + n_groups = unit_str.count("(") + if n_groups != unit_str.count(")"): return unit_str for n in range(n_groups): - part = unit_str[open_p + 1:] - part = part[:part.find(')')] + part = unit_str[open_p + 1 :] + part = part[: part.find(")")] parts.append(resolve_unit(part, parts)) - unit_str = unit_str.replace('(%s)' % part, '[%d]' % n) - open_p = unit_str.rfind('(') + unit_str = unit_str.replace("(%s)" % part, "[%d]" % n) + open_p = unit_str.rfind("(") return resolve_unit(unit_str, parts) - vals = unit_str.split('/') + vals = unit_str.split("/") if len(vals) > 1: vals = [resolve_unit(v, parts) for v in vals] val = vals[0] @@ -103,23 +127,23 @@ def resolve_unit(unit_str, parts=[]): val /= v return val - vals = unit_str.split('**') + vals = unit_str.split("**") if len(vals) > 1: vals = [resolve_unit(v, parts) for v in vals] val = vals[0] for v in reversed(vals[1:]): - val = val ** v + val = val**v return val - vals = unit_str.split('^') + vals = unit_str.split("^") if len(vals) > 1: vals = [resolve_unit(v, parts) for v in vals] val = vals[0] for v in reversed(vals[1:]): - val = val ** v + val = val**v return val - vals = unit_str.split('*') + vals = unit_str.split("*") if len(vals) > 1: vals = [resolve_unit(v, parts) for v in vals] unit = 1 @@ -127,11 +151,11 @@ def resolve_unit(unit_str, parts=[]): unit *= v return unit - vals = unit_str.split('-1') + vals = unit_str.split("-1") if len(vals) == 2: return 1 / resolve_unit(vals[0], parts) - vals = re.match(r'\[(\d+)\]', unit_str) + vals = re.match(r"\[(\d+)\]", unit_str) if vals: return parts[int(vals.group(1))] @@ -154,20 +178,21 @@ def __init__(self): super().__init__() def init_quantities(self): - def get_trajectory(val_in): - val = np.transpose([v.split() for v in val_in.strip().split('\n')]) + val = np.transpose([v.split() for v in val_in.strip().split("\n")]) positions = np.array(val[1:4], dtype=float).T return Trajectory(labels=val[0], positions=positions) self.quantities = [ Quantity( - 'trajectory', r'([A-Z][a-z]?[\w\.\-\s]+?)(?:\s+\d\n|\Z)', - str_operation=get_trajectory, repeats=True), - Quantity( - 'energy', r'E\s*=\s*(\S+)', repeats=True, dtype=float), - Quantity( - 'iter', r'i += *(\d+)', repeats=True, dtype=int)] + "trajectory", + r"([A-Z][a-z]?[\w\.\-\s]+?)(?:\s+\d\n|\Z)", + str_operation=get_trajectory, + repeats=True, + ), + Quantity("energy", r"E\s*=\s*(\S+)", repeats=True, dtype=float), + Quantity("iter", r"i += *(\d+)", repeats=True, dtype=int), + ] class TrajParser(FileParser): @@ -176,27 +201,33 @@ def __init__(self, **kwargs): self._xyz_parser = XYZTrajParser() self.format = None self.units = None - self.type = kwargs.get('type', 'positions') + self.type = kwargs.get("type", "positions") self._frequency = 1 @property def trajectory(self): if self._file_handler is None: if self.format is None: - self.format = self.mainfile.split('.')[-1].lower() + self.format = self.mainfile.split(".")[-1].lower() result = None labels = [] iter = [] # custom parser - if self.format == 'xyz': + if self.format == "xyz": self._xyz_parser.mainfile = self.mainfile - result = [traj.positions for traj in self._xyz_parser.get('trajectory', [])] - labels = [traj.labels for traj in self._xyz_parser.get('trajectory', [])] - iter = self._xyz_parser.get('iter', []) + result = [ + traj.positions for traj in self._xyz_parser.get("trajectory", []) + ] + labels = [ + traj.labels for traj in self._xyz_parser.get("trajectory", []) + ] + iter = self._xyz_parser.get("iter", []) try: - atoms_list = [atoms for atoms in aseio.iread(self.mainfile, format=self.format)] + atoms_list = [ + atoms for atoms in aseio.iread(self.mainfile, format=self.format) + ] result = [atoms.positions for atoms in atoms_list] labels = [list(atoms.symbols) for atoms in atoms_list] @@ -205,19 +236,25 @@ def trajectory(self): if result is None: try: - if self.format in ['xyz', 'xmol', 'atomic']: - coordinates = MDAnalysis.coordinates.XYZ.XYZReader(self.mainfile) - elif self.format == 'dcd': - coordinates = MDAnalysis.coordinates.DCD.DCDReader(self.mainfile) - elif self.format == 'pdb': - coordinates = MDAnalysis.coordinates.PDB.PDBReader(self.mainfile) + if self.format in ["xyz", "xmol", "atomic"]: + coordinates = MDAnalysis.coordinates.XYZ.XYZReader( + self.mainfile + ) + elif self.format == "dcd": + coordinates = MDAnalysis.coordinates.DCD.DCDReader( + self.mainfile + ) + elif self.format == "pdb": + coordinates = MDAnalysis.coordinates.PDB.PDBReader( + self.mainfile + ) else: coordinates = None - self.logger.error('Unsupported trajectory format.') + self.logger.error("Unsupported trajectory format.") if coordinates is not None: result = [traj.positions for traj in coordinates.trajectory] except Exception: - self.logger.warning('Error loading trajectory file.') + self.logger.warning("Error loading trajectory file.") if result is None: return self._file_handler @@ -228,13 +265,13 @@ def trajectory(self): # add labels to trajectory for n, labels_i in enumerate(labels): - result[n]._data.update({'labels': labels_i}) + result[n]._data.update({"labels": labels_i}) # add iter number to trajectory for n, iter_i in enumerate(iter): - result[n]._data.update({'iter': iter_i}) + result[n]._data.update({"iter": iter_i}) - self._results = {'iter': iter} + self._results = {"iter": iter} self._file_handler = result return self._file_handler @@ -250,7 +287,7 @@ def parse(self, key=None): pass -re_float = r'[-+]?\d+\.?\d*(?:[Ee][-+]\d+)?' +re_float = r"[-+]?\d+\.?\d*(?:[Ee][-+]\d+)?" class ForceParser(TextParser): @@ -258,9 +295,13 @@ def __init__(self): super().__init__() def init_quantities(self): - self._quantities = [Quantity( - 'atom_forces', - rf'\d+\s*\d+\s*\w+\s*({re_float})\s*({re_float})\s*({re_float})', repeats=True)] + self._quantities = [ + Quantity( + "atom_forces", + rf"\d+\s*\d+\s*\w+\s*({re_float})\s*({re_float})\s*({re_float})", + repeats=True, + ) + ] class XCFunctionalProperty(Property): @@ -280,13 +321,18 @@ def name(self): def add(self, key, val): if key in self._data: - self._data[key] = self._data[key] if isinstance(self._data[key], list) else [self._data[key]] + self._data[key] = ( + self._data[key] + if isinstance(self._data[key], list) + else [self._data[key]] + ) self._data[key].append(val) else: self._data[key] = val def to_dict(self): if self._dict is None: + def extract(data): out = dict() for key, val in data.items(): @@ -313,33 +359,36 @@ def __repr__(self): class InpParser(FileParser): def __init__(self): super().__init__() - self._re_open = re.compile(r'&(\w+)\s*(.*?)[#!\n]') - self._re_close = re.compile(r'&END') - self._re_key_value = re.compile(r'(\w+)\s+(.+?)[#!\n]') - self._re_variable = re.compile(r'@SET (\w+)\s+(.+?)[#!\n]') + self._re_open = re.compile(r"&(\w+)\s*(.*?)[#!\n]") + self._re_close = re.compile(r"&END") + self._re_key_value = re.compile(r"(\w+)\s+(.+?)[#!\n]") + self._re_variable = re.compile(r"@SET (\w+)\s+(.+?)[#!\n]") @property def tree(self): if self._file_handler is None: + def override(name, data): - if data[0] == 'PROJECT': - return 'PROJECT_NAME', data[1] + if data[0] == "PROJECT": + return "PROJECT_NAME", data[1] elif not data[0].isupper(): - return 'DEFAULT_KEYWORD', ' '.join(data) + return "DEFAULT_KEYWORD", " ".join(data) return data self._variables = dict() line = True - sections = [InpValue('tree')] + sections = [InpValue("tree")] while line: line = self.mainfile_obj.readline() # comments strip = line.strip() - if not strip or strip[0] in ('#', '!'): + if not strip or strip[0] in ("#", "!"): continue variable = self._re_variable.search(line) if variable: - self._variables['${%s}' % variable.group(1)] = variable.group(2).strip() + self._variables["${%s}" % variable.group(1)] = variable.group( + 2 + ).strip() continue close_section = self._re_close.search(line) if close_section: @@ -351,7 +400,7 @@ def override(name, data): sections[-1].add(open_section.group(1), section) sections.append(section) if open_section.group(2): - sections[-1].add('VALUE', open_section.group(2)) + sections[-1].add("VALUE", open_section.group(2)) continue key_value = self._re_key_value.search(line) if key_value: @@ -370,7 +419,7 @@ def parse(self, key): self._results = dict() source = self.tree.to_dict() - for sub_key in key.strip('/').split('/'): + for sub_key in key.strip("/").split("/"): val = source.get(sub_key, None) source = val if val is None: @@ -384,313 +433,503 @@ def __init__(self): def init_quantities(self): def str_to_header(val_in): - val = val_in.split(' ', 1) - return [val[0].strip().replace(' ', '_').lower(), val[-1].strip()] + val = val_in.split(" ", 1) + return [val[0].strip().replace(" ", "_").lower(), val[-1].strip()] def md_extract(val_in): - result = re.search(r' MD\| (?P.+?)(?: \[(?P.+)\])? {2,}(?P.+)', val_in) - value = result.group('value') - unit = units_map.get(result.group('unit')) - key = result.group('key').strip().replace(' ', '_').lower() + result = re.search( + r" MD\| (?P.+?)(?: \[(?P.+)\])? {2,}(?P.+)", val_in + ) + value = result.group("value") + unit = units_map.get(result.group("unit")) + key = result.group("key").strip().replace(" ", "_").lower() if unit: value = float(value) * unit return [key, value] def str_to_program(val_in): - val = val_in.split(' ', 2) - return ['_'.join(val[:2]).lower(), ''.join([v.strip() for v in val[2].split('\n')])] + val = val_in.split(" ", 2) + return [ + "_".join(val[:2]).lower(), + "".join([v.strip() for v in val[2].split("\n")]), + ] def str_to_atomic_coordinates(val_in): - val = [v.split() for v in val_in.split('\n')] + val = [v.split() for v in val_in.split("\n")] lengthunit = val[0][0].lower() val = np.transpose(np.array([v for v in val if len(v) == 9])) labels = val[2] - positions = np.transpose(np.array(val[4:7], dtype=float)) * resolve_unit(lengthunit) - atomic_numbers = {element: int(val[3][n]) for n, element in enumerate(val[2])} - return Trajectory(labels=labels, positions=positions, atomic_numbers=atomic_numbers) + positions = np.transpose(np.array(val[4:7], dtype=float)) * resolve_unit( + lengthunit + ) + atomic_numbers = { + element: int(val[3][n]) for n, element in enumerate(val[2]) + } + return Trajectory( + labels=labels, positions=positions, atomic_numbers=atomic_numbers + ) def str_to_stress_eigenvalues(val_in): - val = [v.split() for v in val_in.strip().split('\n')] + val = [v.split() for v in val_in.strip().split("\n")] val = np.array([v for v in val if v], dtype=float) return val[0] * ureg.GPa, val[1:] def str_to_iteration(val_in): val = val_in.strip().split() return { - 'time_calculation': float(val[-4]) * ureg.s, - 'energy_total': float(val[-2]) * ureg.hartree, - 'energy_change': float(val[-1]) * ureg.hartree} + "time_calculation": float(val[-4]) * ureg.s, + "energy_total": float(val[-2]) * ureg.hartree, + "energy_change": float(val[-1]) * ureg.hartree, + } def str_to_information(val_in): - val = [v.split('=') for v in val_in.strip().split('\n')] - return {v[0].strip().lower().replace(' ', '_').replace('.', ''): v[1] for v in val if len(v) == 2} - - n_orbital_basis_quantities = [Quantity( - 'basis_set_number_of_%s' % key.lower().replace(' ', '_'), - r'Number of %s:\s+(\d+)' % key, dtype=int) for key in [ - 'orbital shell sets', 'orbital shells', 'primitive Cartesian functions', - 'Cartesian basis functions', 'spherical basis functions']] - - energy_quantities = [Quantity( - '%s' % key.lower().replace(' ', '_').replace('-', '_'), - rf'%s:\s*({re_float})' % key, dtype=float, unit='hartree', repeats=True) for key in [ - 'Hartree energy', 'Exchange-correlation energy', 'Electronic kinetic energy', - 'Total energy', 'Fermi energy']] + val = [v.split("=") for v in val_in.strip().split("\n")] + return { + v[0].strip().lower().replace(" ", "_").replace(".", ""): v[1] + for v in val + if len(v) == 2 + } + + n_orbital_basis_quantities = [ + Quantity( + "basis_set_number_of_%s" % key.lower().replace(" ", "_"), + r"Number of %s:\s+(\d+)" % key, + dtype=int, + ) + for key in [ + "orbital shell sets", + "orbital shells", + "primitive Cartesian functions", + "Cartesian basis functions", + "spherical basis functions", + ] + ] + + energy_quantities = [ + Quantity( + "%s" % key.lower().replace(" ", "_").replace("-", "_"), + rf"%s:\s*({re_float})" % key, + dtype=float, + unit="hartree", + repeats=True, + ) + for key in [ + "Hartree energy", + "Exchange-correlation energy", + "Electronic kinetic energy", + "Total energy", + "Fermi energy", + ] + ] # what is the difference between Total energy and ENERGY| Total scf_wavefunction_optimization_quantities = [ Quantity( - 'iteration', - rf'(\d+\s+\S+\s*\S*\s+{re_float}\s+{re_float}\s+{re_float}\s+{re_float}\s+{re_float})\n', - repeats=True, convert=False, str_operation=str_to_iteration), + "iteration", + rf"(\d+\s+\S+\s*\S*\s+{re_float}\s+{re_float}\s+{re_float}\s+{re_float}\s+{re_float})\n", + repeats=True, + convert=False, + str_operation=str_to_iteration, + ), # TODO add minimizer info - Quantity( - 'converged', - r'SCF run converged in\s*(\d+) steps', dtype=int), + Quantity("converged", r"SCF run converged in\s*(\d+) steps", dtype=int), # find example with cueb file Quantity( - 'cube_file', - r' The electron density is written in cube file format to the file:\s*(.+?\.cube)'), + "cube_file", + r" The electron density is written in cube file format to the file:\s*(.+?\.cube)", + ), # TODO add mulliken, hirschfield Quantity( - 'energy_total', - rf'ENERGY\| Total FORCE_EVAL \( \w+ \) energy \(a\.u\.\):\s*({re_float})', - dtype=float, unit='hartree'), + "energy_total", + rf"ENERGY\| Total FORCE_EVAL \( \w+ \) energy \(a\.u\.\):\s*({re_float})", + dtype=float, + unit="hartree", + ), Quantity( - 'atom_forces', - rf'ATOMIC FORCES in \[a\.u\.\]\s*.+([\s\S]+?)SUM', convert=False, - str_operation=lambda x: np.array(np.transpose( - [v.split() for v in x.strip().split('\n')])[3:6], dtype=float).T), + "atom_forces", + rf"ATOMIC FORCES in \[a\.u\.\]\s*.+([\s\S]+?)SUM", + convert=False, + str_operation=lambda x: np.array( + np.transpose([v.split() for v in x.strip().split("\n")])[3:6], + dtype=float, + ).T, + ), # TODO test stress cannot find example Quantity( - 'stress_tensor', - r' (?:NUMERICAL )?STRESS TENSOR \[GPa\]\s+X\s+Y\s+Z\s+([\d\.\-\s]+)', - str_operation=lambda x:np.array([v.split() for v in x.strip().split('\n')], dtype=float), - convert=False, unit='GPa'), + "stress_tensor", + r" (?:NUMERICAL )?STRESS TENSOR \[GPa\]\s+X\s+Y\s+Z\s+([\d\.\-\s]+)", + str_operation=lambda x: np.array( + [v.split() for v in x.strip().split("\n")], dtype=float + ), + convert=False, + unit="GPa", + ), Quantity( - 'stress_tensor_one_third_of_trace', - rf' 1/3 Trace\(stress tensor\)\s*:\s*({re_float})', dtype=float, unit='GPa'), + "stress_tensor_one_third_of_trace", + rf" 1/3 Trace\(stress tensor\)\s*:\s*({re_float})", + dtype=float, + unit="GPa", + ), Quantity( - 'stress_tensor_determinant', - rf'Det\(stress tensor\)\s*:\s*({re_float})', dtype=float, unit='GPa**3'), + "stress_tensor_determinant", + rf"Det\(stress tensor\)\s*:\s*({re_float})", + dtype=float, + unit="GPa**3", + ), Quantity( - 'stress_eigenvalues_eigenvectors', - r' EIGENVECTORS AND EIGENVALUES OF THE STRESS TENSOR\s*([\d\.\-\s]+)', - str_operation=str_to_stress_eigenvalues, convert=False)] + energy_quantities + "stress_eigenvalues_eigenvectors", + r" EIGENVECTORS AND EIGENVALUES OF THE STRESS TENSOR\s*([\d\.\-\s]+)", + str_operation=str_to_stress_eigenvalues, + convert=False, + ), + ] + energy_quantities geometry_optimization_quantities = [ Quantity( - 'method', - r'\*{3}\s*((?:CONJUGATE GRADIENTS|L\-BFGS|BFGS))\s*\*{3}', flatten=False), + "method", + r"\*{3}\s*((?:CONJUGATE GRADIENTS|L\-BFGS|BFGS))\s*\*{3}", + flatten=False, + ), Quantity( - 'self_consistent', - r'SCF WAVEFUNCTION OPTIMIZATION([\s\S]+?)OPTIMIZ', repeats=False, - sub_parser=TextParser(quantities=scf_wavefunction_optimization_quantities)), + "self_consistent", + r"SCF WAVEFUNCTION OPTIMIZATION([\s\S]+?)OPTIMIZ", + repeats=False, + sub_parser=TextParser( + quantities=scf_wavefunction_optimization_quantities + ), + ), Quantity( - 'optimization_step', - r'(ATION STEP:\s*\d+[\s\S]+?)(?:\-\s+OPTIMIZ|\Z)', repeats=True, - sub_parser=TextParser(quantities=[ - # TODO parse atomic positions - Quantity('step', r'ATION STEP:\s*(\d+)'), - # I do not quite get why there can be multiple scfs in a step - Quantity( - 'information', - r'Informations at step\s*=\s*\d+\s*\-+([\s\S]+?)\-{5}', - str_operation=str_to_information), - Quantity( - 'self_consistent', - r'FUNCTION OPTIMIZATION([\s\S]+?)(?: SCF WAVE|\Z)', repeats=True, - sub_parser=TextParser(quantities=scf_wavefunction_optimization_quantities))])) + "optimization_step", + r"(ATION STEP:\s*\d+[\s\S]+?)(?:\-\s+OPTIMIZ|\Z)", + repeats=True, + sub_parser=TextParser( + quantities=[ + # TODO parse atomic positions + Quantity("step", r"ATION STEP:\s*(\d+)"), + # I do not quite get why there can be multiple scfs in a step + Quantity( + "information", + r"Informations at step\s*=\s*\d+\s*\-+([\s\S]+?)\-{5}", + str_operation=str_to_information, + ), + Quantity( + "self_consistent", + r"FUNCTION OPTIMIZATION([\s\S]+?)(?: SCF WAVE|\Z)", + repeats=True, + sub_parser=TextParser( + quantities=scf_wavefunction_optimization_quantities + ), + ), + ] + ), + ), ] molecular_dynamics_quantities = [ Quantity( - 'initial', - r' INITIAL\| (.+? {2})=\s+(.+)', str_operation=str_to_header, repeats=True), + "initial", + r" INITIAL\| (.+? {2})=\s+(.+)", + str_operation=str_to_header, + repeats=True, + ), Quantity( - 'md_step', - r'(SCF WAVEFUNCTION OPTIMIZATION[\s\S]+?ENSEMBLE TYPE[\s\S]+?\*{50})', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'ensemble_type', r'ENSEMBLE TYPE\s*=\s*(.+)'), - Quantity( - 'step', r'STEP NUMBER\s*=\s*(\d+)', dtype=int), - Quantity( - 'time', rf'TIME \[fs\]\s*=\s*({re_float})', dtype=float), - Quantity( - 'conserved_quantity', - rf'CONSERVED QUANTITY \[hartree\]\s*=\s*({re_float})', - dtype=float, unit='hartree'), - Quantity( - 'cpu_time', - rf'CPU TIME \[s\]\s*=\s*({re_float})\s*(re_float)', - dtype=float), - Quantity( - 'energy_drift', - rf'ENERGY DRIFT PER ATOM \[K\]\s*=\s*({re_float})\s*({re_float})', - dtype=float, unit='hartree'), - Quantity( - 'potential_energy', - rf'POTENTIAL ENERGY\[hartree\]\s*=\s*({re_float})\s*({re_float})', - dtype=float, unit='hartree'), - Quantity( - 'kinetic_energy', - rf'KINETIC ENERGY\[hartree\]\s*=\s*({re_float})\s*({re_float})', - dtype=float, unit='hartree'), - Quantity( - 'temperature', - rf'TEMPERATURE \[K\]\s*=\s*({re_float})\s*({re_float})', dtype=float), - Quantity( - 'pressure', - rf'PRESSURE \[bar\]\s*=\s*({re_float})\s*({re_float})', - dtype=float, unit='bar'), - Quantity( - 'barostat_temperature', - rf'BAROSTAT TEMP\[K\]\s*=\s*({re_float})\s*({re_float})', dtype=float), - Quantity( - 'volume', - rf'VOLUME\[bohr\^3\]\s*=\s*({re_float})\s*({re_float})', - dtype=float, unit='bohr**3'), - Quantity( - 'cell_length_instantaneous', - rf'CELL LNTHS\[bohr\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float), - Quantity( - 'cell_length_average', - rf'AVE\. CELL LNTHS\[bohr\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float), - Quantity( - 'cell_angle_instantaneous', - rf'CELL ANGLS\[deg\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float), - Quantity( - 'cell_angle_average', - rf'AVE\. CELL ANGLS\[deg\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float), - Quantity( - 'self_consistent', - r'(SCF WAVEFUNCTION OPTIMIZATION[\s\S]+?)\*{50}', repeats=True, - sub_parser=TextParser(quantities=scf_wavefunction_optimization_quantities))]) - ) + "md_step", + r"(SCF WAVEFUNCTION OPTIMIZATION[\s\S]+?ENSEMBLE TYPE[\s\S]+?\*{50})", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("ensemble_type", r"ENSEMBLE TYPE\s*=\s*(.+)"), + Quantity("step", r"STEP NUMBER\s*=\s*(\d+)", dtype=int), + Quantity( + "time", rf"TIME \[fs\]\s*=\s*({re_float})", dtype=float + ), + Quantity( + "conserved_quantity", + rf"CONSERVED QUANTITY \[hartree\]\s*=\s*({re_float})", + dtype=float, + unit="hartree", + ), + Quantity( + "cpu_time", + rf"CPU TIME \[s\]\s*=\s*({re_float})\s*(re_float)", + dtype=float, + ), + Quantity( + "energy_drift", + rf"ENERGY DRIFT PER ATOM \[K\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + unit="hartree", + ), + Quantity( + "potential_energy", + rf"POTENTIAL ENERGY\[hartree\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + unit="hartree", + ), + Quantity( + "kinetic_energy", + rf"KINETIC ENERGY\[hartree\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + unit="hartree", + ), + Quantity( + "temperature", + rf"TEMPERATURE \[K\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "pressure", + rf"PRESSURE \[bar\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + unit="bar", + ), + Quantity( + "barostat_temperature", + rf"BAROSTAT TEMP\[K\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "volume", + rf"VOLUME\[bohr\^3\]\s*=\s*({re_float})\s*({re_float})", + dtype=float, + unit="bohr**3", + ), + Quantity( + "cell_length_instantaneous", + rf"CELL LNTHS\[bohr\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "cell_length_average", + rf"AVE\. CELL LNTHS\[bohr\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "cell_angle_instantaneous", + rf"CELL ANGLS\[deg\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "cell_angle_average", + rf"AVE\. CELL ANGLS\[deg\]\s*=\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "self_consistent", + r"(SCF WAVEFUNCTION OPTIMIZATION[\s\S]+?)\*{50}", + repeats=True, + sub_parser=TextParser( + quantities=scf_wavefunction_optimization_quantities + ), + ), + ] + ), + ), ] quickstep_quantities = [ Quantity( - 'dft', - r' DFT\| (.+? {2}) +(.+)', str_operation=str_to_header, repeats=True), - Quantity('dft_u', r'(DFT\+U\|)'), - Quantity('mp2', r'(MP2\|)'), - Quantity('rpa', r'(RI-RPA\|)'), + "dft", + r" DFT\| (.+? {2}) +(.+)", + str_operation=str_to_header, + repeats=True, + ), + Quantity("dft_u", r"(DFT\+U\|)"), + Quantity("mp2", r"(MP2\|)"), + Quantity("rpa", r"(RI-RPA\|)"), + Quantity("functional", r" FUNCTIONAL\| (\S+):", repeats=True), Quantity( - 'functional', r' FUNCTIONAL\| (\S+):', repeats=True), + "vdw", + r" vdW POTENTIAL\| .+?([A-Z]\. [A-Z].+? \(\d+\))", + flatten=False, + repeats=True, + ), Quantity( - 'vdw', - r' vdW POTENTIAL\| .+?([A-Z]\. [A-Z].+? \(\d+\))', flatten=False, repeats=True), + "qs", + r" QS\| ((?:Method|Density cutoff)).*?:( {2}) +(.+)", + str_operation=str_to_header, + repeats=True, + ), Quantity( - 'qs', - r' QS\| ((?:Method|Density cutoff)).*?:( {2}) +(.+)', - str_operation=str_to_header, repeats=True), - Quantity( - 'atomic_kind_information', - r' ATOMIC KIND INFORMATION([\s\S]+?)\n\n\n', - sub_parser=TextParser(quantities=[Quantity( - 'atom', - r'(ic kind: [A-Z][a-z]?[\s\S]+?)(?:\d+\. Atom|\Z)', repeats=True, - sub_parser=TextParser(quantities=[ - Quantity('kind_label', r'ic kind:\s*(\w+)'), - Quantity('kind_number_of_atoms', r'Number of atoms:\s*(\d+)', dtype=int), - Quantity('kind_basis_set_name', r'Orbital Basis Set\s*(.+)'), - Quantity('basis_set_norm_type', r'Norm type:\s*(\d+)', dtype=int) - ] + n_orbital_basis_quantities))])), + "atomic_kind_information", + r" ATOMIC KIND INFORMATION([\s\S]+?)\n\n\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "atom", + r"(ic kind: [A-Z][a-z]?[\s\S]+?)(?:\d+\. Atom|\Z)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("kind_label", r"ic kind:\s*(\w+)"), + Quantity( + "kind_number_of_atoms", + r"Number of atoms:\s*(\d+)", + dtype=int, + ), + Quantity( + "kind_basis_set_name", + r"Orbital Basis Set\s*(.+)", + ), + Quantity( + "basis_set_norm_type", + r"Norm type:\s*(\d+)", + dtype=int, + ), + ] + + n_orbital_basis_quantities + ), + ) + ] + ), + ), Quantity( - 'total_maximum_numbers', - r' TOTAL NUMBERS AND MAXIMUM NUMBERS([\s\S]+?)\n\n\n', - sub_parser=TextParser(quantities=[Quantity( - '%s' % key.lower().replace('the ', '').replace(' ', '_').replace('-', '_'), - r'\- %s:\s*(\d+)' % key, dtype=int) for key in [ - 'Atomic kinds', 'Atoms', 'Shell sets', 'Shells', 'Primitive Cartesian functions', - 'Cartesian basis functions', 'Spherical basis functions', - 'Orbital basis functions', 'Local part of the GTH pseudopotential', - 'Non-local part of the GTH pseudopotential']])), + "total_maximum_numbers", + r" TOTAL NUMBERS AND MAXIMUM NUMBERS([\s\S]+?)\n\n\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "%s" + % key.lower() + .replace("the ", "") + .replace(" ", "_") + .replace("-", "_"), + r"\- %s:\s*(\d+)" % key, + dtype=int, + ) + for key in [ + "Atomic kinds", + "Atoms", + "Shell sets", + "Shells", + "Primitive Cartesian functions", + "Cartesian basis functions", + "Spherical basis functions", + "Orbital basis functions", + "Local part of the GTH pseudopotential", + "Non-local part of the GTH pseudopotential", + ] + ] + ), + ), Quantity( - 'atomic_coordinates', - r' ATOMIC COORDINATES IN (angstrom[\s\S]+?)\n\n\n', - convert=False, str_operation=str_to_atomic_coordinates), + "atomic_coordinates", + r" ATOMIC COORDINATES IN (angstrom[\s\S]+?)\n\n\n", + convert=False, + str_operation=str_to_atomic_coordinates, + ), Quantity( - 'scf_parameters', - r' SCF PARAMETERS([\s\S]+?)\*{79}', - sub_parser=TextParser(quantities=[ - Quantity('n_max_iteration', r'max_scf:\s*(\d+)', dtype=int), - Quantity( - 'threshold_energy_change', rf'eps_scf:\s*({re_float})', - dtype=float, unit='hartree'), - Quantity( - 'md', - r'( MD\| .+? {2} +.+)', - str_operation=md_extract, - convert=False, - repeats=True, - ), - ])), + "scf_parameters", + r" SCF PARAMETERS([\s\S]+?)\*{79}", + sub_parser=TextParser( + quantities=[ + Quantity("n_max_iteration", r"max_scf:\s*(\d+)", dtype=int), + Quantity( + "threshold_energy_change", + rf"eps_scf:\s*({re_float})", + dtype=float, + unit="hartree", + ), + Quantity( + "md", + r"( MD\| .+? {2} +.+)", + str_operation=md_extract, + convert=False, + repeats=True, + ), + ] + ), + ), # TODO add mp2, rpa, gw Quantity( - 'single_point', - r'SCF WAVEFUNCTION OPTIMIZATION([\s\S]+?)(?:\-{50}\n\s*\-|MD_ENERGIES|\Z)', repeats=False, - sub_parser=TextParser(quantities=scf_wavefunction_optimization_quantities)), + "single_point", + r"SCF WAVEFUNCTION OPTIMIZATION([\s\S]+?)(?:\-{50}\n\s*\-|MD_ENERGIES|\Z)", + repeats=False, + sub_parser=TextParser( + quantities=scf_wavefunction_optimization_quantities + ), + ), Quantity( - 'geometry_optimization', - r'STARTING.+?OPTIMIZATION([\s\S]+?(?:OPTIMIZATION COMPLETED|\Z))', - sub_parser=TextParser(quantities=geometry_optimization_quantities)), + "geometry_optimization", + r"STARTING.+?OPTIMIZATION([\s\S]+?(?:OPTIMIZATION COMPLETED|\Z))", + sub_parser=TextParser(quantities=geometry_optimization_quantities), + ), Quantity( - 'molecular_dynamics', - r'(MD_ENERGIES\| Initialization proceeding[\s\S]+?\-{50}\n\s*\-)', - sub_parser=TextParser(quantities=molecular_dynamics_quantities)) + "molecular_dynamics", + r"(MD_ENERGIES\| Initialization proceeding[\s\S]+?\-{50}\n\s*\-)", + sub_parser=TextParser(quantities=molecular_dynamics_quantities), + ), ] self._quantities = [ Quantity( - 'dbcsr', - r' (DBCSR)\| (.+? {2}) +(.+)', str_operation=str_to_header, repeats=True), + "dbcsr", + r" (DBCSR)\| (.+? {2}) +(.+)", + str_operation=str_to_header, + repeats=True, + ), Quantity( - 'program', - r'\*\*\s*PROGRAM ([\s\S]+?)(?:\*\*|\n\n|\Z)', - str_operation=str_to_program, repeats=True), + "program", + r"\*\*\s*PROGRAM ([\s\S]+?)(?:\*\*|\n\n|\Z)", + str_operation=str_to_program, + repeats=True, + ), Quantity( - 'cp2k', - r' CP2K\| (.+? {2}) +(.+)', str_operation=str_to_header, repeats=True), + "cp2k", + r" CP2K\| (.+? {2}) +(.+)", + str_operation=str_to_header, + repeats=True, + ), Quantity( - 'global', - r' GLOBAL\| (.+? {2}) +(.+)', str_operation=str_to_header, repeats=True), + "global", + r" GLOBAL\| (.+? {2}) +(.+)", + str_operation=str_to_header, + repeats=True, + ), Quantity( - 'restart', - r'RESTART INFORMATION\s*\*+\s*\*+([\s\S]+?)\*{79}', - sub_parser=TextParser(quantities=[ - Quantity('filename', r'RESTART FILE NAME: (\S+)'), - Quantity( - 'quantities', - r'RESTARTED QUANTITIES:\s*\*\s*([\s\S]+?)\Z', - str_operation=lambda x: [v.split('*')[1].strip() for v in x.strip().split('\n')])])), + "restart", + r"RESTART INFORMATION\s*\*+\s*\*+([\s\S]+?)\*{79}", + sub_parser=TextParser( + quantities=[ + Quantity("filename", r"RESTART FILE NAME: (\S+)"), + Quantity( + "quantities", + r"RESTARTED QUANTITIES:\s*\*\s*([\s\S]+?)\Z", + str_operation=lambda x: [ + v.split("*")[1].strip() for v in x.strip().split("\n") + ], + ), + ] + ), + ), Quantity( - 'lattice_vectors', - rf' CELL\| Vector [abc] \[angstrom\]:\s*({re_float})\s*({re_float})\s*({re_float})', - repeats=True), + "lattice_vectors", + rf" CELL\| Vector [abc] \[angstrom\]:\s*({re_float})\s*({re_float})\s*({re_float})", + repeats=True, + ), # TODO add restart find example Quantity( - 'quickstep', - r'\.\.\. make the atoms dance([\s\S]+?(?:\-{79}\s*\- +\-|\Z))', - sub_parser=TextParser(quantities=quickstep_quantities)), - Quantity('spin_polarized', r'\| Spin unrestricted \(spin\-polarized\) Kohn\-Sham calculation *([a-zA-Z]+)', repeats=False), + "quickstep", + r"\.\.\. make the atoms dance([\s\S]+?(?:\-{79}\s*\- +\-|\Z))", + sub_parser=TextParser(quantities=quickstep_quantities), + ), Quantity( - 'qs_dftb', - r' ##### ##### # ###### ####### ####### ######\s*' - r' # # # # # # # # # # #\s*' - r' # # # # # # # # # #\s*' - r' # # ##### # # # ##### # ######\s*' - r' # # # # # # # # # # #\s*' - r' # # # # # # # # # # #\s*' - r' #### # ##### # ###### # # ######\s*' - r'([\s\S]+?(?:\-{79}\s*\-|\Z))', - sub_parser=TextParser(quantities=quickstep_quantities)) + "spin_polarized", + r"\| Spin unrestricted \(spin\-polarized\) Kohn\-Sham calculation *([a-zA-Z]+)", + repeats=False, + ), + Quantity( + "qs_dftb", + r" ##### ##### # ###### ####### ####### ######\s*" + r" # # # # # # # # # # #\s*" + r" # # # # # # # # # #\s*" + r" # # ##### # # # ##### # ######\s*" + r" # # # # # # # # # # #\s*" + r" # # # # # # # # # # #\s*" + r" #### # ##### # ###### # # ######\s*" + r"([\s\S]+?(?:\-{79}\s*\-|\Z))", + sub_parser=TextParser(quantities=quickstep_quantities), + ), # TODO add other calculation types ] @@ -698,9 +937,13 @@ def str_to_information(val_in): class CP2KPDOSParser(DataTextParser): def init_quantities(self): self._quantities = [ - Quantity('atom_kind', r'\# *(?:Projected|P\.) DOS for atomic kind *([\da-zA-Z]+) *at'), - Quantity('orbitals', r' *Occupation(.+)', repeats=False), - Quantity('iter', r' *at iteration step i *\= *(\d+)')] + Quantity( + "atom_kind", + r"\# *(?:Projected|P\.) DOS for atomic kind *([\da-zA-Z]+) *at", + ), + Quantity("orbitals", r" *Occupation(.+)", repeats=False), + Quantity("iter", r" *at iteration step i *\= *(\d+)"), + ] class CP2KParser: @@ -709,8 +952,8 @@ def __init__(self): self.inp_parser = InpParser() self.pdos_parser = CP2KPDOSParser() # use a custom xyz parser as the output of cp2k is sometimes not up to standard - self.traj_parser = TrajParser(type='positions') - self.velocities_parser = TrajParser(type='velocities') + self.traj_parser = TrajParser(type="positions") + self.velocities_parser = TrajParser(type="velocities") self.cell_parser = DataTextParser() self.energy_parser = DataTextParser() self.force_parser = ForceParser() @@ -719,64 +962,113 @@ def __init__(self): # TODO add vdw parameter self._metainfo_name_map = { - 'started_at': 'start_time', 'started_on': 'start_host', - 'started_by': 'start_user', 'process_id': 'id', 'started_in': 'start_path', - 'ended_at': 'end_time', 'ran_on': 'end_host', 'ran_by': 'end_user', - 'stopped_in': 'end_path', 'version_string:': 'program_version', - 'source_code_revision_number:': 'svn_revision', - 'program_compiled_at': 'program_compilation_datetime', - 'program_compiled_on': 'program_compilation_host', - 'input_file_name': 'input_filename', - 'basis_set_file_name': 'basis_set_filename', - 'geminal_file_name': 'geminal_filename', - 'potential_file_name': 'potential_filename', - 'mm_potential_file_name': 'mm_potential_filename', - 'coordinate_file_name': 'coordinate_filename', - 'preferred_diagonalization_lib.': 'preferred_diagonalization_library', - 'spin_restricted_kohn-sham_(rks)_calculation': 'spin_restriction', - 'multiplicity': 'spin_target_multiplicity', - 'number_of_spin_states': 'number_of_spin_channels', 'charge': 'total_charge', - 'self-interaction_correction_(sic)': 'self_interaction_correction_method', - 'method': 'quickstep_method', 'density_cutoff': 'planewave_cutoff', - 'temperature': 'target_temperature', 'temperature_tolerance': 'target_temperature_tolerance', - 'pressure': 'target_pressure', 'print_md_information_every': 'print_frequency', - 'potential_form:': 'vdw_name', 'bj_damping:': 'bj_damping_name', - 'cutoff_radius_[bohr]:': 'cutoff_radius', 'scaling_factor:': 'scaling_factor', - 'exp_prefactor_for_damping:': 'damping_factor', 's6_scaling_factor:': 's6_scaling_factor', - 'sr6_scaling_factor:': 'sr6_scaling_factor', 's8_scaling_factor:': 's6_scaling_factor', - 'cutoff_for_cn_calculation:': 'cn_cutoff', 'optimization_method': 'method', - 'total_energy': 'energy', 'real_energy_change': 'energy_change', - 'decrease_in_energy': 'energy_decrease', 'conv_limit_for_step_size': 'step_size_convergence_limit', - 'convergence_in_step_size': 'step_size_convergence', - 'convergence_in_rms_step_size': 'rms_step_size_convergence', - 'conv_limit_for_gradients': 'gradient_convergence_limit', - 'conv_for_gradients': 'max_gradient_convergence', - 'conv_in_rms_gradients': 'rms_gradient_convergence', - 'exchange_correlation_energy': 'energy_XC', - 'electronic_kinetic_energy': 'energy_kinetic_electronic'} + "started_at": "start_time", + "started_on": "start_host", + "started_by": "start_user", + "process_id": "id", + "started_in": "start_path", + "ended_at": "end_time", + "ran_on": "end_host", + "ran_by": "end_user", + "stopped_in": "end_path", + "version_string:": "program_version", + "source_code_revision_number:": "svn_revision", + "program_compiled_at": "program_compilation_datetime", + "program_compiled_on": "program_compilation_host", + "input_file_name": "input_filename", + "basis_set_file_name": "basis_set_filename", + "geminal_file_name": "geminal_filename", + "potential_file_name": "potential_filename", + "mm_potential_file_name": "mm_potential_filename", + "coordinate_file_name": "coordinate_filename", + "preferred_diagonalization_lib.": "preferred_diagonalization_library", + "spin_restricted_kohn-sham_(rks)_calculation": "spin_restriction", + "multiplicity": "spin_target_multiplicity", + "number_of_spin_states": "number_of_spin_channels", + "charge": "total_charge", + "self-interaction_correction_(sic)": "self_interaction_correction_method", + "method": "quickstep_method", + "density_cutoff": "planewave_cutoff", + "temperature": "target_temperature", + "temperature_tolerance": "target_temperature_tolerance", + "pressure": "target_pressure", + "print_md_information_every": "print_frequency", + "potential_form:": "vdw_name", + "bj_damping:": "bj_damping_name", + "cutoff_radius_[bohr]:": "cutoff_radius", + "scaling_factor:": "scaling_factor", + "exp_prefactor_for_damping:": "damping_factor", + "s6_scaling_factor:": "s6_scaling_factor", + "sr6_scaling_factor:": "sr6_scaling_factor", + "s8_scaling_factor:": "s6_scaling_factor", + "cutoff_for_cn_calculation:": "cn_cutoff", + "optimization_method": "method", + "total_energy": "energy", + "real_energy_change": "energy_change", + "decrease_in_energy": "energy_decrease", + "conv_limit_for_step_size": "step_size_convergence_limit", + "convergence_in_step_size": "step_size_convergence", + "convergence_in_rms_step_size": "rms_step_size_convergence", + "conv_limit_for_gradients": "gradient_convergence_limit", + "conv_for_gradients": "max_gradient_convergence", + "conv_in_rms_gradients": "rms_gradient_convergence", + "exchange_correlation_energy": "energy_XC", + "electronic_kinetic_energy": "energy_kinetic_electronic", + } self._self_interaction_map = { - 'NO': None, 'D SIC': 'SIC_AD', 'Explicit Orbital SIC': 'SIC_EXPLICIT_ORBITALS', - 'SPZ/MAURI SIC': 'SIC_MAURI_SPZ', 'US/MAURI SIC': 'SIC_MAURI_US'} + "NO": None, + "D SIC": "SIC_AD", + "Explicit Orbital SIC": "SIC_EXPLICIT_ORBITALS", + "SPZ/MAURI SIC": "SIC_MAURI_SPZ", + "US/MAURI SIC": "SIC_MAURI_US", + } self._optimization_method_map = { - 'CONJUGATE GRADIENTS': 'conjugate gradient', 'BFGS': 'bfgs', 'L-BFGS': 'bfgs'} + "CONJUGATE GRADIENTS": "conjugate gradient", + "BFGS": "bfgs", + "L-BFGS": "bfgs", + } self._file_extension_map = { - 'XYZ': 'xyz', 'XMOL': 'xyz', 'ATOMIC': 'xyz', 'PDB': 'pdb', 'DCD': 'dcd'} + "XYZ": "xyz", + "XMOL": "xyz", + "ATOMIC": "xyz", + "PDB": "pdb", + "DCD": "dcd", + } self._xc_functional_map = { - 'BLYP': [XCFunctionalProperty('GGA_X_B88'), XCFunctionalProperty('GGA_C_LYP')], - 'LDA': [XCFunctionalProperty('LDA_XC_TETER93')], - 'PADE': [XCFunctionalProperty('LDA_XC_TETER93')], - 'PBE': [XCFunctionalProperty('GGA_X_PBE'), XCFunctionalProperty('GGA_C_PBE')], - 'OLYP': [XCFunctionalProperty('GGA_X_OPTX'), XCFunctionalProperty('GGA_C_LYP')], - 'HCTH120': [XCFunctionalProperty('GGA_XC_HCTH_120')], - 'PBE0': [XCFunctionalProperty('HYB_GGA_XC_PBEH')], - 'B3LYP': [XCFunctionalProperty('HYB_GGA_XC_B3LYP')], - 'TPSS': [XCFunctionalProperty('MGGA_X_TPSS'), XCFunctionalProperty('MGGA_C_TPSS')]} - self._ensemble_map = {'NVE': 'NVE', 'NVT': 'NVT', 'NPT_F': 'NPT', 'NPT_I': 'NPT'} + "BLYP": [ + XCFunctionalProperty("GGA_X_B88"), + XCFunctionalProperty("GGA_C_LYP"), + ], + "LDA": [XCFunctionalProperty("LDA_XC_TETER93")], + "PADE": [XCFunctionalProperty("LDA_XC_TETER93")], + "PBE": [ + XCFunctionalProperty("GGA_X_PBE"), + XCFunctionalProperty("GGA_C_PBE"), + ], + "OLYP": [ + XCFunctionalProperty("GGA_X_OPTX"), + XCFunctionalProperty("GGA_C_LYP"), + ], + "HCTH120": [XCFunctionalProperty("GGA_XC_HCTH_120")], + "PBE0": [XCFunctionalProperty("HYB_GGA_XC_PBEH")], + "B3LYP": [XCFunctionalProperty("HYB_GGA_XC_B3LYP")], + "TPSS": [ + XCFunctionalProperty("MGGA_X_TPSS"), + XCFunctionalProperty("MGGA_C_TPSS"), + ], + } + self._ensemble_map = { + "NVE": "NVE", + "NVT": "NVT", + "NPT_F": "NPT", + "NPT_I": "NPT", + } # TODO extend map self._vdw_map = { "S. Grimme, JCC 27: 1787 (2006)": "G06", - "S. Grimme et al, JCP 132: 154104 (2010)": "G10"} + "S. Grimme et al, JCP 132: 154104 (2010)": "G10", + } self._settings = None @@ -802,6 +1094,7 @@ def init_parser(self): @property def settings(self): if self._settings is None: + def to_dict(data, repeats=True): data_dict = dict() for key, val in data: @@ -815,71 +1108,93 @@ def to_dict(data, repeats=True): return data_dict self._settings = dict() - self._settings['dft'] = to_dict( - self.out_parser.get(self._calculation_type, {}).get('dft', [])) - self._settings['qs'] = to_dict( - self.out_parser.get(self._calculation_type, {}).get('qs', [])) - self._settings['vdw'] = self.out_parser.get(self._calculation_type, {}).get('vdw', []) - self._settings['dbcsr'] = to_dict(self.out_parser.get('dbcsr', []), False) - self._settings['program'] = to_dict(self.out_parser.get('program', [])) - self._settings['cp2k'] = to_dict(self.out_parser.get('cp2k', []), False) - self._settings['global'] = to_dict(self.out_parser.get('global', []), False) - self._settings['md'] = to_dict( - self.out_parser.get(self._calculation_type, {}).get('scf_parameters', {}).get('md', [])) - self._settings['md_setup'] = to_dict(self.out_parser.get(self._calculation_type, {}).get('scf_parameters', {}).get('md_setup', [])) + self._settings["dft"] = to_dict( + self.out_parser.get(self._calculation_type, {}).get("dft", []) + ) + self._settings["qs"] = to_dict( + self.out_parser.get(self._calculation_type, {}).get("qs", []) + ) + self._settings["vdw"] = self.out_parser.get(self._calculation_type, {}).get( + "vdw", [] + ) + self._settings["dbcsr"] = to_dict(self.out_parser.get("dbcsr", []), False) + self._settings["program"] = to_dict(self.out_parser.get("program", [])) + self._settings["cp2k"] = to_dict(self.out_parser.get("cp2k", []), False) + self._settings["global"] = to_dict(self.out_parser.get("global", []), False) + self._settings["md"] = to_dict( + self.out_parser.get(self._calculation_type, {}) + .get("scf_parameters", {}) + .get("md", []) + ) + self._settings["md_setup"] = to_dict( + self.out_parser.get(self._calculation_type, {}) + .get("scf_parameters", {}) + .get("md_setup", []) + ) return self._settings def _normalize_filename(self, filename): - if filename.startswith('='): + if filename.startswith("="): filename = filename[1:] - elif re.match(r'./', filename): + elif re.match(r"./", filename): pass else: - project_name = self.inp_parser.get('GLOBAL/PROJECT_NAME') + project_name = self.inp_parser.get("GLOBAL/PROJECT_NAME") if filename: - filename = '%s-%s' % (project_name, filename) + filename = "%s-%s" % (project_name, filename) else: filename = project_name return filename def get_atomic_number(self, element): - atomic_numbers = self.out_parser.get( - self._calculation_type, {}).get('atomic_coordinates').atomic_numbers + atomic_numbers = ( + self.out_parser.get(self._calculation_type, {}) + .get("atomic_coordinates") + .atomic_numbers + ) return atomic_numbers.get(element, 0) def get_ensemble_type(self, frame): - if self.sampling_method != 'molecular_dynamics': + if self.sampling_method != "molecular_dynamics": return if frame == 0: - return self.settings['md'].get('ensemble_type', '') + return self.settings["md"].get("ensemble_type", "") else: - calculation = self.out_parser.get(self._calculation_type, '') + calculation = self.out_parser.get(self._calculation_type, "") if not calculation: return calculation - return calculation.molecular_dynamics.md_step[frame - 1].get('ensemble_type', '') + return calculation.molecular_dynamics.md_step[frame - 1].get( + "ensemble_type", "" + ) def get_time_step(self): - return self.settings['md'].get('time_step') + return self.settings["md"].get("time_step") def get_velocities(self, frame): - if self.out_parser.get(self._calculation_type, {}).get('molecular_dynamics') is not None: + if ( + self.out_parser.get(self._calculation_type, {}).get("molecular_dynamics") + is not None + ): return if self.velocities_parser.mainfile is None: - frequency, filename = self.settings['md'].get('velocities', '0 none').split() + frequency, filename = ( + self.settings["md"].get("velocities", "0 none").split() + ) frequency = int(frequency) if frequency == 0: - filename = '%s-vel-1.xyz' % self.inp_parser.get('GLOBAL/PROJECT_NAME') + filename = "%s-vel-1.xyz" % self.inp_parser.get("GLOBAL/PROJECT_NAME") frequency = 1 self.velocities_parser.mainfile = os.path.join(self.maindir, filename) self.velocities_parser.units = resolve_unit( - self.inp_parser.get('MOTION/PRINT/VELOCITIES/UNIT', 'bohr*au_t^-1')) + self.inp_parser.get("MOTION/PRINT/VELOCITIES/UNIT", "bohr*au_t^-1") + ) self.velocities_parser._frequency = frequency - if self.get_ensemble_type(frame).lower() == 'REFTRAJ': + if self.get_ensemble_type(frame).lower() == "REFTRAJ": frame -= 1 if frame < 0: @@ -888,17 +1203,23 @@ def get_velocities(self, frame): try: return self.velocities_parser.get_trajectory(frame) except Exception: - self.logger.error('Error reading velocities.') + self.logger.error("Error reading velocities.") def get_trajectory(self, frame): trajectory = None if frame == 0: - coord = self.inp_parser.get('FORCE_EVAL/SUBSYS/COORD/DEFAULT_KEYWORD') - units = resolve_unit(self.inp_parser.get('FORCE_EVAL/SUBSYS/COORD/UNIT', 'angstrom')) + coord = self.inp_parser.get("FORCE_EVAL/SUBSYS/COORD/DEFAULT_KEYWORD") + units = resolve_unit( + self.inp_parser.get("FORCE_EVAL/SUBSYS/COORD/UNIT", "angstrom") + ) if coord is None: - coord_filename = self.inp_parser.get('FORCE_EVAL/SUBSYS/TOPOLOGY/COORD_FILE_NAME', '') - self.traj_parser.mainfile = os.path.join(self.maindir, coord_filename.strip()) + coord_filename = self.inp_parser.get( + "FORCE_EVAL/SUBSYS/TOPOLOGY/COORD_FILE_NAME", "" + ) + self.traj_parser.mainfile = os.path.join( + self.maindir, coord_filename.strip() + ) self.traj_parser.units = units if self.traj_parser.trajectory: result = self.traj_parser.trajectory[0] @@ -909,7 +1230,9 @@ def get_trajectory(self, frame): else: coord = np.transpose([c.split() for c in coord]) positions = np.array(coord[1:4], dtype=float).T * units - scaled = 'T' in self.inp_parser.get('FORCE_EVAL/SUBSYS/COORD/SCALED', 'False') + scaled = "T" in self.inp_parser.get( + "FORCE_EVAL/SUBSYS/COORD/SCALED", "False" + ) if scaled: trajectory = Trajectory(labels=coord[0], scaled_positions=positions) else: @@ -920,22 +1243,29 @@ def get_trajectory(self, frame): if self.traj_parser.mainfile is None: # try to get it from md - frequency, filename = self.settings['md'].get('coordinates', '0 none').split() + frequency, filename = ( + self.settings["md"].get("coordinates", "0 none").split() + ) frequency = int(frequency) if frequency == 0: - filename = self.inp_parser.get('MOTION/PRINT/TRAJECTORY/FILENAME', '').strip() + filename = self.inp_parser.get( + "MOTION/PRINT/TRAJECTORY/FILENAME", "" + ).strip() filename = self._normalize_filename(filename) - traj_format = self.inp_parser.get('MOTION/PRINT/TRAJECTORY/FORMAT', 'XYZ').strip() - traj_format = self._file_extension_map.get(traj_format, 'xyz') - filename = f'{filename}-pos-1.{traj_format}' + traj_format = self.inp_parser.get( + "MOTION/PRINT/TRAJECTORY/FORMAT", "XYZ" + ).strip() + traj_format = self._file_extension_map.get(traj_format, "xyz") + filename = f"{filename}-pos-1.{traj_format}" frequency = 1 self.traj_parser.mainfile = os.path.join(self.maindir, filename) self.traj_parser.units = resolve_unit( - self.inp_parser.get('MOTION/PRINT/TRAJECTORY/UNIT', 'angstrom')) + self.inp_parser.get("MOTION/PRINT/TRAJECTORY/UNIT", "angstrom") + ) self.traj_parser._frequency = frequency - if self.get_ensemble_type(frame) == 'REFTRAJ': + if self.get_ensemble_type(frame) == "REFTRAJ": frame -= 1 if frame < 0: @@ -945,90 +1275,115 @@ def get_trajectory(self, frame): return self.traj_parser.get_trajectory(frame) except Exception: self.logger.error( - 'Error reading trajectory for the specific frame.', - data={'frame': frame}, + "Error reading trajectory for the specific frame.", + data={"frame": frame}, ) def get_lattice_vectors(self, frame): lattice_vectors = None if frame == 0: - lattice_vectors = self.out_parser.get('lattice_vectors') + lattice_vectors = self.out_parser.get("lattice_vectors") if lattice_vectors is None: # get it from input - cell = self.inp_parser.get('FORCE_EVAL/SUBSYS/CELL') + cell = self.inp_parser.get("FORCE_EVAL/SUBSYS/CELL") # is this the unit for cell? how about for angles units = resolve_unit( - self.inp_parser.get('FORCE_EVAL/SUBSYS/COORD/UNIT', 'angstrom')) + self.inp_parser.get("FORCE_EVAL/SUBSYS/COORD/UNIT", "angstrom") + ) if cell is None: return - if 'A' in cell and 'B' in cell and 'C' in cell: - lattice_vectors = np.array([ - cell.get(c).split() for c in ('A', 'B', 'C')], dtype=float) * units - elif 'ABC' in cell: - abc = (np.array( - cell.get('ABC').split(), dtype=float) * units).to('angstrom').magnitude - angles = np.array(cell.get('ALPHA_BETA_GAMMA', '90. 90. 90.').split(), dtype=float) - lattice_vectors = ase.geometry.cellpar_to_cell(np.hstack((abc, angles))) * ureg.angstrom + if "A" in cell and "B" in cell and "C" in cell: + lattice_vectors = ( + np.array( + [cell.get(c).split() for c in ("A", "B", "C")], dtype=float + ) + * units + ) + elif "ABC" in cell: + abc = ( + (np.array(cell.get("ABC").split(), dtype=float) * units) + .to("angstrom") + .magnitude + ) + angles = np.array( + cell.get("ALPHA_BETA_GAMMA", "90. 90. 90.").split(), dtype=float + ) + lattice_vectors = ( + ase.geometry.cellpar_to_cell(np.hstack((abc, angles))) + * ureg.angstrom + ) else: units = resolve_unit( - self.inp_parser.get('FORCE_EVAL/SUBSYS/COORD/UNIT', 'angstrom')) - lattice_vectors = np.array(lattice_vectors[:3], dtype=np.float64) * units + self.inp_parser.get("FORCE_EVAL/SUBSYS/COORD/UNIT", "angstrom") + ) + lattice_vectors = ( + np.array(lattice_vectors[:3], dtype=np.float64) * units + ) if lattice_vectors is not None: return lattice_vectors if self.cell_parser.mainfile is None: - frequency, filename = self.settings['md'].get('simulation_cell', '0 none').split() + frequency, filename = ( + self.settings["md"].get("simulation_cell", "0 none").split() + ) frequency = int(frequency) if frequency == 0: # TODO test this I cannot find a sample output cell filee - filename = self.inp_parser.get('MOTION/PRINT/CELL/FILENAME', '').strip() + filename = self.inp_parser.get("MOTION/PRINT/CELL/FILENAME", "").strip() frequency = 1 if filename: self.cell_parser.mainfile = os.path.join(self.maindir, filename) self.cell_parser.units = resolve_unit( - self.inp_parser.get('MOTION/PRINT/TRAJECTORY/UNIT', 'angstrom')) + self.inp_parser.get("MOTION/PRINT/TRAJECTORY/UNIT", "angstrom") + ) self.cell_parser._frequency = frequency else: - if self.sampling_method == 'molecular_dynamics': + if self.sampling_method == "molecular_dynamics": # check that this is not an NPT ensemble_type = self.get_ensemble_type(frame) - if ensemble_type[:3] == 'NPT': + if ensemble_type[:3] == "NPT": return return self.get_lattice_vectors(0) # TODO how does the lattice file looks like during restart - frame -= (self._step_start - 1) + frame -= self._step_start - 1 - if self.get_ensemble_type(frame) == 'REFTRAJ': + if self.get_ensemble_type(frame) == "REFTRAJ": frame -= 1 if frame % self.cell_parser._frequency != 0 or frame < 0: return try: - return self.cell_parser.data[frame // self.cell_parser._frequency] * resolve_unit(self.cell_parser.units) + return self.cell_parser.data[ + frame // self.cell_parser._frequency + ] * resolve_unit(self.cell_parser.units) except Exception: - self.logger.error('Error reading lattice vectors.') + self.logger.error("Error reading lattice vectors.") def get_md_output(self, frame): if self.energy_parser.mainfile is None: - frequency, filename = self.settings['md'].get('energies', '0, none').split() + frequency, filename = self.settings["md"].get("energies", "0, none").split() frequency = int(frequency) if frequency == 0: return dict() self.energy_parser.mainfile = os.path.join(self.maindir, filename) self.energy_parser._frequency = frequency - self.energy_parser._step = [d[0] for d in self.energy_parser.data] if self.energy_parser.data is not None else [] + self.energy_parser._step = ( + [d[0] for d in self.energy_parser.data] + if self.energy_parser.data is not None + else [] + ) if self.energy_parser.mainfile is None: return dict() - if self.get_ensemble_type(frame) == 'REFTRAJ': + if self.get_ensemble_type(frame) == "REFTRAJ": frame -= 1 if frame < 0: @@ -1043,34 +1398,41 @@ def get_md_output(self, frame): temperature_instantaneous=data[3], potential_energy_instantaneous=data[4] * ureg.hartree, conserved_quantity=data[5] * ureg.hartree, - cpu_time_instantaneous=data[6]) + cpu_time_instantaneous=data[6], + ) except Exception: - self.logger.error('Error reading MD energies.') + self.logger.error("Error reading MD energies.") return dict() def get_forces(self, frame): - filename = self.inp_parser.get('FORCE_EVAL/PRINT/FORCES/FILENAME', '').strip() + filename = self.inp_parser.get("FORCE_EVAL/PRINT/FORCES/FILENAME", "").strip() filename = self._normalize_filename(filename) - filename = '%s-1_%d.xyz' % (filename, frame) + filename = "%s-1_%d.xyz" % (filename, frame) self.force_parser.mainfile = os.path.join(self.maindir, filename) - return self.force_parser.get('atom_forces') + return self.force_parser.get("atom_forces") def get_xc_functionals(self): - functionals = self.inp_parser.get('FORCE_EVAL/DFT/XC/XC_FUNCTIONAL/VALUE') - if functionals is None or functionals == 'NO_SHORTCUT': - functional_values = self.inp_parser.get('FORCE_EVAL/DFT/XC/XC_FUNCTIONAL', {}) + functionals = self.inp_parser.get("FORCE_EVAL/DFT/XC/XC_FUNCTIONAL/VALUE") + if functionals is None or functionals == "NO_SHORTCUT": + functional_values = self.inp_parser.get( + "FORCE_EVAL/DFT/XC/XC_FUNCTIONAL", {} + ) functionals = [] for name, attrib in functional_values.items(): name = name.upper() - if name == 'VALUE': + if name == "VALUE": continue # get xc_func from mapping then apply read attributes # if func is not in mapping, create it values = self._xc_functional_map.get(name, [XCFunctionalProperty(name)]) for n, value in enumerate(values): - weight = attrib.get('SCALE_X', None) if n == 0 else attrib.get('SCALE_C', None) - value._data.update({'weight': weight}) + weight = ( + attrib.get("SCALE_X", None) + if n == 0 + else attrib.get("SCALE_C", None) + ) + value._data.update({"weight": weight}) functionals.extend(values) else: names = [functionals] if not isinstance(functionals, list) else functionals @@ -1078,33 +1440,35 @@ def get_xc_functionals(self): for name in names: name = name.upper() if name not in self._xc_functional_map: - self.logger.error('Cannot resolve xc functional') + self.logger.error("Cannot resolve xc functional") continue functionals.extend(self._xc_functional_map.get(name)) return functionals def parse_settings(self): - ''' + """ Parses the initial settings of the CP2K calculation. - ''' + """ sec_run = self.archive.run[-1] - cp2k_settings = self.settings.get('cp2k', {}) + cp2k_settings = self.settings.get("cp2k", {}) if cp2k_settings: - version = cp2k_settings.get('program_version') - host = cp2k_settings.get('program_compilation_host') + version = cp2k_settings.get("program_version") + host = cp2k_settings.get("program_compilation_host") sec_run.program = Program( - name='CP2K', version=version[0] if isinstance(version, list) else version, - compilation_host=host[0] if isinstance(host, list) else host) + name="CP2K", + version=version[0] if isinstance(version, list) else version, + compilation_host=host[0] if isinstance(host, list) else host, + ) sec_run.x_cp2k_program_information = cp2k_settings - dbcsr_settings = self.settings.get('dbcsr', {}) + dbcsr_settings = self.settings.get("dbcsr", {}) sec_run.x_cp2k_dbcsr = dbcsr_settings if dbcsr_settings else None - global_settings = self.settings.get('global', {}) + global_settings = self.settings.get("global", {}) sec_run.x_cp2k_global_settings = global_settings if global_settings else None - program_settings = self.settings.get('program', {}) + program_settings = self.settings.get("program", {}) if program_settings: sec_startinformation = x_cp2k_section_startinformation() sec_run.x_cp2k_section_startinformation.append(sec_startinformation) @@ -1112,26 +1476,32 @@ def parse_settings(self): sec_run.x_cp2k_section_end_information.append(sec_endinformation) section = sec_startinformation for key, val in program_settings.items(): - if key == 'id' and isinstance(val, list): + if key == "id" and isinstance(val, list): sec_endinformation.x_cp2k_end_id = val[1] - key, val = 'start_id', val[0] - section = sec_endinformation if key.startswith('end') else sec_startinformation + key, val = "start_id", val[0] + section = ( + sec_endinformation + if key.startswith("end") + else sec_startinformation + ) val = val[0] if isinstance(val, list) else val - section.m_set(section.m_get_quantity_definition(f'x_cp2k_{key}'), val) + section.m_set(section.m_get_quantity_definition(f"x_cp2k_{key}"), val) - restart = self.out_parser.get('restart') + restart = self.out_parser.get("restart") if restart is not None: sec_restart = x_cp2k_section_restart_information() sec_run.x_cp2k_section_restart_information.append(sec_restart) - sec_restart.x_cp2k_restart_file_name = restart.get('filename') - sec_restart.x_cp2k_restarted_quantity_name = ' '.join(restart.get('quantities')) + sec_restart.x_cp2k_restart_file_name = restart.get("filename") + sec_restart.x_cp2k_restarted_quantity_name = " ".join( + restart.get("quantities") + ) def parse_input(self): - ''' + """ Parses input file from the settings. - ''' - input_filename = self.settings.get('cp2k', {}).get('input_filename') - project_name = self.settings.get('global', {}).get('project_name') + """ + input_filename = self.settings.get("cp2k", {}).get("input_filename") + project_name = self.settings.get("global", {}).get("project_name") if input_filename is None and project_name is None: return @@ -1143,10 +1513,10 @@ def resolve_definition(name): def override_keyword(name): # override keys to be compatible with metainfo name # TODO change metainfo name - if name.endswith('_VALUE'): - return name.replace('VALUE', 'SECTION_PARAMETERS') - elif name.endswith('KIND_RI_AUX_BASIS'): - return name.replace('BASIS', 'BASIS_SET') + if name.endswith("_VALUE"): + return name.replace("VALUE", "SECTION_PARAMETERS") + elif name.endswith("KIND_RI_AUX_BASIS"): + return name.replace("BASIS", "BASIS_SET") return name def parse(name, data, section): @@ -1154,91 +1524,115 @@ def parse(name, data, section): sec_def = resolve_definition(name) if sec_def is not None: sub_section = sec_def.section_cls() - sub_section_def = section.m_def.all_sub_sections_by_section.get(sec_def.section_cls.m_def)[0] + sub_section_def = section.m_def.all_sub_sections_by_section.get( + sec_def.section_cls.m_def + )[0] section.m_add_sub_section(sub_section_def, sub_section) for key, val in data.items(): - parse(f'{name}_{key}', val, sub_section) + parse(f"{name}_{key}", val, sub_section) elif isinstance(data, list) and data: for val in data: parse(name, val, section) else: - name = name.replace('_section', '') + name = name.replace("_section", "") name = override_keyword(name) quantity_def = resolve_definition(name) if quantity_def is not None: - section.m_set(section.m_get_quantity_definition(name), quantity_def.type(data)) + section.m_set( + section.m_get_quantity_definition(name), quantity_def.type(data) + ) - input_files = get_files(input_filename, self.filepath, self.mainfile, deep=False) + input_files = get_files( + input_filename, self.filepath, self.mainfile, deep=False + ) if not input_files: self.logger.warning( - 'Input *.inp file not found. We will attempt finding the restart file from ' - 'the project_name appending a -1, -1.restart.', - data={'project_name': project_name}, + "Input *.inp file not found. We will attempt finding the restart file from " + "the project_name appending a -1, -1.restart.", + data={"project_name": project_name}, ) # Patch to check if the input is .restart and CP2K appended a -1 after the name if project_name: - project_filename = f'{project_name}-1.restart' - input_files = get_files(project_filename, self.filepath, self.mainfile, deep=False) + project_filename = f"{project_name}-1.restart" + input_files = get_files( + project_filename, self.filepath, self.mainfile, deep=False + ) else: return if len(input_files) > 1: - self.logger.warning(f'Multiple input files found. We will parse the first read file.') + self.logger.warning( + f"Multiple input files found. We will parse the first read file." + ) self.inp_parser.mainfile = input_files[0] - parse('x_cp2k_section_input', self.inp_parser.tree, self.archive.run[-1]) + parse("x_cp2k_section_input", self.inp_parser.tree, self.archive.run[-1]) def parse_scc(self, source): sec_run = self.archive.run[-1] if source is None: return - time_initial = sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + time_initial = ( + sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + ) sec_scc = Calculation() sec_run.calculation.append(sec_scc) sec_energy = Energy() sec_scc.energy = sec_energy - if source.get('energy_total') is not None: - sec_energy.total = EnergyEntry(value=source.get('energy_total')) - if source.get('electronic_kinetic_energy') is not None: - sec_energy.kinetic_electronic = EnergyEntry(value=source.get('electronic_kinetic_energy')[-1]) - if source.get('exchange_correlation_energy') is not None: - sec_energy.xc = EnergyEntry(value=source.get('exchange_correlation_energy')[-1]) - if source.get('fermi_energy') is not None: - sec_energy.fermi = source.get('fermi_energy')[-1] - sec_energy.highest_occupied = source.get('fermi_energy')[-1] - - if source.get('stress_tensor') is not None: + if source.get("energy_total") is not None: + sec_energy.total = EnergyEntry(value=source.get("energy_total")) + if source.get("electronic_kinetic_energy") is not None: + sec_energy.kinetic_electronic = EnergyEntry( + value=source.get("electronic_kinetic_energy")[-1] + ) + if source.get("exchange_correlation_energy") is not None: + sec_energy.xc = EnergyEntry( + value=source.get("exchange_correlation_energy")[-1] + ) + if source.get("fermi_energy") is not None: + sec_energy.fermi = source.get("fermi_energy")[-1] + sec_energy.highest_occupied = source.get("fermi_energy")[-1] + + if source.get("stress_tensor") is not None: sec_stress = Stress() sec_scc.stress = sec_stress - sec_stress.total = StressEntry(value=source.get('stress_tensor')) + sec_stress.total = StressEntry(value=source.get("stress_tensor")) # self consistency - for iteration in source.get('iteration', []): - time_initial = sec_scc.scf_iteration[-1].time_physical if sec_scc.scf_iteration else time_initial + for iteration in source.get("iteration", []): + time_initial = ( + sec_scc.scf_iteration[-1].time_physical + if sec_scc.scf_iteration + else time_initial + ) sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf_energy = Energy() sec_scf.energy = sec_scf_energy for key, val in iteration.items(): if val is not None: - if key == 'energy_change': + if key == "energy_change": sec_scf_energy.change = val - elif key.startswith('energy_'): - sec_scf_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '')), EnergyEntry(value=val)) - elif key == 'time_calculation': + elif key.startswith("energy_"): + sec_scf_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "")), + EnergyEntry(value=val), + ) + elif key == "time_calculation": sec_scf.time_calculation = val sec_scf.time_physical = val + time_initial else: sec_scf.m_set(sec_scf.m_get_quantity_definition(key), val) if sec_scc.scf_iteration: - sec_scc.time_calculation = sum([iteration.time_calculation for iteration in sec_scc.scf_iteration]) + sec_scc.time_calculation = sum( + [iteration.time_calculation for iteration in sec_scc.scf_iteration] + ) sec_scc.time_physical = sec_scc.scf_iteration[-1].time_physical - atom_forces = source.get('atom_forces', self.get_forces(source._frame)) + atom_forces = source.get("atom_forces", self.get_forces(source._frame)) if atom_forces is not None: atom_forces = np.array(atom_forces, np.float64) * ureg.hartree / ureg.bohr sec_forces = Forces() @@ -1272,19 +1666,24 @@ def parse_system(self, trajectory): elif trajectory.scaled_positions is not None and lattice_vectors is not None: sec_atoms.positions = np.dot(trajectory.scaled_positions, lattice_vectors) - labels = trajectory.labels if trajectory.labels is not None else self.out_parser.get( - self._calculation_type).get('atomic_coordinates') + labels = ( + trajectory.labels + if trajectory.labels is not None + else self.out_parser.get(self._calculation_type).get("atomic_coordinates") + ) if labels is not None: sec_atoms.labels = labels if lattice_vectors is not None: sec_atoms.lattice_vectors = lattice_vectors - periodic = self.inp_parser.get('FORCE_EVAL/SUBSYS/CELL/PERIODIC', 'xyz').lower() - sec_atoms.periodic = [v in periodic for v in ('x', 'y', 'z')] + periodic = self.inp_parser.get( + "FORCE_EVAL/SUBSYS/CELL/PERIODIC", "xyz" + ).lower() + sec_atoms.periodic = [v in periodic for v in ("x", "y", "z")] # TODO test this I cannot find an example # velocities - if self.sampling_method == 'molecular_dynamics': + if self.sampling_method == "molecular_dynamics": velocities = self.get_velocities(trajectory._frame) if velocities is not None: sec_atoms.velocities = velocities @@ -1304,7 +1703,9 @@ def parse_dos(self, scc: Calculation, pdos_files: list[str]): if not pdos_files: return - def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: float): + def _gaussian_convolution_pdos( + data: np.ndarray, width: float, delta_energy: float + ): """Convolutes / smoothes the histogram data with a Gaussian distribution function as defined in scipy.stats.norm. The mesh of energies is also expanded (with delta_energy in eV) to resolve better the Gaussians. @@ -1332,15 +1733,18 @@ def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: flo for i, new_energy in enumerate(new_energies): for j in range(n_orbitals): convoluted_pdos[i, j] = np.sum( - orbital_contributions[:, j] * gaussian.pdf(new_energy - energies_eV) + orbital_contributions[:, j] + * gaussian.pdf(new_energy - energies_eV) ) return new_energies, np.transpose(convoluted_pdos) # Unrestricted Kohn-Sham (spin-polarized) calculation - n_spin_channels = 2 if self.out_parser.get('spin_polarized') == 'UKS' else 1 + n_spin_channels = 2 if self.out_parser.get("spin_polarized") == "UKS" else 1 # We resolve the number of atom parameters (or kinds) to check if they match the number of PDOS files - if self.archive.m_xpath('run[-1].method[-1].atom_parameters') is None: - self.logger.warning('Could not extract the number of atom kinds from method.') + if self.archive.m_xpath("run[-1].method[-1].atom_parameters") is None: + self.logger.warning( + "Could not extract the number of atom kinds from method." + ) return n_atom_params = len(self.archive.run[-1].method[-1].atom_parameters) @@ -1349,24 +1753,33 @@ def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: flo atoms = [] for f in pdos_files: self.pdos_parser.mainfile = f - atom_kind = self.pdos_parser.get('atom_kind') + atom_kind = self.pdos_parser.get("atom_kind") atoms.append(atom_kind) # This stores a list of tuples ordered depending on the atom_kind label. Useful # when dealing with spin-polarized calculations - atom_kind_in_files_sorted = sorted(list(zip(pdos_files, atoms)), key=lambda x: x[1]) - if len(atom_kind_in_files_sorted) != (n_spin_channels * n_atom_params) and n_spin_channels == 2: - self.logger.warning('The number of PDOS files does not match the number of spin channels ' - 'times the number of atom parameters. We cannot parse the PDOS.') + atom_kind_in_files_sorted = sorted( + list(zip(pdos_files, atoms)), key=lambda x: x[1] + ) + if ( + len(atom_kind_in_files_sorted) != (n_spin_channels * n_atom_params) + and n_spin_channels == 2 + ): + self.logger.warning( + "The number of PDOS files does not match the number of spin channels " + "times the number of atom parameters. We cannot parse the PDOS." + ) return - dos = [ - Dos(spin_channel=0), Dos(spin_channel=1) - ] if n_spin_channels == 2 else [Dos()] + dos = ( + [Dos(spin_channel=0), Dos(spin_channel=1)] + if n_spin_channels == 2 + else [Dos()] + ) for index, (f, atom_kind) in enumerate(atom_kind_in_files_sorted): self.pdos_parser.mainfile = f if self.pdos_parser.data is None: - self.logger.warning('Could not read the data from the *.pdos files.') + self.logger.warning("Could not read the data from the *.pdos files.") break data = self.pdos_parser.data @@ -1378,7 +1791,9 @@ def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: flo # TODO implement a more automatic way of defining width if possible. width = 0.5 # in eV delta_energy = 0.01 # in eV - convoluted_energies, convoluted_pdos = _gaussian_convolution_pdos(data, width, delta_energy) + convoluted_energies, convoluted_pdos = _gaussian_convolution_pdos( + data, width, delta_energy + ) # Setting up constant quantities independent of the pdos file and common for # the same spin channel files. @@ -1387,7 +1802,9 @@ def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: flo sec_dos.n_energies = len(convoluted_energies) sec_dos.energies = convoluted_energies * ureg.eV try: - homo_index = np.where(np.isclose(np.diff(data[2]), -1, atol=1e-1))[0][0] + homo_index = np.where(np.isclose(np.diff(data[2]), -1, atol=1e-1))[ + 0 + ][0] homo = data[1][homo_index] sec_dos.energy_fermi = homo * ureg.hartree scc.energy = Energy(fermi=homo * ureg.hartree) @@ -1395,16 +1812,20 @@ def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: flo pass orbital_histogram = data[3:] - atom_label = re.sub(r'\d', '', atom_kind) - atom_index = re.sub(r'[a-zA-Z]', '', atom_kind) - if self.pdos_parser.get('orbitals', []) is not None: - orbital_labels = self.pdos_parser.get('orbitals', []) + atom_label = re.sub(r"\d", "", atom_kind) + atom_index = re.sub(r"[a-zA-Z]", "", atom_kind) + if self.pdos_parser.get("orbitals", []) is not None: + orbital_labels = self.pdos_parser.get("orbitals", []) sec_dos_histogram = x_cp2k_pdos_histogram() scc.x_cp2k_pdos.append(sec_dos_histogram) - sec_dos_histogram.x_cp2k_pdos_histogram_energies = data[1] * ureg.hartree + sec_dos_histogram.x_cp2k_pdos_histogram_energies = ( + data[1] * ureg.hartree + ) sec_dos_histogram.x_cp2k_pdos_histogram_values = orbital_histogram sec_dos_histogram.x_cp2k_pdos_histogram_atom_label = atom_label - sec_dos_histogram.x_cp2k_pdos_histogram_atom_index = atom_index if atom_index else None + sec_dos_histogram.x_cp2k_pdos_histogram_atom_index = ( + atom_index if atom_index else None + ) sec_dos_histogram.x_cp2k_pdos_histogram_orbital = orbital_labels sec_dos_histogram.x_cp2k_gaussian_width = width * ureg.eV sec_dos_histogram.x_cp2k_gaussian_delta_energy = delta_energy * ureg.eV @@ -1416,8 +1837,10 @@ def _gaussian_convolution_pdos(data: np.ndarray, width: float, delta_energy: flo sec_dos_orbital.atom_index = atom_index if atom_index else None sec_dos_orbital.orbital = orbital_labels[i] - self.logger.warning(f'We are convoluting the reported .pdos histogram with a Gaussian ' - f'distribution function (as defined in scipy.stats.norm).') + self.logger.warning( + f"We are convoluting the reported .pdos histogram with a Gaussian " + f"distribution function (as defined in scipy.stats.norm)." + ) scc.dos_electronic = dos def parse_configurations_quickstep(self): @@ -1432,22 +1855,22 @@ def parse_md_step(source): # Store to common metainfo energy_kinetic = md_output.get("kinetic_energy_instantaneous") if energy_kinetic: - calc.energy.kinetic = EnergyEntry(value=energy_kinetic.to('joule')) + calc.energy.kinetic = EnergyEntry(value=energy_kinetic.to("joule")) potential_energy = md_output.get("potential_energy_instantaneous") if potential_energy: - calc.energy.potential = EnergyEntry(value=potential_energy.to('joule')) + calc.energy.potential = EnergyEntry(value=potential_energy.to("joule")) step = md_output.get("step") if step: calc.step = int(step) time = md_output.get("time") if time: - calc.time = time.to('second') + calc.time = time.to("second") volume = md_output.get("volume_instantaneous") if volume: - calc.volume = volume.to('m**3') + calc.volume = volume.to("m**3") pressure = md_output.get("pressure_instantaneous") if pressure: - calc.pressure = pressure.to('m**3') + calc.pressure = pressure.to("m**3") temperature = md_output.get("temperature_instantaneous") if temperature: calc.temperature = temperature @@ -1457,21 +1880,25 @@ def parse_calculations(calculations): if calculation is None: continue - self_consistent = calculation.get('self_consistent', []) - self_consistent = [self_consistent] if not isinstance(self_consistent, list) else self_consistent + self_consistent = calculation.get("self_consistent", []) + self_consistent = ( + [self_consistent] + if not isinstance(self_consistent, list) + else self_consistent + ) # write only the last one to scc scf = self_consistent[-1] if self_consistent else calculation - frame = calculation.get('step', n) + frame = calculation.get("step", n) scf._frame = frame sec_scc = self.parse_scc(scf) - md = self.sampling_method == 'molecular_dynamics' + md = self.sampling_method == "molecular_dynamics" if md: calculation._frame = frame parse_md_step(calculation) if frame == 0: - atomic_coord = quickstep.get('atomic_coordinates') + atomic_coord = quickstep.get("atomic_coordinates") if atomic_coord is not None: atomic_coord._frame = 0 sec_system = self.parse_system(atomic_coord) @@ -1480,9 +1907,9 @@ def parse_calculations(calculations): # Patch when dealing with GeometryOptimizations which have missing iteration frames if sec_system is None and n == len(calculations) - 1: self.logger.warning( - 'Could not parse system information for the last frame. ' - 'We will attempt to parse the system information from (frame + 1).', - data={'frame': frame}, + "Could not parse system information for the last frame. " + "We will attempt to parse the system information from (frame + 1).", + data={"frame": frame}, ) sec_system = self.parse_system(frame + 1) if sec_system: @@ -1501,19 +1928,23 @@ def get_pdos_files(n_optimization_steps: int): pdos_files: list of *.pdos files with iteration step coinciding with the last converged SinglePoint calculation. """ - pdos_files = get_files('*.pdos', self.filepath, self.mainfile) + pdos_files = get_files("*.pdos", self.filepath, self.mainfile) if pdos_files is not None: for i, file in enumerate(pdos_files): self.pdos_parser.mainfile = file - iter_step = self.pdos_parser.get('iter', n_optimization_steps) # added default to match ADD_LAST = NO + iter_step = self.pdos_parser.get( + "iter", n_optimization_steps + ) # added default to match ADD_LAST = NO if iter_step != n_optimization_steps: pdos_files.pop(i) return pdos_files - if (geometry_optimization := quickstep.get('geometry_optimization')) is not None: - optimization_steps = geometry_optimization.get('optimization_step', []) + if ( + geometry_optimization := quickstep.get("geometry_optimization") + ) is not None: + optimization_steps = geometry_optimization.get("optimization_step", []) # final scf - single_point = quickstep.get('single_point') + single_point = quickstep.get("single_point") calculations = [geometry_optimization] + optimization_steps + [single_point] parse_calculations(calculations) # PDOS parsing @@ -1524,46 +1955,51 @@ def get_pdos_files(n_optimization_steps: int): n_optimization_steps = optimization_steps[-1].step if n_optimization_steps != len(optimization_steps): self.logger.warning( - 'The length of optimization steps sections in the *.out file, does ' - 'not coincide with the last parsed optimization step number.', - data = { - 'length optimization_steps': len(optimization_steps), - 'last optimization step': n_optimization_steps, + "The length of optimization steps sections in the *.out file, does " + "not coincide with the last parsed optimization step number.", + data={ + "length optimization_steps": len(optimization_steps), + "last optimization step": n_optimization_steps, }, ) pdos_files = get_pdos_files(n_optimization_steps) self.parse_dos(sec_run.calculation[-1], pdos_files) - elif (molecular_dynamics := quickstep.get('molecular_dynamics')) is not None: + elif (molecular_dynamics := quickstep.get("molecular_dynamics")) is not None: # initial self consistent - single_point = quickstep.get('single_point') + single_point = quickstep.get("single_point") # md steps - calculations = [single_point] + molecular_dynamics.get('md_step', []) + calculations = [single_point] + molecular_dynamics.get("md_step", []) parse_calculations(calculations) # PDOS parsing if single_point and sec_run.calculation is not None: pdos_files = get_pdos_files(0) self.parse_dos(sec_run.calculation[0], pdos_files) - elif (single_point := quickstep.get('single_point')) is not None: - atomic_coord = quickstep.get('atomic_coordinates') + elif (single_point := quickstep.get("single_point")) is not None: + atomic_coord = quickstep.get("atomic_coordinates") if atomic_coord is not None: atomic_coord._frame = 0 else: - self.logger.warning('Could not parse system information for the SinglePoint calculation.') + self.logger.warning( + "Could not parse system information for the SinglePoint calculation." + ) parse_calculations([single_point]) # PDOS parsing pdos_files = get_pdos_files(0) self.parse_dos(sec_run.calculation[-1], pdos_files) def _parse_basis_set(self) -> list[BasisSet]: - '''Scopes are based on https://10.1016/j.cpc.2004.12.014''' + """Scopes are based on https://10.1016/j.cpc.2004.12.014""" bs_gauss = BasisSet( - scope=['kinetic energy', 'electron-core interaction'], - type='gaussians', + scope=["kinetic energy", "electron-core interaction"], + type="gaussians", + ) + atoms = ( + self.out_parser.get(self._calculation_type, {}) + .get("atomic_kind_information", {}) + .get("atom", []) ) - atoms = self.out_parser.get( - self._calculation_type, {}).get('atomic_kind_information', {}).get('atom', []) for atom in atoms: - basis_set = atom.get('kind_basis_set_name', None) + basis_set = atom.get("kind_basis_set_name", None) if basis_set is not None: ac = BasisSetAtomCentered() ac.atom_number = self.get_atomic_number(atom.kind_label) @@ -1571,16 +2007,18 @@ def _parse_basis_set(self) -> list[BasisSet]: bs_gauss.atom_centered.append(ac) if bs_gauss.atom_centered: bs_pw = BasisSet( - scope=['Hartree energy', 'electron-electron interaction'], - type='plane waves', - cutoff=self.settings.get('qs', {}).get('planewave_cutoff', None) * ureg.hartree, + scope=["Hartree energy", "electron-electron interaction"], + type="plane waves", + cutoff=self.settings.get("qs", {}).get("planewave_cutoff", None) + * ureg.hartree, ) basis_sets = [bs_pw, bs_gauss] else: bs_pw = BasisSet( - scope=['valence'], - type='plane waves', - cutoff=self.settings.get('qs', {}).get('planewave_cutoff', None) * ureg.hartree, + scope=["valence"], + type="plane waves", + cutoff=self.settings.get("qs", {}).get("planewave_cutoff", None) + * ureg.hartree, ) basis_sets = [bs_pw] return basis_sets @@ -1592,8 +2030,8 @@ def parse_method_quickstep(self): sec_method.electrons_representation = [ BasisSetContainer( - type='gaussians + plane waves', - scope=['wavefunction'], + type="gaussians + plane waves", + scope=["wavefunction"], basis_set=self._parse_basis_set(), ) ] @@ -1603,59 +2041,65 @@ def parse_method_quickstep(self): sec_method.dft = sec_dft # electronic structure method # TODO include methods - if quickstep.get('dft') is not None: - sec_method.electronic = Electronic(method='DFT') - elif quickstep.get('dft_u') is not None: - sec_method.electronic = Electronic(method='DFT+U') - elif quickstep.get('mp2') is not None: - sec_method.electronic = Electronic(method='MP2') - elif quickstep.get('rpa') is not None: - sec_method.electronic = Electronic(method='RPA') + if quickstep.get("dft") is not None: + sec_method.electronic = Electronic(method="DFT") + elif quickstep.get("dft_u") is not None: + sec_method.electronic = Electronic(method="DFT+U") + elif quickstep.get("mp2") is not None: + sec_method.electronic = Electronic(method="MP2") + elif quickstep.get("rpa") is not None: + sec_method.electronic = Electronic(method="RPA") # xc functionals sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for functional in self.get_xc_functionals(): - if '_X_' in functional.name: - sec_xc_functional.exchange.append(Functional( - name=functional.name, weight=functional.weight)) - elif '_C_' in functional.name: - sec_xc_functional.correlation.append(Functional( - name=functional.name, weight=functional.weight)) + if "_X_" in functional.name: + sec_xc_functional.exchange.append( + Functional(name=functional.name, weight=functional.weight) + ) + elif "_C_" in functional.name: + sec_xc_functional.correlation.append( + Functional(name=functional.name, weight=functional.weight) + ) else: - sec_xc_functional.contributions.append(Functional( - name=functional.name, weight=functional.weight)) + sec_xc_functional.contributions.append( + Functional(name=functional.name, weight=functional.weight) + ) # van der Waals settings - vdw = self.settings['vdw'] + vdw = self.settings["vdw"] if vdw: # TODO include vdw parameters for val in vdw: if (vdw_name := self._vdw_map.get(val)) is not None: sec_method.van_der_waals_method = vdw_name - stress_method = self.inp_parser.get('FORCE_EVAL/STRESS_TENSOR') + stress_method = self.inp_parser.get("FORCE_EVAL/STRESS_TENSOR") if stress_method is not None: - sec_method.stress_tensor_method = stress_method.replace('_', ' ').title() + sec_method.stress_tensor_method = stress_method.replace("_", " ").title() sec_quickstep_settings = x_cp2k_section_quickstep_settings() sec_method.x_cp2k_section_quickstep_settings.append(sec_quickstep_settings) - dft_settings = self.settings.get('dft', {}) + dft_settings = self.settings.get("dft", {}) if dft_settings: sec_dft.x_cp2k_quickstep_settings = dft_settings - si_correction = dft_settings.get('self_interaction_correction_method') + si_correction = dft_settings.get("self_interaction_correction_method") if si_correction: val = self._self_interaction_map.get(si_correction) sec_dft.self_interaction_correction_method = val - if self.settings['qs']: - for key, val in self.settings['qs'].items(): - sec_quickstep_settings.m_set(sec_quickstep_settings.m_get_quantity_definition(f'x_cp2k_{key}'), val) - - atomic_kind_info = quickstep.get('atomic_kind_information', None) + if self.settings["qs"]: + for key, val in self.settings["qs"].items(): + sec_quickstep_settings.m_set( + sec_quickstep_settings.m_get_quantity_definition(f"x_cp2k_{key}"), + val, + ) + + atomic_kind_info = quickstep.get("atomic_kind_information", None) if atomic_kind_info is not None: sec_atom_kinds = x_cp2k_section_atomic_kinds() sec_quickstep_settings.x_cp2k_section_atomic_kinds.append(sec_atom_kinds) - for atom in atomic_kind_info.get('atom', []): + for atom in atomic_kind_info.get("atom", []): # why necessary to make a separate section sec_atom_kind = x_cp2k_section_atomic_kind() sec_atom_kinds.x_cp2k_section_atomic_kind.append(sec_atom_kind) @@ -1664,39 +2108,59 @@ def parse_method_quickstep(self): for key, val in atom.items(): if val is None: continue - if key in ['kind_label', 'kind_number_of_atoms']: - sec_atom_kind.m_set(sec_atom_kind.m_get_quantity_definition(f'x_cp2k_{key}'), str(val)) + if key in ["kind_label", "kind_number_of_atoms"]: + sec_atom_kind.m_set( + sec_atom_kind.m_get_quantity_definition(f"x_cp2k_{key}"), + str(val), + ) else: - sec_kind_basis_set.m_set(sec_kind_basis_set.m_get_quantity_definition(f'x_cp2k_{key}'), val) + sec_kind_basis_set.m_set( + sec_kind_basis_set.m_get_quantity_definition( + f"x_cp2k_{key}" + ), + val, + ) sec_method_atom_kind = AtomParameters() sec_method.atom_parameters.append(sec_method_atom_kind) - atom_kind_label = re.sub(r'\d', '', atom.kind_label) + atom_kind_label = re.sub(r"\d", "", atom.kind_label) sec_method_atom_kind.label = atom_kind_label - sec_method_atom_kind.atom_number = self.get_atomic_number(atom_kind_label) + sec_method_atom_kind.atom_number = self.get_atomic_number( + atom_kind_label + ) - total_maximum_numbers = quickstep.get('total_maximum_numbers', None) + total_maximum_numbers = quickstep.get("total_maximum_numbers", None) if total_maximum_numbers is not None: sec_total = x_cp2k_section_total_numbers() sec_quickstep_settings.x_cp2k_section_total_numbers.append(sec_total) sec_maximum = x_cp2k_section_maximum_angular_momentum() - sec_quickstep_settings.x_cp2k_section_maximum_angular_momentum.append(sec_maximum) + sec_quickstep_settings.x_cp2k_section_maximum_angular_momentum.append( + sec_maximum + ) for key, val in total_maximum_numbers.items(): if val is None: continue - if key in ['orbital_basis_functions', 'local_part_of_gth_pseudopotential', 'non_local_part_of_gth_pseudopotential']: - sec_maximum.m_set(sec_maximum.m_get_quantity_definition(f'x_cp2k_{key}'), val) + if key in [ + "orbital_basis_functions", + "local_part_of_gth_pseudopotential", + "non_local_part_of_gth_pseudopotential", + ]: + sec_maximum.m_set( + sec_maximum.m_get_quantity_definition(f"x_cp2k_{key}"), val + ) else: - sec_total.m_set(sec_total.m_get_quantity_definition(f'x_cp2k_{key}'), val) + sec_total.m_set( + sec_total.m_get_quantity_definition(f"x_cp2k_{key}"), val + ) sec_scf = Scf() sec_method.scf = sec_scf - scf_parameters = quickstep.get('scf_parameters', None) + scf_parameters = quickstep.get("scf_parameters", None) if scf_parameters is not None: for key, val in scf_parameters.items(): if val is None: continue - if key == 'md': + if key == "md": continue sec_scf.m_set(sec_scf.m_get_quantity_definition(key), val) @@ -1704,7 +2168,11 @@ def parse_method_quickstep(self): def sampling_method(self): if self._method is None: quickstep = self.out_parser.get(self._calculation_type, {}) - for method in ['single_point', 'geometry_optimization', 'molecular_dynamics']: + for method in [ + "single_point", + "geometry_optimization", + "molecular_dynamics", + ]: if quickstep.get(method) is not None: self._method = method return self._method @@ -1713,67 +2181,85 @@ def parse_workflow(self): # TODO add vdW workflow = SinglePoint() - if self.sampling_method == 'geometry_optimization': + if self.sampling_method == "geometry_optimization": workflow = GeometryOptimization(method=GeometryOptimizationMethod()) - optimization = self.out_parser.get(self._calculation_type).geometry_optimization + optimization = self.out_parser.get( + self._calculation_type + ).geometry_optimization if optimization.method is not None: - method = self._optimization_method_map.get(optimization.method, '') + method = self._optimization_method_map.get(optimization.method, "") if not method: - self.logger.error('Cannot resolve optimization method.') + self.logger.error("Cannot resolve optimization method.") workflow.method.method = method sec_geometry_opt = x_cp2k_section_geometry_optimization() workflow.x_cp2k_section_geometry_optimization.append(sec_geometry_opt) - for step in optimization.get('optimization_step', []): + for step in optimization.get("optimization_step", []): information = step.information if information is None: continue sec_geometry_opt_step = x_cp2k_section_geometry_optimization_step() - sec_geometry_opt.x_cp2k_section_geometry_optimization_step.append(sec_geometry_opt_step) + sec_geometry_opt.x_cp2k_section_geometry_optimization_step.append( + sec_geometry_opt_step + ) for key, val in information.items(): if val is None: continue name = self._metainfo_name_map.get(key, key) - if name.startswith('energy') and isinstance(val, float): - val = (val * ureg.hartree).to('joule').magnitude - elif 'step_size' in name and isinstance(val, float): - val = (val * ureg.bohr).to('m').magnitude - elif 'gradient' in name and isinstance(val, float): - val = (val * ureg.hartree / ureg.bohr).to('joule/m').magnitude + if name.startswith("energy") and isinstance(val, float): + val = (val * ureg.hartree).to("joule").magnitude + elif "step_size" in name and isinstance(val, float): + val = (val * ureg.bohr).to("m").magnitude + elif "gradient" in name and isinstance(val, float): + val = (val * ureg.hartree / ureg.bohr).to("joule/m").magnitude elif isinstance(val, str): val = val.strip() - setattr(sec_geometry_opt_step, f'x_cp2k_optimization_{name}', val) + setattr(sec_geometry_opt_step, f"x_cp2k_optimization_{name}", val) if sec_geometry_opt.x_cp2k_section_geometry_optimization_step: geometry_change = sec_geometry_opt_step.x_cp2k_optimization_step_size_convergence_limit if geometry_change is not None: workflow.method.convergence_tolerance_displacement_maximum - threshold_force = sec_geometry_opt_step.x_cp2k_optimization_gradient_convergence_limit + threshold_force = ( + sec_geometry_opt_step.x_cp2k_optimization_gradient_convergence_limit + ) if threshold_force is not None: - workflow.method.convergence_tolerance_force_maximum = threshold_force + workflow.method.convergence_tolerance_force_maximum = ( + threshold_force + ) - elif self.sampling_method == 'molecular_dynamics': + elif self.sampling_method == "molecular_dynamics": # Parse common MD information workflow = MolecularDynamics(method=MolecularDynamicsMethod()) - workflow.method.thermodynamic_ensemble = self._ensemble_map.get(self.get_ensemble_type(0), None) + workflow.method.thermodynamic_ensemble = self._ensemble_map.get( + self.get_ensemble_type(0), None + ) workflow.method.integration_timestep = self.get_time_step() sec_md_settings = x_cp2k_section_md_settings() workflow.method.x_cp2k_section_md_settings.append(sec_md_settings) # Parse code specific MD information - ignored = {'time_step', 'ensemble_type', 'file_type'} - for key, val in self.settings['md'].items(): + ignored = {"time_step", "ensemble_type", "file_type"} + for key, val in self.settings["md"].items(): if val is None or key in ignored: continue - if key in ['coordinates', 'simulation_cell', 'velocities', 'energies', 'dump']: + if key in [ + "coordinates", + "simulation_cell", + "velocities", + "energies", + "dump", + ]: val = val.split() - setattr(sec_md_settings, f'x_cp2k_md_{key}_print_frequency', int(val[0])) - setattr(sec_md_settings, f'x_cp2k_md_{key}_filename', val[1]) - elif key == 'print_frequency': - setattr(sec_md_settings, f'x_cp2k_md_{key}', int(val.split()[0])) + setattr( + sec_md_settings, f"x_cp2k_md_{key}_print_frequency", int(val[0]) + ) + setattr(sec_md_settings, f"x_cp2k_md_{key}_filename", val[1]) + elif key == "print_frequency": + setattr(sec_md_settings, f"x_cp2k_md_{key}", int(val.split()[0])) else: - setattr(sec_md_settings, f'x_cp2k_md_{key}', val) + setattr(sec_md_settings, f"x_cp2k_md_{key}", val) self.archive.workflow2 = workflow @@ -1787,7 +2273,7 @@ def parse(self, filepath, archive, logger): self.init_parser() # identify calculation type, TODO add more - calculation_types = ['quickstep', 'qs_dftb'] + calculation_types = ["quickstep", "qs_dftb"] for calculation_type in calculation_types: if self.out_parser.get(calculation_type) is not None: self._calculation_type = calculation_type @@ -1799,10 +2285,14 @@ def parse(self, filepath, archive, logger): # if restarts: STEP_START_VALUE > 0, initial scf calc done at STEP_START_VALUE - 1 self._step_start = 1 - if run_type := self.inp_parser.get('GLOBAL/RUN_TYPE'): - self._step_start = int(self.inp_parser.get(f'MOTION/{run_type}/STEP_START_VAL', self._step_start)) + if run_type := self.inp_parser.get("GLOBAL/RUN_TYPE"): + self._step_start = int( + self.inp_parser.get( + f"MOTION/{run_type}/STEP_START_VAL", self._step_start + ) + ) - if self._calculation_type in ['quickstep', 'qs_dftb']: + if self._calculation_type in ["quickstep", "qs_dftb"]: self.parse_method_quickstep() self.parse_configurations_quickstep() diff --git a/electronicparsers/cpmd/metainfo/cpmd.py b/electronicparsers/cpmd/metainfo/cpmd.py index fbbadd8b..8b694b66 100644 --- a/electronicparsers/cpmd/metainfo/cpmd.py +++ b/electronicparsers/cpmd/metainfo/cpmd.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,30 +39,32 @@ class x_cpmd_section_input_ATOMS_ATOMIC_CHARGES(MSection): - ''' + """ Changes the default charge (0) of the atoms for the initial guess to the values read from the next line. One value per atomic species has to be given. - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_ATOMIC_CHARGES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ATOMIC_CHARGES. - ''') + """, + ) x_cpmd_input_ATOMS_ATOMIC_CHARGES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ATOMIC_CHARGES. - ''') + """, + ) class x_cpmd_section_input_ATOMS_CHANGE_BONDS(MSection): - ''' + """ The buildup of the empirical Hessian can be affected. You can either add or delete bonds. The number of changed bonds is read from the next line. This line is followed by the description of the bonds. The format is {\\sl \\{ ATOM1 \\ \\ ATOM2 \\ \\ FLAG\\} }. @@ -63,27 +72,29 @@ class x_cpmd_section_input_ATOMS_CHANGE_BONDS(MSection): A {\\sl FLAG} of $-1$ causes a bond to be deleted and a {\\sl FLAG} of $1$ a bond to be added. \\hfill Example: {\\tt \\begin{tabular}{ccc} \\multicolumn{3}{l}{\\bf CHANGE BONDS} 2 & & 1 & 2 & +1 6 & 8 & -1 \\end{tabular} } - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_CHANGE_BONDS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CHANGE_BONDS. - ''') + """, + ) x_cpmd_input_ATOMS_CHANGE_BONDS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CHANGE_BONDS. - ''') + """, + ) class x_cpmd_section_input_ATOMS_CONFINEMENT_POTENTIAL(MSection): - ''' + """ The use of this label activates a spherical gaussian confinement potential in the calculation of the form factor of pseudopotentials. In the next line(s) two parameters for each atomic species must be supplied: the amplitude $\\alpha$ and the cut off @@ -92,27 +103,29 @@ class x_cpmd_section_input_ATOMS_CONFINEMENT_POTENTIAL(MSection): \\sum_{\\bf G} A \\cdot |{\\bf G}|\\cdot e^{-G^2r_c^2/4} \\label{pconf} \\end{equation*} being {\\bf G} the G-vectors, although in practice the loop runs only on the G-shells $G=|{\\bf G}|$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_CONFINEMENT_POTENTIAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CONFINEMENT_POTENTIAL. - ''') + """, + ) x_cpmd_input_ATOMS_CONFINEMENT_POTENTIAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CONFINEMENT_POTENTIAL. - ''') + """, + ) class x_cpmd_section_input_ATOMS_DUMMY_ATOMS(MSection): - ''' + """ The definition of dummy atoms follows this keyword. Three different kinds of dummy atoms are implemented. Type 1 is fixed in space, type 2 lies at the arithmetic mean, type 3 at the center of mass of the coordinates of real atoms. % For types 2, 3 and 4 @@ -133,327 +146,357 @@ class x_cpmd_section_input_ATOMS_DUMMY_ATOMS(MSection): \\end{tabular} } Note: Indices of dummy atoms always start with total-number-of-atoms plus 1. In the case of a Gromos-QM/MM interface simulations with dummy hydrogen atoms for capping, it is total-number-of-atoms plus number-of-dummy-hydrogens plus 1 - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_DUMMY_ATOMS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DUMMY_ATOMS. - ''') + """, + ) x_cpmd_input_ATOMS_DUMMY_ATOMS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DUMMY_ATOMS. - ''') + """, + ) class x_cpmd_section_input_ATOMS_GENERATE_COORDINATES(MSection): - ''' + """ The number of generator atoms for each species are read from the next line. These atoms are used together with the point group information to generate all other atomic positions. The input still has to have entries for all atoms but their coordinates are overwritten. Also the total number of atoms per species has to be correct. - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_GENERATE_COORDINATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GENERATE_COORDINATES. - ''') + """, + ) x_cpmd_input_ATOMS_GENERATE_COORDINATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GENERATE_COORDINATES. - ''') + """, + ) class x_cpmd_section_input_ATOMS_ISOTOPE(MSection): - ''' + """ Changes the default masses of the atoms. This keyword has to be followed by {\\sl NSP} lines (number of atom types). In each line the new mass (in a.m.u.) of the respective species has to be specified (in order of their definition). - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_ISOTOPE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ISOTOPE. - ''') + """, + ) x_cpmd_input_ATOMS_ISOTOPE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ISOTOPE. - ''') + """, + ) class x_cpmd_section_input_ATOMS_MOVIE_TYPE(MSection): - ''' + """ Assign special movie atom types to the species. The types are read from the next line. Values from 0 to 5 were allowed in the original MOVIE format. - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_MOVIE_TYPE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MOVIE_TYPE. - ''') + """, + ) x_cpmd_input_ATOMS_MOVIE_TYPE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MOVIE_TYPE. - ''') + """, + ) class x_cpmd_section_input_ATOMS(MSection): - ''' + """ Atoms and pseudopotentials and related parameters (\\textbf{required}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_ATOMS_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section ATOMS even without a keyword. - ''') + """, + ) x_cpmd_section_input_ATOMS_ATOMIC_CHARGES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_ATOMIC_CHARGES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_ATOMIC_CHARGES"), + repeats=True, + ) x_cpmd_section_input_ATOMS_CHANGE_BONDS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_CHANGE_BONDS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_CHANGE_BONDS"), + repeats=True, + ) x_cpmd_section_input_ATOMS_CONFINEMENT_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_CONFINEMENT_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_CONFINEMENT_POTENTIAL"), + repeats=True, + ) x_cpmd_section_input_ATOMS_DUMMY_ATOMS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_DUMMY_ATOMS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_DUMMY_ATOMS"), repeats=True + ) x_cpmd_section_input_ATOMS_GENERATE_COORDINATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_GENERATE_COORDINATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_GENERATE_COORDINATES"), + repeats=True, + ) x_cpmd_section_input_ATOMS_ISOTOPE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_ISOTOPE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_ISOTOPE"), repeats=True + ) x_cpmd_section_input_ATOMS_MOVIE_TYPE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS_MOVIE_TYPE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS_MOVIE_TYPE"), repeats=True + ) class x_cpmd_section_input_BASIS(MSection): - ''' + """ Atomic basis sets for properties or initial guess - ''' + """ m_def = Section(validate=False) x_cpmd_input_BASIS_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section BASIS even without a keyword. - ''') + """, + ) class x_cpmd_section_input_CLASSIC_FREEZE_QUANTUM(MSection): - ''' + """ Freeze the quantum atoms and performs a classical MD on the others (in QMMM mode only !). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CLASSIC_FREEZE_QUANTUM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FREEZE_QUANTUM. - ''') + """, + ) x_cpmd_input_CLASSIC_FREEZE_QUANTUM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FREEZE_QUANTUM. - ''') + """, + ) class x_cpmd_section_input_CLASSIC_FULL_TRAJECTORY(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_CLASSIC_FULL_TRAJECTORY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FULL_TRAJECTORY. - ''') + """, + ) x_cpmd_input_CLASSIC_FULL_TRAJECTORY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FULL_TRAJECTORY. - ''') + """, + ) class x_cpmd_section_input_CLASSIC_PRINT_COORDINATES(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_CLASSIC_PRINT_COORDINATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRINT_COORDINATES. - ''') + """, + ) x_cpmd_input_CLASSIC_PRINT_COORDINATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRINT_COORDINATES. - ''') + """, + ) class x_cpmd_section_input_CLASSIC_PRINT_FF(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_CLASSIC_PRINT_FF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRINT_FF. - ''') + """, + ) x_cpmd_input_CLASSIC_PRINT_FF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRINT_FF. - ''') + """, + ) class x_cpmd_section_input_CLASSIC(MSection): - ''' + """ Simple classical code interface - ''' + """ m_def = Section(validate=False) x_cpmd_input_CLASSIC_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section CLASSIC even without a keyword. - ''') + """, + ) x_cpmd_section_input_CLASSIC_FREEZE_QUANTUM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CLASSIC_FREEZE_QUANTUM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CLASSIC_FREEZE_QUANTUM"), + repeats=True, + ) x_cpmd_section_input_CLASSIC_FULL_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CLASSIC_FULL_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CLASSIC_FULL_TRAJECTORY"), + repeats=True, + ) x_cpmd_section_input_CLASSIC_PRINT_COORDINATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CLASSIC_PRINT_COORDINATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CLASSIC_PRINT_COORDINATES"), + repeats=True, + ) x_cpmd_section_input_CLASSIC_PRINT_FF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CLASSIC_PRINT_FF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CLASSIC_PRINT_FF"), repeats=True + ) class x_cpmd_section_input_CPMD_ALEXANDER_MIXING(MSection): - ''' + """ Mixing used during optimization of geometry or molecular dynamics. Parameter read in the next line. \\textbf{Default} value is \\defaultvalue{0.9} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ALEXANDER_MIXING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ALEXANDER_MIXING. - ''') + """, + ) x_cpmd_input_CPMD_ALEXANDER_MIXING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ALEXANDER_MIXING. - ''') + """, + ) class x_cpmd_section_input_CPMD_ALLTOALL(MSection): - ''' + """ Perform the matrix transpose (AllToAll communication) in the 3D FFT using single/double precision numbers. Default is to use double precision numbers. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ALLTOALL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ALLTOALL. - ''') + """, + ) x_cpmd_input_CPMD_ALLTOALL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ALLTOALL. - ''') + """, + ) class x_cpmd_section_input_CPMD_ANDERSON_MIXING(MSection): - ''' + """ Anderson mixing for the electronic density during self-consistent iterations. In the next line the parameter (between 0 and 1) for the Anderson mixing is read. @@ -462,73 +505,79 @@ class x_cpmd_section_input_CPMD_ANDERSON_MIXING(MSection): With the additional option $N=n$ a mixing parameter can be specified for different threshold densities. $n$ different thresholds can be set. The program reads $n$ lines, each with a threshold density and an Anderson mixing parameter. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ANDERSON_MIXING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ANDERSON_MIXING. - ''') + """, + ) x_cpmd_input_CPMD_ANDERSON_MIXING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ANDERSON_MIXING. - ''') + """, + ) class x_cpmd_section_input_CPMD_ANNEALING(MSection): - ''' + """ Scale the ionic, electronic, or cell velocities every time step. The scaling factor is read from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ANNEALING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ANNEALING. - ''') + """, + ) x_cpmd_input_CPMD_ANNEALING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ANNEALING. - ''') + """, + ) class x_cpmd_section_input_CPMD_BENCHMARK(MSection): - ''' + """ This keyword is used to control some special features related to benchmarks. If you want to know more, have a look in the source code. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BENCHMARK_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BENCHMARK. - ''') + """, + ) x_cpmd_input_CPMD_BENCHMARK_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BENCHMARK. - ''') + """, + ) class x_cpmd_section_input_CPMD_BERENDSEN(MSection): - ''' + """ Use a simple Berendsen-type thermostat\\cite{Berendsen84} to control the respective temperature of ions, electrons, or cell. The target temperature and time constant $\\tau$ (in a.u.) are read from the next line. These thermostats are a gentler @@ -536,101 +585,109 @@ class x_cpmd_section_input_CPMD_BERENDSEN(MSection): production runs, please use the corresponding \\refkeyword{NOSE} or \\refkeyword{LANGEVIN} thermostats, as the Berendsen scheme does not represent any defined statistical mechanical ensemble. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BERENDSEN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BERENDSEN. - ''') + """, + ) x_cpmd_input_CPMD_BERENDSEN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BERENDSEN. - ''') + """, + ) class x_cpmd_section_input_CPMD_BFGS(MSection): - ''' + """ Use a quasi-Newton method for optimization of the ionic positions. The approximated Hessian is updated using the Broyden-Fletcher-Goldfarb-Shano procedure~\\cite{Fletcher80}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BFGS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BFGS. - ''') + """, + ) x_cpmd_input_CPMD_BFGS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BFGS. - ''') + """, + ) class x_cpmd_section_input_CPMD_BLOCKSIZE_STATES(MSection): - ''' + """ Parameter read in from next line. {\\sl NSTBLK} Defines the minimal number of states used per processor in the distributed linear algebra calculations. {\\bf Default} is to equally distribute states over all processors. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BLOCKSIZE_STATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BLOCKSIZE_STATES. - ''') + """, + ) x_cpmd_input_CPMD_BLOCKSIZE_STATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BLOCKSIZE_STATES. - ''') + """, + ) class x_cpmd_section_input_CPMD_BOGOLIUBOV_CORRECTION(MSection): - ''' + """ Computes the Bogoliubov correction for the energy of the Trotter approximation or not. {\\bf Default} is {\\bf no Bogoliubov correction}. The keyword has to appear after \\refkeyword{FREE ENERGY FUNCTIONAL}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BOGOLIUBOV_CORRECTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BOGOLIUBOV_CORRECTION. - ''') + """, + ) x_cpmd_input_CPMD_BOGOLIUBOV_CORRECTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BOGOLIUBOV_CORRECTION. - ''') + """, + ) class x_cpmd_section_input_CPMD_BOX_WALLS(MSection): - ''' + """ The thickness parameter for soft, reflecting QM-box walls is read from the next line. This keyword allows to reverse the momentum of the particles (${\\bf p}_I \\rightarrow -{\\bf p}_I$) when they reach the walls of the simulation supercell in the case in @@ -640,27 +697,29 @@ class x_cpmd_section_input_CPMD_BOX_WALLS(MSection): they are reflected back in the two dimensons orthogonal to the "polymer" axis. Warning: This procedure, although keeping your particles inside the cell, affect the momentum conservation. This feature is {\\bf disabled by default} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BOX_WALLS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BOX_WALLS. - ''') + """, + ) x_cpmd_input_CPMD_BOX_WALLS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BOX_WALLS. - ''') + """, + ) class x_cpmd_section_input_CPMD_BROYDEN_MIXING(MSection): - ''' + """ Parameters read in from next line. {\\sl BROYMIX, ECUTBROY, W02BROY, NFRBROY, IBRESET, KERMIX} These mean: \\hfill\\smallskip {\\sl BROYMIX}: \\hfill\\begin{minipage}[t]{10cm} Initial mixing, e.g. $0.1$; \\textbf{default} value is \\defaultvalue{0.5} @@ -681,50 +740,54 @@ class x_cpmd_section_input_CPMD_BROYDEN_MIXING(MSection): \\textbf{[IBRESET=}\\textsl{IBRESET}\\textbf{]} \\textbf{[KERMIX=}\\textsl{KERMIX}\\textbf{]} Finally, you can use the keyword {\\bf DEFAULT} to use the default values. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_BROYDEN_MIXING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BROYDEN_MIXING. - ''') + """, + ) x_cpmd_input_CPMD_BROYDEN_MIXING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BROYDEN_MIXING. - ''') + """, + ) class x_cpmd_section_input_CPMD_CAYLEY(MSection): - ''' + """ Used to propagate the Kohn-Sham orbitals in \\refkeyword{MOLECULAR DYNAMICS} EH and \\refkeyword{PROPAGATION SPECTRA}. At present is the only propagation scheme availabe. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CAYLEY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CAYLEY. - ''') + """, + ) x_cpmd_input_CPMD_CAYLEY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CAYLEY. - ''') + """, + ) class x_cpmd_section_input_CPMD_CDFT(MSection): - ''' + """ The main switch for constrained DFT. Parameters $N_\\text{c}$, $V_\\text{init}$, and MAXSTEP are read from the next line. {\\bf NEWTON}, {\\bf DEKKER} (\\defaultvalue{off}) are switches to enable either the Newton or the Dekker optimisation scheme for the @@ -757,119 +820,129 @@ class x_cpmd_section_input_CPMD_CDFT(MSection): them and thus calculate the diabatic transition matrix element in an orthogonalised ``dressed'' basis. If CDFT is activated the program writes the current $V$ value to CDFT\\_RESTART everytime the RESTART file is written. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CDFT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CDFT. - ''') + """, + ) x_cpmd_input_CPMD_CDFT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CDFT. - ''') + """, + ) class x_cpmd_section_input_CPMD_CENTER_MOLECULE(MSection): - ''' + """ The center of mass is moved/not moved to the center of the computational box in a calculation with the cluster option. This is only done when the coordinates are read from the input file. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CENTER_MOLECULE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CENTER_MOLECULE. - ''') + """, + ) x_cpmd_input_CPMD_CENTER_MOLECULE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CENTER_MOLECULE. - ''') + """, + ) class x_cpmd_section_input_CPMD_CHECK_MEMORY(MSection): - ''' + """ Check sanity of all dynamically allocated arrays whenever a change in the allocation is done. By default memory is checked only at break points. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CHECK_MEMORY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CHECK_MEMORY. - ''') + """, + ) x_cpmd_input_CPMD_CHECK_MEMORY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CHECK_MEMORY. - ''') + """, + ) class x_cpmd_section_input_CPMD_CLASSTRESS(MSection): - ''' + """ Not documented. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CLASSTRESS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CLASSTRESS. - ''') + """, + ) x_cpmd_input_CPMD_CLASSTRESS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CLASSTRESS. - ''') + """, + ) class x_cpmd_section_input_CPMD_CMASS(MSection): - ''' + """ The fictitious mass of the cell in atomic units is read from the next line. \\textbf{Default} value is \\defaultvalue{200} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CMASS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CMASS. - ''') + """, + ) x_cpmd_input_CPMD_CMASS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CMASS. - ''') + """, + ) class x_cpmd_section_input_CPMD_COMBINE_SYSTEMS(MSection): - ''' + """ Read in two wavefunctions from RESTART.R1 and RESTART.R2 and combine them into RESTART.1 which can then be used in an FODFT calculations. The option NONORTH disables orthogonalisation of the combined WF's. Parameters NTOT1, NTOT2, NSUP1, NSUP2 are read @@ -883,27 +956,29 @@ class x_cpmd_section_input_CPMD_COMBINE_SYSTEMS(MSection): Parameters K and L are read from the next line. After combining the wavefunctions CPMD will exit. For this option to work the RESTART option and \\refkeyword{OPTIMIZE WAVEFUNCTION} have to be activated. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_COMBINE_SYSTEMS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword COMBINE_SYSTEMS. - ''') + """, + ) x_cpmd_input_CPMD_COMBINE_SYSTEMS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword COMBINE_SYSTEMS. - ''') + """, + ) class x_cpmd_section_input_CPMD_COMPRESS(MSection): - ''' + """ Write the wavefunctions with nn bytes precision to the restart file. Possible choices are \\texttt{WRITE32}, \\texttt{WRITE16}, \\texttt{WRITE8} and \\texttt{WRITEAO}. \\texttt{WRITE32} corresponds to the compress option in older versions. @@ -911,51 +986,55 @@ class x_cpmd_section_input_CPMD_COMPRESS(MSection): atomic basis set can be specified in the section \\&BASIS \\ldots \\&END. If this input section is missing a default basis from Slater type orbitals is constructed. See section~\\ref{input:basis} for more details. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_COMPRESS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword COMPRESS. - ''') + """, + ) x_cpmd_input_CPMD_COMPRESS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword COMPRESS. - ''') + """, + ) class x_cpmd_section_input_CPMD_CONJUGATE_GRADIENTS(MSection): - ''' + """ For the electrons, the keyword is equivalent to \\refkeyword{PCG}. The \\texttt{NOPRECONDITIONING} parameter only applies for electrons. For the ions the conjugate gradients scheme is used to relax the atomic positions. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CONJUGATE_GRADIENTS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CONJUGATE_GRADIENTS. - ''') + """, + ) x_cpmd_input_CPMD_CONJUGATE_GRADIENTS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CONJUGATE_GRADIENTS. - ''') + """, + ) class x_cpmd_section_input_CPMD_CONVERGENCE(MSection): - ''' + """ The adaptive convergence criteria for the wavefunction during a geometry optimization are specified. For more informations, see~\\cite{LSCAL}. The ratio {\\sl TOLAD} between the smallest maximum component of the nuclear gradient reached so far and the maximum @@ -992,27 +1071,29 @@ class x_cpmd_section_input_CPMD_CONVERGENCE(MSection): convergence criterion for the wavefunction of the initial geometry can be supplied with {\\bf CONVERGENCE INITIAL}. By default, the initial convergence criterion is equal to the full convergence criterion. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CONVERGENCE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CONVERGENCE. - ''') + """, + ) x_cpmd_input_CPMD_CONVERGENCE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CONVERGENCE. - ''') + """, + ) class x_cpmd_section_input_CPMD_CZONES(MSection): - ''' + """ Activates convergence zones for the wavefunction during the \\refkeyword{CDFT} constraint minimisation. If SET is set the parameters CZONE1, CZONE2, and CZONE3 are read from the next line and CZLIMIT1 and CZLIMIT2 from the line after. CZONE1 @@ -1020,27 +1101,29 @@ class x_cpmd_section_input_CPMD_CZONES(MSection): \\defaultvalue{$10^{-5}$} $\\in \\mathbb{R}_+$ are the orbital convergences in zones 1-3, respectively. CZLIMIT1 \\defaultvalue{0.3}, CZLIMIT2 \\defaultvalue{0.1} $\\in \\mathbb{R}_+$ define the boundaries between zone 1-2 and 2-3, respectively. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_CZONES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CZONES. - ''') + """, + ) x_cpmd_input_CPMD_CZONES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CZONES. - ''') + """, + ) class x_cpmd_section_input_CPMD_DAMPING(MSection): - ''' + """ Add a damping factor $f_{damp}(x) = - \\gamma \\cdot v(x)$ to the ionic, electronic, or cell forces in every time step. The scaling factor $\\gamma$ is read from the next line. Useful values depend on the employed masses are generally in the range $5.0 \\to @@ -1049,49 +1132,53 @@ class x_cpmd_section_input_CPMD_DAMPING(MSection): thereof) of systems where the faster methods (e.g. \\refkeyword{ODIIS}, \\refkeyword{PCG}, \\refkeyword{LBFGS}, \\refkeyword{GDIIS}) fail to converge or may converge to the wrong state. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DAMPING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DAMPING. - ''') + """, + ) x_cpmd_input_CPMD_DAMPING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DAMPING. - ''') + """, + ) class x_cpmd_section_input_CPMD_DAVIDSON_DIAGONALIZATION(MSection): - ''' + """ Use Davidson diagonalization scheme.\\cite{davidson75} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DAVIDSON_DIAGONALIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DAVIDSON_DIAGONALIZATION. - ''') + """, + ) x_cpmd_input_CPMD_DAVIDSON_DIAGONALIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DAVIDSON_DIAGONALIZATION. - ''') + """, + ) class x_cpmd_section_input_CPMD_DAVIDSON_PARAMETER(MSection): - ''' + """ This keyword controls the Davidson diagonalization routine used to determine the Kohn- Sham energies. @@ -1102,165 +1189,179 @@ class x_cpmd_section_input_CPMD_DAVIDSON_PARAMETER(MSection): optimized. If the system has 20 occupied states and you ask for 5 unoccupied states, the default number of additional vectors is 25. By using less than 25 some memory can be saved but convergence might be somewhat slower. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DAVIDSON_PARAMETER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DAVIDSON_PARAMETER. - ''') + """, + ) x_cpmd_input_CPMD_DAVIDSON_PARAMETER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DAVIDSON_PARAMETER. - ''') + """, + ) class x_cpmd_section_input_CPMD_DEBUG_CODE(MSection): - ''' + """ Very verbose output concerning subroutine calls for debugging purpose. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DEBUG_CODE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DEBUG_CODE. - ''') + """, + ) x_cpmd_input_CPMD_DEBUG_CODE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DEBUG_CODE. - ''') + """, + ) class x_cpmd_section_input_CPMD_DEBUG_FILEOPEN(MSection): - ''' + """ Very verbose output concerning opening files for debugging purpose. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DEBUG_FILEOPEN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DEBUG_FILEOPEN. - ''') + """, + ) x_cpmd_input_CPMD_DEBUG_FILEOPEN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DEBUG_FILEOPEN. - ''') + """, + ) class x_cpmd_section_input_CPMD_DEBUG_FORCES(MSection): - ''' + """ Very verbose output concerning the calculation of each contribution to the forces for debugging purpose. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DEBUG_FORCES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DEBUG_FORCES. - ''') + """, + ) x_cpmd_input_CPMD_DEBUG_FORCES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DEBUG_FORCES. - ''') + """, + ) class x_cpmd_section_input_CPMD_DEBUG_MEMORY(MSection): - ''' + """ Very verbose output concerning memory for debugging purpose. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DEBUG_MEMORY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DEBUG_MEMORY. - ''') + """, + ) x_cpmd_input_CPMD_DEBUG_MEMORY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DEBUG_MEMORY. - ''') + """, + ) class x_cpmd_section_input_CPMD_DEBUG_NOACC(MSection): - ''' + """ Do not read/write accumulator information from/to the \\refkeyword{RESTART} file. This avoids putting timing information to the restart and makes restart files identical for otherwise identical runs. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DEBUG_NOACC_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DEBUG_NOACC. - ''') + """, + ) x_cpmd_input_CPMD_DEBUG_NOACC_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DEBUG_NOACC. - ''') + """, + ) class x_cpmd_section_input_CPMD_DIIS_MIXING(MSection): - ''' + """ Use the direct inversion iterative scheme to mix density. Read in the next line the number of previous densities (NRDIIS) for the mixing (however not useful). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DIIS_MIXING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DIIS_MIXING. - ''') + """, + ) x_cpmd_input_CPMD_DIIS_MIXING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DIIS_MIXING. - ''') + """, + ) class x_cpmd_section_input_CPMD_DIPOLE_DYNAMICS(MSection): - ''' + """ Calculate the dipole moment~\\cite{vdb_berry,resta} every {\\sl NSTEP} iteration in MD. {\\sl NSTEP} is read from the next line if the keyword SAMPLE is present. @@ -1272,49 +1373,53 @@ class x_cpmd_section_input_CPMD_DIPOLE_DYNAMICS(MSection): single k-point) to Boys localization. The produced output is IONS+CENTERS.xyz, IONS+CENTERS, DIPOLE, WANNIER\\_CENTER and WANNIER\\_DOS. The localization procedure is controlled by the following keywords. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DIPOLE_DYNAMICS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DIPOLE_DYNAMICS. - ''') + """, + ) x_cpmd_input_CPMD_DIPOLE_DYNAMICS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DIPOLE_DYNAMICS. - ''') + """, + ) class x_cpmd_section_input_CPMD_DISTRIBUTE_FNL(MSection): - ''' + """ The array \\texttt{FNL} is distributed in parallel runs. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DISTRIBUTE_FNL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DISTRIBUTE_FNL. - ''') + """, + ) x_cpmd_input_CPMD_DISTRIBUTE_FNL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DISTRIBUTE_FNL. - ''') + """, + ) class x_cpmd_section_input_CPMD_DISTRIBUTED_LINALG(MSection): - ''' + """ Perform linear algebra calculations using distributed memory algorithms. Setting this option ON will also enable (distributed) initialization from atomic wavefunctions using a parallel Lanczos algorithm \\cite{distrib.lanczos.07}. Note that distributed @@ -1323,79 +1428,85 @@ class x_cpmd_section_input_CPMD_DISTRIBUTED_LINALG(MSection): setting {\\bf LINALG ON} the keyword \\refkeyword{BLOCKSIZE STATES} becomes relevant (see entry). The number of \\refkeyword{BLOCKSIZE STATES} must be an {\\bf exact divisor} of the number of \\refkeyword{STATES}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_DISTRIBUTED_LINALG_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DISTRIBUTED_LINALG. - ''') + """, + ) x_cpmd_input_CPMD_DISTRIBUTED_LINALG_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DISTRIBUTED_LINALG. - ''') + """, + ) class x_cpmd_section_input_CPMD_ELECTRONIC_SPECTRA(MSection): - ''' + """ Perform a TDDFT calculation~\\cite{tddft_all,tddft_pw} to determine the electronic spectra. See below under \\referto{sec:ElectronicSpectra}{Electronic Spectra} and under the other keywords for the input sections \\referto{inputkw:linres}{\\&LINRES} and \\referto{inputkw:tddft}{\\&TDDFT} for further options. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ELECTRONIC_SPECTRA_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ELECTRONIC_SPECTRA. - ''') + """, + ) x_cpmd_input_CPMD_ELECTRONIC_SPECTRA_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ELECTRONIC_SPECTRA. - ''') + """, + ) class x_cpmd_section_input_CPMD_ELECTROSTATIC_POTENTIAL(MSection): - ''' + """ Store the electrostatic potential on file. The resulting file is written in platform specific binary format. You can use the cpmd2cube tool to convert it into a Gaussian cube file for visualization. Note that this flag automatically activates the \\refkeyword{RHOOUT} flag as well. With the optional keyword {\\bf SAMPLE} the file will be written every {\\em nrhoout} steps during an MD trajectory. The corresponding time step number will be appended to the filename. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ELECTROSTATIC_POTENTIAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ELECTROSTATIC_POTENTIAL. - ''') + """, + ) x_cpmd_input_CPMD_ELECTROSTATIC_POTENTIAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ELECTROSTATIC_POTENTIAL. - ''') + """, + ) class x_cpmd_section_input_CPMD_ELF(MSection): - ''' + """ Store the total valence density and the valence electron localization function ELF~\\cite{Becke90,silsav,marx-savin-97,homeofelf} on files. The default smoothing parameters for ELF can be changed optionally when specifying in addition the PARAMETER @@ -1409,121 +1520,131 @@ class x_cpmd_section_input_CPMD_ELF(MSection): parts are written to the files LSD\\_ELF, ELF\\_ALPHA and ELF\\_BETA, respectively; see Ref.~\\cite{Kohut96} for definitions and further infos. Note 2: ELF does not make much sense when using Vanderbilt's ultra-soft pseudopotentials! - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ELF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ELF. - ''') + """, + ) x_cpmd_input_CPMD_ELF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ELF. - ''') + """, + ) class x_cpmd_section_input_CPMD_EMASS(MSection): - ''' + """ The fictitious electron mass in atomic units is read from the next line. {\\bf Default} is {\\bf 400 a.u.}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_EMASS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EMASS. - ''') + """, + ) x_cpmd_input_CPMD_EMASS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EMASS. - ''') + """, + ) class x_cpmd_section_input_CPMD_ENERGYBANDS(MSection): - ''' + """ Write the band energies (eigenvalues) for k points in the file ENERGYBANDS. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ENERGYBANDS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ENERGYBANDS. - ''') + """, + ) x_cpmd_input_CPMD_ENERGYBANDS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ENERGYBANDS. - ''') + """, + ) class x_cpmd_section_input_CPMD_EXTERNAL_POTENTIAL(MSection): - ''' + """ Read an external potential from file. With ADD specified, its effects is added to the forces acting on the ions. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_EXTERNAL_POTENTIAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXTERNAL_POTENTIAL. - ''') + """, + ) x_cpmd_input_CPMD_EXTERNAL_POTENTIAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXTERNAL_POTENTIAL. - ''') + """, + ) class x_cpmd_section_input_CPMD_EXTRAPOLATE_CONSTRAINT(MSection): - ''' + """ In a CDFT MD run extrapolate the next value for $V$ using a Lagrange polynomial. The order $k$ of the polynomial is read from the next line. { \\bf Default} is \\defaultvalue{k=5}, but it pays off to use the orderfinder.py python script on the ENERGIES file of a former run to estimate the optimal extrapolation order $k_\\text{opt}$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_EXTRAPOLATE_CONSTRAINT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXTRAPOLATE_CONSTRAINT. - ''') + """, + ) x_cpmd_input_CPMD_EXTRAPOLATE_CONSTRAINT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXTRAPOLATE_CONSTRAINT. - ''') + """, + ) class x_cpmd_section_input_CPMD_EXTRAPOLATE_WFN(MSection): - ''' + """ Read the number of wavefunctions to retain from the next line. These wavefunctions are used to extrapolate the initial guess wavefunction in Born-Oppenheimer MD. This can help to speed up BO-MD runs significantly by reducing the number of wavefunction @@ -1532,27 +1653,29 @@ class x_cpmd_section_input_CPMD_EXTRAPOLATE_WFN(MSection): without needs CONVERGENCE ORBITALS to be set to 1.0e-7 or smaller to maintain good energy conservation. With the additional keyword {\\bf STORE} the wavefunction history is also written to restart files. See \\refkeyword{RESTART} for how to read it back. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_EXTRAPOLATE_WFN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXTRAPOLATE_WFN. - ''') + """, + ) x_cpmd_input_CPMD_EXTRAPOLATE_WFN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXTRAPOLATE_WFN. - ''') + """, + ) class x_cpmd_section_input_CPMD_FFTW_WISDOM(MSection): - ''' + """ Controls the use of the ``wisdom'' facility when using FFTW or compatible libraries. When enabled, CPMD will switch to using the ``measure'' mode, which enables searching for additional runtime optimizations of the FFT. The resulting parameters will be @@ -1561,75 +1684,81 @@ class x_cpmd_section_input_CPMD_FFTW_WISDOM(MSection): machine, the file should be deleted. The use of fftw wisdom incurs additional overhead and thus may lead to slower execution. It is recommended to stick with the default settings unless you know what you are doing. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FFTW_WISDOM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FFTW_WISDOM. - ''') + """, + ) x_cpmd_input_CPMD_FFTW_WISDOM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FFTW_WISDOM. - ''') + """, + ) class x_cpmd_section_input_CPMD_FILE_FUSION(MSection): - ''' + """ Reads in two separate \\refkeyword{RESTART} files for ground state and \\refkeyword{ROKS} excited state and writes them into a single restart file. Required to start \\refkeyword{SURFACE HOPPING} calculations. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FILE_FUSION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FILE_FUSION. - ''') + """, + ) x_cpmd_input_CPMD_FILE_FUSION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FILE_FUSION. - ''') + """, + ) class x_cpmd_section_input_CPMD_FILEPATH(MSection): - ''' + """ The path to the files written by CPMD (RESTART.x, MOVIE, ENERGIES, DENSITY.x etc.) is read from the next line. This overwrites the value given in the environment variable {\\bf CPMD\\_FILEPATH}. {\\bf Default} is the {\\bf current directory}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FILEPATH_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FILEPATH. - ''') + """, + ) x_cpmd_input_CPMD_FILEPATH_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FILEPATH. - ''') + """, + ) class x_cpmd_section_input_CPMD_FINITE_DIFFERENCES(MSection): - ''' + """ The step length in a finite difference run for vibrational frequencies ({VIBRATIONAL ANALYSIS} keywords) is read from the next line. With the keywords {\\bf COORD=}{\\sl coord\\_fdiff(1..3)} and {\\bf RADIUS=}{\\sl radius} put in the same line as the step @@ -1639,27 +1768,29 @@ class x_cpmd_section_input_CPMD_FINITE_DIFFERENCES(MSection): length for the finite difference is \\textbf{always} in Bohr (default is 1.0d-2 a.u.). The (optional) coordinates of the center and the radius are read in either Angstrom or Bohr, depending on whether the \\refkeyword{ANGSTROM} keyword is specified or not. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FINITE_DIFFERENCES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FINITE_DIFFERENCES. - ''') + """, + ) x_cpmd_input_CPMD_FINITE_DIFFERENCES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FINITE_DIFFERENCES. - ''') + """, + ) class x_cpmd_section_input_CPMD_FIXRHO_UPWFN(MSection): - ''' + """ Wavefunctions optimization with the method of direct inversion of the iterative subspace (DIIS), performed without updating the charge density at each step. When the orbital energy gradients are below the given tolerance or when the maximum number of @@ -1679,199 +1810,215 @@ class x_cpmd_section_input_CPMD_FIXRHO_UPWFN(MSection): depending on the convergence status of the density. As the density improves (when the density updates become smaller), also the wavefunction convergence criterion is set to its final value. \\end{minipage}\\hfill - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FIXRHO_UPWFN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FIXRHO_UPWFN. - ''') + """, + ) x_cpmd_input_CPMD_FIXRHO_UPWFN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FIXRHO_UPWFN. - ''') + """, + ) class x_cpmd_section_input_CPMD_FORCEMATCH(MSection): - ''' + """ Activates the QM/MM force matching procedure. This keywords requires the presence of a \\&QMMM ... \\&END section with a correspoding \\refkeyword{FORCEMATCH ... END FORCEMATCH} block. See sections~\\ref{sec:qmmm} and~\\ref{sec:forcematch-desc} for more details. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FORCEMATCH_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FORCEMATCH. - ''') + """, + ) x_cpmd_input_CPMD_FORCEMATCH_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FORCEMATCH. - ''') + """, + ) class x_cpmd_section_input_CPMD_FREE_ENERGY_FUNCTIONAL(MSection): - ''' + """ Calculates the electronic free energy using free energy density functional~\\cite{Alavi94,PSil,mbaops} from DFT at finite temperature. This option needs additional keywords (free energy keywords). By {\\bf default} we use {\\bf Lanczos diagonalization} with {\\bf Trotter factorization} and {\\bf Bogoliubov correction}. If the number of states is not specified, use $N_{electrons}/2+4$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_FREE_ENERGY_FUNCTIONAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FREE_ENERGY_FUNCTIONAL. - ''') + """, + ) x_cpmd_input_CPMD_FREE_ENERGY_FUNCTIONAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FREE_ENERGY_FUNCTIONAL. - ''') + """, + ) class x_cpmd_section_input_CPMD_GDIIS(MSection): - ''' + """ Use the method of direct inversion in the iterative subspace combined with a quasi- Newton method (using BFGS) for optimization of the ionic positions~\\cite{Csaszar84}.%\\cite{Fischer} The number of DIIS vectors is read from the next line. GDIIS with {\\bf 5 vectors} is the {\\bf default} method in optimization runs. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_GDIIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GDIIS. - ''') + """, + ) x_cpmd_input_CPMD_GDIIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GDIIS. - ''') + """, + ) class x_cpmd_section_input_CPMD_GSHELL(MSection): - ''' + """ Write a file {\\bf GSHELL} with the information on the plane waves for further use in S(q) calculations. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_GSHELL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GSHELL. - ''') + """, + ) x_cpmd_input_CPMD_GSHELL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GSHELL. - ''') + """, + ) class x_cpmd_section_input_CPMD_HAMILTONIAN_CUTOFF(MSection): - ''' + """ The lower cutoff for the diagonal approximation to the Kohn-Sham matrix~\\cite{Tuckerman94} is read from the next line. {\\bf Default} is {\\bf 0.5} atomic units. For variable cell dynamics only the kinetic energy as calculated for the reference cell is used. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_HAMILTONIAN_CUTOFF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HAMILTONIAN_CUTOFF. - ''') + """, + ) x_cpmd_input_CPMD_HAMILTONIAN_CUTOFF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HAMILTONIAN_CUTOFF. - ''') + """, + ) class x_cpmd_section_input_CPMD_HARMONIC_REFERENCE_SYSTEM(MSection): - ''' + """ Switches harmonic reference system integration~\\cite{Tuckerman94} on/off. The number of shells included in the analytic integration is controlled with the keyword \\refkeyword{HAMILTONIAN CUTOFF}. By {\\bf default} this option is switched {\\bf off}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_HARMONIC_REFERENCE_SYSTEM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HARMONIC_REFERENCE_SYSTEM. - ''') + """, + ) x_cpmd_input_CPMD_HARMONIC_REFERENCE_SYSTEM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HARMONIC_REFERENCE_SYSTEM. - ''') + """, + ) class x_cpmd_section_input_CPMD_HESSCORE(MSection): - ''' + """ Calculates the partial Hessian after relaxation of the enviroment, equivalent to {\\sl NSMAXP=0} ({\\bf PRFO NSMAXP}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_HESSCORE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HESSCORE. - ''') + """, + ) x_cpmd_input_CPMD_HESSCORE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HESSCORE. - ''') + """, + ) class x_cpmd_section_input_CPMD_HESSIAN(MSection): - ''' + """ The initial approximate {\\bf Hessian} for a {\\bf geometry optimization} is constructed using empirical rules with the DISCO~\\cite{Fischer92} or Schlegel's~\\cite{Schlegel84} parametrization or simply a unit matrix is used. If the option {\\bf PARTIAL} is used @@ -1879,27 +2026,29 @@ class x_cpmd_section_input_CPMD_HESSIAN(MSection): block matrix formed of the parametrized Hessian and the partial Hessian (of the reaction core). If the reaction core spans the entire system, its Hessian is simply copied. The keywords \\refkeyword{RESTART} PHESS are required. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_HESSIAN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HESSIAN. - ''') + """, + ) x_cpmd_input_CPMD_HESSIAN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HESSIAN. - ''') + """, + ) class x_cpmd_section_input_CPMD_INITIALIZE_WAVEFUNCTION(MSection): - ''' + """ The initial guess for wavefunction optimization are either random functions or functions derived from the atomic pseudo-wavefunctions. For INITIALIZE WAVEFUNCTION ATOMS PRIMITIVE, CPMD will use the occupation information given in the \\&BASIS section @@ -1910,27 +2059,29 @@ class x_cpmd_section_input_CPMD_INITIALIZE_WAVEFUNCTION(MSection): any atom species. {\\bf Default} is to use the {\\bf atomic pseudo-wavefunctions}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_INITIALIZE_WAVEFUNCTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword INITIALIZE_WAVEFUNCTION. - ''') + """, + ) x_cpmd_input_CPMD_INITIALIZE_WAVEFUNCTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword INITIALIZE_WAVEFUNCTION. - ''') + """, + ) class x_cpmd_section_input_CPMD_INTERFACE(MSection): - ''' + """ Use CPMD together with a classical molecular dynamics code. CPMD and the classical MD code are run simultaneously and communicate via a file based protocol. See the file egointer.F for more details. This needs a specially adapted version of the respective @@ -1938,51 +2089,55 @@ class x_cpmd_section_input_CPMD_INTERFACE(MSection): programs ego\\cite{ego1,ego2} and Gromacs\\cite{gmx3}. When using the suboption PCGFIRST the code will use \\refkeyword{PCG}~MINIMIZE on the very first wavefunction optimization and then switch back to DIIS. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_INTERFACE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword INTERFACE. - ''') + """, + ) x_cpmd_input_CPMD_INTERFACE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword INTERFACE. - ''') + """, + ) class x_cpmd_section_input_CPMD_INTFILE(MSection): - ''' + """ This keyword means {\\it Interface File} and allows to select a special file name in the reading and writing stages. The file name (max 40 characters) must be supplied in the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_INTFILE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword INTFILE. - ''') + """, + ) x_cpmd_input_CPMD_INTFILE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword INTFILE. - ''') + """, + ) class x_cpmd_section_input_CPMD_ISOLATED_MOLECULE(MSection): - ''' + """ Calculate the ionic temperature assuming that the system consists of an isolated molecule or cluster. @@ -1997,27 +2152,29 @@ class x_cpmd_section_input_CPMD_ISOLATED_MOLECULE(MSection): It allows studying an isolated molecule or cluster within periodic boundary conditions. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ISOLATED_MOLECULE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ISOLATED_MOLECULE. - ''') + """, + ) x_cpmd_input_CPMD_ISOLATED_MOLECULE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ISOLATED_MOLECULE. - ''') + """, + ) class x_cpmd_section_input_CPMD_KSHAM(MSection): - ''' + """ Write out the Kohn-Sham Hamiltonian Matrix in the orbital basis given in the RESTART file to KS\\_HAM. For this option to work the \\refkeyword{RESTART} option and \\refkeyword{OPTIMIZE WAVEFUNCTION} have to be activated. This option is useful for @@ -2026,50 +2183,54 @@ class x_cpmd_section_input_CPMD_KSHAM(MSection): orbitals are read from the next line. {\\bf ROUT} controls printing of involved orbitals.\\\\ {\\bf MATRIX} instructs CPMD to read a transformation matrix from the file LOWDIN\\_A to transform the KS-Hamiltonian to the non-orthogonal orbital basis - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_KSHAM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword KSHAM. - ''') + """, + ) x_cpmd_input_CPMD_KSHAM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword KSHAM. - ''') + """, + ) class x_cpmd_section_input_CPMD_LANCZOS_DIAGONALIZATION(MSection): - ''' + """ Use {\\bf Lanczos diagonalization} scheme. \\textbf{Default} with \\textbf{free energy functional}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LANCZOS_DIAGONALIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LANCZOS_DIAGONALIZATION. - ''') + """, + ) x_cpmd_input_CPMD_LANCZOS_DIAGONALIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LANCZOS_DIAGONALIZATION. - ''') + """, + ) class x_cpmd_section_input_CPMD_LANCZOS_PARAMETER(MSection): - ''' + """ Give four parameters for Lanczos diagonalization in the next line: \\begin{itemize} \\item Maximal number of Lanczos iterations (50 is enough), \\item Maximal number for the Krylov sub-space (8 best value), \\item Blocking dimension ( $\\leq NSTATE$, best in @@ -2079,27 +2240,29 @@ class x_cpmd_section_input_CPMD_LANCZOS_PARAMETER(MSection): approximation) \\end{itemize} If n is specified, read $n-1$ lines after the first one, containing a threshold density and a tolerance. See the hints section \\ref{hints:lanczos} for more information. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LANCZOS_PARAMETER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LANCZOS_PARAMETER. - ''') + """, + ) x_cpmd_input_CPMD_LANCZOS_PARAMETER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LANCZOS_PARAMETER. - ''') + """, + ) class x_cpmd_section_input_CPMD_LANGEVIN(MSection): - ''' + """ Use a (generalized) Langevin equation to thermostat the simulation\\cite{Ceriotti10}. By default, the component of the noise parallel to the center of mass velocity is removed at each step of the thermostat. Removal can be disabled by the option {\\sl @@ -2134,27 +2297,29 @@ class x_cpmd_section_input_CPMD_LANGEVIN(MSection): cm$^{-1}$) is read from the next line. Will be about 50\\%{} more efficient than {\\sl OPTIMAL} for slow modes, but less efficient for fast vibrations. Use only with Born- Oppenheimer dynamics. \\end{minipage} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LANGEVIN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LANGEVIN. - ''') + """, + ) x_cpmd_input_CPMD_LANGEVIN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LANGEVIN. - ''') + """, + ) class x_cpmd_section_input_CPMD_LBFGS(MSection): - ''' + """ Use the limited-memory BFGS method (L-BFGS) for linear scaling {\\bf optimization} of the {\\bf ionic positions}. For more informations, see~\\cite{LSCAL}. The information about the Hessian for the quasi-Newton method employed is derived from the history of @@ -2174,261 +2339,283 @@ class x_cpmd_section_input_CPMD_LBFGS(MSection): useful to combine these keywords with the keywords \\refkeyword{PRFO}, \\refkeyword{CONVERGENCE} ADAPT, \\refkeyword{RESTART} LSSTAT, \\refkeyword{PRINT} LSCAL ON and others. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LBFGS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LBFGS. - ''') + """, + ) x_cpmd_input_CPMD_LBFGS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LBFGS. - ''') + """, + ) class x_cpmd_section_input_CPMD_LINEAR_RESPONSE(MSection): - ''' + """ A perturbation theory calculation is done, according to the (required) further input in the \\&RESP section. In the latter, one of the possible perturbation types (PHONONS, LANCZOS, RAMAN, FUKUI, KPERT, NMR, EPR, see section \\ref{sec:resp-section}) can be chosen, accompanied by further options. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LINEAR_RESPONSE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LINEAR_RESPONSE. - ''') + """, + ) x_cpmd_input_CPMD_LINEAR_RESPONSE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LINEAR_RESPONSE. - ''') + """, + ) class x_cpmd_section_input_CPMD_LOCAL_SPIN_DENSITY(MSection): - ''' + """ Use the local spin density approximation. {\\bf Warning:} Not all functionals are implemented for this option. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LOCAL_SPIN_DENSITY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LOCAL_SPIN_DENSITY. - ''') + """, + ) x_cpmd_input_CPMD_LOCAL_SPIN_DENSITY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LOCAL_SPIN_DENSITY. - ''') + """, + ) class x_cpmd_section_input_CPMD_LSD(MSection): - ''' + """ Use the local spin density approximation. {\\bf Warning:} Not all functionals are implemented for this option. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_LSD_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LSD. - ''') + """, + ) x_cpmd_input_CPMD_LSD_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LSD. - ''') + """, + ) class x_cpmd_section_input_CPMD_MAXITER(MSection): - ''' + """ The maximum number of iteration steps for the self-consistency of wavefunctions. Recommended use instead of \\refkeyword{MAXSTEP} for pure wavefunction optimisation. The value is read from the next line. {\\bf Default} is {\\bf 10000} steps. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MAXITER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MAXITER. - ''') + """, + ) x_cpmd_input_CPMD_MAXITER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MAXITER. - ''') + """, + ) class x_cpmd_section_input_CPMD_MAXRUNTIME(MSection): - ''' + """ The maximum RUN TIME (ELAPSED TIME) in seconds to be used is read from the next line. The calculation will stop after the given amount of time. {\\bf Default} is no limit. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MAXRUNTIME_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MAXRUNTIME. - ''') + """, + ) x_cpmd_input_CPMD_MAXRUNTIME_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MAXRUNTIME. - ''') + """, + ) class x_cpmd_section_input_CPMD_MAXSTEP(MSection): - ''' + """ The maximum number of steps for geometry optimization or molecular dynamics to be performed. In the case of pure wavefunction optimisation, this keyword may be used instead of \\refkeyword{MAXITER}. The value is read from the next line. {\\bf Default} is {\\bf 10000} steps. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MAXSTEP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MAXSTEP. - ''') + """, + ) x_cpmd_input_CPMD_MAXSTEP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MAXSTEP. - ''') + """, + ) class x_cpmd_section_input_CPMD_MEMORY(MSection): - ''' + """ Using {\\bf BIG}, the structure factors for the density cutoff are only calculated once and stored for reuse. This option allows for considerable time savings in connection with Vanderbilt pseudopotentials. {\\bf Default} is ({\\bf SMALL}) to {\\bf recalculate} them whenever needed. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MEMORY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MEMORY. - ''') + """, + ) x_cpmd_input_CPMD_MEMORY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MEMORY. - ''') + """, + ) class x_cpmd_section_input_CPMD_MIRROR(MSection): - ''' + """ Write the input file to the output. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MIRROR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MIRROR. - ''') + """, + ) x_cpmd_input_CPMD_MIRROR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MIRROR. - ''') + """, + ) class x_cpmd_section_input_CPMD_MIXDIIS(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MIXDIIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MIXDIIS. - ''') + """, + ) x_cpmd_input_CPMD_MIXDIIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MIXDIIS. - ''') + """, + ) class x_cpmd_section_input_CPMD_MIXSD(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MIXSD_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MIXSD. - ''') + """, + ) x_cpmd_input_CPMD_MIXSD_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MIXSD. - ''') + """, + ) class x_cpmd_section_input_CPMD_MODIFIED_GOEDECKER(MSection): - ''' + """ To be used in combination with \\refkeyword{LOW SPIN EXCITATION}~\\textbf{ROKS}. Calculation of the off-diagonal Kohn-Sham matrix elements $F_{AB}$ and $F_{BA}$ (with A, B: ROKS-SOMOs) is performed according to a modified Goedecker-Umrigar scheme ( @@ -2438,27 +2625,29 @@ class x_cpmd_section_input_CPMD_MODIFIED_GOEDECKER(MSection): \\textbf{PARAMETERS}: $\\lambda _{AB}$ and $\\lambda _{BA}$ are read from the next line. Can be used to avoid unphysical rotation of the SOMOs. Always check the orbitals! See also \\ref{hints:roks}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MODIFIED_GOEDECKER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MODIFIED_GOEDECKER. - ''') + """, + ) x_cpmd_input_CPMD_MODIFIED_GOEDECKER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MODIFIED_GOEDECKER. - ''') + """, + ) class x_cpmd_section_input_CPMD_MOLECULAR_DYNAMICS(MSection): - ''' + """ Perform a molecular dynamics (MD) run. {\\bf CP} stands for a Car-Parrinello type MD. With the option {\\bf BO} a Born-Oppenheimer MD is performed where the wavefunction is reconverged after each MD-step. {\\bf EH} specifies Ehrenfest type dynamics according @@ -2484,123 +2673,133 @@ class x_cpmd_section_input_CPMD_MOLECULAR_DYNAMICS(MSection): a copy of a previous TRAJECTORY file), or TRAJSAVED.xyz if {\\bf XYZ} is set. {\\bf NSKIP} and {\\bf NSAMPLE} control the selection of frames read: the frame read at step ISTEP is NSKIP+ISTEP*NSAMPLE. {\\bf Default} is {\\bf CP}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MOLECULAR_DYNAMICS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MOLECULAR_DYNAMICS. - ''') + """, + ) x_cpmd_input_CPMD_MOLECULAR_DYNAMICS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MOLECULAR_DYNAMICS. - ''') + """, + ) class x_cpmd_section_input_CPMD_MOVERHO(MSection): - ''' + """ Mixing used during optimization of geometry or molecular dynamics. Use atomic or pseudowavefunctions to project wavefunctions in order to calculate the new ones with movement of atoms. Read in the next line the parameter (typically 0.2). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MOVERHO_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MOVERHO. - ''') + """, + ) x_cpmd_input_CPMD_MOVERHO_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MOVERHO. - ''') + """, + ) class x_cpmd_section_input_CPMD_MOVIE(MSection): - ''' + """ Write the atomic coordinates without applying periodic boundary conditions in MOVIE format every {\\sl IMOVIE} time steps on file {\\em MOVIE}. {\\sl IMOVIE} is read from the next line. {\\bf Default} is {\\bf not} to write a movie file. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_MOVIE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MOVIE. - ''') + """, + ) x_cpmd_input_CPMD_MOVIE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MOVIE. - ''') + """, + ) class x_cpmd_section_input_CPMD_NOGEOCHECK(MSection): - ''' + """ Default is to check all atomic distances and stop the program if the smallest disctance is below 0.5 Bohr. This keyword requests not to perform the check. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_NOGEOCHECK_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NOGEOCHECK. - ''') + """, + ) x_cpmd_input_CPMD_NOGEOCHECK_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NOGEOCHECK. - ''') + """, + ) class x_cpmd_section_input_CPMD_NONORTHOGONAL_ORBITALS(MSection): - ''' + """ Use the norm constraint method~\\cite{HutterIP} for molecular dynamics or non\\-orthogonal orbitals in an optimization run. On the next line the limit of the off diagonal elements of the overlap matrix is defined. {\\bf Warning:} Adding or deleting this option during a MD run needs special care. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_NONORTHOGONAL_ORBITALS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NONORTHOGONAL_ORBITALS. - ''') + """, + ) x_cpmd_input_CPMD_NONORTHOGONAL_ORBITALS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NONORTHOGONAL_ORBITALS. - ''') + """, + ) class x_cpmd_section_input_CPMD_NOSE_PARAMETERS(MSection): - ''' + """ The {\\bf parameters} controlling the {\\bf Nos\\'e thermostats}~\\cite{Nose84,Hoover85} are read in the following order from the next line: The {\\bf length} of the Nos\\'e-Hoover chain for the {\\bf ions}, the {\\bf length} of the Nos\\'e-Hoover chain @@ -2614,27 +2813,29 @@ class x_cpmd_section_input_CPMD_NOSE_PARAMETERS(MSection): choices are 3, 5, 7, 9, 15, 25, 125 and 625), and the {\\bf decomposition ratio} of the time step ({\\bf default} is {\\bf 1}). If this keyword is omitted, the defaults are used. {\\bf If the keyword is used \\underline{all} parameters have to be specified.} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_NOSE_PARAMETERS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NOSE_PARAMETERS. - ''') + """, + ) x_cpmd_input_CPMD_NOSE_PARAMETERS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NOSE_PARAMETERS. - ''') + """, + ) class x_cpmd_section_input_CPMD_NOSE(MSection): - ''' + """ {\\bf Nos\\'e-Hoover chains}~\\cite{Nose84,Hoover85} for the {\\bf ions}, {\\bf electrons}, or {\\bf cell parameters} are used. The {\\bf target temperature} in Kelvin and the {\\bf thermostat frequency} in $cm^{-1}$, respectively the {\\bf fictitious kinetic energy} @@ -2677,27 +2878,29 @@ class x_cpmd_section_input_CPMD_NOSE(MSection): soon after the thermostat frequencies in the same line (also for the LOCAL thermostat). By default it is same as the target temperature of the thermostat. Note: This is not implemented for the CAFES thermostat. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_NOSE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NOSE. - ''') + """, + ) x_cpmd_input_CPMD_NOSE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NOSE. - ''') + """, + ) class x_cpmd_section_input_CPMD_ODIIS(MSection): - ''' + """ Use the method of {\\bf direct inversion} in the iterative subspace for {\\bf optimization} of the {\\bf wavefunction}~\\cite{Hutter94a}. The number of DIIS vectors is read from the next line. (ODIIS with {\\bf 10 vectors} is the {\\bf default} method @@ -2706,27 +2909,29 @@ class x_cpmd_section_input_CPMD_ODIIS(MSection): default, the number of wavefunction optimization cycles until DIIS is {\\bf reset} on poor progress, is the number of DIIS vectors. With {\\bf ODIIS NO\\_RESET}, this number can be changed, or DIIS resets can be {\\bf disabled} altogether with a value of -1. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ODIIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ODIIS. - ''') + """, + ) x_cpmd_input_CPMD_ODIIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ODIIS. - ''') + """, + ) class x_cpmd_section_input_CPMD_OPTIMIZE_GEOMETRY(MSection): - ''' + """ This option causes the program to optimize the geometry of the system through a sequence of wavefunction optimizations and position updates. The additional keyword XYZ requests writing the ``trajectory'' of the geometry additionally in xmol/xyz- @@ -2737,27 +2942,29 @@ class x_cpmd_section_input_CPMD_OPTIMIZE_GEOMETRY(MSection): ionic positions. Other options are: \\refkeyword{LBFGS}, \\refkeyword{PRFO}, and \\refkeLMAXyword{STEEPEST DESCENT} IONS. See \\refkeyword{OPTIMIZE WAVEFUNCTION} for details on the corresponding options for wavefunction optimizations. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_OPTIMIZE_GEOMETRY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OPTIMIZE_GEOMETRY. - ''') + """, + ) x_cpmd_input_CPMD_OPTIMIZE_GEOMETRY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OPTIMIZE_GEOMETRY. - ''') + """, + ) class x_cpmd_section_input_CPMD_OPTIMIZE_WAVEFUNCTION(MSection): - ''' + """ Request a single point energy calculation through a wavefunction optimization. The resulting total energy is printed (for more output options see, e.g.,: \\refkeyword{PRINT}, \\refkeyword{RHOOUT}, \\refkeyword{ELF}) and a \\refkeyword{RESTART} @@ -2767,198 +2974,214 @@ class x_cpmd_section_input_CPMD_OPTIMIZE_WAVEFUNCTION(MSection): but other options are: \\refkeyword{PCG} (optionally with MINIMIZE), \\refkeyword{LANCZOS DIAGONALIZATION}, \\refkeyword{DAVIDSON DIAGONALIZATION}, and \\refkeyword{STEEPEST DESCENT} ELECTRONS. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_OPTIMIZE_WAVEFUNCTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OPTIMIZE_WAVEFUNCTION. - ''') + """, + ) x_cpmd_input_CPMD_OPTIMIZE_WAVEFUNCTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OPTIMIZE_WAVEFUNCTION. - ''') + """, + ) class x_cpmd_section_input_CPMD_ORBITAL_HARDNESS(MSection): - ''' + """ Perform an orbital hardness calculation. See section \\&Hardness for further input options. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ORBITAL_HARDNESS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ORBITAL_HARDNESS. - ''') + """, + ) x_cpmd_input_CPMD_ORBITAL_HARDNESS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ORBITAL_HARDNESS. - ''') + """, + ) class x_cpmd_section_input_CPMD_ORTHOGONALIZATION(MSection): - ''' + """ Orthogonalization in optimization runs is done either by a L\\"owdin (symmetric) or Gram-Schmidt procedure. {\\bf Default} is Gram-Schmidt except for parallel runs where L\\"owdin orthogonalization is used with the conjugate-gradient scheme. With the additional keyword {\\bf MATRIX} the L\\"owdin transformation matrix is written to a file named LOWDIN\\_A. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ORTHOGONALIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ORTHOGONALIZATION. - ''') + """, + ) x_cpmd_input_CPMD_ORTHOGONALIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ORTHOGONALIZATION. - ''') + """, + ) class x_cpmd_section_input_CPMD_PATH_INTEGRAL(MSection): - ''' + """ Perform a {\\bf path integral molecular dynamics} calculation~\\cite{Marx94,Marx96}. This keyword requires further input in the section \\&PIMD ... \\&END. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PATH_INTEGRAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PATH_INTEGRAL. - ''') + """, + ) x_cpmd_input_CPMD_PATH_INTEGRAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PATH_INTEGRAL. - ''') + """, + ) class x_cpmd_section_input_CPMD_PATH_MINIMIZATION(MSection): - ''' + """ Perform a {\\bf mean free energy path} search~\\cite{Eijnden06}. This keyword requires further input in the section \\&PATH ... \\&END. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PATH_MINIMIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PATH_MINIMIZATION. - ''') + """, + ) x_cpmd_input_CPMD_PATH_MINIMIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PATH_MINIMIZATION. - ''') + """, + ) class x_cpmd_section_input_CPMD_PATH_SAMPLING(MSection): - ''' + """ Use CPMD together with a reaction path sampling~\\cite{tps} program. This needs special software. Note: this keyword has {\\em nothing} to do with path integral MD as activated by the keyword PATH INTEGRAL and as specified in the section \\&PIMD ... \\&END. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PATH_SAMPLING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PATH_SAMPLING. - ''') + """, + ) x_cpmd_input_CPMD_PATH_SAMPLING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PATH_SAMPLING. - ''') + """, + ) class x_cpmd_section_input_CPMD_PCG(MSection): - ''' + """ Use the method of {\\bf preconditioned conjugate gradients} for {\\bf optimization} of the {\\bf wavefunction}. The fixed step length is controlled by the keywords \\refkeyword{TIMESTEP ELECTRONS} and \\refkeyword{EMASS}. If the additional option {\\bf MINIMIZE} is chosen, then additionally line searches are performed to improve the preconditioning. The preconditioning is controlled by the keyword \\refkeyword{HAMILTONIAN CUTOFF}. Optionally preconditioning can be disabled. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PCG_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PCG. - ''') + """, + ) x_cpmd_input_CPMD_PCG_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PCG. - ''') + """, + ) class x_cpmd_section_input_CPMD_PRFO_NSVIB(MSection): - ''' + """ Perform a {\\bf vibrational analysis} every NSVIB P-RFO steps {\\bf on the fly}. This option only works with the P-RFO and microiterative transition state search algorithms. In case of microiterative TS search, only the reaction core is analyzed. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PRFO_NSVIB_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRFO_NSVIB. - ''') + """, + ) x_cpmd_input_CPMD_PRFO_NSVIB_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRFO_NSVIB. - ''') + """, + ) class x_cpmd_section_input_CPMD_PRFO(MSection): - ''' + """ Use the partitioned rational function optimizer (P-RFO) with a quasi-Newton method for {\\bf optimization} of the {\\bf ionic positions}. For more informations, see~\\cite{LSCAL}. The approximated Hessian is updated using the Powell @@ -2986,99 +3209,107 @@ class x_cpmd_section_input_CPMD_PRFO(MSection): \\end{minipage} It can be useful to combine these keywords with the keywords \\refkeyword{CONVERGENCE} ENERGY, \\refkeyword{RESTART} LSSTAT, \\refkeyword{RESTART} PHESS, \\refkeyword{PRFO} NSVIB, \\refkeyword{PRINT} LSCAL ON and others. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PRFO_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRFO. - ''') + """, + ) x_cpmd_input_CPMD_PRFO_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRFO. - ''') + """, + ) class x_cpmd_section_input_CPMD_PRINT(MSection): - ''' + """ A {\\bf detailed output} is printed every {\\sl IPRINT} iterations. Either only different contribution to the energy or in addition the atomic coordinates and the forces are printed. {\\sl IPRINT} is read from the next line if the keywords {\\bf ON} or {\\bf OFF} are not specified. {\\bf Default} is {\\bf only energies} after the first step and at the end of the run. OFF switches the output off. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PRINT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRINT. - ''') + """, + ) x_cpmd_input_CPMD_PRINT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRINT. - ''') + """, + ) class x_cpmd_section_input_CPMD_PRNGSEED(MSection): - ''' + """ The seed for the random number generator is read as an integer number from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PRNGSEED_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRNGSEED. - ''') + """, + ) x_cpmd_input_CPMD_PRNGSEED_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRNGSEED. - ''') + """, + ) class x_cpmd_section_input_CPMD_PROJECT(MSection): - ''' + """ This keyword is controlling the calculation of the constraint force in optimization runs. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PROJECT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PROJECT. - ''') + """, + ) x_cpmd_input_CPMD_PROJECT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PROJECT. - ''') + """, + ) class x_cpmd_section_input_CPMD_PROPAGATION_SPECTRA(MSection): - ''' + """ Calculates the electronic absorption spectra using the TDDFT propagation of the Kohn- Sham orbitals. Use the section \\&PTDDFT to define the parameters. Use this principal keyword always with CAYLEY (in \\&CPMD). The program produces a file "dipole.dat" with @@ -3089,50 +3320,54 @@ class x_cpmd_section_input_CPMD_PROPAGATION_SPECTRA(MSection): 1.0D-8 N\\_CYCLES 100000 PROP\\_TSTEP 0.01 EXT\\_PULSE 1.D-5 PERT\\_DIRECTION 1 RESTART 2 \\&END The time step is specified by setting \\refkeyword{PROP-TSTEP}. The total number of iteration is controlled by \\refkeyword{N-CYCLES}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PROPAGATION_SPECTRA_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PROPAGATION_SPECTRA. - ''') + """, + ) x_cpmd_input_CPMD_PROPAGATION_SPECTRA_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PROPAGATION_SPECTRA. - ''') + """, + ) class x_cpmd_section_input_CPMD_PROPERTIES(MSection): - ''' + """ Calculate some properties. This keyword requires further input in the section \\&PROP \\dots \\&END. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_PROPERTIES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PROPERTIES. - ''') + """, + ) x_cpmd_input_CPMD_PROPERTIES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PROPERTIES. - ''') + """, + ) class x_cpmd_section_input_CPMD_QMMM(MSection): - ''' + """ Activate the hybrid QM/MM code. This keyword requires further input in the section \\&QMMM \\dots \\&END. The QM driver is the standard CPMD. An interface program ({\\bf MM\\_Interface}) and a classic force field @@ -3141,224 +3376,242 @@ class x_cpmd_section_input_CPMD_QMMM(MSection): licence} and is {\\bf not} included in the standard CPMD code. % FIXME: AK 2005/07/10 % we should put a contact address or web page here. (see section~\\ref{sec:qmmm} for more information on the available options and the input format). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_QMMM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword QMMM. - ''') + """, + ) x_cpmd_input_CPMD_QMMM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword QMMM. - ''') + """, + ) class x_cpmd_section_input_CPMD_QUENCH(MSection): - ''' + """ The {\\bf velocities} of the {\\bf ions}, {\\bf wavefunctions} or the {\\bf cell} are set to zero at the beginning of a run. With the option {\\bf BO} the wavefunctions are converged at the beginning of the MD run. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_QUENCH_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword QUENCH. - ''') + """, + ) x_cpmd_input_CPMD_QUENCH_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword QUENCH. - ''') + """, + ) class x_cpmd_section_input_CPMD_RANDOMIZE(MSection): - ''' + """ The {\\bf ionic positions} or the {\\bf wavefunction} or the {\\bf cell parameters} are {\\bf randomly displaced} at the beginning of a run. The maximal amplitude of the displacement is read from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_RANDOMIZE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RANDOMIZE. - ''') + """, + ) x_cpmd_input_CPMD_RANDOMIZE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RANDOMIZE. - ''') + """, + ) class x_cpmd_section_input_CPMD_RATTLE(MSection): - ''' + """ This option can be used to set the maximum number of iterations and the tolerance for the {\\bf iterative orthogonalization}. These two numbers are read from the next line. {\\bf Defaults} are 30 and $10^{-6}$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_RATTLE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RATTLE. - ''') + """, + ) x_cpmd_input_CPMD_RATTLE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RATTLE. - ''') + """, + ) class x_cpmd_section_input_CPMD_REAL_SPACE_WFN_KEEP(MSection): - ''' + """ The real space wavefunctions are kept in memory for later reuse. This minimizes the number of Fourier transforms and can result in a significant speedup at the expense of a larger memory use. With the option {\\bf SIZE} the maximum available memory for the storage of wavefunctions is read from the next line (in MBytes). The program stores as many wavefunctions as possible within the given memory allocation. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_REAL_SPACE_WFN_KEEP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REAL_SPACE_WFN_KEEP. - ''') + """, + ) x_cpmd_input_CPMD_REAL_SPACE_WFN_KEEP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REAL_SPACE_WFN_KEEP. - ''') + """, + ) class x_cpmd_section_input_CPMD_RESCALE_OLD_VELOCITIES(MSection): - ''' + """ Rescale {\\bf ionic} velocities after \\refkeyword{RESTART} to the temperature specified by either \\refkeyword{TEMPERATURE}, \\refkeyword{TEMPCONTROL} {\\bf IONS}, or \\refkeyword{NOSE} {\\bf IONS}. Useful if the type of ionic thermostatting is changed, (do not use RESTART NOSEP in this case). Note only for path integral runs: the scaling is only applied to the first (centroid) replica. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_RESCALE_OLD_VELOCITIES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RESCALE_OLD_VELOCITIES. - ''') + """, + ) x_cpmd_input_CPMD_RESCALE_OLD_VELOCITIES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RESCALE_OLD_VELOCITIES. - ''') + """, + ) class x_cpmd_section_input_CPMD_RESTART(MSection): - ''' + """ This keyword controls what data is read (at the beginning) from the file RESTART.x. {\\bf Warning:} You can only read data that has been previously written into the RESTART-file. A list of different {\\it OPTIONS}\\ can be specified. List of valid options: - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_RESTART_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RESTART. - ''') + """, + ) x_cpmd_input_CPMD_RESTART_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RESTART. - ''') + """, + ) class x_cpmd_section_input_CPMD_RESTFILE(MSection): - ''' + """ The number of distinct \\refkeyword{RESTART} files generated during CPMD runs is read from the next line. The restart files are written in turn. {\\bf Default is 1}. If you specify e.g.~3, then the files RESTART.1, RESTART.2, RESTART.3 are used in rotation. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_RESTFILE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RESTFILE. - ''') + """, + ) x_cpmd_input_CPMD_RESTFILE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RESTFILE. - ''') + """, + ) class x_cpmd_section_input_CPMD_REVERSE_VELOCITIES(MSection): - ''' + """ Reverse the ionic and electronic (if applicable) velocities after the initial setup of an MD run. This way one can, e.g., go ``backwards'' from a given \\refkeyword{RESTART} to improve sampling of a given MD ``path''. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_REVERSE_VELOCITIES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REVERSE_VELOCITIES. - ''') + """, + ) x_cpmd_input_CPMD_REVERSE_VELOCITIES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REVERSE_VELOCITIES. - ''') + """, + ) class x_cpmd_section_input_CPMD_RHOOUT(MSection): - ''' + """ {\\bf Store} the {\\bf density} at the end of the run on file {\\em DENSITY}. If the keyword BANDS is defined then on the following lines the number of bands (or orbitals) to be plotted and their index (starting from 1) have to be given. If the position @@ -3367,27 +3620,29 @@ class x_cpmd_section_input_CPMD_RHOOUT(MSection): calculations besides the total density also the spin density is stored on the file {\\em SPINDEN}. The following example will request output of the orbitals or bands number 5, 7, and 8 as wavefunctions: - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_RHOOUT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RHOOUT. - ''') + """, + ) x_cpmd_input_CPMD_RHOOUT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RHOOUT. - ''') + """, + ) class x_cpmd_section_input_CPMD_ROKS(MSection): - ''' + """ Calculates the first excited state using Restricted Open-shell Kohn-Sham theory~\\cite{Frank98}. By default, the singlet state is calculated using the delocalized variant of the modified Goedecker-Umrigar scheme, which is supposed to @@ -3395,78 +3650,84 @@ class x_cpmd_section_input_CPMD_ROKS(MSection): just include this keyword in the CPMD section (instead of using the \\refspekeyword{LSE}{LOW SPIN EXCITATION} input). See \\ref{hints:roks} for further information. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_ROKS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ROKS. - ''') + """, + ) x_cpmd_input_CPMD_ROKS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ROKS. - ''') + """, + ) class x_cpmd_section_input_CPMD_SCALED_MASSES(MSection): - ''' + """ Switches the usage of g-vector dependent masses on/off. The number of shells included in the analytic integration is controlled with the keyword {\\bf HAMILTONIAN CUTOFF}. By {\\bf default} this option is switched {\\bf off}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_SCALED_MASSES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SCALED_MASSES. - ''') + """, + ) x_cpmd_input_CPMD_SCALED_MASSES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SCALED_MASSES. - ''') + """, + ) class x_cpmd_section_input_CPMD_SHIFT_POTENTIAL(MSection): - ''' + """ After this keyword, useful in hamiltonian diagonalization, the shift value $V_{\\rm shift}$ must be provided in the next line. This option is used in the Davidson diagonalization subroutine and shifts rigidly the total electronic potential as $V_{\\rm pot}({\\bf r}) \\to V_{\\rm pot}({\\bf r})+V_{\\rm shift}$ then it is subtracted again at the end of the main loop, restoring back the original $V_{\\rm pot}({\\bf r})$ that remains basically unaffected once that the calculation is completed. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_SHIFT_POTENTIAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SHIFT_POTENTIAL. - ''') + """, + ) x_cpmd_input_CPMD_SHIFT_POTENTIAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SHIFT_POTENTIAL. - ''') + """, + ) class x_cpmd_section_input_CPMD_SPLINE(MSection): - ''' + """ This option controls the generation of the pseudopotential functions in g-space. All pseudopotential functions are first initialized on a evenly spaced grid in g-space and then calculated at the needed positions with a spline interpolation. The number of @@ -3479,27 +3740,29 @@ class x_cpmd_section_input_CPMD_SPLINE(MSection): memory in the case of Vanderbilt pseudopotentials when the number of shells is not much smaller than the total number of plane waves, i.e. for all cell symmetries except simple cubic and fcc. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_SPLINE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SPLINE. - ''') + """, + ) x_cpmd_input_CPMD_SPLINE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SPLINE. - ''') + """, + ) class x_cpmd_section_input_CPMD_SSIC(MSection): - ''' + """ Apply an {\\it ad hoc} Self Interaction Correction (SIC) to the ordinary DFT calculation expressed in terms of total energy as \\begin{equation*} E^{\\rm tot}-a\\cdot E_H[m]- b\\cdot E_{xc}[m, 0] \\end{equation*} where $m({\\bf x}) = \\rho_\\alpha({\\bf @@ -3513,27 +3776,29 @@ class x_cpmd_section_input_CPMD_SSIC(MSection): x})} \\end{equation*} where the sign is $+$ for $\\alpha$ spin and $-$ for $\\beta$ spin components, respectively. Be aware that this keyword should be used together with $LSD$ (set by default). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_SSIC_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SSIC. - ''') + """, + ) x_cpmd_input_CPMD_SSIC_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SSIC. - ''') + """, + ) class x_cpmd_section_input_CPMD_STEEPEST_DESCENT(MSection): - ''' + """ NOPRECONDITIONING works only for electrons and LINE only for ions. Use the method of {\\bf steepest descent} for the {\\bf optimization} of wavefunction and/or atomic positions and/or cell. If both options are specified in a geometry optimization run, a @@ -3542,53 +3807,57 @@ class x_cpmd_section_input_CPMD_STEEPEST_DESCENT(MSection): HAMILTONIAN CUTOFF}. Optionally preconditioning can be disabled. For ions optimization, the steplength is controlled by the keywords {\\bf TIMESTEP} and {\\bf EMASS}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_STEEPEST_DESCENT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword STEEPEST_DESCENT. - ''') + """, + ) x_cpmd_input_CPMD_STEEPEST_DESCENT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword STEEPEST_DESCENT. - ''') + """, + ) class x_cpmd_section_input_CPMD_STRUCTURE(MSection): - ''' + """ Print {\\bf structure information} at the end of the run. Bonds, angles and dihedral angles can be printed. Dihedral angles are defined between 0 and 180 degrees. This might change in the future. If the option {\\bf SELECT} is used the output is restricted to a set of atoms. The number of atoms and a list of the selected atoms has to be given on the next lines. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_STRUCTURE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword STRUCTURE. - ''') + """, + ) x_cpmd_input_CPMD_STRUCTURE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword STRUCTURE. - ''') + """, + ) class x_cpmd_section_input_CPMD_SUBTRACT(MSection): - ''' + """ If COMVEL is selected, the total momentum of the system is removed, if ROTVEL is selected the global angular momentum of the system is removed. Both options can be used separately and simultaneously. The subtraction is done each {\\bf ncomv} or {\\bf @@ -3605,126 +3874,136 @@ class x_cpmd_section_input_CPMD_SUBTRACT(MSection): a drift of the whole system should be much reduced, anyways. {\\bf Note}: since the subtracted kinetic energy is put back into the system by simple rescaling of the ionic velocities, these options is not fully compatible with \\refkeyword{NOSE} thermostats. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_SUBTRACT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SUBTRACT. - ''') + """, + ) x_cpmd_input_CPMD_SUBTRACT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SUBTRACT. - ''') + """, + ) class x_cpmd_section_input_CPMD_SURFACE_HOPPING(MSection): - ''' + """ Nonadiabatic dynamics involving the ground state and a \\refkeyword{ROKS} excited state\\cite{surfhop}. Do NOT use this keyword together with \\refkeyword{T-SHTDDFT}, which invokes the surface hopping MD scheme based on TDDFT~\\cite{TDDFT-SH} (see \\refkeyword{T-SHTDDFT}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_SURFACE_HOPPING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SURFACE_HOPPING. - ''') + """, + ) x_cpmd_input_CPMD_SURFACE_HOPPING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SURFACE_HOPPING. - ''') + """, + ) class x_cpmd_section_input_CPMD_TDDFT(MSection): - ''' + """ Calculate the energy according to TDDFT. This keyword can be used together with \\refkeyword{OPTIMIZE GEOMETRY} or \\refkeyword{MOLECULAR DYNAMICS} BO. Use the \\&TDDFT section to set parameters for the calculation. This keyword requires \\refkeyword{RESTART} LINRES. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TDDFT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TDDFT. - ''') + """, + ) x_cpmd_input_CPMD_TDDFT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TDDFT. - ''') + """, + ) class x_cpmd_section_input_CPMD_TEMPCONTROL(MSection): - ''' + """ The {\\bf temperature} of the {\\bf ions} in Kelvin or the {\\bf fictitious kinetic energy} of the {\\bf electrons} in atomic units or the {\\bf kinetic energy} of the {\\bf cell} in atomic units (?) is controlled by scaling. The {\\bf target} temperature and the {\\bf tolerance} for the ions or the target kinetic energy and the tolerance for the electrons or the cell are read from the next line. As a gentler alternative you may want to try the \\refkeyword{BERENDSEN} scheme instead. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TEMPCONTROL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TEMPCONTROL. - ''') + """, + ) x_cpmd_input_CPMD_TEMPCONTROL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TEMPCONTROL. - ''') + """, + ) class x_cpmd_section_input_CPMD_TEMPERATURE_ELECTRON(MSection): - ''' + """ The {\\bf electronic temperature} is read from the next line. {\\bf Default} is $1000$K. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TEMPERATURE_ELECTRON_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TEMPERATURE_ELECTRON. - ''') + """, + ) x_cpmd_input_CPMD_TEMPERATURE_ELECTRON_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TEMPERATURE_ELECTRON. - ''') + """, + ) class x_cpmd_section_input_CPMD_TEMPERATURE(MSection): - ''' + """ The {\\bf initial temperature} in Kelvin of the {\\bf system} is read from the next line. With the additional keyword {\\bf RAMP} the temperature can be linearly ramped to a target value and two more numbers are read, the ramping target temperature in Kelvin @@ -3732,120 +4011,130 @@ class x_cpmd_section_input_CPMD_TEMPERATURE(MSection): you have to multiply it with the value of \\refkeyword{TIMESTEP}). Note that this ramping affects the target temperatures for \\refkeyword{TEMPCONTROL}, \\refkeyword{BERENDSEN} and the global \\refkeyword{NOSE} thermostats. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TEMPERATURE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TEMPERATURE. - ''') + """, + ) x_cpmd_input_CPMD_TEMPERATURE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TEMPERATURE. - ''') + """, + ) class x_cpmd_section_input_CPMD_TIMESTEP_ELECTRONS(MSection): - ''' + """ The time step for electron dynamics in atomic units is read from the next line. This is can be used to tweak the convergence behavior of the wavefunction optimization in Born-Oppenheimer dynamics, where the default time step may be too large. see, e.g. \\refkeyword{PCG} - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TIMESTEP_ELECTRONS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TIMESTEP_ELECTRONS. - ''') + """, + ) x_cpmd_input_CPMD_TIMESTEP_ELECTRONS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TIMESTEP_ELECTRONS. - ''') + """, + ) class x_cpmd_section_input_CPMD_TIMESTEP_IONS(MSection): - ''' + """ The time step in atomic units is read from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TIMESTEP_IONS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TIMESTEP_IONS. - ''') + """, + ) x_cpmd_input_CPMD_TIMESTEP_IONS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TIMESTEP_IONS. - ''') + """, + ) class x_cpmd_section_input_CPMD_TIMESTEP(MSection): - ''' + """ The time step in atomic units is read from the next line. {\\bf Default} is a time step of {\\bf 5 a.u.} ($1\\, a.u. = 0.0241888428$ fs). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TIMESTEP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TIMESTEP. - ''') + """, + ) x_cpmd_input_CPMD_TIMESTEP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TIMESTEP. - ''') + """, + ) class x_cpmd_section_input_CPMD_TRACE(MSection): - ''' + """ Activate the tracing of the procedures. {\\sl ALL} specifies that all the mpi tasks are traced. {\\sl ALL} specifies that only the master is traced. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TRACE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TRACE. - ''') + """, + ) x_cpmd_input_CPMD_TRACE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TRACE. - ''') + """, + ) class x_cpmd_section_input_CPMD_TRAJECTORY(MSection): - ''' + """ Store the atomic positions, velocities and optionally forces at every {\\em NTRAJ} time step on file {\\em TRAJECTORY}. This is the {\\bf default for MD runs}. With the additional keyword XYZ the trajectory is also writthen in xyz-format on the file {\\em @@ -3862,153 +4151,165 @@ class x_cpmd_section_input_CPMD_TRAJECTORY(MSection): suboption RANGE, the smallest and largest index of atoms is read from the next line. If both, SAMPLE and RANGE are given, the RANGE parameters have to come before the SAMPLE parameter. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TRAJECTORY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TRAJECTORY. - ''') + """, + ) x_cpmd_input_CPMD_TRAJECTORY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TRAJECTORY. - ''') + """, + ) class x_cpmd_section_input_CPMD_TROTTER_FACTORIZATION_OFF(MSection): - ''' + """ Do not use Trotter factorization to calculate free energy functional. Remark: Place this keywords only after FREE ENERGY FUNCTIO\\-NAL; before it has no effect. Note: this keyword has {\\em nothing} to do with path integral MD as activated by the keyword PATH INTEGRAL and as specified in the section \\&PIMD ... \\&END. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TROTTER_FACTORIZATION_OFF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TROTTER_FACTORIZATION_OFF. - ''') + """, + ) x_cpmd_input_CPMD_TROTTER_FACTORIZATION_OFF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TROTTER_FACTORIZATION_OFF. - ''') + """, + ) class x_cpmd_section_input_CPMD_TROTTER_FACTOR(MSection): - ''' + """ Solve $e^{-H/k_BT}$ directly using {\\bf Trotter approximation} $\\left( e^{-pH} \\simeq e^{-pK/2}e^{-pV}e^{-pK/2}\\right)$. The Trotter approximation is twice as fast. The Trotter factor is read from the next line (typically 0.001 is very accurate). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_TROTTER_FACTOR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TROTTER_FACTOR. - ''') + """, + ) x_cpmd_input_CPMD_TROTTER_FACTOR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TROTTER_FACTOR. - ''') + """, + ) class x_cpmd_section_input_CPMD_VDW_CORRECTION(MSection): - ''' + """ An empirical van der Waals correction scheme is applied to pairs of atom types specified with this keyword. This activates reading the corresponding parameters from the \\&VDW ... \\& END in which you have to specify all the VDW parameters between the opening and closing section keywords EMPIRICAL CORRECTION and END EMPIRICAL CORRECTION. Note that the two possible vdW options, EMPIRICAL CORRECTION and WANNIER CORRECTION are mutually exclusive. See \\refkeyword{VDW PARAMETERS} for more details. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_VDW_CORRECTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VDW_CORRECTION. - ''') + """, + ) x_cpmd_input_CPMD_VDW_CORRECTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VDW_CORRECTION. - ''') + """, + ) class x_cpmd_section_input_CPMD_VDW_WANNIER(MSection): - ''' + """ A first-principle van der Waals correction scheme \\cite{psil1,psil2} is applied to selected groups of atoms on which maximally localized Wannier functions (WF) and centers (WFC) have been previously computed. The file WANNIER-CENTER generated upon WFC calculation must be present. This activates the reading procedure of the corresponding parameters from the \\&VDW ... \\&END section. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_VDW_WANNIER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VDW_WANNIER. - ''') + """, + ) x_cpmd_input_CPMD_VDW_WANNIER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VDW_WANNIER. - ''') + """, + ) class x_cpmd_section_input_CPMD_VGFACTOR(MSection): - ''' + """ For \\refkeyword{CDFT} runs read the inverse of the gradient optimiser step size ($1/dx$) from the next line. The standard value of \\defaultvalue{10.0} should be fine in most situations. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_VGFACTOR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VGFACTOR. - ''') + """, + ) x_cpmd_input_CPMD_VGFACTOR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VGFACTOR. - ''') + """, + ) class x_cpmd_section_input_CPMD_VIBRATIONAL_ANALYSIS(MSection): - ''' + """ Calculate harmonic frequencies by finite differences of first derivatives {\\bf (FD)} (see also keyword \\refkeyword{FINITE DIFFERENCES}), by {\\bf linear response} to ionic displacements {\\bf (LR)} or from a {\\bf pre-calculated} Hessian {\\bf (IN)}. K-point @@ -4025,173 +4326,187 @@ class x_cpmd_section_input_CPMD_VIBRATIONAL_ANALYSIS(MSection): \\refkeyword{DIPOLE MOMENT}[RS], the Born charge tensor is calculated on the fly. See also the block \\&LINRES ... \\&END and the keywords \\refkeyword{RESTART} PHESS and \\refkeyword{HESSIAN} \\{DISCO,SCHLEGEL,UNIT\\} PARTIAL. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_VIBRATIONAL_ANALYSIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VIBRATIONAL_ANALYSIS. - ''') + """, + ) x_cpmd_input_CPMD_VIBRATIONAL_ANALYSIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VIBRATIONAL_ANALYSIS. - ''') + """, + ) class x_cpmd_section_input_CPMD_VMIRROR(MSection): - ''' + """ For \\refkeyword{CDFT} HDA runs initialise $V$ for the second state as the negative final $V$ value of the first state. Useful in symmetric systems. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_VMIRROR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VMIRROR. - ''') + """, + ) x_cpmd_input_CPMD_VMIRROR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VMIRROR. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_DOS(MSection): - ''' + """ Outputs the projected density of states of the Wannier orbitals (file WANNIER\\_DOS) and the KS hamiltonian in the Wannier states representation (file WANNIER\\_HAM). When running \\refkeyword{MOLECULAR DYNAMICS} CP the files WANNIER\\_DOS and WANNIER\\_HAM solely written at the last step. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_DOS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_DOS. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_DOS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_DOS. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_MOLECULAR(MSection): - ''' + """ Generates effective molecular orbitals from the Wannier representation. It first attributes Wannier orbitals to molecules and then diagonalizes by molecular blocks the KS Hamiltonian. Does not work with \\refkeyword{MOLECULAR DYNAMICS} CP. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_MOLECULAR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_MOLECULAR. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_MOLECULAR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_MOLECULAR. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_NPROC(MSection): - ''' + """ Set the number of mpi tasks to be used for localization. Default is to use all the tasks avalable. The number of tasks is read from the next line and shall be a divisor of the number of tasks in a parallel run. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_NPROC_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_NPROC. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_NPROC_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_NPROC. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_OPTIMIZATION(MSection): - ''' + """ Use steepest descent or Jacobi rotation method for the orbital localization. Default are Jacobi rotations. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_OPTIMIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_OPTIMIZATION. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_OPTIMIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_OPTIMIZATION. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_PARAMETER(MSection): - ''' + """ {\\sl W\\_STEP, W\\_EPS, W\\_RAN, W\\_MAXS} are read from the next line. {\\sl W\\_STEP} is the step size of the steepest descent algorithm used in the optimization procedure (default value 0.1). {\\sl W\\_EPS} the convergence criteria for the gradient (default value $1.e-7$). {\\sl W\\_RAN} the amplitude for the initial random rotation of the states (default value 0.0). {\\sl W\\_MAXS} is the maximum steps allowed in the optimization (default value 200). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_PARAMETER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_PARAMETER. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_PARAMETER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_PARAMETER. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_REFERENCE(MSection): - ''' + """ The vector {\\sl W\\_REF} is read from the next line, which consists of 3 coordinates $x, y, z$. These are assumed as the origin for the WFCs positions and related ionic coordinates (i.e. ${\\bf R}_I \\to {\\bf R}_I-(x, y, z)$). The default value is the @@ -4200,98 +4515,106 @@ class x_cpmd_section_input_CPMD_WANNIER_REFERENCE(MSection): Otherwise it is set to (0,0,0), which is usually not the center of the box. In order to get the best results displaying the IONS+CENTERS.xyz file this parameter should be set explicitly. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_REFERENCE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_REFERENCE. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_REFERENCE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_REFERENCE. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_SERIAL(MSection): - ''' + """ Requests that the calculation of Wannier functions is performed using the serial code, even in parallel runs. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_SERIAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_SERIAL. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_SERIAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_SERIAL. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_TYPE(MSection): - ''' + """ Indicates the type of Wannier functions. Vanderbilt type is the default. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_TYPE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_TYPE. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_TYPE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_TYPE. - ''') + """, + ) class x_cpmd_section_input_CPMD_WANNIER_WFNOUT(MSection): - ''' + """ Controls the printing of Wannier functions. Either all or only some of the functions can be printed. This will be done at the end of each calculation of Wannier functions. For {\\bf PARTIAL} output you have to give the indices of the first and the last wannier function to print; the {\\em LIST} directive follows the syntax of \\refkeyword{RHOOUT} {\\em BANDS}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WANNIER_WFNOUT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_WFNOUT. - ''') + """, + ) x_cpmd_input_CPMD_WANNIER_WFNOUT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_WFNOUT. - ''') + """, + ) class x_cpmd_section_input_CPMD_WOUT(MSection): - ''' + """ Controls the printing of the CDFT weight(s). If the keyword FULL is set the full weight is written out in the form of a density to WEIGHT-(suff), where (suff) is defined by the kind of the CDFT job. (suff)=WFOPT for single point calculations, while @@ -4302,761 +4625,838 @@ class x_cpmd_section_input_CPMD_WOUT(MSection): coordinate of the x-y weight plane to write out divided by the total box height. If WSLICE$<0$ the weight at the z coordinate of the first acceptor atom will be used. WSTEP \\defaultvalue{1} is the grid point step size for the output. - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_WOUT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WOUT. - ''') + """, + ) x_cpmd_input_CPMD_WOUT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WOUT. - ''') + """, + ) class x_cpmd_section_input_CPMD(MSection): - ''' + """ General control parameters for calculation (\\textbf{required}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_CPMD_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section CPMD even without a keyword. - ''') + """, + ) x_cpmd_section_input_CPMD_ALEXANDER_MIXING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ALEXANDER_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ALEXANDER_MIXING"), + repeats=True, + ) x_cpmd_section_input_CPMD_ALLTOALL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ALLTOALL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ALLTOALL"), repeats=True + ) x_cpmd_section_input_CPMD_ANDERSON_MIXING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ANDERSON_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ANDERSON_MIXING"), + repeats=True, + ) x_cpmd_section_input_CPMD_ANNEALING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ANNEALING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ANNEALING"), repeats=True + ) x_cpmd_section_input_CPMD_BENCHMARK = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BENCHMARK'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BENCHMARK"), repeats=True + ) x_cpmd_section_input_CPMD_BERENDSEN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BERENDSEN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BERENDSEN"), repeats=True + ) x_cpmd_section_input_CPMD_BFGS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BFGS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BFGS"), repeats=True + ) x_cpmd_section_input_CPMD_BLOCKSIZE_STATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BLOCKSIZE_STATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BLOCKSIZE_STATES"), + repeats=True, + ) x_cpmd_section_input_CPMD_BOGOLIUBOV_CORRECTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BOGOLIUBOV_CORRECTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BOGOLIUBOV_CORRECTION"), + repeats=True, + ) x_cpmd_section_input_CPMD_BOX_WALLS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BOX_WALLS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BOX_WALLS"), repeats=True + ) x_cpmd_section_input_CPMD_BROYDEN_MIXING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_BROYDEN_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_BROYDEN_MIXING"), + repeats=True, + ) x_cpmd_section_input_CPMD_CAYLEY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CAYLEY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CAYLEY"), repeats=True + ) x_cpmd_section_input_CPMD_CDFT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CDFT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CDFT"), repeats=True + ) x_cpmd_section_input_CPMD_CENTER_MOLECULE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CENTER_MOLECULE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CENTER_MOLECULE"), + repeats=True, + ) x_cpmd_section_input_CPMD_CHECK_MEMORY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CHECK_MEMORY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CHECK_MEMORY"), repeats=True + ) x_cpmd_section_input_CPMD_CLASSTRESS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CLASSTRESS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CLASSTRESS"), repeats=True + ) x_cpmd_section_input_CPMD_CMASS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CMASS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CMASS"), repeats=True + ) x_cpmd_section_input_CPMD_COMBINE_SYSTEMS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_COMBINE_SYSTEMS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_COMBINE_SYSTEMS"), + repeats=True, + ) x_cpmd_section_input_CPMD_COMPRESS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_COMPRESS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_COMPRESS"), repeats=True + ) x_cpmd_section_input_CPMD_CONJUGATE_GRADIENTS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CONJUGATE_GRADIENTS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CONJUGATE_GRADIENTS"), + repeats=True, + ) x_cpmd_section_input_CPMD_CONVERGENCE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CONVERGENCE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CONVERGENCE"), repeats=True + ) x_cpmd_section_input_CPMD_CZONES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_CZONES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_CZONES"), repeats=True + ) x_cpmd_section_input_CPMD_DAMPING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DAMPING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DAMPING"), repeats=True + ) x_cpmd_section_input_CPMD_DAVIDSON_DIAGONALIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DAVIDSON_DIAGONALIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DAVIDSON_DIAGONALIZATION"), + repeats=True, + ) x_cpmd_section_input_CPMD_DAVIDSON_PARAMETER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DAVIDSON_PARAMETER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DAVIDSON_PARAMETER"), + repeats=True, + ) x_cpmd_section_input_CPMD_DEBUG_CODE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DEBUG_CODE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DEBUG_CODE"), repeats=True + ) x_cpmd_section_input_CPMD_DEBUG_FILEOPEN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DEBUG_FILEOPEN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DEBUG_FILEOPEN"), + repeats=True, + ) x_cpmd_section_input_CPMD_DEBUG_FORCES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DEBUG_FORCES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DEBUG_FORCES"), repeats=True + ) x_cpmd_section_input_CPMD_DEBUG_MEMORY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DEBUG_MEMORY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DEBUG_MEMORY"), repeats=True + ) x_cpmd_section_input_CPMD_DEBUG_NOACC = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DEBUG_NOACC'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DEBUG_NOACC"), repeats=True + ) x_cpmd_section_input_CPMD_DIIS_MIXING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DIIS_MIXING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DIIS_MIXING"), repeats=True + ) x_cpmd_section_input_CPMD_DIPOLE_DYNAMICS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DIPOLE_DYNAMICS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DIPOLE_DYNAMICS"), + repeats=True, + ) x_cpmd_section_input_CPMD_DISTRIBUTE_FNL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DISTRIBUTE_FNL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DISTRIBUTE_FNL"), + repeats=True, + ) x_cpmd_section_input_CPMD_DISTRIBUTED_LINALG = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_DISTRIBUTED_LINALG'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_DISTRIBUTED_LINALG"), + repeats=True, + ) x_cpmd_section_input_CPMD_ELECTRONIC_SPECTRA = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ELECTRONIC_SPECTRA'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ELECTRONIC_SPECTRA"), + repeats=True, + ) x_cpmd_section_input_CPMD_ELECTROSTATIC_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ELECTROSTATIC_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ELECTROSTATIC_POTENTIAL"), + repeats=True, + ) x_cpmd_section_input_CPMD_ELF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ELF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ELF"), repeats=True + ) x_cpmd_section_input_CPMD_EMASS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_EMASS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_EMASS"), repeats=True + ) x_cpmd_section_input_CPMD_ENERGYBANDS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ENERGYBANDS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ENERGYBANDS"), repeats=True + ) x_cpmd_section_input_CPMD_EXTERNAL_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_EXTERNAL_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_EXTERNAL_POTENTIAL"), + repeats=True, + ) x_cpmd_section_input_CPMD_EXTRAPOLATE_CONSTRAINT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_EXTRAPOLATE_CONSTRAINT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_EXTRAPOLATE_CONSTRAINT"), + repeats=True, + ) x_cpmd_section_input_CPMD_EXTRAPOLATE_WFN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_EXTRAPOLATE_WFN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_EXTRAPOLATE_WFN"), + repeats=True, + ) x_cpmd_section_input_CPMD_FFTW_WISDOM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FFTW_WISDOM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FFTW_WISDOM"), repeats=True + ) x_cpmd_section_input_CPMD_FILE_FUSION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FILE_FUSION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FILE_FUSION"), repeats=True + ) x_cpmd_section_input_CPMD_FILEPATH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FILEPATH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FILEPATH"), repeats=True + ) x_cpmd_section_input_CPMD_FINITE_DIFFERENCES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FINITE_DIFFERENCES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FINITE_DIFFERENCES"), + repeats=True, + ) x_cpmd_section_input_CPMD_FIXRHO_UPWFN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FIXRHO_UPWFN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FIXRHO_UPWFN"), repeats=True + ) x_cpmd_section_input_CPMD_FORCEMATCH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FORCEMATCH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FORCEMATCH"), repeats=True + ) x_cpmd_section_input_CPMD_FREE_ENERGY_FUNCTIONAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_FREE_ENERGY_FUNCTIONAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_FREE_ENERGY_FUNCTIONAL"), + repeats=True, + ) x_cpmd_section_input_CPMD_GDIIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_GDIIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_GDIIS"), repeats=True + ) x_cpmd_section_input_CPMD_GSHELL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_GSHELL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_GSHELL"), repeats=True + ) x_cpmd_section_input_CPMD_HAMILTONIAN_CUTOFF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_HAMILTONIAN_CUTOFF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_HAMILTONIAN_CUTOFF"), + repeats=True, + ) x_cpmd_section_input_CPMD_HARMONIC_REFERENCE_SYSTEM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_HARMONIC_REFERENCE_SYSTEM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_HARMONIC_REFERENCE_SYSTEM"), + repeats=True, + ) x_cpmd_section_input_CPMD_HESSCORE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_HESSCORE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_HESSCORE"), repeats=True + ) x_cpmd_section_input_CPMD_HESSIAN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_HESSIAN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_HESSIAN"), repeats=True + ) x_cpmd_section_input_CPMD_INITIALIZE_WAVEFUNCTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_INITIALIZE_WAVEFUNCTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_INITIALIZE_WAVEFUNCTION"), + repeats=True, + ) x_cpmd_section_input_CPMD_INTERFACE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_INTERFACE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_INTERFACE"), repeats=True + ) x_cpmd_section_input_CPMD_INTFILE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_INTFILE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_INTFILE"), repeats=True + ) x_cpmd_section_input_CPMD_ISOLATED_MOLECULE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ISOLATED_MOLECULE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ISOLATED_MOLECULE"), + repeats=True, + ) x_cpmd_section_input_CPMD_KSHAM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_KSHAM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_KSHAM"), repeats=True + ) x_cpmd_section_input_CPMD_LANCZOS_DIAGONALIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LANCZOS_DIAGONALIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LANCZOS_DIAGONALIZATION"), + repeats=True, + ) x_cpmd_section_input_CPMD_LANCZOS_PARAMETER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LANCZOS_PARAMETER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LANCZOS_PARAMETER"), + repeats=True, + ) x_cpmd_section_input_CPMD_LANGEVIN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LANGEVIN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LANGEVIN"), repeats=True + ) x_cpmd_section_input_CPMD_LBFGS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LBFGS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LBFGS"), repeats=True + ) x_cpmd_section_input_CPMD_LINEAR_RESPONSE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LINEAR_RESPONSE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LINEAR_RESPONSE"), + repeats=True, + ) x_cpmd_section_input_CPMD_LOCAL_SPIN_DENSITY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LOCAL_SPIN_DENSITY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LOCAL_SPIN_DENSITY"), + repeats=True, + ) x_cpmd_section_input_CPMD_LSD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_LSD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_LSD"), repeats=True + ) x_cpmd_section_input_CPMD_MAXITER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MAXITER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MAXITER"), repeats=True + ) x_cpmd_section_input_CPMD_MAXRUNTIME = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MAXRUNTIME'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MAXRUNTIME"), repeats=True + ) x_cpmd_section_input_CPMD_MAXSTEP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MAXSTEP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MAXSTEP"), repeats=True + ) x_cpmd_section_input_CPMD_MEMORY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MEMORY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MEMORY"), repeats=True + ) x_cpmd_section_input_CPMD_MIRROR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MIRROR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MIRROR"), repeats=True + ) x_cpmd_section_input_CPMD_MIXDIIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MIXDIIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MIXDIIS"), repeats=True + ) x_cpmd_section_input_CPMD_MIXSD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MIXSD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MIXSD"), repeats=True + ) x_cpmd_section_input_CPMD_MODIFIED_GOEDECKER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MODIFIED_GOEDECKER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MODIFIED_GOEDECKER"), + repeats=True, + ) x_cpmd_section_input_CPMD_MOLECULAR_DYNAMICS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MOLECULAR_DYNAMICS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MOLECULAR_DYNAMICS"), + repeats=True, + ) x_cpmd_section_input_CPMD_MOVERHO = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MOVERHO'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MOVERHO"), repeats=True + ) x_cpmd_section_input_CPMD_MOVIE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_MOVIE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_MOVIE"), repeats=True + ) x_cpmd_section_input_CPMD_NOGEOCHECK = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_NOGEOCHECK'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_NOGEOCHECK"), repeats=True + ) x_cpmd_section_input_CPMD_NONORTHOGONAL_ORBITALS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_NONORTHOGONAL_ORBITALS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_NONORTHOGONAL_ORBITALS"), + repeats=True, + ) x_cpmd_section_input_CPMD_NOSE_PARAMETERS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_NOSE_PARAMETERS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_NOSE_PARAMETERS"), + repeats=True, + ) x_cpmd_section_input_CPMD_NOSE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_NOSE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_NOSE"), repeats=True + ) x_cpmd_section_input_CPMD_ODIIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ODIIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ODIIS"), repeats=True + ) x_cpmd_section_input_CPMD_OPTIMIZE_GEOMETRY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_OPTIMIZE_GEOMETRY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_OPTIMIZE_GEOMETRY"), + repeats=True, + ) x_cpmd_section_input_CPMD_OPTIMIZE_WAVEFUNCTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_OPTIMIZE_WAVEFUNCTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_OPTIMIZE_WAVEFUNCTION"), + repeats=True, + ) x_cpmd_section_input_CPMD_ORBITAL_HARDNESS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ORBITAL_HARDNESS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ORBITAL_HARDNESS"), + repeats=True, + ) x_cpmd_section_input_CPMD_ORTHOGONALIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ORTHOGONALIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ORTHOGONALIZATION"), + repeats=True, + ) x_cpmd_section_input_CPMD_PATH_INTEGRAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PATH_INTEGRAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PATH_INTEGRAL"), + repeats=True, + ) x_cpmd_section_input_CPMD_PATH_MINIMIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PATH_MINIMIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PATH_MINIMIZATION"), + repeats=True, + ) x_cpmd_section_input_CPMD_PATH_SAMPLING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PATH_SAMPLING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PATH_SAMPLING"), + repeats=True, + ) x_cpmd_section_input_CPMD_PCG = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PCG'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PCG"), repeats=True + ) x_cpmd_section_input_CPMD_PRFO_NSVIB = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PRFO_NSVIB'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PRFO_NSVIB"), repeats=True + ) x_cpmd_section_input_CPMD_PRFO = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PRFO'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PRFO"), repeats=True + ) x_cpmd_section_input_CPMD_PRINT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PRINT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PRINT"), repeats=True + ) x_cpmd_section_input_CPMD_PRNGSEED = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PRNGSEED'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PRNGSEED"), repeats=True + ) x_cpmd_section_input_CPMD_PROJECT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PROJECT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PROJECT"), repeats=True + ) x_cpmd_section_input_CPMD_PROPAGATION_SPECTRA = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PROPAGATION_SPECTRA'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PROPAGATION_SPECTRA"), + repeats=True, + ) x_cpmd_section_input_CPMD_PROPERTIES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_PROPERTIES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_PROPERTIES"), repeats=True + ) x_cpmd_section_input_CPMD_QMMM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_QMMM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_QMMM"), repeats=True + ) x_cpmd_section_input_CPMD_QUENCH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_QUENCH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_QUENCH"), repeats=True + ) x_cpmd_section_input_CPMD_RANDOMIZE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_RANDOMIZE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_RANDOMIZE"), repeats=True + ) x_cpmd_section_input_CPMD_RATTLE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_RATTLE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_RATTLE"), repeats=True + ) x_cpmd_section_input_CPMD_REAL_SPACE_WFN_KEEP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_REAL_SPACE_WFN_KEEP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_REAL_SPACE_WFN_KEEP"), + repeats=True, + ) x_cpmd_section_input_CPMD_RESCALE_OLD_VELOCITIES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_RESCALE_OLD_VELOCITIES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_RESCALE_OLD_VELOCITIES"), + repeats=True, + ) x_cpmd_section_input_CPMD_RESTART = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_RESTART'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_RESTART"), repeats=True + ) x_cpmd_section_input_CPMD_RESTFILE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_RESTFILE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_RESTFILE"), repeats=True + ) x_cpmd_section_input_CPMD_REVERSE_VELOCITIES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_REVERSE_VELOCITIES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_REVERSE_VELOCITIES"), + repeats=True, + ) x_cpmd_section_input_CPMD_RHOOUT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_RHOOUT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_RHOOUT"), repeats=True + ) x_cpmd_section_input_CPMD_ROKS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_ROKS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_ROKS"), repeats=True + ) x_cpmd_section_input_CPMD_SCALED_MASSES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_SCALED_MASSES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_SCALED_MASSES"), + repeats=True, + ) x_cpmd_section_input_CPMD_SHIFT_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_SHIFT_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_SHIFT_POTENTIAL"), + repeats=True, + ) x_cpmd_section_input_CPMD_SPLINE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_SPLINE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_SPLINE"), repeats=True + ) x_cpmd_section_input_CPMD_SSIC = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_SSIC'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_SSIC"), repeats=True + ) x_cpmd_section_input_CPMD_STEEPEST_DESCENT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_STEEPEST_DESCENT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_STEEPEST_DESCENT"), + repeats=True, + ) x_cpmd_section_input_CPMD_STRUCTURE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_STRUCTURE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_STRUCTURE"), repeats=True + ) x_cpmd_section_input_CPMD_SUBTRACT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_SUBTRACT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_SUBTRACT"), repeats=True + ) x_cpmd_section_input_CPMD_SURFACE_HOPPING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_SURFACE_HOPPING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_SURFACE_HOPPING"), + repeats=True, + ) x_cpmd_section_input_CPMD_TDDFT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TDDFT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TDDFT"), repeats=True + ) x_cpmd_section_input_CPMD_TEMPCONTROL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TEMPCONTROL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TEMPCONTROL"), repeats=True + ) x_cpmd_section_input_CPMD_TEMPERATURE_ELECTRON = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TEMPERATURE_ELECTRON'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TEMPERATURE_ELECTRON"), + repeats=True, + ) x_cpmd_section_input_CPMD_TEMPERATURE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TEMPERATURE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TEMPERATURE"), repeats=True + ) x_cpmd_section_input_CPMD_TIMESTEP_ELECTRONS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TIMESTEP_ELECTRONS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TIMESTEP_ELECTRONS"), + repeats=True, + ) x_cpmd_section_input_CPMD_TIMESTEP_IONS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TIMESTEP_IONS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TIMESTEP_IONS"), + repeats=True, + ) x_cpmd_section_input_CPMD_TIMESTEP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TIMESTEP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TIMESTEP"), repeats=True + ) x_cpmd_section_input_CPMD_TRACE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TRACE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TRACE"), repeats=True + ) x_cpmd_section_input_CPMD_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TRAJECTORY"), repeats=True + ) x_cpmd_section_input_CPMD_TROTTER_FACTORIZATION_OFF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TROTTER_FACTORIZATION_OFF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TROTTER_FACTORIZATION_OFF"), + repeats=True, + ) x_cpmd_section_input_CPMD_TROTTER_FACTOR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_TROTTER_FACTOR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_TROTTER_FACTOR"), + repeats=True, + ) x_cpmd_section_input_CPMD_VDW_CORRECTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_VDW_CORRECTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_VDW_CORRECTION"), + repeats=True, + ) x_cpmd_section_input_CPMD_VDW_WANNIER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_VDW_WANNIER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_VDW_WANNIER"), repeats=True + ) x_cpmd_section_input_CPMD_VGFACTOR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_VGFACTOR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_VGFACTOR"), repeats=True + ) x_cpmd_section_input_CPMD_VIBRATIONAL_ANALYSIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_VIBRATIONAL_ANALYSIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_VIBRATIONAL_ANALYSIS"), + repeats=True, + ) x_cpmd_section_input_CPMD_VMIRROR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_VMIRROR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_VMIRROR"), repeats=True + ) x_cpmd_section_input_CPMD_WANNIER_DOS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_DOS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_DOS"), repeats=True + ) x_cpmd_section_input_CPMD_WANNIER_MOLECULAR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_MOLECULAR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_MOLECULAR"), + repeats=True, + ) x_cpmd_section_input_CPMD_WANNIER_NPROC = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_NPROC'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_NPROC"), + repeats=True, + ) x_cpmd_section_input_CPMD_WANNIER_OPTIMIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_OPTIMIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_OPTIMIZATION"), + repeats=True, + ) x_cpmd_section_input_CPMD_WANNIER_PARAMETER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_PARAMETER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_PARAMETER"), + repeats=True, + ) x_cpmd_section_input_CPMD_WANNIER_REFERENCE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_REFERENCE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_REFERENCE"), + repeats=True, + ) x_cpmd_section_input_CPMD_WANNIER_SERIAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_SERIAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_SERIAL"), + repeats=True, + ) x_cpmd_section_input_CPMD_WANNIER_TYPE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_TYPE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_TYPE"), repeats=True + ) x_cpmd_section_input_CPMD_WANNIER_WFNOUT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WANNIER_WFNOUT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WANNIER_WFNOUT"), + repeats=True, + ) x_cpmd_section_input_CPMD_WOUT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD_WOUT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD_WOUT"), repeats=True + ) class x_cpmd_section_input_DFT_ACM0(MSection): - ''' + """ Add exact exchange to the specified \\refkeyword{FUNCTIONAL} according to the adiabatic connection method 0.~\\cite{acm0,adamo2000} This only works for isolated systems and should only be used if an excessive amount of CPU time is available. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_ACM0_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ACM0. - ''') + """, + ) x_cpmd_input_DFT_ACM0_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ACM0. - ''') + """, + ) class x_cpmd_section_input_DFT_ACM1(MSection): - ''' + """ Add exact exchange to the specified \\refkeyword{FUNCTIONAL} according to the adiabatic connection method 1.~\\cite{adamo2000,acm1} The parameter is read from the next line. This only works for isolated systems and should only be used if an excessive amount of CPU time is available. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_ACM1_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ACM1. - ''') + """, + ) x_cpmd_input_DFT_ACM1_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ACM1. - ''') + """, + ) class x_cpmd_section_input_DFT_ACM3(MSection): - ''' + """ Add exact exchange to the specified \\refkeyword{FUNCTIONAL} according to the adiabatic connection method 3.~\\cite{adamo2000,acm3} The three needed parameters are read from the next line. This only works for isolated systems and should only be used if an excessive amount of CPU time is available. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_ACM3_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ACM3. - ''') + """, + ) x_cpmd_input_DFT_ACM3_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ACM3. - ''') + """, + ) class x_cpmd_section_input_DFT_BECKE_BETA(MSection): - ''' + """ Change the $\\beta$ parameter in Becke's exchange functional~\\cite{Becke88} to the value given on the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_BECKE_BETA_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BECKE_BETA. - ''') + """, + ) x_cpmd_input_DFT_BECKE_BETA_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BECKE_BETA. - ''') + """, + ) class x_cpmd_section_input_DFT_EXCHANGE_CORRELATION_TABLE(MSection): - ''' + """ Specifies the range and the granularity of the lookup table for the local exchange- correlation energy and potential. The number of table entries and the maximum density have to be given on the next line. Note that this keyword is only relevant when using \\refkeyword{OLDCODE} and even then it is set to \\textbf{NO} be default. Previous default values were 30000 and 2.0. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_EXCHANGE_CORRELATION_TABLE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXCHANGE_CORRELATION_TABLE. - ''') + """, + ) x_cpmd_input_DFT_EXCHANGE_CORRELATION_TABLE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXCHANGE_CORRELATION_TABLE. - ''') + """, + ) class x_cpmd_section_input_DFT_FUNCTIONAL(MSection): - ''' + """ Single keyword for setting up XC-functionals. Available functionals are NONE, SONLY, LDA (in PADE form), \\goodbreak BONLY, BP, BLYP, XLYP, GGA (=PW91), PBE, PBES, REVPBE, \\goodbreak HCTH, OPTX, OLYP, TPSS, PBE0, B1LYP, B3LYP, X3LYP,PBES, \\goodbreak HSE06 - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_FUNCTIONAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FUNCTIONAL. - ''') + """, + ) x_cpmd_input_DFT_FUNCTIONAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FUNCTIONAL. - ''') + """, + ) class x_cpmd_section_input_DFT_GRADIENT_CORRECTION(MSection): - ''' + """ Individual components of gradient corrected functionals can be selected. Rarely needed anymore, use the \\refkeyword{FUNCTIONAL} keyword instead. Functionals implemented are for the exchange energy: {\\bf BECKE88}~\\cite{Becke88}, {\\bf GGAX}~\\cite{Perdew92} {\\bf @@ -5069,567 +5469,610 @@ class x_cpmd_section_input_DFT_GRADIENT_CORRECTION(MSection): {\\bf EXCHANGE} and {\\bf CORRELATION} can be used for the default functionals (currently BECKE88 and PERDEW86). If no functionals are specified the default functionals for exchange and correlation are used. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_GRADIENT_CORRECTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GRADIENT_CORRECTION. - ''') + """, + ) x_cpmd_input_DFT_GRADIENT_CORRECTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GRADIENT_CORRECTION. - ''') + """, + ) class x_cpmd_section_input_DFT_HARTREE(MSection): - ''' + """ Do a Hartree calculation. Only of use for testing purposes. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_HARTREE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HARTREE. - ''') + """, + ) x_cpmd_input_DFT_HARTREE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HARTREE. - ''') + """, + ) class x_cpmd_section_input_DFT_HFX_SCREENING(MSection): - ''' + """ Read value from the next line. Perform the calculation of exact exchange using Wannier functions. Orbital pairs are screened according to the distance of the Wannier centers {\\sl WFC}, the value of the integrals {\\sl EPS\\_INT}, or only the diagonal terms are included ({\\sl DIAG}). {\\sl RECOMPUTE\\_TWO\\_INT\\_LIST\\_EVERY} allows to set how often the integral list is recomputed. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_HFX_SCREENING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HFX_SCREENING. - ''') + """, + ) x_cpmd_input_DFT_HFX_SCREENING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HFX_SCREENING. - ''') + """, + ) class x_cpmd_section_input_DFT_LDA_CORRELATION(MSection): - ''' + """ The LDA correlation functional is specified. Possible functionals are {\\bf NO} (no correlation functional), {\\bf PZ}~\\cite{Perdew81}, \\penalty 1000 {\\bf VWN}~\\cite{Vosko80}, {\\bf LYP}~\\cite{Lee88} and {\\bf PW}~\\cite{Perdew91}. Default is the {\\bf PZ}, the Perdew and Zunger fit to the data of Ceperley and Alder~\\cite{Ceperley80}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_LDA_CORRELATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LDA_CORRELATION. - ''') + """, + ) x_cpmd_input_DFT_LDA_CORRELATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LDA_CORRELATION. - ''') + """, + ) class x_cpmd_section_input_DFT_LR_KERNEL(MSection): - ''' + """ Use another functional for the linear response kernel. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_LR_KERNEL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LR_KERNEL. - ''') + """, + ) x_cpmd_input_DFT_LR_KERNEL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LR_KERNEL. - ''') + """, + ) class x_cpmd_section_input_DFT_NEWCODE(MSection): - ''' + """ Switch to select one out of two versions of code to calculate exchange-correlation functionals. NEWCODE is the default, but not all functionals are available with NEWCODE, if you select one of these, \\refkeyword{OLDCODE} is used automatically. NEWCODE is highly recommended for all new projects and especially for vector computers, also some of the newer functionality is untested or non-functional with OLDCODE. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_NEWCODE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NEWCODE. - ''') + """, + ) x_cpmd_input_DFT_NEWCODE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NEWCODE. - ''') + """, + ) class x_cpmd_section_input_DFT_OLDCODE(MSection): - ''' + """ see \\refkeyword{NEWCODE} - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_OLDCODE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OLDCODE. - ''') + """, + ) x_cpmd_input_DFT_OLDCODE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OLDCODE. - ''') + """, + ) class x_cpmd_section_input_DFT_REFUNCT(MSection): - ''' + """ Use a special reference functional in a calculation. This option is not active. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_REFUNCT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REFUNCT. - ''') + """, + ) x_cpmd_input_DFT_REFUNCT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REFUNCT. - ''') + """, + ) class x_cpmd_section_input_DFT_SLATER(MSection): - ''' + """ The $\\alpha$ value for the Slater exchange functional~\\cite{Slater51} is read from the next line. With NO the exchange functional is switched off. Default is a value of 2/3. This option together with no correlation functional, allows for $X\\alpha$ theory. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_SLATER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SLATER. - ''') + """, + ) x_cpmd_input_DFT_SLATER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SLATER. - ''') + """, + ) class x_cpmd_section_input_DFT_SMOOTH(MSection): - ''' + """ A smoothening function is applied to the density~\\cite{Laasonen93}. The function is of the Fermi type. \\[ f(G) = \\frac{1}{% \\displaystyle{1 + e^{\\frac{\\scriptstyle{G - G_{\\scriptstyle cut}}} {\\scriptstyle\\Delta}}}} \\] G is the wavevector, $G_{cut} = \\alpha\\,G_{max}$ and $\\Delta = \\beta\\,G_{max}$. Values for $\\alpha$ and $\\beta$ have to be given on the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_SMOOTH_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SMOOTH. - ''') + """, + ) x_cpmd_input_DFT_SMOOTH_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SMOOTH. - ''') + """, + ) class x_cpmd_section_input_DFT(MSection): - ''' + """ Exchange and correlation functional and related parameters. - ''' + """ m_def = Section(validate=False) x_cpmd_input_DFT_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section DFT even without a keyword. - ''') + """, + ) x_cpmd_section_input_DFT_ACM0 = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_ACM0'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_ACM0"), repeats=True + ) x_cpmd_section_input_DFT_ACM1 = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_ACM1'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_ACM1"), repeats=True + ) x_cpmd_section_input_DFT_ACM3 = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_ACM3'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_ACM3"), repeats=True + ) x_cpmd_section_input_DFT_BECKE_BETA = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_BECKE_BETA'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_BECKE_BETA"), repeats=True + ) x_cpmd_section_input_DFT_EXCHANGE_CORRELATION_TABLE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_EXCHANGE_CORRELATION_TABLE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_EXCHANGE_CORRELATION_TABLE"), + repeats=True, + ) x_cpmd_section_input_DFT_FUNCTIONAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_FUNCTIONAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_FUNCTIONAL"), repeats=True + ) x_cpmd_section_input_DFT_GRADIENT_CORRECTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_GRADIENT_CORRECTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_GRADIENT_CORRECTION"), + repeats=True, + ) x_cpmd_section_input_DFT_HARTREE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_HARTREE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_HARTREE"), repeats=True + ) x_cpmd_section_input_DFT_HFX_SCREENING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_HFX_SCREENING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_HFX_SCREENING"), repeats=True + ) x_cpmd_section_input_DFT_LDA_CORRELATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_LDA_CORRELATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_LDA_CORRELATION"), + repeats=True, + ) x_cpmd_section_input_DFT_LR_KERNEL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_LR_KERNEL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_LR_KERNEL"), repeats=True + ) x_cpmd_section_input_DFT_NEWCODE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_NEWCODE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_NEWCODE"), repeats=True + ) x_cpmd_section_input_DFT_OLDCODE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_OLDCODE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_OLDCODE"), repeats=True + ) x_cpmd_section_input_DFT_REFUNCT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_REFUNCT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_REFUNCT"), repeats=True + ) x_cpmd_section_input_DFT_SLATER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_SLATER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_SLATER"), repeats=True + ) x_cpmd_section_input_DFT_SMOOTH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT_SMOOTH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT_SMOOTH"), repeats=True + ) class x_cpmd_section_input_EXTE(MSection): - ''' + """ External field definition for EGO QM/MM interface - ''' + """ m_def = Section(validate=False) x_cpmd_input_EXTE_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section EXTE even without a keyword. - ''') + """, + ) class x_cpmd_section_input_HARDNESS_DIAGONAL(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_HARDNESS_DIAGONAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DIAGONAL. - ''') + """, + ) x_cpmd_input_HARDNESS_DIAGONAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DIAGONAL. - ''') + """, + ) class x_cpmd_section_input_HARDNESS_ORBITALS(MSection): - ''' + """ Specify the number of orbitals to be used in a hardness calculation on the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_HARDNESS_ORBITALS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ORBITALS. - ''') + """, + ) x_cpmd_input_HARDNESS_ORBITALS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ORBITALS. - ''') + """, + ) class x_cpmd_section_input_HARDNESS_REFATOM(MSection): - ''' + """ Specify the reference atom to be used in a hardness calculation on the next line. This option is to be used together with the \\refkeyword{ORBITALS} and \\refkeyword{LOCALIZE}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_HARDNESS_REFATOM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REFATOM. - ''') + """, + ) x_cpmd_input_HARDNESS_REFATOM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REFATOM. - ''') + """, + ) class x_cpmd_section_input_HARDNESS(MSection): - ''' + """ Input for HARDNESS calculations - ''' + """ m_def = Section(validate=False) x_cpmd_input_HARDNESS_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section HARDNESS even without a keyword. - ''') + """, + ) x_cpmd_section_input_HARDNESS_DIAGONAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_HARDNESS_DIAGONAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_HARDNESS_DIAGONAL"), repeats=True + ) x_cpmd_section_input_HARDNESS_ORBITALS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_HARDNESS_ORBITALS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_HARDNESS_ORBITALS"), repeats=True + ) x_cpmd_section_input_HARDNESS_REFATOM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_HARDNESS_REFATOM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_HARDNESS_REFATOM"), repeats=True + ) class x_cpmd_section_input_INFO(MSection): - ''' + """ A place to put comments about the job. - ''' + """ m_def = Section(validate=False) x_cpmd_input_INFO_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section INFO even without a keyword. - ''') + """, + ) class x_cpmd_section_input_LINRES_DIFF_FORMULA(MSection): - ''' + """ Number of points used in finite difference formula for second derivatives of exchange --correlation functionals. Default is two point central differences. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_DIFF_FORMULA_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DIFF_FORMULA. - ''') + """, + ) x_cpmd_input_LINRES_DIFF_FORMULA_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DIFF_FORMULA. - ''') + """, + ) class x_cpmd_section_input_LINRES_GAUGE(MSection): - ''' + """ Gauge of the linear-response wavefunctions. Default is the parallel-transport gauge (PARA) for closed-shell calculations and a sensible combination of the parallel- transport gauge and the full-rotation gauge (GEN) for all other cases. The full- rotation gauge can be enforced for all states by selecting ALL. See \\cite{lsets}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_GAUGE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GAUGE. - ''') + """, + ) x_cpmd_input_LINRES_GAUGE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GAUGE. - ''') + """, + ) class x_cpmd_section_input_LINRES_HTHRS(MSection): - ''' + """ Threshold for Hessian in preconditioner for linear response optimizations. Default is 0.5. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_HTHRS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HTHRS. - ''') + """, + ) x_cpmd_input_LINRES_HTHRS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HTHRS. - ''') + """, + ) class x_cpmd_section_input_LINRES_OPTIMIZER(MSection): - ''' + """ Optimizer to be used for linear response equations. Default is ``AUTO'' which will first use PCG, then switch to DIIS and finally switch to DIIS with full storage and state dependent preconditioner. \\refkeyword{THAUTO} sets the two tolerances for when to do the switch. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_OPTIMIZER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OPTIMIZER. - ''') + """, + ) x_cpmd_input_LINRES_OPTIMIZER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OPTIMIZER. - ''') + """, + ) class x_cpmd_section_input_LINRES_STEPLENGTH(MSection): - ''' + """ Step length for steepest descent and preconditioned conjugate gradient methods used in linear response calculations. Default is 0.1. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_STEPLENGTH_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword STEPLENGTH. - ''') + """, + ) x_cpmd_input_LINRES_STEPLENGTH_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword STEPLENGTH. - ''') + """, + ) class x_cpmd_section_input_LINRES_THAUTO(MSection): - ''' + """ The two values read from the next line control the switch to different optimizers for an automatic selection of optimizers during a linear response calculation. This also applies to the Z-vector optimization for TDDFT forces. The first value is the @@ -5637,266 +6080,286 @@ class x_cpmd_section_input_LINRES_THAUTO(MSection): averged preconditioner, subspace size defined with \\refkeyword{ODIIS}). The second value is the threshold for switching to DIIS with full storage and state dependent preconditioner. See also \\refkeyword{ZDIIS} for specification of the subspace size. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_THAUTO_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword THAUTO. - ''') + """, + ) x_cpmd_input_LINRES_THAUTO_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword THAUTO. - ''') + """, + ) class x_cpmd_section_input_LINRES_ZDIIS(MSection): - ''' + """ The subspace size for the optimizer is read from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_ZDIIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ZDIIS. - ''') + """, + ) x_cpmd_input_LINRES_ZDIIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ZDIIS. - ''') + """, + ) class x_cpmd_section_input_LINRES(MSection): - ''' + """ General input for HARDNESS and TDDFT calculations - ''' + """ m_def = Section(validate=False) x_cpmd_input_LINRES_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section LINRES even without a keyword. - ''') + """, + ) x_cpmd_section_input_LINRES_DIFF_FORMULA = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_DIFF_FORMULA'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_DIFF_FORMULA"), + repeats=True, + ) x_cpmd_section_input_LINRES_GAUGE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_GAUGE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_GAUGE"), repeats=True + ) x_cpmd_section_input_LINRES_HTHRS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_HTHRS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_HTHRS"), repeats=True + ) x_cpmd_section_input_LINRES_OPTIMIZER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_OPTIMIZER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_OPTIMIZER"), repeats=True + ) x_cpmd_section_input_LINRES_STEPLENGTH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_STEPLENGTH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_STEPLENGTH"), repeats=True + ) x_cpmd_section_input_LINRES_THAUTO = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_THAUTO'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_THAUTO"), repeats=True + ) x_cpmd_section_input_LINRES_ZDIIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES_ZDIIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES_ZDIIS"), repeats=True + ) class x_cpmd_section_input_PATH_ALPHA(MSection): - ''' + """ Smoothing parameter for iterating the string (see \\cite{Eijnden06}). \\textbf{Default} value is \\defaultvalue{0.2} - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_ALPHA_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ALPHA. - ''') + """, + ) x_cpmd_input_PATH_ALPHA_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ALPHA. - ''') + """, + ) class x_cpmd_section_input_PATH_FACTOR(MSection): - ''' + """ Step for propagating string (see \\cite{Eijnden06}). \\textbf{Default} value is \\defaultvalue{1.0} - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_FACTOR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FACTOR. - ''') + """, + ) x_cpmd_input_PATH_FACTOR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FACTOR. - ''') + """, + ) class x_cpmd_section_input_PATH_NEQUI(MSection): - ''' + """ Number of equilibration steps discarded to calculate the mean force. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_NEQUI_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NEQUI. - ''') + """, + ) x_cpmd_input_PATH_NEQUI_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NEQUI. - ''') + """, + ) class x_cpmd_section_input_PATH_NLOOP(MSection): - ''' + """ Maximum number of string searches for Mean Free Energy Path searches. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_NLOOP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NLOOP. - ''') + """, + ) x_cpmd_input_PATH_NLOOP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NLOOP. - ''') + """, + ) class x_cpmd_section_input_PATH_NPREVIOUS(MSection): - ''' + """ String index to restart from. Note that this is just for numbering files, the initial path in collective variables for the search is always {\\em string.inp}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_NPREVIOUS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NPREVIOUS. - ''') + """, + ) x_cpmd_input_PATH_NPREVIOUS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NPREVIOUS. - ''') + """, + ) class x_cpmd_section_input_PATH_REPLICA_NUMBER(MSection): - ''' + """ Number of replicas along the string. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_REPLICA_NUMBER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REPLICA_NUMBER. - ''') + """, + ) x_cpmd_input_PATH_REPLICA_NUMBER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REPLICA_NUMBER. - ''') + """, + ) class x_cpmd_section_input_PATH(MSection): - ''' + """ Mean free energy path calculation (MFEP) - ''' + """ m_def = Section(validate=False) x_cpmd_input_PATH_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section PATH even without a keyword. - ''') + """, + ) x_cpmd_section_input_PATH_ALPHA = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH_ALPHA'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH_ALPHA"), repeats=True + ) x_cpmd_section_input_PATH_FACTOR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH_FACTOR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH_FACTOR"), repeats=True + ) x_cpmd_section_input_PATH_NEQUI = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH_NEQUI'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH_NEQUI"), repeats=True + ) x_cpmd_section_input_PATH_NLOOP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH_NLOOP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH_NLOOP"), repeats=True + ) x_cpmd_section_input_PATH_NPREVIOUS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH_NPREVIOUS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH_NPREVIOUS"), repeats=True + ) x_cpmd_section_input_PATH_REPLICA_NUMBER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH_REPLICA_NUMBER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH_REPLICA_NUMBER"), + repeats=True, + ) class x_cpmd_section_input_PIMD_CENTROID_DYNAMICS(MSection): - ''' + """ Adiabatic centroid molecular dynamics, see Ref.~\\cite{Cao93,Martyna96,aicmd} for theory and details of our implementation, which yields quasiclassical dynamics of the nuclear centroids at a specified temperature of the non--centroid modes. This keyword @@ -5906,52 +6369,56 @@ class x_cpmd_section_input_PIMD_CENTROID_DYNAMICS(MSection): artificially fast in order to sample adiabatically the quantum fluctuations, has to be chosen carefully; note that FACSTAGE~$= 1/\\gamma$ as introduced in Ref.~\\cite{aicmd} in eq.~(2.51). - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_CENTROID_DYNAMICS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CENTROID_DYNAMICS. - ''') + """, + ) x_cpmd_input_PIMD_CENTROID_DYNAMICS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CENTROID_DYNAMICS. - ''') + """, + ) class x_cpmd_section_input_PIMD_CLASSICAL_TEST(MSection): - ''' + """ Test option to reduce the path integral branch to the classical code for the special case $P=1$ in order to allow for a one-to-one comparison to a run using the standard branch of CPMD. It works only with primitive propagator, i.e.\\ not together with NORMAL MODES, STAGING and/or \\refkeyword{DEBROGLIE} CENTROID. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_CLASSICAL_TEST_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CLASSICAL_TEST. - ''') + """, + ) x_cpmd_input_PIMD_CLASSICAL_TEST_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CLASSICAL_TEST. - ''') + """, + ) class x_cpmd_section_input_PIMD_DEBROGLIE(MSection): - ''' + """ An initial configuration assuming quantum free particle behavior is generated for each individual atom according to its physical mass at the temperature given in Kelvin on the following input line. @@ -5969,27 +6436,29 @@ class x_cpmd_section_input_PIMD_DEBROGLIE(MSection): INITIALIZATION and GENERATE REPLICAS are active. Default is DEBROGLIE CENTROID and 500~Kelvin. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_DEBROGLIE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DEBROGLIE. - ''') + """, + ) x_cpmd_input_PIMD_DEBROGLIE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DEBROGLIE. - ''') + """, + ) class x_cpmd_section_input_PIMD_FACMASS(MSection): - ''' + """ Obtain the fictitious nuclear masses $M_I^\\prime$ within path integral molecular dynamics from the real physical atomic masses $M_I$ (as tabulated in the DATA ATWT / \\ldots / statement in atoms.F) by {\\em multiplying} them with the dimensionless @@ -5997,52 +6466,56 @@ class x_cpmd_section_input_PIMD_FACMASS(MSection): propagator is used obtain $M_I^{\\prime (s)}= \\mbox{WMASS} \\cdot M_I^{(s)}$ for {\\em all} replicas $s=1, \\dots , P$; see e.g. Ref.~\\cite{aicmd} eq.~(2.37) for nomenclature. \\textbf{Default} value of WMASS is \\defaultvalue{1.0} - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_FACMASS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FACMASS. - ''') + """, + ) x_cpmd_input_PIMD_FACMASS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FACMASS. - ''') + """, + ) class x_cpmd_section_input_PIMD_GENERATE_REPLICAS(MSection): - ''' + """ Generate quantum free particle replicas from scratch given a classical input configuration according to the keyword \\refkeyword{DEBROGLIE} specification. This is the default if \\refkeyword{INITIALIZATION} is active. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_GENERATE_REPLICAS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GENERATE_REPLICAS. - ''') + """, + ) x_cpmd_input_PIMD_GENERATE_REPLICAS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GENERATE_REPLICAS. - ''') + """, + ) class x_cpmd_section_input_PIMD_INITIALIZATION(MSection): - ''' + """ Provide an initial configuration for all replicas as specified either by \\refkeyword{GENERATE REPLICAS} or by \\refkeyword{READ REPLICAS}. @@ -6051,27 +6524,29 @@ class x_cpmd_section_input_PIMD_INITIALIZATION(MSection): It is defaulted to GENERATE REPLICAS together with \\refkeyword{DEBROGLIE} CENTROID and a temperature of 500~Kelvin. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_INITIALIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword INITIALIZATION. - ''') + """, + ) x_cpmd_input_PIMD_INITIALIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword INITIALIZATION. - ''') + """, + ) class x_cpmd_section_input_PIMD_NORMAL_MODES(MSection): - ''' + """ Use the normal mode representation~\\cite{Tuckerman96} of the path integral propagator. It is possible to impose a mass disparity between centroid and non--centroid coordinates by dividing the fictitious masses of only the {\\em non}--centroid $s=2, @@ -6080,77 +6555,83 @@ class x_cpmd_section_input_PIMD_NORMAL_MODES(MSection): frequencies} of the $s>1$ replicas are changed by only $\\sqrt{\\mbox{FACSTAGE}}$, see Ref.~\\cite{Martyna96}(b). Using FACSTAGE~$\\not= 1.0$ makes only sense in conjunction with CENTROID DYNAMICS where WMASS=1.0 has to be used as well. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_NORMAL_MODES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NORMAL_MODES. - ''') + """, + ) x_cpmd_input_PIMD_NORMAL_MODES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NORMAL_MODES. - ''') + """, + ) class x_cpmd_section_input_PIMD_OUTPUT(MSection): - ''' + """ Output files for each processor, processor group, or only grandparent. Default is PARENT to standard output file (Note: some information such as messages for correct reading~/ writing of restart files is lost); GROUPS and ALL write to the files OUTPUT\\_$n$ where $n$ is the group and bead number, respectively. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_OUTPUT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OUTPUT. - ''') + """, + ) x_cpmd_input_PIMD_OUTPUT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OUTPUT. - ''') + """, + ) class x_cpmd_section_input_PIMD_PRINT_LEVEL(MSection): - ''' + """ The detail of printing information is read as an integer number from the next line. Currently there is only minimal output for $<5$ and maximal output for $\\geq 5$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_PRINT_LEVEL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRINT_LEVEL. - ''') + """, + ) x_cpmd_input_PIMD_PRINT_LEVEL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRINT_LEVEL. - ''') + """, + ) class x_cpmd_section_input_PIMD_PROCESSOR_GROUPS(MSection): - ''' + """ % This is only needed for {\\em fine}--tuning load balancing in case of path integral runs {\\em iff} two level parallelization is used. The default optimizes the combined load balancing of the parallelization over replicas and g--vectors. The default load @@ -6167,50 +6648,54 @@ class x_cpmd_section_input_PIMD_PROCESSOR_GROUPS(MSection): be equal to the number of replicas might be more efficient. This keyword is only active in parallel mode. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_PROCESSOR_GROUPS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PROCESSOR_GROUPS. - ''') + """, + ) x_cpmd_input_PIMD_PROCESSOR_GROUPS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PROCESSOR_GROUPS. - ''') + """, + ) class x_cpmd_section_input_PIMD_READ_REPLICAS(MSection): - ''' + """ Read all $P$ replicas from a file with a name to be specified in the following line, for the input format see subroutine rreadf.F. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_READ_REPLICAS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword READ_REPLICAS. - ''') + """, + ) x_cpmd_input_PIMD_READ_REPLICAS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword READ_REPLICAS. - ''') + """, + ) class x_cpmd_section_input_PIMD_STAGING(MSection): - ''' + """ Use the staging representation~\\cite{Tuckerman96} of the path integral propagator. It is possible to impose a mass disparity between centroid and non--centroid coordinates by dividing the fictitous masses of only the {\\em non}--centroid $s=2, \\dots ,P$ @@ -6219,168 +6704,184 @@ class x_cpmd_section_input_PIMD_STAGING(MSection): the $s>1$ replicas are changed by only $\\sqrt{\\mbox{FACSTAGE}}$, see Ref.~\\cite{Martyna96}(b). Note: using FACSTAGE~$\\not= 1.0$ essentially makes no sense within the STAGING scheme, but see its use within CENTROID DYNAMICS and NORMAL MODES. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_STAGING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword STAGING. - ''') + """, + ) x_cpmd_input_PIMD_STAGING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword STAGING. - ''') + """, + ) class x_cpmd_section_input_PIMD_TROTTER_DIMENSION(MSection): - ''' + """ The Trotter number $P$, i.e. the number of ``replicas'', ``beads'', or ``imaginary time slices'' which are used in order to discretize the Feynman--Kac path integral of the nuclei, is read from the next line. If NORMAL MODES or STAGING is not activated the path integral is discretized in cartesian coordinates in real space (so--called ``primitive coordinates''). A discussion about controlling discretization errors and on estimating $P$ in advance is given in Ref.~\\cite{knoll-marx-00}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_TROTTER_DIMENSION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TROTTER_DIMENSION. - ''') + """, + ) x_cpmd_input_PIMD_TROTTER_DIMENSION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TROTTER_DIMENSION. - ''') + """, + ) class x_cpmd_section_input_PIMD(MSection): - ''' + """ Path integral molecular dynamics (PIMD) - ''' + """ m_def = Section(validate=False) x_cpmd_input_PIMD_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section PIMD even without a keyword. - ''') + """, + ) x_cpmd_section_input_PIMD_CENTROID_DYNAMICS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_CENTROID_DYNAMICS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_CENTROID_DYNAMICS"), + repeats=True, + ) x_cpmd_section_input_PIMD_CLASSICAL_TEST = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_CLASSICAL_TEST'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_CLASSICAL_TEST"), + repeats=True, + ) x_cpmd_section_input_PIMD_DEBROGLIE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_DEBROGLIE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_DEBROGLIE"), repeats=True + ) x_cpmd_section_input_PIMD_FACMASS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_FACMASS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_FACMASS"), repeats=True + ) x_cpmd_section_input_PIMD_GENERATE_REPLICAS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_GENERATE_REPLICAS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_GENERATE_REPLICAS"), + repeats=True, + ) x_cpmd_section_input_PIMD_INITIALIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_INITIALIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_INITIALIZATION"), + repeats=True, + ) x_cpmd_section_input_PIMD_NORMAL_MODES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_NORMAL_MODES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_NORMAL_MODES"), repeats=True + ) x_cpmd_section_input_PIMD_OUTPUT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_OUTPUT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_OUTPUT"), repeats=True + ) x_cpmd_section_input_PIMD_PRINT_LEVEL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_PRINT_LEVEL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_PRINT_LEVEL"), repeats=True + ) x_cpmd_section_input_PIMD_PROCESSOR_GROUPS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_PROCESSOR_GROUPS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_PROCESSOR_GROUPS"), + repeats=True, + ) x_cpmd_section_input_PIMD_READ_REPLICAS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_READ_REPLICAS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_READ_REPLICAS"), + repeats=True, + ) x_cpmd_section_input_PIMD_STAGING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_STAGING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_STAGING"), repeats=True + ) x_cpmd_section_input_PIMD_TROTTER_DIMENSION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD_TROTTER_DIMENSION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD_TROTTER_DIMENSION"), + repeats=True, + ) class x_cpmd_section_input_PROP_AVERAGED_POTENTIAL(MSection): - ''' + """ Calculate averaged electrostatic potential in spheres of radius Rcut around the atomic positions. Parameter Rcut is read in from next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_AVERAGED_POTENTIAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword AVERAGED_POTENTIAL. - ''') + """, + ) x_cpmd_input_PROP_AVERAGED_POTENTIAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword AVERAGED_POTENTIAL. - ''') + """, + ) class x_cpmd_section_input_PROP_CHARGES(MSection): - ''' + """ Calculate atomic charges. Charges are calculated according to the method of Hirshfeld~\\cite{Hirshfeld77} and charges derived from the electrostatic potential~\\cite{Cox84}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_CHARGES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CHARGES. - ''') + """, + ) x_cpmd_input_PROP_CHARGES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CHARGES. - ''') + """, + ) class x_cpmd_section_input_PROP_CONDUCTIVITY(MSection): - ''' + """ Computes the optical conductivity according to the Kubo-Greenwod formula \\begin{equation*} \\sigma(\\omega) = \\frac{2 \\pi e^2}{3m^2 V_{\\rm cell}} \\frac{1}{\\omega } \\sum_{i,j} (f_i-f_j) |\\langle \\psi _i| \\hat{\\bf p} |\\psi _j \\rangle |^2 @@ -6398,27 +6899,29 @@ class x_cpmd_section_input_PROP_CONDUCTIVITY(MSection): file MATRIX.DAT is written in your working directory, where all the non-zero transition amplitudes and related informations are reported (see the header of MATRIX.DAT). An example of application is given in Refs.~\\cite{solve,solve2}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_CONDUCTIVITY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CONDUCTIVITY. - ''') + """, + ) x_cpmd_input_PROP_CONDUCTIVITY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CONDUCTIVITY. - ''') + """, + ) class x_cpmd_section_input_PROP_CORE_SPECTRA(MSection): - ''' + """ Computes the X-ray adsorption spectrum and related transition matrix elements according to Ref.~\\cite{xray}. This calculation is executed when the keyword PROPERTIES is used in the section \\&CPMD ... \\&END. In the section \\&PROP ... \\&END @@ -6439,77 +6942,83 @@ class x_cpmd_section_input_PROP_CORE_SPECTRA(MSection): written in the standard output. Waring: in order to use this keyword you need special pseudopotentials. These are provided, at least for some elements, in the PP library of CPMD and are named as *\\_HOLE.psp - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_CORE_SPECTRA_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CORE_SPECTRA. - ''') + """, + ) x_cpmd_input_PROP_CORE_SPECTRA_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CORE_SPECTRA. - ''') + """, + ) class x_cpmd_section_input_PROP_CUBECENTER(MSection): - ''' + """ Sets the center of the cubefiles produced by the \\refkeyword{CUBEFILE} flag. The next line has to contain the coordinates of the center in Bohr or Angstrom, depending on whether the \\refkeyword{ANGSTROM} keyword was given. \\textbf{Default} is the geometric center of the system. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_CUBECENTER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CUBECENTER. - ''') + """, + ) x_cpmd_input_PROP_CUBECENTER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CUBECENTER. - ''') + """, + ) class x_cpmd_section_input_PROP_CUBEFILE(MSection): - ''' + """ Plots the requested objects in .CUBE file format. If ORBITALS are demanded, the total number as well as the indices have to be given on the next and second next line. HALFMESH reduces the number of grid points per direction by 2, thus reducing the file size by a factor of 8. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_CUBEFILE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CUBEFILE. - ''') + """, + ) x_cpmd_input_PROP_CUBEFILE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CUBEFILE. - ''') + """, + ) class x_cpmd_section_input_PROP_DIPOLE_MOMENT(MSection): - ''' + """ Calculate the dipole moment. Without the additional keywords {\\bf BERRY} or {\\bf RS} this is only implemented for @@ -6518,27 +7027,29 @@ class x_cpmd_section_input_PROP_DIPOLE_MOMENT(MSection): algorithm. {\\bf Default} is to use the real-space algorithm. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_DIPOLE_MOMENT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DIPOLE_MOMENT. - ''') + """, + ) x_cpmd_input_PROP_DIPOLE_MOMENT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DIPOLE_MOMENT. - ''') + """, + ) class x_cpmd_section_input_PROP_EXCITED_DIPOLE(MSection): - ''' + """ Calculate the difference of dipole moments between the ground state density and a density generated by differently occupied Kohn-Sham orbitals. On the next line the number of dipole moments to calculate and the total number orbitals has to be given. @@ -6546,27 +7057,29 @@ class x_cpmd_section_input_PROP_EXCITED_DIPOLE(MSection): given. By default the dipoles are calculated by the method used for the {\\bf DIPOLE MOMENT} option and the same restrictions apply. If the {\\bf LOCAL DIPOLE} option is specified the dipole moment differences are calculated within the same boxes. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_EXCITED_DIPOLE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXCITED_DIPOLE. - ''') + """, + ) x_cpmd_input_PROP_EXCITED_DIPOLE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXCITED_DIPOLE. - ''') + """, + ) class x_cpmd_section_input_PROP_LDOS(MSection): - ''' + """ Calculate the layer projected density of states. The number of layers is read from the next line. To use the LDOS keyword, the user must first have performed a wavefunction optimization and then restart with with the \\refkeyword{PROPERTIES} and @@ -6574,141 +7087,153 @@ class x_cpmd_section_input_PROP_LDOS(MSection): \\&PROP section). \\textbf{Warning:} If you use special k-points for a special structure you need to symmetrize charge density for which you must specify the \\refkeyword{POINT GROUP}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_LDOS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LDOS. - ''') + """, + ) x_cpmd_input_PROP_LDOS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LDOS. - ''') + """, + ) class x_cpmd_section_input_PROP_LOCAL_DIPOLE(MSection): - ''' + """ Calculate $numloc$ local dipole moments. $numloc$ is read from the next line followed by two numloc lines with the format: \\\\ $xmin$ $ymin$ $zmin$ \\\\ $xmax$ $ymax$ $zmax$ - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_LOCAL_DIPOLE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LOCAL_DIPOLE. - ''') + """, + ) x_cpmd_input_PROP_LOCAL_DIPOLE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LOCAL_DIPOLE. - ''') + """, + ) class x_cpmd_section_input_PROP_LOCALIZE(MSection): - ''' + """ Localize the molecular orbitals \\cite{Hutter94b} as defined through the atomic basis set. The same localization transformation is then applied also to the wavefunctions in the plane wave basis. These wavefunction can be printed with the keyword {\\bf RHOOUT} specified in the section \\&CPMD section. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_LOCALIZE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LOCALIZE. - ''') + """, + ) x_cpmd_input_PROP_LOCALIZE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LOCALIZE. - ''') + """, + ) class x_cpmd_section_input_PROP_NOPRINT_ORBITALS(MSection): - ''' + """ Do not print the wavefunctions in the atomic basis set. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_NOPRINT_ORBITALS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NOPRINT_ORBITALS. - ''') + """, + ) x_cpmd_input_PROP_NOPRINT_ORBITALS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NOPRINT_ORBITALS. - ''') + """, + ) class x_cpmd_section_input_PROP_OPTIMIZE_SLATER_EXPONENTS(MSection): - ''' + """ Not documented - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_OPTIMIZE_SLATER_EXPONENTS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OPTIMIZE_SLATER_EXPONENTS. - ''') + """, + ) x_cpmd_input_PROP_OPTIMIZE_SLATER_EXPONENTS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OPTIMIZE_SLATER_EXPONENTS. - ''') + """, + ) class x_cpmd_section_input_PROP_POLARISABILITY(MSection): - ''' + """ Computes the polarisability of a system, intended as dipole moment per unit volume. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_POLARISABILITY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword POLARISABILITY. - ''') + """, + ) x_cpmd_input_PROP_POLARISABILITY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword POLARISABILITY. - ''') + """, + ) class x_cpmd_section_input_PROP_POPULATION_ANALYSIS(MSection): - ''' + """ The type of population analysis that is performed with the projected wavefunctions. L\\"owdin charges are given with both options. For the Davidson analysis~\\cite{Davidson67} the maximum complexity can be specified with the keyword @@ -6716,52 +7241,56 @@ class x_cpmd_section_input_PROP_POPULATION_ANALYSIS(MSection): option one has to specify the number of atomic orbitals that are used in the analysis. For each species one has to give this number in a separate line. An input example for a water molecule is given in the hints section \\ref{hints:pop}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_POPULATION_ANALYSIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword POPULATION_ANALYSIS. - ''') + """, + ) x_cpmd_input_PROP_POPULATION_ANALYSIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword POPULATION_ANALYSIS. - ''') + """, + ) class x_cpmd_section_input_PROP_PROJECT_WAVEFUNCTION(MSection): - ''' + """ The wavefunctions are projected on atomic orbitals. The projected wavefunctions are then used to calculate atomic populations and bond orders. The atomic orbitals to project on are taken from the \\&BASIS section. If there is no \\&BASIS section in the input a minimal Slater basis is used. See section~\\ref{input:basis} for more details. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_PROJECT_WAVEFUNCTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PROJECT_WAVEFUNCTION. - ''') + """, + ) x_cpmd_input_PROP_PROJECT_WAVEFUNCTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PROJECT_WAVEFUNCTION. - ''') + """, + ) class x_cpmd_section_input_PROP_TRANSITION_MOMENT(MSection): - ''' + """ Calculate the dipole transition matrix element. On the following lines, the number of transitions and the involved orbitals are given. @@ -6770,157 +7299,173 @@ class x_cpmd_section_input_PROP_TRANSITION_MOMENT(MSection): This calculates the dipole transition matrix elements between KS states 6 and 7, and between 6 and 8. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_TRANSITION_MOMENT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TRANSITION_MOMENT. - ''') + """, + ) x_cpmd_input_PROP_TRANSITION_MOMENT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TRANSITION_MOMENT. - ''') + """, + ) class x_cpmd_section_input_PROP(MSection): - ''' + """ Calculation of properties - ''' + """ m_def = Section(validate=False) x_cpmd_input_PROP_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section PROP even without a keyword. - ''') + """, + ) x_cpmd_section_input_PROP_AVERAGED_POTENTIAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_AVERAGED_POTENTIAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_AVERAGED_POTENTIAL"), + repeats=True, + ) x_cpmd_section_input_PROP_CHARGES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_CHARGES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_CHARGES"), repeats=True + ) x_cpmd_section_input_PROP_CONDUCTIVITY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_CONDUCTIVITY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_CONDUCTIVITY"), repeats=True + ) x_cpmd_section_input_PROP_CORE_SPECTRA = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_CORE_SPECTRA'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_CORE_SPECTRA"), repeats=True + ) x_cpmd_section_input_PROP_CUBECENTER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_CUBECENTER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_CUBECENTER"), repeats=True + ) x_cpmd_section_input_PROP_CUBEFILE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_CUBEFILE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_CUBEFILE"), repeats=True + ) x_cpmd_section_input_PROP_DIPOLE_MOMENT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_DIPOLE_MOMENT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_DIPOLE_MOMENT"), + repeats=True, + ) x_cpmd_section_input_PROP_EXCITED_DIPOLE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_EXCITED_DIPOLE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_EXCITED_DIPOLE"), + repeats=True, + ) x_cpmd_section_input_PROP_LDOS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_LDOS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_LDOS"), repeats=True + ) x_cpmd_section_input_PROP_LOCAL_DIPOLE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_LOCAL_DIPOLE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_LOCAL_DIPOLE"), repeats=True + ) x_cpmd_section_input_PROP_LOCALIZE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_LOCALIZE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_LOCALIZE"), repeats=True + ) x_cpmd_section_input_PROP_NOPRINT_ORBITALS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_NOPRINT_ORBITALS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_NOPRINT_ORBITALS"), + repeats=True, + ) x_cpmd_section_input_PROP_OPTIMIZE_SLATER_EXPONENTS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_OPTIMIZE_SLATER_EXPONENTS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_OPTIMIZE_SLATER_EXPONENTS"), + repeats=True, + ) x_cpmd_section_input_PROP_POLARISABILITY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_POLARISABILITY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_POLARISABILITY"), + repeats=True, + ) x_cpmd_section_input_PROP_POPULATION_ANALYSIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_POPULATION_ANALYSIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_POPULATION_ANALYSIS"), + repeats=True, + ) x_cpmd_section_input_PROP_PROJECT_WAVEFUNCTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_PROJECT_WAVEFUNCTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_PROJECT_WAVEFUNCTION"), + repeats=True, + ) x_cpmd_section_input_PROP_TRANSITION_MOMENT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP_TRANSITION_MOMENT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP_TRANSITION_MOMENT"), + repeats=True, + ) class x_cpmd_section_input_PTDDFT_ACCURACY(MSection): - ''' + """ Specifies the accuracy to be reached in the Cayley propagation scheme used in Ehrenfest type of dynamics and spectra calculation. - ''' + """ m_def = Section(validate=False) x_cpmd_input_PTDDFT_ACCURACY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ACCURACY. - ''') + """, + ) x_cpmd_input_PTDDFT_ACCURACY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ACCURACY. - ''') + """, + ) class x_cpmd_section_input_PTDDFT_PIPULSE(MSection): - ''' + """ Specifies a time dependent pi-pulse to be used with MOLECULAR DYNAMICS EH. Use PIPULSE together with TD\\_POTENTIAL. The pulse strength is read from the next line (see subroutine gaugepot\\_laser in td\\_util.F for further details). - ''' + """ m_def = Section(validate=False) x_cpmd_input_PTDDFT_PIPULSE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PIPULSE. - ''') + """, + ) x_cpmd_input_PTDDFT_PIPULSE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PIPULSE. - ''') + """, + ) class x_cpmd_section_input_PTDDFT_RESTFILE(MSection): - ''' + """ Defines a restart code for the restart of the Ehrenfest dynamics (\\refkeyword{MOLECULAR DYNAMICS} EH) and the propagation spectra (\\refkeyword{PROPAGATION SPECTRA}). The restart option is read from the next line: @@ -6930,80 +7475,85 @@ class x_cpmd_section_input_PTDDFT_RESTFILE(MSection): number of s tates (This states a prepare in a previuos run using the KOHN-SHAM ENERGIES principal keyward), 2; restart from the orbitals stored in RESTART (obtained from a optimization run with tight convergence (at least 1.D-7)). - ''' + """ m_def = Section(validate=False) x_cpmd_input_PTDDFT_RESTFILE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RESTFILE. - ''') + """, + ) x_cpmd_input_PTDDFT_RESTFILE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RESTFILE. - ''') + """, + ) class x_cpmd_section_input_PTDDFT(MSection): - ''' + """ Propagation TDDFT for Ehrenfest dynamics and spectra calculation - ''' + """ m_def = Section(validate=False) x_cpmd_input_PTDDFT_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section PTDDFT even without a keyword. - ''') + """, + ) x_cpmd_section_input_PTDDFT_ACCURACY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PTDDFT_ACCURACY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PTDDFT_ACCURACY"), repeats=True + ) x_cpmd_section_input_PTDDFT_PIPULSE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PTDDFT_PIPULSE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PTDDFT_PIPULSE"), repeats=True + ) x_cpmd_section_input_PTDDFT_RESTFILE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PTDDFT_RESTFILE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PTDDFT_RESTFILE"), repeats=True + ) class x_cpmd_section_input_QMMM_AMBER(MSection): - ''' + """ An Amber functional form for the classical force field is used. In this case coordinates and topology files as obtained by Amber have to be converted in Gromos format just for input/read consistency. This is done with the tool amber2gromos availabe with the CPMD/QMMM package. This keyword is mutually exclusive with the \\refkeyword{GROMOS} keyword (which is used by default). - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_AMBER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword AMBER. - ''') + """, + ) x_cpmd_input_QMMM_AMBER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword AMBER. - ''') + """, + ) class x_cpmd_section_input_QMMM_BOX_TOLERANCE(MSection): - ''' + """ The value for the box tolerance is read from the next line. In a QM/MM calculation the size of the QM-box is fixed and the QM-atoms must not come to close to the walls of this box. On top of always recentering the QM-box around the center of the @@ -7011,27 +7561,29 @@ class x_cpmd_section_input_QMMM_BOX_TOLERANCE(MSection): distribution extends too much to fit into the QM-box properly anymore. This value may need to be adjusted to the requirements of the Poisson solver used (see section \\ref{hints:symm0}). {\\bf Default} value is 8~a.u. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_BOX_TOLERANCE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BOX_TOLERANCE. - ''') + """, + ) x_cpmd_input_QMMM_BOX_TOLERANCE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BOX_TOLERANCE. - ''') + """, + ) class x_cpmd_section_input_QMMM_BOX_WALLS(MSection): - ''' + """ The thickness parameter for soft, reflecting QM-box walls is read from the next line. This keyword allows to reverse the momentum of the particles (${\\bf p}_I \\rightarrow -{\\bf p}_I$) when they reach the walls of the simulation supercell similar to the full @@ -7046,76 +7598,82 @@ class x_cpmd_section_input_QMMM_BOX_WALLS(MSection): reverse the sign of the velocities, ${\\bf p}_I \\to -{\\bf p}_I$ ($I$ = QM atom index), be aware that this options affects the momentum conservation in your QM subsystem. This feature is {\\bf disabled by default} - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_BOX_WALLS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword BOX_WALLS. - ''') + """, + ) x_cpmd_input_QMMM_BOX_WALLS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword BOX_WALLS. - ''') + """, + ) class x_cpmd_section_input_QMMM_CAPPING(MSection): - ''' + """ Add (dummy) hydrogen atoms to the QM-system to saturate dangling bonds when cutting between MM- and QM-system. This needs a special pseudopotential entry in the \\&ATOMS section (see section \\ref{sec:qmmm-cut-bonds} for more details). - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_CAPPING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CAPPING. - ''') + """, + ) x_cpmd_input_QMMM_CAPPING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CAPPING. - ''') + """, + ) class x_cpmd_section_input_QMMM_COORDINATES(MSection): - ''' + """ On the next line the name of a Gromos96 format coordinate file has to be given. Note, that this file must match the corresponding input and topology files. Note, that in case of hydrogen capping, this file has to be modified to also contain the respective dummy hydrogen atoms. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_COORDINATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword COORDINATES. - ''') + """, + ) x_cpmd_input_QMMM_COORDINATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword COORDINATES. - ''') + """, + ) class x_cpmd_section_input_QMMM_ELECTROSTATIC_COUPLING(MSection): - ''' + """ The electrostatic interaction of the quantum system with the classical system is explicitly kept into account for all classical atoms at a distance $r \\leq $~\\refspekeyword{RCUT\\_NN}{RCUT-NN} from any quantum atom and for all the MM atoms at @@ -7140,50 +7698,54 @@ class x_cpmd_section_input_QMMM_ELECTROSTATIC_COUPLING(MSection): changed by the keywords \\refspekeyword{RCUT\\_NN}{RCUT-NN}, \\refspekeyword{RCUT\\_MIX}{RCUT-MIX}, and \\refspekeyword{RCUT\\_ESP}{RCUT-ESP} with $r_{nn} \\leq r_{mix} \\leq r_{esp}$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_ELECTROSTATIC_COUPLING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ELECTROSTATIC_COUPLING. - ''') + """, + ) x_cpmd_input_QMMM_ELECTROSTATIC_COUPLING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ELECTROSTATIC_COUPLING. - ''') + """, + ) class x_cpmd_section_input_QMMM_ESPWEIGHT(MSection): - ''' + """ The ESP-charg fit weighting parameter is read from the next line. {\\bf Default} value is $0.1 e_0$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_ESPWEIGHT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ESPWEIGHT. - ''') + """, + ) x_cpmd_input_QMMM_ESPWEIGHT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ESPWEIGHT. - ''') + """, + ) class x_cpmd_section_input_QMMM_EXCLUSION(MSection): - ''' + """ Specify charge interactions that should be excluded from the QM/MM hamiltonian. With the additional flag GROMOS, the exclusions from the Gromos topology are used. With the additional flag LIST, an explicit list is read from following lines. The format of @@ -7191,27 +7753,29 @@ class x_cpmd_section_input_QMMM_EXCLUSION(MSection): listed in pairs of numbers of the QM atom and the MM atom in Gromos ordering; the optional flag NORESP in this case requests usage of MM point charges for the QM atoms instead of the D-RESP charges (default). - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_EXCLUSION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXCLUSION. - ''') + """, + ) x_cpmd_input_QMMM_EXCLUSION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXCLUSION. - ''') + """, + ) class x_cpmd_section_input_QMMM_FLEXIBLE_WATER(MSection): - ''' + """ Convert some solven water molecules into solute molecules and thus using a flexible potential. With the BONDTYPE flag, the three bond potentials (OH1, OH2, and H1H2) can be given as index in the BONDTYPE section of the Gromos topology file. Note that the @@ -7225,177 +7789,191 @@ class x_cpmd_section_input_QMMM_FLEXIBLE_WATER(MSection): \\refkeyword{INPUT} file has to be adapted: in the SYSTEM section the number of solvent molecules has to be reduced by the number of converted molecules, and in the SUBMOLECULES section the new solute atoms have to be added accordingly.\\\\ Example: - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_FLEXIBLE_WATER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FLEXIBLE_WATER. - ''') + """, + ) x_cpmd_input_QMMM_FLEXIBLE_WATER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FLEXIBLE_WATER. - ''') + """, + ) class x_cpmd_section_input_QMMM_GROMOS(MSection): - ''' + """ A Gromos functional form for the classical force field is used (this is the default). This keyword is mutually exclusive with the \\refkeyword{AMBER} keyword. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_GROMOS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword GROMOS. - ''') + """, + ) x_cpmd_input_QMMM_GROMOS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword GROMOS. - ''') + """, + ) class x_cpmd_section_input_QMMM_HIRSHFELD(MSection): - ''' + """ With this option, restraints to Hirshfeld charges~\\cite{Hirshfeld77} can be turned on or off {\\bf Default} value is ON. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_HIRSHFELD_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HIRSHFELD. - ''') + """, + ) x_cpmd_input_QMMM_HIRSHFELD_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HIRSHFELD. - ''') + """, + ) class x_cpmd_section_input_QMMM_INPUT(MSection): - ''' + """ On the next line the name of a Gromos input file has to be given. A short summary of the input file syntax and some keywords are in section \\ref{sec:qmmm-gromos-inp}. Note, that it has to be a correct input file, even though many options do not apply for QM/MM runs. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_INPUT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword INPUT. - ''') + """, + ) x_cpmd_input_QMMM_INPUT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword INPUT. - ''') + """, + ) class x_cpmd_section_input_QMMM_MAXNN(MSection): - ''' + """ Then maximum number of NN atoms, i.e. the number of atoms coupled to the QM system via \\refkeyword{ELECTROSTATIC COUPLING} is read from the next line. (Note: This keyword was renamed from MAXNAT in older versions of the QM/MM interface code to avoid confusion with the MAXNAT keyword in the \\refkeyword{ARRAYSIZES ... END ARRAYSIZES} block.) {\\bf Default} value is 5000. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_MAXNN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MAXNN. - ''') + """, + ) x_cpmd_input_QMMM_MAXNN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MAXNN. - ''') + """, + ) class x_cpmd_section_input_QMMM_NOSPLIT(MSection): - ''' + """ If the program is run on more than one node, the MM forces calculation is performed on all nodes. Since the MM part is not parallelized, this is mostly useful for systems with a small MM-part and for runs using only very few nodes. Usually the QM part of the calculation needs the bulk of the cpu-time in the QM/MM. This setting is the default. See also under \\refkeyword{SPLIT}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_NOSPLIT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NOSPLIT. - ''') + """, + ) x_cpmd_input_QMMM_NOSPLIT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NOSPLIT. - ''') + """, + ) class x_cpmd_section_input_QMMM_RESTART_TRAJECTORY(MSection): - ''' + """ Restart the MD with coordinates and velocities from a previous run. With the additional flag FRAME followed by the frame number the trajectory frame can be selected. With the flag FILE followed by the name of the trajectory file, the filename can be set (Default is TRAJECTORY). Finally the flag REVERSE will reverse the sign of the velocities, so the system will move backwards from the selected point in the trajecory. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_RESTART_TRAJECTORY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RESTART_TRAJECTORY. - ''') + """, + ) x_cpmd_input_QMMM_RESTART_TRAJECTORY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RESTART_TRAJECTORY. - ''') + """, + ) class x_cpmd_section_input_QMMM_SAMPLE_INTERACTING(MSection): - ''' + """ The sampling rate for writing a trajectory of the interacting subsystem is read from the next line. With the additional keyword OFF or a sampling rate of 0, those trajectories are not written. The coordinates of the atoms atoms contained in the file @@ -7404,329 +7982,354 @@ class x_cpmd_section_input_QMMM_SAMPLE_INTERACTING(MSection): written as well. With the additional keyword DCD the file TRAJ\\_INT.dcd is also written to. if the sampling rate is negative, then \\textbf{only} the TRAJ\\_INT.dcd is written. {\\bf Default} value is 5 for MD calculations and OFF for others. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_SAMPLE_INTERACTING_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SAMPLE_INTERACTING. - ''') + """, + ) x_cpmd_input_QMMM_SAMPLE_INTERACTING_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SAMPLE_INTERACTING. - ''') + """, + ) class x_cpmd_section_input_QMMM_SPLIT(MSection): - ''' + """ If the program is run on more than one node, the MM forces calculation is performed on a separate node. This is mostly useful for systems with a large MM-part and runs with many nodes where the accumulated time used for the classical part has a larger impact on the performace than losing one node for the (in total) much more time consuming QM- part. {\\bf Default} is \\refkeyword{NOSPLIT}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_SPLIT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SPLIT. - ''') + """, + ) x_cpmd_input_QMMM_SPLIT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SPLIT. - ''') + """, + ) class x_cpmd_section_input_QMMM_TIMINGS(MSection): - ''' + """ Display timing information about the various parts of the QM/MM interface code in the output file. Also a file \\texttt{TIMINGS} with even more details is written. This option is off by {\\bf default}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_TIMINGS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TIMINGS. - ''') + """, + ) x_cpmd_input_QMMM_TIMINGS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TIMINGS. - ''') + """, + ) class x_cpmd_section_input_QMMM_TOPOLOGY(MSection): - ''' + """ On the next line the name of a Gromos topology file has to be given. Regardless of the force field, this topology file has to be in Gromos format\\cite{gromos96}. Topologies created with Amber % or Gromacs (Gromos/OPLS-forcefield) can be converted using the respective conversion tools shipped with the interface code. A short summary of the topology file syntax and some keywords are in section \\ref{sec:qmmm-gromos-inp}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_TOPOLOGY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TOPOLOGY. - ''') + """, + ) x_cpmd_input_QMMM_TOPOLOGY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TOPOLOGY. - ''') + """, + ) class x_cpmd_section_input_QMMM_UPDATE_LIST(MSection): - ''' + """ On the next line the number of MD steps between updates of the various lists of atoms for \\refkeyword{ELECTROSTATIC COUPLING} is given. At every list update a file INTERACTING\\_NEW.pdb is created (and overwritten). {\\bf Default} value is 100. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_UPDATE_LIST_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword UPDATE_LIST. - ''') + """, + ) x_cpmd_input_QMMM_UPDATE_LIST_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword UPDATE_LIST. - ''') + """, + ) class x_cpmd_section_input_QMMM_VERBOSE(MSection): - ''' + """ The progress of the QM/MM simulation is reported more verbosely in the output. This option is off by {\\bf default}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_VERBOSE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VERBOSE. - ''') + """, + ) x_cpmd_input_QMMM_VERBOSE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VERBOSE. - ''') + """, + ) class x_cpmd_section_input_QMMM_WRITE_LOCALTEMP(MSection): - ''' + """ The Temperatures of the QM subsystem, the MM solute (without the QM atoms) and the solvent (if present) are calculated separately and writen to the standard output and a file \\texttt{QM\\_TEMP}. The file has 5 columns containing the QM temperature, the MM temperature, the solvent temperature (or 0.0 if the solvent is part of the solute), and the total temperature in that order. With the optional parameters STEP followed by an integer, this is done only every \\texttt{nfi\\_lt} timesteps. - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_WRITE_LOCALTEMP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WRITE_LOCALTEMP. - ''') + """, + ) x_cpmd_input_QMMM_WRITE_LOCALTEMP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WRITE_LOCALTEMP. - ''') + """, + ) class x_cpmd_section_input_QMMM(MSection): - ''' + """ Input for Gromos QM/MM interface (see section \\ref{sec:qmmm}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_QMMM_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section QMMM even without a keyword. - ''') + """, + ) x_cpmd_section_input_QMMM_AMBER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_AMBER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_AMBER"), repeats=True + ) x_cpmd_section_input_QMMM_BOX_TOLERANCE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_BOX_TOLERANCE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_BOX_TOLERANCE"), + repeats=True, + ) x_cpmd_section_input_QMMM_BOX_WALLS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_BOX_WALLS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_BOX_WALLS"), repeats=True + ) x_cpmd_section_input_QMMM_CAPPING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_CAPPING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_CAPPING"), repeats=True + ) x_cpmd_section_input_QMMM_COORDINATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_COORDINATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_COORDINATES"), repeats=True + ) x_cpmd_section_input_QMMM_ELECTROSTATIC_COUPLING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_ELECTROSTATIC_COUPLING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_ELECTROSTATIC_COUPLING"), + repeats=True, + ) x_cpmd_section_input_QMMM_ESPWEIGHT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_ESPWEIGHT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_ESPWEIGHT"), repeats=True + ) x_cpmd_section_input_QMMM_EXCLUSION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_EXCLUSION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_EXCLUSION"), repeats=True + ) x_cpmd_section_input_QMMM_FLEXIBLE_WATER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_FLEXIBLE_WATER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_FLEXIBLE_WATER"), + repeats=True, + ) x_cpmd_section_input_QMMM_GROMOS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_GROMOS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_GROMOS"), repeats=True + ) x_cpmd_section_input_QMMM_HIRSHFELD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_HIRSHFELD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_HIRSHFELD"), repeats=True + ) x_cpmd_section_input_QMMM_INPUT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_INPUT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_INPUT"), repeats=True + ) x_cpmd_section_input_QMMM_MAXNN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_MAXNN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_MAXNN"), repeats=True + ) x_cpmd_section_input_QMMM_NOSPLIT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_NOSPLIT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_NOSPLIT"), repeats=True + ) x_cpmd_section_input_QMMM_RESTART_TRAJECTORY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_RESTART_TRAJECTORY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_RESTART_TRAJECTORY"), + repeats=True, + ) x_cpmd_section_input_QMMM_SAMPLE_INTERACTING = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_SAMPLE_INTERACTING'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_SAMPLE_INTERACTING"), + repeats=True, + ) x_cpmd_section_input_QMMM_SPLIT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_SPLIT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_SPLIT"), repeats=True + ) x_cpmd_section_input_QMMM_TIMINGS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_TIMINGS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_TIMINGS"), repeats=True + ) x_cpmd_section_input_QMMM_TOPOLOGY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_TOPOLOGY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_TOPOLOGY"), repeats=True + ) x_cpmd_section_input_QMMM_UPDATE_LIST = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_UPDATE_LIST'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_UPDATE_LIST"), repeats=True + ) x_cpmd_section_input_QMMM_VERBOSE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_VERBOSE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_VERBOSE"), repeats=True + ) x_cpmd_section_input_QMMM_WRITE_LOCALTEMP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM_WRITE_LOCALTEMP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM_WRITE_LOCALTEMP"), + repeats=True, + ) class x_cpmd_section_input_RESP_DISCARD(MSection): - ''' + """ Request to discard trivial modes in vibrational analysis from linear response (both \\refkeyword{PHONON} and \\refkeyword{LANCZOS}). {\\bf OFF} = argument for performing no projection. {\\bf PARTIAL} = argument for projecting out only translations (this is the default). {\\bf TOTAL} = argument for projecting both rotations and translations. {\\bf LINEAR} = argument for projecting rotations around the $C - \\infty$ axis in a linear molecule (not implemented yet). - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_DISCARD_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DISCARD. - ''') + """, + ) x_cpmd_input_RESP_DISCARD_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DISCARD. - ''') + """, + ) class x_cpmd_section_input_RESP_EIGENSYSTEM(MSection): - ''' + """ Not documented. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_EIGENSYSTEM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EIGENSYSTEM. - ''') + """, + ) x_cpmd_input_RESP_EIGENSYSTEM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EIGENSYSTEM. - ''') + """, + ) class x_cpmd_section_input_RESP_EPR(MSection): - ''' + """ Calculate the EPR $g$ tensor for the system. This routine accepts most, if not all, of the options available in the NMR routine (RESTART, NOSMOOTH, NOVIRTUAL, PSI0, RHO0, OVERLAP and FULL). Most important new options are: {\\bf FULL SMART}: does a @@ -7741,27 +8344,29 @@ class x_cpmd_section_input_RESP_EPR(MSection): V_{HARTREE} + V_{XC} $$ and $r_c$ (greater than 0) is read on the next line. {\\bf HYP}: calculates the hyperfine tensors. See epr\\_hyp.F for details. Contact Reinout.Declerck@UGent.be should you require further information. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_EPR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EPR. - ''') + """, + ) x_cpmd_input_RESP_EPR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EPR. - ''') + """, + ) class x_cpmd_section_input_RESP_FUKUI(MSection): - ''' + """ Calculates the response to a change of occupation number of chosen orbitals. The indices of these orbitals are read from the following nf lines ({\\bf default nf=1}). The orbitals themselves are not read from any \\refkeyword{RESTART} file but from @@ -7770,283 +8375,307 @@ class x_cpmd_section_input_RESP_FUKUI(MSection): \\refkeyword{RHOOUT} keyword. A weight can be associated with each orbital if given just after the orbital number, on the same line. It corresponds to saying how many electrons are put in or taken from the orbital. For example; - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_FUKUI_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FUKUI. - ''') + """, + ) x_cpmd_input_RESP_FUKUI_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FUKUI. - ''') + """, + ) class x_cpmd_section_input_RESP_HARDNESS(MSection): - ''' + """ Not documented. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_HARDNESS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HARDNESS. - ''') + """, + ) x_cpmd_input_RESP_HARDNESS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HARDNESS. - ''') + """, + ) class x_cpmd_section_input_RESP_INTERACTION(MSection): - ''' + """ Not documented. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_INTERACTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword INTERACTION. - ''') + """, + ) x_cpmd_input_RESP_INTERACTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword INTERACTION. - ''') + """, + ) class x_cpmd_section_input_RESP_KEEPREALSPACE(MSection): - ''' + """ Like the standard CPMD option, this keeps the C0 ground state wavefunctions in the direct space representation during the calculation. Can save a lot of time, but is incredibly memory intensive. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_KEEPREALSPACE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword KEEPREALSPACE. - ''') + """, + ) x_cpmd_input_RESP_KEEPREALSPACE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword KEEPREALSPACE. - ''') + """, + ) class x_cpmd_section_input_RESP_KPERT(MSection): - ''' + """ \\label{sec:kpert - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_KPERT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword KPERT. - ''') + """, + ) x_cpmd_input_RESP_KPERT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword KPERT. - ''') + """, + ) class x_cpmd_section_input_RESP_LANCZOS(MSection): - ''' + """ lanczos\\_dim iterations conv\\_threshold lanczos\\_dim= dimension of the vibrational d.o.f. iterations = no. of iterations desired for this run conv\\_threshold = threshold for convergence on eigenvectors CONTINUE = argument for continuing Lanczos diagonalization from a previous run (reads file LANCZOS\\_CONTINUE) DETAILS = argument for verbosity. prints a lot of stuff - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_LANCZOS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LANCZOS. - ''') + """, + ) x_cpmd_input_RESP_LANCZOS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LANCZOS. - ''') + """, + ) class x_cpmd_section_input_RESP_NMR(MSection): - ''' + """ Calculate the NMR chemical shielding tensors for the system. Most important option: FULL, does a calculation with improved accuracy for periodic systems but takes a lot of time. Isolated systems: Use OVERLAP and 0.1 (on next line) for the same effect. \\textit{Be careful for non-hydrogen nuclei.} The shielding is calculated without contribution from the core electrons. Contact sebastia@mpip-mainz.mpg.de for further details. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_NMR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NMR. - ''') + """, + ) x_cpmd_input_RESP_NMR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NMR. - ''') + """, + ) class x_cpmd_section_input_RESP_NOOPT(MSection): - ''' + """ Do not perform a ground state wfn optimization. Be sure the restarted wfn is at the BO-surface. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_NOOPT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NOOPT. - ''') + """, + ) x_cpmd_input_RESP_NOOPT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NOOPT. - ''') + """, + ) class x_cpmd_section_input_RESP_OACP(MSection): - ''' + """ Not documented. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_OACP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OACP. - ''') + """, + ) x_cpmd_input_RESP_OACP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OACP. - ''') + """, + ) class x_cpmd_section_input_RESP_PHONON(MSection): - ''' + """ Calculate the harmonic frequencies from perturbation theory. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_PHONON_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PHONON. - ''') + """, + ) x_cpmd_input_RESP_PHONON_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PHONON. - ''') + """, + ) class x_cpmd_section_input_RESP_POLAK(MSection): - ''' + """ Uses the Polak-Ribiere formula for the conjugate gradient algorithm. Can be safer in the convergence. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_POLAK_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword POLAK. - ''') + """, + ) x_cpmd_input_RESP_POLAK_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword POLAK. - ''') + """, + ) class x_cpmd_section_input_RESP_RAMAN(MSection): - ''' + """ Calculate the polarizability (also in periodic systems) as well as Born-charges and dipole moment. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_RAMAN_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword RAMAN. - ''') + """, + ) x_cpmd_input_RESP_RAMAN_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword RAMAN. - ''') + """, + ) class x_cpmd_section_input_RESP_TIGHTPREC(MSection): - ''' + """ Uses a harder preconditioner. For experts: The Hamiltonian is approximated by the kinetic energy, the G-diagonal Coulomb potential and the KS-energies. The number obtained this way must not be close to zero. This is achieved by smoothing it with @@ -8054,106 +8683,110 @@ class x_cpmd_section_input_RESP_TIGHTPREC(MSection): [{\\rm default}] $$ or $$x \\to f(x) = (x^2 + \\epsilon ^2)/x \\; \\; [{\\rm this \\; option}] $$ The HARD option conserves the sign of the approximate Hamiltonian whereas the default formula does never diverge. - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_TIGHTPREC_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TIGHTPREC. - ''') + """, + ) x_cpmd_input_RESP_TIGHTPREC_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TIGHTPREC. - ''') + """, + ) class x_cpmd_section_input_RESP(MSection): - ''' + """ Response calculations - ''' + """ m_def = Section(validate=False) x_cpmd_input_RESP_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section RESP even without a keyword. - ''') + """, + ) x_cpmd_section_input_RESP_DISCARD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_DISCARD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_DISCARD"), repeats=True + ) x_cpmd_section_input_RESP_EIGENSYSTEM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_EIGENSYSTEM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_EIGENSYSTEM"), repeats=True + ) x_cpmd_section_input_RESP_EPR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_EPR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_EPR"), repeats=True + ) x_cpmd_section_input_RESP_FUKUI = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_FUKUI'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_FUKUI"), repeats=True + ) x_cpmd_section_input_RESP_HARDNESS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_HARDNESS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_HARDNESS"), repeats=True + ) x_cpmd_section_input_RESP_INTERACTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_INTERACTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_INTERACTION"), repeats=True + ) x_cpmd_section_input_RESP_KEEPREALSPACE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_KEEPREALSPACE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_KEEPREALSPACE"), + repeats=True, + ) x_cpmd_section_input_RESP_KPERT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_KPERT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_KPERT"), repeats=True + ) x_cpmd_section_input_RESP_LANCZOS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_LANCZOS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_LANCZOS"), repeats=True + ) x_cpmd_section_input_RESP_NMR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_NMR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_NMR"), repeats=True + ) x_cpmd_section_input_RESP_NOOPT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_NOOPT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_NOOPT"), repeats=True + ) x_cpmd_section_input_RESP_OACP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_OACP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_OACP"), repeats=True + ) x_cpmd_section_input_RESP_PHONON = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_PHONON'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_PHONON"), repeats=True + ) x_cpmd_section_input_RESP_POLAK = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_POLAK'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_POLAK"), repeats=True + ) x_cpmd_section_input_RESP_RAMAN = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_RAMAN'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_RAMAN"), repeats=True + ) x_cpmd_section_input_RESP_TIGHTPREC = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP_TIGHTPREC'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP_TIGHTPREC"), repeats=True + ) class x_cpmd_section_input_SYSTEM_ACCEPTOR(MSection): - ''' + """ Set the \\refkeyword{CDFT} acceptor atoms. Parameter NACCR must be specified next to the keyword. NACCR $\\in [1,2,...,N]$ is the number of acceptor Atoms ($N$ being the total number of atoms). The indices of NACCR atoms separated by whitespaces are read @@ -8163,53 +8796,57 @@ class x_cpmd_section_input_SYSTEM_ACCEPTOR(MSection): together with CDFT HDA, CPMD performs a constrained HDA calculation with two different an ACCEPTOR group weights for the two states. {\\bf HDASINGLE} and {\\bf WMULT} are mutually exclusive. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_ACCEPTOR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ACCEPTOR. - ''') + """, + ) x_cpmd_input_SYSTEM_ACCEPTOR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ACCEPTOR. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_ANGSTROM(MSection): - ''' + """ The atomic coordinates and the supercell parameters and several other parameters are read in {\\AA}ngs\\-troms. {\\bf Default} is {\\bf atomic units} which are always used internally. Not supported for \\refkeyword{QMMM} calculations. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_ANGSTROM_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ANGSTROM. - ''') + """, + ) x_cpmd_input_SYSTEM_ANGSTROM_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ANGSTROM. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CELL(MSection): - ''' + """ The parameters specifying the super cell are read from the next line. Six numbers in the following order have to be provided: $a$, $b/a$, $c/a$, $\\cos \\alpha$, $\\cos \\beta$, $\\cos \\gamma$. For cubic phases, $a$ is the lattice parameter. CPMD will check @@ -8218,148 +8855,160 @@ class x_cpmd_section_input_SYSTEM_CELL(MSection): provide $\\alpha$, $\\beta$ and $\\gamma$ in degrees instead of their cosine. With the keyword {\\bf VECTORS}, the lattice vectors $a1$, $a2$, $a3$ are read from the next line instead of the 6 numbers. In this case the {\\bf SYMMETRY} keyword is not used. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CELL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CELL. - ''') + """, + ) x_cpmd_input_SYSTEM_CELL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CELL. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CHARGE(MSection): - ''' + """ The total charge of the system is read from the next line. \\textbf{Default} is \\defaultvalue{0}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CHARGE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CHARGE. - ''') + """, + ) x_cpmd_input_SYSTEM_CHARGE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CHARGE. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CHECK_SYMMETRY(MSection): - ''' + """ The precision with which the conformance of the \\refkeyword{CELL} parameters are checked against the (supercell) \\refkeyword{SYMMETRY} is read from the next line. With older versions of CPMD, redundant variables could be set to arbitrary values; now \\textbf{all} values have to conform. If you want the old behavior back, you can turn the check off by adding the keyword {\\bf OFF} or by providing a negative precision. \\textbf{Default} value is: \\defaultvalue{1.0e-4} - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CHECK_SYMMETRY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CHECK_SYMMETRY. - ''') + """, + ) x_cpmd_input_SYSTEM_CHECK_SYMMETRY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CHECK_SYMMETRY. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CLASSICAL_CELL(MSection): - ''' + """ Not documented. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CLASSICAL_CELL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CLASSICAL_CELL. - ''') + """, + ) x_cpmd_input_SYSTEM_CLASSICAL_CELL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CLASSICAL_CELL. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CLUSTER(MSection): - ''' + """ Isolated system such as a molecule or a cluster. Same effect as \\refkeyword{SYMMETRY} 0, but allows a non-orthorhombic cell. Only rarely useful. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CLUSTER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CLUSTER. - ''') + """, + ) x_cpmd_input_SYSTEM_CLUSTER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CLUSTER. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CONSTANT_CUTOFF(MSection): - ''' + """ Apply a cutoff function to the kinetic energy term~\\cite{bernasconi95} in order to simulate constant cutoff dynamics. The parameters $A$, $\\sigma$ and $E_o$ are read from the next line (all quantities have to be given in Rydbergs). $$ G^2 \\to G^2 + A \\left[ 1 + \\mbox{erf} \\left( {\\frac{1}{2} G^2 - \\frac{E_o}{\\sigma}} \\right) \\right] $$ - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CONSTANT_CUTOFF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CONSTANT_CUTOFF. - ''') + """, + ) x_cpmd_input_SYSTEM_CONSTANT_CUTOFF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CONSTANT_CUTOFF. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_COUPLINGS_LINRES(MSection): - ''' + """ Calculate non-adiabatic couplings~\\cite{nonadiabatic} using linear-response theory. With BRUTE FORCE, the linear response to the nuclear displacements along all Cartesian coordinates is calculated. With NVECT=$n$, at most $n$ cycles of the iterative scheme @@ -8371,27 +9020,29 @@ class x_cpmd_section_input_SYSTEM_COUPLINGS_LINRES(MSection): linear-response wavefunction (see \\cite{nonadiabatic}). Do not forget to include a \\&LINRES section in the input, even if the defaults are used. See \\refkeyword{COUPLINGS NSURF}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_COUPLINGS_LINRES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword COUPLINGS_LINRES. - ''') + """, + ) x_cpmd_input_SYSTEM_COUPLINGS_LINRES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword COUPLINGS_LINRES. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_COUPLINGS_NSURF(MSection): - ''' + """ Required for non-adiabatic couplings: the Kohn-Sham states involved in the transition. For the moment, only one pair of states makes sense, NSURF=1. On the following line, the orbital numbers of the two Kohn-Sham states and a weight of 1.0 are expected. For @@ -8400,129 +9051,139 @@ class x_cpmd_section_input_SYSTEM_COUPLINGS_NSURF(MSection): transitions, the local spin-density approximation (\\refkeyword{LSD}) with the occupation numbers (\\refkeyword{OCCUPATION}, \\refkeyword{NSUP}, \\refkeyword{STATES}) of the corresponding Slater transition-state density should be used. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_COUPLINGS_NSURF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword COUPLINGS_NSURF. - ''') + """, + ) x_cpmd_input_SYSTEM_COUPLINGS_NSURF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword COUPLINGS_NSURF. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_COUPLINGS(MSection): - ''' + """ Calculate non-adiabatic couplings~\\cite{nonadiabatic} using finite differences (FD and PROD are two different finite-difference approximations). The displacement $\\epsilon$ is expected in atomic units. If NAT=$n$ is given, the coupling vector acting on only a subset of $n$ atoms is calculated. In this case, a line containing $n$ atom sequence numbers is expected. See \\refkeyword{COUPLINGS NSURF}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_COUPLINGS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword COUPLINGS. - ''') + """, + ) x_cpmd_input_SYSTEM_COUPLINGS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword COUPLINGS. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_CUTOFF(MSection): - ''' + """ The {\\bf cutoff} for the plane wave basis in {\\bf Rydberg} is read from the next line. The keyword {\\bf SPHERICAL} is used with k points in order to have $|g + k|^2 < E_{cut}$ instead of $|g|^2 < E_{cut}$. This is the default. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_CUTOFF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword CUTOFF. - ''') + """, + ) x_cpmd_input_SYSTEM_CUTOFF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword CUTOFF. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_DENSITY_CUTOFF(MSection): - ''' + """ Set the plane wave energy cutoff for the density. The value is read from the next line. The density cutoff is usally automatically determined from the wavefunction \\refkeyword{CUTOFF} via the \\refkeyword{DUAL} factor. With the additional flag {\\bf NUMBER} the number of plane waves can be specified directly. This is useful to calculate bulk modulus or properties depending on the volume. The given energy cutoff has to be bigger than the one to have the required plane wave density number. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_DENSITY_CUTOFF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DENSITY_CUTOFF. - ''') + """, + ) x_cpmd_input_SYSTEM_DENSITY_CUTOFF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DENSITY_CUTOFF. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_DONOR(MSection): - ''' + """ Set the \\refkeyword{CDFT} donor atoms. Parameter NACCR must be specified next to the keyword. NDON $\\in \\mathbb{R}_+$ is the number of Donor Atoms ($N$ being the total number of atoms). If NDON$>0$ the indices of NDON atoms separated by whitespaces are read from the next line else only use an Acceptor group in the CDFT weight. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_DONOR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DONOR. - ''') + """, + ) x_cpmd_input_SYSTEM_DONOR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DONOR. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_DUAL(MSection): - ''' + """ The ratio between the wavefunction energy \\refkeyword{CUTOFF} and the \\refkeyword{DENSITY CUTOFF} is read from the next line. @@ -8535,441 +9196,477 @@ class x_cpmd_section_input_SYSTEM_DUAL(MSection): related parameters, {\\bf DUAL} needs to be increased to values of 6--10. Warning: You can have some trouble if you use the {\\bf DUAL} option with the symmetrization of the electronic density. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_DUAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DUAL. - ''') + """, + ) x_cpmd_input_SYSTEM_DUAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DUAL. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_ENERGY_PROFILE(MSection): - ''' + """ Perform an energy profile calculation at the end of a wavefunction optimization using the ROKS or ROSS methods. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_ENERGY_PROFILE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ENERGY_PROFILE. - ''') + """, + ) x_cpmd_input_SYSTEM_ENERGY_PROFILE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ENERGY_PROFILE. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_EXTERNAL_FIELD(MSection): - ''' + """ Applies an external electric field to the system using the Berry phase. The electric field vector in AU is read from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_EXTERNAL_FIELD_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXTERNAL_FIELD. - ''') + """, + ) x_cpmd_input_SYSTEM_EXTERNAL_FIELD_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXTERNAL_FIELD. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_HFX_CUTOFF(MSection): - ''' + """ Set an additional cutoff for wavefunctionand density to be used in the calculation of exact exchange. Cutoffs for wavefunctions and densities are read from the next line in Rydberg units. Defaults are the same cutoffs as for the normal calculation. Only lower cutoffs than the defaults can be specified. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_HFX_CUTOFF_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword HFX_CUTOFF. - ''') + """, + ) x_cpmd_input_SYSTEM_HFX_CUTOFF_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword HFX_CUTOFF. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_ISOTROPIC_CELL(MSection): - ''' + """ Specifies a constraint on the super cell in constant pressure dynamics or geometry optimization. The shape of the cell is held fixed, only the volume changes. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_ISOTROPIC_CELL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ISOTROPIC_CELL. - ''') + """, + ) x_cpmd_input_SYSTEM_ISOTROPIC_CELL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ISOTROPIC_CELL. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_KPOINTS(MSection): - ''' + """ With no option, read in the next line with the number of k-points and for each k-point, read the components in the Cartesian coordinates (units~$2\\pi/a$) and the weight. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_KPOINTS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword KPOINTS. - ''') + """, + ) x_cpmd_input_SYSTEM_KPOINTS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword KPOINTS. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION_LSETS(MSection): - ''' + """ Slater transition-state density with restricted open-shell Kohn-Sham (low spin excited state). Currently works only with ROKS but not with ROSS, ROOTHAAN, or CAS22. See Ref.~\\cite{lsets}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_LOW_SPIN_EXCITATION_LSETS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LOW_SPIN_EXCITATION_LSETS. - ''') + """, + ) x_cpmd_input_SYSTEM_LOW_SPIN_EXCITATION_LSETS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LOW_SPIN_EXCITATION_LSETS. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION(MSection): - ''' + """ Use the low spin excited state functional~\\cite{Frank98}. For ROKS calculations, see also the \\refkeyword{ROKS} keyword in the \\&CPMD-section. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_LOW_SPIN_EXCITATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LOW_SPIN_EXCITATION. - ''') + """, + ) x_cpmd_input_SYSTEM_LOW_SPIN_EXCITATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LOW_SPIN_EXCITATION. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_LSE_PARAMETERS(MSection): - ''' + """ Determines the energy expression used in LSE calculations. The two parameters LSEA and LSEB are read from the next line. \\[E = \\mbox{LSEA} \\cdot E(Mixed) + \\mbox{LSEB} \\cdot E(Triplet)\\] The default (LSEA $= 2$ and LSEB $= 1$) corresponds to singlet symmetry. For the lowest triplet state, the \\refkeyword{LSE PARAMETERS} must be set to 0 and 1 (zero times mixed state plus triplet). See ref \\cite{Frank98} for a description of the method. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_LSE_PARAMETERS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LSE_PARAMETERS. - ''') + """, + ) x_cpmd_input_SYSTEM_LSE_PARAMETERS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LSE_PARAMETERS. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_MESH(MSection): - ''' + """ The number of {\\bf real space mesh} points in $x-$, $y-$ and $z-$direction is read from the next line. If the values provided by the user are not compatible with the plane-wave cutoff or the requirements of the FFT routines the program chooses the next bigger valid numbers. {\\bf Default} are the {\\bf minimal values} compatible with the energy cutoff and the {\\bf FFT} requirements. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_MESH_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MESH. - ''') + """, + ) x_cpmd_input_SYSTEM_MESH_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MESH. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_MULTIPLICITY(MSection): - ''' + """ This keyword only applies to LSD calculations. The multiplicity (2$S$+1) is read from the next line. {\\bf Default} is the {\\bf smallest possible} multiplicity. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_MULTIPLICITY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MULTIPLICITY. - ''') + """, + ) x_cpmd_input_SYSTEM_MULTIPLICITY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MULTIPLICITY. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_NSUP(MSection): - ''' + """ The number of states of the same spin as the first state is read from the next line. This keyword makes only sense in spin-polarized calculations (keyword \\refkeyword{LSD}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_NSUP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword NSUP. - ''') + """, + ) x_cpmd_input_SYSTEM_NSUP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword NSUP. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_OCCUPATION(MSection): - ''' + """ The occupation numbers are read from the next line. This keyword must be preceeded by \\refkeyword{STATES}. The FIXED option fixes the occupation numbers for the diagonalization scheme, otherwise this option is meaningless. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_OCCUPATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword OCCUPATION. - ''') + """, + ) x_cpmd_input_SYSTEM_OCCUPATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword OCCUPATION. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_POINT_GROUP(MSection): - ''' + """ The point group symmetry of the system can be specified in the next line. With the keyword {\\sl AUTO} in the next line, the space group is determined automatically. This affects the calculation of nuclear forces and ionic positions. The electronic density and nuclear forces are symmetrized in function of point group symmetry. The group number is read from the next line. Crystal symmetry groups: - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_POINT_GROUP_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword POINT_GROUP. - ''') + """, + ) x_cpmd_input_SYSTEM_POINT_GROUP_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword POINT_GROUP. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_POISSON_SOLVER(MSection): - ''' + """ This keyword determines the method for the solution of the Poisson equation for isolated systems. Either Hockney's method~\\cite{Hockney70} or Martyna and Tuckerman's method~\\cite{Martyna99} is used. The smoothing parameter (for Hockney's method) or $L \\times \\alpha$ for Tuckerman's method can be read from the next line using the {\\bf PARAMETER} keyword. For more information about the usage of this parameter see also section \\ref{hints:symm0}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_POISSON_SOLVER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword POISSON_SOLVER. - ''') + """, + ) x_cpmd_input_SYSTEM_POISSON_SOLVER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword POISSON_SOLVER. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_POLYMER(MSection): - ''' + """ Assume {\\bf periodic boundary} condition in {\\bf $x$-direction}. % You also need to set the 'cluster option' (i.e. \\refkeyword{SYMMETRY} 0). - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_POLYMER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword POLYMER. - ''') + """, + ) x_cpmd_input_SYSTEM_POLYMER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword POLYMER. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_PRESSURE(MSection): - ''' + """ The {\\bf external pressure} on the system is read from the next line (in {\\bf kbar}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_PRESSURE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PRESSURE. - ''') + """, + ) x_cpmd_input_SYSTEM_PRESSURE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PRESSURE. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_REFERENCE_CELL(MSection): - ''' + """ This cell is used to calculate the Miller indices in a constant pressure simulation. This keyword is only active together with the option {\\bf PARRINELLO-RAHMAN}. The parameters specifying the reference (super) cell are read from the next line. Six numbers in the following order have to be provided: $a$, $b/a$, $c/a$, $\\cos \\alpha$, $\\cos \\beta$, $\\cos \\gamma$. The keywords {\\bf ABSOLUTE} and {\\bf DEGREE } are described in {\\bf CELL} option. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_REFERENCE_CELL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REFERENCE_CELL. - ''') + """, + ) x_cpmd_input_SYSTEM_REFERENCE_CELL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REFERENCE_CELL. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_SCALE(MSection): - ''' + """ {\\bf Scale atomic coordinates} of the system with the lattice constants (see {\\bf CELL}). You can indicate an additional scale for each axis with the options {\\bf SX}, {\\bf SY} and {\\bf SZ}. For instance, if you indicate SX=sxscale, you give your @@ -8980,100 +9677,108 @@ class x_cpmd_section_input_SYSTEM_SCALE(MSection): lattice constants. If this keyword is present an output file GEOMETRY.scale is written. This file contains the lattice vectors in \\AA and atomic units together with the atomic coordinates in the direct lattice basis. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_SCALE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SCALE. - ''') + """, + ) x_cpmd_input_SYSTEM_SCALE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SCALE. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_STATES(MSection): - ''' + """ The number of states used in the calculation is read from the next line. This keyword has to preceed the keyword {\\bf OCCUPATION}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_STATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword STATES. - ''') + """, + ) x_cpmd_input_SYSTEM_STATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword STATES. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_SURFACE(MSection): - ''' + """ By default, if nothing is specified, assume {\\bf periodic boundary} condition in {\\bf $x$- and $y$-direction}. With the extra keywords {\\sl XY}, {\\sl YZ} or {\\sl ZX}, the periodicity of the systems is assumed to be along $(x,y)$, $(y,z)$ or $(z,x)$, respectively. % You also need to set the 'cluster option' (i.e. \\refkeyword{SYMMETRY} 0). - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_SURFACE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SURFACE. - ''') + """, + ) x_cpmd_input_SYSTEM_SURFACE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SURFACE. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_SYMMETRIZE_COORDINATES(MSection): - ''' + """ {\\bf Input coordinates} are {\\bf symmetrized} according to the {\\bf point group} specified. This only makes sense when the structure already is close to the symmetric one. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_SYMMETRIZE_COORDINATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SYMMETRIZE_COORDINATES. - ''') + """, + ) x_cpmd_input_SYSTEM_SYMMETRIZE_COORDINATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SYMMETRIZE_COORDINATES. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_SYMMETRY(MSection): - ''' + """ The {\\bf supercell symmetry type} is read from the next line. You can put a number or a keyword. {\\small \\begin{description} \\renewcommand{\\makelabel}[1]{\\hbox to 2em {\\hfill#1}} \\item[0] {\\bf ISOLATED} system in a cubic/orthorhombic @@ -9089,306 +9794,337 @@ class x_cpmd_section_input_SYSTEM_SYMMETRY(MSection): BCT}) \\item[8] {\\bf ORTHORHOMBIC} \\item[12] {\\bf MONOCLINIC} \\item[14] {\\bf TRICLINIC} \\end{description} } Warning: This keyword should not be used with the keyword {\\bf CELL VECTORS}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_SYMMETRY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword SYMMETRY. - ''') + """, + ) x_cpmd_input_SYSTEM_SYMMETRY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword SYMMETRY. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_TESR(MSection): - ''' + """ The number of additional supercells included in the real space sum for the Ewald term is read from the next line. Default is 0, for small unit cells larger values (up to 8) have to be used. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_TESR_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword TESR. - ''') + """, + ) x_cpmd_input_SYSTEM_TESR_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword TESR. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_WCUT(MSection): - ''' + """ Set the radial \\refkeyword{CDFT} weight cutoff for all atom species to CUT, which is specified next to the keyword. Default is a species specific cutoff at the distance where the magnitude of the respective promolecular density is smaller than $10^{-6}$. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_WCUT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WCUT. - ''') + """, + ) x_cpmd_input_SYSTEM_WCUT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WCUT. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_WGAUSS(MSection): - ''' + """ Use Gaussian weight functions instead of Hirshfeld promolecular orbitals in the \\refkeyword{CDFT} weight. Parameter NWG is specified next to the keyword and has to be equal to the number of different atom species in the calculation. The Gaussian widths $\\sigma_i$ of the species $i$ are read from subsequent lines. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_WGAUSS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WGAUSS. - ''') + """, + ) x_cpmd_input_SYSTEM_WGAUSS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WGAUSS. - ''') + """, + ) class x_cpmd_section_input_SYSTEM_ZFLEXIBLE_CELL(MSection): - ''' + """ Specifies a constraint on the super cell in constant pressure dynamics or geometry optimizations. The supercell may only shrink or grow in z-direction. Should be very useful for ``dense slab'' configurations, e.g. a water layer between solid slabs. \\textbf{Please note:} this is by no means intended to give a statistically meaningful ensemble, but merely to provide a tool for efficient equilibration of a specific class of system. - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_ZFLEXIBLE_CELL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ZFLEXIBLE_CELL. - ''') + """, + ) x_cpmd_input_SYSTEM_ZFLEXIBLE_CELL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ZFLEXIBLE_CELL. - ''') + """, + ) class x_cpmd_section_input_SYSTEM(MSection): - ''' + """ Simulation cell and plane wave parameters (\\textbf{required}). - ''' + """ m_def = Section(validate=False) x_cpmd_input_SYSTEM_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section SYSTEM even without a keyword. - ''') + """, + ) x_cpmd_section_input_SYSTEM_ACCEPTOR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_ACCEPTOR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_ACCEPTOR"), repeats=True + ) x_cpmd_section_input_SYSTEM_ANGSTROM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_ANGSTROM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_ANGSTROM"), repeats=True + ) x_cpmd_section_input_SYSTEM_CELL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CELL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CELL"), repeats=True + ) x_cpmd_section_input_SYSTEM_CHARGE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CHARGE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CHARGE"), repeats=True + ) x_cpmd_section_input_SYSTEM_CHECK_SYMMETRY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CHECK_SYMMETRY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CHECK_SYMMETRY"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_CLASSICAL_CELL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CLASSICAL_CELL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CLASSICAL_CELL"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_CLUSTER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CLUSTER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CLUSTER"), repeats=True + ) x_cpmd_section_input_SYSTEM_CONSTANT_CUTOFF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CONSTANT_CUTOFF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CONSTANT_CUTOFF"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_COUPLINGS_LINRES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_COUPLINGS_LINRES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_COUPLINGS_LINRES"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_COUPLINGS_NSURF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_COUPLINGS_NSURF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_COUPLINGS_NSURF"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_COUPLINGS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_COUPLINGS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_COUPLINGS"), repeats=True + ) x_cpmd_section_input_SYSTEM_CUTOFF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_CUTOFF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_CUTOFF"), repeats=True + ) x_cpmd_section_input_SYSTEM_DENSITY_CUTOFF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_DENSITY_CUTOFF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_DENSITY_CUTOFF"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_DONOR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_DONOR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_DONOR"), repeats=True + ) x_cpmd_section_input_SYSTEM_DUAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_DUAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_DUAL"), repeats=True + ) x_cpmd_section_input_SYSTEM_ENERGY_PROFILE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_ENERGY_PROFILE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_ENERGY_PROFILE"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_EXTERNAL_FIELD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_EXTERNAL_FIELD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_EXTERNAL_FIELD"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_HFX_CUTOFF = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_HFX_CUTOFF'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_HFX_CUTOFF"), repeats=True + ) x_cpmd_section_input_SYSTEM_ISOTROPIC_CELL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_ISOTROPIC_CELL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_ISOTROPIC_CELL"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_KPOINTS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_KPOINTS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_KPOINTS"), repeats=True + ) x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION_LSETS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION_LSETS'), - repeats=True) + sub_section=SectionProxy( + "x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION_LSETS" + ), + repeats=True, + ) x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_LOW_SPIN_EXCITATION"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_LSE_PARAMETERS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_LSE_PARAMETERS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_LSE_PARAMETERS"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_MESH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_MESH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_MESH"), repeats=True + ) x_cpmd_section_input_SYSTEM_MULTIPLICITY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_MULTIPLICITY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_MULTIPLICITY"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_NSUP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_NSUP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_NSUP"), repeats=True + ) x_cpmd_section_input_SYSTEM_OCCUPATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_OCCUPATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_OCCUPATION"), repeats=True + ) x_cpmd_section_input_SYSTEM_POINT_GROUP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_POINT_GROUP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_POINT_GROUP"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_POISSON_SOLVER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_POISSON_SOLVER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_POISSON_SOLVER"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_POLYMER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_POLYMER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_POLYMER"), repeats=True + ) x_cpmd_section_input_SYSTEM_PRESSURE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_PRESSURE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_PRESSURE"), repeats=True + ) x_cpmd_section_input_SYSTEM_REFERENCE_CELL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_REFERENCE_CELL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_REFERENCE_CELL"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_SCALE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_SCALE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_SCALE"), repeats=True + ) x_cpmd_section_input_SYSTEM_STATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_STATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_STATES"), repeats=True + ) x_cpmd_section_input_SYSTEM_SURFACE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_SURFACE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_SURFACE"), repeats=True + ) x_cpmd_section_input_SYSTEM_SYMMETRIZE_COORDINATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_SYMMETRIZE_COORDINATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_SYMMETRIZE_COORDINATES"), + repeats=True, + ) x_cpmd_section_input_SYSTEM_SYMMETRY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_SYMMETRY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_SYMMETRY"), repeats=True + ) x_cpmd_section_input_SYSTEM_TESR = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_TESR'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_TESR"), repeats=True + ) x_cpmd_section_input_SYSTEM_WCUT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_WCUT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_WCUT"), repeats=True + ) x_cpmd_section_input_SYSTEM_WGAUSS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_WGAUSS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_WGAUSS"), repeats=True + ) x_cpmd_section_input_SYSTEM_ZFLEXIBLE_CELL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM_ZFLEXIBLE_CELL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM_ZFLEXIBLE_CELL"), + repeats=True, + ) class x_cpmd_section_input_TDDFT_DAVIDSON_RDIIS(MSection): - ''' + """ This keyword controls the residual DIIS method for TDDFT diagonalization. This method is used at the end of a DAVIDSON diagonalization for roots that are not yet converged. The first number gives the maxium iterations, the second the maximum allowed restarts, @@ -9396,27 +10132,29 @@ class x_cpmd_section_input_TDDFT_DAVIDSON_RDIIS(MSection): \\textbf{Default} values are \\defaultvalue{20}, \\defaultvalue{3} and \\defaultvalue{$10^{-3}$}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_DAVIDSON_RDIIS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DAVIDSON_RDIIS. - ''') + """, + ) x_cpmd_input_TDDFT_DAVIDSON_RDIIS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DAVIDSON_RDIIS. - ''') + """, + ) class x_cpmd_section_input_TDDFT_DIAGONALIZER(MSection): - ''' + """ Specify the iterative diagonalizer to be used. \\textbf{Defaults} are {\\sl DAVIDSON} for the Tamm--Dancoff method, {\\sl NONHERMIT} (a @@ -9425,27 +10163,29 @@ class x_cpmd_section_input_TDDFT_DIAGONALIZER(MSection): PCG method only. It forces a line minimization with quadratic search. \\textbf{Default} is \\defaultvalue{not to use line minimization}. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_DIAGONALIZER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword DIAGONALIZER. - ''') + """, + ) x_cpmd_input_TDDFT_DIAGONALIZER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword DIAGONALIZER. - ''') + """, + ) class x_cpmd_section_input_TDDFT_EXTPOT(MSection): - ''' + """ Non adiabatic (nonadiabatic, non-adiabatic) Tully's trajectory surface hopping dynamics using TDDFT energies and forces, coupled with an external field~\\cite{tavernelli2010}. To be used together with the keywords @@ -9470,145 +10210,157 @@ class x_cpmd_section_input_TDDFT_EXTPOT(MSection): potential is used for the coupling with the amplitudes equations. Be careful to use a time step small enough for a correct description of the pulse. The pulse is printed in the file SH\\_EXTPT.dat (step, A(t), E(t)). - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_EXTPOT_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword EXTPOT. - ''') + """, + ) x_cpmd_input_TDDFT_EXTPOT_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword EXTPOT. - ''') + """, + ) class x_cpmd_section_input_TDDFT_FORCE_STATE(MSection): - ''' + """ The state for which the forces are calculated is read from the next line. Default is for state 1. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_FORCE_STATE_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword FORCE_STATE. - ''') + """, + ) x_cpmd_input_TDDFT_FORCE_STATE_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword FORCE_STATE. - ''') + """, + ) class x_cpmd_section_input_TDDFT_LOCALIZATION(MSection): - ''' + """ Use localized orbitals in the TDDFT calculation. Default is to use canonical orbitals. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_LOCALIZATION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword LOCALIZATION. - ''') + """, + ) x_cpmd_input_TDDFT_LOCALIZATION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword LOCALIZATION. - ''') + """, + ) class x_cpmd_section_input_TDDFT_MOLECULAR_STATES(MSection): - ''' + """ Calculate and group Kohn--Sham orbitals into molecular states for a TDDFT calculation. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_MOLECULAR_STATES_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword MOLECULAR_STATES. - ''') + """, + ) x_cpmd_input_TDDFT_MOLECULAR_STATES_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword MOLECULAR_STATES. - ''') + """, + ) class x_cpmd_section_input_TDDFT_PCG_PARAMETER(MSection): - ''' + """ The parameters for the PCG diagonalization are read from the next line. If {\\sl MINIMIZE} was used in the \\refkeyword{DIAGONALIZER} then the total number of steps (default 100) and the convergence criteria (default $10^{-8}$) are read from the next line. Without minimization in addition the step length (default 0.5) has also to be given. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_PCG_PARAMETER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PCG_PARAMETER. - ''') + """, + ) x_cpmd_input_TDDFT_PCG_PARAMETER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PCG_PARAMETER. - ''') + """, + ) class x_cpmd_section_input_TDDFT_PROPERTY(MSection): - ''' + """ Calculate properties of excited states at the end of an \\refkeyword{ELECTRONIC SPECTRA} calculations. default is to calculate properties for all states. Adding the keyword {\\bf STATE} allows to restrict the calculation to only one state. The number of the state is read from the next line. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_PROPERTY_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword PROPERTY. - ''') + """, + ) x_cpmd_input_TDDFT_PROPERTY_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword PROPERTY. - ''') + """, + ) class x_cpmd_section_input_TDDFT_REORDER_LOCAL(MSection): - ''' + """ Reorder the localized states according to a distance criteria. The number of reference atoms is read from the next line. On the following line the position of the reference atoms within the set of all atoms has to be given. The keyword \\refkeyword{LOCALIZE} @@ -9616,27 +10368,29 @@ class x_cpmd_section_input_TDDFT_REORDER_LOCAL(MSection): the reference atoms is calculated and the states are ordered with respect to decreasing distance. Together with the {\\sl SUBSPACE} option in a \\refkeyword{TAMM- DANCOFF} calculation this can be used to select specific states for a calculation. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_REORDER_LOCAL_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REORDER_LOCAL. - ''') + """, + ) x_cpmd_input_TDDFT_REORDER_LOCAL_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REORDER_LOCAL. - ''') + """, + ) class x_cpmd_section_input_TDDFT_REORDER(MSection): - ''' + """ Reorder the canonical Kohn--Sham orbitals prior to a TDDFT calculation. The number of states to be reordered is read from the next line. On the following line the final rank of each states has to be given. The first number given corresponds to the HOMO, @@ -9645,111 +10399,123 @@ class x_cpmd_section_input_TDDFT_REORDER(MSection): SUBSPACE} option in a \\refkeyword{TAMM-DANCOFF} calculation to select arbitrary states. Default is to use the ordering of states according to the Kohn--Sham eigenvalues. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_REORDER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword REORDER. - ''') + """, + ) x_cpmd_input_TDDFT_REORDER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword REORDER. - ''') + """, + ) class x_cpmd_section_input_TDDFT_ROTATION_PARAMETER(MSection): - ''' + """ The parameters for the orbital rotations in an optimized subspace calculation (see \\refkeyword{TAMM-DANCOFF}) are read from the next line. The total number of iterations (default 50), the convergence criteria (default $10^{-6}$) and the step size (default 0.5) have to be given. - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_ROTATION_PARAMETER_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword ROTATION_PARAMETER. - ''') + """, + ) x_cpmd_input_TDDFT_ROTATION_PARAMETER_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword ROTATION_PARAMETER. - ''') + """, + ) class x_cpmd_section_input_TDDFT(MSection): - ''' + """ Input for TDDFT calculations - ''' + """ m_def = Section(validate=False) x_cpmd_input_TDDFT_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section TDDFT even without a keyword. - ''') + """, + ) x_cpmd_section_input_TDDFT_DAVIDSON_RDIIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_DAVIDSON_RDIIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_DAVIDSON_RDIIS"), + repeats=True, + ) x_cpmd_section_input_TDDFT_DIAGONALIZER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_DIAGONALIZER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_DIAGONALIZER"), + repeats=True, + ) x_cpmd_section_input_TDDFT_EXTPOT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_EXTPOT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_EXTPOT"), repeats=True + ) x_cpmd_section_input_TDDFT_FORCE_STATE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_FORCE_STATE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_FORCE_STATE"), repeats=True + ) x_cpmd_section_input_TDDFT_LOCALIZATION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_LOCALIZATION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_LOCALIZATION"), + repeats=True, + ) x_cpmd_section_input_TDDFT_MOLECULAR_STATES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_MOLECULAR_STATES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_MOLECULAR_STATES"), + repeats=True, + ) x_cpmd_section_input_TDDFT_PCG_PARAMETER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_PCG_PARAMETER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_PCG_PARAMETER"), + repeats=True, + ) x_cpmd_section_input_TDDFT_PROPERTY = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_PROPERTY'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_PROPERTY"), repeats=True + ) x_cpmd_section_input_TDDFT_REORDER_LOCAL = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_REORDER_LOCAL'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_REORDER_LOCAL"), + repeats=True, + ) x_cpmd_section_input_TDDFT_REORDER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_REORDER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_REORDER"), repeats=True + ) x_cpmd_section_input_TDDFT_ROTATION_PARAMETER = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT_ROTATION_PARAMETER'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT_ROTATION_PARAMETER"), + repeats=True, + ) class x_cpmd_section_input_VDW_VDW_PARAMETERS(MSection): - ''' + """ Parameters for empirical van der Waals correction schemes are set with the keyword. This requires the \\refkeyword{VDW CORRECTION} keyword to be set in the \\&CPMD section. For Grimme's {\\bf DFT-D2} type (see below) an automatic assignment of the parameters @@ -9786,27 +10552,29 @@ class x_cpmd_section_input_VDW_VDW_PARAMETERS(MSection): The following line has to be added {S6GRIMME} and the type of functional is read from the next line. One of the following labels has to be provided: {BP86, BLYP, B3LYP, PBE, TPSS, REVPBE, PBE0}. Note that Grimme vdW does not support other functionals. - ''' + """ m_def = Section(validate=False) x_cpmd_input_VDW_VDW_PARAMETERS_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword VDW_PARAMETERS. - ''') + """, + ) x_cpmd_input_VDW_VDW_PARAMETERS_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword VDW_PARAMETERS. - ''') + """, + ) class x_cpmd_section_input_VDW_WANNIER_CORRECTION(MSection): - ''' + """ Between these opening and ending keywords, the partitioning of the system and the calculation procedure must be selected. Three implementatons are available for partitioning the system: (1) choosing a {\\it zlevel}, namely a z coordinate separating @@ -9829,133 +10597,137 @@ class x_cpmd_section_input_VDW_WANNIER_CORRECTION(MSection): not including vdW corrections). For a6 the suggested parameter is 20.0 \\cite{molphy}. Note that the two possible vdW options, EMPIRICAL CORRECTION and WANNIER CORRECTION are mutually exclusive. - ''' + """ m_def = Section(validate=False) x_cpmd_input_VDW_WANNIER_CORRECTION_options = Quantity( type=str, shape=[], - description=''' + description=""" The options given for keyword WANNIER_CORRECTION. - ''') + """, + ) x_cpmd_input_VDW_WANNIER_CORRECTION_parameters = Quantity( type=str, shape=[], - description=''' + description=""" The parameters for keyword WANNIER_CORRECTION. - ''') + """, + ) class x_cpmd_section_input_VDW(MSection): - ''' + """ Empirical van der Waals correction or van der Waals interaction based on Wannier functions - ''' + """ m_def = Section(validate=False) x_cpmd_input_VDW_default_keyword = Quantity( type=str, shape=[], - description=''' + description=""" The parameters that are present in the section VDW even without a keyword. - ''') + """, + ) x_cpmd_section_input_VDW_VDW_PARAMETERS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_VDW_VDW_PARAMETERS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_VDW_VDW_PARAMETERS"), + repeats=True, + ) x_cpmd_section_input_VDW_WANNIER_CORRECTION = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_VDW_WANNIER_CORRECTION'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_VDW_WANNIER_CORRECTION"), + repeats=True, + ) class x_cpmd_section_input(MSection): - ''' + """ Contains the CPMD input file contents. - ''' + """ m_def = Section(validate=False) x_cpmd_section_input_ATOMS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_ATOMS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_ATOMS"), repeats=True + ) x_cpmd_section_input_BASIS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_BASIS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_BASIS"), repeats=True + ) x_cpmd_section_input_CLASSIC = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CLASSIC'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CLASSIC"), repeats=True + ) x_cpmd_section_input_CPMD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_CPMD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_CPMD"), repeats=True + ) x_cpmd_section_input_DFT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_DFT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_DFT"), repeats=True + ) x_cpmd_section_input_EXTE = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_EXTE'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_EXTE"), repeats=True + ) x_cpmd_section_input_HARDNESS = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_HARDNESS'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_HARDNESS"), repeats=True + ) x_cpmd_section_input_INFO = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_INFO'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_INFO"), repeats=True + ) x_cpmd_section_input_LINRES = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_LINRES'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_LINRES"), repeats=True + ) x_cpmd_section_input_PATH = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PATH'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PATH"), repeats=True + ) x_cpmd_section_input_PIMD = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PIMD'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PIMD"), repeats=True + ) x_cpmd_section_input_PROP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PROP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PROP"), repeats=True + ) x_cpmd_section_input_PTDDFT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_PTDDFT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_PTDDFT"), repeats=True + ) x_cpmd_section_input_QMMM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_QMMM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_QMMM"), repeats=True + ) x_cpmd_section_input_RESP = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_RESP'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_RESP"), repeats=True + ) x_cpmd_section_input_SYSTEM = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_SYSTEM'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_SYSTEM"), repeats=True + ) x_cpmd_section_input_TDDFT = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_TDDFT'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_TDDFT"), repeats=True + ) x_cpmd_section_input_VDW = SubSection( - sub_section=SectionProxy('x_cpmd_section_input_VDW'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input_VDW"), repeats=True + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_section_input = SubSection( - sub_section=SectionProxy('x_cpmd_section_input'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_input"), repeats=True + ) diff --git a/electronicparsers/cpmd/metainfo/cpmd_general.py b/electronicparsers/cpmd/metainfo/cpmd_general.py index b1125ae7..ac45e5aa 100644 --- a/electronicparsers/cpmd/metainfo/cpmd_general.py +++ b/electronicparsers/cpmd/metainfo/cpmd_general.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import simulationworkflowschema import runschema.run # pylint: disable=unused-import @@ -33,867 +41,948 @@ class x_cpmd_section_start_information(MSection): - ''' + """ Contains information about the starting conditions for this run - ''' + """ m_def = Section(validate=False) x_cpmd_start_datetime = Quantity( type=str, shape=[], - description=''' + description=""" CPMD run start time and date - ''') + """, + ) x_cpmd_input_filename = Quantity( type=str, shape=[], - description=''' + description=""" CPMD input file name. - ''') + """, + ) x_cpmd_compilation_date = Quantity( type=str, shape=[], - description=''' + description=""" CPMD compilation date. - ''') + """, + ) x_cpmd_process_id = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The process id for this calculation. - ''') + """, + ) x_cpmd_run_user_name = Quantity( type=str, shape=[], - description=''' + description=""" The user who launched this calculation. - ''') + """, + ) x_cpmd_run_host_name = Quantity( type=str, shape=[], - description=''' + description=""" The host on which this calculation was made on. - ''') + """, + ) class x_cpmd_section_run_type_information(MSection): - ''' + """ Contains information about the run type. - ''' + """ m_def = Section(validate=False) x_cpmd_time_step_ions = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The time step for ions. - ''') + """, + ) x_cpmd_time_step_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The time step for electrons. - ''') + """, + ) x_cpmd_geo_opt_method = Quantity( type=str, shape=[], - description=''' + description=""" The geometry optimization method. - ''') + """, + ) x_cpmd_max_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The maximum number of steps requested. In MD, this is the number of MD steps, in single point calculations this is the number of scf cycles, in geometry optimization this is the number of optimization steps. - ''') + """, + ) x_cpmd_ion_temperature_control = Quantity( type=str, shape=[], - description=''' + description=""" The temperature control method for ion dynamics. - ''') + """, + ) class x_cpmd_section_xc_information(MSection): - ''' + """ Contains information about the exchange-correlation functional. - ''' + """ m_def = Section(validate=False) class x_cpmd_section_system_information(MSection): - ''' + """ Contains information about the system. - ''' + """ m_def = Section(validate=False) class x_cpmd_section_pseudopotential_information(MSection): - ''' + """ Contains information about the pseudopotentials. - ''' + """ m_def = Section(validate=False) class x_cpmd_section_atom_kinds(MSection): - ''' + """ Contains information about the atomic kinds present in the calculation. - ''' + """ m_def = Section(validate=False) x_cpmd_section_atom_kind = SubSection( - sub_section=SectionProxy('x_cpmd_section_atom_kind'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_atom_kind"), repeats=True + ) class x_cpmd_section_atom_kind(MSection): - ''' + """ Contains information about one atomic kind. - ''' + """ m_def = Section(validate=False) x_cpmd_atom_kind_label = Quantity( type=str, shape=[], - description=''' + description=""" The label of the atomic kind. - ''') + """, + ) x_cpmd_atom_kind_mass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mass of the atomic kind. - ''') + """, + ) x_cpmd_atom_kind_raggio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The width of the ionic charge distribution (RAGGIO) of the atomic kind. - ''') + """, + ) x_cpmd_atom_kind_nlcc = Quantity( type=str, shape=[], - description=''' + description=""" The nonlinear core correction (NLCC) of the atomic kind. - ''') + """, + ) x_cpmd_atom_kind_pseudopotential_l = Quantity( type=str, shape=[], - description=''' + description=""" The angular part of the pseudopotential for the atomic kind. - ''') + """, + ) x_cpmd_atom_kind_pseudopotential_type = Quantity( type=str, shape=[], - description=''' + description=""" The type of the pseudopotential for the atomic kind. - ''') + """, + ) class x_cpmd_section_supercell(MSection): - ''' + """ Contains information about the supercell. - ''' + """ m_def = Section(validate=False) x_cpmd_cell_symmetry = Quantity( type=str, shape=[], - description=''' + description=""" The symmetry of the cell. - ''') + """, + ) x_cpmd_cell_lattice_constant = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The cell lattice constant. - ''') + """, + ) x_cpmd_cell_volume = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The cell volume. - ''') + """, + ) x_cpmd_cell_dimension = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" The cell dimension. - ''') + """, + ) x_cpmd_lattice_vector_A1 = Quantity( type=str, shape=[], - description=''' + description=""" Lattice vector A1 - ''') + """, + ) x_cpmd_lattice_vector_A2 = Quantity( type=str, shape=[], - description=''' + description=""" Lattice vector A2 - ''') + """, + ) x_cpmd_lattice_vector_A3 = Quantity( type=str, shape=[], - description=''' + description=""" Lattice vector A3 - ''') + """, + ) x_cpmd_reciprocal_lattice_vector_B1 = Quantity( type=str, shape=[], - description=''' + description=""" Reciprocal lattice vector B1 - ''') + """, + ) x_cpmd_reciprocal_lattice_vector_B2 = Quantity( type=str, shape=[], - description=''' + description=""" Reciprocal lattice vector B2 - ''') + """, + ) x_cpmd_reciprocal_lattice_vector_B3 = Quantity( type=str, shape=[], - description=''' + description=""" Reciprocal lattice vector B3 - ''') + """, + ) x_cpmd_real_space_mesh = Quantity( type=str, shape=[], - description=''' + description=""" Number of points in the real space mesh. - ''') + """, + ) x_cpmd_wave_function_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Place wave cutoff energy for wave function. - ''') + """, + ) x_cpmd_density_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Place wave cutoff energy for density. - ''') + """, + ) x_cpmd_number_of_planewaves_density = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of plane waves for density cutoff. - ''') + """, + ) x_cpmd_number_of_planewaves_wave_function = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of plane waves for wave_function cutoff. - ''') + """, + ) class x_cpmd_section_wave_function_initialization(MSection): - ''' + """ Contains information about the wave function initialization - ''' + """ m_def = Section(validate=False) class x_cpmd_section_scf(MSection): - ''' + """ Contains information about self-consistent field calculation - ''' + """ m_def = Section(validate=False) x_cpmd_section_scf_iteration = SubSection( - sub_section=SectionProxy('x_cpmd_section_scf_iteration'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_scf_iteration"), repeats=True + ) class x_cpmd_section_scf_iteration(MSection): - ''' + """ Contains information about the self-consistent field iteration within a wavefunction optimization. - ''' + """ m_def = Section(validate=False) x_cpmd_scf_nfi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The scf step number (NFI). - ''') + """, + ) x_cpmd_scf_gemax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Largest off-diagonal component (GEMAX) during SCF step. - ''') + """, + ) x_cpmd_scf_cnorm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Average of the off-diagonal components (CNORM) during SCF step. - ''') + """, + ) x_cpmd_scf_etot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The total energy (ETOT) during SCF step. - ''') + """, + ) x_cpmd_scf_detot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The difference in total energy to the previous SCF energy (DETOT). - ''') + """, + ) x_cpmd_scf_tcpu = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The CPU time used during SCF step (TCPU). - ''') + """, + ) class x_cpmd_section_final_results(MSection): - ''' + """ The final results after a single point calculation. - ''' + """ m_def = Section(validate=False) class x_cpmd_section_geo_opt_initialization(MSection): - ''' + """ Geometry optimization initialization information. - ''' + """ m_def = Section(validate=False) x_cpmd_total_number_of_molecular_structures = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of molecular structures. - ''') + """, + ) x_cpmd_initialized_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" The initialized positions for geometry optimization. The ith row corresponds to the position for atom number i. - ''') + """, + ) x_cpmd_initialized_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" The initialized forces for geometry optimization. The ith row corresponds to the force for atom number i. - ''') + """, + ) x_cpmd_geo_opt_initialization_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Time for initialization. - ''') + """, + ) class x_cpmd_section_geo_opt_step(MSection): - ''' + """ Contains information for a single geometry optimization step. - ''' + """ m_def = Section(validate=False) x_cpmd_geo_opt_step_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" The positions from a geometry optimization step. The ith row corresponds to the position for atom number i. - ''') + """, + ) x_cpmd_geo_opt_step_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" The forces from a geometry optimization step. The ith row corresponds to the force for atom number i. - ''') + """, + ) x_cpmd_geo_opt_step_total_number_of_scf_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of SCF steps at the end of this geometry optimization step. - ''') + """, + ) x_cpmd_geo_opt_step_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Geometry optimization step number. - ''') + """, + ) x_cpmd_geo_opt_step_gnmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The largest absolute component of the force on any atom (GNMAX). - ''') + """, + ) x_cpmd_geo_opt_step_gnorm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Average force on the atoms (GNORM). - ''') + """, + ) x_cpmd_geo_opt_step_cnstr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The largest absolute component of a constraint force on the atoms (CNSTR). - ''') + """, + ) x_cpmd_geo_opt_step_etot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The total energy at the end of a geometry optimization step (ETOT). - ''') + """, + ) x_cpmd_geo_opt_step_detot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The difference in total energy to the previous geometry optimization step (DETOT). - ''') + """, + ) x_cpmd_geo_opt_step_tcpu = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The CPU time used during geometry optimization step (TCPU). - ''') + """, + ) x_cpmd_section_geo_opt_scf_iteration = SubSection( - sub_section=SectionProxy('x_cpmd_section_geo_opt_scf_iteration'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_geo_opt_scf_iteration"), repeats=True + ) class x_cpmd_section_geo_opt_scf_iteration(MSection): - ''' + """ Contains information about the self-consistent field iteration within a geometry optimization step. - ''' + """ m_def = Section(validate=False) x_cpmd_geo_opt_scf_nfi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The scf step number (NFI) within geometry optimization step. - ''') + """, + ) x_cpmd_geo_opt_scf_gemax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Largest off-diagonal component (GEMAX) during SCF step within geometry optimization step. - ''') + """, + ) x_cpmd_geo_opt_scf_cnorm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Average of the off-diagonal components (CNORM) during SCF step within geometry optimization step. - ''') + """, + ) x_cpmd_geo_opt_scf_etot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The total energy (ETOT) during SCF step within geometry optimization step. - ''') + """, + ) x_cpmd_geo_opt_scf_detot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The difference in total energy to the previous SCF energy (DETOT) within geometry optimization step. - ''') + """, + ) x_cpmd_geo_opt_scf_tcpu = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The CPU time used during SCF step (TCPU) within geometry optimization step. - ''') + """, + ) class x_cpmd_section_md_initialization(MSection): - ''' + """ Molecular dynamics initialization information. - ''' + """ m_def = Section(validate=False) class x_cpmd_section_md_averaged_quantities(MSection): - ''' + """ Averaged quantities from a MD calculation. - ''' + """ m_def = Section(validate=False) x_cpmd_electron_kinetic_energy_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean electron kinetic energy. - ''') + """, + ) x_cpmd_electron_kinetic_energy_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of electron kinetic energy. - ''') + """, + ) x_cpmd_ionic_temperature_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean ionic temperature. - ''') + """, + ) x_cpmd_ionic_temperature_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of ionic temperature. - ''') + """, + ) x_cpmd_density_functional_energy_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean density functional energy. - ''') + """, + ) x_cpmd_density_functional_energy_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of density functional energy. - ''') + """, + ) x_cpmd_classical_energy_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean classical energy. - ''') + """, + ) x_cpmd_classical_energy_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of classical energy. - ''') + """, + ) x_cpmd_conserved_energy_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean conserved energy. - ''') + """, + ) x_cpmd_conserved_energy_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of conserved energy. - ''') + """, + ) x_cpmd_nose_energy_electrons_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean Nosé energy for electrons. - ''') + """, + ) x_cpmd_nose_energy_electrons_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of Nosé energy for elctrons. - ''') + """, + ) x_cpmd_nose_energy_ions_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean Nosé energy for ions. - ''') + """, + ) x_cpmd_nose_energy_ions_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of Nosé energy for ions. - ''') + """, + ) x_cpmd_constraints_energy_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean constrains energy. - ''') + """, + ) x_cpmd_constraints_energy_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of constraints energy. - ''') + """, + ) x_cpmd_restraints_energy_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean restraints energy. - ''') + """, + ) x_cpmd_restraints_energy_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of restraints energy. - ''') + """, + ) x_cpmd_ion_displacement_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean ion displacement. - ''') + """, + ) x_cpmd_ion_displacement_std = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The standard deviation of ion displacement. - ''') + """, + ) x_cpmd_cpu_time_mean = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The mean cpu time. - ''') + """, + ) class x_cpmd_section_timing(MSection): - ''' + """ Contains information about the timings. - ''' + """ m_def = Section(validate=False) class x_cpmd_section_end_information(MSection): - ''' + """ Contains information printed at the end of a calculation. - ''' + """ m_def = Section(validate=False) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_section_start_information = SubSection( - sub_section=SectionProxy('x_cpmd_section_start_information'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_start_information"), repeats=True + ) x_cpmd_section_run_type_information = SubSection( - sub_section=SectionProxy('x_cpmd_section_run_type_information'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_run_type_information"), repeats=True + ) x_cpmd_section_system_information = SubSection( - sub_section=SectionProxy('x_cpmd_section_system_information'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_system_information"), repeats=True + ) x_cpmd_section_wave_function_initialization = SubSection( - sub_section=SectionProxy('x_cpmd_section_wave_function_initialization'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_wave_function_initialization"), + repeats=True, + ) x_cpmd_section_md_initialization = SubSection( - sub_section=SectionProxy('x_cpmd_section_md_initialization'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_md_initialization"), repeats=True + ) x_cpmd_section_md_averaged_quantities = SubSection( - sub_section=SectionProxy('x_cpmd_section_md_averaged_quantities'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_md_averaged_quantities"), repeats=True + ) x_cpmd_section_timing = SubSection( - sub_section=SectionProxy('x_cpmd_section_timing'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_timing"), repeats=True + ) x_cpmd_section_end_information = SubSection( - sub_section=SectionProxy('x_cpmd_section_end_information'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_end_information"), repeats=True + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_simulation_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_cpmd_section_xc_information = SubSection( - sub_section=SectionProxy('x_cpmd_section_xc_information'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_xc_information"), repeats=True + ) x_cpmd_section_pseudopotential_information = SubSection( - sub_section=SectionProxy('x_cpmd_section_pseudopotential_information'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_pseudopotential_information"), + repeats=True, + ) x_cpmd_section_atom_kinds = SubSection( - sub_section=SectionProxy('x_cpmd_section_atom_kinds'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_atom_kinds"), repeats=True + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_section_supercell = SubSection( - sub_section=SectionProxy('x_cpmd_section_supercell'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_supercell"), repeats=True + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_total_number_of_scf_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of SCF steps at the end of this geometry optimization step. - ''') + """, + ) x_cpmd_gnmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The largest absolute component of the force on any atom (GNMAX). - ''') + """, + ) x_cpmd_gnorm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Average force on the atoms (GNORM). - ''') + """, + ) x_cpmd_cnstr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The largest absolute component of a constraint force on the atoms (CNSTR). - ''') + """, + ) x_cpmd_restart_file = Quantity( type=str, shape=[], - description=''' + description=""" The restart file. - ''') + """, + ) x_cpmd_section_scf = SubSection( - sub_section=SectionProxy('x_cpmd_section_scf'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_scf"), repeats=True + ) x_cpmd_section_final_results = SubSection( - sub_section=SectionProxy('x_cpmd_section_final_results'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_final_results"), repeats=True + ) class GeometryOptimization(simulationworkflowschema.GeometryOptimization): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_section_geo_opt_initialization = SubSection( - sub_section=SectionProxy('x_cpmd_section_geo_opt_initialization'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_geo_opt_initialization"), repeats=True + ) x_cpmd_section_geo_opt_step = SubSection( - sub_section=SectionProxy('x_cpmd_section_geo_opt_step'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_geo_opt_step"), repeats=True + ) class MolecularDynamics(simulationworkflowschema.MolecularDynamics): - m_def = Section(validate=False, extends_base_section=True) x_cpmd_section_md_averaged_quantities = SubSection( - sub_section=SectionProxy('x_cpmd_section_md_averaged_quantities'), - repeats=True) + sub_section=SectionProxy("x_cpmd_section_md_averaged_quantities"), repeats=True + ) diff --git a/electronicparsers/cpmd/parser.py b/electronicparsers/cpmd/parser.py index eaec02a4..7818f74f 100644 --- a/electronicparsers/cpmd/parser.py +++ b/electronicparsers/cpmd/parser.py @@ -27,172 +27,310 @@ from nomad.parsing.file_parser import TextParser, Quantity, DataTextParser from runschema.run import Run, Program, TimeRun from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, Forces, ForcesEntry -) -from runschema.system import ( - System, Atoms -) -from runschema.method import ( - Method, BasisSet, BasisSetContainer + Calculation, + ScfIteration, + Energy, + EnergyEntry, + Forces, + ForcesEntry, ) +from runschema.system import System, Atoms +from runschema.method import Method, BasisSet, BasisSetContainer from simulationworkflowschema import ( - SinglePoint, GeometryOptimization, GeometryOptimizationMethod, - MolecularDynamics, MolecularDynamicsMethod) + SinglePoint, + GeometryOptimization, + GeometryOptimizationMethod, + MolecularDynamics, + MolecularDynamicsMethod, +) from .metainfo.cpmd_general import ( - x_cpmd_section_start_information, x_cpmd_section_supercell, x_cpmd_section_md_averaged_quantities + x_cpmd_section_start_information, + x_cpmd_section_supercell, + x_cpmd_section_md_averaged_quantities, ) -re_f = r'[-+]?\d*\.\d*(?:[Ee][-+]\d+)?' -re_n = r'[\n\r]' +re_f = r"[-+]?\d*\.\d*(?:[Ee][-+]\d+)?" +re_n = r"[\n\r]" class MainfileParser(TextParser): def init_quantities(self): - def to_parameters(val_in): - separator = ':' if ':' in val_in else ' ' + separator = ":" if ":" in val_in else " " return [v.strip() for v in val_in.strip().split(separator) if v] step_quantities = [ Quantity( - 'atom_coordinates_forces', - rf'ATOM +COORDINATES.+\s+((?:\d+ +[A-Z][a-z]*.+{re_f}\s+)+)', - str_operation=lambda x: [v.split() for v in x.strip().splitlines()] + "atom_coordinates_forces", + rf"ATOM +COORDINATES.+\s+((?:\d+ +[A-Z][a-z]*.+{re_f}\s+)+)", + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], + ), + Quantity( + "scf", + rf"((?:\s+\d+ +{re_f} +{re_f} +{re_f} +{re_f} +{re_f})+)", + dtype=np.dtype(np.float64), + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], ), Quantity( - 'scf', - rf'((?:\s+\d+ +{re_f} +{re_f} +{re_f} +{re_f} +{re_f})+)', - dtype=np.dtype(np.float64), str_operation=lambda x: [v.split() for v in x.strip().splitlines()] + "energies", + rf"(.+TOTAL ENERGY =.+\s(?:.+= +{re_f} A\.U\.\s)+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "total", + rf"TOTAL ENERGY += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "kinetic", + rf"KINETIC ENERGY += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "electrostatic", + rf"ELECTROSTATIC ENERGY += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_cpmd_eself", + rf"ESELF += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_cpmd_esr", + rf"ESR += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_cpmd_local_pseudopotential", + rf"LOCAL PSEUDOPOTENTIAL ENERGY += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_cpmd_nl_pseudopotential", + rf"N-L PSEUDOPOTENTIAL ENERGY += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "xc", + rf"EXCHANGE-CORRELATION ENERGY += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + ] + ), ), Quantity( - 'energies', - rf'(.+TOTAL ENERGY =.+\s(?:.+= +{re_f} A\.U\.\s)+)', - sub_parser=TextParser(quantities=[ - Quantity('total', rf'TOTAL ENERGY += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('kinetic', rf'KINETIC ENERGY += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('electrostatic', rf'ELECTROSTATIC ENERGY += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('x_cpmd_eself', rf'ESELF += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('x_cpmd_esr', rf'ESR += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('x_cpmd_local_pseudopotential', rf'LOCAL PSEUDOPOTENTIAL ENERGY += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('x_cpmd_nl_pseudopotential', rf'N-L PSEUDOPOTENTIAL ENERGY += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('xc', rf'EXCHANGE-CORRELATION ENERGY += +({re_f})', dtype=np.float64, unit=ureg.hartree), - ]) + "x_cpmd_restart_file", + r"RESTART INFORMATION WRITTEN ON FILE +(\S+)", + dtype=str, ), - Quantity('x_cpmd_restart_file', r'RESTART INFORMATION WRITTEN ON FILE +(\S+)', dtype=str), - Quantity('x_cpmd_total_number_of_scf_steps', r'TOTAL STEP NR\. +(\d+)', dtype=np.int32), - Quantity('x_cpmd_gnmax', rf'GNMAX= +({re_f})', dtype=np.float64), - Quantity('x_cpmd_gnorm', rf'GNORM= +({re_f})', dtype=np.float64), - Quantity('x_cpmd_cnstr', rf'CNSTR= +({re_f})', dtype=np.float64), - Quantity('time_calculation', rf'TCPU= +({re_f})', dtype=np.float64), + Quantity( + "x_cpmd_total_number_of_scf_steps", + r"TOTAL STEP NR\. +(\d+)", + dtype=np.int32, + ), + Quantity("x_cpmd_gnmax", rf"GNMAX= +({re_f})", dtype=np.float64), + Quantity("x_cpmd_gnorm", rf"GNORM= +({re_f})", dtype=np.float64), + Quantity("x_cpmd_cnstr", rf"CNSTR= +({re_f})", dtype=np.float64), + Quantity("time_calculation", rf"TCPU= +({re_f})", dtype=np.float64), ] self._quantities = [ Quantity( - 'header', - r'(PROGRAM CPMD STARTED[\s\S]+?JOB WAS SUBMITTED BY.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'date_start', - r'PROGRAM CPMD STARTED AT\: (\d+\-\d+\-\d+ \d+\:\d+\:\d+\.\d+)', - dtype=str, flatten=False - ), - Quantity('program_version', r'VERSION (.+)', dtype=str, flatten=False), - Quantity( - 'x_cpmd_compilation_date', - r'\*\*\* +(\w+ \d+ \d+ \-\- \d+\:\d+\:\d+)', - dtype=str, flatten=False - ), - Quantity('x_cpmd_input_filename', r'THE INPUT FILE IS: +(\S+)', dtype=str), - Quantity('x_cpmd_run_host_name', r'THIS JOB RUNS ON: +(\S+)', dtype=str), - Quantity('x_cpmd_process_id', r'THE PROCESS ID IS: +(\S+)', dtype=str), - Quantity('x_cpmd_run_user_name', r'THE JOB WAS SUBMITTED BY: +(\S+)', dtype=str), - ]) + "header", + r"(PROGRAM CPMD STARTED[\s\S]+?JOB WAS SUBMITTED BY.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "date_start", + r"PROGRAM CPMD STARTED AT\: (\d+\-\d+\-\d+ \d+\:\d+\:\d+\.\d+)", + dtype=str, + flatten=False, + ), + Quantity( + "program_version", r"VERSION (.+)", dtype=str, flatten=False + ), + Quantity( + "x_cpmd_compilation_date", + r"\*\*\* +(\w+ \d+ \d+ \-\- \d+\:\d+\:\d+)", + dtype=str, + flatten=False, + ), + Quantity( + "x_cpmd_input_filename", + r"THE INPUT FILE IS: +(\S+)", + dtype=str, + ), + Quantity( + "x_cpmd_run_host_name", + r"THIS JOB RUNS ON: +(\S+)", + dtype=str, + ), + Quantity( + "x_cpmd_process_id", r"THE PROCESS ID IS: +(\S+)", dtype=str + ), + Quantity( + "x_cpmd_run_user_name", + r"THE JOB WAS SUBMITTED BY: +(\S+)", + dtype=str, + ), + ] + ), ), Quantity( - 'info', - r'(INFO[\s\S]+?USING SEED[\s\S]+?)\*\*\*\*\*', - sub_parser=TextParser(quantities=[ - Quantity( - 'simulation_type', - r'((?:SINGLE POINT DENSITY OPTIMIZATION)|(?:OPTIMIZATION OF IONIC POSITIONS)' - r'|(?:CAR\-PARRINELLO MOLECULAR DYNAMICS)|(?:BORN-OPPENHEIMER MOLECULAR DYNAMICS))', - dtype=str, flatten=False - ), - Quantity( - 'simulation_parameters', - rf'([A-Z][ A-Z\-]+?)((?: |:)) *((?:{re_f}|\d+|[A-Z][ A-Z]+)).*', - str_operation=to_parameters, repeats=True), - Quantity('geometry_optimization_method', r'GEOMETRY OPTIMIZATION BY (\S+)', dtype=str) - ]) + "info", + r"(INFO[\s\S]+?USING SEED[\s\S]+?)\*\*\*\*\*", + sub_parser=TextParser( + quantities=[ + Quantity( + "simulation_type", + r"((?:SINGLE POINT DENSITY OPTIMIZATION)|(?:OPTIMIZATION OF IONIC POSITIONS)" + r"|(?:CAR\-PARRINELLO MOLECULAR DYNAMICS)|(?:BORN-OPPENHEIMER MOLECULAR DYNAMICS))", + dtype=str, + flatten=False, + ), + Quantity( + "simulation_parameters", + rf"([A-Z][ A-Z\-]+?)((?: |:)) *((?:{re_f}|\d+|[A-Z][ A-Z]+)).*", + str_operation=to_parameters, + repeats=True, + ), + Quantity( + "geometry_optimization_method", + r"GEOMETRY OPTIMIZATION BY (\S+)", + dtype=str, + ), + ] + ), ), Quantity( - 'atoms', - rf'ATOMS \*+\s+NR.+\s+((?:\d+ +[A-Z][a-z]* +{re_f} +{re_f} +{re_f} +\d+\s+)+)', - str_operation=lambda x: [v.split() for v in x.strip().splitlines()] + "atoms", + rf"ATOMS \*+\s+NR.+\s+((?:\d+ +[A-Z][a-z]* +{re_f} +{re_f} +{re_f} +\d+\s+)+)", + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], ), Quantity( - 'supercell', - r'SUPERCELL \*+([\s\S]+?)\*{10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'lattice_vectors', - rf'LATTICE VECTOR A\d\(BOHR\): +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64), repeats=True - ), - Quantity( - 'lattice_vectors_reciprocal', - rf'RECIP\. LAT\. VEC\. B\d\(2Pi/BOHR\): +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64), repeats=True - ), - Quantity('x_cpmd_cell_symmetry', r'SYMMETRY:\s+(.+)', dtype=str, flatten=False), - Quantity('x_cpmd_cell_lattice_constant', rf'LATTICE CONSTANT\(a\.u\.\):\s+({re_f})', dtype=np.float64), - Quantity('x_cpmd_cell_dimension', rf'CELL DIMENSION:\s+(.+)', dtype=np.dtype(np.float64)), - Quantity('x_cpmd_cell_volume', rf'VOLUME\(OMEGA IN BOHR\^3\):\s+({re_f})', dtype=np.float64), - Quantity('x_cpmd_cell_real_space_mesh', rf'REAL SPACE MESH:\s+(\d+ +\d+ +\d+)', dtype=np.dtype(np.int32)), - Quantity('x_cpmd_wave_function_cutoff', rf'WAVEFUNCTION CUTOFF\(RYDBERG\):\s+({re_f})', dtype=np.float64), - Quantity('x_cpmd_density_cutoff', rf'DENSITY CUTOFF\(RYDBERG\):({re_f})', dtype=np.float64), - Quantity('x_cpmd_number_of_planewaves_wave_function', rf'NUMBER OF PLANE WAVES FOR WAVEFUNCTION CUTOFF:\s+(\d+)', dtype=np.int32), - Quantity('x_cpmd_number_of_planewaves_density', rf'NUMBER OF PLANE WAVES FOR DENSITY CUTOFF:\s+(\d+)', dtype=np.int32), - ]) + "supercell", + r"SUPERCELL \*+([\s\S]+?)\*{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "lattice_vectors", + rf"LATTICE VECTOR A\d\(BOHR\): +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + repeats=True, + ), + Quantity( + "lattice_vectors_reciprocal", + rf"RECIP\. LAT\. VEC\. B\d\(2Pi/BOHR\): +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + repeats=True, + ), + Quantity( + "x_cpmd_cell_symmetry", + r"SYMMETRY:\s+(.+)", + dtype=str, + flatten=False, + ), + Quantity( + "x_cpmd_cell_lattice_constant", + rf"LATTICE CONSTANT\(a\.u\.\):\s+({re_f})", + dtype=np.float64, + ), + Quantity( + "x_cpmd_cell_dimension", + rf"CELL DIMENSION:\s+(.+)", + dtype=np.dtype(np.float64), + ), + Quantity( + "x_cpmd_cell_volume", + rf"VOLUME\(OMEGA IN BOHR\^3\):\s+({re_f})", + dtype=np.float64, + ), + Quantity( + "x_cpmd_cell_real_space_mesh", + rf"REAL SPACE MESH:\s+(\d+ +\d+ +\d+)", + dtype=np.dtype(np.int32), + ), + Quantity( + "x_cpmd_wave_function_cutoff", + rf"WAVEFUNCTION CUTOFF\(RYDBERG\):\s+({re_f})", + dtype=np.float64, + ), + Quantity( + "x_cpmd_density_cutoff", + rf"DENSITY CUTOFF\(RYDBERG\):({re_f})", + dtype=np.float64, + ), + Quantity( + "x_cpmd_number_of_planewaves_wave_function", + rf"NUMBER OF PLANE WAVES FOR WAVEFUNCTION CUTOFF:\s+(\d+)", + dtype=np.int32, + ), + Quantity( + "x_cpmd_number_of_planewaves_density", + rf"NUMBER OF PLANE WAVES FOR DENSITY CUTOFF:\s+(\d+)", + dtype=np.int32, + ), + ] + ), ), Quantity( - 'geometry_optimization', - r'GEOMETRY OPTIMIZATION +\=([\s\S]+?)(?:END OF GEOMETRY OPTIMIZATION|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'step', - rf'((?:NFI|\*\*\*\*\*)[\s\S]+?TCPU=.+)', - repeats=True, sub_parser=TextParser(quantities=step_quantities) - ), - ]) + "geometry_optimization", + r"GEOMETRY OPTIMIZATION +\=([\s\S]+?)(?:END OF GEOMETRY OPTIMIZATION|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "step", + rf"((?:NFI|\*\*\*\*\*)[\s\S]+?TCPU=.+)", + repeats=True, + sub_parser=TextParser(quantities=step_quantities), + ), + ] + ), ), Quantity( - 'single_point', - r'(ATOM +COORDINATES[\s\S]+?(?:RESTART .+|\Z))', - sub_parser=TextParser(quantities=step_quantities) + "single_point", + r"(ATOM +COORDINATES[\s\S]+?(?:RESTART .+|\Z))", + sub_parser=TextParser(quantities=step_quantities), ), Quantity( - 'molecular_dynamics', - r'(NFI +EKINC +TEMPP[\s\S]+?(?:CPU TIME|\Z))', - sub_parser=TextParser(quantities=[ - Quantity( - 'frame', - rf'((?:\d+ +{re_f} +{re_f} +{re_f} +{re_f} +{re_f} +{re_f} +{re_f}\s+)+)', - dtype=np.dtype(np.float64), repeats=True - ), - Quantity( - 'averaged', - r'AVERAGED QUANTITIES +\*+\s+\*+\s+MEAN VALUE.+\s+\.+\s+' - rf'((?:[ A-Z]+ +{re_f} +{re_f}\s+)+)', - str_operation=lambda x: [v.split() for v in x.strip().splitlines()] - ), - ]) - ) + "molecular_dynamics", + r"(NFI +EKINC +TEMPP[\s\S]+?(?:CPU TIME|\Z))", + sub_parser=TextParser( + quantities=[ + Quantity( + "frame", + rf"((?:\d+ +{re_f} +{re_f} +{re_f} +{re_f} +{re_f} +{re_f} +{re_f}\s+)+)", + dtype=np.dtype(np.float64), + repeats=True, + ), + Quantity( + "averaged", + r"AVERAGED QUANTITIES +\*+\s+\*+\s+MEAN VALUE.+\s+\.+\s+" + rf"((?:[ A-Z]+ +{re_f} +{re_f}\s+)+)", + str_operation=lambda x: [ + v.split() for v in x.strip().splitlines() + ], + ), + ] + ), + ), ] def get_simulation_parameters(self): - return {val[0]: val[1] for val in self.get('info', {}).get('simulation_parameters', [])} + return { + val[0]: val[1] + for val in self.get("info", {}).get("simulation_parameters", []) + } # we simply make our own parser instead of using MDAnalysis for a simple xyz file @@ -203,16 +341,21 @@ def __init__(self): def init_quantities(self): self._quantities = [ Quantity( - 'step', - rf'(STEP\: +\d+[\s\S]+?)(\s+\d+\s+|\Z)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('step', r'STEP\: +(\d+)', dtpye=np.int32), - Quantity('labels', r'([A-Z][a-z]*)\S*', repeats=True), - Quantity( - 'positions', - rf'({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64), repeats=True) - ]) + "step", + rf"(STEP\: +\d+[\s\S]+?)(\s+\d+\s+|\Z)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("step", r"STEP\: +(\d+)", dtpye=np.int32), + Quantity("labels", r"([A-Z][a-z]*)\S*", repeats=True), + Quantity( + "positions", + rf"({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + repeats=True, + ), + ] + ), ) ] @@ -224,11 +367,12 @@ def __init__(self): self.xyz_parser = XYZParser() self.energies_parser = DataTextParser() self._method_map = { - 'GDIIS/BFGS': 'bfgs', 'LOW-MEMORY BFGS': 'bfgs', - 'CONJUGATE GRADIENT': 'conjugate_gradient', 'STEEPEST DESCENT': 'steepest_descent' - } - self._metainfo_map = { + "GDIIS/BFGS": "bfgs", + "LOW-MEMORY BFGS": "bfgs", + "CONJUGATE GRADIENT": "conjugate_gradient", + "STEEPEST DESCENT": "steepest_descent", } + self._metainfo_map = {} def init_parser(self): self.mainfile_parser.mainfile = self.filepath @@ -245,16 +389,19 @@ def parse(self, filepath, archive, logger): sec_run = Run() archive.run.append(sec_run) - header = self.mainfile_parser.get('header', {}) - sec_run.program = Program(version=header.get('program_version')) - if header.get('date_start') is not None: - sec_run.time_run = TimeRun(date_start=datetime.strptime( - header.get('date_start'), '%Y-%m-%d %H:%M:%S.%f').timestamp()) + header = self.mainfile_parser.get("header", {}) + sec_run.program = Program(version=header.get("program_version")) + if header.get("date_start") is not None: + sec_run.time_run = TimeRun( + date_start=datetime.strptime( + header.get("date_start"), "%Y-%m-%d %H:%M:%S.%f" + ).timestamp() + ) sec_start_info = x_cpmd_section_start_information() sec_run.x_cpmd_section_start_information.append(sec_start_info) for key, val in header.items(): - if key.startswith('x_cpmd'): + if key.startswith("x_cpmd"): setattr(sec_start_info, key, val) def parse_system(source): @@ -265,20 +412,25 @@ def parse_system(source): sec_run.system.append(sec_system) sec_system.atoms = Atoms( labels=[val[1] for val in source.atom_coordinates_forces], - positions=np.array([val[2:5] for val in source.atom_coordinates_forces]) * ureg.bohr + positions=np.array([val[2:5] for val in source.atom_coordinates_forces]) + * ureg.bohr, ) sec_supercell = x_cpmd_section_supercell() sec_system.x_cpmd_section_supercell.append(sec_supercell) - for key, val in self.mainfile_parser.get('supercell', {}).items(): - if key == 'lattice_vectors': + for key, val in self.mainfile_parser.get("supercell", {}).items(): + if key == "lattice_vectors": sec_system.atoms.lattice_vectors = val * ureg.bohr - elif key.startswith('x_cpmd'): + elif key.startswith("x_cpmd"): setattr(sec_supercell, key, val) return sec_system def parse_calculation(source): - time_initial = sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + time_initial = ( + sec_run.calculation[-1].time_physical + if sec_run.calculation + else 0 * ureg.s + ) sec_calc = Calculation() sec_run.calculation.append(sec_calc) @@ -286,21 +438,30 @@ def parse_calculation(source): sec_energy = Energy() sec_calc.energy = sec_energy for key, val in source.energies.items(): - if key == 'kinetic': + if key == "kinetic": sec_energy.total.kinetic = val setattr(sec_energy, key, EnergyEntry(value=val)) - for n, scf in enumerate(source.get('scf', [])): + for n, scf in enumerate(source.get("scf", [])): sec_scf = ScfIteration() sec_calc.scf_iteration.append(sec_scf) sec_scf.time_calculation = scf[-1] * ureg.s - sec_scf.time_physical = (sec_calc.scf_iteration[n - 1].time_physical if n else time_initial) + sec_scf.time_calculation + sec_scf.time_physical = ( + sec_calc.scf_iteration[n - 1].time_physical if n else time_initial + ) + sec_scf.time_calculation sec_scf.energy = Energy( - total=EnergyEntry(value=scf[3] * ureg.hartree), change=scf[4] * ureg.hartree) + total=EnergyEntry(value=scf[3] * ureg.hartree), + change=scf[4] * ureg.hartree, + ) if source.atom_coordinates_forces is not None: sec_calc.forces = Forces( - total=ForcesEntry(value=[val[5:8] for val in source.atom_coordinates_forces] * ureg.hartree / ureg.bohr)) + total=ForcesEntry( + value=[val[5:8] for val in source.atom_coordinates_forces] + * ureg.hartree + / ureg.bohr + ) + ) if source.time_calculation: sec_calc.time_calculation = source.time_calculation * ureg.s @@ -309,20 +470,24 @@ def parse_calculation(source): sec_calc.energy = sec_scf.energy for key, val in source.items(): - if key.startswith('x_cpmd_'): + if key.startswith("x_cpmd_"): setattr(sec_calc, key, val) return sec_calc def resolve_ensemble_type(): # TODO consider other cases - ion_dyn = self.mainfile_parser.get_simulation_parameters().get('ION DYNAMICS') - ensemble_type = 'NVE' if ion_dyn == 'THE TEMPERATURE IS NOT CONTROLLED' else None + ion_dyn = self.mainfile_parser.get_simulation_parameters().get( + "ION DYNAMICS" + ) + ensemble_type = ( + "NVE" if ion_dyn == "THE TEMPERATURE IS NOT CONTROLLED" else None + ) return ensemble_type workflow = None - simulation_type = self.mainfile_parser.get('info', {}).get('simulation_type') - if simulation_type == 'SINGLE POINT DENSITY OPTIMIZATION': + simulation_type = self.mainfile_parser.get("info", {}).get("simulation_type") + if simulation_type == "SINGLE POINT DENSITY OPTIMIZATION": workflow = SinglePoint() sec_system = parse_system(self.mainfile_parser.single_point) sec_calc = parse_calculation(self.mainfile_parser.single_point) @@ -330,9 +495,11 @@ def resolve_ensemble_type(): elif self.mainfile_parser.geometry_optimization is not None: workflow = GeometryOptimization(method=GeometryOptimizationMethod()) - method = self.mainfile_parser.get('info', {}).get('geometry_optimization_method') + method = self.mainfile_parser.get("info", {}).get( + "geometry_optimization_method" + ) workflow.method.method = self._method_map.get(method, method) - for step in self.mainfile_parser.geometry_optimization.get('step', []): + for step in self.mainfile_parser.geometry_optimization.get("step", []): sec_system = parse_system(step) sec_calc = parse_calculation(step) sec_calc.system_ref = sec_system @@ -342,32 +509,52 @@ def resolve_ensemble_type(): workflow.method.thermodynamic_ensemble = resolve_ensemble_type() sec_averaged = x_cpmd_section_md_averaged_quantities() workflow.x_cpmd_section_md_averaged_quantities.append(sec_averaged) - for value in self.mainfile_parser.molecular_dynamics.get('averaged', []): - name = '_'.join(value[:-2]).lower() - sec_averaged.m_set(sec_averaged.m_get_quantity_definition(f'x_cpmd_{name}_mean'), value[-2]) - sec_averaged.m_set(sec_averaged.m_get_quantity_definition(f'x_cpmd_{name}_std'), value[-1]) + for value in self.mainfile_parser.molecular_dynamics.get("averaged", []): + name = "_".join(value[:-2]).lower() + sec_averaged.m_set( + sec_averaged.m_get_quantity_definition(f"x_cpmd_{name}_mean"), + value[-2], + ) + sec_averaged.m_set( + sec_averaged.m_get_quantity_definition(f"x_cpmd_{name}_std"), + value[-1], + ) # TODO read trajectory from other file formats dcd # read atom positions and velocities from (F)TRAJECTORY def read_xyz_trajectory(filename): self.xyz_parser.mainfile = os.path.join(self.maindir, filename) - trajectory = [step.get('positions') for step in self.xyz_parser.get('step', [])] + trajectory = [ + step.get("positions") for step in self.xyz_parser.get("step", []) + ] if trajectory: # reshape to conform with trajectory parser - trajectory = np.reshape(trajectory, (len(trajectory), len(trajectory[0]), 1, 3)) + trajectory = np.reshape( + trajectory, (len(trajectory), len(trajectory[0]), 1, 3) + ) return trajectory trajectory = None - trajectory_files = [f for f in os.listdir(self.maindir) if re.search(r'.*TRAJECTORY', f, re.IGNORECASE)] + trajectory_files = [ + f + for f in os.listdir(self.maindir) + if re.search(r".*TRAJECTORY", f, re.IGNORECASE) + ] if trajectory_files: - self.trajectory_parser.mainfile = os.path.join(self.maindir, trajectory_files[0]) + self.trajectory_parser.mainfile = os.path.join( + self.maindir, trajectory_files[0] + ) if self.trajectory_parser.data is None: # maybe this is an xyz file (nomad #1196) trajectory = read_xyz_trajectory(trajectory_files[0]) if trajectory is None: - trajectory_files = [f for f in os.listdir(self.maindir) if re.search(r'.*\.xyz', f, re.IGNORECASE)] + trajectory_files = [ + f + for f in os.listdir(self.maindir) + if re.search(r".*\.xyz", f, re.IGNORECASE) + ] if self.trajectory_parser.data is None and trajectory_files: # read from xyz file trajectory = read_xyz_trajectory(trajectory_files[0]) @@ -384,16 +571,24 @@ def read_xyz_trajectory(filename): n_data = len(trajectory) // 3 # we remove the index trajectory = np.transpose(trajectory[1:]) - trajectory = np.reshape(trajectory, (n_frames, n_atoms, n_data, 3)) + trajectory = np.reshape( + trajectory, (n_frames, n_atoms, n_data, 3) + ) # we also initialize energies parser energies = None - energy_files = [f for f in os.listdir(self.maindir) if re.search(r'.*ENERGIES', f, re.IGNORECASE)] + energy_files = [ + f + for f in os.listdir(self.maindir) + if re.search(r".*ENERGIES", f, re.IGNORECASE) + ] if energy_files: - self.energies_parser.mainfile = os.path.join(self.maindir, energy_files[0]) + self.energies_parser.mainfile = os.path.join( + self.maindir, energy_files[0] + ) if self.energies_parser.mainfile is None: # get energies from mainfile - energies = self.mainfile_parser.molecular_dynamics.get('frame', []) + energies = self.mainfile_parser.molecular_dynamics.get("frame", []) else: energies = self.energies_parser.data energies = [] if energies is None else energies @@ -402,36 +597,51 @@ def read_xyz_trajectory(filename): match = True start = 0 if len(energies) != len(trajectory): - self.logger.warning('Trajectory and energies files do not match.') + self.logger.warning("Trajectory and energies files do not match.") match = False def write_energies(source, target): - target.energy = Energy(total=EnergyEntry( - value=source[5] * ureg.hartree, - potential=source[3] * ureg.hartree, - kinetic=source[1] * ureg.hartree)) + target.energy = Energy( + total=EnergyEntry( + value=source[5] * ureg.hartree, + potential=source[3] * ureg.hartree, + kinetic=source[1] * ureg.hartree, + ) + ) target.time_calculation = source[7] * ureg.s target.temperature = source[2] * ureg.kelvin - lattice_vectors = self.mainfile_parser.get('supercell', {}).get('lattice_vectors') - lattice_vectors = lattice_vectors * ureg.bohr if lattice_vectors else lattice_vectors + lattice_vectors = self.mainfile_parser.get("supercell", {}).get( + "lattice_vectors" + ) + lattice_vectors = ( + lattice_vectors * ureg.bohr if lattice_vectors else lattice_vectors + ) for n_frame in range(len(trajectory)): sec_system = System() sec_run.system.append(sec_system) sec_system.atoms = Atoms( - labels=[atom[1] for atom in self.mainfile_parser.get('atoms', [])], + labels=[atom[1] for atom in self.mainfile_parser.get("atoms", [])], positions=trajectory[n_frame, :, 0, :] * ureg.bohr, lattice_vectors=lattice_vectors, - periodic=None if lattice_vectors is None else [True, True, True] + periodic=None if lattice_vectors is None else [True, True, True], ) if len(trajectory[n_frame][0]) > 1: - sec_system.atoms.velocities = trajectory[n_frame, :, 1, :] * ureg.bohr / (ureg.dirac_constant / ureg.hartree) - - time_initial = sec_run.calculation[-1].time_physical if n_frame else 0 * ureg.s + sec_system.atoms.velocities = ( + trajectory[n_frame, :, 1, :] + * ureg.bohr + / (ureg.dirac_constant / ureg.hartree) + ) + + time_initial = ( + sec_run.calculation[-1].time_physical if n_frame else 0 * ureg.s + ) sec_calc = Calculation() sec_run.calculation.append(sec_calc) if len(trajectory[n_frame][0]) > 2: - sec_calc.forces = trajectory[n_frame, :, 1, :] * ureg.hartree / ureg.bohr + sec_calc.forces = ( + trajectory[n_frame, :, 1, :] * ureg.hartree / ureg.bohr + ) if match: write_energies(energies[n_frame], sec_calc) @@ -445,23 +655,26 @@ def write_energies(source, target): sec_method = Method() sec_run.method.append(sec_method) - cutoff = self.mainfile_parser.get('supercell', {}).get( - 'x_cpmd_wave_function_cutoff') + cutoff = self.mainfile_parser.get("supercell", {}).get( + "x_cpmd_wave_function_cutoff" + ) if cutoff is not None: sec_method.electrons_representation.append( BasisSetContainer( - scope=['wavefunction'], - type='plane waves', + scope=["wavefunction"], + type="plane waves", basis_set=[ BasisSet( - scope=['valence'], - type='plane waves', + scope=["valence"], + type="plane waves", cutoff=cutoff * ureg.rydberg, ) - ] + ], ) ) - sec_method.x_cpmd_simulation_parameters = self.mainfile_parser.get_simulation_parameters() + sec_method.x_cpmd_simulation_parameters = ( + self.mainfile_parser.get_simulation_parameters() + ) # TODO xc functionals. The mapping cannot be ascertained archive.workflow2 = workflow diff --git a/electronicparsers/crystal/metainfo/crystal.py b/electronicparsers/crystal/metainfo/crystal.py index 61a58c08..fcc1acdc 100644 --- a/electronicparsers/crystal/metainfo/crystal.py +++ b/electronicparsers/crystal/metainfo/crystal.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,519 +39,580 @@ class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_crystal_family = Quantity( type=str, shape=[], - description=''' + description=""" Crystal family. - ''') + """, + ) x_crystal_class = Quantity( type=str, shape=[], - description=''' + description=""" Crystal class. - ''') + """, + ) x_crystal_spacegroup = Quantity( type=str, shape=[], - description=''' + description=""" Crystal spacegroup string resembling Hermann–Mauguin notation. - ''') + """, + ) x_crystal_dimensionality = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" System dimensionality. - ''') + """, + ) x_crystal_n_symmops = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of symmetry operators. - ''') + """, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_crystal_scf_ee = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" +++ ENERGIES IN A.U. +++. ::: TOTAL E-E 4.6595142576204E+01 - ''') + """, + ) x_crystal_scf_en_ne = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" +++ ENERGIES IN A.U. +++. ::: TOTAL E-N + N-E -5.2283101954878E+02 - ''') + """, + ) x_crystal_scf_nn = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" +++ ENERGIES IN A.U. +++. ::: TOTAL N-N -7.3084276676762E+01 - ''') + """, + ) x_crystal_scf_virial_coefficient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" +++ ENERGIES IN A.U. +++. ::: VIRIAL COEFFICIENT 9.9998501747632E-01 - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_crystal_run_title = Quantity( type=str, shape=[], - description=''' + description=""" Title of the runcry(14) task. - ''') + """, + ) x_crystal_datetime = Quantity( type=str, shape=[], - description=''' + description=""" Temporary type for storing date and time, in locale-dependent format. - ''') + """, + ) x_crystal_executable_path = Quantity( type=str, shape=[], - description=''' + description=""" Crystal executable filepath. - ''') + """, + ) x_crystal_hostname = Quantity( type=str, shape=[], - description=''' + description=""" Hostname where Crystal was run. - ''') + """, + ) x_crystal_input_path = Quantity( type=str, shape=[], - description=''' + description=""" Input file name. - ''') + """, + ) x_crystal_os = Quantity( type=str, shape=[], - description=''' + description=""" String describing the operating system where Crystal was run. - ''') + """, + ) x_crystal_output = Quantity( type=str, shape=[], - description=''' + description=""" Output file name. - ''') + """, + ) x_crystal_tmpdir = Quantity( type=str, shape=[], - description=''' + description=""" Temporary directory. - ''') + """, + ) x_crystal_user = Quantity( type=str, shape=[], - description=''' + description=""" Username: who ran Crystal. - ''') + """, + ) x_crystal_distribution = Quantity( type=str, shape=[], - description=''' + description=""" Distribution describer. - ''') + """, + ) x_crystal_version_minor = Quantity( type=str, shape=[], - description=''' + description=""" Minor version number of Crystal. - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_crystal_convergence_deltap = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Convergence seettings, on power of 10 (e.g. CONVERGENCE ON DELTAP 10**-16) - ''') + """, + ) x_crystal_weight_f = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" WEIGHT OF F(I) IN F(I+1) - ''') + """, + ) x_crystal_coulomb_bipolar_buffer = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" COULOMB BIPOLAR BUFFER SET TO x Mb - ''') + """, + ) x_crystal_eigenvectors_disk_space_ftn = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" DISK SPACE FOR EIGENVECTORS (FTN 10) 351575 REALS - ''') + """, + ) x_crystal_eigenvectors_disk_space_reals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" DISK SPACE FOR EIGENVECTORS (FTN 10) 351575 REALS - ''') + """, + ) x_crystal_exchange_bipolar_buffer = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EXCHANGE BIPOLAR BUFFER SET TO x Mb - ''') + """, + ) x_crystal_fock_ks_matrix_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FOCK/KS MATRIX MIXING SET TO x % - ''') + """, + ) x_crystal_input_tcpu = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT INPUT TELAPSE 0.01 TCPU 0.01 - ''') + """, + ) x_crystal_input_telapse = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT INPUT TELAPSE 0.01 TCPU 0.01 - ''') + """, + ) x_crystal_irr_f = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MATRIX SIZE: P(G) 31533, F(G) 5204, P(G) IRR 1802, F(G) IRR 964 - ''') + """, + ) x_crystal_irr_p = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MATRIX SIZE: P(G) 31533, F(G) 5204, P(G) IRR 1802, F(G) IRR 964 - ''') + """, + ) x_crystal_is1 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CAPPA:IS1 16;IS2 16;IS3 16; K PTS MONK NET 145; SYMMOPS:K SPACE 48;G SPACE 48. (mentioned after the basis set) - ''') + """, + ) x_crystal_is2 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CAPPA:IS1 16;IS2 16;IS3 16; K PTS MONK NET 145; SYMMOPS:K SPACE 48;G SPACE 48. (mentioned after the basis set) - ''') + """, + ) x_crystal_is3 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CAPPA:IS1 16;IS2 16;IS3 16; K PTS MONK NET 145; SYMMOPS:K SPACE 48;G SPACE 48. (mentioned after the basis set) - ''') + """, + ) x_crystal_n_k_points_gilat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NUMBER OF K POINTS(GILAT NET) 145 - ''') + """, + ) x_crystal_n_k_points_ibz = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NUMBER OF K POINTS IN THE IBZ 145 - ''') + """, + ) x_crystal_k_pts_monk_net = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CAPPA:IS1 16;IS2 16;IS3 16; K PTS MONK NET 145; SYMMOPS:K SPACE 48;G SPACE 48. (mentioned after the basis set) - ''') + """, + ) x_crystal_matrix_size_f = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MATRIX SIZE: P(G) 31533, F(G) 5204, P(G) IRR 1802, F(G) IRR 964 - ''') + """, + ) x_crystal_matrix_size_p = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MATRIX SIZE: P(G) 31533, F(G) 5204, P(G) IRR 1802, F(G) IRR 964 - ''') + """, + ) x_crystal_max_g_vector_index = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MAX G-VECTOR INDEX FOR 1- AND 2-ELECTRON INTEGRALS 247 - ''') + """, + ) x_crystal_max_scf_cycles = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MAX NUMBER OF SCF CYCLES - ''') + """, + ) x_crystal_n_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" N. OF ATOMS PER CELL - ''') + """, + ) x_crystal_n_core_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CORE ELECTRONS PER CELL - ''') + """, + ) x_crystal_n_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" N. OF ELECTRONS PER CELL - ''') + """, + ) x_crystal_n_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NUMBER OF AO (Atomic orbitals) - ''') + """, + ) x_crystal_n_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NUMBER OF SHELLS - ''') + """, + ) x_crystal_n_symmops = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" N. OF SYMMETRY OPERATORS - ''') + """, + ) x_crystal_pole_order = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" POLE ORDER IN MONO ZONE - ''') + """, + ) x_crystal_shrink_gilat = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" SHRINKING FACTOR(GILAT NET) 16 - ''') + """, + ) x_crystal_shrink_value1 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage. - ''') + """, + ) x_crystal_shrink_value2 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage. - ''') + """, + ) x_crystal_shrink_value3 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage. - ''') + """, + ) x_crystal_shrink = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" SHRINK. FACT.(MONKH.) 16 16 16 - ''') + """, + ) x_crystal_symmetry_adaption = Quantity( type=bool, shape=[], - description=''' + description=""" SYMMETRY ADAPTION OF THE BLOCH FUNCTIONS ENABLED - ''') + """, + ) x_crystal_symmops_g = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CAPPA:IS1 16;IS2 16;IS3 16; K PTS MONK NET 145; SYMMOPS:K SPACE 48;G SPACE 48. (mentioned after the basis set) - ''') + """, + ) x_crystal_symmops_k = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CAPPA:IS1 16;IS2 16;IS3 16; K PTS MONK NET 145; SYMMOPS:K SPACE 48;G SPACE 48. (mentioned after the basis set) - ''') + """, + ) x_crystal_tol_coulomb_overlap = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" COULOMB OVERLAP TOL (T1) 10** -6. (Tolerance T1, power of 10) - ''') + """, + ) x_crystal_tol_coulomb_penetration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" COULOMB PENETRATION TOL (T2) 10** -6. (Tolerance T2, power of 10) - ''') + """, + ) x_crystal_tol_exchange_overlap = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EXCHANGE OVERLAP TOL (T3) 10** -6. (Tolerance T3, power of 10) - ''') + """, + ) x_crystal_tol_pseudo_overlap_f = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EXCHANGE PSEUDO OVP (F(G)) (T4) 10** -6. (Tolerance T4, power of 10) - ''') + """, + ) x_crystal_tol_pseudo_overlap_p = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EXCHANGE PSEUDO OVP (P(G)) (T5) 10** -12. (Tolerance T5, power of 10) - ''') + """, + ) x_crystal_type_of_calculation = Quantity( type=str, shape=[], - description=''' + description=""" The type of the calculation that was performed. - ''') + """, + ) x_crystal_weight_previous = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" WEIGHT OF F(I) IN F(I+1) 30% - ''') + """, + ) x_crystal_toldee = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOLDEE info - ''') + """, + ) class BasisSetAtomCentered(runschema.method.BasisSetAtomCentered): - m_def = Section(validate=False, extends_base_section=True) x_crystal_section_shell = SubSection( - sub_section=SectionProxy('x_crystal_section_shell'), - repeats=True + sub_section=SectionProxy("x_crystal_section_shell"), repeats=True ) class x_crystal_section_shell(MSection): - ''' + """ Shell contains a number of orbitals. - ''' + """ + m_def = Section(validate=False) x_crystal_shell_range = Quantity( type=str, shape=[], - description=''' + description=""" The range of orbitals - ''') + """, + ) x_crystal_shell_type = Quantity( type=str, shape=[], - description=''' + description=""" Shell type: S / P / SP / D / F / G. - ''') + """, + ) x_crystal_shell_coefficients = Quantity( type=np.dtype(np.float64), - shape=['n_orbitals', 4], - description=''' + shape=["n_orbitals", 4], + description=""" Contraction coefficients in this order: exponent, S, P, D/F/G. - ''' + """, ) diff --git a/electronicparsers/crystal/parser.py b/electronicparsers/crystal/parser.py index a148e7c3..3ed340be 100644 --- a/electronicparsers/crystal/parser.py +++ b/electronicparsers/crystal/parser.py @@ -28,536 +28,978 @@ from nomad import atomutils # type: ignore from nomad.parsing.file_parser import TextParser, Quantity from runschema.run import Run, Program, TimeRun -from runschema.system import ( - System, Atoms) +from runschema.system import System, Atoms from runschema.method import ( - Method, BasisSet, Electronic, Scf, DFT, XCFunctional, Functional, - BasisSetAtomCentered, BasisSetContainer, + Method, + BasisSet, + Electronic, + Scf, + DFT, + XCFunctional, + Functional, + BasisSetAtomCentered, + BasisSetContainer, ) from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, Forces, ForcesEntry, BandStructure, - BandEnergies, Dos, DosValues + Calculation, + ScfIteration, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + BandStructure, + BandEnergies, + Dos, + DosValues, ) from simulationworkflowschema import ( - GeometryOptimization, GeometryOptimizationMethod, GeometryOptimizationResults) + GeometryOptimization, + GeometryOptimizationMethod, + GeometryOptimizationResults, +) from .metainfo.crystal import x_crystal_section_shell def capture(regex): - return r'(' + regex + r')' + return r"(" + regex + r")" -flt = r'-?(?:\d+\.?\d*|\d*\.?\d+)(?:E[\+-]?\d+)?' # Floating point number -flt_c = capture(flt) # Captures a floating point number -flt_crystal_c = r'(-?\d+(?:.\d+)?\*\*-?.*\d+)' # Crystal specific floating point syntax -ws = r'\s+' # Series of white-space characters -integer = r'-?\d+' # Integer number -integer_c = capture(integer) # Captures integer number -word = r'[a-zA-Z]+' # A single alphanumeric word -word_c = capture(word) # Captures a single alphanumeric word -br = r'\r?\n' # Newline that works for both Windows and Unix. Crystal can be run on a Windows machine as well. +flt = r"-?(?:\d+\.?\d*|\d*\.?\d+)(?:E[\+-]?\d+)?" # Floating point number +flt_c = capture(flt) # Captures a floating point number +flt_crystal_c = r"(-?\d+(?:.\d+)?\*\*-?.*\d+)" # Crystal specific floating point syntax +ws = r"\s+" # Series of white-space characters +integer = r"-?\d+" # Integer number +integer_c = capture(integer) # Captures integer number +word = r"[a-zA-Z]+" # A single alphanumeric word +word_c = capture(word) # Captures a single alphanumeric word +br = r"\r?\n" # Newline that works for both Windows and Unix. Crystal can be run on a Windows machine as well. class CrystalParser: - """NOMAD-lab parser for Crystal. - """ + """NOMAD-lab parser for Crystal.""" + def __init__(self): pass def parse_output(self, filepath): - """Reads the calculation output. - """ + """Reads the calculation output.""" outputparser = TextParser( filepath, quantities=[ # Header - Quantity("datetime", fr'(?:Date\:|date)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("hostname", fr'(?:Running on\:|hostname)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("os", fr'(?:system)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("user", fr'user\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("input_path", fr'(?:Input data|input data in)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("output_path", fr'(?:Output\:|output data in)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("executable_path", fr'(?:Executable\:|crystal executable in)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("tmpdir", fr'(?:Temporary directory\:|temporary directory)\s+(.*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("system_type", fr'(CRYSTAL|SLAB|POLYMER|HELIX|MOLECULE|EXTERNAL|DLVINPUT)', repeats=False), - Quantity("calculation_type", fr'(OPTGEOM|FREQCALC|ANHARM)', repeats=False), - + Quantity( + "datetime", + rf"(?:Date\:|date)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "hostname", + rf"(?:Running on\:|hostname)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "os", + rf"(?:system)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "user", + rf"user\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "input_path", + rf"(?:Input data|input data in)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "output_path", + rf"(?:Output\:|output data in)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "executable_path", + rf"(?:Executable\:|crystal executable in)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "tmpdir", + rf"(?:Temporary directory\:|temporary directory)\s+(.*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "system_type", + rf"(CRYSTAL|SLAB|POLYMER|HELIX|MOLECULE|EXTERNAL|DLVINPUT)", + repeats=False, + ), + Quantity( + "calculation_type", rf"(OPTGEOM|FREQCALC|ANHARM)", repeats=False + ), # Input Quantity( "dftd3", - fr'(DFTD3{br}[\s\S]*?END{br})', - sub_parser=TextParser(quantities=[ - Quantity( - "version", - r'(VERSION \d)', - str_operation=lambda x: x, - repeats=False, - ), - ]), + rf"(DFTD3{br}[\s\S]*?END{br})", + sub_parser=TextParser( + quantities=[ + Quantity( + "version", + r"(VERSION \d)", + str_operation=lambda x: x, + repeats=False, + ), + ] + ), repeats=False, ), Quantity( "grimme", - fr'(GRIMME{br}[\s\S]*?END{br})', + rf"(GRIMME{br}[\s\S]*?END{br})", repeats=False, ), Quantity( "dft", - fr'(DFT{br}[\w\s]*?END{br})', - sub_parser=TextParser(quantities=[ - Quantity( - "exchange", - fr'EXCHANGE{br}(LDA|VBH|BECKE|PBE|PBESOL|mPW91|PWGGA|SOGGA|WCGGA)', - repeats=False, - ), - Quantity( - "correlation", - fr'CORRELAT{br}(PZ|VBH|VWN|LYP|P86|PBE|PBESOL|PWGGA|PWLSD|WL)', - repeats=False, - ), - Quantity( - "exchange_correlation", - fr'(SVWN|BLYP|PBEXC|PBESOLXC|SOGGAXC|B3PW|B3LYP|PBE0|PBESOL0|B1WC|WCILYP|B97H|PBE0-13|HYBRID|NONLOCAL|HSE06|HSESOL|HISS|RSHXLDA|wB97|wB97X|LC-WPBE|LC-WPBESOL|LC-WBLYP|M05-2X|M05|M062X|M06HF|M06L|M06|B2PLYP|B2GPPLYP|mPW2PLYP|DHYBRID)', - repeats=False, - ), - ]), - repeats=False, - ), - Quantity("program_version", fr'{br} \*\s+CRYSTAL([\d]+)\s+\*', repeats=False, dtype=str), - Quantity("distribution", fr'{br} \*\s*({word} : \d+[\.\d+]*)', str_operation=lambda x: x, repeats=False), - Quantity("start_timestamp", fr' EEEEEEEEEE STARTING DATE\s+(.*? TIME .*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("title", fr' EEEEEEEEEE STARTING DATE.*?{br}\s*(.*?){br}{br}', str_operation=lambda x: x, repeats=False), - Quantity("hamiltonian_type", fr' (KOHN-SHAM HAMILTONIAN|HARTREE-FOCK HAMILTONIAN)', str_operation=lambda x: x, repeats=False), - Quantity("xc_out", fr' \(EXCHANGE\)\[CORRELATION\] FUNCTIONAL:(\([\s\S]+?\)\[[\s\S]+?\])', str_operation=lambda x: x, repeats=False), - Quantity("hybrid_out", fr' HYBRID EXCHANGE - PERCENTAGE OF FOCK EXCHANGE\s+{flt_c}', repeats=False), - + rf"(DFT{br}[\w\s]*?END{br})", + sub_parser=TextParser( + quantities=[ + Quantity( + "exchange", + rf"EXCHANGE{br}(LDA|VBH|BECKE|PBE|PBESOL|mPW91|PWGGA|SOGGA|WCGGA)", + repeats=False, + ), + Quantity( + "correlation", + rf"CORRELAT{br}(PZ|VBH|VWN|LYP|P86|PBE|PBESOL|PWGGA|PWLSD|WL)", + repeats=False, + ), + Quantity( + "exchange_correlation", + rf"(SVWN|BLYP|PBEXC|PBESOLXC|SOGGAXC|B3PW|B3LYP|PBE0|PBESOL0|B1WC|WCILYP|B97H|PBE0-13|HYBRID|NONLOCAL|HSE06|HSESOL|HISS|RSHXLDA|wB97|wB97X|LC-WPBE|LC-WPBESOL|LC-WBLYP|M05-2X|M05|M062X|M06HF|M06L|M06|B2PLYP|B2GPPLYP|mPW2PLYP|DHYBRID)", + repeats=False, + ), + ] + ), + repeats=False, + ), + Quantity( + "program_version", + rf"{br} \*\s+CRYSTAL([\d]+)\s+\*", + repeats=False, + dtype=str, + ), + Quantity( + "distribution", + rf"{br} \*\s*({word} : \d+[\.\d+]*)", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "start_timestamp", + rf" EEEEEEEEEE STARTING DATE\s+(.*? TIME .*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "title", + rf" EEEEEEEEEE STARTING DATE.*?{br}\s*(.*?){br}{br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "hamiltonian_type", + rf" (KOHN-SHAM HAMILTONIAN|HARTREE-FOCK HAMILTONIAN)", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "xc_out", + rf" \(EXCHANGE\)\[CORRELATION\] FUNCTIONAL:(\([\s\S]+?\)\[[\s\S]+?\])", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "hybrid_out", + rf" HYBRID EXCHANGE - PERCENTAGE OF FOCK EXCHANGE\s+{flt_c}", + repeats=False, + ), # Geometry optimization settings - Quantity('initial_trust_radius', fr' INITIAL TRUST RADIUS\s+{flt_c}', repeats=False), - Quantity('maximum_trust_radius', fr' MAXIMUM TRUST RADIUS\s+{flt_c}', repeats=False), - Quantity('maximum_gradient_component', fr' MAXIMUM GRADIENT COMPONENT\s+{flt_c}', repeats=False), - Quantity('rms_gradient_component', fr' R\.M\.S\. OF GRADIENT COMPONENT\s+{flt_c}', repeats=False), - Quantity('rms_displacement_component', fr' R\.M\.S\. OF DISPLACEMENT COMPONENTS\s+{flt_c}', repeats=False), - Quantity('geometry_change', fr' MAXIMUM DISPLACEMENT COMPONENT\s+{flt_c}', unit=ureg.bohr, repeats=False), - Quantity('energy_change', fr' THRESHOLD ON ENERGY CHANGE\s+{flt_c}', unit=ureg.hartree, repeats=False), - Quantity('extrapolating_polynomial_order', fr' EXTRAPOLATING POLYNOMIAL ORDER{ws}{integer_c}', repeats=False), - Quantity('max_steps', fr' MAXIMUM ALLOWED NUMBER OF STEPS\s+{integer_c}', repeats=False), - Quantity('sorting_of_energy_points', fr'SORTING OF ENERGY POINTS\:\s+{word_c}', repeats=False), - + Quantity( + "initial_trust_radius", + rf" INITIAL TRUST RADIUS\s+{flt_c}", + repeats=False, + ), + Quantity( + "maximum_trust_radius", + rf" MAXIMUM TRUST RADIUS\s+{flt_c}", + repeats=False, + ), + Quantity( + "maximum_gradient_component", + rf" MAXIMUM GRADIENT COMPONENT\s+{flt_c}", + repeats=False, + ), + Quantity( + "rms_gradient_component", + rf" R\.M\.S\. OF GRADIENT COMPONENT\s+{flt_c}", + repeats=False, + ), + Quantity( + "rms_displacement_component", + rf" R\.M\.S\. OF DISPLACEMENT COMPONENTS\s+{flt_c}", + repeats=False, + ), + Quantity( + "geometry_change", + rf" MAXIMUM DISPLACEMENT COMPONENT\s+{flt_c}", + unit=ureg.bohr, + repeats=False, + ), + Quantity( + "energy_change", + rf" THRESHOLD ON ENERGY CHANGE\s+{flt_c}", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "extrapolating_polynomial_order", + rf" EXTRAPOLATING POLYNOMIAL ORDER{ws}{integer_c}", + repeats=False, + ), + Quantity( + "max_steps", + rf" MAXIMUM ALLOWED NUMBER OF STEPS\s+{integer_c}", + repeats=False, + ), + Quantity( + "sorting_of_energy_points", + rf"SORTING OF ENERGY POINTS\:\s+{word_c}", + repeats=False, + ), # System - Quantity("material_type", fr' ((?:MOLECULAR|SLAB) CALCULATION){br}', str_operation=lambda x: x, repeats=False), - Quantity("crystal_family", fr' CRYSTAL FAMILY\s*:\s*([\s\S]+?)\s*{br}', str_operation=lambda x: x, repeats=False), - Quantity("crystal_class", fr' CRYSTAL CLASS \(GROTH - 1921\)\s*:\s*([\s\S]+?)\s*{br}', str_operation=lambda x: x, repeats=False), - Quantity("space_group", fr' SPACE GROUP \(CENTROSYMMETRIC\)\s*:\s*([\s\S]+?)\s*{br}', str_operation=lambda x: x, repeats=False), - Quantity("dimensionality", fr' GEOMETRY FOR WAVE FUNCTION - DIMENSIONALITY OF THE SYSTEM\s+(\d)', repeats=False), - Quantity( - 'lattice_parameters', - fr' (?:PRIMITIVE CELL - CENTRING CODE\s*[\s\S]*?\s*VOLUME=\s*{flt} - DENSITY\s*{flt} g/cm\^3{br}|PRIMITIVE CELL{br})' +\ - fr'\s+A\s+B\s+C\s+ALPHA\s+BETA\s+GAMMA.*\s+' +\ - fr'{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}', + Quantity( + "material_type", + rf" ((?:MOLECULAR|SLAB) CALCULATION){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "crystal_family", + rf" CRYSTAL FAMILY\s*:\s*([\s\S]+?)\s*{br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "crystal_class", + rf" CRYSTAL CLASS \(GROTH - 1921\)\s*:\s*([\s\S]+?)\s*{br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "space_group", + rf" SPACE GROUP \(CENTROSYMMETRIC\)\s*:\s*([\s\S]+?)\s*{br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "dimensionality", + rf" GEOMETRY FOR WAVE FUNCTION - DIMENSIONALITY OF THE SYSTEM\s+(\d)", + repeats=False, + ), + Quantity( + "lattice_parameters", + rf" (?:PRIMITIVE CELL - CENTRING CODE\s*[\s\S]*?\s*VOLUME=\s*{flt} - DENSITY\s*{flt} g/cm\^3{br}|PRIMITIVE CELL{br})" + + rf"\s+A\s+B\s+C\s+ALPHA\s+BETA\s+GAMMA.*\s+" + + rf"{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}", shape=(6), dtype=np.float64, repeats=False, ), Quantity( "labels_positions", - fr' ATOMS IN THE ASYMMETRIC UNIT\s+{integer} - ATOMS IN THE UNIT CELL:\s+{integer}{br}' +\ - fr'\s+ATOM\s+X(?:/A|\(ANGSTROM\))\s+Y(?:/B|\(ANGSTROM\))\s+Z(?:/C|\(ANGSTROM\))\s*{br}' +\ - re.escape(' *******************************************************************************') +\ - fr'((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}{br})+)', + rf" ATOMS IN THE ASYMMETRIC UNIT\s+{integer} - ATOMS IN THE UNIT CELL:\s+{integer}{br}" + + rf"\s+ATOM\s+X(?:/A|\(ANGSTROM\))\s+Y(?:/B|\(ANGSTROM\))\s+Z(?:/C|\(ANGSTROM\))\s*{br}" + + re.escape( + " *******************************************************************************" + ) + + rf"((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}{br})+)", shape=(-1, 7), dtype=str, repeats=False, ), Quantity( "labels_positions_raw", - fr'AT\.IRR\.\s+AT\s+AT\.N\.\s+X\s+Y\s+Z\s*{br}' +\ - fr'((?:\s+{integer}\s+{integer}\s+{integer}\s+{flt}\s+{flt}\s+{flt}{br})+)', + rf"AT\.IRR\.\s+AT\s+AT\.N\.\s+X\s+Y\s+Z\s*{br}" + + rf"((?:\s+{integer}\s+{integer}\s+{integer}\s+{flt}\s+{flt}\s+{flt}{br})+)", shape=(-1, 6), dtype=str, ), - # Used to capture an edited geometry. Can contain # substitutions, supercells, deformations etc. in any order. Quantity( - 'system_edited', - fr' \*\s+GEOMETRY EDITING([\s\S]+?)T = ATOM BELONGING TO THE ASYMMETRIC UNIT', - sub_parser=TextParser(quantities=[ - Quantity( - "lattice_parameters", - fr'A\s+B\s+C\s+ALPHA\s+BETA\s+GAMMA.+' - fr'\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}', - shape=(6), - dtype=np.float64, - repeats=False, - ), - Quantity( - "labels_positions", - fr'\s+ATOM\s+X(?:/A|\(ANGSTROM\))\s+Y(?:/B|\(ANGSTROM\))\s+Z(?:/C|\(ANGSTROM\))\s*{br}' +\ - re.escape(' *******************************************************************************') +\ - fr'((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}{br})+)', - shape=(-1, 7), - dtype=str, - repeats=False, - ), - Quantity( - "labels_positions_nanotube", - fr'\s+ATOM\s+X/A\s+Y\(ANGSTROM\)\s+Z\(ANGSTROM\)\s+R\(ANGS\)\s*{br}' +\ - re.escape(' *******************************************************************************') +\ - fr'((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}\s+{flt}{br})+)', - shape=(-1, 8), - dtype=str, - repeats=False, - ), - ]), - repeats=False, - ), - - Quantity( - 'lattice_vectors_restart', - fr' DIRECT LATTICE VECTOR COMPONENTS \(ANGSTROM\){br}' +\ - fr'\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}' +\ - fr'\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}' +\ - fr'\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}', + "system_edited", + rf" \*\s+GEOMETRY EDITING([\s\S]+?)T = ATOM BELONGING TO THE ASYMMETRIC UNIT", + sub_parser=TextParser( + quantities=[ + Quantity( + "lattice_parameters", + rf"A\s+B\s+C\s+ALPHA\s+BETA\s+GAMMA.+" + rf"\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}", + shape=(6), + dtype=np.float64, + repeats=False, + ), + Quantity( + "labels_positions", + rf"\s+ATOM\s+X(?:/A|\(ANGSTROM\))\s+Y(?:/B|\(ANGSTROM\))\s+Z(?:/C|\(ANGSTROM\))\s*{br}" + + re.escape( + " *******************************************************************************" + ) + + rf"((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}{br})+)", + shape=(-1, 7), + dtype=str, + repeats=False, + ), + Quantity( + "labels_positions_nanotube", + rf"\s+ATOM\s+X/A\s+Y\(ANGSTROM\)\s+Z\(ANGSTROM\)\s+R\(ANGS\)\s*{br}" + + re.escape( + " *******************************************************************************" + ) + + rf"((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}\s+{flt}{br})+)", + shape=(-1, 8), + dtype=str, + repeats=False, + ), + ] + ), + repeats=False, + ), + Quantity( + "lattice_vectors_restart", + rf" DIRECT LATTICE VECTOR COMPONENTS \(ANGSTROM\){br}" + + rf"\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}" + + rf"\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}" + + rf"\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}", shape=(3, 3), dtype=np.float64, repeats=False, ), Quantity( "labels_positions_restart", - fr' ATOM N\.AT\. SHELL X\(A\) Y\(A\) Z\(A\) EXAD N\.ELECT\.{br}' +\ - re.escape(' *******************************************************************************') +\ - fr'((?:\s+{integer}\s+{integer}\s+{word}\s+{integer}\s+{flt}\s+{flt}\s+{flt}\s+{flt}\s+{flt}{br})+)', + rf" ATOM N\.AT\. SHELL X\(A\) Y\(A\) Z\(A\) EXAD N\.ELECT\.{br}" + + re.escape( + " *******************************************************************************" + ) + + rf"((?:\s+{integer}\s+{integer}\s+{word}\s+{integer}\s+{flt}\s+{flt}\s+{flt}\s+{flt}\s+{flt}{br})+)", shape=(-1, 9), dtype=str, repeats=False, ), - Quantity("symmops", fr' NUMBER OF SYMMETRY OPERATORS\s*:\s*(\d){br}', repeats=False), - + Quantity( + "symmops", + rf" NUMBER OF SYMMETRY OPERATORS\s*:\s*(\d){br}", + repeats=False, + ), # Method Quantity( - 'basis_set', - re.escape(r' *******************************************************************************') +\ - fr'{br} LOCAL ATOMIC FUNCTIONS BASIS SET{br}' +\ - re.escape(r' *******************************************************************************') +\ - fr'{br} ATOM X\(AU\) Y\(AU\) Z\(AU\) N. TYPE EXPONENT S COEF P COEF D/F/G COEF{br}' +\ - fr'([\s\S]*?){br} INFORMATION', - sub_parser=TextParser(quantities=[ - Quantity( - "basis_sets", - fr'({br}{ws}{integer}{ws}{word}{ws}{flt}{ws}{flt}{ws}{flt}{br}(?:(?:\s+(?:\d+-\s+)?\d+\s+(?:S|P|SP|D|F|G)\s*{br}[\s\S]*?(?:{ws}{flt}(?:{ws})?{flt}(?:{ws})?{flt}(?:{ws})?{flt}{br})+)+)?)', - sub_parser=TextParser(quantities=[ - Quantity( - "species", - fr'{br}({ws}{integer}{ws}{word}{ws}{flt}{ws}{flt}{ws}{flt}{br})', - repeats=False, + "basis_set", + re.escape( + r" *******************************************************************************" + ) + + rf"{br} LOCAL ATOMIC FUNCTIONS BASIS SET{br}" + + re.escape( + r" *******************************************************************************" + ) + + rf"{br} ATOM X\(AU\) Y\(AU\) Z\(AU\) N. TYPE EXPONENT S COEF P COEF D/F/G COEF{br}" + + rf"([\s\S]*?){br} INFORMATION", + sub_parser=TextParser( + quantities=[ + Quantity( + "basis_sets", + rf"({br}{ws}{integer}{ws}{word}{ws}{flt}{ws}{flt}{ws}{flt}{br}(?:(?:\s+(?:\d+-\s+)?\d+\s+(?:S|P|SP|D|F|G)\s*{br}[\s\S]*?(?:{ws}{flt}(?:{ws})?{flt}(?:{ws})?{flt}(?:{ws})?{flt}{br})+)+)?)", + sub_parser=TextParser( + quantities=[ + Quantity( + "species", + rf"{br}({ws}{integer}{ws}{word}{ws}{flt}{ws}{flt}{ws}{flt}{br})", + repeats=False, + ), + Quantity( + "shells", + rf"(\s+(?:\d+-\s+)?\d+\s+(?:S|P|SP|D|F|G)\s*{br}[\s\S]*?(?:{ws}{flt}(?:{ws})?{flt}(?:{ws})?{flt}(?:{ws})?{flt}{br})+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "shell_range", + r"(\s+(?:\d+-\s+)?\d+)", + str_operation=lambda x: "".join( + x.split() + ), + repeats=False, + ), + Quantity( + "shell_type", + rf"((?:S|P|SP|D|F|G))\s*{br}", + str_operation=lambda x: x.strip(), + repeats=False, + ), + Quantity( + "shell_coefficients", + rf"{ws}({flt})(?:{ws})?({flt})(?:{ws})?({flt})(?:{ws})?({flt}){br}", + repeats=True, + dtype=np.float64, + shape=(4), + ), + ] + ), + repeats=True, + ), + ] ), - Quantity( - "shells", - fr'(\s+(?:\d+-\s+)?\d+\s+(?:S|P|SP|D|F|G)\s*{br}[\s\S]*?(?:{ws}{flt}(?:{ws})?{flt}(?:{ws})?{flt}(?:{ws})?{flt}{br})+)', - sub_parser=TextParser(quantities=[ + repeats=True, + ), + ] + ), + repeats=False, + ), + Quantity( + "fock_ks_matrix_mixing", + rf" INFORMATION \*+.*?\*+.*?\:\s+FOCK/KS MATRIX MIXING SET TO\s+{integer_c}\s+\%{br}", + repeats=False, + ), + Quantity( + "coulomb_bipolar_buffer", + rf" INFORMATION \*+.*?\*+.*?\:\s+COULOMB BIPOLAR BUFFER SET TO\s+{flt_c} Mb{br}", + repeats=False, + ), + Quantity( + "exchange_bipolar_buffer", + rf" INFORMATION \*+.*?\*+.*?\:\s+EXCHANGE BIPOLAR BUFFER SET TO\s+{flt_c} Mb{br}", + repeats=False, + ), + Quantity( + "toldee", + rf" INFORMATION \*+ TOLDEE \*+\s*\*+ SCF TOL ON TOTAL ENERGY SET TO\s+{flt_c}{br}", + repeats=False, + ), + Quantity( + "n_atoms_per_cell", + r" N\. OF ATOMS PER CELL\s+" + integer_c, + repeats=False, + ), + Quantity( + "n_shells", r" NUMBER OF SHELLS\s+" + integer_c, repeats=False + ), + Quantity("n_ao", r" NUMBER OF AO\s+" + integer_c, repeats=False), + Quantity( + "n_electrons", + r" N\. OF ELECTRONS PER CELL\s+" + integer_c, + repeats=False, + ), + Quantity( + "n_core_electrons", + r" CORE ELECTRONS PER CELL\s+" + integer_c, + repeats=False, + ), + Quantity( + "n_symmops", + r" N\. OF SYMMETRY OPERATORS\s+" + integer_c, + repeats=False, + ), + Quantity( + "tol_coulomb_overlap", + r" COULOMB OVERLAP TOL\s+\(T1\) " + flt_crystal_c, + str_operation=to_float, + repeats=False, + ), + Quantity( + "tol_coulomb_penetration", + r" COULOMB PENETRATION TOL\s+\(T2\) " + flt_crystal_c, + str_operation=to_float, + repeats=False, + ), + Quantity( + "tol_exchange_overlap", + r" EXCHANGE OVERLAP TOL\s+\(T3\) " + flt_crystal_c, + str_operation=to_float, + repeats=False, + ), + Quantity( + "tol_pseudo_overlap_f", + r" EXCHANGE PSEUDO OVP \(F\(G\)\)\s+\(T4\) " + flt_crystal_c, + str_operation=to_float, + repeats=False, + ), + Quantity( + "tol_pseudo_overlap_p", + r" EXCHANGE PSEUDO OVP \(P\(G\)\)\s+\(T5\) " + flt_crystal_c, + str_operation=to_float, + repeats=False, + ), + Quantity( + "pole_order", + r" POLE ORDER IN MONO ZONE\s+" + integer_c, + repeats=False, + ), + Quantity( + "calculation_type", + rf" TYPE OF CALCULATION \:\s+(.*?{br}\s+.*?){br}", + str_operation=lambda x: " ".join(x.split()), + repeats=False, + ), + Quantity( + "xc_functional", + rf" \(EXCHANGE\)\[CORRELATION\] FUNCTIONAL:(\(.+\)\[.+\]){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "cappa", + rf"CAPPA:IS1\s+{integer_c};IS2\s+{integer_c};IS3\s+{integer_c}; K PTS MONK NET\s+{integer_c}; SYMMOPS:\s*K SPACE\s+{integer_c};G SPACE\s+{integer_c}", + repeats=False, + ), + Quantity( + "scf_max_iteration", + r" MAX NUMBER OF SCF CYCLES\s+" + integer_c, + repeats=False, + ), + Quantity( + "convergenge_deltap", + r"CONVERGENCE ON DELTAP\s+" + flt_crystal_c, + str_operation=to_float, + repeats=False, + ), + Quantity( + "weight_f", + r"WEIGHT OF F\(I\) IN F\(I\+1\)\s+" + integer_c, + repeats=False, + ), + Quantity( + "scf_threshold_energy_change", + r"CONVERGENCE ON ENERGY\s+" + flt_crystal_c, + str_operation=to_float, + repeats=False, + unit=ureg.hartree, + ), + Quantity( + "shrink", + r"SHRINK\. FACT\.\(MONKH\.\)\s+(" + + integer + + ws + + integer + + ws + + integer + + r")", + repeats=False, + ), + Quantity( + "n_k_points_ibz", + r"NUMBER OF K POINTS IN THE IBZ\s+" + integer_c, + repeats=False, + ), + Quantity( + "shrink_gilat", + r"SHRINKING FACTOR\(GILAT NET\)\s+" + integer_c, + repeats=False, + ), + Quantity( + "n_k_points_gilat", + r"NUMBER OF K POINTS\(GILAT NET\)\s+" + integer_c, + repeats=False, + ), + # SCF + Quantity( + "scf_block", + r" CHARGE NORMALIZATION FACTOR([\s\S]*?) == SCF ENDED", + sub_parser=TextParser( + quantities=[ + Quantity( + "scf_iterations", + r"( CHARGE NORMALIZATION FACTOR[\s\S]*? (?:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT PDIG|TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT MPP_KSPA|== SCF ENDED))", + sub_parser=TextParser( + quantities=[ Quantity( - "shell_range", - r'(\s+(?:\d+-\s+)?\d+)', - str_operation=lambda x: "".join(x.split()), + "charge_normalization_factor", + rf" CHARGE NORMALIZATION FACTOR{ws}{flt}{br}", repeats=False, ), Quantity( - "shell_type", - fr'((?:S|P|SP|D|F|G))\s*{br}', - str_operation=lambda x: x.strip(), + "total_atomic_charges", + rf" TOTAL ATOMIC CHARGES:{br}(?:{ws}{flt})+{br}", repeats=False, ), Quantity( - "shell_coefficients", - fr'{ws}({flt})(?:{ws})?({flt})(?:{ws})?({flt})(?:{ws})?({flt}){br}', - repeats=True, + "QGAM", + rf" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT QGAM TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}", + repeats=False, + ), + Quantity( + "BIEL2", + rf" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT BIEL2 TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}", + repeats=False, + ), + Quantity( + "energy_kinetic", + rf" ::: KINETIC ENERGY\s+{flt_c}{br}", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "energy_ee", + rf" ::: TOTAL E-E\s+{flt_c}{br}", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "energy_en_ne", + rf" ::: TOTAL E-N \+ N-E\s+{flt_c}{br}", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "energy_nn", + rf" ::: TOTAL N-N\s+{flt_c}{br}", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "virial_coefficient", + rf" ::: VIRIAL COEFFICIENT\s+{flt_c}{br}", + repeats=False, + ), + Quantity( + "TOTENY", + rf" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TOTENY TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}", + repeats=False, + ), + Quantity( + "integrated_density", + rf" NUMERICALLY INTEGRATED DENSITY{ws}{flt}{br}", + repeats=False, + ), + Quantity( + "NUMDFT", + rf" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT NUMDFT TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}", + repeats=False, + ), + Quantity( + "energies", + rf" CYC{ws}{integer}{ws}ETOT\(AU\){ws}{flt_c}{ws}DETOT{ws}{flt_c}{ws}tst{ws}{flt}{ws}PX{ws}{flt}{br}", + repeats=False, dtype=np.float64, - shape=(4) + unit=ureg.hartree, ), - ]), - repeats=True, + Quantity( + "FDIK", + rf" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT FDIK TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}", + repeats=False, + ), + ] ), - ]), - repeats=True, - ), - ]), - repeats=False, - ), - Quantity("fock_ks_matrix_mixing", fr' INFORMATION \*+.*?\*+.*?\:\s+FOCK/KS MATRIX MIXING SET TO\s+{integer_c}\s+\%{br}', repeats=False), - Quantity("coulomb_bipolar_buffer", fr' INFORMATION \*+.*?\*+.*?\:\s+COULOMB BIPOLAR BUFFER SET TO\s+{flt_c} Mb{br}', repeats=False), - Quantity("exchange_bipolar_buffer", fr' INFORMATION \*+.*?\*+.*?\:\s+EXCHANGE BIPOLAR BUFFER SET TO\s+{flt_c} Mb{br}', repeats=False), - Quantity("toldee", fr' INFORMATION \*+ TOLDEE \*+\s*\*+ SCF TOL ON TOTAL ENERGY SET TO\s+{flt_c}{br}', repeats=False), - Quantity("n_atoms_per_cell", r' N\. OF ATOMS PER CELL\s+' + integer_c, repeats=False), - Quantity("n_shells", r' NUMBER OF SHELLS\s+' + integer_c, repeats=False), - Quantity("n_ao", r' NUMBER OF AO\s+' + integer_c, repeats=False), - Quantity("n_electrons", r' N\. OF ELECTRONS PER CELL\s+' + integer_c, repeats=False), - Quantity("n_core_electrons", r' CORE ELECTRONS PER CELL\s+' + integer_c, repeats=False), - Quantity("n_symmops", r' N\. OF SYMMETRY OPERATORS\s+' + integer_c, repeats=False), - Quantity("tol_coulomb_overlap", r' COULOMB OVERLAP TOL\s+\(T1\) ' + flt_crystal_c, str_operation=to_float, repeats=False), - Quantity("tol_coulomb_penetration", r' COULOMB PENETRATION TOL\s+\(T2\) ' + flt_crystal_c, str_operation=to_float, repeats=False), - Quantity("tol_exchange_overlap", r' EXCHANGE OVERLAP TOL\s+\(T3\) ' + flt_crystal_c, str_operation=to_float, repeats=False), - Quantity("tol_pseudo_overlap_f", r' EXCHANGE PSEUDO OVP \(F\(G\)\)\s+\(T4\) ' + flt_crystal_c, str_operation=to_float, repeats=False), - Quantity("tol_pseudo_overlap_p", r' EXCHANGE PSEUDO OVP \(P\(G\)\)\s+\(T5\) ' + flt_crystal_c, str_operation=to_float, repeats=False), - Quantity("pole_order", r' POLE ORDER IN MONO ZONE\s+' + integer_c, repeats=False), - Quantity("calculation_type", fr' TYPE OF CALCULATION \:\s+(.*?{br}\s+.*?){br}', str_operation=lambda x: " ".join(x.split()), repeats=False), - Quantity('xc_functional', fr' \(EXCHANGE\)\[CORRELATION\] FUNCTIONAL:(\(.+\)\[.+\]){br}', str_operation=lambda x: x, repeats=False,), - Quantity("cappa", fr'CAPPA:IS1\s+{integer_c};IS2\s+{integer_c};IS3\s+{integer_c}; K PTS MONK NET\s+{integer_c}; SYMMOPS:\s*K SPACE\s+{integer_c};G SPACE\s+{integer_c}', repeats=False), - Quantity('scf_max_iteration', r' MAX NUMBER OF SCF CYCLES\s+' + integer_c, repeats=False), - Quantity('convergenge_deltap', r'CONVERGENCE ON DELTAP\s+' + flt_crystal_c, str_operation=to_float, repeats=False), Quantity('weight_f', r'WEIGHT OF F\(I\) IN F\(I\+1\)\s+' + integer_c, repeats=False), - Quantity('scf_threshold_energy_change', r'CONVERGENCE ON ENERGY\s+' + flt_crystal_c, str_operation=to_float, repeats=False, unit=ureg.hartree), - Quantity('shrink', r'SHRINK\. FACT\.\(MONKH\.\)\s+(' + integer + ws + integer + ws + integer + r')', repeats=False), - Quantity('n_k_points_ibz', r'NUMBER OF K POINTS IN THE IBZ\s+' + integer_c, repeats=False), - Quantity('shrink_gilat', r'SHRINKING FACTOR\(GILAT NET\)\s+' + integer_c, repeats=False), - Quantity('n_k_points_gilat', r'NUMBER OF K POINTS\(GILAT NET\)\s+' + integer_c, repeats=False), - - # SCF + repeats=True, + ), + ] + ), + repeats=False, + ), Quantity( - "scf_block", - r' CHARGE NORMALIZATION FACTOR([\s\S]*?) == SCF ENDED', - sub_parser=TextParser(quantities=[ - Quantity( - 'scf_iterations', - r'( CHARGE NORMALIZATION FACTOR[\s\S]*? (?:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT PDIG|TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT MPP_KSPA|== SCF ENDED))', - sub_parser=TextParser(quantities=[ - Quantity('charge_normalization_factor', fr' CHARGE NORMALIZATION FACTOR{ws}{flt}{br}', repeats=False), - Quantity('total_atomic_charges', fr' TOTAL ATOMIC CHARGES:{br}(?:{ws}{flt})+{br}', repeats=False), - Quantity('QGAM', fr' TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT QGAM TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}', repeats=False), - Quantity('BIEL2', fr' TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT BIEL2 TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}', repeats=False), - Quantity('energy_kinetic', fr' ::: KINETIC ENERGY\s+{flt_c}{br}', unit=ureg.hartree, repeats=False), - Quantity('energy_ee', fr' ::: TOTAL E-E\s+{flt_c}{br}', unit=ureg.hartree, repeats=False), - Quantity('energy_en_ne', fr' ::: TOTAL E-N \+ N-E\s+{flt_c}{br}', unit=ureg.hartree, repeats=False), - Quantity('energy_nn', fr' ::: TOTAL N-N\s+{flt_c}{br}', unit=ureg.hartree, repeats=False), - Quantity('virial_coefficient', fr' ::: VIRIAL COEFFICIENT\s+{flt_c}{br}', repeats=False), - Quantity('TOTENY', fr' TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TOTENY TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}', repeats=False), - Quantity('integrated_density', fr' NUMERICALLY INTEGRATED DENSITY{ws}{flt}{br}', repeats=False), - Quantity('NUMDFT', fr' TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT NUMDFT TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}', repeats=False), - Quantity('energies', fr' CYC{ws}{integer}{ws}ETOT\(AU\){ws}{flt_c}{ws}DETOT{ws}{flt_c}{ws}tst{ws}{flt}{ws}PX{ws}{flt}{br}', repeats=False, dtype=np.float64, unit=ureg.hartree), - Quantity('FDIK', fr' TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT FDIK TELAPSE{ws}{flt}{ws}TCPU{ws}{flt}{br}', repeats=False), - ]), - repeats=True, - ), - ]), - repeats=False, - ), - Quantity('number_of_scf_iterations', fr' == SCF ENDED - CONVERGENCE ON (?:ENERGY|TESTER)\s+E\(AU\)\s*{flt}\s*CYCLES\s+{integer_c}', repeats=False), - Quantity( - 'energy_total', - fr' TOTAL ENERGY\((?:DFT|HF)\)\(AU\)\(\s*{integer}\)\s*{flt_c} DE\s*{flt} (?:tester|tst)\s*{flt}', + "number_of_scf_iterations", + rf" == SCF ENDED - CONVERGENCE ON (?:ENERGY|TESTER)\s+E\(AU\)\s*{flt}\s*CYCLES\s+{integer_c}", + repeats=False, + ), + Quantity( + "energy_total", + rf" TOTAL ENERGY\((?:DFT|HF)\)\(AU\)\(\s*{integer}\)\s*{flt_c} DE\s*{flt} (?:tester|tst)\s*{flt}", unit=ureg.hartree, repeats=False, ), - # Geometry optimization steps Quantity( "geo_opt", - fr'( (?:COORDINATE AND CELL OPTIMIZATION|COORDINATE OPTIMIZATION) - POINT\s+1{br}' +\ - r'[\s\S]*?' +\ - re.escape(r' ******************************************************************') + fr'{br}' +\ - fr'\s*\* OPT END - CONVERGED \* E\(AU\)\:\s+{flt}\s+POINTS\s+{integer})\s+\*{br}', - sub_parser=TextParser(quantities=[ - Quantity( - 'geo_opt_step', - fr' (?:COORDINATE AND CELL OPTIMIZATION|COORDINATE OPTIMIZATION) - POINT\s+{integer}{br}' +\ - fr'([\s\S]*?)' +\ - fr' ((?:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT OPTI|\* OPT END).+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'lattice_parameters', - fr' (?:PRIMITIVE CELL - CENTRING CODE [\s\S]*?VOLUME=\s*{flt} - DENSITY\s*{flt} g/cm\^3{br}|PRIMITIVE CELL{br})' +\ - fr' A B C ALPHA BETA GAMMA\s*' +\ - fr'{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}', - shape=(6), - dtype=np.float64, - repeats=False, - ), - Quantity( - "labels_positions", - fr'\s+ATOM\s+X(?:/A|\(ANGSTROM\))\s+Y(?:/B|\(ANGSTROM\))\s+Z(?:/C|\(ANGSTROM\))\s*{br}' +\ - re.escape(' *******************************************************************************') +\ - fr'((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}{br})+)', - shape=(-1, 7), - dtype=str, - repeats=False, - ), - Quantity( - "labels_positions_nanotube", - fr'\s+ATOM\s+X/A\s+Y\(ANGSTROM\)\s+Z\(ANGSTROM\)\s+R\(ANGS\)\s*{br}' +\ - re.escape(' *******************************************************************************') +\ - fr'((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}\s+{flt}{br})+)', - shape=(-1, 8), - dtype=str, - repeats=False, + rf"( (?:COORDINATE AND CELL OPTIMIZATION|COORDINATE OPTIMIZATION) - POINT\s+1{br}" + + r"[\s\S]*?" + + re.escape( + r" ******************************************************************" + ) + + rf"{br}" + + rf"\s*\* OPT END - CONVERGED \* E\(AU\)\:\s+{flt}\s+POINTS\s+{integer})\s+\*{br}", + sub_parser=TextParser( + quantities=[ + Quantity( + "geo_opt_step", + rf" (?:COORDINATE AND CELL OPTIMIZATION|COORDINATE OPTIMIZATION) - POINT\s+{integer}{br}" + + rf"([\s\S]*?)" + + rf" ((?:TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT OPTI|\* OPT END).+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "lattice_parameters", + rf" (?:PRIMITIVE CELL - CENTRING CODE [\s\S]*?VOLUME=\s*{flt} - DENSITY\s*{flt} g/cm\^3{br}|PRIMITIVE CELL{br})" + + rf" A B C ALPHA BETA GAMMA\s*" + + rf"{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}\s+{flt_c}{br}", + shape=(6), + dtype=np.float64, + repeats=False, + ), + Quantity( + "labels_positions", + rf"\s+ATOM\s+X(?:/A|\(ANGSTROM\))\s+Y(?:/B|\(ANGSTROM\))\s+Z(?:/C|\(ANGSTROM\))\s*{br}" + + re.escape( + " *******************************************************************************" + ) + + rf"((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}{br})+)", + shape=(-1, 7), + dtype=str, + repeats=False, + ), + Quantity( + "labels_positions_nanotube", + rf"\s+ATOM\s+X/A\s+Y\(ANGSTROM\)\s+Z\(ANGSTROM\)\s+R\(ANGS\)\s*{br}" + + re.escape( + " *******************************************************************************" + ) + + rf"((?:\s+{integer}\s+(?:T|F)\s+{integer}\s+[\s\S]*?\s+{flt}\s+{flt}\s+{flt}\s+{flt}{br})+)", + shape=(-1, 8), + dtype=str, + repeats=False, + ), + Quantity( + "energy", + rf" TOTAL ENERGY\({word}\)\(AU\)\(\s*{integer}\)\s*{flt_c}", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "time_physical", + rf"OPT.+? TELAPSE\s+({flt})", + ), + ] ), - Quantity('energy', fr' TOTAL ENERGY\({word}\)\(AU\)\(\s*{integer}\)\s*{flt_c}', unit=ureg.hartree, repeats=False), - Quantity('time_physical', fr'OPT.+? TELAPSE\s+({flt})') - ]), - repeats=True, - ), - Quantity('converged', fr' \* OPT END - ([\s\S]*?) \* E\(AU\)\:\s+{flt}\s+POINTS\s+{integer}', repeats=False), - ]), + repeats=True, + ), + Quantity( + "converged", + rf" \* OPT END - ([\s\S]*?) \* E\(AU\)\:\s+{flt}\s+POINTS\s+{integer}", + repeats=False, + ), + ] + ), repeats=False, ), - # Band structure Quantity( "band_structure", - re.escape(fr' *******************************************************************************') + fr'{br}' +\ - fr' \* \*{br}' +\ - fr' \* BAND STRUCTURE \*{br}' +\ - fr'[\s\S]*?' +\ - fr' \* FROM BAND\s+{integer} TO BAND\s+{integer}\s+\*{br}' +\ - fr' \* TOTAL OF\s+{integer} K-POINTS ALONG THE PATH\s+\*{br}' +\ - fr' \* \*{br}' +\ - re.escape(r' *******************************************************************************') + fr'{br}' +\ - fr'([\s\S]*?' +\ - fr' ENERGY RANGE \(A\.U\.\)\s*{flt} - \s*{flt} EFERMI\s*{flt_c}{br})', - sub_parser=TextParser(quantities=[ - Quantity( - 'segments', - fr' (LINE\s+{integer} \( {flt} {flt} {flt}: {flt} {flt} {flt}\) IN TERMS OF PRIMITIVE LATTICE VECTORS{br}' +\ - fr'\s+{integer} POINTS - SHRINKING_FACTOR\s*{integer}{br}' +\ - fr' CARTESIAN COORD\.\s+\( {flt} {flt} {flt}\):\( {flt} {flt} {flt}\) STEP\s+{flt}{br}{br}{br})', - sub_parser=TextParser(quantities=[ - Quantity( - 'start_end', - fr'LINE\s+{integer} \( {flt_c} {flt_c} {flt_c}: {flt_c} {flt_c} {flt_c}\) IN TERMS OF PRIMITIVE LATTICE VECTORS{br}', - type=np.float64, - shape=(2, 3), - repeats=False, - ), - Quantity( - 'n_steps', - fr'\s+{integer_c} POINTS - ', - repeats=False, - ), - Quantity( - 'shrinking_factor', - fr'SHRINKING_FACTOR\s*{integer_c}{br}', - repeats=False, + re.escape( + rf" *******************************************************************************" + ) + + rf"{br}" + + rf" \* \*{br}" + + rf" \* BAND STRUCTURE \*{br}" + + rf"[\s\S]*?" + + rf" \* FROM BAND\s+{integer} TO BAND\s+{integer}\s+\*{br}" + + rf" \* TOTAL OF\s+{integer} K-POINTS ALONG THE PATH\s+\*{br}" + + rf" \* \*{br}" + + re.escape( + r" *******************************************************************************" + ) + + rf"{br}" + + rf"([\s\S]*?" + + rf" ENERGY RANGE \(A\.U\.\)\s*{flt} - \s*{flt} EFERMI\s*{flt_c}{br})", + sub_parser=TextParser( + quantities=[ + Quantity( + "segments", + rf" (LINE\s+{integer} \( {flt} {flt} {flt}: {flt} {flt} {flt}\) IN TERMS OF PRIMITIVE LATTICE VECTORS{br}" + + rf"\s+{integer} POINTS - SHRINKING_FACTOR\s*{integer}{br}" + + rf" CARTESIAN COORD\.\s+\( {flt} {flt} {flt}\):\( {flt} {flt} {flt}\) STEP\s+{flt}{br}{br}{br})", + sub_parser=TextParser( + quantities=[ + Quantity( + "start_end", + rf"LINE\s+{integer} \( {flt_c} {flt_c} {flt_c}: {flt_c} {flt_c} {flt_c}\) IN TERMS OF PRIMITIVE LATTICE VECTORS{br}", + type=np.float64, + shape=(2, 3), + repeats=False, + ), + Quantity( + "n_steps", + rf"\s+{integer_c} POINTS - ", + repeats=False, + ), + Quantity( + "shrinking_factor", + rf"SHRINKING_FACTOR\s*{integer_c}{br}", + repeats=False, + ), + ] ), - ]), - repeats=True, - ), - Quantity("fermi_energy", fr' ENERGY RANGE \(A\.U\.\)\s*{flt} - \s*{flt} EFERMI\s*{flt_c}', repeats=False), - ]), + repeats=True, + ), + Quantity( + "fermi_energy", + rf" ENERGY RANGE \(A\.U\.\)\s*{flt} - \s*{flt} EFERMI\s*{flt_c}", + repeats=False, + ), + ] + ), repeats=False, ), - # DOS Quantity( - 'dos', - fr' RESTART WITH NEW K POINTS NET{br}' +\ - fr'([\s\S]+?' +\ - fr' TOTAL AND PROJECTED DENSITY OF STATES - FOURIER LEGENDRE METHOD{br}' +\ - fr'[\s\S]+?)' +\ - fr' TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT DOSS TELAPSE', - sub_parser=TextParser(quantities=[ - Quantity( - 'k_points', - fr' \*\*\* K POINTS COORDINATES (OBLIQUE COORDINATES IN UNITS OF IS = {int}){br}', - repeats=False, - ), - Quantity( - 'highest_occupied', - fr' TOP OF VALENCE BANDS - BAND\s*{integer}; K\s*{integer}; EIG {flt_c}\s*AU', - unit=ureg.hartree, - repeats=False, - ), - Quantity( - 'lowest_unoccupied', - fr' BOTTOM OF VIRTUAL BANDS - BAND\s*{integer}; K\s*{integer}; EIG\s*{flt_c}\s*AU', - unit=ureg.hartree, - repeats=False, - ), - ]), - repeats=False, - ), - Quantity("end_timestamp", fr' EEEEEEEEEE TERMINATION DATE\s+(.*? TIME .*?){br}', str_operation=lambda x: x, repeats=False), - + "dos", + rf" RESTART WITH NEW K POINTS NET{br}" + + rf"([\s\S]+?" + + rf" TOTAL AND PROJECTED DENSITY OF STATES - FOURIER LEGENDRE METHOD{br}" + + rf"[\s\S]+?)" + + rf" TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT DOSS TELAPSE", + sub_parser=TextParser( + quantities=[ + Quantity( + "k_points", + rf" \*\*\* K POINTS COORDINATES (OBLIQUE COORDINATES IN UNITS OF IS = {int}){br}", + repeats=False, + ), + Quantity( + "highest_occupied", + rf" TOP OF VALENCE BANDS - BAND\s*{integer}; K\s*{integer}; EIG {flt_c}\s*AU", + unit=ureg.hartree, + repeats=False, + ), + Quantity( + "lowest_unoccupied", + rf" BOTTOM OF VIRTUAL BANDS - BAND\s*{integer}; K\s*{integer}; EIG\s*{flt_c}\s*AU", + unit=ureg.hartree, + repeats=False, + ), + ] + ), + repeats=False, + ), + Quantity( + "end_timestamp", + rf" EEEEEEEEEE TERMINATION DATE\s+(.*? TIME .*?){br}", + str_operation=lambda x: x, + repeats=False, + ), # Forces Quantity( - 'forces', - fr' CARTESIAN FORCES IN HARTREE/BOHR \(ANALYTICAL\){br}' - fr' ATOM X Y Z{br}' +\ - fr'((?:' + ws + integer + ws + integer + ws + flt + ws + flt + ws + flt + fr'{br})*)', + "forces", + rf" CARTESIAN FORCES IN HARTREE/BOHR \(ANALYTICAL\){br}" + rf" ATOM X Y Z{br}" + + rf"((?:" + + ws + + integer + + ws + + integer + + ws + + flt + + ws + + flt + + ws + + flt + + rf"{br})*)", shape=(-1, 5), dtype=str, repeats=False, ), - Quantity("end_timestamp", fr' EEEEEEEEEE TERMINATION DATE\s+(.*? TIME .*?){br}', str_operation=lambda x: x, repeats=False), - Quantity("time_end", fr'END +TELAPSE +({flt_c})', dtype=np.float64), - + Quantity( + "end_timestamp", + rf" EEEEEEEEEE TERMINATION DATE\s+(.*? TIME .*?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity("time_end", rf"END +TELAPSE +({flt_c})", dtype=np.float64), # Filepaths - Quantity("f25_filepath1", fr'file fort\.25 saved as ([\s\S]+?){br}', str_operation=lambda x: x, repeats=False), - Quantity("f25_filepath2", fr'BAND/MAPS/DOSS data for plotting fort.25 saved as ([\s\S]+?){br}', str_operation=lambda x: x, repeats=False), - ] + Quantity( + "f25_filepath1", + rf"file fort\.25 saved as ([\s\S]+?){br}", + str_operation=lambda x: x, + repeats=False, + ), + Quantity( + "f25_filepath2", + rf"BAND/MAPS/DOSS data for plotting fort.25 saved as ([\s\S]+?){br}", + str_operation=lambda x: x, + repeats=False, + ), + ], ) return outputparser def parse_f25(self, filepath): - """Parses the f25 file containing e.g. the band structure energies." - """ + """Parses the f25 file containing e.g. the band structure energies." """ f25parser = TextParser( filepath, quantities=[ # Band structure energies Quantity( - 'segments', - fr'(-\%-0BAND\s*{integer}\s*{integer}\s?{flt}\s?{flt}\s?{flt}{br}' +\ - fr'\s*{flt}\s*{flt}{br}' +\ - fr'\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}' +\ - fr'(?:\s*{flt})+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'first_row', - fr'-\%-0BAND\s*{integer_c}\s*{integer_c}\s?{flt_c}\s?{flt_c}\s?{flt_c}{br}', - repeats=False, - ), - Quantity( - 'second_row', - fr'\s?{flt_c}\s?{flt_c}{br}', - repeats=False, - ), - Quantity( - 'energies', - fr'\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}' +\ - fr'((?:{flt}\s?)+)', - str_operation=lambda x: x, - repeats=False, - ), - ]), + "segments", + rf"(-\%-0BAND\s*{integer}\s*{integer}\s?{flt}\s?{flt}\s?{flt}{br}" + + rf"\s*{flt}\s*{flt}{br}" + + rf"\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}" + + rf"(?:\s*{flt})+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "first_row", + rf"-\%-0BAND\s*{integer_c}\s*{integer_c}\s?{flt_c}\s?{flt_c}\s?{flt_c}{br}", + repeats=False, + ), + Quantity( + "second_row", + rf"\s?{flt_c}\s?{flt_c}{br}", + repeats=False, + ), + Quantity( + "energies", + rf"\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}" + + rf"((?:{flt}\s?)+)", + str_operation=lambda x: x, + repeats=False, + ), + ] + ), repeats=True, ), # DOS values Quantity( "dos", - fr'(-\%-0DOSS\s*{integer}\s*{integer}\s?{flt}\s?{flt}\s?{flt}{br}' +\ - fr'\s*{flt}\s?{flt}{br}' +\ - fr'\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}' +\ - fr'(?:\s*{flt})+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'first_row', - fr'-\%-0DOSS\s*{integer_c}\s*{integer_c}\s?{flt_c}\s?{flt_c}\s?{flt_c}{br}', - repeats=False, - ), - Quantity( - 'second_row', - fr'\s?{flt_c}\s?{flt_c}{br}', - repeats=False, - ), - Quantity( - 'values', - fr'\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}' +\ - fr'((?:\s*{flt})+)', - str_operation=lambda x: x, - repeats=False, - ), - ]), - repeats=False, - ), - ] + rf"(-\%-0DOSS\s*{integer}\s*{integer}\s?{flt}\s?{flt}\s?{flt}{br}" + + rf"\s*{flt}\s?{flt}{br}" + + rf"\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}" + + rf"(?:\s*{flt})+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "first_row", + rf"-\%-0DOSS\s*{integer_c}\s*{integer_c}\s?{flt_c}\s?{flt_c}\s?{flt_c}{br}", + repeats=False, + ), + Quantity( + "second_row", + rf"\s?{flt_c}\s?{flt_c}{br}", + repeats=False, + ), + Quantity( + "values", + rf"\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}\s*{integer}{br}" + + rf"((?:\s*{flt})+)", + str_operation=lambda x: x, + repeats=False, + ), + ] + ), + repeats=False, + ), + ], ) return f25parser @@ -579,7 +1021,7 @@ def parse(self, filepath, archive, logger): # Run run = Run() archive.run.append(run) - run.program = Program(name='Crystal', version=out["program_version"]) + run.program = Program(name="Crystal", version=out["program_version"]) run.x_crystal_datetime = out["datetime"] run.x_crystal_hostname = out["hostname"] run.x_crystal_user = out["user"] @@ -598,7 +1040,8 @@ def parse(self, filepath, archive, logger): run.x_crystal_run_title = title.strip() run.time_run = TimeRun( date_start=to_unix_time(out["start_timestamp"]), - date_end=to_unix_time(out["end_timestamp"])) + date_end=to_unix_time(out["end_timestamp"]), + ) # System. There are several alternative sources for this information # depending on the run type. @@ -646,7 +1089,7 @@ def parse(self, filepath, archive, logger): if atomic_numbers is None: # TODO define regex pattern for labels_positions to capture other versions - logger.error('Error parsing system.') + logger.error("Error parsing system.") return cart_pos, atomic_numbers, atom_labels, lattice_vectors = to_system( @@ -658,8 +1101,12 @@ def parse(self, filepath, archive, logger): ) system.atoms = Atoms( - lattice_vectors=lattice_vectors, periodic=pbc, positions=cart_pos, - species=atomic_numbers, labels=atom_labels) + lattice_vectors=lattice_vectors, + periodic=pbc, + positions=cart_pos, + species=atomic_numbers, + labels=atom_labels, + ) system.x_crystal_dimensionality = dimensionality crystal_family = out["crystal_family"] system.x_crystal_family = crystal_family @@ -684,34 +1131,41 @@ def parse(self, filepath, archive, logger): shells = bs["shells"] if atomic_number != covered_species and shells is not None: section_basis_sets.append( - BasisSetAtomCentered(atom_number=atomic_number,) + BasisSetAtomCentered( + atom_number=atomic_number, + ) ) covered_species.add(atomic_number) for shell in shells: section_shell = x_crystal_section_shell( x_crystal_shell_range=str(shell["shell_range"]), x_crystal_shell_type=shell["shell_type"], - x_crystal_shell_coefficients=np.array(shell["shell_coefficients"]), + x_crystal_shell_coefficients=np.array( + shell["shell_coefficients"] + ), + ) + section_basis_sets[-1].x_crystal_section_shell.append( + section_shell ) - section_basis_sets[-1].x_crystal_section_shell.append(section_shell) method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', - scope=['wavefunction'], + type="atom-centered orbitals", + scope=["wavefunction"], basis_set=[ BasisSet( - type='gaussians', # the scope can fluctuate depending on the use of ECPs + type="gaussians", # the scope can fluctuate depending on the use of ECPs atom_centered=section_basis_sets, ) - ] + ], ) ] - method.electronic = Electronic(method='DFT') + method.electronic = Electronic(method="DFT") method.scf = Scf( n_max_iteration=out["scf_max_iteration"], - threshold_energy_change=out["scf_threshold_energy_change"]) + threshold_energy_change=out["scf_threshold_energy_change"], + ) dftd3 = out["dftd3"] if dftd3: if dftd3["version"] == "VERSION 2": # pylint: disable=E1136 @@ -807,7 +1261,9 @@ def add_functionals(functionals): section_scf.energy.total = EnergyEntry(value=energies[0]) section_scf.energy.change = energies[1] energy_kinetic = scf["energy_kinetic"] - section_scf.energy.electronic_kinetic = EnergyEntry(value=energy_kinetic) + section_scf.energy.electronic_kinetic = EnergyEntry( + value=energy_kinetic + ) energy_ee = scf["energy_ee"] section_scf.x_crystal_scf_energy_ee = energy_ee energy_en_ne = scf["energy_en_ne"] @@ -822,11 +1278,17 @@ def add_functionals(functionals): # If the final energy is found, replace the final SCF step energy # with it, as it is more accurate. if scc.scf_iteration: - scc.scf_iteration[-1].energy.total = EnergyEntry(value=out["energy_total"]) + scc.scf_iteration[-1].energy.total = EnergyEntry( + value=out["energy_total"] + ) scc.energy = Energy(total=EnergyEntry(value=out["energy_total"])) forces = out["forces"] if forces is not None: - scc.forces = Forces(total=ForcesEntry(value=forces[:, 2:].astype(float) * ureg.hartree / ureg.bohr)) # pylint: disable=E1136 + scc.forces = Forces( + total=ForcesEntry( + value=forces[:, 2:].astype(float) * ureg.hartree / ureg.bohr + ) + ) # pylint: disable=E1136 scc.system_ref = system scc.method_ref = method @@ -835,7 +1297,11 @@ def add_functionals(functionals): if band_structure is not None: section_band = BandStructure() scc.band_structure_electronic.append(section_band) - section_band.reciprocal_cell = atomutils.reciprocal_cell(system.atoms.lattice_vectors.magnitude) * 1 / ureg.meter + section_band.reciprocal_cell = ( + atomutils.reciprocal_cell(system.atoms.lattice_vectors.magnitude) + * 1 + / ureg.meter + ) segments = band_structure["segments"] # pylint: disable=E1136 k_points = to_k_points(segments) for i_seg, segment in enumerate(segments): @@ -870,9 +1336,13 @@ def add_functionals(functionals): # or not. start_k_point = section_band.segment[i_seg].kpoints[0] end_k_point = section_band.segment[i_seg].kpoints[-1] - if prev_k_point is not None and np.allclose(prev_k_point, start_k_point): + if prev_k_point is not None and np.allclose( + prev_k_point, start_k_point + ): energies = np.concatenate(([prev_energy], energies), axis=0) - section_band.segment[i_seg].energies = energies[None, :] * ureg.hartree + section_band.segment[i_seg].energies = ( + energies[None, :] * ureg.hartree + ) prev_energy = energies[-1] prev_k_point = end_k_point @@ -906,7 +1376,9 @@ def add_functionals(functionals): sec_dos = Dos() scc_dos.dos_electronic.append(sec_dos) sec_dos.spin_channel = spin if n_spin_channels == 2 else None - sec_dos.energies = (start_energy + np.arange(rows) * de) * ureg.hartree + sec_dos.energies = ( + start_energy + np.arange(rows) * de + ) * ureg.hartree sec_dos_total = DosValues() sec_dos.total.append(sec_dos_total) sec_dos_total.value = dos_values[spin] @@ -917,9 +1389,15 @@ def add_functionals(functionals): steps = geo_opt["geo_opt_step"] # pylint: disable=E1136 if steps is not None: archive.workflow2 = GeometryOptimization( - method=GeometryOptimizationMethod(), results=GeometryOptimizationResults()) - archive.workflow2.method.convergence_tolerance_energy_difference = out["energy_change"] - archive.workflow2.method.convergence_tolerance_displacement_maximum = out["geometry_change"] + method=GeometryOptimizationMethod(), + results=GeometryOptimizationResults(), + ) + archive.workflow2.method.convergence_tolerance_energy_difference = out[ + "energy_change" + ] + archive.workflow2.method.convergence_tolerance_displacement_maximum = ( + out["geometry_change"] + ) # First step is special: it refers to the initial system which # was printed before entering the geometry optimization loop. @@ -944,7 +1422,12 @@ def add_functionals(functionals): i_atom_labels = i_labels_positions[:, 3] i_atom_pos = i_labels_positions[:, 4:7] i_lattice_parameters = step["lattice_parameters"] - i_cart_pos, i_atomic_numbers, i_atom_labels, i_lattice_vectors = to_system( + ( + i_cart_pos, + i_atomic_numbers, + i_atom_labels, + i_lattice_vectors, + ) = to_system( i_atomic_numbers, i_atom_labels, i_atom_pos, @@ -952,22 +1435,32 @@ def add_functionals(functionals): dimensionality, ) i_system.atoms = Atoms( - species=i_atomic_numbers, labels=i_atom_labels, positions=i_cart_pos, - lattice_vectors=i_lattice_vectors, periodic=pbc) + species=i_atomic_numbers, + labels=i_atom_labels, + positions=i_cart_pos, + lattice_vectors=i_lattice_vectors, + periodic=pbc, + ) i_scc.energy = Energy(total=EnergyEntry(value=i_energy)) i_scc.system_ref = i_system i_scc.method_ref = method i_scc.time_physical = step["time_physical"] if i_scc.time_physical: - i_scc.time_calculation = i_scc.time_physical - run.calculation[-2].time_physical + i_scc.time_calculation = ( + i_scc.time_physical - run.calculation[-2].time_physical + ) frames.append(i_scc) if frames: i_scc.time_physical = out["time_end"] - i_scc.time_calculation = i_scc.time_physical - run.calculation[-2].time_physical + i_scc.time_calculation = ( + i_scc.time_physical - run.calculation[-2].time_physical + ) - archive.workflow2.results.is_converged_geometry = geo_opt["converged"] == "CONVERGED" # pylint: disable=E1136 + archive.workflow2.results.is_converged_geometry = ( + geo_opt["converged"] == "CONVERGED" + ) # pylint: disable=E1136 # Remove ghost atom information. The metainfo does not provide a very # good way to deal with them currently so they are simply removed. @@ -999,7 +1492,7 @@ def to_k_points(segments): delta = end - start start_step = (shrinking_factor * start).astype(np.int32) step_size = (shrinking_factor * delta / n_steps).astype(np.int32) - steps = (start_step + step_size * np.arange(0, end_idx)[:, None]) + steps = start_step + step_size * np.arange(0, end_idx)[:, None] k_points = steps / shrinking_factor all_k_points.append(k_points) prev_point = end @@ -1051,8 +1544,7 @@ def to_float(value): def to_array(cols, rows, values): - """Transforms the Crystal-specific f25 array syntax into a numpy array. - """ + """Transforms the Crystal-specific f25 array syntax into a numpy array.""" values.replace("\n", "") values = textwrap.wrap(values, 12) values = np.array(values, dtype=np.float64) @@ -1077,7 +1569,9 @@ def remove_ghosts(run): if np.any(ghosts_mask): system.atoms.species = np.delete(system.atoms.species, ghosts_mask) system.atoms.labels = np.delete(system.atoms.labels, ghosts_mask) - system.atoms.positions = np.delete(system.atoms.positions.magnitude, ghosts_mask, axis=0) + system.atoms.positions = np.delete( + system.atoms.positions.magnitude, ghosts_mask, axis=0 + ) def label_to_atomic_number(value): @@ -1116,7 +1610,7 @@ def to_unix_time(value): return None value = value.strip() - date_time_obj = datetime.datetime.strptime(value, '%d %m %Y TIME %H:%M:%S.%f') + date_time_obj = datetime.datetime.strptime(value, "%d %m %Y TIME %H:%M:%S.%f") return date_time_obj.timestamp() @@ -1243,4 +1737,7 @@ def to_libxc_name(functionals): """Given a list of section_XC_functionals, returns the single string that represents them all. """ - return "+".join("{}*{}".format(x.weight, x.name) for x in sorted(functionals, key=lambda x: x.name)) + return "+".join( + "{}*{}".format(x.weight, x.name) + for x in sorted(functionals, key=lambda x: x.name) + ) diff --git a/electronicparsers/dmol3/metainfo/dmol3.py b/electronicparsers/dmol3/metainfo/dmol3.py index d6a7153b..cfc11d52 100644 --- a/electronicparsers/dmol3/metainfo/dmol3.py +++ b/electronicparsers/dmol3/metainfo/dmol3.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,563 +39,626 @@ class x_dmol3_section_hirshfeld_population(MSection): - ''' + """ Hirshfeld Population Analysis Section - ''' + """ m_def = Section(validate=False) x_dmol3_hirshfeld_population = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Hirshfeld Population Analysis - ''') + """, + ) class x_dmol3_section_mulliken_population(MSection): - ''' + """ Mulliken Population Analysis Section - ''' + """ m_def = Section(validate=False) x_dmol3_mulliken_population = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mulliken Population Analysis - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_aux_density = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 aux density - ''') + """, + ) x_dmol3_aux_partition = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dmol3 aux parition - ''') + """, + ) x_dmol3_basis_name = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 basis name - ''') + """, + ) x_dmol3_calculation_type = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 calculation type - ''') + """, + ) x_dmol3_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 system charge - ''') + """, + ) x_dmol3_electrostatic_moments = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Electrostatic_Moments - ''') + """, + ) x_dmol3_functional_name = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 functional name - ''') + """, + ) x_dmol3_hirshfeld_analysis = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Hirshfeld_Analysis - ''') + """, + ) x_dmol3_integration_grid = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 integration grid - ''') + """, + ) x_dmol3_kpoints = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Kpoints - ''') + """, + ) x_dmol3_mulliken_analysis = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Mulliken_Analysis - ''') + """, + ) x_dmol3_nuclear_efg = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Nuclear_EFG - ''') + """, + ) x_dmol3_occupation_name = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Occupation name - ''') + """, + ) x_dmol3_occupation_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 Occupation width - ''') + """, + ) x_dmol3_opt_coordinate_system = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 OPT_Coordinate_System - ''') + """, + ) x_dmol3_opt_displacement_convergence = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 OPT_Displacement_Convergence - ''') + """, + ) x_dmol3_opt_energy_convergence = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 OPT_Energy_Convergence - ''') + """, + ) x_dmol3_opt_gdiis = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 OPT_Gdiis - ''') + """, + ) x_dmol3_opt_gradient_convergence = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 OPT_Gradient_Convergence - ''') + """, + ) x_dmol3_opt_hessian_project = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 OPT_Hessian_Project - ''') + """, + ) x_dmol3_opt_iterations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dmol3 OPT_Iterations - ''') + """, + ) x_dmol3_opt_max_displacement = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 OPT_Max_Displacement - ''') + """, + ) x_dmol3_opt_steep_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 OPT_Steep_Tol - ''') + """, + ) x_dmol3_optical_absorption = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Optical_Absorption - ''') + """, + ) x_dmol3_partial_dos = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 Partial_Dos - ''') + """, + ) x_dmol3_pseudopotential_name = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 pseudopotential name - ''') + """, + ) x_dmol3_rcut = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 atom R_cut - ''') + """, + ) x_dmol3_scf_charge_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 SCF_Charge_Mixing - ''') + """, + ) x_dmol3_scf_density_convergence = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 SCF_Density_Convergence - ''') + """, + ) x_dmol3_scf_diis_name = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 SCF_DIIS name - ''') + """, + ) x_dmol3_scf_diis_number = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 SCF_DIIS number - ''') + """, + ) x_dmol3_scf_direct = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 SCF_Direct - ''') + """, + ) x_dmol3_scf_iterations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dmol3 SCF_Iterations - ''') + """, + ) x_dmol3_scf_number_bad_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dmol3 SCF_Number_Bad_Steps - ''') + """, + ) x_dmol3_scf_restart = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 SCF_Restart - ''') + """, + ) x_dmol3_scf_spin_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 SCF_Spin_Mixing - ''') + """, + ) x_dmol3_spin_polarization = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 spin polarization - ''') + """, + ) x_dmol3_spin = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dmol3 number of unpaired electrons - ''') + """, + ) x_dmol3_symmetry = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 sysmmetry - ''') + """, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_binding_energy_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" dmol3 binding energy at every SCF - ''') + """, + ) x_dmol3_convergence_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 convergence at every SCF - ''') + """, + ) x_dmol3_number_scf_iteration = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dmol3 iteration number at every SCF - ''') + """, + ) x_dmol3_time_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dmol3 time at every SCF - ''') + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_eigenvalue_eigenvalue = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Single eigenvalue - ''') + """, + ) x_dmol3_eigenvalue_occupation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Occupation of single eigenfunction - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_geometry_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" labels of atom - ''') + """, + ) x_dmol3_geometry_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of atomic position - ''') + """, + ) x_dmol3_geometry_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of atomic position - ''') + """, + ) x_dmol3_geometry_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of atomic position - ''') + """, + ) class Program(runschema.run.Program): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_compilation_date = Quantity( type=str, shape=[], - description=''' + description=""" dmol3 compilation date - ''') + """, + ) class Energy(runschema.calculation.Energy): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_binding = SubSection( sub_section=runschema.calculation.EnergyEntry.m_def, - description=''' + description=""" Binding energy. - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_dmol3_h_trans = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_h_rot = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_h_pv = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_h_pv = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_h_vib_minus_zpve = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_s_trans = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_s_rot = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_s_vib = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_c_trans = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_c_rot = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_c_vib = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_c_total = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_h_total_minus_zpve = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_s_total = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_c_total = Quantity( type=np.dtype(np.float64), shape=[], # unit='cal/mol/K', - description=''' - ''') + description=""" + """, + ) x_dmol3_gibbs_total = Quantity( type=np.dtype(np.float64), shape=[], # unit='kcal/mol', - description=''' - ''') + description=""" + """, + ) x_dmol3_section_hirshfeld_population = SubSection( - sub_section=SectionProxy('x_dmol3_section_hirshfeld_population'), - repeats=True) + sub_section=SectionProxy("x_dmol3_section_hirshfeld_population"), repeats=True + ) x_dmol3_section_mulliken_population = SubSection( - sub_section=SectionProxy('x_dmol3_section_mulliken_population'), - repeats=True) + sub_section=SectionProxy("x_dmol3_section_mulliken_population"), repeats=True + ) class VibrationalFrequencies(runschema.calculation.VibrationalFrequencies): - m_def = Section(validate=False, extends_base_section=True) n_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_dmol3_normal_modes = Quantity( type=np.dtype(np.float64), - shape=['n_frequencies', 'n_atoms', 3], - description=''' - ''') + shape=["n_frequencies", "n_atoms", 3], + description=""" + """, + ) diff --git a/electronicparsers/dmol3/parser.py b/electronicparsers/dmol3/parser.py index 43406166..35a31edf 100644 --- a/electronicparsers/dmol3/parser.py +++ b/electronicparsers/dmol3/parser.py @@ -29,281 +29,502 @@ from runschema.method import Method, BasisSet, BasisSetContainer from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, BandEnergies, Charges, Multipoles, - MultipolesEntry, VibrationalFrequencies + Calculation, + ScfIteration, + Energy, + EnergyEntry, + BandEnergies, + Charges, + Multipoles, + MultipolesEntry, + VibrationalFrequencies, ) from simulationworkflowschema import ( - GeometryOptimization, GeometryOptimizationMethod, - Thermodynamics, ThermodynamicsResults + GeometryOptimization, + GeometryOptimizationMethod, + Thermodynamics, + ThermodynamicsResults, ) from .metainfo import dmol3 # pylint: disable=unused-import -re_f = r'[-+]?\d*\.\d*(?:[Ee][-+]\d+)?' -re_n = r'[\n\r]' -MOL = 6.02214076e+23 +re_f = r"[-+]?\d*\.\d*(?:[Ee][-+]\d+)?" +re_n = r"[\n\r]" +MOL = 6.02214076e23 class MainfileParser(TextParser): def init_quantities(self): - coordinates_quantities = [ - Quantity('labels_positions', rf'([A-Z][a-z]* +{re_f} +{re_f} +{re_f})', repeats=True) + Quantity( + "labels_positions", + rf"([A-Z][a-z]* +{re_f} +{re_f} +{re_f})", + repeats=True, + ) ] scf_quantity = Quantity( - 'scf', - r'Start Computing SCF Energy/Gradient([\s\S]+?)End Computing SCF Energy/Gradient', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - rf'Ef +({re_f} +{re_f} +{re_f} +{re_f} +\d+)', - repeats=True, dtype=np.dtype(np.float64) - ), - Quantity( - 'eigenvalues', - rf'state +eigenvalue +occupation\s+\(au\) +\(ev\)\s+' - rf'((?:\d+ +\S+ +\d+ +\S+ +{re_f} +{re_f} +{re_f}\s+)+)', - repeats=True, str_operation=lambda x: np.transpose( - [v.split()[4:] for v in x.strip().splitlines()]) - ), - Quantity( - 'n_electrons', - rf'Total number electrons\: +({re_f})', dtype=np.float64 - ), - Quantity( - 'coordinates', - r'ATOMIC COORDINATES \(au\).+\s*df +x +y +z +.+\s*\-+\s+' - rf'((?:df +[A-Z][a-z]* +{re_f} +{re_f} +{re_f}.+\s+)+)', - sub_parser=TextParser(quantities=coordinates_quantities) - ), - Quantity('final', rf'\-+\s+Total E.+\s+\-+\s+Ef +({re_f}.+)', dtype=np.float64), - Quantity('energy_binding', rf'binding energy +({re_f})Ha', dtype=np.float64, unit=ureg.hartree), - ]) + "scf", + r"Start Computing SCF Energy/Gradient([\s\S]+?)End Computing SCF Energy/Gradient", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"Ef +({re_f} +{re_f} +{re_f} +{re_f} +\d+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "eigenvalues", + rf"state +eigenvalue +occupation\s+\(au\) +\(ev\)\s+" + rf"((?:\d+ +\S+ +\d+ +\S+ +{re_f} +{re_f} +{re_f}\s+)+)", + repeats=True, + str_operation=lambda x: np.transpose( + [v.split()[4:] for v in x.strip().splitlines()] + ), + ), + Quantity( + "n_electrons", + rf"Total number electrons\: +({re_f})", + dtype=np.float64, + ), + Quantity( + "coordinates", + r"ATOMIC COORDINATES \(au\).+\s*df +x +y +z +.+\s*\-+\s+" + rf"((?:df +[A-Z][a-z]* +{re_f} +{re_f} +{re_f}.+\s+)+)", + sub_parser=TextParser(quantities=coordinates_quantities), + ), + Quantity( + "final", + rf"\-+\s+Total E.+\s+\-+\s+Ef +({re_f}.+)", + dtype=np.float64, + ), + Quantity( + "energy_binding", + rf"binding energy +({re_f})Ha", + dtype=np.float64, + unit=ureg.hartree, + ), + ] + ), ) self._quantities = [ Quantity( - 'program_version', - r'Materials Studio DMol\^3 version (\S+)', dtype=str, flatten=False + "program_version", + r"Materials Studio DMol\^3 version (\S+)", + dtype=str, + flatten=False, ), Quantity( - 'x_dmol3_program_compilation_date', - r'compiled on (\w+ \d+ \d+ \d+\:\d+:\d+)', dtype=str, flatten=False + "x_dmol3_program_compilation_date", + r"compiled on (\w+ \d+ \d+ \d+\:\d+:\d+)", + dtype=str, + flatten=False, ), Quantity( - 'date_start', - r'DATE\: +(\w+ \d+ \d+\:\d+\:\d+ \d+)', dtype=str, flatten=False + "date_start", + r"DATE\: +(\w+ \d+ \d+\:\d+\:\d+ \d+)", + dtype=str, + flatten=False, ), Quantity( - 'coordinates', - rf'\$coordinates\s+([\s\S]+?)\$end', flatten=False, - sub_parser=TextParser(quantities=coordinates_quantities) + "coordinates", + rf"\$coordinates\s+([\s\S]+?)\$end", + flatten=False, + sub_parser=TextParser(quantities=coordinates_quantities), ), Quantity( - 'simulation_parameters', - r'INPUT_DMOL keywords.+\s+.+([\s\S]+?)\>8', - sub_parser=TextParser(quantities=[ - Quantity('calculation_type', rf'{re_n}Calculate +(\S+)', dtype=str), - Quantity('functional_name', rf'{re_n}Functional +(\S+)', dtype=str), - Quantity('pseudopotential_name', rf'{re_n}Pseudopotential +(\S+)', dtype=str), - Quantity('basis_name', rf'{re_n}Basis +(\S+)', dtype=str), - Quantity('spin_polarization', rf'{re_n}Spin_Polarization +(\S+)', dtype=str), - Quantity('spin', rf'{re_n}Spin +(\d+)', dtype=np.int32), - Quantity('rcut', rf'{re_n}Atom_Rcut +({re_f})', dtype=np.float64), - Quantity('integration_grid', rf'{re_n}Integration_Grid +(\S+)', dtype=str), - Quantity('aux_partition', rf'{re_n} +(\d+)', dtype=np.int32), - Quantity('aux_density', rf'{re_n}Aux_Density +(\d+)', dtype=str), - Quantity('charge', rf'{re_n}Charge +({re_f})', dtype=np.float64), - Quantity('symmetry', rf'{re_n}Symmetry +(\S+)', dtype=str), - Quantity('mulliken_analysis', rf'{re_n}Mulliken_Analysis +(\S+)', dtype=str), - Quantity('hirshfeld_analysis', rf'{re_n}Hirshfeld_Analysis +(\S+)', dtype=str), - Quantity('partial_dos', rf'{re_n}Partial_Dos +(\S+)', dtype=str), - Quantity('electrostatic_moments', rf'{re_n}Electrostatic_Moments +(\S+)', dtype=str), - Quantity('nuclear_efg', rf'{re_n}Nuclear_EFG +(\S+)', dtype=str), - Quantity('optical_absorption', rf'{re_n}Optical_Absorption +(\S+)', dtype=str), - Quantity('kpoints', rf'{re_n}Kpoints +(\S+)', dtype=str), - Quantity('scf_density_convergence', rf'{re_n}SCF_Density_Convergence +({re_f})', dtype=np.float64), - Quantity('scf_spin_mixing', rf'{re_n}SCF_Spin_Mixing +({re_f})', dtype=np.float64), - Quantity('scf_charge_mixing', rf'{re_n}SCF_Charge_Mixing +({re_f})', dtype=np.float64), - Quantity('scf_diis', rf'{re_n}SCF_DIIS +(\d+) +(\S+)'), - Quantity('scf_iterations', rf'{re_n}SCF_Iterations +(\d+)', dtype=np.int32), - Quantity('scf_number_bad_steps', rf'{re_n}SCF_Number_Bad_Steps +(\d+)', dtype=np.int32), - Quantity('scf_direct', rf'{re_n}SCF_Direct +(\S+)', dtype=str), - Quantity('scf_restart', rf'{re_n}SCF_Restart +(\S+)', dtype=str), - Quantity('occupation', rf'{re_n}Occupation +(.+?) +<\-\-', str_operation=lambda x: x.strip().split()), - Quantity('opt_energy_convergence', rf'{re_n}OPT_Energy_Convergence +({re_f})', dtype=np.float64), - Quantity('opt_gradient_convergence', rf'{re_n}OPT_Gradient_Convergence +({re_f})', dtype=np.float64), - Quantity('opt_displacement_convergence', rf'{re_n}OPT_Displacement_Convergence +({re_f})', dtype=np.float64), - Quantity('opt_iterations', rf'{re_n}OPT_Iterations +(\d+)', dtype=np.int32), - Quantity('opt_coordinate_system', rf'{re_n}OPT_Coordinate_System +(\S+)', dtype=str), - Quantity('opt_gdiis', rf'{re_n}OPT_Gdiis +(\S+)', dtype=str), - Quantity('opt_max_displacement', rf'{re_n}OPT_Max_Displacement +({re_f})', dtype=np.float64), - Quantity('opt_steep_tol', rf'{re_n}OPT_Steep_Tol +({re_f})', dtype=np.float64), - Quantity('opt_hessian_project', rf'{re_n}OPT_Hessian_Project +(\S+)', dtype=str), - ]) - ), - Quantity( - 'optimization', - r'Entering Optimization Section \+\+\+([\s\S]+?)(?:\+\+\+|\Z)', - sub_parser=TextParser(quantities=[ - scf_quantity, - Quantity( - 'geometry', - r'Start Getting New Geometry([\s\S]+?)End Getting New Geometry', - repeats=True, sub_parser=TextParser( - quantities=[ - Quantity( - 'coordinates', - r'Input Coordinates \(Angstroms\)\s+\-+\s+ATOM +X +Y +Z\s+' - rf'((?:\d+ +[A-Z][a-z]* +{re_f} +{re_f} +{re_f}\s+)+)', - sub_parser=TextParser(quantities=coordinates_quantities) - ), - Quantity( - 'tolerance', - rf'tolerance:\S+ +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) - ), - Quantity( - 'energy_gradient', - rf'opt\=\= +(\d+ +{re_f} +{re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) - ) - ] - ) - ) - ]) + "simulation_parameters", + r"INPUT_DMOL keywords.+\s+.+([\s\S]+?)\>8", + sub_parser=TextParser( + quantities=[ + Quantity( + "calculation_type", rf"{re_n}Calculate +(\S+)", dtype=str + ), + Quantity( + "functional_name", rf"{re_n}Functional +(\S+)", dtype=str + ), + Quantity( + "pseudopotential_name", + rf"{re_n}Pseudopotential +(\S+)", + dtype=str, + ), + Quantity("basis_name", rf"{re_n}Basis +(\S+)", dtype=str), + Quantity( + "spin_polarization", + rf"{re_n}Spin_Polarization +(\S+)", + dtype=str, + ), + Quantity("spin", rf"{re_n}Spin +(\d+)", dtype=np.int32), + Quantity( + "rcut", rf"{re_n}Atom_Rcut +({re_f})", dtype=np.float64 + ), + Quantity( + "integration_grid", + rf"{re_n}Integration_Grid +(\S+)", + dtype=str, + ), + Quantity("aux_partition", rf"{re_n} +(\d+)", dtype=np.int32), + Quantity( + "aux_density", rf"{re_n}Aux_Density +(\d+)", dtype=str + ), + Quantity( + "charge", rf"{re_n}Charge +({re_f})", dtype=np.float64 + ), + Quantity("symmetry", rf"{re_n}Symmetry +(\S+)", dtype=str), + Quantity( + "mulliken_analysis", + rf"{re_n}Mulliken_Analysis +(\S+)", + dtype=str, + ), + Quantity( + "hirshfeld_analysis", + rf"{re_n}Hirshfeld_Analysis +(\S+)", + dtype=str, + ), + Quantity( + "partial_dos", rf"{re_n}Partial_Dos +(\S+)", dtype=str + ), + Quantity( + "electrostatic_moments", + rf"{re_n}Electrostatic_Moments +(\S+)", + dtype=str, + ), + Quantity( + "nuclear_efg", rf"{re_n}Nuclear_EFG +(\S+)", dtype=str + ), + Quantity( + "optical_absorption", + rf"{re_n}Optical_Absorption +(\S+)", + dtype=str, + ), + Quantity("kpoints", rf"{re_n}Kpoints +(\S+)", dtype=str), + Quantity( + "scf_density_convergence", + rf"{re_n}SCF_Density_Convergence +({re_f})", + dtype=np.float64, + ), + Quantity( + "scf_spin_mixing", + rf"{re_n}SCF_Spin_Mixing +({re_f})", + dtype=np.float64, + ), + Quantity( + "scf_charge_mixing", + rf"{re_n}SCF_Charge_Mixing +({re_f})", + dtype=np.float64, + ), + Quantity("scf_diis", rf"{re_n}SCF_DIIS +(\d+) +(\S+)"), + Quantity( + "scf_iterations", + rf"{re_n}SCF_Iterations +(\d+)", + dtype=np.int32, + ), + Quantity( + "scf_number_bad_steps", + rf"{re_n}SCF_Number_Bad_Steps +(\d+)", + dtype=np.int32, + ), + Quantity("scf_direct", rf"{re_n}SCF_Direct +(\S+)", dtype=str), + Quantity( + "scf_restart", rf"{re_n}SCF_Restart +(\S+)", dtype=str + ), + Quantity( + "occupation", + rf"{re_n}Occupation +(.+?) +<\-\-", + str_operation=lambda x: x.strip().split(), + ), + Quantity( + "opt_energy_convergence", + rf"{re_n}OPT_Energy_Convergence +({re_f})", + dtype=np.float64, + ), + Quantity( + "opt_gradient_convergence", + rf"{re_n}OPT_Gradient_Convergence +({re_f})", + dtype=np.float64, + ), + Quantity( + "opt_displacement_convergence", + rf"{re_n}OPT_Displacement_Convergence +({re_f})", + dtype=np.float64, + ), + Quantity( + "opt_iterations", + rf"{re_n}OPT_Iterations +(\d+)", + dtype=np.int32, + ), + Quantity( + "opt_coordinate_system", + rf"{re_n}OPT_Coordinate_System +(\S+)", + dtype=str, + ), + Quantity("opt_gdiis", rf"{re_n}OPT_Gdiis +(\S+)", dtype=str), + Quantity( + "opt_max_displacement", + rf"{re_n}OPT_Max_Displacement +({re_f})", + dtype=np.float64, + ), + Quantity( + "opt_steep_tol", + rf"{re_n}OPT_Steep_Tol +({re_f})", + dtype=np.float64, + ), + Quantity( + "opt_hessian_project", + rf"{re_n}OPT_Hessian_Project +(\S+)", + dtype=str, + ), + ] + ), ), Quantity( - 'properties', - r'Entering Properties Section \+\+\+([\s\S]+?)(?:\+\+\+|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'hirschfeld', - rf'Charge partitioning by Hirshfeld method\:\s+((?:[A-Z][a-z]* +\d+ +charge +{re_f}\s+)+)', - sub_parser=TextParser(quantities=[ - Quantity('label', r'([A-Z][a-z]*)', repeats=True, dtype=str), - Quantity('charge', rf'({re_f})', repeats=True, dtype=np.float64) - ]) - ), - Quantity('dipole_moment', rf'dipole magnitude\:.+?({re_f}) debye', dtype=np.float64), - Quantity( - 'mulliken', - rf'Mulliken atomic charges\:\s*charge +spin\s+((?:[A-Z][a-z]*\([ \d]+\) +{re_f} +{re_f}\s+)+)', - sub_parser=TextParser(quantities=[ - Quantity('charge', rf'\) +({re_f})', dtype=np.float64, repeats=True), - Quantity('spin', rf'({re_f}) *{re_n}', dtype=np.float64, repeats=True) - ]) - ) - ]) + "optimization", + r"Entering Optimization Section \+\+\+([\s\S]+?)(?:\+\+\+|\Z)", + sub_parser=TextParser( + quantities=[ + scf_quantity, + Quantity( + "geometry", + r"Start Getting New Geometry([\s\S]+?)End Getting New Geometry", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "coordinates", + r"Input Coordinates \(Angstroms\)\s+\-+\s+ATOM +X +Y +Z\s+" + rf"((?:\d+ +[A-Z][a-z]* +{re_f} +{re_f} +{re_f}\s+)+)", + sub_parser=TextParser( + quantities=coordinates_quantities + ), + ), + Quantity( + "tolerance", + rf"tolerance:\S+ +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "energy_gradient", + rf"opt\=\= +(\d+ +{re_f} +{re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + ] + ), + ), + ] + ), ), Quantity( - 'vibrations', - r'Entering Vibrations Section \+\+\+([\s\S]+?)(?:\+\+\+|\Z)', - sub_parser=TextParser(quantities=[ - scf_quantity, - # TODO map it to scf - Quantity('dipole_moment', rf'dipole magnitude\:.+?({re_f}) debye', dtype=np.float64, repeats=True), - Quantity( - 'vibrational_frequencies', - rf'vibrational frequencies, intensities\s+mode.+\s+((?:\d+ +{re_f} +{re_f} +{re_f}\s+)+)', - dtype=np.dtype(np.float64), flatten=False, - str_operation=lambda x: [v.split()[2] for v in x.strip().splitlines()], unit=1 / ureg.cm - ), - Quantity( - 'normal_modes', - r'Frequencies \(cm\-1\) and normal modes\s+.+\s+' - r'((?:[A-Z][a-z]* +x.+\s+y.+\s+z.+\s+)+)', - sub_parser=TextParser(quantities=[ - Quantity('label', r'([A-Z][a-z]*)', repeats=True), - Quantity('value', rf'(?:x|y|z) +({re_f}.+)', repeats=True, dtype=np.dtype(np.float64)) - ]) - ), - Quantity( - 'thermodynamic_quantities', - r'(STANDARD THERMODYNAMIC QUANTITIES AT[\s\S]+?G,Total\:.+)', - sub_parser=TextParser(quantities=[ - Quantity('temperature', rf'AT +({re_f}) K', dtype=np.float64, unit=ureg.kelvin), - Quantity('pressure', rf'AND +({re_f}) ATM', dtype=np.float64, unit=ureg.atm), - Quantity( - 'energy_zero_point', - rf'Zero point vibrational energy\: +({re_f}) kcal/mol', - dtype=np.float64 + "properties", + r"Entering Properties Section \+\+\+([\s\S]+?)(?:\+\+\+|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "hirschfeld", + rf"Charge partitioning by Hirshfeld method\:\s+((?:[A-Z][a-z]* +\d+ +charge +{re_f}\s+)+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "label", + r"([A-Z][a-z]*)", + repeats=True, + dtype=str, + ), + Quantity( + "charge", + rf"({re_f})", + repeats=True, + dtype=np.float64, + ), + ] ), - Quantity( - 'x_dmol3_h_trans', - rf'H,Trans *\: +({re_f}) kcal/mol', dtype=np.float64 + ), + Quantity( + "dipole_moment", + rf"dipole magnitude\:.+?({re_f}) debye", + dtype=np.float64, + ), + Quantity( + "mulliken", + rf"Mulliken atomic charges\:\s*charge +spin\s+((?:[A-Z][a-z]*\([ \d]+\) +{re_f} +{re_f}\s+)+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "charge", + rf"\) +({re_f})", + dtype=np.float64, + repeats=True, + ), + Quantity( + "spin", + rf"({re_f}) *{re_n}", + dtype=np.float64, + repeats=True, + ), + ] ), - Quantity( - 'x_dmol3_h_rot', - rf'H,Rot *\: +({re_f}) kcal/mol', dtype=np.float64 - ), - Quantity( - 'x_dmol3_h_pv', - rf'H,pV *\: +({re_f}) kcal/mol', dtype=np.float64 - ), - Quantity( - 'x_dmol3_h_vib_minus_zpve', - rf'H,Vib \- ZPVE *\: +({re_f}) kcal/mol', dtype=np.float64 - ), - Quantity( - 'x_dmol3_s_trans', - rf'S,Trans *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_s_rot', - rf'S,Rot *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_s_vib', - rf'S,Vib *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_c_trans', - rf'C,Trans *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_c_rot', - rf'C,Rot *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_c_vib', - rf'C,Vib *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_h_total_minus_zpve', - rf'H,Total \- ZPVE *\: +({re_f}) kcal/mol', dtype=np.float64 - ), - Quantity( - 'x_dmol3_s_total', - rf'S,Total *\: +({re_f}) +cal/mol\.K', dtype=np.float64 - ), - Quantity( - 'x_dmol3_c_total', - rf'C,Total \(p\) *\: +({re_f}) +cal/mol\.K', dtype=np.float64 + ), + ] + ), + ), + Quantity( + "vibrations", + r"Entering Vibrations Section \+\+\+([\s\S]+?)(?:\+\+\+|\Z)", + sub_parser=TextParser( + quantities=[ + scf_quantity, + # TODO map it to scf + Quantity( + "dipole_moment", + rf"dipole magnitude\:.+?({re_f}) debye", + dtype=np.float64, + repeats=True, + ), + Quantity( + "vibrational_frequencies", + rf"vibrational frequencies, intensities\s+mode.+\s+((?:\d+ +{re_f} +{re_f} +{re_f}\s+)+)", + dtype=np.dtype(np.float64), + flatten=False, + str_operation=lambda x: [ + v.split()[2] for v in x.strip().splitlines() + ], + unit=1 / ureg.cm, + ), + Quantity( + "normal_modes", + r"Frequencies \(cm\-1\) and normal modes\s+.+\s+" + r"((?:[A-Z][a-z]* +x.+\s+y.+\s+z.+\s+)+)", + sub_parser=TextParser( + quantities=[ + Quantity("label", r"([A-Z][a-z]*)", repeats=True), + Quantity( + "value", + rf"(?:x|y|z) +({re_f}.+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + ] ), - Quantity( - 'x_dmol3_g_total', - rf'G,Total *\: +({re_f}) +kcal/mol', dtype=np.float64 + ), + Quantity( + "thermodynamic_quantities", + r"(STANDARD THERMODYNAMIC QUANTITIES AT[\s\S]+?G,Total\:.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "temperature", + rf"AT +({re_f}) K", + dtype=np.float64, + unit=ureg.kelvin, + ), + Quantity( + "pressure", + rf"AND +({re_f}) ATM", + dtype=np.float64, + unit=ureg.atm, + ), + Quantity( + "energy_zero_point", + rf"Zero point vibrational energy\: +({re_f}) kcal/mol", + dtype=np.float64, + ), + Quantity( + "x_dmol3_h_trans", + rf"H,Trans *\: +({re_f}) kcal/mol", + dtype=np.float64, + ), + Quantity( + "x_dmol3_h_rot", + rf"H,Rot *\: +({re_f}) kcal/mol", + dtype=np.float64, + ), + Quantity( + "x_dmol3_h_pv", + rf"H,pV *\: +({re_f}) kcal/mol", + dtype=np.float64, + ), + Quantity( + "x_dmol3_h_vib_minus_zpve", + rf"H,Vib \- ZPVE *\: +({re_f}) kcal/mol", + dtype=np.float64, + ), + Quantity( + "x_dmol3_s_trans", + rf"S,Trans *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_s_rot", + rf"S,Rot *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_s_vib", + rf"S,Vib *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_c_trans", + rf"C,Trans *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_c_rot", + rf"C,Rot *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_c_vib", + rf"C,Vib *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_h_total_minus_zpve", + rf"H,Total \- ZPVE *\: +({re_f}) kcal/mol", + dtype=np.float64, + ), + Quantity( + "x_dmol3_s_total", + rf"S,Total *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_c_total", + rf"C,Total \(p\) *\: +({re_f}) +cal/mol\.K", + dtype=np.float64, + ), + Quantity( + "x_dmol3_g_total", + rf"G,Total *\: +({re_f}) +kcal/mol", + dtype=np.float64, + ), + ] ), - ]) - ), - Quantity( - 'thermodynamic_quantities_steps', - r'T +Entropy +Heat_Capacity +Enthalpy +Free_Energy\s+' - rf'\(K\).+\s+.+\s+\_+\s+((?:\d+ +{re_f} +{re_f} +{re_f} +{re_f} +{re_f}\s+)+)', - flatten=False, str_operation=lambda x: [v.split() for v in x.strip().splitlines()], - dtype=np.dtype(np.float64) - ) - ]) - ) - + ), + Quantity( + "thermodynamic_quantities_steps", + r"T +Entropy +Heat_Capacity +Enthalpy +Free_Energy\s+" + rf"\(K\).+\s+.+\s+\_+\s+((?:\d+ +{re_f} +{re_f} +{re_f} +{re_f} +{re_f}\s+)+)", + flatten=False, + str_operation=lambda x: [ + v.split() for v in x.strip().splitlines() + ], + dtype=np.dtype(np.float64), + ), + ] + ), + ), ] @property def parameters(self): - return {key: val for key, val in self.get('simulation_parameters', {}).get('key_value', [])} + return { + key: val + for key, val in self.get("simulation_parameters", {}).get("key_value", []) + } class Dmol3Parser: @@ -322,12 +543,16 @@ def parse(self, filepath, archive, logger): sec_run = Run() archive.run.append(sec_run) sec_run.program = Program( - version=self.mainfile_parser.get('program_version'), - x_dmol3_compilation_date=self.mainfile_parser.get('x_dmol3_program_compilation_date') + version=self.mainfile_parser.get("program_version"), + x_dmol3_compilation_date=self.mainfile_parser.get( + "x_dmol3_program_compilation_date" + ), ) if self.mainfile_parser.date_start is not None: - date = datetime.strptime(self.mainfile_parser.date_start, '%b %d %H:%M:%S %Y') + date = datetime.strptime( + self.mainfile_parser.date_start, "%b %d %H:%M:%S %Y" + ) sec_run.time_run = TimeRun(date_start=date.timestamp()) # section method @@ -336,27 +561,27 @@ def parse(self, filepath, archive, logger): # basis set sec_method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', - scope=['wavefunction'], + type="atom-centered orbitals", + scope=["wavefunction"], basis_set=[ BasisSet( - type='numeric AOs', - scope=['full-electron'], + type="numeric AOs", + scope=["full-electron"], ) - ] + ], ) ] # simulation parameters for key, val in self.mainfile_parser.simulation_parameters.items(): - if key == 'scf_diis': + if key == "scf_diis": sec_method.x_dmol3_diis_number = val[0] sec_method.x_dmol3_diis_name = val[1] - elif key == 'occupation': + elif key == "occupation": sec_method.x_dmol3_occupation_name = val[0] if len(val) > 1: sec_method.x_dmol3_occupation_width = val[1] else: - setattr(sec_method, f'x_dmol3_{key}', val) + setattr(sec_method, f"x_dmol3_{key}", val) def parse_system(source): if source.coordinates is None: @@ -365,8 +590,11 @@ def parse_system(source): sec_system = System() sec_run.system.append(sec_system) sec_system.atoms = Atoms( - labels=[v[0] for v in source.coordinates.get('labels_positions', [])], - positions=[v[1:4] for v in source.coordinates.get('labels_positions', [])] * ureg.bohr + labels=[v[0] for v in source.coordinates.get("labels_positions", [])], + positions=[ + v[1:4] for v in source.coordinates.get("labels_positions", []) + ] + * ureg.bohr, ) return sec_system @@ -376,17 +604,26 @@ def parse_calculation(source, target=None): sec_run.calculation.append(target) # energies - time_initial = sec_run.calculation[-2].time_physical if len(sec_run.calculation) > 1 else 0 * ureg.s + time_initial = ( + sec_run.calculation[-2].time_physical + if len(sec_run.calculation) > 1 + else 0 * ureg.s + ) if source.final is not None: target.energy = Energy( total=EnergyEntry(value=source.final[0] * ureg.hartree), - x_dmol3_binding=EnergyEntry(value=source.energy_binding)) + x_dmol3_binding=EnergyEntry(value=source.energy_binding), + ) target.time_physical = source.final[-2] * ureg.minute target.time_calculation = target.time_physical - time_initial # scf iteration - for iteration in source.get('iteration', []): - time_initial = target.scf_iteration[-1].time_physical if target.scf_iteration else time_initial + for iteration in source.get("iteration", []): + time_initial = ( + target.scf_iteration[-1].time_physical + if target.scf_iteration + else time_initial + ) sec_scf = ScfIteration() target.scf_iteration.append(sec_scf) sec_scf.energy = Energy( @@ -413,7 +650,7 @@ def parse_calculation(source, target=None): sec_eigenvalues.occupations = np.reshape(occupations, shape) # population analysis - for method in ['hirschfeld', 'mulliken']: + for method in ["hirschfeld", "mulliken"]: population = source.get(method) if population is None: continue @@ -440,15 +677,20 @@ def parse_calculation(source, target=None): if source.normal_modes is not None: value = source.normal_modes.value n_atoms = len(source.normal_modes.label) - sec_vibrations.x_dmol3_normal_modes = np.transpose(np.reshape( - value, (n_atoms, 3, len(value[0]))), axes=(2, 0, 1)) + sec_vibrations.x_dmol3_normal_modes = np.transpose( + np.reshape(value, (n_atoms, 3, len(value[0]))), axes=(2, 0, 1) + ) # thermodynamics quantities if source.thermodynamic_quantities is not None: for key, val in source.thermodynamic_quantities.items(): - if key == 'energy_zero_point': + if key == "energy_zero_point": target.energy.zero_point = EnergyEntry( - value=source.thermodynamic_quantities.energy_zero_point * ureg.J * 4184.0 / MOL) + value=source.thermodynamic_quantities.energy_zero_point + * ureg.J + * 4184.0 + / MOL + ) else: setattr(target, key, val) @@ -457,22 +699,30 @@ def parse_calculation(source, target=None): # TODO put workflows into separate archives workflow = None if self.mainfile_parser.optimization is not None: - for scf in self.mainfile_parser.optimization.get('scf', []): + for scf in self.mainfile_parser.optimization.get("scf", []): sec_system = parse_system(scf) sec_calc = parse_calculation(scf) sec_calc.system_ref = sec_system workflow = GeometryOptimization(method=GeometryOptimizationMethod()) - tolerance = self.mainfile_parser.optimization.get('geometry', [{}])[0].get('tolerance', [0, 0, 0]) - workflow.method.convergence_tolerance_energy_difference = tolerance[0] * ureg.hartree - workflow.method.convergence_tolerance_force_maximum = tolerance[1] * ureg.hartree / ureg.bohr - workflow.method.convergence_tolerance_displacement_maximum = tolerance[2] * ureg.bohr + tolerance = self.mainfile_parser.optimization.get("geometry", [{}])[0].get( + "tolerance", [0, 0, 0] + ) + workflow.method.convergence_tolerance_energy_difference = ( + tolerance[0] * ureg.hartree + ) + workflow.method.convergence_tolerance_force_maximum = ( + tolerance[1] * ureg.hartree / ureg.bohr + ) + workflow.method.convergence_tolerance_displacement_maximum = ( + tolerance[2] * ureg.bohr + ) if self.mainfile_parser.properties is not None: parse_calculation(self.mainfile_parser.properties, sec_run.calculation[-1]) if self.mainfile_parser.vibrations is not None: workflow = Thermodynamics(results=ThermodynamicsResults()) - for scf in self.mainfile_parser.vibrations.get('scf', []): + for scf in self.mainfile_parser.vibrations.get("scf", []): sec_system = parse_system(scf) sec_calc = parse_calculation(scf) sec_calc.system_ref = sec_system @@ -483,8 +733,14 @@ def parse_calculation(source, target=None): thermo_data = np.transpose(thermo_data) # calorie is not a ureg unit workflow.results.temperature = thermo_data[1] - workflow.results.entropy = thermo_data[2] * ureg.J * 4.184 / ureg.K / MOL - workflow.results.heat_capacity_c_p = thermo_data[3] * ureg.J * 4.184 / ureg.K / MOL + workflow.results.entropy = ( + thermo_data[2] * ureg.J * 4.184 / ureg.K / MOL + ) + workflow.results.heat_capacity_c_p = ( + thermo_data[3] * ureg.J * 4.184 / ureg.K / MOL + ) workflow.results.enthalpy = thermo_data[4] * ureg.J * 4184.0 / MOL - workflow.results.gibbs_free_energy = thermo_data[5] * ureg.J * 4184.0 / MOL + workflow.results.gibbs_free_energy = ( + thermo_data[5] * ureg.J * 4184.0 / MOL + ) archive.workflow2 = workflow diff --git a/electronicparsers/edmft/metainfo/edmft.py b/electronicparsers/edmft/metainfo/edmft.py index efaec259..d41002cc 100644 --- a/electronicparsers/edmft/metainfo/edmft.py +++ b/electronicparsers/edmft/metainfo/edmft.py @@ -19,7 +19,12 @@ import numpy as np from nomad.metainfo import ( # pylint: disable=unused-import - MSection, Package, Quantity, Section, SubSection, JSON + MSection, + Package, + Quantity, + Section, + SubSection, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -31,55 +36,61 @@ class x_edmft_method_parameters(MSection): - ''' + """ Section grouping the different input method parameters. - ''' + """ m_def = Section(validate=False) x_edmft_general = Quantity( type=JSON, - description=''' + description=""" General input parameters for the calculation. - ''') + """, + ) x_edmft_impurity_solver = Quantity( type=JSON, - description=''' + description=""" Impurity solver parameters as defined in the dictionary 'iparams0'. - ''') + """, + ) x_edmft_maxent = Quantity( type=JSON, - description=''' + description=""" MaxEnt parameters used to perform the analytical continuation. - ''') + """, + ) class Method(runschema.method.Method): - ''' + """ Section containing the various parameters that define the theory and the approximations (convergence, thresholds, etc.) behind the calculation. - ''' + """ m_def = Section(validate=False, extends_base_section=True) - x_edmft_method = SubSection(sub_section=x_edmft_method_parameters.m_def, repeats=False) + x_edmft_method = SubSection( + sub_section=x_edmft_method_parameters.m_def, repeats=False + ) class GreensFunctions(runschema.calculation.GreensFunctions): - ''' + """ Section containing the code-specific output GreensFunction quantities. - ''' + """ m_def = Section(validate=False, extends_base_section=True) x_edmft_self_energy_infinity = Quantity( type=np.float64, - shape=['n_correlated_orbitals'], - description=''' + shape=["n_correlated_orbitals"], + description=""" Self-energy function used to calculate the analytically continuated auxiliary function via the formula: Gc (iw) = 1 / (iw - Sigma + s_oo) where s_oo is the parsed function. - ''') + """, + ) diff --git a/electronicparsers/edmft/parser.py b/electronicparsers/edmft/parser.py index c45d520e..f3b2691e 100644 --- a/electronicparsers/edmft/parser.py +++ b/electronicparsers/edmft/parser.py @@ -29,16 +29,29 @@ from runschema.run import Run, Program from runschema.system import System, Atoms from runschema.method import ( - Method, HubbardKanamoriModel, FrequencyMesh, DMFT, AtomParameters + Method, + HubbardKanamoriModel, + FrequencyMesh, + DMFT, + AtomParameters, ) from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, Charges, GreensFunctions, Dos, DosValues + Calculation, + ScfIteration, + Energy, + EnergyEntry, + Charges, + GreensFunctions, + Dos, + DosValues, ) from simulationworkflowschema import SinglePoint from nomad.parsing.file_parser import DataTextParser from .metainfo.edmft import x_edmft_method_parameters from ..utils import get_files, BeyondDFTWorkflowsParser -from ..wien2k.parser import StructParser # Wien2k is imported to parse the system information +from ..wien2k.parser import ( + StructParser, +) # Wien2k is imported to parse the system information class OutParser(TextParser): @@ -59,32 +72,47 @@ def str_to_orbitals_list(val_in): self._quantities = [ Quantity( - 'hybridization_window', - r'(\d+) *(\d+) *(\d+) *(\d+) *\# hybridization band index nemin and nemax\, renormalize for interstitials\, projection type'), + "hybridization_window", + r"(\d+) *(\d+) *(\d+) *(\d+) *\# hybridization band index nemin and nemax\, renormalize for interstitials\, projection type", + ), Quantity( - 'real_or_imaginary_axis', - r'(\d+) *([\d\.]+) *([\d\.]+) *(\d+) *([\d\-\.]+) *([\d\-\.]+) *\# matsubara\, broadening\-corr\, broadening\-noncorr\, nomega\, omega\_min\, omega\_max \(in eV\)'), + "real_or_imaginary_axis", + r"(\d+) *([\d\.]+) *([\d\.]+) *(\d+) *([\d\-\.]+) *([\d\-\.]+) *\# matsubara\, broadening\-corr\, broadening\-noncorr\, nomega\, omega\_min\, omega\_max \(in eV\)", + ), + Quantity("n_corr_atoms", r"(\d+)\s*\# number of correlated atoms"), Quantity( - 'n_corr_atoms', r'(\d+)\s*\# number of correlated atoms'), + "i_atom_corr", + r"(\d+)\s*(\d+)\s*(\d+)\s*\# iatom\, nL\, locrot", + repeats=True, + ), Quantity( - 'i_atom_corr', r'(\d+)\s*(\d+)\s*(\d+)\s*\# iatom\, nL\, locrot', repeats=True), + "l_atom_corr", + r"\s*(\d+)\s*(\d+)\s*(\d+)\s*\# L\, qsplit\, cix", + repeats=True, + ), Quantity( - 'l_atom_corr', r'\s*(\d+)\s*(\d+)\s*(\d+)\s*\# L\, qsplit\, cix', repeats=True), - Quantity( - 'siginds_corr', - r'(\# Siginds and crystal\-field transformations for correlated orbitals \=*[\s\S]+)(?:\# Sigind follows)', - sub_parser=TextParser(quantities=[ - Quantity( - 'indep_cix_blocks', - r'(\d+) *(\d+) *(\d+) *\# Number of independent kcix blocks\, max dimension\, max num\-independent-components'), - Quantity( - 'cix', - r'(\d+) *(\d+) *(\d+) *\# cix\-num\, dimension\, num\-independent\-components', - repeats=True), - Quantity( - 'orbitals', - r'\# Independent components are \-*[\s\S]([\'\^\-\+a-zA-Z\s\d]+)', - str_operation=str_to_orbitals_list)]))] + "siginds_corr", + r"(\# Siginds and crystal\-field transformations for correlated orbitals \=*[\s\S]+)(?:\# Sigind follows)", + sub_parser=TextParser( + quantities=[ + Quantity( + "indep_cix_blocks", + r"(\d+) *(\d+) *(\d+) *\# Number of independent kcix blocks\, max dimension\, max num\-independent-components", + ), + Quantity( + "cix", + r"(\d+) *(\d+) *(\d+) *\# cix\-num\, dimension\, num\-independent\-components", + repeats=True, + ), + Quantity( + "orbitals", + r"\# Independent components are \-*[\s\S]([\'\^\-\+a-zA-Z\s\d]+)", + str_operation=str_to_orbitals_list, + ), + ] + ), + ), + ] class ParamsParser(TextParser): @@ -94,18 +122,32 @@ def __init__(self): def init_quantities(self): self._quantities = [ Quantity( - 'general_parameters', r'([\s\S]+)(?:\# Impurity problem number 0)', - sub_parser=TextParser(quantities=[ - Quantity( - 'params', r'([a-zA-Z\_]+)\s*\=\s*\'*([a-zA-Z\d\.\-]+)\'*', - repeats=True)])), + "general_parameters", + r"([\s\S]+)(?:\# Impurity problem number 0)", + sub_parser=TextParser( + quantities=[ + Quantity( + "params", + r"([a-zA-Z\_]+)\s*\=\s*\'*([a-zA-Z\d\.\-]+)\'*", + repeats=True, + ) + ] + ), + ), Quantity( - 'impurity_parameters', r'iparams0\=([\s\S]+)(?:\s*\})', - sub_parser=TextParser(quantities=[ - Quantity( - 'params', - r'\s*\"(.+)\"\s*\:\s*\[[\"\'\s]*([a-zA-Z\d\.\-]+)[\"\'\s]*\,', - repeats=True)]))] + "impurity_parameters", + r"iparams0\=([\s\S]+)(?:\s*\})", + sub_parser=TextParser( + quantities=[ + Quantity( + "params", + r"\s*\"(.+)\"\s*\:\s*\[[\"\'\s]*([a-zA-Z\d\.\-]+)[\"\'\s]*\,", + repeats=True, + ) + ] + ), + ), + ] class ImpurityGfOutParser(DataTextParser): @@ -115,9 +157,10 @@ def __init__(self): def init_quantities(self): self._quantities = [ Quantity( - 'parameters', - r'\# *nf\=([\d\.]+) *mu\=([\d\.\-]+) *T\=([\d\.]+) *TrSigmaG\=([\d\.\-]+) *Epot\=([\d\.\-]+) *Ekin\=([\d\.\-]+) *mom\=([\[\]\,\d\.\-]+)', - repeats=False) + "parameters", + r"\# *nf\=([\d\.]+) *mu\=([\d\.\-]+) *T\=([\d\.]+) *TrSigmaG\=([\d\.\-]+) *Epot\=([\d\.\-]+) *Ekin\=([\d\.\-]+) *mom\=([\[\]\,\d\.\-]+)", + repeats=False, + ) ] @@ -132,11 +175,16 @@ def str_multiply_to_float(val_in): self._quantities = [ Quantity( - 'parameters', r'\'([a-zA-Z\d\_]+)\' *\: *\ ([\d\.\*a-zA-Z]+)\'*\, *\#', - repeats=True), + "parameters", + r"\'([a-zA-Z\d\_]+)\' *\: *\ ([\d\.\*a-zA-Z]+)\'*\, *\#", + repeats=True, + ), Quantity( - 'smearing', r'\'gwidth\' *\: *([\d\*\.]+)\, *\#', - str_operation=str_multiply_to_float)] + "smearing", + r"\'gwidth\' *\: *([\d\*\.]+)\, *\#", + str_operation=str_multiply_to_float, + ), + ] class MaxEntSigOutParser(DataTextParser): @@ -145,14 +193,17 @@ def __init__(self): def init_quantities(self): def str_to_array(val_in): - val = [float(v) for v in val_in.split(', ')] + val = [float(v) for v in val_in.split(", ")] return val self._quantities = [ Quantity( - 'aux_sigma', - r'\# *s\_oo\= *\[([\d\.\,\-\s]+)\]', - repeats=False, str_operation=str_to_array)] + "aux_sigma", + r"\# *s\_oo\= *\[([\d\.\,\-\s]+)\]", + repeats=False, + str_operation=str_to_array, + ) + ] class EDMFTParser(BeyondDFTWorkflowsParser): @@ -167,11 +218,12 @@ class EDMFTParser(BeyondDFTWorkflowsParser): in real space frequencies and the DOS. Useful to then use to define the DFT+DMFT workflow archive. """ + level = 2 def __init__(self): - self._re_namesafe = re.compile(r'[^\w]') - self._calculation_type = 'dmft' + self._re_namesafe = re.compile(r"[^\w]") + self._calculation_type = "dmft" self._child_archives = {} self.out_parser = OutParser() @@ -182,23 +234,22 @@ def __init__(self): self.imp_gf_parser = ImpurityGfOutParser() self.lattice_parser = DataTextParser() - self._solver_map = { - 'CTQMC': 'CT-HYB', - 'OCA': 'OCA', - 'NCA': 'NCA' - } + self._solver_map = {"CTQMC": "CT-HYB", "OCA": "OCA", "NCA": "NCA"} - self._angular_momentum = ['s', 'p', 'd', 'f'] + self._angular_momentum = ["s", "p", "d", "f"] self._gf_files_map = { - 'imp.0/Gf.out.*': 'greens_function_iw', - 'imp.0/Sig.out.*': 'self_energy_iw', - 'imp.0/Delta.inp.*': 'hybridization_function_iw' + "imp.0/Gf.out.*": "greens_function_iw", + "imp.0/Sig.out.*": "self_energy_iw", + "imp.0/Delta.inp.*": "hybridization_function_iw", } - self._gf_lattice = ['greens_function_iw', 'self_energy_iw'] + self._gf_lattice = ["greens_function_iw", "self_energy_iw"] - self._gf_lattice_maxent = ['greens_function_freq', 'hybridization_function_freq'] + self._gf_lattice_maxent = [ + "greens_function_freq", + "hybridization_function_freq", + ] self.maxent_params_parser = MaxentParamsParser() self.maxent_sigout_parser = MaxEntSigOutParser() @@ -209,11 +260,14 @@ def parse_system(self, sec_run: Run): Args: sec_run (Run): Specific Run section to be populated with System. """ - struct_files = get_files('*.struct', self.filepath, self.mainfile) + struct_files = get_files("*.struct", self.filepath, self.mainfile) if not struct_files: return if len(struct_files) > 1: - self.logger.warning('Multiple *struct files found; we will parse the last one.', data={'files': struct_files}) + self.logger.warning( + "Multiple *struct files found; we will parse the last one.", + data={"files": struct_files}, + ) self.struct_parser.mainfile = struct_files[-1] atoms = self.struct_parser.get_atoms() if atoms is None: @@ -239,42 +293,58 @@ def parse_initial_model(self): # TODO ask @LucianPascut what projectorw.dat means to parse as initial model. # HubbardKanamori part - for n in range(self.indmfl_parser.get('n_corr_atoms', 1)): + for n in range(self.indmfl_parser.get("n_corr_atoms", 1)): sec_atom_params = AtomParameters() sec_method.atom_parameters.append(sec_atom_params) - if sec_run.m_xpath('system[-1].atoms.labels'): + if sec_run.m_xpath("system[-1].atoms.labels"): labels = sec_run.system[-1].atoms.labels - if self.indmfl_parser.get('i_atom_corr') is not None: - atom_corr = self.indmfl_parser.get('i_atom_corr')[n] + if self.indmfl_parser.get("i_atom_corr") is not None: + atom_corr = self.indmfl_parser.get("i_atom_corr")[n] label = labels[atom_corr[0] - 1] sec_atom_params.label = label - if self.indmfl_parser.get('l_atom_corr') is not None: - angular_momentum = self._angular_momentum[self.indmfl_parser.get('l_atom_corr')[n][0]] - if self.indmfl_parser.get('siginds_corr', {}).get('cix') is not None: - n_orbitals = self.indmfl_parser.get('siginds_corr', {}).get('cix')[n][-1] + if self.indmfl_parser.get("l_atom_corr") is not None: + angular_momentum = self._angular_momentum[ + self.indmfl_parser.get("l_atom_corr")[n][0] + ] + if self.indmfl_parser.get("siginds_corr", {}).get("cix") is not None: + n_orbitals = self.indmfl_parser.get("siginds_corr", {}).get("cix")[ + n + ][-1] sec_atom_params.n_orbitals = n_orbitals - if self.indmfl_parser.get('siginds_corr', {}).get('orbitals') is not None: + if ( + self.indmfl_parser.get("siginds_corr", {}).get("orbitals") + is not None + ): sec_atom_params.orbitals = [ - f'{angular_momentum}{orb}' for orb in self.indmfl_parser.get('siginds_corr', {}).get('orbitals')] + f"{angular_momentum}{orb}" + for orb in self.indmfl_parser.get("siginds_corr", {}).get( + "orbitals" + ) + ] sec_hubbard_kanamori = HubbardKanamoriModel() sec_atom_params.hubbard_kanamori_model = sec_hubbard_kanamori - sec_hubbard_kanamori.double_counting_correction = self.general_parameters.get('DCs', '') - sec_hubbard_kanamori.u = self.impurity_parameters.get('U', 0.0) * ureg.eV - sec_hubbard_kanamori.jh = self.impurity_parameters.get('J', 0.0) * ureg.eV - if self.impurity_parameters.get('CoulombF', 'Full') == 'Ising': + sec_hubbard_kanamori.double_counting_correction = ( + self.general_parameters.get("DCs", "") + ) + sec_hubbard_kanamori.u = self.impurity_parameters.get("U", 0.0) * ureg.eV + sec_hubbard_kanamori.jh = self.impurity_parameters.get("J", 0.0) * ureg.eV + if self.impurity_parameters.get("CoulombF", "Full") == "Ising": sec_hubbard_kanamori.j = 0.0 else: - sec_hubbard_kanamori.up = sec_hubbard_kanamori.u - 2 * sec_hubbard_kanamori.jh + sec_hubbard_kanamori.up = ( + sec_hubbard_kanamori.u - 2 * sec_hubbard_kanamori.jh + ) sec_hubbard_kanamori.j = sec_hubbard_kanamori.jh def parse_method(self): - """Parses DMFT SinglePoint method parameters. - """ + """Parses DMFT SinglePoint method parameters.""" sec_run = self.archive.run[-1] sec_method = Method() sec_run.method.append(sec_method) - sec_method.starting_method_ref = sec_run.method[0] # ref to the Non- and InteractionHamiltonian + sec_method.starting_method_ref = sec_run.method[ + 0 + ] # ref to the Non- and InteractionHamiltonian # Code-specific parameters sec_edmft_params = x_edmft_method_parameters() @@ -285,22 +355,36 @@ def parse_method(self): # DMFT method sec_dmft = DMFT() sec_method.dmft = sec_dmft - n_corr_atoms = self.indmfl_parser.get('n_corr_atoms', 1) + n_corr_atoms = self.indmfl_parser.get("n_corr_atoms", 1) sec_dmft.n_impurities = n_corr_atoms - if self.indmfl_parser.get('siginds_corr', {}).get('cix'): - n_orbitals = [orb[-1] for orb in self.indmfl_parser.get('siginds_corr', {}).get('cix')] + if self.indmfl_parser.get("siginds_corr", {}).get("cix"): + n_orbitals = [ + orb[-1] for orb in self.indmfl_parser.get("siginds_corr", {}).get("cix") + ] sec_dmft.n_correlated_orbitals = n_orbitals - if self.impurity_parameters.get('nf0'): - n_corr_elect = self.impurity_parameters.get('nf0', 1.0) / n_corr_atoms - corr_elect = [n_corr_elect] * n_corr_atoms # TODO ask Lucian if this makes sense + if self.impurity_parameters.get("nf0"): + n_corr_elect = self.impurity_parameters.get("nf0", 1.0) / n_corr_atoms + corr_elect = [ + n_corr_elect + ] * n_corr_atoms # TODO ask Lucian if this makes sense sec_dmft.n_electrons = corr_elect - sec_dmft.inverse_temperature = self.impurity_parameters.get('beta', 0.0) / ureg.eV - sec_dmft.magnetic_state = 'paramagnetic' # TODO ask Lucian if this is correct - sec_dmft.impurity_solver = self._solver_map.get(self.general_parameters.get('solver', '')) + sec_dmft.inverse_temperature = ( + self.impurity_parameters.get("beta", 0.0) / ureg.eV + ) + sec_dmft.magnetic_state = "paramagnetic" # TODO ask Lucian if this is correct + sec_dmft.impurity_solver = self._solver_map.get( + self.general_parameters.get("solver", "") + ) def extract_greens_functions_data( - self, sec_scc: Calculation, sec_gfs: GreensFunctions, n_orbitals: np.int32, - gf_data: np.ndarray, mesh_type: str, create_freq_mesh: bool = True): + self, + sec_scc: Calculation, + sec_gfs: GreensFunctions, + n_orbitals: np.int32, + gf_data: np.ndarray, + mesh_type: str, + create_freq_mesh: bool = True, + ): """Extracts GF data from gf_data as read from the data output files, and populates sec_gfs with it. @@ -317,15 +401,17 @@ def extract_greens_functions_data( if gf_data is None: return freq = gf_data[:, 0] - if mesh_type == 'imaginary': + if mesh_type == "imaginary": sec_gfs.matsubara_freq = freq freq = freq * 1j - elif mesh_type == 'real': + elif mesh_type == "real": sec_gfs.frequencies = freq if create_freq_mesh: freq = freq.reshape((len(freq), 1)) - sec_freq_mesh = FrequencyMesh(dimensionality=1, n_points=len(freq), points=freq * ureg.eV) + sec_freq_mesh = FrequencyMesh( + dimensionality=1, n_points=len(freq), points=freq * ureg.eV + ) try: method_ref = sec_scc.method_ref method_ref.m_add_sub_section(Method.frequency_mesh, sec_freq_mesh) @@ -333,7 +419,12 @@ def extract_greens_functions_data( pass # Defining the full Gf in the basis n_atoms x 2 x n_orbitals x n_freq - gf_orb_data = np.array([gf_data[:, 2 * n + 1] + gf_data[:, 2 * n + 2] * 1j for n in range(n_orbitals)]) + gf_orb_data = np.array( + [ + gf_data[:, 2 * n + 1] + gf_data[:, 2 * n + 2] * 1j + for n in range(n_orbitals) + ] + ) return np.array([[gf_orb_data, gf_orb_data]]) def parse_scc(self): @@ -354,8 +445,7 @@ def parse_scc(self): sec_run = self.archive.run[-1] def create_calculation_section(): - """Creates a calculation section and includes system_ref and method_ref. - """ + """Creates a calculation section and includes system_ref and method_ref.""" sec_scc = Calculation() sec_run.calculation.append(sec_scc) if sec_run.system is not None: @@ -364,24 +454,35 @@ def create_calculation_section(): sec_scc.method_ref = sec_run.method[-1] # ref DMFT return sec_scc - if sec_run.m_xpath('method[-1].dmft.n_correlated_orbitals') is not None: + if sec_run.m_xpath("method[-1].dmft.n_correlated_orbitals") is not None: n_orbitals = sec_run.method[-1].dmft.n_correlated_orbitals[0] else: - self.logger.warning('Number of orbitals could not be extracted. We cannot parse ' - 'the output calculation information.') + self.logger.warning( + "Number of orbitals could not be extracted. We cannot parse " + "the output calculation information." + ) return # Parsing iteration steps for each of the calculation steps - iterate_files = get_files('info.iterate', self.filepath, self.mainfile) + iterate_files = get_files("info.iterate", self.filepath, self.mainfile) if iterate_files: if len(iterate_files) > 1: - self.logger.warning('Multiple info.iterate files found; we will parse the last one.', data={'files': iterate_files}) + self.logger.warning( + "Multiple info.iterate files found; we will parse the last one.", + data={"files": iterate_files}, + ) self.iterate_parser.mainfile = iterate_files[-1] - data_scf = [] if self.iterate_parser.data is None else self.iterate_parser.data + data_scf = ( + [] if self.iterate_parser.data is None else self.iterate_parser.data + ) calculations = sec_run.calculation for i_dmft, data in enumerate(data_scf): iter_dmft = np.int32(data[1]) - sec_scc = create_calculation_section() if len(calculations) <= iter_dmft else calculations[iter_dmft] + sec_scc = ( + create_calculation_section() + if len(calculations) <= iter_dmft + else calculations[iter_dmft] + ) sec_scf_iteration = ScfIteration() sec_scc.scf_iteration.append(sec_scf_iteration) @@ -389,19 +490,21 @@ def create_calculation_section(): sec_energy = Energy() sec_scf_iteration.energy = sec_energy sec_energy.chemical_potential = data_scf[i_dmft][3] * ureg.eV - sec_energy.double_counting = EnergyEntry(value=data_scf[i_dmft][4] * ureg.eV) + sec_energy.double_counting = EnergyEntry( + value=data_scf[i_dmft][4] * ureg.eV + ) sec_energy.total = EnergyEntry(value=data_scf[i_dmft][5] * ureg.rydberg) sec_energy.free = EnergyEntry(value=data_scf[i_dmft][7] * ureg.rydberg) # Lattice and impurity occupations sec_charges_latt = Charges() sec_scf_iteration.charges.append(sec_charges_latt) - sec_charges_latt.kind = 'lattice' + sec_charges_latt.kind = "lattice" sec_charges_latt.n_atoms = sec_scc.method_ref.dmft.n_impurities sec_charges_latt.n_orbitals = n_orbitals sec_charges_latt.n_electrons = [data_scf[i_dmft][8]] sec_charges_imp = Charges() sec_scf_iteration.charges.append(sec_charges_imp) - sec_charges_imp.kind = 'impurity' + sec_charges_imp.kind = "impurity" sec_charges_imp.n_atoms = sec_scc.method_ref.dmft.n_impurities sec_charges_imp.n_orbitals = n_orbitals sec_charges_imp.n_electrons = [data_scf[i_dmft][9]] @@ -423,38 +526,66 @@ def create_calculation_section(): else: sec_gfs = GreensFunctions() sec_scc.greens_functions.append(sec_gfs) - sec_gfs.type = 'impurity' + sec_gfs.type = "impurity" # Parsing data self.imp_gf_parser.mainfile = f imp_gf_data = self.imp_gf_parser.data - impurity_data = self.extract_greens_functions_data( - sec_scc, sec_gfs, n_orbitals, imp_gf_data, 'imaginary' - ) if imp_gf_data is not None else None + impurity_data = ( + self.extract_greens_functions_data( + sec_scc, sec_gfs, n_orbitals, imp_gf_data, "imaginary" + ) + if imp_gf_data is not None + else None + ) if impurity_data is not None: - sec_gfs.m_set(sec_gfs.m_get_quantity_definition(self._gf_files_map[imp_path]), impurity_data) - if self.imp_gf_parser.get('parameters'): - sec_gfs.chemical_potential = self.imp_gf_parser.get('parameters')[1] * ureg.eV + sec_gfs.m_set( + sec_gfs.m_get_quantity_definition( + self._gf_files_map[imp_path] + ), + impurity_data, + ) + if self.imp_gf_parser.get("parameters"): + sec_gfs.chemical_potential = ( + self.imp_gf_parser.get("parameters")[1] * ureg.eV + ) # Parse lattice GFs quantities in the last calculation if sec_run.calculation is not None: sec_scc = sec_run.calculation[-1] - lattice_gf_files = get_files('*.gc1', self.filepath, self.mainfile) - lattice_sigma_files = get_files('sig.inp1', self.filepath, self.mainfile) - for i_files, lattice_files in enumerate([lattice_gf_files, lattice_sigma_files]): + lattice_gf_files = get_files("*.gc1", self.filepath, self.mainfile) + lattice_sigma_files = get_files("sig.inp1", self.filepath, self.mainfile) + for i_files, lattice_files in enumerate( + [lattice_gf_files, lattice_sigma_files] + ): if lattice_files: if len(lattice_files) > 1: - self.logger.warning('Multiple lattice files (*.gc* or sig.inp1) found; we will parse the last one.', data={'files': lattice_files}) + self.logger.warning( + "Multiple lattice files (*.gc* or sig.inp1) found; we will parse the last one.", + data={"files": lattice_files}, + ) self.lattice_parser.mainfile = lattice_files[-1] sec_gfs = GreensFunctions() sec_scc.greens_functions.append(sec_gfs) - sec_gfs.type = 'lattice' + sec_gfs.type = "lattice" lattice_data = self.lattice_parser.data # Extracting Matsubara freqs and GF data without storing FrequencyMesh -> this # is because impurity and lattice GFs can have different size in Matsubara frequencies. - extracted_lattice_data = self.extract_greens_functions_data( - sec_scc, sec_gfs, n_orbitals, lattice_data, 'imaginary', False - ) if lattice_data is not None else None - sec_gfs.m_set(sec_gfs.m_get_quantity_definition(self._gf_lattice[i_files]), extracted_lattice_data) + extracted_lattice_data = ( + self.extract_greens_functions_data( + sec_scc, + sec_gfs, + n_orbitals, + lattice_data, + "imaginary", + False, + ) + if lattice_data is not None + else None + ) + sec_gfs.m_set( + sec_gfs.m_get_quantity_definition(self._gf_lattice[i_files]), + extracted_lattice_data, + ) def init_parser(self): self.out_parser.mainfile = self.mainfile @@ -477,59 +608,69 @@ def init_parser(self): self.maxent_sigout_parser.logger = self.logger def get_mainfile_keys(self, **kwargs): - filepath = kwargs.get('filename') + filepath = kwargs.get("filename") mainfile = os.path.basename(filepath) - maxent_files = get_files('maxent_params.dat', filepath, mainfile) + maxent_files = get_files("maxent_params.dat", filepath, mainfile) if maxent_files is not None: - return ['MaxEnt', 'MaxEnt_workflow'] + return ["MaxEnt", "MaxEnt_workflow"] return True def parse_maxent_archive(self, archive: EntryArchive): """Populates the MaxEnt SinglePoint archive. This will contain: - 1- The analytical continuation method parameters. - 2- The self-energy in real frequencies. + 1- The analytical continuation method parameters. + 2- The self-energy in real frequencies. """ self.init_parser() sec_run = Run() archive.run.append(sec_run) - sec_run.program = Program(name='eDMFT') + sec_run.program = Program(name="eDMFT") def _freq_tan_points(x0: float, l0: float, n_w: int): - """Defines the frequency mesh points in a 'Tan' mesh. Following script by @LucianPascut. - """ + """Defines the frequency mesh points in a 'Tan' mesh. Following script by @LucianPascut.""" + def opt_function(x: np.ndarray, x0: float, l0: float, n_w: int): d = x[0] w = x[1] - return np.array([l0 - w / np.tan(d), x0 - w * np.tan(np.pi / (2 * n_w) - d / n_w)]) + return np.array( + [l0 - w / np.tan(d), x0 - w * np.tan(np.pi / (2 * n_w) - d / n_w)] + ) xi = x0 / l0 - d0 = 0.5 * n_w * (np.tan(np.pi / (2 * n_w)) - np.sqrt(np.tan(np.pi / (2 * n_w))**2 - 4 * xi / n_w)) + d0 = ( + 0.5 + * n_w + * ( + np.tan(np.pi / (2 * n_w)) + - np.sqrt(np.tan(np.pi / (2 * n_w)) ** 2 - 4 * xi / n_w) + ) + ) w0 = l0 * d0 sol = optimize.root(opt_function, [d0, w0], args=(x0, l0, n_w)) (d, w) = sol.x - return w * np.tan(np.linspace(0, 1, 2 * n_w + 1) * (np.pi - 2 * d) - np.pi / 2 + d) + return w * np.tan( + np.linspace(0, 1, 2 * n_w + 1) * (np.pi - 2 * d) - np.pi / 2 + d + ) def parse_maxent_method(): - """Populates method section with MaxEnt parameters and the real space FrequencyMesh. - """ + """Populates method section with MaxEnt parameters and the real space FrequencyMesh.""" sec_method = Method() sec_run.method.append(sec_method) - params = dict(self.maxent_params_parser.get('parameters')) + params = dict(self.maxent_params_parser.get("parameters")) sec_maxent_params = x_edmft_method_parameters() sec_method.x_edmft_method = sec_maxent_params sec_maxent_params.x_edmft_maxent = params sec_freq_mesh = FrequencyMesh( - dimensionality=1, - sampling_method='Tan', - n_points=params.get('Nw', 1) + dimensionality=1, sampling_method="Tan", n_points=params.get("Nw", 1) ) try: - freqs = _freq_tan_points(params.get('x0'), params.get('L'), params.get('Nw')) + freqs = _freq_tan_points( + params.get("x0"), params.get("L"), params.get("Nw") + ) freqs = freqs.reshape((len(freqs), 1)) sec_freq_mesh.points = freqs * ureg.eV except Exception: - self.logger.warning('Real frequency mesh could not be extracted.') + self.logger.warning("Real frequency mesh could not be extracted.") sec_method.m_add_sub_section(Method.frequency_mesh, sec_freq_mesh) def parse_maxent_scc(): @@ -548,12 +689,23 @@ def parse_maxent_scc(): sec_scc.greens_functions.append(sec_gfs) sec_gfs.frequencies = data[:, 0] try: - n_orbitals = self.archive.run[-1].method[-1].dmft.n_correlated_orbitals[0] # getting them from DMFT SinglePoint - sigout_orb_data = np.array([data[:, 2 * n + 1] + data[:, 2 * n + 2] * 1j for n in range(n_orbitals)]) - sec_gfs.self_energy_freq = np.array([[sigout_orb_data, sigout_orb_data]]) + n_orbitals = ( + self.archive.run[-1].method[-1].dmft.n_correlated_orbitals[0] + ) # getting them from DMFT SinglePoint + sigout_orb_data = np.array( + [ + data[:, 2 * n + 1] + data[:, 2 * n + 2] * 1j + for n in range(n_orbitals) + ] + ) + sec_gfs.self_energy_freq = np.array( + [[sigout_orb_data, sigout_orb_data]] + ) except Exception: - self.logger.warning('Could not extract self-energy in real frequencies data.') - aux_sigma = self.maxent_sigout_parser.get('aux_sigma', []) + self.logger.warning( + "Could not extract self-energy in real frequencies data." + ) + aux_sigma = self.maxent_sigout_parser.get("aux_sigma", []) if aux_sigma is not None: sec_gfs.x_edmft_self_energy_infinity = aux_sigma @@ -561,79 +713,121 @@ def parse_maxent_scc(): self.parse_system(sec_run) # Method and MaxEnt calculation - maxent_params_files = get_files('maxent_params.dat', self.filepath, self.mainfile) + maxent_params_files = get_files( + "maxent_params.dat", self.filepath, self.mainfile + ) if maxent_params_files: if len(maxent_params_files) > 1: - self.logger.warning('Multiple maxent_params.dat files found; we will parse the last one.', data={'files': maxent_params_files}) + self.logger.warning( + "Multiple maxent_params.dat files found; we will parse the last one.", + data={"files": maxent_params_files}, + ) maxent_file = maxent_params_files[-1] self.maxent_params_parser.mainfile = maxent_file parse_maxent_method() - sigout_files = get_files('Sig.out', maxent_file, os.path.basename(maxent_file)) + sigout_files = get_files( + "Sig.out", maxent_file, os.path.basename(maxent_file) + ) if sigout_files: if len(sigout_files) > 1: - self.logger.warning('Multiple Sig.out files found; we will parse the last one.', data={'files': sigout_files}) + self.logger.warning( + "Multiple Sig.out files found; we will parse the last one.", + data={"files": sigout_files}, + ) self.maxent_sigout_parser.mainfile = sigout_files[-1] parse_maxent_scc() # Workflow workflow = SinglePoint() - workflow.name = 'MaxEnt Sigma' + workflow.name = "MaxEnt Sigma" archive.workflow2 = workflow - def parse_maxent_workflow(self, maxent_archive: EntryArchive, workflow_archive: EntryArchive): + def parse_maxent_workflow( + self, maxent_archive: EntryArchive, workflow_archive: EntryArchive + ): """Populates the DMFT+MaxEnt workflow archive. This will contain: - 1- The Green's function in real frequencies and the Spectral density function (to be compared with the DOS). - 2- Tasks pointing to the DMFT SinglePoint and MaxEnt SinglePoint entries. + 1- The Green's function in real frequencies and the Spectral density function (to be compared with the DOS). + 2- Tasks pointing to the DMFT SinglePoint and MaxEnt SinglePoint entries. """ self.init_parser() sec_run = Run() workflow_archive.run.append(sec_run) - sec_run.program = Program(name='eDMFT') + sec_run.program = Program(name="eDMFT") def parse_gfs_real_freqs(): sec_scc = Calculation() sec_run.calculation.append(sec_scc) if sec_run.system is not None: sec_scc.system_ref = sec_run.system[-1] - maxent_indmfl_files = get_files('**/*.indmfl', self.filepath, self.mainfile) + maxent_indmfl_files = get_files("**/*.indmfl", self.filepath, self.mainfile) if not maxent_indmfl_files: return for file in maxent_indmfl_files: self.indmfl_parser.mainfile = file - if self.indmfl_parser.get('real_or_imaginary_axis') is not None: - axis_flag = int(self.indmfl_parser.get('real_or_imaginary_axis')[0]) + if self.indmfl_parser.get("real_or_imaginary_axis") is not None: + axis_flag = int(self.indmfl_parser.get("real_or_imaginary_axis")[0]) if axis_flag == 0: # real frequencies flaghybridization_function - if not self.indmfl_parser.get('siginds_corr', {}).get('cix'): - self.logger.warning('Could not locate the number of correlated orbital in the impurity.') + if not self.indmfl_parser.get("siginds_corr", {}).get("cix"): + self.logger.warning( + "Could not locate the number of correlated orbital in the impurity." + ) return - n_orbitals = self.indmfl_parser.get('siginds_corr', {}).get('cix')[0][-1] + n_orbitals = self.indmfl_parser.get("siginds_corr", {}).get( + "cix" + )[0][-1] # Parsing Green's function and hybridization function - lattice_gf_files = get_files('*.gc1', file, os.path.basename(file)) - lattice_delta_files = get_files('*.dlt1', file, os.path.basename(file)) - for i_files, lattice_files in enumerate([lattice_gf_files, lattice_delta_files]): + lattice_gf_files = get_files( + "*.gc1", file, os.path.basename(file) + ) + lattice_delta_files = get_files( + "*.dlt1", file, os.path.basename(file) + ) + for i_files, lattice_files in enumerate( + [lattice_gf_files, lattice_delta_files] + ): if lattice_files: if len(lattice_files) > 1: - self.logger.warning('Multiple lattice files (*.gc1 or *.dlt1) found; we will parse the last one.', data={'files': lattice_files}) + self.logger.warning( + "Multiple lattice files (*.gc1 or *.dlt1) found; we will parse the last one.", + data={"files": lattice_files}, + ) self.lattice_parser.mainfile = lattice_files[-1] sec_gfs = GreensFunctions() sec_scc.greens_functions.append(sec_gfs) - sec_gfs.type = 'lattice' + sec_gfs.type = "lattice" lattice_data = self.lattice_parser.data - extracted_lattice_data = self.extract_greens_functions_data( - sec_scc, sec_gfs, n_orbitals, lattice_data, 'real', False - ) if lattice_data is not None else None - sec_gfs.m_set(sec_gfs.m_get_quantity_definition(self._gf_lattice_maxent[i_files]), extracted_lattice_data) + extracted_lattice_data = ( + self.extract_greens_functions_data( + sec_scc, + sec_gfs, + n_orbitals, + lattice_data, + "real", + False, + ) + if lattice_data is not None + else None + ) + sec_gfs.m_set( + sec_gfs.m_get_quantity_definition( + self._gf_lattice_maxent[i_files] + ), + extracted_lattice_data, + ) # Parsing DOS as - Im G / np.pi if lattice_files == lattice_gf_files: sec_dos = Dos() sec_scc.dos_electronic.append(sec_dos) - sec_dos.kind = 'spectral' + sec_dos.kind = "spectral" sec_dos.energy_fermi = 0.0 * ureg.eV sec_dos.n_energies = len(lattice_data[:, 0]) sec_dos.energies = lattice_data[:, 0] * ureg.eV sec_dos_values = DosValues() sec_dos.total.append(sec_dos_values) - value = - np.sum(extracted_lattice_data[0][0].imag, (0)) / np.pi + value = ( + -np.sum(extracted_lattice_data[0][0].imag, (0)) + / np.pi + ) sec_dos_values.value = value / ureg.eV # System @@ -654,30 +848,40 @@ def parse(self, filepath: str, archive: EntryArchive, logger): self.init_parser() - params_files = get_files('*params.dat', self.filepath, self.mainfile) + params_files = get_files("*params.dat", self.filepath, self.mainfile) if params_files: if len(params_files) > 1: - self.logger.warning('Multiple *params.dat files found; we will parse the last one.', data={'files': params_files}) + self.logger.warning( + "Multiple *params.dat files found; we will parse the last one.", + data={"files": params_files}, + ) self.params_parser.mainfile = params_files[-1] - if self.params_parser.get('general_parameters'): - self.general_parameters = dict(self.params_parser.get('general_parameters').get('params', [])) - if self.params_parser.get('impurity_parameters'): - self.impurity_parameters = dict(self.params_parser.get('impurity_parameters').get('params', [])) + if self.params_parser.get("general_parameters"): + self.general_parameters = dict( + self.params_parser.get("general_parameters").get("params", []) + ) + if self.params_parser.get("impurity_parameters"): + self.impurity_parameters = dict( + self.params_parser.get("impurity_parameters").get("params", []) + ) # Program section sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='eDMFT') + sec_run.program = Program(name="eDMFT") # System section self.parse_system(sec_run) # Method.DMFT section - indmfl_files = get_files('*.indmfl', self.filepath, self.mainfile) + indmfl_files = get_files("*.indmfl", self.filepath, self.mainfile) if indmfl_files: if len(indmfl_files) > 1: - self.logger.warning('Multiple *.indmfl files found; we will parse the last one.', data={'files': indmfl_files}) + self.logger.warning( + "Multiple *.indmfl files found; we will parse the last one.", + data={"files": indmfl_files}, + ) self.indmfl_parser.mainfile = indmfl_files[-1] if self.general_parameters and self.impurity_parameters: self.parse_initial_model() @@ -691,7 +895,7 @@ def parse(self, filepath: str, archive: EntryArchive, logger): self.archive.workflow2 = workflow # DMFT+MaxEnt workflow - maxent_archive = self._child_archives.get('MaxEnt') + maxent_archive = self._child_archives.get("MaxEnt") if maxent_archive: # Parse first the MaxEnt SinglePoint archive. # MaxEnt contains the analytical continuation of the imaginary axis Self-energy @@ -701,8 +905,10 @@ def parse(self, filepath: str, archive: EntryArchive, logger): # Then parse the DMFT with MaxEnt continuation workflow archive. # DMFT+MaxEnt contains the DMFT SinglePoint, the MaxEnt point, as well as the # calculation of the Green's function and DOS in the real frequency axis. - dmft_maxent_archive = self._child_archives.get('MaxEnt_workflow') + dmft_maxent_archive = self._child_archives.get("MaxEnt_workflow") try: self.parse_maxent_workflow(maxent_archive, dmft_maxent_archive) except Exception: - self.logger.error('Error parsing the automatic DMFT with MaxEnt continuation workflow.') + self.logger.error( + "Error parsing the automatic DMFT with MaxEnt continuation workflow." + ) diff --git a/electronicparsers/elk/metainfo/elk.py b/electronicparsers/elk/metainfo/elk.py index e792ae93..cf9dd13a 100644 --- a/electronicparsers/elk/metainfo/elk.py +++ b/electronicparsers/elk/metainfo/elk.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,670 +39,745 @@ class x_elk_section_lattice_vectors(MSection): - ''' + """ lattice vectors - ''' + """ m_def = Section(validate=False) x_elk_geometry_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of lattice vector - ''') + """, + ) x_elk_geometry_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of lattice vector - ''') + """, + ) x_elk_geometry_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of lattice vector - ''') + """, + ) class x_elk_section_reciprocal_lattice_vectors(MSection): - ''' + """ reciprocal lattice vectors - ''' + """ m_def = Section(validate=False) x_elk_geometry_reciprocal_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" x component of reciprocal lattice vector - ''') + """, + ) x_elk_geometry_reciprocal_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" y component of reciprocal lattice vector - ''') + """, + ) x_elk_geometry_reciprocal_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" z component of reciprocal lattice vector - ''') + """, + ) class x_elk_section_atoms_group(MSection): - ''' + """ a group of atoms of the same type - ''' + """ m_def = Section(validate=False) x_elk_geometry_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" labels of atom - ''') + """, + ) x_elk_geometry_atom_number = Quantity( type=str, shape=[], - description=''' + description=""" number to identify the atoms of a species - ''') + """, + ) x_elk_geometry_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of atomic position - ''') + """, + ) x_elk_geometry_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of atomic position - ''') + """, + ) x_elk_geometry_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of atomic position - ''') + """, + ) class x_elk_section_spin(MSection): - ''' + """ section for exciting spin treatment - ''' + """ m_def = Section(validate=False) x_elk_spin_treatment = Quantity( type=str, shape=[], - description=''' + description=""" Spin treatment - ''') + """, + ) class x_elk_section_xc(MSection): - ''' + """ index for elk functional - ''' + """ m_def = Section(validate=False) x_elk_xc_functional = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" index for elk functional - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_elk_brillouin_zone_volume = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter ** 3', - description=''' + unit="1 / meter ** 3", + description=""" Brillouin zone volume - ''') + """, + ) x_elk_simulation_reciprocal_cell = Quantity( type=np.dtype(np.float64), shape=[3, 3], - unit='meter', - description=''' + unit="meter", + description=""" Reciprocal lattice vectors of the simulation cell. - ''') + """, + ) x_elk_unit_cell_volume = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter ** 3', - description=''' + unit="meter ** 3", + description=""" unit cell volume - ''') + """, + ) x_elk_muffin_tin_radius = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" muffin-tin radius - ''') + """, + ) x_elk_muffin_tin_points = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" muffin-tin points - ''') + """, + ) x_elk_number_kpoint_x = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points x - ''') + """, + ) x_elk_number_kpoint_y = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points y - ''') + """, + ) x_elk_number_kpoint_z = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points z - ''') + """, + ) x_elk_kpoints_grid = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_elk_number_kpoints = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points - ''') + """, + ) x_elk_kpoint_offset_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" K-points offset x component - ''') + """, + ) x_elk_kpoint_offset_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" K-points offset y component - ''') + """, + ) x_elk_kpoint_offset_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" K-points offset z component - ''') + """, + ) x_elk_rgkmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" Radius MT * Gmax - ''') + """, + ) x_elk_gvector_size_x = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector grid size x - ''') + """, + ) x_elk_gvector_size_y = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector grid size y - ''') + """, + ) x_elk_gvector_size_z = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector grid size z - ''') + """, + ) x_elk_gvector_total = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector total - ''') + """, + ) x_elk_lmaxapw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Angular momentum cut-off for the APW functions - ''') + """, + ) x_elk_gkmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Maximum length of |G+k| for APW functions - ''') + """, + ) x_elk_smearing_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smearing width for KS occupancies - ''') + """, + ) x_elk_lo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of local-orbitals - ''') + """, + ) x_elk_gmaxvr = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Maximum length of |G| - ''') + """, + ) x_elk_valence_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of valence states - ''') + """, + ) x_elk_core_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of core states - ''') + """, + ) x_elk_empty_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of empty states - ''') + """, + ) x_elk_wigner_radius = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" Effective Wigner radius - ''') + """, + ) x_elk_electronic_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Electronic charge - ''') + """, + ) x_elk_valence_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Valence charge - ''') + """, + ) x_elk_nuclear_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Nuclear charge - ''') + """, + ) x_elk_core_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Core charge - ''') + """, + ) x_elk_section_lattice_vectors = SubSection( - sub_section=SectionProxy('x_elk_section_lattice_vectors'), - repeats=True) + sub_section=SectionProxy("x_elk_section_lattice_vectors"), repeats=True + ) x_elk_section_reciprocal_lattice_vectors = SubSection( - sub_section=SectionProxy('x_elk_section_reciprocal_lattice_vectors'), - repeats=True) + sub_section=SectionProxy("x_elk_section_reciprocal_lattice_vectors"), + repeats=True, + ) x_elk_section_atoms_group = SubSection( - sub_section=SectionProxy('x_elk_section_atoms_group'), - repeats=True) + sub_section=SectionProxy("x_elk_section_atoms_group"), repeats=True + ) x_elk_section_spin = SubSection( - sub_section=SectionProxy('x_elk_section_spin'), - repeats=True) + sub_section=SectionProxy("x_elk_section_spin"), repeats=True + ) x_elk_section_xc = SubSection( - sub_section=SectionProxy('x_elk_section_xc'), - repeats=True) + sub_section=SectionProxy("x_elk_section_xc"), repeats=True + ) class Energy(runschema.calculation.Energy): - m_def = Section(validate=False, extends_base_section=True) x_elk_fermi_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Fermi energy - ''') + """, + ) x_elk_core_electron_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Core-electron kinetic energy - ''') + """, + ) x_elk_coulomb_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb energy - ''') + """, + ) x_elk_coulomb_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb potential energy - ''') + """, + ) x_elk_nuclear_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Nuclear-nuclear energy - ''') + """, + ) x_elk_electron_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electron-nuclear energy - ''') + """, + ) x_elk_hartree_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Hartree energy - ''') + """, + ) x_elk_madelung_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Madelung energy - ''') + """, + ) x_elk_exchange_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Exchange energy - ''') + """, + ) x_elk_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Correlation energy - ''') + """, + ) x_elk_electron_entropic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electron entropic energy - ''') + """, + ) x_elk_dos_fermi_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / joule', - description=''' + unit="1 / joule", + description=""" DOS at Fermi energy - ''') + """, + ) x_elk_direct_gap_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Estimated fundamental direct gap - ''') + """, + ) x_elk_indirect_gap_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Estimated fundamental indirect gap - ''') + """, + ) class Charges(runschema.calculation.Charges): - m_def = Section(validate=False, extends_base_section=True) x_elk_core_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Core charge scf iteration - ''') + """, + ) x_elk_valence_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Valence charge scf iteration - ''') + """, + ) x_elk_interstitial_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Interstitial charge scf iteration - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_elk_core_charge_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Core charge final - ''') + """, + ) x_elk_valence_charge_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Valence charge final - ''') + """, + ) x_elk_interstitial_charge_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Interstitial charge final - ''') + """, + ) x_elk_fermi_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Fermi energy final - ''') + """, + ) x_elk_core_electron_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Core-electron kinetic energy final - ''') + """, + ) x_elk_coulomb_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb energy final - ''') + """, + ) x_elk_coulomb_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb potential energy final - ''') + """, + ) x_elk_nuclear_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Nuclear-nuclear energy final - ''') + """, + ) x_elk_electron_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electron-nuclear energy final - ''') + """, + ) x_elk_hartree_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Hartree energy final - ''') + """, + ) x_elk_madelung_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Madelung energy final - ''') + """, + ) x_elk_exchange_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Exchange energy final - ''') + """, + ) x_elk_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Correlation energy final - ''') + """, + ) x_elk_electron_entropic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electron entropic energy final - ''') + """, + ) x_elk_dos_fermi = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / joule', - description=''' + unit="1 / joule", + description=""" DOS at Fermi energy - ''') + """, + ) x_elk_direct_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Estimated fundamental direct gap final - ''') + """, + ) x_elk_indirect_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Estimated fundamental indirect gap final - ''') + """, + ) diff --git a/electronicparsers/elk/parser.py b/electronicparsers/elk/parser.py index 286cf833..37fddce2 100644 --- a/electronicparsers/elk/parser.py +++ b/electronicparsers/elk/parser.py @@ -25,196 +25,263 @@ from nomad.parsing.file_parser import TextParser, Quantity, DataTextParser from runschema.run import Run, Program from runschema.method import ( - Method, DFT, XCFunctional, Functional, Electronic, Smearing, + Method, + DFT, + XCFunctional, + Functional, + Electronic, + Smearing, BasisSetContainer, ) from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Charges, ScfIteration, Energy, EnergyEntry, BandEnergies, Dos, DosValues + Calculation, + Charges, + ScfIteration, + Energy, + EnergyEntry, + BandEnergies, + Dos, + DosValues, ) from .metainfo import m_env # pylint: disable=unused-import -re_f = r'[-+]?\d*\.\d*(?:[Ee][-+]\d+)?' -re_n = r'[\n\r]' +re_f = r"[-+]?\d*\.\d*(?:[Ee][-+]\d+)?" +re_n = r"[\n\r]" class EigenvalParser(TextParser): def init_quantities(self): self._quantities = [ - Quantity('n_kpoints', r'(\d+) *\: *nkpt', dtype=np.int32), - Quantity('n_states', r'(\d+) *\: *nstsv', dtype=np.int32), + Quantity("n_kpoints", r"(\d+) *\: *nkpt", dtype=np.int32), + Quantity("n_states", r"(\d+) *\: *nstsv", dtype=np.int32), Quantity( - 'kpoint', - rf'\d+ +({re_f}) +({re_f}) +({re_f}) +\: k\-point', - repeats=True, dtype=np.dtype(np.float64) + "kpoint", + rf"\d+ +({re_f}) +({re_f}) +({re_f}) +\: k\-point", + repeats=True, + dtype=np.dtype(np.float64), ), Quantity( - 'eigenvalue_occupancy', - rf'state, eigenvalue and occupancy below\)\s+((?:\d+ +{re_f} +{re_f} *{re_n}\s+)+)', - dtype=np.dtype(np.float64), str_operation=lambda x: [v.split() for v in x.strip().splitlines()], - repeats=True - ) + "eigenvalue_occupancy", + rf"state, eigenvalue and occupancy below\)\s+((?:\d+ +{re_f} +{re_f} *{re_n}\s+)+)", + dtype=np.dtype(np.float64), + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], + repeats=True, + ), ] class MainfileParser(TextParser): def init_quantities(self): self._quantities = [ - Quantity('program_version', r'Elk version (\S+)', dtype=str, flatten=False), + Quantity("program_version", r"Elk version (\S+)", dtype=str, flatten=False), Quantity( - 'lattice_vectors', - rf'Lattice vectors \:\s+((?:{re_f} +{re_f} +{re_f}\s+)+)', - shape=(3, 3), dtype=np.dtype(np.float64) + "lattice_vectors", + rf"Lattice vectors \:\s+((?:{re_f} +{re_f} +{re_f}\s+)+)", + shape=(3, 3), + dtype=np.dtype(np.float64), ), Quantity( - 'species', - r'(Species \: +\d+[\s\S]+?atomic positions.+\s+)' - rf'((?:\d+ \: +{re_f} +{re_f}.+\s+)+)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('atom_label', r'Species \: +\d+ +\((\w+)\)', dtype=str), - Quantity( - 'x_elk_muffin_tin_radius', - rf'muffin-tin radius \: +({re_f})', dtype=np.float64, unit=ureg.bohr - ), - Quantity( - 'x_elk_muffin_tin_points', - rf'number of radial points in muffin\-tin \: +(\d+)', - dtype=np.int32 - ), - Quantity( - 'atom_positions', - rf'\d+ +\: +({re_f}) +({re_f}) +({re_f}).+', - repeats=True, dtype=np.dtype(np.float64) - ) - ]) + "species", + r"(Species \: +\d+[\s\S]+?atomic positions.+\s+)" + rf"((?:\d+ \: +{re_f} +{re_f}.+\s+)+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "atom_label", r"Species \: +\d+ +\((\w+)\)", dtype=str + ), + Quantity( + "x_elk_muffin_tin_radius", + rf"muffin-tin radius \: +({re_f})", + dtype=np.float64, + unit=ureg.bohr, + ), + Quantity( + "x_elk_muffin_tin_points", + rf"number of radial points in muffin\-tin \: +(\d+)", + dtype=np.int32, + ), + Quantity( + "atom_positions", + rf"\d+ +\: +({re_f}) +({re_f}) +({re_f}).+", + repeats=True, + dtype=np.dtype(np.float64), + ), + ] + ), ), - Quantity('spin_treatment', r'Spin treatment +\:\s+(\S+)', dtype=str), - Quantity('x_elk_kpoints_grid', r'k\-point grid +\: +(\d+) +(\d+) +(\d+)', dtype=np.dtype(np.int32)), + Quantity("spin_treatment", r"Spin treatment +\:\s+(\S+)", dtype=str), Quantity( - 'x_elk_rgkmax', - rf'Muffin\-tin radius times maximum \|G\+k\| +\: +({re_f})', - dtype=np.float64, unit=ureg.bohr + "x_elk_kpoints_grid", + r"k\-point grid +\: +(\d+) +(\d+) +(\d+)", + dtype=np.dtype(np.int32), ), Quantity( - 'x_elk_gkmax', - rf'Maximum \|G\+k\| for APW functions +\: +({re_f})', - dtype=np.float64, unit=1 / ureg.bohr + "x_elk_rgkmax", + rf"Muffin\-tin radius times maximum \|G\+k\| +\: +({re_f})", + dtype=np.float64, + unit=ureg.bohr, ), Quantity( - 'x_elk_gmaxvr', - rf'Maximum \|G\| for potential and density +\: +({re_f})', - dtype=np.float64, unit=1 / ureg.bohr + "x_elk_gkmax", + rf"Maximum \|G\+k\| for APW functions +\: +({re_f})", + dtype=np.float64, + unit=1 / ureg.bohr, ), Quantity( - 'x_elk_gvector_size', - r'G\-vector grid sizes +\: +(\d+) +(\d+) +(\d+)', - dtype=np.dtype(np.int32) + "x_elk_gmaxvr", + rf"Maximum \|G\| for potential and density +\: +({re_f})", + dtype=np.float64, + unit=1 / ureg.bohr, ), Quantity( - 'x_elk_gvector_total', - r'Number of G\-vectors +\: +(\d+)', - dtype=np.int32 + "x_elk_gvector_size", + r"G\-vector grid sizes +\: +(\d+) +(\d+) +(\d+)", + dtype=np.dtype(np.int32), ), Quantity( - 'x_elk_lmaxapw', r'APW functions +\: +(\d+)', - dtype=np.int32 + "x_elk_gvector_total", + r"Number of G\-vectors +\: +(\d+)", + dtype=np.int32, ), + Quantity("x_elk_lmaxapw", r"APW functions +\: +(\d+)", dtype=np.int32), Quantity( - 'x_elk_nuclear_charge', rf'Total nuclear charge +\: +({re_f})', - dtype=np.float64 + "x_elk_nuclear_charge", + rf"Total nuclear charge +\: +({re_f})", + dtype=np.float64, ), Quantity( - 'x_elk_core_charge', rf'Total core charge +\: +({re_f})', - dtype=np.float64 + "x_elk_core_charge", + rf"Total core charge +\: +({re_f})", + dtype=np.float64, ), Quantity( - 'x_elk_valence_charge', rf'Total valence charge +\: +({re_f})', - dtype=np.float64 + "x_elk_valence_charge", + rf"Total valence charge +\: +({re_f})", + dtype=np.float64, ), Quantity( - 'x_elk_excess_charge', rf'Total excess charge +\: +({re_f})', - dtype=np.float64 + "x_elk_excess_charge", + rf"Total excess charge +\: +({re_f})", + dtype=np.float64, ), Quantity( - 'x_elk_electronic_charge', rf'Total electronic charge +\: +({re_f})', - dtype=np.float64 + "x_elk_electronic_charge", + rf"Total electronic charge +\: +({re_f})", + dtype=np.float64, ), Quantity( - 'x_elk_wigner_radius', rf'Effective Wigner radius, r_s +\: +({re_f})', - dtype=np.float64 + "x_elk_wigner_radius", + rf"Effective Wigner radius, r_s +\: +({re_f})", + dtype=np.float64, ), Quantity( - 'x_elk_empty_states', r'Number of empty states +\: +(\d+)', - dtype=np.int32 + "x_elk_empty_states", + r"Number of empty states +\: +(\d+)", + dtype=np.int32, ), Quantity( - 'x_elk_valence_states', r'Total number of valence states +\: +(\d+)', - dtype=np.int32 + "x_elk_valence_states", + r"Total number of valence states +\: +(\d+)", + dtype=np.int32, ), Quantity( - 'x_elk_core_states', r'Total number of core states +\: +(\d+)', - dtype=np.int32 + "x_elk_core_states", + r"Total number of core states +\: +(\d+)", + dtype=np.int32, ), Quantity( - 'x_elk_lo', r'Total number of local\-orbitals +\: +(\d+)', - dtype=np.int32 + "x_elk_lo", + r"Total number of local\-orbitals +\: +(\d+)", + dtype=np.int32, ), - Quantity('smearing_type', r'Smearing type +\: +(\d+)\s+\S+', dtype=np.int32), - Quantity('smearing_width', rf'Smearing width +\: +({re_f})', dtype=np.float64), Quantity( - 'electronic_temperature', - rf'Effective electronic temperature \(K\) +\: +({re_f})', - dtype=np.float64 + "smearing_type", r"Smearing type +\: +(\d+)\s+\S+", dtype=np.int32 ), Quantity( - 'xc_functional', r'Exchange\-correlation functional +\: +(\d+)', - dtype=np.int32 + "smearing_width", rf"Smearing width +\: +({re_f})", dtype=np.float64 ), Quantity( - 'scf', - r'Self\-consistent loop started([\s\S]+?)(?:Self\-consistent loop stopped|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'loop', - r'(Loop number +\: +\d+ +\|+\s+\+\-+\+[\s\S]+?)\+\-+\+', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'energies', - r'Energies +\:\s+([\s\S]+?total energy.+)', - sub_parser=TextParser(quantities=[Quantity( - 'key_val', rf' *([\w \-]+?) +\: +({re_f})', dtype=np.float64, - repeats=True, str_operation=lambda x: x.rsplit(' ', 1) - )]) - ), - Quantity( - 'charges', - r'Charges +\:\s+([\s\S]+?error.+)', - sub_parser=TextParser(quantities=[ + "electronic_temperature", + rf"Effective electronic temperature \(K\) +\: +({re_f})", + dtype=np.float64, + ), + Quantity( + "xc_functional", + r"Exchange\-correlation functional +\: +(\d+)", + dtype=np.int32, + ), + Quantity( + "scf", + r"Self\-consistent loop started([\s\S]+?)(?:Self\-consistent loop stopped|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "loop", + r"(Loop number +\: +\d+ +\|+\s+\+\-+\+[\s\S]+?)\+\-+\+", + repeats=True, + sub_parser=TextParser( + quantities=[ Quantity( - 'key_val', rf' *([\w \-]+?) +\: +({re_f})', dtype=np.float64, - repeats=True, str_operation=lambda x: x.rsplit(' ', 1) + "energies", + r"Energies +\:\s+([\s\S]+?total energy.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_val", + rf" *([\w \-]+?) +\: +({re_f})", + dtype=np.float64, + repeats=True, + str_operation=lambda x: x.rsplit( + " ", 1 + ), + ) + ] + ), ), Quantity( - 'muffin_tin', rf'atom +\d+ +\: +({re_f})', - repeats=True, dtype=np.float64 - ) - ]) - ), - Quantity( - 'energy_chage', - rf'Absolute change in total energy \(target\) +\: +({re_f})', - dtype=np.float64, unit=ureg.hartree + "charges", + r"Charges +\:\s+([\s\S]+?error.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_val", + rf" *([\w \-]+?) +\: +({re_f})", + dtype=np.float64, + repeats=True, + str_operation=lambda x: x.rsplit( + " ", 1 + ), + ), + Quantity( + "muffin_tin", + rf"atom +\d+ +\: +({re_f})", + repeats=True, + dtype=np.float64, + ), + ] + ), + ), + Quantity( + "energy_chage", + rf"Absolute change in total energy \(target\) +\: +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "time", + rf"Time \(CPU seconds\) +\: +({re_f})", + dtype=np.float64, + unit=ureg.s, + ), + ] ), - Quantity( - 'time', - rf'Time \(CPU seconds\) +\: +({re_f})', - dtype=np.float64, unit=ureg.s - ) - ]) - ) - ]) - ) + ) + ] + ), + ), ] @@ -224,32 +291,40 @@ def __init__(self): self.eigenval_parser = EigenvalParser() self.dos_parser = DataTextParser() self._xc_map = { - 2: ['LDA_C_PZ', 'LDA_X_PZ'], 3: ['LDA_C_PW', 'LDA_X_PZ'], 4: ['LDA_C_XALPHA'], - 5: ['LDA_C_VBH'], 20: ['GGA_C_PBE', 'GGA_X_PBE'], 21: ['GGA_C_PBE', 'GGA_X_PBE_R'], - 22: ['GGA_C_PBE_SOL', 'GGA_X_PBE_SOL'], 26: ['GGA_C_PBE', 'GGA_X_WC'], - 30: ['GGA_C_AM05', 'GGA_X_AM05'] + 2: ["LDA_C_PZ", "LDA_X_PZ"], + 3: ["LDA_C_PW", "LDA_X_PZ"], + 4: ["LDA_C_XALPHA"], + 5: ["LDA_C_VBH"], + 20: ["GGA_C_PBE", "GGA_X_PBE"], + 21: ["GGA_C_PBE", "GGA_X_PBE_R"], + 22: ["GGA_C_PBE_SOL", "GGA_X_PBE_SOL"], + 26: ["GGA_C_PBE", "GGA_X_WC"], + 30: ["GGA_C_AM05", "GGA_X_AM05"], } self._smearing_map = { - 0: 'gaussian', 1: 'methfessel-paxton', 2: 'methfessel-paxton', 3: 'fermi' + 0: "gaussian", + 1: "methfessel-paxton", + 2: "methfessel-paxton", + 3: "fermi", } self._metainfo_map = { - 'sum of eigenvalues': 'sum_eigenvalues', - 'electron kinetic': 'electronic_kinetic', - 'core electron kinetic': 'x_elk_core_electron_kinetic_energy', - 'Coulomb': 'electrostatic', - 'Coulomb potential': 'electrostatic_potential', - 'nuclear-nuclear': 'nuclear_repulsion', - 'electron-nuclear': 'x_elk_electron_nuclear_energy', - 'Hartree': 'x_elk_hartree_energy', - 'Madelung': 'madelung', - 'xc potential': 'xc_potential', - 'exchange': 'exchange', - 'correlation': 'correlation', - 'electron entropic': 'x_elk_electron_entropic_energy', - 'total energy': 'total', - 'core': 'x_elk_core_charge', - 'valence': 'x_elk_valence_charge', - 'interstitial': 'x_elk_interstitial_charge' + "sum of eigenvalues": "sum_eigenvalues", + "electron kinetic": "electronic_kinetic", + "core electron kinetic": "x_elk_core_electron_kinetic_energy", + "Coulomb": "electrostatic", + "Coulomb potential": "electrostatic_potential", + "nuclear-nuclear": "nuclear_repulsion", + "electron-nuclear": "x_elk_electron_nuclear_energy", + "Hartree": "x_elk_hartree_energy", + "Madelung": "madelung", + "xc potential": "xc_potential", + "exchange": "exchange", + "correlation": "correlation", + "electron entropic": "x_elk_electron_entropic_energy", + "total energy": "total", + "core": "x_elk_core_charge", + "valence": "x_elk_valence_charge", + "interstitial": "x_elk_interstitial_charge", } def init_parser(self): @@ -268,37 +343,41 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(version=self.mainfile_parser.get('program_version', '')) + sec_run.program = Program( + version=self.mainfile_parser.get("program_version", "") + ) sec_method = Method() sec_run.method.append(sec_method) sec_method.electrons_representation = [ BasisSetContainer( - type='(L)APW+lo', - scope=['wavefunction'], + type="(L)APW+lo", + scope=["wavefunction"], ) ] # xc functional sec_xc_functional = XCFunctional() for name in self._xc_map.get(self.mainfile_parser.xc_functional, []): functional = Functional(name=name) - if '_X_' in name or name.endswith('_X'): + if "_X_" in name or name.endswith("_X"): sec_xc_functional.exchange.append(functional) - elif '_C_' in name or name.endswith('_C'): + elif "_C_" in name or name.endswith("_C"): sec_xc_functional.correlation.append(functional) - elif 'HYB' in name: + elif "HYB" in name: sec_xc_functional.hybrid.append(functional) else: sec_xc_functional.contributions.append(functional) sec_method.dft = DFT(xc_functional=sec_xc_functional) # electronic smearing parameters - sec_method.electronic = Electronic(smearing=Smearing( - kind=self._smearing_map.get(self.mainfile_parser.smearing_type), - width=self.mainfile_parser.smearing_width - )) + sec_method.electronic = Electronic( + smearing=Smearing( + kind=self._smearing_map.get(self.mainfile_parser.smearing_type), + width=self.mainfile_parser.smearing_width, + ) + ) # simulation parameters for key, val in self.mainfile_parser.items(): - if key.startswith('x_elk_') and val is not None: + if key.startswith("x_elk_") and val is not None: try: setattr(sec_method, key, val) except Exception: @@ -306,49 +385,61 @@ def parse(self, filepath, archive, logger): sec_system = System() sec_run.system.append(sec_system) - species = self.mainfile_parser.get('species', []) + species = self.mainfile_parser.get("species", []) labels = [] positions = [] for specie in species: - position = specie.get('atom_positions') - labels.extend([specie.get('atom_label', 'X')] * len(position)) + position = specie.get("atom_positions") + labels.extend([specie.get("atom_label", "X")] * len(position)) positions.extend(position) - lattice_vectors = self.mainfile_parser.get('lattice_vectors', np.eye(3)) * ureg.bohr + lattice_vectors = ( + self.mainfile_parser.get("lattice_vectors", np.eye(3)) * ureg.bohr + ) sec_system.atoms = Atoms( - labels=labels, positions=np.dot(positions, lattice_vectors), - lattice_vectors=lattice_vectors + labels=labels, + positions=np.dot(positions, lattice_vectors), + lattice_vectors=lattice_vectors, ) sec_calc = Calculation() sec_run.calculation.append(sec_calc) - for loop in self.mainfile_parser.get('scf', {}).get('loop', []): + for loop in self.mainfile_parser.get("scf", {}).get("loop", []): scf_iteration = ScfIteration() sec_calc.scf_iteration.append(scf_iteration) # energies - energies = {key: val * ureg.hartree for key, val in loop.get('energies', {}).get('key_val', [])} + energies = { + key: val * ureg.hartree + for key, val in loop.get("energies", {}).get("key_val", []) + } scf_iteration.energy = Energy() for key, val in energies.items(): name = self._metainfo_map.get(key) - if key.lower() == 'fermi': + if key.lower() == "fermi": scf_iteration.energy.fermi = val elif name is not None: - if name.endswith('_kinetic'): - name = name.replace('_kinetic', '') + if name.endswith("_kinetic"): + name = name.replace("_kinetic", "") energy_entry = getattr(scf_iteration.energy, name) if energy_entry is None: - setattr(scf_iteration.energy, name, EnergyEntry(kinetic=val)) + setattr( + scf_iteration.energy, name, EnergyEntry(kinetic=val) + ) else: energy_entry.kinetic = val - elif name.endswith('_potential'): - name = name.replace('_potential', '') + elif name.endswith("_potential"): + name = name.replace("_potential", "") energy_entry = getattr(scf_iteration.energy, name) if energy_entry is None: - setattr(scf_iteration.energy, name, EnergyEntry(potential=val)) + setattr( + scf_iteration.energy, name, EnergyEntry(potential=val) + ) else: energy_entry.potential = val else: - val = val if name.startswith('x_elk') else EnergyEntry(value=val) + val = ( + val if name.startswith("x_elk") else EnergyEntry(value=val) + ) setattr(scf_iteration.energy, name, val) scf_iteration.energy.change = loop.energy_change @@ -358,31 +449,40 @@ def parse(self, filepath, archive, logger): if loop.charges is not None: sec_charges = Charges() scf_iteration.charges.append(sec_charges) - for key, val in loop.charges.get('key_val', []): + for key, val in loop.charges.get("key_val", []): name = self._metainfo_map.get(key) - if key.lower() == 'total charge': + if key.lower() == "total charge": sec_charges.total = val * ureg.elementary_charge - sec_charges.value = loop.charges.get('muffin_tin', []) * ureg.elementary_charge + sec_charges.value = ( + loop.charges.get("muffin_tin", []) * ureg.elementary_charge + ) elif name is not None: setattr(sec_charges, name, val) # eigenvalues - self.eigenval_parser.mainfile = os.path.join(self.maindir, 'EIGVAL.OUT') + self.eigenval_parser.mainfile = os.path.join(self.maindir, "EIGVAL.OUT") sec_eigenvalue = BandEnergies() sec_calc.eigenvalues.append(sec_eigenvalue) - sec_eigenvalue.kpoints = self.eigenval_parser.get('kpoint') - eigs_occs = self.eigenval_parser.get('eigenvalue_occupancy', []) - n_spin = 1 if self.mainfile_parser.get('spin_treatment', '').lower() == 'spin-unpolarised' else 2 + sec_eigenvalue.kpoints = self.eigenval_parser.get("kpoint") + eigs_occs = self.eigenval_parser.get("eigenvalue_occupancy", []) + n_spin = ( + 1 + if self.mainfile_parser.get("spin_treatment", "").lower() + == "spin-unpolarised" + else 2 + ) # TODO determine how eigenvalues are printed in spin polarized case - eigs_occs = np.reshape(eigs_occs, ( - self.eigenval_parser.n_kpoints, n_spin, self.eigenval_parser.n_states, 3)) + eigs_occs = np.reshape( + eigs_occs, + (self.eigenval_parser.n_kpoints, n_spin, self.eigenval_parser.n_states, 3), + ) eigs_occs = np.transpose(eigs_occs, axes=(3, 1, 0, 2)) # first column is state index sec_eigenvalue.energies = eigs_occs[1] * ureg.hartree sec_eigenvalue.occupancies = eigs_occs[2] # dos - self.dos_parser.mainfile = os.path.join(self.maindir, 'TDOS.OUT') + self.dos_parser.mainfile = os.path.join(self.maindir, "TDOS.OUT") if self.dos_parser.data is not None: dos_data = np.transpose(self.dos_parser.data) sec_dos = Dos() diff --git a/electronicparsers/exciting/metainfo/exciting.py b/electronicparsers/exciting/metainfo/exciting.py index f52c35eb..62a9479c 100644 --- a/electronicparsers/exciting/metainfo/exciting.py +++ b/electronicparsers/exciting/metainfo/exciting.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,415 +39,466 @@ class x_exciting_section_geometry_optimization(MSection): - ''' + """ section for geometry optimization - ''' + """ m_def = Section(validate=False) class x_exciting_section_atoms_group(MSection): - ''' + """ a group of atoms of the same type - ''' + """ m_def = Section(validate=False) x_exciting_geometry_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" labels of atom - ''') + """, + ) x_exciting_geometry_atom_number = Quantity( type=str, shape=[], - description=''' + description=""" number to identify the atoms of a species - ''') + """, + ) x_exciting_atom_number = Quantity( type=str, shape=[], - description=''' + description=""" number to identify the atoms of a species in the geometry optimization - ''') + """, + ) x_exciting_atom_label = Quantity( type=str, shape=[], - description=''' + description=""" labels of atoms in geometry optimization - ''') + """, + ) x_exciting_MT_external_magnetic_field_atom_number = Quantity( type=str, shape=[], - description=''' + description=""" number to identify the atoms of a species on which a magnetic field is applied - ''') + """, + ) x_exciting_geometry_atom_positions = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" atomic positions - ''') + """, + ) x_exciting_geometry_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x component of atomic position - ''') + """, + ) x_exciting_geometry_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y component of atomic position - ''') + """, + ) x_exciting_geometry_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z component of atomic position - ''') + """, + ) x_exciting_MT_external_magnetic_field_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x component of the magnetic field - ''') + """, + ) x_exciting_MT_external_magnetic_field_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y component of the magnetic field - ''') + """, + ) x_exciting_MT_external_magnetic_field_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z component of the magnetic field - ''') + """, + ) x_exciting_muffin_tin_points = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" muffin-tin points - ''') + """, + ) x_exciting_muffin_tin_radius = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" muffin-tin radius - ''') + """, + ) x_exciting_atom_position_format = Quantity( type=str, shape=[], - description=''' + description=""" whether the atomic positions are given in cartesian or vector coordinates - ''') + """, + ) x_exciting_magnetic_field_format = Quantity( type=str, shape=[], - description=''' + description=""" whether the magnetic field is given in cartesian or vector coordinates - ''') + """, + ) class x_exciting_section_bandstructure(MSection): - ''' + """ bandstructure values - ''' + """ m_def = Section(validate=False) x_exciting_band_number_of_vertices = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of vertices along the kpoint path used for the bandstructure plot - ''') + """, + ) x_exciting_band_number_of_kpoints = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of points along the kpoint path used for the bandstructure plot - ''') + """, + ) x_exciting_band_vertex_labels = Quantity( type=str, - shape=['x_exciting_band_number_of_vertices'], - description=''' + shape=["x_exciting_band_number_of_vertices"], + description=""" labels of the vertices along the kpoint path used for the bandstructure plot - ''') + """, + ) x_exciting_band_vertex_coordinates = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_band_number_of_vertices', 3], - description=''' + shape=["x_exciting_band_number_of_vertices", 3], + description=""" coordinates of the vertices along the kpoint path used for the bandstructure plot - ''') + """, + ) x_exciting_band_structure_kind = Quantity( type=str, shape=[], - description=''' + description=""" String to specify the kind of band structure (either electronic or vibrational). - ''') + """, + ) x_exciting_band_number_of_eigenvalues = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of eigenvalues per k-point - ''') + """, + ) x_exciting_band_k_points = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_band_number_of_kpoints'], - description=''' + shape=["x_exciting_band_number_of_kpoints"], + description=""" Fractional coordinates of the k points (in the basis of the reciprocal-lattice vectors) for which the electronic energy are given. - ''') + """, + ) x_exciting_band_energies = Quantity( type=np.dtype(np.float64), - shape=['number_of_spin_channels', 'x_exciting_band_number_of_kpoints', 'x_exciting_band_number_of_eigenvalues'], - unit='joule', - description=''' + shape=[ + "number_of_spin_channels", + "x_exciting_band_number_of_kpoints", + "x_exciting_band_number_of_eigenvalues", + ], + unit="joule", + description=""" $k$-dependent energies of the electronic band structure. - ''') + """, + ) x_exciting_band_value = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Bandstructure energy values - ''') + """, + ) class x_exciting_section_dos(MSection): - ''' + """ dos values - ''' + """ m_def = Section(validate=False) x_exciting_dos_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" energy value for a dos point - ''') + """, + ) x_exciting_dos_value = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / joule', - description=''' + unit="1 / joule", + description=""" Density of states values - ''') + """, + ) class x_exciting_section_fermi_surface(MSection): - ''' + """ Fermi surface values - ''' + """ m_def = Section(validate=False) x_exciting_fermi_energy_fermi_surface = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Fermi energy for Fermi surface - ''') + """, + ) x_exciting_grid_fermi_surface = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" number of points in the mesh to calculate the Fermi surface - ''') + """, + ) x_exciting_number_of_bands_fermi_surface = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of bands for fermi surface - ''') + """, + ) x_exciting_number_of_mesh_points_fermi_surface = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of mesh points for fermi surface - ''') + """, + ) x_exciting_origin_fermi_surface = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Origin (in lattice coordinate) of the region where the Fermi surface is calculated - ''') + """, + ) x_exciting_values_fermi_surface = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_number_of_bands_fermi_surface', 'x_exciting_number_of_mesh_points_fermi_surface'], - unit='joule', - description=''' + shape=[ + "x_exciting_number_of_bands_fermi_surface", + "x_exciting_number_of_mesh_points_fermi_surface", + ], + unit="joule", + description=""" Fermi surface values - ''') + """, + ) x_exciting_vectors_fermi_surface = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" Vectors (in lattice coordinate) defining the region where the Fermi surface is calculated - ''') + """, + ) class x_exciting_section_lattice_vectors(MSection): - ''' + """ lattice vectors - ''' + """ m_def = Section(validate=False) x_exciting_geometry_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of lattice vector - ''') + """, + ) x_exciting_geometry_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of lattice vector - ''') + """, + ) x_exciting_geometry_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of lattice vector - ''') + """, + ) class x_exciting_section_reciprocal_lattice_vectors(MSection): - ''' + """ reciprocal lattice vectors - ''' + """ m_def = Section(validate=False) x_exciting_geometry_reciprocal_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" x component of reciprocal lattice vector - ''') + """, + ) x_exciting_geometry_reciprocal_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" y component of reciprocal lattice vector - ''') + """, + ) x_exciting_geometry_reciprocal_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" z component of reciprocal lattice vector - ''') + """, + ) class x_exciting_section_spin(MSection): - ''' + """ section for exciting spin treatment - ''' + """ m_def = Section(validate=False) x_exciting_spin_treatment = Quantity( type=str, shape=[], - description=''' + description=""" Spin treatment - ''') + """, + ) class x_exciting_section_xc(MSection): - ''' + """ index for exciting functional - ''' + """ m_def = Section(validate=False) x_exciting_xc_functional = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" index for exciting functional - ''') + """, + ) class x_exciting_freqgrid_parameters(MSection): - ''' + """ Frequency grid setup used for computing W(q,omega) and Sigma(k,omega). - ''' + """ m_def = Section(validate=False) x_exciting_eta = Quantity( type=np.float64, shape=[], - description=''' + description=""" Numerical (complex) smearing parameter used for the real frequency convolution and qdepw=sum. - ''') + """, + ) x_exciting_fconv = Quantity( type=str, shape=[], - description=''' + description=""" Frequency convolution type: nofreq - skip frequency dependency (testing option). refreq - real frequency formalism (only for response functions). imfreq - imaginary frequency formalism. - ''') + """, + ) x_exciting_fgrid = Quantity( type=str, shape=[], - description=''' + description=""" Grid types (listed only the recommended ones, for more grids see the source subroutine mod_frequency.f90): eqdist - Equidistant grid from freqmin to freqmax. @@ -450,201 +508,221 @@ class x_exciting_freqgrid_parameters(MSection): and freqmax to ∞. clencurt2 - Grid for the Clenshaw-Curtis quadrature rule from 0 to ∞. freqmax can be used to rescale the frequencies. - ''') + """, + ) x_exciting_freqmax = Quantity( type=np.float64, shape=[], - description=''' + description=""" Upper limit for the grid interval. - ''') + """, + ) x_exciting_freqmin = Quantity( type=np.float64, shape=[], - description=''' + description=""" Lower limit for the grid interval. - ''') + """, + ) x_exciting_nomeg = Quantity( type=np.int32, shape=[], - description=''' + description=""" Number of grid points. - ''') + """, + ) class x_exciting_selfenergy_parameters(MSection): - ''' + """ Correlation self-energy setup. - ''' + """ m_def = Section(validate=False) x_exciting_actype = Quantity( type=str, shape=[], - description=''' + description=""" Analytical continuation scheme: pade - Pade's approximant (by H. J. Vidberg and J. W. Serence, J. Low Temp. Phys. 29, 179 (1977)). aaa - Y. Nakatsukasa, O. Sete, L. N. Trefethen, "The AAA algorithm for rational approximation", SIAM J. Sci. Comp. 40 (2018), A1494-A1522. - ''') + """, + ) x_exciting_eqpsolver = Quantity( type=np.int32, shape=[], - description=''' + description=""" Schemes to solve the quasiparticle (non-linear) equation: 0 - Perturbative solution. 1 - Z=1 calculations. 2 - Iterative solution. - ''') + """, + ) x_exciting_eshift = Quantity( type=np.int32, shape=[], - description=''' + description=""" Alignment of the chemical potential: 0 - No alignment. 1 - Self-consistency at the Fermi level (iteratively). 2 - Self-consistency at the Fermi level (perturbatively). - ''') + """, + ) x_exciting_method = Quantity( type=str, shape=[], - description=''' + description=""" Technique to compute the frequency convolution integral: ac - Analytical continuation cd - Contour deformation - ''') + """, + ) x_exciting_nempty = Quantity( type=np.int32, shape=[], - description=''' + description=""" Number of empty states to calculate the correlation self energy (different from default). - ''') + """, + ) x_exciting_singularity = Quantity( type=str, shape=[], - description=''' + description=""" Treatment of the q→0 singularity: none': No special treatment (test purpose only). mpb': Auxiliary function method by S. Massidda, M. Posternak, and A. Baldereschi, PRB 48, 5058 (1993) crg': Auxiliary function method by P. Carrier, S. Rohra, and A. Goerling, PRB 75, 205126 (2007). - ''') + """, + ) x_exciting_swidth = Quantity( type=np.float64, shape=[], - description=''' + description=""" Smearing parameter for visualizing the spectral function. - ''') + """, + ) x_exciting_tol = Quantity( type=np.float64, shape=[], - description=''' + description=""" Tolerance factor used for generating support points in AAA-interpolation. - ''') + """, + ) class x_exciting_wgrid_parameters(MSection): - ''' + """ The real frequency grid (output) setup for computing and visualizing the correlation self-energy and the spectral function. For more detailed description see freqgrid. - ''' + """ m_def = Section(validate=False) x_exciting_size = Quantity( type=np.int32, shape=[], - description=''' + description=""" Number of grid points. - ''') + """, + ) x_exciting_type = Quantity( type=str, shape=[], - description=''' + description=""" Grid type. - ''') + """, + ) x_exciting_wmax = Quantity( type=np.float64, shape=[], - description=''' + description=""" Upper limit for the grid interval. - ''') + """, + ) x_exciting_wmin = Quantity( type=np.float64, shape=[], - description=''' + description=""" Lower limit for the grid interval. - ''') + """, + ) class x_exciting_mixbasis_parameters(MSection): - ''' + """ Mixed-product basis setup. - ''' + """ m_def = Section(validate=False) x_exciting_epsmb = Quantity( type=np.float64, shape=[], - description=''' + description=""" Linear dependence tolerance factor: controls construction of the radial part of the mixed-product basis. - ''') + """, + ) x_exciting_gmb = Quantity( type=np.float64, shape=[], - description=''' + description=""" Plane-wave energy cutoff (in units of GLAPWmax): controls construction of the plane-wave part of the mixed-product basis. - ''') + """, + ) x_exciting_lmaxmb = Quantity( type=np.int32, shape=[], - description=''' + description=""" Maximal angular momentum: controls construction of the radial part of the mixed-product basis. - ''') + """, + ) class x_exciting_barecoul_parameters(MSection): - ''' + """ The bare Coulomb potential setup. - ''' + """ m_def = Section(validate=False) x_exciting_barcevtol = Quantity( type=np.float64, shape=[], - description=''' + description=""" Matrix elements of the polarizability, the screened Coulomb potential, and the self-energy are computed in the basis that diagonalize the bare Coulomb potential. This tolerance factor is used to reduce the size of the Vc-diagonal product basis when computing the screened Coulomb potential and the correlation self-energy. - ''') + """, + ) x_exciting_basis = Quantity( type=str, shape=[], - description=''' + description=""" Two approaches to compute the bare Coulomb potential: mb - The Coulomb potential is computed in the mixed-product basis. pw - The Coulomb potential is computed in the plane-wave basis and then @@ -652,12 +730,13 @@ class x_exciting_barecoul_parameters(MSection): the potential truncation technique cutofftype is employed. From practical point, usage of this approach requires to set a higher value of pwm (typically = 4.0) - ''') + """, + ) x_exciting_cutofftype = Quantity( type=str, shape=[], - description=''' + description=""" Trigger the usage of the Coulomb potential truncation technique (S. Ismail-Beigi, "Truncation of Periodic Image Interactions for Confined Systems. Phys. Rev. B 73, 233103 (2006)). @@ -665,56 +744,60 @@ class x_exciting_barecoul_parameters(MSection): 0d - Isolated atom or molecule. 1d - 1D chain (periodicity along z-axis) 2d - 2D surface (vacuum separation along z-direction) - ''') + """, + ) x_exciting_pwm = Quantity( type=np.float64, shape=[], - description=''' + description=""" Plane-wave energy cutoff (in units of gmaxvr*gmb) for computing the plane-wave part of the Coulomb potential. - ''') + """, + ) x_exciting_stctol = Quantity( type=np.float64, shape=[], - description=''' + description=""" Tolerance factor for computing the structure factor in Ewald summation scheme. - ''') + """, + ) class x_exciting_scrcoul_parameters(MSection): - ''' + """ Dynamically screened Coulomb potential setup. - ''' + """ m_def = Section(validate=False) x_exciting_omegap = Quantity( type=np.float64, shape=[], - description=''' + description=""" Plasmon-pole frequency (fitting parameter). - ''') + """, + ) x_exciting_scrtype = Quantity( type=str, shape=[], - description=''' + description=""" Approximation: rpa - Full-frequency Random-Phase Approximation. ppm - Godby-Needs plasmon-pole model. - ''') + """, + ) class GW(runschema.method.GW): - m_def = Section(validate=False, extends_base_section=True) x_exciting_coreflag = Quantity( type=str, shape=[], - description=''' + description=""" Option for treating core states in GW: all - All-electron treatment. xal - Both core and valence states are used to compute the exchange self-energy @@ -722,88 +805,99 @@ class GW(runschema.method.GW): val - Valence-electron treatment. vab - Valence-electron treatment where core states are also excluded from the construction of the mixed-product basis. - ''') + """, + ) x_exciting_ibgw = Quantity( type=np.int32, shape=[], - description=''' + description=""" QP corrections are computed for states in the interval [ibgw, nbgw]. - ''') + """, + ) x_exciting_nbgw = Quantity( type=np.int32, shape=[], - description=''' + description=""" QP corrections are computed for states in the interval [ibgw, nbgw]. - ''') + """, + ) x_exciting_mblksiz = Quantity( type=np.int32, shape=[], - description=''' + description=""" To reduce the memory usage, in summations over unoccupied states, big matrices are considered to be in a block form with a size of mblksiz. - ''') + """, + ) x_exciting_nempty = Quantity( type=np.int32, shape=[], - description=''' + description=""" Number of empty states to compute both the screened Coulomb potential and the self-energy. - ''') + """, + ) x_exciting_ngridq = Quantity( type=np.int32, shape=[3], - description=''' + description=""" Size of the k/q-point grids. - ''') + """, + ) x_exciting_printSelfC = Quantity( type=bool, shape=[], - description=''' + description=""" Output the correlation self-energy. - ''') + """, + ) x_exciting_printSpectralFunction = Quantity( type=bool, shape=[], - description=''' + description=""" Compute and output the spectral function. - ''') + """, + ) x_exciting_nempty = Quantity( type=np.int32, shape=[], - description=''' + description=""" Method to compute k/q and frequency dependent weights in the expression for polarizability: tet - Using the tetrahedron method as implemented in LibBZInt library sum - Direct summation employing a smearing parameter eta of freqgrid - ''') + """, + ) x_exciting_rpmat = Quantity( type=bool, shape=[], - description=''' + description=""" Skip calculation of the momentum matrix elements, instead read them from files PMATVV.OUT and PMATCV.OUT (restart option). - ''') + """, + ) x_exciting_skipgnd = Quantity( type=bool, shape=[], - description=''' + description=""" Skip the recalculation of KS eigenvalues and eigenvectors for the specified k/q-point grids (restart option). - ''') + """, + ) x_exciting_taskname = Quantity( type=str, shape=[], - description=''' + description=""" Tasks launcher: g0w0 - G0W0 calculations g0w0-x - Exchange only G0W0 calculations @@ -815,1683 +909,1961 @@ class GW(runschema.method.GW): pmat - Calculate matrix elements of the momentum operator acon - Perform analytic continuation of the correlation self-energy from imaginary to real frequency and calculate QP energies - ''') + """, + ) x_exciting_vqloff = Quantity( type=np.float64, shape=[3], - description=''' + description=""" The k/q-point offset vector in lattice coordinates. - ''') + """, + ) x_exciting_freqgrid = SubSection( - sub_section=x_exciting_freqgrid_parameters.m_def, repeats=False) + sub_section=x_exciting_freqgrid_parameters.m_def, repeats=False + ) x_exciting_selfenergy = SubSection( - sub_section=x_exciting_selfenergy_parameters.m_def, repeats=False) + sub_section=x_exciting_selfenergy_parameters.m_def, repeats=False + ) x_exciting_wgrid = SubSection( - sub_section=x_exciting_wgrid_parameters.m_def, repeats=False) + sub_section=x_exciting_wgrid_parameters.m_def, repeats=False + ) x_exciting_mixbasis = SubSection( - sub_section=x_exciting_mixbasis_parameters.m_def, repeats=False) + sub_section=x_exciting_mixbasis_parameters.m_def, repeats=False + ) x_exciting_barecoul = SubSection( - sub_section=x_exciting_barecoul_parameters.m_def, repeats=False) + sub_section=x_exciting_barecoul_parameters.m_def, repeats=False + ) x_exciting_scrcoul = SubSection( - sub_section=x_exciting_scrcoul_parameters.m_def, repeats=False) + sub_section=x_exciting_scrcoul_parameters.m_def, repeats=False + ) x_exciting_bare_coulomb_gmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Maximum G for the pw basis for the Coulomb potential. - ''') + """, + ) x_exciting_mixed_basis_gmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Cut-off parameter for the truncation of the expansion of the plane waves in the interstitial region. - ''') + """, + ) class x_exciting_exciton_calculation(MSection): - ''' + """ Calculation of EXCITON - ''' + """ m_def = Section(validate=False) x_exciting_xs_bse_number_of_excitons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of excitons - ''') + """, + ) x_exciting_xs_bse_exciton_amplitude_im = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_excitons'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_excitons", + ], + description=""" Imaginary part of the transition amplitude - ''') + """, + ) x_exciting_xs_bse_exciton_amplitude_re = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_excitons'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_excitons", + ], + description=""" Real part of the transition amplitude - ''') + """, + ) x_exciting_xs_bse_exciton_binding_energies = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_excitons'], - unit='joule', - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_excitons", + ], + unit="joule", + description=""" Exciton binding energies - ''') + """, + ) x_exciting_xs_bse_exciton_energies = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_excitons'], - unit='joule', - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_excitons", + ], + unit="joule", + description=""" Exciton energies - ''') + """, + ) x_exciting_xs_bse_exciton_oscillator_strength = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_excitons'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_excitons", + ], + description=""" Exciton oscillator strength - ''') + """, + ) class x_exciting_epsilon_calculation(MSection): - ''' + """ Calculation of EPSILON - ''' + """ m_def = Section(validate=False) x_exciting_xs_bse_epsilon_energies = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - unit='joule', - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + unit="joule", + description=""" Energies of the dielectric function epsilon - ''') + """, + ) x_exciting_xs_bse_epsilon_im = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + description=""" Imaginary part of the dielectric function epsilon - ''') + """, + ) x_exciting_xs_bse_epsilon_re = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + description=""" Real part of the dielectric function epsilon - ''') + """, + ) class x_exciting_sigma_calculation(MSection): - ''' + """ Calculation of SIGMA - ''' + """ m_def = Section(validate=False) x_exciting_xs_bse_sigma_energies = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - unit='joule', - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + unit="joule", + description=""" Energies of the conductivity function sigma - ''') + """, + ) x_exciting_xs_bse_sigma_im = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + description=""" Imaginary part of the conductivity function sigma - ''') + """, + ) x_exciting_xs_bse_sigma_re = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + description=""" Real part of the conductivity function sigma - ''') + """, + ) class x_exciting_loss_calculation(MSection): - ''' + """ Calculation of LOSS - ''' + """ m_def = Section(validate=False) x_exciting_xs_bse_loss = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + description=""" Loss function - ''') + """, + ) x_exciting_xs_bse_loss_energies = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_bse_number_of_components', 'x_exciting_xs_bse_number_of_energy_points'], - unit='joule', - description=''' + shape=[ + "x_exciting_xs_bse_number_of_components", + "x_exciting_xs_bse_number_of_energy_points", + ], + unit="joule", + description=""" Energies of the loss function - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_exciting_atom_forces = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_number_of_atoms', 3], - unit='newton', - description=''' + shape=["x_exciting_number_of_atoms", 3], + unit="newton", + description=""" Forces acting on the atoms. - ''') + """, + ) x_exciting_atom_IBS_forces = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_number_of_atoms', 3], - unit='newton', - description=''' + shape=["x_exciting_number_of_atoms", 3], + unit="newton", + description=""" IBS correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_geometry_optimization_method = Quantity( type=str, shape=[], - description=''' + description=""" Geometry optimization method - ''') + """, + ) x_exciting_geometry_optimization_step = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Geometry optimization step - ''') + """, + ) x_exciting_atom_core_forces = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_number_of_atoms', 3], - unit='newton', - description=''' + shape=["x_exciting_number_of_atoms", 3], + unit="newton", + description=""" core correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_HF_forces = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_number_of_atoms', 3], - unit='newton', - description=''' + shape=["x_exciting_number_of_atoms", 3], + unit="newton", + description=""" HF correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_IBS_forces_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x-component of the IBS correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_IBS_forces_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y-component of the IBS correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_IBS_forces_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z-component of the IBS correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_core_forces_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x-component of the core correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_core_forces_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y-component of the core correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_core_forces_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z-component of the core correction to the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_HF_forces_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x-component of the HF Force acting on the atoms. - ''') + """, + ) x_exciting_atom_HF_forces_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y-component of the HF Force acting on the atoms. - ''') + """, + ) x_exciting_atom_HF_forces_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z-component of the HF Force acting on the atoms. - ''') + """, + ) x_exciting_atom_forces_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x-component of the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_forces_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y-component of the Force acting on the atoms. - ''') + """, + ) x_exciting_atom_forces_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z-component of the Force acting on the atoms. - ''') + """, + ) x_exciting_core_electron_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Core-electron kinetic energy final - ''') + """, + ) x_exciting_core_leakage = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Core leakage - ''') + """, + ) x_exciting_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Correlation energy final - ''') + """, + ) x_exciting_coulomb_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb energy final - ''') + """, + ) x_exciting_coulomb_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb potential energy final - ''') + """, + ) x_exciting_dos_fermi = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / joule', - description=''' + unit="1 / joule", + description=""" DOS at Fermi energy - ''') + """, + ) x_exciting_effective_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Effective potential energy final - ''') + """, + ) x_exciting_electron_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electron-nuclear energy final - ''') + """, + ) x_exciting_exchange_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Exchange energy final - ''') + """, + ) x_exciting_fermi_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Fermi energy final - ''') + """, + ) x_exciting_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Estimated fundamental gap - ''') + """, + ) x_exciting_geometry_atom_forces_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" x component of the force acting on the atom - ''') + """, + ) x_exciting_geometry_atom_forces_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" y component of the force acting on the atom - ''') + """, + ) x_exciting_geometry_atom_forces_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" z component of the force acting on the atom - ''') + """, + ) x_exciting_geometry_dummy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" time for scf in geometry optimization - ''') + """, + ) x_exciting_maximum_force_magnitude = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" Maximum force magnitude in geometry optimization - ''') + """, + ) x_exciting_geometry_optimization_threshold_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" Value of threshold for the force modulus as convergence criterion of the geometry_optimization_method used in exciting - ''') + """, + ) x_exciting_hartree_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Hartree energy final - ''') + """, + ) x_exciting_interstitial_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Interstitial charge - ''') + """, + ) x_exciting_madelung_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Madelung energy final - ''') + """, + ) x_exciting_nuclear_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Nuclear-nuclear energy final - ''') + """, + ) x_exciting_store_total_forces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces cartesian - ''') + """, + ) x_exciting_total_MT_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Total charge in muffin-tins - ''') + """, + ) x_exciting_XC_potential = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" XC potential final - ''') + """, + ) x_exciting_xs_bse_number_of_components = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of independent components in the dielectric tensor - ''') + """, + ) x_exciting_xs_bse_number_of_energy_points = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Energy mesh for the dielectric function, conductivity and loss function - ''') + """, + ) x_exciting_xs_tddft_dielectric_function_local_field = Quantity( type=np.dtype(np.float64), - shape=[2, 'x_exciting_xs_tddft_number_of_q_points', 'x_exciting_xs_tddft_number_of_components', 'x_exciting_xs_tddft_number_of_epsilon_values'], - description=''' + shape=[ + 2, + "x_exciting_xs_tddft_number_of_q_points", + "x_exciting_xs_tddft_number_of_components", + "x_exciting_xs_tddft_number_of_epsilon_values", + ], + description=""" Dielectric function epsilon including local-field effects - ''') + """, + ) x_exciting_xs_tddft_dielectric_function_no_local_field = Quantity( type=np.dtype(np.float64), - shape=[2, 'x_exciting_xs_tddft_number_of_q_points', 'x_exciting_xs_tddft_number_of_components', 'x_exciting_xs_tddft_number_of_epsilon_values'], - description=''' + shape=[ + 2, + "x_exciting_xs_tddft_number_of_q_points", + "x_exciting_xs_tddft_number_of_components", + "x_exciting_xs_tddft_number_of_epsilon_values", + ], + description=""" Dielectric function epsilon without local-field effects - ''') + """, + ) x_exciting_xs_tddft_dielectric_tensor_no_sym = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_tddft_number_of_q_points', 2, 3, 3], - description=''' + shape=["x_exciting_xs_tddft_number_of_q_points", 2, 3, 3], + description=""" No-symmetrized static dielectric tensor - ''') + """, + ) x_exciting_xs_tddft_dielectric_tensor_sym = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_tddft_number_of_q_points', 2, 3, 3], - description=''' + shape=["x_exciting_xs_tddft_number_of_q_points", 2, 3, 3], + description=""" Symmetrized static dielectric tensor - ''') + """, + ) x_exciting_xs_tddft_epsilon_energies = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_tddft_number_of_epsilon_values'], - unit='joule', - description=''' + shape=["x_exciting_xs_tddft_number_of_epsilon_values"], + unit="joule", + description=""" Array containing the set of discrete energy values for the dielectric function epsilon. - ''') + """, + ) x_exciting_xs_tddft_loss_function_local_field = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_tddft_number_of_q_points', 'x_exciting_xs_tddft_number_of_components', 'x_exciting_xs_tddft_number_of_epsilon_values'], - description=''' + shape=[ + "x_exciting_xs_tddft_number_of_q_points", + "x_exciting_xs_tddft_number_of_components", + "x_exciting_xs_tddft_number_of_epsilon_values", + ], + description=""" Loss function including local-field effects - ''') + """, + ) x_exciting_xs_tddft_loss_function_no_local_field = Quantity( type=np.dtype(np.float64), - shape=['x_exciting_xs_tddft_number_of_q_points', 'x_exciting_xs_tddft_number_of_components', 'x_exciting_xs_tddft_number_of_epsilon_values'], - description=''' + shape=[ + "x_exciting_xs_tddft_number_of_q_points", + "x_exciting_xs_tddft_number_of_components", + "x_exciting_xs_tddft_number_of_epsilon_values", + ], + description=""" Loss function without local-field effects - ''') + """, + ) x_exciting_xs_tddft_number_of_epsilon_values = Quantity( type=int, shape=[], - description=''' + description=""" Gives the number of energy values for the dielectric function epsilon. - ''') + """, + ) x_exciting_xs_tddft_number_of_optical_components = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of independent components in the dielectric function epsilon - ''') + """, + ) x_exciting_xs_tddft_number_of_q_points = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of Q points - ''') + """, + ) x_exciting_xs_tddft_optical_component = Quantity( type=str, - shape=['x_exciting_xs_tddft_number_of_optical_components'], - description=''' + shape=["x_exciting_xs_tddft_number_of_optical_components"], + description=""" Value of the independent optical components in the dielectric function epsilon - ''') + """, + ) x_exciting_xs_tddft_sigma_local_field = Quantity( type=np.dtype(np.float64), - shape=[2, 'x_exciting_xs_tddft_number_of_q_points', 'x_exciting_xs_tddft_number_of_components', 'x_exciting_xs_tddft_number_of_epsilon_values'], - description=''' + shape=[ + 2, + "x_exciting_xs_tddft_number_of_q_points", + "x_exciting_xs_tddft_number_of_components", + "x_exciting_xs_tddft_number_of_epsilon_values", + ], + description=""" Sigma including local-field effects - ''') + """, + ) x_exciting_xs_tddft_sigma_no_local_field = Quantity( type=np.dtype(np.float64), - shape=[2, 'x_exciting_xs_tddft_number_of_q_points', 'x_exciting_xs_tddft_number_of_components', 'x_exciting_xs_tddft_number_of_epsilon_values'], - description=''' + shape=[ + 2, + "x_exciting_xs_tddft_number_of_q_points", + "x_exciting_xs_tddft_number_of_components", + "x_exciting_xs_tddft_number_of_epsilon_values", + ], + description=""" Sigma without local-field effects - ''') + """, + ) x_exciting_xs_qpointset_qpoint = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" A q-point is given in reciprocal space coordinates - ''') + """, + ) x_exciting_section_bandstructure = SubSection( - sub_section=SectionProxy('x_exciting_section_bandstructure'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_bandstructure"), repeats=True + ) x_exciting_section_dos = SubSection( - sub_section=SectionProxy('x_exciting_section_dos'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_dos"), repeats=True + ) x_exciting_section_fermi_surface = SubSection( - sub_section=SectionProxy('x_exciting_section_fermi_surface'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_fermi_surface"), repeats=True + ) x_exciting_section_MT_charge_atom = SubSection( - sub_section=SectionProxy('x_exciting_section_MT_charge_atom'), - repeats=True + sub_section=SectionProxy("x_exciting_section_MT_charge_atom"), repeats=True ) x_exciting_section_MT_moment_atom = SubSection( - sub_section=SectionProxy('x_exciting_section_MT_moment_atom'), - repeats=True + sub_section=SectionProxy("x_exciting_section_MT_moment_atom"), repeats=True ) - x_exciting_exciton = SubSection(sub_section=x_exciting_exciton_calculation.m_def, repeats=False) + x_exciting_exciton = SubSection( + sub_section=x_exciting_exciton_calculation.m_def, repeats=False + ) - x_exciting_epsilon = SubSection(sub_section=x_exciting_epsilon_calculation.m_def, repeats=False) + x_exciting_epsilon = SubSection( + sub_section=x_exciting_epsilon_calculation.m_def, repeats=False + ) - x_exciting_sigma = SubSection(sub_section=x_exciting_sigma_calculation.m_def, repeats=False) + x_exciting_sigma = SubSection( + sub_section=x_exciting_sigma_calculation.m_def, repeats=False + ) - x_exciting_loss = SubSection(sub_section=x_exciting_loss_calculation.m_def, repeats=False) + x_exciting_loss = SubSection( + sub_section=x_exciting_loss_calculation.m_def, repeats=False + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_exciting_brillouin_zone_volume = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter ** 3', - description=''' + unit="1 / meter ** 3", + description=""" Brillouin zone volume - ''') + """, + ) x_exciting_core_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Core charge - ''') + """, + ) x_exciting_core_charge_initial = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Core charge - ''') + """, + ) x_exciting_electronic_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Electronic charge - ''') + """, + ) x_exciting_empty_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of empty states - ''') + """, + ) x_exciting_clathrates_atom_labels = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Labels of the atoms in the clathrates. - ''') + """, + ) x_exciting_clathrates_atom_coordinates = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Ordered list of the atoms coordinates in the clathrates. - ''') + """, + ) x_exciting_clathrates = Quantity( type=bool, shape=[], - description=''' + description=""" It indicates whether the system is a clathrate. - ''') + """, + ) x_exciting_gkmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Maximum length of |G+k| for APW functions - ''') + """, + ) x_exciting_gmaxvr = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Maximum length of |G| - ''') + """, + ) x_exciting_gvector_size_x = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector grid size x - ''') + """, + ) x_exciting_gvector_size_y = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector grid size y - ''') + """, + ) x_exciting_gvector_size_z = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector grid size z - ''') + """, + ) x_exciting_gvector_size = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" G-vector grid size - ''') + """, + ) x_exciting_gvector_total = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" G-vector total - ''') + """, + ) x_exciting_hamiltonian_size = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum Hamiltonian size - ''') + """, + ) x_exciting_kpoint_offset_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" K-points offset y component - ''') + """, + ) x_exciting_kpoint_offset_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" K-points offset z component - ''') + """, + ) x_exciting_kpoint_offset = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" K-points offset - ''') + """, + ) x_exciting_lmaxapw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Angular momentum cut-off for the APW functions - ''') + """, + ) x_exciting_lo = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of local-orbitals - ''') + """, + ) x_exciting_nuclear_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Nuclear charge - ''') + """, + ) x_exciting_number_kpoint_x = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points x - ''') + """, + ) x_exciting_number_kpoint_y = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points y - ''') + """, + ) x_exciting_number_kpoint_z = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points z - ''') + """, + ) x_exciting_number_kpoints = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number k-points - ''') + """, + ) x_exciting_number_of_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The number of atoms in the unit cell - ''') + """, + ) x_exciting_potential_mixing = Quantity( type=str, shape=[], - description=''' + description=""" Mixing type for potential - ''') + """, + ) x_exciting_pw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum number of plane-waves - ''') + """, + ) x_exciting_rgkmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" Radius MT * Gmax - ''') + """, + ) x_exciting_species_rtmin = Quantity( type=str, shape=[], - description=''' + description=""" Chemical species with radius RT * Gmax - ''') + """, + ) x_exciting_simulation_reciprocal_cell = Quantity( type=np.dtype(np.float64), shape=[3, 3], - unit='meter', - description=''' + unit="meter", + description=""" Reciprocal lattice vectors (in Cartesian coordinates) of the simulation cell. The first index runs over the $x,y,z$ Cartesian coordinates, and the second index runs over the 3 lattice vectors. - ''') + """, + ) x_exciting_smearing_type = Quantity( type=str, shape=[], - description=''' + description=""" Smearing scheme for KS occupancies - ''') + """, + ) x_exciting_smearing_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smearing width for KS occupancies - ''') + """, + ) x_exciting_unit_cell_volume = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter ** 3', - description=''' + unit="meter ** 3", + description=""" unit cell volume - ''') + """, + ) x_exciting_valence_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Valence charge - ''') + """, + ) x_exciting_valence_charge_initial = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Valence charge - ''') + """, + ) x_exciting_valence_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total number of valence states - ''') + """, + ) x_exciting_wigner_radius = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" Effective Wigner radius - ''') + """, + ) x_exciting_number_of_bravais_lattice_symmetries = Quantity( type=int, shape=[], - description=''' + description=""" Number of Bravais lattice symmetries - ''') + """, + ) x_exciting_number_of_crystal_symmetries = Quantity( type=int, shape=[], - description=''' + description=""" Number of crystal symmetries - ''') + """, + ) x_exciting_section_atoms_group = SubSection( - sub_section=SectionProxy('x_exciting_section_atoms_group'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_atoms_group"), repeats=True + ) x_exciting_section_lattice_vectors = SubSection( - sub_section=SectionProxy('x_exciting_section_lattice_vectors'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_lattice_vectors"), repeats=True + ) x_exciting_section_reciprocal_lattice_vectors = SubSection( - sub_section=SectionProxy('x_exciting_section_reciprocal_lattice_vectors'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_reciprocal_lattice_vectors"), + repeats=True, + ) x_exciting_section_spin = SubSection( - sub_section=SectionProxy('x_exciting_section_spin'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_spin"), repeats=True + ) x_exciting_section_xc = SubSection( - sub_section=SectionProxy('x_exciting_section_xc'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_xc"), repeats=True + ) class x_exciting_section_MT_charge_atom(MSection): - ''' + """ atom-resolved charges in muffin tins - ''' + """ m_def = Section(validate=False) x_exciting_MT_charge_atom_index = Quantity( type=int, shape=[], - description=''' + description=""" index of the atom with muffin-tin charge - ''') + """, + ) x_exciting_MT_charge_atom_symbol = Quantity( type=str, shape=[], - description=''' + description=""" chemical symbol of the atom with muffin-tin charge - ''') + """, + ) x_exciting_MT_charge_atom_value = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" value of the muffin-tin charge on atom - ''') + """, + ) class x_exciting_section_MT_moment_atom(MSection): - ''' + """ atom-resolved moments in muffin tins - ''' + """ m_def = Section(validate=False) x_exciting_MT_moment_atom_index = Quantity( type=int, shape=[], - description=''' + description=""" index of the atom with muffin-tin moment - ''') + """, + ) x_exciting_MT_moment_atom_symbol = Quantity( type=str, shape=[], - description=''' + description=""" chemical symbol of the atom with muffin-tin moment - ''') + """, + ) x_exciting_MT_moment_atom_value = Quantity( type=np.dtype(np.float64), shape=[3], - unit='coulomb * meter', - description=''' + unit="coulomb * meter", + description=""" value of the muffin-tin moment on atom - ''') + """, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_exciting_charge_convergence = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" exciting charge convergence - ''') + """, + ) x_exciting_core_electron_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Core-electron kinetic energy - ''') + """, + ) x_exciting_core_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Core charge - ''') + """, + ) x_exciting_valence_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Valence charge - ''') + """, + ) x_exciting_core_leakage = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Core leakage - ''') + """, + ) x_exciting_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Correlation energy - ''') + """, + ) x_exciting_coulomb_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb energy - ''') + """, + ) x_exciting_coulomb_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Coulomb potential energy - ''') + """, + ) x_exciting_dos_fermi = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / joule', - description=''' + unit="1 / joule", + description=""" DOS at Fermi energy - ''') + """, + ) x_exciting_effective_potential_convergence = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" exciting effective potential convergence - ''') + """, + ) x_exciting_force_convergence = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" exciting force convergence - ''') + """, + ) x_exciting_effective_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Effective potential energy - ''') + """, + ) x_exciting_electron_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electron-nuclear energy - ''') + """, + ) x_exciting_energy_convergence = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" exciting energy convergence - ''') + """, + ) x_exciting_exchange_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Exchange energy - ''') + """, + ) x_exciting_fermi_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Fermi energy - ''') + """, + ) x_exciting_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Estimated fundamental gap - ''') + """, + ) x_exciting_hartree_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Hartree energy - ''') + """, + ) x_exciting_IBS_force_convergence = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" exciting IBS force convergence - ''') + """, + ) x_exciting_interstitial_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Interstitial charge - ''') + """, + ) x_exciting_madelung_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Madelung energy - ''') + """, + ) x_exciting_nuclear_nuclear_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Nuclear-nuclear energy - ''') + """, + ) x_exciting_time = Quantity( type=np.dtype(np.float64), shape=[], - unit='s', - description=''' + unit="s", + description=""" scf iteration time - ''') + """, + ) x_exciting_total_MT_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Total charge in muffin-tins - ''') + """, + ) x_exciting_total_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Total charge - ''') + """, + ) x_exciting_XC_potential = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" XC potential - ''') + """, + ) x_exciting_interstitial_moment = Quantity( type=np.dtype(np.float64), shape=[3], - unit='coulomb * meter', - description=''' + unit="coulomb * meter", + description=""" Interstitial moment - ''') + """, + ) x_exciting_total_MT_moment = Quantity( type=np.dtype(np.float64), shape=[3], - unit='coulomb * meter', - description=''' + unit="coulomb * meter", + description=""" Total moment in muffin-tins - ''') + """, + ) x_exciting_total_moment = Quantity( type=np.dtype(np.float64), shape=[3], - unit='coulomb * meter', - description=''' + unit="coulomb * meter", + description=""" Total moment - ''') + """, + ) x_exciting_section_MT_charge_atom_scf_iteration = SubSection( - sub_section=SectionProxy('x_exciting_section_MT_charge_atom'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_MT_charge_atom"), repeats=True + ) x_exciting_section_MT_moment_atom_scf_iteration = SubSection( - sub_section=SectionProxy('x_exciting_section_MT_moment_atom'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_MT_moment_atom"), repeats=True + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_exciting_dummy = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" dummy metadata for debuging purposes - ''') + """, + ) x_exciting_volume_optimization = Quantity( type=bool, shape=[], - description=''' + description=""" If the volume optimization is performed. - ''') + """, + ) x_exciting_scf_threshold_energy_change = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Specifies the threshold for the x_exciting_energy_total_scf_iteration change between two subsequent self-consistent field (SCF) iterations. - ''') + """, + ) x_exciting_scf_threshold_potential_change_list = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Specifies the threshold for the x_exciting_effective_potential_convergence between two subsequent self-consistent field (SCF) iterations. - ''') + """, + ) x_exciting_scf_threshold_potential_change = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Specifies the threshold for the x_exciting_effective_potential_convergence between two subsequent self-consistent field (SCF) iterations. - ''') + """, + ) x_exciting_scf_threshold_charge_change_list = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Specifies the threshold for the x_exciting_effective_potential_convergence between two subsequent self-consistent field (SCF) iterations. - ''') + """, + ) x_exciting_scf_threshold_charge_change = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" Specifies the threshold for the x_exciting_effective_potential_convergence between two subsequent self-consistent field (SCF) iterations. - ''') + """, + ) x_exciting_scf_threshold_force_change_list = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Convergence tolerance for forces (not including IBS contribution) during the SCF run. - ''') + """, + ) x_exciting_scf_threshold_force_change = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" Convergence tolerance for forces (not including IBS contribution) during the SCF run - ''') + """, + ) x_exciting_electronic_structure_method = Quantity( type=str, shape=[], - description=''' + description=""" String identifying the used electronic structure method. Allowed values are BSE and TDDFT. Temporary metadata to be canceled when BSE and TDDFT will be added to public metadata electronic_structure_method - ''') + """, + ) x_exciting_xs_broadening = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Lorentzian broadening applied to the spectra. - ''') + """, + ) x_exciting_xs_bse_angular_momentum_cutoff = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Angular momentum cutoff of the spherical harmonics expansion of the dielectric matrix. - ''') + """, + ) x_exciting_xs_bse_antiresonant = Quantity( type=bool, shape=[], - description=''' + description=""" If the anti-resonant part of the Hamiltonian is used for the BSE spectrum - ''') + """, + ) x_exciting_xs_bse_number_of_bands = Quantity( type=np.dtype(np.int32), shape=[4], - description=''' + description=""" Range of bands included for the BSE calculation. The first pair of numbers corresponds to the band index for local orbitals and valence states (counted from the lowest eigenenergy), the second pair corresponds to the band index of the conduction states (counted from the Fermi level). - ''') + """, + ) x_exciting_xs_bse_rgkmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smallest muffin-tin radius times gkmax. - ''') + """, + ) x_exciting_xs_bse_sciavbd = Quantity( type=bool, shape=[], - description=''' + description=""" if the body of the screened Coulomb interaction is averaged (q=0). - ''') + """, + ) x_exciting_xs_bse_sciavqbd = Quantity( type=bool, shape=[], - description=''' + description=""" if the body of the screened Coulomb interaction is averaged (q!=0). - ''') + """, + ) x_exciting_xs_bse_sciavqhd = Quantity( type=bool, shape=[], - description=''' + description=""" if the head of the screened Coulomb interaction is averaged (q=0). - ''') + """, + ) x_exciting_xs_bse_sciavqwg = Quantity( type=bool, shape=[], - description=''' + description=""" if the wings of the screened Coulomb interaction is averaged (q=0). - ''') + """, + ) x_exciting_xs_bse_sciavtype = Quantity( type=str, shape=[], - description=''' + description=""" how the screened Coulomb interaction matrix is averaged - ''') + """, + ) x_exciting_xs_bse_type = Quantity( type=str, shape=[], - description=''' + description=""" which parts of the BSE Hamiltonian is considered. Possible values are IP, RPA, singlet, triplet. - ''') + """, + ) x_exciting_xs_bse_xas = Quantity( type=bool, shape=[], - description=''' + description=""" X-ray absorption spectrum - ''') + """, + ) x_exciting_xs_bse_xas_number_of_bands = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' + description=""" Range of bands included for the BSE calculation. The pair corresponds to the band index of the conduction states (counted from the Fermi level). - ''') + """, + ) x_exciting_xs_bse_xasatom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Atom number for which the XAS is calculated. - ''') + """, + ) x_exciting_xs_bse_xasedge = Quantity( type=str, shape=[], - description=''' + description=""" Defines the initial states of the XAS calculation. - ''') + """, + ) x_exciting_xs_bse_xasspecies = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Species number for which the XAS is calculated.. - ''') + """, + ) x_exciting_xs_gqmax = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" G vector cutoff for the plane-waves matrix elements. - ''') + """, + ) x_exciting_xs_lmaxapw = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Angular momentum cut-off for the APW functions. - ''') + """, + ) x_exciting_xs_ngridk = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" k-point mesh for the excited states calculation. - ''') + """, + ) x_exciting_xs_ngridq = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" q-point mesh for the excited states calculation. - ''') + """, + ) x_exciting_xs_number_of_empty_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of empty states used in the calculation of the response function. - ''') + """, + ) x_exciting_xs_rgkmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smallest muffin-tin radius times gkmax. - ''') + """, + ) x_exciting_xs_scissor = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Scissor operator - ''') + """, + ) x_exciting_xs_screening_ngridk = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" k-point mesh for the calculation of the screening. - ''') + """, + ) x_exciting_xs_screening_number_of_empty_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of empty states used in the calculation of the screening. - ''') + """, + ) x_exciting_xs_screening_rgkmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smallest muffin-tin radius times gkmax. - ''') + """, + ) x_exciting_xs_screening_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of screening used in the calculations. POssible values are full, diag, noinvdiag, longrange. - ''') + """, + ) x_exciting_xs_screening_vkloff = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" k-point set offset for the screening - ''') + """, + ) x_exciting_xs_starting_point = Quantity( type=str, shape=[], - description=''' + description=""" Exchange-correlation functional of the ground-state calculation. See xc_functional list at https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-meta-info/wikis/metainfo/XC- functional - ''') + """, + ) x_exciting_xs_tddft_analytic_continuation = Quantity( type=bool, shape=[], - description=''' + description=""" Analytic continuation for the calculation of the Kohn-Sham response function - ''') + """, + ) x_exciting_xs_tddft_analytic_continuation_number_of_intervals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of energy intervals (on imaginary axis) for analytic continuation. - ''') + """, + ) x_exciting_xs_tddft_anomalous_hall_conductivity = Quantity( type=bool, shape=[], - description=''' + description=""" If the anomalous Hall conductivity term is included in the calculation of the dielectric tensor [see PRB 86, 125139 (2012)]. - ''') + """, + ) x_exciting_xs_tddft_anti_resonant_dielectric = Quantity( type=bool, shape=[], - description=''' + description=""" If the anti-resonant part is considered for the calculation of the dielectric function - ''') + """, + ) x_exciting_xs_tddft_anti_resonant_xc_kernel = Quantity( type=bool, shape=[], - description=''' + description=""" If the anti-resonant part is considered for the calculation of the MBPT-derived xc-kernel - ''') + """, + ) x_exciting_xs_tddft_diagonal_xc_kernel = Quantity( type=bool, shape=[], - description=''' + description=""" If true, only the diagonal part of xc-kernel is used. - ''') + """, + ) x_exciting_xs_tddft_drude = Quantity( type=np.dtype(np.float64), shape=[2], - unit='1 / second', - description=''' + unit="1 / second", + description=""" Parameters defining the semiclassical Drude approximation to intraband term. The first value determines the plasma frequency ωp and the second the inverse relaxation time ωτ: χD0=1/ω ωp^2/(ω+iωτ) - ''') + """, + ) x_exciting_xs_tddft_finite_q_intraband_contribution = Quantity( type=bool, shape=[], - description=''' + description=""" Parameter determining whether the the intraband contribution is included in the calculation for the finite q. - ''') + """, + ) x_exciting_xs_tddft_lmax_alda = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Angular momentum cutoff for the Rayleigh expansion of the exponential factor for ALDA-kernel - ''') + """, + ) x_exciting_xs_tddft_macroscopic_dielectric_function_q_treatment = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Treatment of macroscopic dielectric function for the Q-point outside the Brillouin zone. A value of 0 uses the full Q and the (0,0) component of the microscopic dielectric matrix is used. A value of 1 means a decomposition Q=q+Gq and the (Qq,Qq) component of the microscopic dielectric matrix is used. - ''') + """, + ) x_exciting_xs_tddft_split_parameter = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Split parameter for degeneracy in energy differences of MBPT derived xc kernels. See A. Marini, Phys. Rev. Lett., 91, (2003) 256402. - ''') + """, + ) x_exciting_xs_tddft_xc_kernel = Quantity( type=str, shape=[], - description=''' + description=""" Defines which xc kernel is to be used. Possible choices are: RPA - Random-phase approximation kernel (fxc=0); LRCstatic - Long-range correction kernel (fxc = -alpha/q^2) with alpha given by alphalrcdyn see S. Botti et al., Phys. Rev. B 69, @@ -2506,58 +2878,65 @@ class Method(runschema.method.Method): Rev. Lett. 107, 186401 (2011); BO_SCALAR - Scalar version of the bootstrap kernel; see S. Sharma et al., Phys. Rev. Lett. 107, 186401 (2011); RBO - RPA bootstrap kernel; see S. Rigamonti et al., Phys. Rev. Lett. 114, 146402 (2015). - ''') + """, + ) x_exciting_xs_tetra = Quantity( type=bool, shape=[], - description=''' + description=""" Integration method (tetrahedron) used for the k-space integration in the Kohn-Sham response function. - ''') + """, + ) x_exciting_xs_vkloff = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" k-point set offset - ''') + """, + ) x_exciting_xs_xstype = Quantity( type=str, shape=[], - description=''' + description=""" Type of excited states calculation, BSE or TDDFT - ''') + """, + ) x_exciting_xs_energywindow_values = Quantity( type=np.float64, shape=[2], - unit='joule', - description=''' + unit="joule", + description=""" Energy interval lower and upper limits. Default is [-0.5d0, 0.5d0] in Hartree. - ''') + """, + ) x_exciting_xs_energywindow_points = Quantity( type=np.int32, shape=[], - description=''' + description=""" Number of points to be sampled linearly inside the energy interval including the lower limit. Default is 500. - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_exciting_dummy2 = Quantity( type=str, shape=[], - description=''' + description=""" dummy metadata for debuging purposes - ''') + """, + ) x_exciting_section_geometry_optimization = SubSection( - sub_section=SectionProxy('x_exciting_section_geometry_optimization'), - repeats=True) + sub_section=SectionProxy("x_exciting_section_geometry_optimization"), + repeats=True, + ) diff --git a/electronicparsers/fhiaims/metainfo/fhi_aims.py b/electronicparsers/fhiaims/metainfo/fhi_aims.py index de9c6819..e9c9c902 100644 --- a/electronicparsers/fhiaims/metainfo/fhi_aims.py +++ b/electronicparsers/fhiaims/metainfo/fhi_aims.py @@ -16,11 +16,20 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, MEnum, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + MEnum, + JSON, ) import simulationworkflowschema import runschema.run # pylint: disable=unused-import @@ -33,1382 +42,1524 @@ class x_fhi_aims_controlIn_method(MCategory): - ''' + """ Parameters of control.in belonging to section method. - ''' + """ m_def = Category() class x_fhi_aims_controlInOut_method(MCategory): - ''' + """ Parameters of aims output of parsed control.in belonging to section method. - ''' + """ m_def = Category() class x_fhi_aims_controlIn_run(MCategory): - ''' + """ Parameters of control.in belonging to settings run. - ''' + """ m_def = Category() class x_fhi_aims_controlInOut_run(MCategory): - ''' + """ Parameters of aims output of parsed control.in belonging to settings run. - ''' + """ m_def = Category() class x_fhi_aims_section_controlIn_basis_func(MSection): - ''' + """ definition of a single basis function in the basis set - ''' + """ m_def = Section(validate=False) x_fhi_aims_controlIn_basis_func_l = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlIn_basis_func_n = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlIn_basis_func_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlIn_basis_func_type = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) class x_fhi_aims_section_controlIn_basis_set(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_fhi_aims_controlIn_angular_grids_method = Quantity( type=str, shape=[], - description=''' + description=""" angular grids method (specifed or auto) - ''') + """, + ) x_fhi_aims_controlIn_basis_dep_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" cutoff for the dependent basis - ''') + """, + ) x_fhi_aims_controlIn_cut_pot = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" cut\\_pot parameters - ''') + """, + ) x_fhi_aims_controlIn_division = Quantity( type=np.dtype(np.float64), - shape=['x_fhi_aims_controlIn_number_of_basis_func', 2], - description=''' + shape=["x_fhi_aims_controlIn_number_of_basis_func", 2], + description=""" division parameters: position and number of points, respectively - ''') + """, + ) x_fhi_aims_controlIn_number_of_basis_func = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of basis functions - ''') + """, + ) x_fhi_aims_controlIn_l_hartree = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" angular leven for the hartreee part - ''') + """, + ) x_fhi_aims_controlIn_mass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" mass of the nucleus in atomic mass units - ''') + """, + ) x_fhi_aims_controlIn_nucleus = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" charge of the nucleus - ''') + """, + ) x_fhi_aims_controlIn_outer_grid = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" outer grid - ''') + """, + ) x_fhi_aims_controlIn_radial_base = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" radial\\_base parameters - ''') + """, + ) x_fhi_aims_controlIn_radial_multiplier = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" radial multiplier - ''') + """, + ) x_fhi_aims_controlIn_species_name = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_section_controlIn_basis_func = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_controlIn_basis_func'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_controlIn_basis_func"), + repeats=True, + ) class x_fhi_aims_section_controlInOut_atom_species(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_fhi_aims_controlInOut_pure_gaussian = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_species_charge = Quantity( type=np.dtype(np.float64), shape=[], - unit='coulomb', - description=''' + unit="coulomb", + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_species_cut_pot_scale = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_species_cut_pot_width = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_species_cut_pot = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_species_mass = Quantity( type=np.dtype(np.float64), shape=[], - unit='kilogram', - description=''' + unit="kilogram", + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_species_name = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_section_controlInOut_basis_func = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_controlInOut_basis_func'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_controlInOut_basis_func"), + repeats=True, + ) x_fhi_aims_section_vdW_TS = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_vdW_TS'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_vdW_TS"), repeats=True + ) class x_fhi_aims_section_controlInOut_basis_func(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_fhi_aims_controlInOut_basis_func_eff_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_gauss_alpha = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter ** 2', - description=''' + unit="1 / meter ** 2", + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_gauss_l = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_gauss_N = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_gauss_weight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_l = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_n = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_occ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_primitive_gauss_alpha = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter ** 2', - description=''' + unit="1 / meter ** 2", + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_controlInOut_basis_func_type = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) class x_fhi_aims_section_eigenvalues_group_ZORA(MSection): - ''' + """ section for full list of eigenvalues for different spin and kpoints of scaled ZORA - ''' + """ m_def = Section(validate=False) x_fhi_aims_section_eigenvalues_spin_ZORA = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_spin_ZORA'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_spin_ZORA"), + repeats=True, + ) class x_fhi_aims_section_eigenvalues_group(MSection): - ''' + """ section for full list of eigenvalues for different spin and kpoints - ''' + """ m_def = Section(validate=False) x_fhi_aims_section_eigenvalues_spin = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_spin'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_spin"), repeats=True + ) class x_fhi_aims_section_eigenvalues_list_ZORA(MSection): - ''' + """ section for one list of eigenvalues at specific kpoint and spin of scaled ZORA - ''' + """ m_def = Section(validate=False) x_fhi_aims_eigenvalue_eigenvalue_ZORA = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Single eigenvalue of scaled ZORA - ''') + """, + ) x_fhi_aims_eigenvalue_occupation_ZORA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Occupation of single eigenfunction of scaled ZORA - ''') + """, + ) class x_fhi_aims_section_eigenvalues_list(MSection): - ''' + """ section for one list of eigenvalues at specific kpoint and spin - ''' + """ m_def = Section(validate=False) x_fhi_aims_eigenvalue_eigenvalue = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Single eigenvalue - ''') + """, + ) x_fhi_aims_eigenvalue_occupation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Occupation of single eigenfunction - ''') + """, + ) class x_fhi_aims_section_eigenvalues_spin_ZORA(MSection): - ''' + """ section for one spin orientation of scaled ZORA - ''' + """ m_def = Section(validate=False) x_fhi_aims_eigenvalue_kpoint1_ZORA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Component 1 of kpoints on which the eigenvalues were evaluated of scaled ZORA - ''') + """, + ) x_fhi_aims_eigenvalue_kpoint2_ZORA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Component 2 of kpoints on which the eigenvalues were evaluated of scaled ZORA - ''') + """, + ) x_fhi_aims_eigenvalue_kpoint3_ZORA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Component 3 of kpoints on which the eigenvalues were evaluated of scaled ZORA - ''') + """, + ) x_fhi_aims_section_eigenvalues_list_ZORA = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_list_ZORA'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_list_ZORA"), + repeats=True, + ) class x_fhi_aims_section_eigenvalues_spin(MSection): - ''' + """ section for one spin orientation - ''' + """ m_def = Section(validate=False) x_fhi_aims_eigenvalue_kpoint1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Component 1 of kpoints on which the eigenvalues were evaluated - ''') + """, + ) x_fhi_aims_eigenvalue_kpoint2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Component 2 of kpoints on which the eigenvalues were evaluated - ''') + """, + ) x_fhi_aims_eigenvalue_kpoint3 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Component 3 of kpoints on which the eigenvalues were evaluated - ''') + """, + ) x_fhi_aims_section_eigenvalues_list_perturbativeGW = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_list_perturbativeGW'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_list_perturbativeGW"), + repeats=True, + ) x_fhi_aims_section_eigenvalues_list = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_list'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_list"), repeats=True + ) class x_fhi_aims_section_eigenvalues_ZORA(MSection): - ''' + """ section for gathering eigenvalues of scaled ZORA - ''' + """ m_def = Section(validate=False) x_fhi_aims_section_eigenvalues_group_ZORA = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_group_ZORA'), - repeats=False) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_group_ZORA"), + repeats=False, + ) class x_fhi_aims_section_MD_detect(MSection): - ''' + """ Section to detect MD immediately during parsing of controlInOut - ''' + """ m_def = Section(validate=False) class x_fhi_aims_section_parallel_task_assignement(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_fhi_aims_parallel_task_host = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_parallel_task_nr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_fhi_aims_section_parallel_tasks(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_fhi_aims_section_parallel_task_assignement = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_parallel_task_assignement'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_parallel_task_assignement"), + repeats=True, + ) class x_fhi_aims_section_vdW_TS(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_fhi_aims_atom_type_vdW = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_free_atom_volume = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_hirschfeld_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_hirschfeld_volume = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_vdW_energy_corr_TS = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" - - ''') + """, + ) class x_fhi_aims_section_eigenvalues_group_perturbativeGW(MSection): - ''' + """ section for full list of eigenvalues for different spin and kpoints from a perturbative GW calculation - ''' + """ m_def = Section(validate=False) x_fhi_aims_section_eigenvalues_spin_perturbativeGW = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_spin_perturbativeGW'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_spin_perturbativeGW"), + repeats=True, + ) class x_fhi_aims_section_eigenvalues_list_perturbativeGW(MSection): - ''' + """ section for one list of eigenvalues from a perturbative GW calculation - ''' + """ m_def = Section(validate=False) x_fhi_aims_eigenvalue_correlation_perturbativeGW = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Correlation energy at a given eigenstate from perturbative GW - ''') + """, + ) x_fhi_aims_eigenvalue_ExactExchange_perturbativeGW = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Exact exchange energy at given eigenstate from perturbative GW - ''') + """, + ) x_fhi_aims_eigenvalue_ks_ExchangeCorrelation = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" KS exchange correlation energy at a given eigenstate needed to calculate the quasi-particle energy in perturbative GW - ''') + """, + ) x_fhi_aims_eigenvalue_ks_GroundState = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" KS ground state energy at a given eigenstate needed in perturbative GW - ''') + """, + ) x_fhi_aims_eigenvalue_occupation_perturbativeGW = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Occupation of single eigenfunction of perturbative GW - ''') + """, + ) x_fhi_aims_eigenvalue_quasiParticle_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Quasiparticle energy at a given eigenstate from perturbative GW - ''') + """, + ) class x_fhi_aims_section_eigenvalues_spin_perturbativeGW(MSection): - ''' + """ section for one spin orientation from a perturbative GW calculation - ''' + """ m_def = Section(validate=False) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_atom_forces_free_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''',) + """, + ) x_fhi_aims_atom_forces_free_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''',) + """, + ) x_fhi_aims_atom_forces_free_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''',) + """, + ) x_fhi_aims_energy_C_LDA = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Component of the correlation (C) energy at the LDA level calculated with the self consistent density of the target functional. - ''',) + """, + ) x_fhi_aims_energy_X_LDA = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Component of the exchange (X) energy at the LDA level calculated with the self consistent density of the target functional. - ''',) + """, + ) x_fhi_aims_cube_filename = Quantity( type=str, shape=[], - description=''' + description=""" filename of cube file - ''') + """, + ) x_fhi_aims_calculation_md = Quantity( type=JSON, shape=[], - description=''' + description=""" All MD-related calculation quantities. - ''') + """, + ) class ScfIeration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_atom_forces_raw_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''') + """, + ) x_fhi_aims_atom_forces_raw_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''') + """, + ) x_fhi_aims_atom_forces_raw_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''') + """, + ) x_fhi_aims_energy_electrostatic_free_atom_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Electrostatic energy contributions from superposition of free atom densities during the scf iterations - ''',) + """, + ) x_fhi_aims_energy_scgw_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" scGW correlation energy at each iteration - ''',) + """, + ) x_fhi_aims_poles_fit_accuracy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Fit acccuracy for the Fast-Fourier Transforms necessary in the scGW formalism - ''',) + """, + ) x_fhi_aims_scf_time_start = Quantity( type=np.dtype(np.float64), - unit='s', + unit="s", shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_scgw_galitskii_migdal_total_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" scGW total energy at each iteration calculated using the Galitskii-Migdal formula - ''',) + """, + ) x_fhi_aims_scgw_hartree_energy_sum_eigenvalues_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" scGW sum of eigenvalues calculated from the trace over the Hamiltonian times the Greens function matrices - ''',) + """, + ) x_fhi_aims_scgw_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" scGW kinetic energy at each iteration - ''',) + """, + ) x_fhi_aims_scgw_rpa_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" The RPA correlation energy calculated from the Green's functions of the scGW at each iteration - ''',) + """, + ) x_fhi_aims_single_configuration_calculation_converged = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether a single configuration calculation is converged. - ''') + """, + ) x_fhi_aims_single_particle_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" scGW single particle energy at each iteration - ''',) + """, + ) x_fhi_aims_section_eigenvalues_group = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_eigenvalues_group'), - repeats=False) + sub_section=SectionProxy("x_fhi_aims_section_eigenvalues_group"), repeats=False + ) - x_fhi_aims_energy_reference_fermi = Quantity( - type=float, unit='eV') + x_fhi_aims_energy_reference_fermi = Quantity(type=float, unit="eV") class DosValues(runschema.calculation.DosValues): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_normalization_factor_raw_data = Quantity( type=np.dtype(np.float64), default=1, shape=[], - description=''' + description=""" Normalization factor to reobtain the DOS values as presented in the raw data files. - ''') + """, + ) class BandStructure(runschema.calculation.BandStructure): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_band_k1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_band_k2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_band_k3 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_band_occupations_eigenvalue_string = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_band_segment = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_controlIn_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_hse_omega = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" - - ''',) + """, + ) x_fhi_aims_controlIn_hse_unit = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlIn_hybrid_xc_coeff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_k1 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_k2 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_k3 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_k_grid = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_occupation_order = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_occupation_type = Quantity( type=str, shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_occupation_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_override_relativity = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlIn_relativistic_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlIn_relativistic = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlIn_sc_accuracy_eev = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_sc_accuracy_etot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_sc_accuracy_forces = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_sc_accuracy_rho = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_sc_accuracy_stress = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_sc_iter_limit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_spin = Quantity( type=str, shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_verbatim_writeout = Quantity( type=str, shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlIn_method]) + """, + categories=[x_fhi_aims_controlIn_method], + ) x_fhi_aims_controlIn_xc = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_band_segment_end1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_band_segment_end2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_band_segment_end3 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_band_segment_start1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_band_segment_start2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_band_segment_start3 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_hse_omega = Quantity( type=np.dtype(np.float64), shape=[], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_hse_unit = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_hybrid_xc_coeff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_k1 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_k2 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_k3 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_k_grid = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_number_of_spin_channels = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''', - categories=[x_fhi_aims_controlInOut_method]) + """, + categories=[x_fhi_aims_controlInOut_method], + ) x_fhi_aims_controlInOut_override_relativity = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_relativistic_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_relativistic = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_xc = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_fhi_aims_section_controlIn_basis_set = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_controlIn_basis_set'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_controlIn_basis_set"), repeats=True + ) x_fhi_aims_section_MD_detect = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_MD_detect'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_MD_detect"), repeats=True + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_controlIn_MD_time_step = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" - - ''',) + """, + ) x_fhi_aims_controlInOut_MD_time_step = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" - - ''',) + """, + ) x_fhi_aims_geometry_optimization_converged = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether a geoemtry optimization is converged. - ''') + """, + ) x_fhi_aims_number_of_tasks = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_program_compilation_date = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_program_compilation_time = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_program_execution_time = Quantity( type=np.float64, - unit='s', + unit="s", shape=[], - description=''' + description=""" - - ''') + """, + ) x_fhi_aims_section_parallel_tasks = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_parallel_tasks'), - repeats=False) + sub_section=SectionProxy("x_fhi_aims_section_parallel_tasks"), repeats=False + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_geometry_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" labels of atom - ''') + """, + ) x_fhi_aims_geometry_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of atomic position - ''') + """, + ) x_fhi_aims_geometry_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of atomic position - ''') + """, + ) x_fhi_aims_geometry_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of atomic position - ''') + """, + ) x_fhi_aims_geometry_atom_velocity_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter / second', - description=''' + unit="meter / second", + description=""" x component of atomic velocity - ''') + """, + ) x_fhi_aims_geometry_atom_velocity_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter / second', - description=''' + unit="meter / second", + description=""" y component of atomic velocity - ''') + """, + ) x_fhi_aims_geometry_atom_velocity_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter / second', - description=''' + unit="meter / second", + description=""" z component of atomic velocity - ''') + """, + ) x_fhi_aims_geometry_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of lattice vector - ''') + """, + ) x_fhi_aims_geometry_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of lattice vector - ''') + """, + ) x_fhi_aims_geometry_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of lattice vector - ''') + """, + ) class AtomParameters(runschema.method.AtomParameters): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_section_controlInOut_atom_species = SubSection( - sub_section=SectionProxy('x_fhi_aims_section_controlInOut_atom_species'), - repeats=True) + sub_section=SectionProxy("x_fhi_aims_section_controlInOut_atom_species"), + repeats=True, + ) class HubbardKanamoriModel(runschema.method.HubbardKanamoriModel): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_projection_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of orbitals used for projection in order to calculate occupation numbers. - ''') + """, + ) x_fhi_aims_petukhov_mixing_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mixing term to correct for double counting in DFT+U - ''') + """, + ) class MolecularDynamicsMethod(simulationworkflowschema.MolecularDynamicsMethod): - m_def = Section(validate=False, extends_base_section=True) x_fhi_aims_controlIn_md = Quantity( type=JSON, shape=[], - description=''' + description=""" All MD-related input parameters. - ''') + """, + ) diff --git a/electronicparsers/fleur/metainfo/fleur.py b/electronicparsers/fleur/metainfo/fleur.py index 33d4a170..4aa728f8 100644 --- a/electronicparsers/fleur/metainfo/fleur.py +++ b/electronicparsers/fleur/metainfo/fleur.py @@ -16,11 +16,20 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import +import numpy as np # pylint: disable=unused-import from nomad.metainfo import ( # pylint: disable=unused-import - MSection, MCategory, Category, Package, Quantity, Section, SubSection, SectionProxy, - Reference, JSON, MEnum + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, + MEnum, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,527 +41,583 @@ class x_fleur_header(MSection): - ''' + """ header (labels) of fleur. - ''' + """ m_def = Section(validate=False) x_fleur_version = Quantity( type=str, shape=[], - description=''' + description=""" Version of Fleur - ''') + """, + ) x_fleur_precision = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_with_inversion = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_with_soc = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_additional_flags = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class x_fleur_section_equiv_atoms(MSection): - ''' + """ section containing a class of equivalent atoms - ''' + """ m_def = Section(validate=False) x_fleur_atom_name = Quantity( type=str, shape=[], - description=''' + description=""" name of atom, labelling non-equvalent atoms - ''') + """, + ) x_fleur_atom_pos_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" position of atom x - ''') + """, + ) x_fleur_atom_pos_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" position of atom y - ''') + """, + ) x_fleur_atom_pos_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" position of atom z - ''') + """, + ) x_fleur_atom_coord_scale = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" scales coordinates by 1/scale. If film=T, scales only x&y coordinates, if film=F also z - ''') + """, + ) x_fleur_atomic_number_Z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" atomic number Z - ''') + """, + ) x_fleur_nr_equiv_atoms_in_this_atom_type = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" number_equiv_atoms_in_this_atom_type - ''') + """, + ) class x_fleur_section_XC(MSection): - ''' + """ exchange-correlation potential - ''' + """ m_def = Section(validate=False) x_fleur_exch_pot = Quantity( type=str, shape=[], - description=''' + description=""" exchange-correlation potential, in out - ''') + """, + ) x_fleur_xc_correction = Quantity( type=str, shape=[], - description=''' + description=""" informaion on relativistic correction for the exchange-correlation potential, in out - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_fleur_header = SubSection( - sub_section=SectionProxy('x_fleur_header'), - repeats=True) + sub_section=SectionProxy("x_fleur_header"), repeats=True + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_fleur_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of vector of unit cell - ''') + """, + ) x_fleur_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of vector of unit cell - ''') + """, + ) x_fleur_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of vector of unit cell - ''') + """, + ) x_fleur_rec_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of reciprocal lattice vector - ''') + """, + ) x_fleur_rec_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of reciprocal lattice vector - ''') + """, + ) x_fleur_rec_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of reciprocal lattice vector - ''') + """, + ) x_fleur_space_group = Quantity( type=str, shape=[], - description=''' + description=""" space group - ''') + """, + ) x_fleur_name_of_atom_type = Quantity( type=str, shape=[], - description=''' + description=""" name of atom type - ''') + """, + ) x_fleur_system_nameIn = Quantity( type=str, shape=[], - description=''' + description=""" user given name for this system given in the inp file - ''') + """, + ) x_fleur_system_name = Quantity( type=str, shape=[], - description=''' + description=""" user given name for this system - ''') + """, + ) x_fleur_total_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" total number of atoms - ''') + """, + ) x_fleur_nr_of_atom_types = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of atom types - ''') + """, + ) x_fleur_nuclear_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" nuclear number - ''') + """, + ) x_fleur_number_of_core_levels = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_fleur_number_of_core_levels - ''') + """, + ) x_fleur_k_max = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Kmax is the plane wave cut-off - ''') + """, + ) x_fleur_G_max = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Gmax - ''') + """, + ) x_fleur_tot_nucl_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total nuclear charge - ''') + """, + ) x_fleur_tot_elec_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total electronic charge - ''') + """, + ) x_fleur_unit_cell_volume = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr ** 3', - description=''' + unit="bohr ** 3", + description=""" unit cell volume - ''') + """, + ) x_fleur_unit_cell_volume_omega = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" unit cell volume omega tilda - ''') + """, + ) x_fleur_vol_interstitial = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" volume of interstitial region - ''') + """, + ) x_fleur_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_section_equiv_atoms = SubSection( - sub_section=SectionProxy('x_fleur_section_equiv_atoms'), - repeats=True) + sub_section=SectionProxy("x_fleur_section_equiv_atoms"), repeats=True + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_fleur_tot_for_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOTAL FORCE FOR ATOM TYPE, X - ''') + """, + ) x_fleur_tot_for_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOTAL FORCE FOR ATOM TYPE, Y - ''') + """, + ) x_fleur_tot_for_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOTAL FORCE FOR ATOM TYPE, Z - ''') + """, + ) x_fleur_tot_for_fx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOTAL FORCE FOR ATOM TYPE, FX_TOT - ''') + """, + ) x_fleur_tot_for_fy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOTAL FORCE FOR ATOM TYPE, FY_TOT - ''') + """, + ) x_fleur_tot_for_fz = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TOTAL FORCE FOR ATOM TYPE, FZ_TOT - ''') + """, + ) x_fleur_iteration_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" scf iteration number - ''') + """, + ) x_fleur_energy_total = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" energy total - ''') + """, + ) x_fleur_free_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" free energy - ''') + """, + ) x_fleur_entropy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" (tkb*entropy) TS - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_fleur_nkptd = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of all the k-points - ''') + """, + ) x_fleur_k_point_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x component of vector of k point - ''') + """, + ) x_fleur_k_point_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y component of vector of k point - ''') + """, + ) x_fleur_k_point_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z component of vector of k point - ''') + """, + ) x_fleur_k_point_weight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" weights of k point - ''') + """, + ) x_fleur_smearing_kind = Quantity( type=str, shape=[], - description=''' + description=""" The Brillouin zone integration mode. It can be one of hist - Use the histogram mode, this is the default; gauss - Use Gaussian smearing, tria - Use the tetrahedron method - ''') + """, + ) x_fleur_smearing_width = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" specifies the width of the broadening, smearing for calculation of fermi-energy & weights. The Fermi smearing can be parametrized by this energy - ''') + """, + ) x_fleur_nr_of_valence_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The number of electrons to be represented within the valence electron framework - ''') + """, + ) x_fleur_smearing_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" Fermi smearing temperature set in Kelvin - ''') + """, + ) x_fleur_input_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_eigenvalues_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_section_XC = SubSection( - sub_section=SectionProxy('x_fleur_section_XC'), - repeats=True) + sub_section=SectionProxy("x_fleur_section_XC"), repeats=True + ) class OrbitalAPW(runschema.method.OrbitalAPW): x_fleur_lo_type = Quantity( - type=MEnum('SCLO', 'HELO'), + type=MEnum("SCLO", "HELO"), shape=[], - description=''' + description=""" Fleur demarcation of the LO type used. https://www.flapw.de/MaX-6.0/documentation/localOrbitalSetup/ - ''') + """, + ) class BasisSet(runschema.method.BasisSet): - m_def = Section(validate=False, extends_base_section=True) x_fleur_coretail = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_fleur_coretail_cutoff = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''' + description=""" + """, ) x_fleur_relativistic_core = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) class XCFunctional(runschema.method.XCFunctional): - m_def = Section(validate=False, extends_base_section=True) x_fleur_xc_correction = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class BaseCalculation(runschema.calculation.BaseCalculation): - m_def = Section(validate=False, extends_base_section=True) x_fleur_n_occupied_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) diff --git a/electronicparsers/fleur/parser.py b/electronicparsers/fleur/parser.py index a4e22319..b5815573 100644 --- a/electronicparsers/fleur/parser.py +++ b/electronicparsers/fleur/parser.py @@ -24,37 +24,47 @@ from nomad.units import ureg from nomad.parsing.file_parser import TextParser, Quantity -from runschema.run import ( - Run, Program, TimeRun -) -from runschema.system import ( - System, Atoms -) +from runschema.run import Run, Program, TimeRun +from runschema.system import System, Atoms from runschema.method import ( - Method, BasisSet, DFT, XCFunctional, Functional, Electronic, Smearing, - AtomParameters, BasisSetContainer, OrbitalAPW + Method, + BasisSet, + DFT, + XCFunctional, + Functional, + Electronic, + Smearing, + AtomParameters, + BasisSetContainer, + OrbitalAPW, ) from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, Forces, ForcesEntry, BandEnergies + Calculation, + ScfIteration, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + BandEnergies, ) from .metainfo.fleur import x_fleur_header from typing import Any -re_n = r'[\n\r]' -re_f = r'[-+]?\d*\.\d*(?:[DdEe][-+]\d+)?' +re_n = r"[\n\r]" +re_f = r"[-+]?\d*\.\d*(?:[DdEe][-+]\d+)?" def _eval(exp, variables=dict()): # TODO implementation can be improved operators = { - '**': lambda x, y: x ** y, - '*': lambda x, y: x * y, - '/': lambda x, y: x / y, - '+': lambda x, y: x + y, - '-': lambda x, y: x + y + "**": lambda x, y: x**y, + "*": lambda x, y: x * y, + "/": lambda x, y: x / y, + "+": lambda x, y: x + y, + "-": lambda x, y: x + y, } - exp = exp.replace(' ', '') + exp = exp.replace(" ", "") if not exp: return 0 @@ -64,7 +74,9 @@ def _eval(exp, variables=dict()): segments = exp.rsplit(key, 1) if len(segments) == 2: - return operation(_eval(segments[0], variables), _eval(segments[1], variables)) + return operation( + _eval(segments[0], variables), _eval(segments[1], variables) + ) value = variables.get(exp) if value: @@ -77,11 +89,10 @@ def _eval(exp, variables=dict()): class XMLParser(TextParser): - def init_quantities(self): re_bulk_lattice = re.compile(r'bulkLattice scale="(.+?)"(?: latnam="(.+?)")*') re_lattice_constant = re.compile(r'<(.+?) scale="(.+?)"\>(.+?)\<\/') - re_lattice_vector = re.compile(rf'\(\S+ +\S+ +\S+)\<') + re_lattice_vector = re.compile(rf"\(\S+ +\S+ +\S+)\<") def to_cell(val_in): bulk = re_bulk_lattice.findall(val_in) @@ -89,7 +100,7 @@ def to_cell(val_in): if re_bulk_lattice: scale, lattice = bulk[0] - if lattice == 'squ': + if lattice == "squ": if not lattice_constant: return # TODO why is c specified for squ lattice @@ -107,129 +118,195 @@ def to_cell(val_in): return cell * ureg.bohr embedded_key = Quantity( - 'key_val', r' (\S+=)\"(.+?)\"', - str_operation=lambda x: x.split('='), repeats=True + "key_val", + r" (\S+=)\"(.+?)\"", + str_operation=lambda x: x.split("="), + repeats=True, ) self._quantities = [ Quantity( - 'header', - r'\', - sub_parser=TextParser(quantities=[ - Quantity('program_version', r'version=\"(fleur \S+)\"', dtype=str, flatten=False), - Quantity('x_fleur_precision', r'precision type=\"(\S+)\"', dtype=str), - Quantity('x_fleur_structure_class', r'\(.+?)\<', dtype=str), - Quantity('x_fleur_additional_flags', r'\(.+?)\<', dtype=str) - ]) + "header", + r"\", + sub_parser=TextParser( + quantities=[ + Quantity( + "program_version", + r"version=\"(fleur \S+)\"", + dtype=str, + flatten=False, + ), + Quantity( + "x_fleur_precision", r"precision type=\"(\S+)\"", dtype=str + ), + Quantity( + "x_fleur_structure_class", + r"\(.+?)\<", + dtype=str, + ), + Quantity( + "x_fleur_additional_flags", + r"\(.+?)\<", + dtype=str, + ), + ] + ), ), - Quantity('start_time', r'date="(.+?)" time="(.+?)" zone="(.+?)"', flatten=False, dtype=str), Quantity( - 'input', - r'\([\s\S]+?)\<\/inputData\>', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', r'\([\s\S]+?)\<\/calculationSetup\>', - sub_parser=TextParser(quantities=[embedded_key]) - ), - Quantity( - 'cell', - r'\([\s\S]+?)\<\/cell\>', - str_operation=to_cell - ), - Quantity( - 'xc_functional', - r'', repeats=True, - sub_parser=TextParser(quantities=[embedded_key]) - ), - Quantity( - 'atom', - r'\', repeats=True, - # TODO parse more quantities - sub_parser=TextParser(quantities=[ - Quantity('species', r'species="([A-Z][a-z]*)', dtype=str), - Quantity( - 'position', r'\(.+?)\<\/relPos\>', - str_operation=lambda x: [_eval(v) for v in x.strip().split()] - ) - ]) - ), - Quantity( - 'output_parameters', - r'\', - sub_parser=TextParser(quantities=[embedded_key]) - ) - ]) + "start_time", + r'date="(.+?)" time="(.+?)" zone="(.+?)"', + flatten=False, + dtype=str, ), Quantity( - 'numerical_parameters', - r'\([\s\S]+?)\<\/numericalParameters\>', - sub_parser=TextParser(quantities=[ - Quantity( - 'key_val', r' (\S+=)\"(.+?)\"', - str_operation=lambda x: x.split('='), repeats=True - ) - ]) + "input", + r"\([\s\S]+?)\<\/inputData\>", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"\([\s\S]+?)\<\/calculationSetup\>", + sub_parser=TextParser(quantities=[embedded_key]), + ), + Quantity( + "cell", + r"\([\s\S]+?)\<\/cell\>", + str_operation=to_cell, + ), + Quantity( + "xc_functional", + r'", + repeats=True, + sub_parser=TextParser(quantities=[embedded_key]), + ), + Quantity( + "atom", + r"\", + repeats=True, + # TODO parse more quantities + sub_parser=TextParser( + quantities=[ + Quantity( + "species", r'species="([A-Z][a-z]*)', dtype=str + ), + Quantity( + "position", + r"\(.+?)\<\/relPos\>", + str_operation=lambda x: [ + _eval(v) for v in x.strip().split() + ], + ), + ] + ), + ), + Quantity( + "output_parameters", + r"\", + sub_parser=TextParser(quantities=[embedded_key]), + ), + ] + ), ), Quantity( - 'scf_iteration', - r'\', repeats=True, - sub_parser=TextParser(quantities=[ - Quantity( - 'energy_total', - rf'totalEnergy +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_sum_eigenvalues', - rf'sumOfEigenvalues +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_x_fleur_density_coulomb_potential', - rf'densityCoulombPotentialIntegral +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_x_fleur_density_effective_potential', - rf'densityEffectivePotentialIntegral +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_x_fleur_charge_density_xc', - rf'chargeDenXCDenIntegral +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_free', - rf'freeEnergy +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_total_t0', - rf'extrapolationTo0K +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'fermi', - rf'FermiEnergy +value=" *({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'eigenvalues_kpts', - r'\', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'kpt', - rf'spin="1" ikpt="\d+" k_x="({re_f})" k_y="({re_f})" k_z="({re_f})"', - dtype=np.dtype(np.float64) + "numerical_parameters", + r"\([\s\S]+?)\<\/numericalParameters\>", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_val", + r" (\S+=)\"(.+?)\"", + str_operation=lambda x: x.split("="), + repeats=True, + ) + ] + ), + ), + Quantity( + "scf_iteration", + r"\", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_total", + rf'totalEnergy +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_sum_eigenvalues", + rf'sumOfEigenvalues +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_fleur_density_coulomb_potential", + rf'densityCoulombPotentialIntegral +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_fleur_density_effective_potential", + rf'densityEffectivePotentialIntegral +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_fleur_charge_density_xc", + rf'chargeDenXCDenIntegral +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_free", + rf'freeEnergy +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_total_t0", + rf'extrapolationTo0K +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "fermi", + rf'FermiEnergy +value=" *({re_f})', + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "eigenvalues_kpts", + r"\", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "kpt", + rf'spin="1" ikpt="\d+" k_x="({re_f})" k_y="({re_f})" k_z="({re_f})"', + dtype=np.dtype(np.float64), + ), + Quantity( + "energies", + rf"\>([\s\S]+?)\<", + dtype=np.dtype(np.float64), + ), + ] ), - Quantity('energies', rf'\>([\s\S]+?)\<', dtype=np.dtype(np.float64)) - ]) - ) - # TODO parse other quantities - ]) - ) + ), + # TODO parse other quantities + ] + ), + ), ] def get_xc_functional(self): - xc_functional = self.get('input', {}).get('xc_functional') + xc_functional = self.get("input", {}).get("xc_functional") if xc_functional is not None: return f'{xc_functional[0]} {"non-" if xc_functional[1] == "F" else ""}relativistic correction' @@ -239,57 +316,61 @@ def get_system(self): return None, None, None cell = input.cell - atoms = input.get('atom', []) + atoms = input.get("atom", []) labels = [atom.species for atom in atoms] positions = np.dot([atom.position for atom in atoms], cell) return labels, positions, cell def get_basis_sets(self) -> list[BasisSet]: - '''Extract `species` xml tags, add semantics, - and map their settings into as series of `muffin-tin` BasisSets.''' + """Extract `species` xml tags, add semantics, + and map their settings into as series of `muffin-tin` BasisSets.""" + # https://www.flapw.de/MaX-6.0/documentation/fleurInputFile/ # https://www.flapw.de/MaX-6.0/documentation/localOrbitalSetup/ def to_dict(key_vals: list[list[Any]]) -> dict[str, Any]: return {key_val[0]: key_val[1] for key_val in key_vals} def develop_range(val_in: str) -> list[int]: - if '-' in val_in: - start, end = val_in.split('-') + if "-" in val_in: + start, end = val_in.split("-") return list(range(int(start), int(end) + 1)) - elif ',' in val_in: - return [int(val) for val in val_in.split(',')] + elif "," in val_in: + return [int(val) for val in val_in.split(",")] else: return [int(val_in)] - def roll_out_lo(val_in: dict[str, str]) -> list[dict[tuple[int, int], list[Any]]]: + def roll_out_lo( + val_in: dict[str, str], + ) -> list[dict[tuple[int, int], list[Any]]]: los = [] - for l_n in develop_range(val_in['l']): - for n in develop_range(val_in['n']): - order = int(val_in['eDeriv']) - los.append({(l_n, order): [n, val_in['type']]}) + for l_n in develop_range(val_in["l"]): + for n in develop_range(val_in["n"]): + order = int(val_in["eDeriv"]) + los.append({(l_n, order): [n, val_in["type"]]}) return los # function variables basis_sets: list[BasisSet] = [] - l_mapping = ['s', 'p', 'd', 'f'] - bool_mapping = {'T': True, 'F': False} - order_mapping = {'APW': 1, 'LAPW': 2} + l_mapping = ["s", "p", "d", "f"] + bool_mapping = {"T": True, "F": False} + order_mapping = {"APW": 1, "LAPW": 2} input_parameters_reformatted = { - key_val[0]: key_val[1] for key_val in self.input.get('parameters').get('key_val') + key_val[0]: key_val[1] + for key_val in self.input.get("parameters").get("key_val") } # muffin-tin - species = self.get('input', {}).get('species', []) + species = self.get("input", {}).get("species", []) for specie in species: - specie = to_dict(specie.get('key_val', [])) + specie = to_dict(specie.get("key_val", [])) mt: list[BasisSet] = [] for _ in range(2): mt.append( BasisSet( - scope=['muffin-tin'], - radius=specie.get('radius') * ureg.bohr, - spherical_harmonics_cutoff=specie.get('lmax'), - radius_log_spacing=float(specie.get('logIncrement')), - n_grid_points=int(specie.get('gridPoints')), + scope=["muffin-tin"], + radius=specie.get("radius") * ureg.bohr, + spherical_harmonics_cutoff=specie.get("lmax"), + radius_log_spacing=float(specie.get("logIncrement")), + n_grid_points=int(specie.get("gridPoints")), ) ) # valence muffin-tin + local orbitals @@ -301,10 +382,10 @@ def roll_out_lo(val_in: dict[str, str]) -> list[dict[tuple[int, int], list[Any]] n_max = l_test break los = [] - for lo in specie.get('lo', []): - los += roll_out_lo(to_dict(lo.get('key_val', []))) - for l_n in range(int(specie.get('lmax')) + 1): - apw_type = 'APW' if l_n == specie.get('lmaxAPW', -1) else 'LAPW' + for lo in specie.get("lo", []): + los += roll_out_lo(to_dict(lo.get("key_val", []))) + for l_n in range(int(specie.get("lmax")) + 1): + apw_type = "APW" if l_n == specie.get("lmaxAPW", -1) else "LAPW" n_quantum = specie.get(l_mapping[min(l_n, len(l_mapping) - 1)], n_max) for order in range(5): # TODO: find a better option than hard-coding if order <= order_mapping[apw_type]: @@ -320,7 +401,7 @@ def roll_out_lo(val_in: dict[str, str]) -> list[dict[tuple[int, int], list[Any]] if (l_n, order) in [lo.keys() for lo in los]: orbital.append( OrbitalAPW( - type='LO', + type="LO", energy_parameter_n=lo[(l_n, order)][0], l_quantum_number=l_n, core_level=False, @@ -329,17 +410,17 @@ def roll_out_lo(val_in: dict[str, str]) -> list[dict[tuple[int, int], list[Any]] ) ) mt[0].orbital = [*mt[0].orbital, *orbital] - mt[0].scope.append('valence') + mt[0].scope.append("valence") # core muffin-tin n_counter = 1 - nl_counter = specie.get('coreStates', 0) + nl_counter = specie.get("coreStates", 0) while nl_counter > 0: for l_n in range(n_counter): - j = l_n + .5 + j = l_n + 0.5 while j > 0: mt[1].orbital.append( OrbitalAPW( - type='spherical Dirac', + type="spherical Dirac", n_quantum_number=n_counter, l_quantum_number=l_n, j_quantum_number=j, @@ -350,9 +431,12 @@ def roll_out_lo(val_in: dict[str, str]) -> list[dict[tuple[int, int], list[Any]] j -= 1 nl_counter -= 1 n_counter += 1 - mt[1].scope.append('core') + mt[1].scope.append("core") # general core settings - core_application = {'coretail': 'ctail', 'coretail_cutoff': 'coretail_lmax'} # TODO: add 'relativistic_core': 'kcrel'? + core_application = { + "coretail": "ctail", + "coretail_cutoff": "coretail_lmax", + } # TODO: add 'relativistic_core': 'kcrel'? for key, val in core_application.items(): try: q = input_parameters_reformatted[val].strip() @@ -362,8 +446,10 @@ def roll_out_lo(val_in: dict[str, str]) -> list[dict[tuple[int, int], list[Any]] q = bool_mapping[q] except KeyError: pass - setattr(mt[1], f'x_fleur_{key}', q) - mt[1].frozen_core = bool_mapping[input_parameters_reformatted['frcor'].strip()] + setattr(mt[1], f"x_fleur_{key}", q) + mt[1].frozen_core = bool_mapping[ + input_parameters_reformatted["frcor"].strip() + ] # write out muffin tin basis_sets.append(mt[0]) basis_sets.append(mt[1]) @@ -381,205 +467,269 @@ def to_atoms(val_in): return labels, np.array(positions, dtype=np.float64) * ureg.bohr def to_key_val(val_in): - val = val_in.strip().replace('D', 'E').split('=') + val = val_in.strip().replace("D", "E").split("=") key, val = val[0].strip(), val[1].split() return [key, val[0] if len(val) == 1 else val] key_val_quantity = Quantity( - 'key_val', - r'([\w \-\/]+\s*=\s*[\d\.\-\+\w ]+)', - str_operation=to_key_val, repeats=True) + "key_val", + r"([\w \-\/]+\s*=\s*[\d\.\-\+\w ]+)", + str_operation=to_key_val, + repeats=True, + ) self._quantities = [ Quantity( - 'header', - r'(This output is generated[\s\S]+?Additional flags.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'program_version', - r'This output is generated by (fleur\S+)', - dtype=str - ), - Quantity('x_fleur_precision', r'(\S+) precision', dtype=str), - Quantity('x_fleur_with_inversion', r'(\S+) INVERSION', dtype=lambda x: x == 'with'), - Quantity('x_fleur_with_soc', r'(\S+) SOC', dtype=lambda x: x == 'with'), - Quantity( - 'x_fleur_additional_flags', - r'Additional flags are: +(.+)', - str_operation=lambda x: x.strip(), dtype=str) - ]) + "header", + r"(This output is generated[\s\S]+?Additional flags.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "program_version", + r"This output is generated by (fleur\S+)", + dtype=str, + ), + Quantity("x_fleur_precision", r"(\S+) precision", dtype=str), + Quantity( + "x_fleur_with_inversion", + r"(\S+) INVERSION", + dtype=lambda x: x == "with", + ), + Quantity( + "x_fleur_with_soc", + r"(\S+) SOC", + dtype=lambda x: x == "with", + ), + Quantity( + "x_fleur_additional_flags", + r"Additional flags are: +(.+)", + str_operation=lambda x: x.strip(), + dtype=str, + ), + ] + ), ), Quantity( - 'input', - r'(Your parameters\:[\s\S]+?fleur)', - sub_parser=TextParser(quantities=[ - Quantity( - 'input_parameters', - r'dump of inp-file +\-+([\s\S]+?)Local', - sub_parser=TextParser(quantities=[key_val_quantity]) - ), - Quantity( - 'parameters', - r'(parameter *\([\s\S]+?)fleur', - sub_parser=TextParser(quantities=[key_val_quantity]) - ) - ]) + "input", + r"(Your parameters\:[\s\S]+?fleur)", + sub_parser=TextParser( + quantities=[ + Quantity( + "input_parameters", + r"dump of inp-file +\-+([\s\S]+?)Local", + sub_parser=TextParser(quantities=[key_val_quantity]), + ), + Quantity( + "parameters", + r"(parameter *\([\s\S]+?)fleur", + sub_parser=TextParser(quantities=[key_val_quantity]), + ), + ] + ), ), Quantity( - 'system', - r'([\w ]+\s+lattice=[\s\S]+?)input of', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - rf'(lattice[\s\S]+?){re_n} *{re_n}', - sub_parser=TextParser(quantities=[key_val_quantity]) - ), - Quantity( - 'x_fleur_unit_cell_volume', - rf'the volume of the unit cell omega\-tilda= +({re_f})', - dtype=np.float64 - ), - Quantity( - 'x_fleur_unit_cell_volume_omega', - rf'the volume of the unit cell omega= +({re_f})', - dtype=np.float64 - ), - Quantity('exchange_correlation', r'exchange\-correlation: (.+)', flatten=False, dtype=str), - Quantity('x_fleur_k_max', rf'k_max *= *({re_f})', dtype=np.float64), - Quantity('x_fleur_G_max', rf'G_max *= *({re_f})', dtype=np.float64), - Quantity('x_fleur_vol_interstitial', rf'volume of interstitial region= +({re_f})', dtype=np.float64), - Quantity('x_fleur_nr_of_atom_types', rf'number of atom types= +(\d+)', dtype=np.int32), - Quantity( - 'cell', - r'bravais matrices of real and reciprocal lattices\s+' - # rf'((?:{re_f} +{re_f} +{re_f} +{re_f} +{re_f} +{re_f}\s+))', - rf'({re_f} +{re_f} +{re_f}) +{re_f} +{re_f} +{re_f}\s+' - rf'({re_f} +{re_f} +{re_f}) +{re_f} +{re_f} +{re_f}\s+' - rf'({re_f} +{re_f} +{re_f}) +{re_f} +{re_f} +{re_f}\s+', - dtype=np.dtype(np.float64), shape=(3, 3), unit=ureg.bohr - ), - Quantity( - 'atoms', - r'no\. +type +int\.\-coord\. +cart\.coord\. +rmt +jri +dx +lmax\s+' - rf'((?:\d+ +[A-Z][a-z] +\d+.+\s+)+)', - str_operation=to_atoms - ), - ]) + "system", + r"([\w ]+\s+lattice=[\s\S]+?)input of", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + rf"(lattice[\s\S]+?){re_n} *{re_n}", + sub_parser=TextParser(quantities=[key_val_quantity]), + ), + Quantity( + "x_fleur_unit_cell_volume", + rf"the volume of the unit cell omega\-tilda= +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_fleur_unit_cell_volume_omega", + rf"the volume of the unit cell omega= +({re_f})", + dtype=np.float64, + ), + Quantity( + "exchange_correlation", + r"exchange\-correlation: (.+)", + flatten=False, + dtype=str, + ), + Quantity( + "x_fleur_k_max", rf"k_max *= *({re_f})", dtype=np.float64 + ), + Quantity( + "x_fleur_G_max", rf"G_max *= *({re_f})", dtype=np.float64 + ), + Quantity( + "x_fleur_vol_interstitial", + rf"volume of interstitial region= +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_fleur_nr_of_atom_types", + rf"number of atom types= +(\d+)", + dtype=np.int32, + ), + Quantity( + "cell", + r"bravais matrices of real and reciprocal lattices\s+" + # rf'((?:{re_f} +{re_f} +{re_f} +{re_f} +{re_f} +{re_f}\s+))', + rf"({re_f} +{re_f} +{re_f}) +{re_f} +{re_f} +{re_f}\s+" + rf"({re_f} +{re_f} +{re_f}) +{re_f} +{re_f} +{re_f}\s+" + rf"({re_f} +{re_f} +{re_f}) +{re_f} +{re_f} +{re_f}\s+", + dtype=np.dtype(np.float64), + shape=(3, 3), + unit=ureg.bohr, + ), + Quantity( + "atoms", + r"no\. +type +int\.\-coord\. +cart\.coord\. +rmt +jri +dx +lmax\s+" + rf"((?:\d+ +[A-Z][a-z] +\d+.+\s+)+)", + str_operation=to_atoms, + ), + ] + ), ), Quantity( - 'electronic', - r'(parameters for eigenvalues[\s\S]+?)Local', - sub_parser=TextParser(quantities=[ - Quantity( - 'eigenvalues_parameters', - rf'parameters for eigenvalues:([\s\S]+?){re_n} *{re_n}', - sub_parser=TextParser(quantities=[key_val_quantity]) - ), - Quantity( - 'smearing', - r'gauss\-integration is used += +(\S)', - str_operation=lambda x: 'gaussian' if x == 'T' else 'fermi' - ), - Quantity('width', rf'(?:width|broadening) += +({re_f})', dtype=np.float64), - Quantity( - 'x_fleur_nr_of_valence_electrons', - rf'number of valence electrons= +({re_f})', - dtype=np.float64 - ) - - ]) + "electronic", + r"(parameters for eigenvalues[\s\S]+?)Local", + sub_parser=TextParser( + quantities=[ + Quantity( + "eigenvalues_parameters", + rf"parameters for eigenvalues:([\s\S]+?){re_n} *{re_n}", + sub_parser=TextParser(quantities=[key_val_quantity]), + ), + Quantity( + "smearing", + r"gauss\-integration is used += +(\S)", + str_operation=lambda x: "gaussian" if x == "T" else "fermi", + ), + Quantity( + "width", + rf"(?:width|broadening) += +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_fleur_nr_of_valence_electrons", + rf"number of valence electrons= +({re_f})", + dtype=np.float64, + ), + ] + ), ), Quantity( - 'electic_field_parameters', - rf'parameters for external electric field:([\s\S]+?){re_n} *{re_n}', - sub_parser=TextParser(quantities=[ - Quantity( - 'x_fleur_tot_elec_charge', - rf'total electronic charge += +({re_f})', - dtype=np.float64 - ), - Quantity( - 'x_fleur_tot_nucl_charge', - rf'total nuclear charge += +({re_f})', - dtype=np.float64 - ), - ]) + "electic_field_parameters", + rf"parameters for external electric field:([\s\S]+?){re_n} *{re_n}", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_fleur_tot_elec_charge", + rf"total electronic charge += +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_fleur_tot_nucl_charge", + rf"total nuclear charge += +({re_f})", + dtype=np.float64, + ), + ] + ), ), Quantity( - 'scf_iteration', - r'(it= +\d+[\s\S]+?it= +\d+ +is completed)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'energy_sum_eigenvalues', - rf'sum of eigenvalues = +({re_f})', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_x_fleur_density_coulomb_potential', - rf'density\-coulomb potential int +({re_f}) htr', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_x_fleur_density_effective_potential', - rf'density-effective potential i +({re_f}) htr', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_x_fleur_charge_density_xc', - rf'charge density\-ex\.\-corr\.energ +({re_f}) htr', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_total', - rf'total energy= +({re_f}) htr', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_free', - rf'free energy= +({re_f}) htr', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'energy_total_t0', - rf'total electron energy= +({re_f}) htr', dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'forces', - rf'FX_TOT= *({re_f}) FY_TOT= *({re_f}) FZ_TOT= *({re_f})', - repeats=True - ), - Quantity( - 'kpoints', - rf'k=\( +({re_f} +{re_f} +{re_f})\):', - repeats=True, dtype=np.dtype(np.float64) - ), - Quantity( - 'eigenvalues', - r'the *\d+ eigenvalues are:\s+([\s\d\.\-]+)', - repeats=True, dtype=np.dtype(np.float64) - ), - Quantity( - 'fermi', - rf'new fermi energy +: +({re_f}) htr', - unit=ureg.hartree, dtype=np.float64 - ), - Quantity( - 'x_fleur_n_occupied_states', - r'number of occ\. states +: +(\d+)', - dtype=np.int32 - ), - Quantity( - 'x_fleur_valence_charge', - rf'valence charge +: +({re_f})', - dtype=np.float64 - ), - ]) - ) + "scf_iteration", + r"(it= +\d+[\s\S]+?it= +\d+ +is completed)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_sum_eigenvalues", + rf"sum of eigenvalues = +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_fleur_density_coulomb_potential", + rf"density\-coulomb potential int +({re_f}) htr", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_fleur_density_effective_potential", + rf"density-effective potential i +({re_f}) htr", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_fleur_charge_density_xc", + rf"charge density\-ex\.\-corr\.energ +({re_f}) htr", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_total", + rf"total energy= +({re_f}) htr", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_free", + rf"free energy= +({re_f}) htr", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_total_t0", + rf"total electron energy= +({re_f}) htr", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "forces", + rf"FX_TOT= *({re_f}) FY_TOT= *({re_f}) FZ_TOT= *({re_f})", + repeats=True, + ), + Quantity( + "kpoints", + rf"k=\( +({re_f} +{re_f} +{re_f})\):", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "eigenvalues", + r"the *\d+ eigenvalues are:\s+([\s\d\.\-]+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "fermi", + rf"new fermi energy +: +({re_f}) htr", + unit=ureg.hartree, + dtype=np.float64, + ), + Quantity( + "x_fleur_n_occupied_states", + r"number of occ\. states +: +(\d+)", + dtype=np.int32, + ), + Quantity( + "x_fleur_valence_charge", + rf"valence charge +: +({re_f})", + dtype=np.float64, + ), + ] + ), + ), ] def get_xc_functional(self): - return self.get('system', {}).get('exchange_correlation') + return self.get("system", {}).get("exchange_correlation") def get_system(self): - system = self.get('system') + system = self.get("system") if not system: return None, None, None - atoms = system.get('atoms', [None, None]) + atoms = system.get("atoms", [None, None]) return atoms[0], atoms[1], system.cell def get_atom_parameters(self) -> list[AtomParameters]: @@ -591,25 +741,34 @@ def __init__(self): self._out_parser = OutParser() self._xml_parser = XMLParser() self._xc_map = { - 'pbe': ['GGA_X_PBE', 'GGA_C_PBE'], - 'rpbe': ['GGA_X_PBE', 'GGA_C_PBE'], - 'Rpbe': ['GGA_X_RPBE'], - 'pw91': ['GGA_X_PW91', 'GGA_C_PW91'], - 'l91': ['LDA_C_PW', 'LDA_C_PW_RPA', 'LDA_C_PW_MOD', 'LDA_C_OB_PW'], - 'vwn': ['LDA_C_VWN', 'LDA_C_VWN_1', 'LDA_C_VWN_2', 'LDA_C_VWN_3', 'LDA_C_VWN_4', 'LDA_C_VWN_RPA'], - 'bh': ['LDA_C_VBH'], - 'pz': ['LDA_C_PZ'], - 'x-a': [], - 'mjw': [], - 'wign': [], - 'hl': [], - 'xal': [], - 'relativistic': [] + "pbe": ["GGA_X_PBE", "GGA_C_PBE"], + "rpbe": ["GGA_X_PBE", "GGA_C_PBE"], + "Rpbe": ["GGA_X_RPBE"], + "pw91": ["GGA_X_PW91", "GGA_C_PW91"], + "l91": ["LDA_C_PW", "LDA_C_PW_RPA", "LDA_C_PW_MOD", "LDA_C_OB_PW"], + "vwn": [ + "LDA_C_VWN", + "LDA_C_VWN_1", + "LDA_C_VWN_2", + "LDA_C_VWN_3", + "LDA_C_VWN_4", + "LDA_C_VWN_RPA", + ], + "bh": ["LDA_C_VBH"], + "pz": ["LDA_C_PZ"], + "x-a": [], + "mjw": [], + "wign": [], + "hl": [], + "xal": [], + "relativistic": [], } # TODO implement xml parser def init_parser(self): - self.parser = self._xml_parser if self.filepath.endswith('.xml') else self._out_parser + self.parser = ( + self._xml_parser if self.filepath.endswith(".xml") else self._out_parser + ) self.parser.mainfile = self.filepath self.parser.logger = self.logger @@ -620,52 +779,61 @@ def parse(self, filepath, archive, logger): self.maindir = os.path.dirname(self.filepath) self.init_parser() - header = self.parser.get('header', {}) + header = self.parser.get("header", {}) sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='fleur', version=header.get('program_version')) + sec_run.program = Program(name="fleur", version=header.get("program_version")) sec_header = x_fleur_header() sec_run.x_fleur_header.append(sec_header) for key, val in header.items(): - if key.startswith('x_fleur'): + if key.startswith("x_fleur"): setattr(sec_header, key, val) if self.parser.start_time: - dt = datetime.strptime(self.parser.start_time, '%Y/%m/%d %H:%M:%S %z') + dt = datetime.strptime(self.parser.start_time, "%Y/%m/%d %H:%M:%S %z") sec_run.time_run = TimeRun(date_start=dt.timestamp()) sec_method = Method() sec_run.method.append(sec_method) - input = self.parser.get('input') + input = self.parser.get("input") if input is not None: - for key in ['parameters', 'input_parameters']: - setattr(sec_method, f'x_fleur_{key}', { - key: list(float(v) for v in val) if isinstance( - val, np.ndarray) else val for key, val in input.get(key, {}).get('key_val', [])}) + for key in ["parameters", "input_parameters"]: + setattr( + sec_method, + f"x_fleur_{key}", + { + key: list(float(v) for v in val) + if isinstance(val, np.ndarray) + else val + for key, val in input.get(key, {}).get("key_val", []) + }, + ) if not sec_method.x_fleur_parameters: sec_method.x_fleur_parameters = {} - sec_method.x_fleur_parameters.update(input.get('output_parameters', {})) - sec_method.x_fleur_parameters.update(self.parser.get('numerical_parameters', {})) + sec_method.x_fleur_parameters.update(input.get("output_parameters", {})) + sec_method.x_fleur_parameters.update( + self.parser.get("numerical_parameters", {}) + ) # Electronic_model input_parameters_reformatted = { - key_val[0]: key_val[1] for key_val in input.get('parameters').get('key_val') + key_val[0]: key_val[1] for key_val in input.get("parameters").get("key_val") } - for cutoff in ('Kmax', 'Gmax'): # TODO: add 'GmaxXC' + for cutoff in ("Kmax", "Gmax"): # TODO: add 'GmaxXC' if cutoff not in input_parameters_reformatted.keys(): continue em = BasisSetContainer() - if cutoff == 'Kmax': - em.scope = ['wavefunction'] - elif cutoff == 'Gmax': - em.scope = ['density'] + if cutoff == "Kmax": + em.scope = ["wavefunction"] + elif cutoff == "Gmax": + em.scope = ["density"] # interstitial region k_cutoff = input_parameters_reformatted[cutoff] / ureg.bohr e_cutoff = ureg.h_bar**2 / ureg.electron_mass * k_cutoff**2 / 2 em.basis_set.append( BasisSet( - scope=['interstitial', 'valence'], - type='plane waves', # Actually stars: symmetrized plane waves according to the unit cell + scope=["interstitial", "valence"], + type="plane waves", # Actually stars: symmetrized plane waves according to the unit cell cutoff=e_cutoff, # TODO: check units ) ) @@ -675,25 +843,34 @@ def parse(self, filepath, archive, logger): electronic = self.parser.electronic if electronic is not None: sec_method.x_fleur_eigenvalues_parameters = { - key: val for key, val in electronic.get('eigenvalues_parameters', {}).get('key_val')} - sec_method.electronic = Electronic(smearing=Smearing( - kind=electronic.smearing, width=electronic.width)) + key: val + for key, val in electronic.get("eigenvalues_parameters", {}).get( + "key_val" + ) + } + sec_method.electronic = Electronic( + smearing=Smearing(kind=electronic.smearing, width=electronic.width) + ) exchange_correlation = self.parser.get_xc_functional() if exchange_correlation is not None: - exchange_correlation = [xc.strip() for xc in exchange_correlation.strip().split(' ', 1)] + exchange_correlation = [ + xc.strip() for xc in exchange_correlation.strip().split(" ", 1) + ] sec_method.dft = DFT() sec_xc_functional = XCFunctional() sec_method.dft.xc_functional = sec_xc_functional for xc_functional in self._xc_map.get(exchange_correlation[0], []): - if '_X_' in xc_functional or xc_functional.endswith('_X'): + if "_X_" in xc_functional or xc_functional.endswith("_X"): sec_xc_functional.exchange.append(Functional(name=xc_functional)) - elif '_C_' in xc_functional or xc_functional.endswith('_C'): + elif "_C_" in xc_functional or xc_functional.endswith("_C"): sec_xc_functional.correlation.append(Functional(name=xc_functional)) - elif 'HYB' in xc_functional: + elif "HYB" in xc_functional: sec_xc_functional.hybrid.append(Functional(name=xc_functional)) else: - sec_xc_functional.contributions.append(Functional(name=xc_functional)) + sec_xc_functional.contributions.append( + Functional(name=xc_functional) + ) sec_xc_functional.x_fleur_xc_correction = exchange_correlation[1] @@ -708,13 +885,16 @@ def parse(self, filepath, archive, logger): sec_system.x_fleur_parameters = dict() if labels is not None: sec_system.atoms = Atoms( - lattice_vectors=lattice_vectors, labels=labels, positions=positions) + lattice_vectors=lattice_vectors, labels=labels, positions=positions + ) - system = self.parser.get('system', {}) - sec_system.x_fleur_parameters = {key: val for key, val in system.get('parameters', {}).get('key_val', [])} + system = self.parser.get("system", {}) + sec_system.x_fleur_parameters = { + key: val for key, val in system.get("parameters", {}).get("key_val", []) + } for key, val in system.items(): - if key.startswith('x_fleur'): + if key.startswith("x_fleur"): setattr(sec_system, key, val) sec_scc = Calculation() @@ -722,8 +902,10 @@ def parse(self, filepath, archive, logger): sec_scc.system_ref = sec_system scf = None - nspin = sec_method.x_fleur_parameters.get('jspins', sec_system.x_fleur_parameters.get('jspins', 1)) - for scf in self.parser.get('scf_iteration', []): + nspin = sec_method.x_fleur_parameters.get( + "jspins", sec_system.x_fleur_parameters.get("jspins", 1) + ) + for scf in self.parser.get("scf_iteration", []): sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf_energy = Energy() @@ -734,22 +916,34 @@ def parse(self, filepath, archive, logger): for key, val in scf.items(): if val is None: continue - if key.startswith('energy_'): - setattr(sec_scf_energy, key.replace('energy_', ''), EnergyEntry(value=val)) - elif key == 'forces': - sec_scf.forces = Forces(total=ForcesEntry(value=val * ureg.hartree / ureg.bohr)) - elif key == 'fermi': + if key.startswith("energy_"): + setattr( + sec_scf_energy, + key.replace("energy_", ""), + EnergyEntry(value=val), + ) + elif key == "forces": + sec_scf.forces = Forces( + total=ForcesEntry(value=val * ureg.hartree / ureg.bohr) + ) + elif key == "fermi": sec_scf_energy.fermi = val - elif key == 'kpoints': + elif key == "kpoints": sec_eigenvalues.kpoints = val - elif key == 'eigenvalues': - sec_eigenvalues.energies = np.reshape(val, (nspin, len(val) // nspin, len(val[0]))) * ureg.hartree - elif key == 'eigenvalues_kpts': + elif key == "eigenvalues": + sec_eigenvalues.energies = ( + np.reshape(val, (nspin, len(val) // nspin, len(val[0]))) + * ureg.hartree + ) + elif key == "eigenvalues_kpts": sec_eigenvalues.kpoints = [v.kpt for v in val] # it seems that it only shows the eigenvalues for spin 1 energies = [v.energies for v in val] - sec_eigenvalues.energies = np.reshape(energies, (1, len(energies), len(energies[0]))) * ureg.hartree - elif key.startswith('x_fleur'): + sec_eigenvalues.energies = ( + np.reshape(energies, (1, len(energies), len(energies[0]))) + * ureg.hartree + ) + elif key.startswith("x_fleur"): setattr(sec_scf, key, val) if scf is not None: diff --git a/electronicparsers/fplo/metainfo/fplo.py b/electronicparsers/fplo/metainfo/fplo.py index af4a80bf..d43339b9 100644 --- a/electronicparsers/fplo/metainfo/fplo.py +++ b/electronicparsers/fplo/metainfo/fplo.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,98 +39,106 @@ class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_fplo_program_version_sub = Quantity( type=str, shape=[], - description=''' + description=""" FPLO sub version - ''') + """, + ) x_fplo_program_compilation_options = Quantity( type=str, shape=[], - description=''' + description=""" FPLO compilation options - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_fplo_reciprocal_cell = Quantity( type=np.dtype(np.float64), shape=[3, 3], - unit='1 / meter', - description=''' + unit="1 / meter", + description=""" Reciprocal Lattice vectors (in Cartesian coordinates). The first index runs over the $x,y,z$ Cartesian coordinates, and the second index runs over the 3 lattice vectors. - ''') + """, + ) x_fplo_atom_idx = Quantity( type=np.dtype(np.int32), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" FPLO-internal index for each atom - ''') + """, + ) x_fplo_atom_wyckoff_idx = Quantity( type=np.dtype(np.int32), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Wyckoff position index of each atom - ''') + """, + ) x_fplo_atom_cpa_block = Quantity( type=np.dtype(np.int32), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" CPA block of each atom - ''') + """, + ) x_fplo_structure_type = Quantity( type=str, shape=[], - description=''' + description=""" FPLO structure type: Crystal/Molecule - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_fplo_xc_functional_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO number xc functional - ''') + """, + ) x_fplo_xc_functional = Quantity( type=str, shape=[], - description=''' + description=""" FPLO notation of xc functional - ''') + """, + ) x_fplo_dft_plus_u_projection_type = Quantity( type=str, shape=[], - description=''' + description=""" FPLO notation of DFT+U projection - ''') + """, + ) x_fplo_dft_plus_u_functional = Quantity( type=str, shape=[], - description=''' + description=""" FPLO notation of DFT+U functional - ''') + """, + ) # class HubbardModel(runschema.method.HubbardModel): diff --git a/electronicparsers/fplo/metainfo/fplo_input_autogenerated.py b/electronicparsers/fplo/metainfo/fplo_input_autogenerated.py index a509a93a..db358145 100644 --- a/electronicparsers/fplo/metainfo/fplo_input_autogenerated.py +++ b/electronicparsers/fplo/metainfo/fplo_input_autogenerated.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,2462 +39,2706 @@ class x_fplo_in(MSection): - ''' + """ FPLO input metainfo, autogenerated - ''' + """ m_def = Section(validate=False) x_fplo_in_header = SubSection( - sub_section=SectionProxy('x_fplo_in_header'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_header"), repeats=True + ) x_fplo_in_structure_information = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_information'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_information"), repeats=True + ) x_fplo_in_structure_dependend = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_dependend'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_dependend"), repeats=True + ) x_fplo_in_mesh = SubSection( - sub_section=SectionProxy('x_fplo_in_mesh'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_mesh"), repeats=True + ) x_fplo_in_brillouin = SubSection( - sub_section=SectionProxy('x_fplo_in_brillouin'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_brillouin"), repeats=True + ) x_fplo_in_bandstructure_plot = SubSection( - sub_section=SectionProxy('x_fplo_in_bandstructure_plot'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_bandstructure_plot"), repeats=True + ) x_fplo_in_iteration_control = SubSection( - sub_section=SectionProxy('x_fplo_in_iteration_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_iteration_control"), repeats=True + ) x_fplo_in_forces = SubSection( - sub_section=SectionProxy('x_fplo_in_forces'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_forces"), repeats=True + ) x_fplo_in_options = SubSection( - sub_section=SectionProxy('x_fplo_in_options'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options"), repeats=True + ) - x_fplo_in_cpa = SubSection( - sub_section=SectionProxy('x_fplo_in_cpa'), - repeats=True) + x_fplo_in_cpa = SubSection(sub_section=SectionProxy("x_fplo_in_cpa"), repeats=True) x_fplo_in_numerics = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics"), repeats=True + ) x_fplo_in_LSDA_U = SubSection( - sub_section=SectionProxy('x_fplo_in_LSDA_U'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_LSDA_U"), repeats=True + ) - x_fplo_in_OPC = SubSection( - sub_section=SectionProxy('x_fplo_in_OPC'), - repeats=True) + x_fplo_in_OPC = SubSection(sub_section=SectionProxy("x_fplo_in_OPC"), repeats=True) x_fplo_in_Advanced_output = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output"), repeats=True + ) class x_fplo_in_header(MSection): - ''' + """ FPLO input section x_fplo_in.header - ''' + """ m_def = Section(validate=False) x_fplo_in_header_compound = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.header.compound - ''') + """, + ) x_fplo_in_header_version = SubSection( - sub_section=SectionProxy('x_fplo_in_header_version'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_header_version"), repeats=True + ) x_fplo_in_header_last_changes = SubSection( - sub_section=SectionProxy('x_fplo_in_header_last_changes'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_header_last_changes"), repeats=True + ) class x_fplo_in_header_version(MSection): - ''' + """ FPLO input x_fplo_in.header.version - ''' + """ m_def = Section(validate=False) x_fplo_in_header_version_mainversion = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.header.version.mainversion - ''') + """, + ) x_fplo_in_header_version_subversion = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.header.version.subversion - ''') + """, + ) class x_fplo_in_header_last_changes(MSection): - ''' + """ FPLO input x_fplo_in.header.last_changes - ''' + """ m_def = Section(validate=False) x_fplo_in_header_last_changes_hostname = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.header.last_changes.hostname - ''') + """, + ) x_fplo_in_header_last_changes_date = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.header.last_changes.date - ''') + """, + ) x_fplo_in_header_last_changes_by = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.header.last_changes.by - ''') + """, + ) class x_fplo_in_structure_information(MSection): - ''' + """ FPLO input section x_fplo_in.structure_information - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_information_subgroupgenerators = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.subgroupgenerators - ''') + """, + ) x_fplo_in_structure_information_lattice_constants = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.lattice_constants - ''') + """, + ) x_fplo_in_structure_information_axis_angles = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.axis_angles - ''') + """, + ) x_fplo_in_structure_information_max_L = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.max_L - ''') + """, + ) x_fplo_in_structure_information_nsort = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.nsort - ''') + """, + ) x_fplo_in_structure_information_structure_type = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_information_structure_type'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_information_structure_type"), + repeats=True, + ) x_fplo_in_structure_information_spacegroup = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_information_spacegroup'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_information_spacegroup"), + repeats=True, + ) x_fplo_in_structure_information_lengthunit = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_information_lengthunit'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_information_lengthunit"), + repeats=True, + ) x_fplo_in_structure_information_wyckoff_positions = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_information_wyckoff_positions'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_information_wyckoff_positions"), + repeats=True, + ) class x_fplo_in_structure_information_structure_type(MSection): - ''' + """ FPLO input x_fplo_in.structure_information.structure_type - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_information_structure_type_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.structure_type.type - ''') + """, + ) x_fplo_in_structure_information_structure_type_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.structure_type.description - ''') + """, + ) class x_fplo_in_structure_information_spacegroup(MSection): - ''' + """ FPLO input x_fplo_in.structure_information.spacegroup - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_information_spacegroup_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.spacegroup.number - ''') + """, + ) x_fplo_in_structure_information_spacegroup_symbol = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.spacegroup.symbol - ''') + """, + ) class x_fplo_in_structure_information_lengthunit(MSection): - ''' + """ FPLO input x_fplo_in.structure_information.lengthunit - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_information_lengthunit_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.lengthunit.type - ''') + """, + ) x_fplo_in_structure_information_lengthunit_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.lengthunit.description - ''') + """, + ) class x_fplo_in_structure_information_wyckoff_positions(MSection): - ''' + """ FPLO input x_fplo_in.structure_information.wyckoff_positions - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_information_wyckoff_positions_element = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.wyckoff_positions.element - ''') + """, + ) x_fplo_in_structure_information_wyckoff_positions_tau = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_information.wyckoff_positions.tau - ''') + """, + ) class x_fplo_in_structure_dependend(MSection): - ''' + """ FPLO input section x_fplo_in.structure_dependend - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_dependend_concentrations = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_dependend_concentrations'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_dependend_concentrations"), + repeats=True, + ) x_fplo_in_structure_dependend_initial_spin_split = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_dependend_initial_spin_split'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_dependend_initial_spin_split"), + repeats=True, + ) x_fplo_in_structure_dependend_core_occupation = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_dependend_core_occupation'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_dependend_core_occupation"), + repeats=True, + ) x_fplo_in_structure_dependend_special_sympoints = SubSection( - sub_section=SectionProxy('x_fplo_in_structure_dependend_special_sympoints'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_structure_dependend_special_sympoints"), + repeats=True, + ) class x_fplo_in_structure_dependend_concentrations(MSection): - ''' + """ FPLO input x_fplo_in.structure_dependend.concentrations - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_dependend_concentrations_atom = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.concentrations.atom - ''') + """, + ) x_fplo_in_structure_dependend_concentrations_concentration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.concentrations.concentration - ''') + """, + ) class x_fplo_in_structure_dependend_initial_spin_split(MSection): - ''' + """ FPLO input x_fplo_in.structure_dependend.initial_spin_split - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_dependend_initial_spin_split_element = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.initial_spin_split.element - ''') + """, + ) x_fplo_in_structure_dependend_initial_spin_split_split = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.initial_spin_split.split - ''') + """, + ) class x_fplo_in_structure_dependend_core_occupation(MSection): - ''' + """ FPLO input x_fplo_in.structure_dependend.core_occupation - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_dependend_core_occupation_sort = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.core_occupation.sort - ''') + """, + ) x_fplo_in_structure_dependend_core_occupation_state = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.core_occupation.state - ''') + """, + ) x_fplo_in_structure_dependend_core_occupation_spinup = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.core_occupation.spinup - ''') + """, + ) x_fplo_in_structure_dependend_core_occupation_spindn = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.core_occupation.spindn - ''') + """, + ) class x_fplo_in_structure_dependend_special_sympoints(MSection): - ''' + """ FPLO input x_fplo_in.structure_dependend.special_sympoints - ''' + """ m_def = Section(validate=False) x_fplo_in_structure_dependend_special_sympoints_label = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.special_sympoints.label - ''') + """, + ) x_fplo_in_structure_dependend_special_sympoints_kpoint = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.structure_dependend.special_sympoints.kpoint - ''') + """, + ) class x_fplo_in_mesh(MSection): - ''' + """ FPLO input section x_fplo_in.mesh - ''' + """ m_def = Section(validate=False) x_fplo_in_mesh_radial_mesh = SubSection( - sub_section=SectionProxy('x_fplo_in_mesh_radial_mesh'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_mesh_radial_mesh"), repeats=True + ) x_fplo_in_mesh_atom_radial_mesh = SubSection( - sub_section=SectionProxy('x_fplo_in_mesh_atom_radial_mesh'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_mesh_atom_radial_mesh"), repeats=True + ) class x_fplo_in_mesh_radial_mesh(MSection): - ''' + """ FPLO input x_fplo_in.mesh.radial_mesh - ''' + """ m_def = Section(validate=False) x_fplo_in_mesh_radial_mesh_nr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.radial_mesh.nr - ''') + """, + ) x_fplo_in_mesh_radial_mesh_rmin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.radial_mesh.rmin - ''') + """, + ) x_fplo_in_mesh_radial_mesh_rmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.radial_mesh.rmax - ''') + """, + ) x_fplo_in_mesh_radial_mesh_rmax_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.radial_mesh.rmax_factor - ''') + """, + ) class x_fplo_in_mesh_atom_radial_mesh(MSection): - ''' + """ FPLO input x_fplo_in.mesh.atom_radial_mesh - ''' + """ m_def = Section(validate=False) x_fplo_in_mesh_atom_radial_mesh_nr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.atom_radial_mesh.nr - ''') + """, + ) x_fplo_in_mesh_atom_radial_mesh_rmin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.atom_radial_mesh.rmin - ''') + """, + ) x_fplo_in_mesh_atom_radial_mesh_rmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.mesh.atom_radial_mesh.rmax - ''') + """, + ) class x_fplo_in_brillouin(MSection): - ''' + """ FPLO input section x_fplo_in.brillouin - ''' + """ m_def = Section(validate=False) x_fplo_in_brillouin_bzone_kT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.bzone_kT - ''') + """, + ) x_fplo_in_brillouin_nband = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.nband - ''') + """, + ) x_fplo_in_brillouin_bzone_integration = SubSection( - sub_section=SectionProxy('x_fplo_in_brillouin_bzone_integration'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_brillouin_bzone_integration"), repeats=True + ) x_fplo_in_brillouin_mp_bzone_integration = SubSection( - sub_section=SectionProxy('x_fplo_in_brillouin_mp_bzone_integration'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_brillouin_mp_bzone_integration"), + repeats=True, + ) x_fplo_in_brillouin_bzone_method = SubSection( - sub_section=SectionProxy('x_fplo_in_brillouin_bzone_method'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_brillouin_bzone_method"), repeats=True + ) class x_fplo_in_brillouin_bzone_integration(MSection): - ''' + """ FPLO input x_fplo_in.brillouin.bzone_integration - ''' + """ m_def = Section(validate=False) x_fplo_in_brillouin_bzone_integration_metal = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.bzone_integration.metal - ''') + """, + ) x_fplo_in_brillouin_bzone_integration_nkxyz = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.bzone_integration.nkxyz - ''') + """, + ) class x_fplo_in_brillouin_mp_bzone_integration(MSection): - ''' + """ FPLO input x_fplo_in.brillouin.mp_bzone_integration - ''' + """ m_def = Section(validate=False) x_fplo_in_brillouin_mp_bzone_integration_ne = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.mp_bzone_integration.ne - ''') + """, + ) x_fplo_in_brillouin_mp_bzone_integration_range = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.mp_bzone_integration.range - ''') + """, + ) x_fplo_in_brillouin_mp_bzone_integration_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.mp_bzone_integration.width - ''') + """, + ) x_fplo_in_brillouin_mp_bzone_integration_norder = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.mp_bzone_integration.norder - ''') + """, + ) class x_fplo_in_brillouin_bzone_method(MSection): - ''' + """ FPLO input x_fplo_in.brillouin.bzone_method - ''' + """ m_def = Section(validate=False) x_fplo_in_brillouin_bzone_method_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.bzone_method.type - ''') + """, + ) x_fplo_in_brillouin_bzone_method_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.brillouin.bzone_method.description - ''') + """, + ) class x_fplo_in_bandstructure_plot(MSection): - ''' + """ FPLO input section x_fplo_in.bandstructure_plot - ''' + """ m_def = Section(validate=False) x_fplo_in_bandstructure_plot_bandplot_control = SubSection( - sub_section=SectionProxy('x_fplo_in_bandstructure_plot_bandplot_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_bandstructure_plot_bandplot_control"), + repeats=True, + ) x_fplo_in_bandstructure_plot_bandweight_control = SubSection( - sub_section=SectionProxy('x_fplo_in_bandstructure_plot_bandweight_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_bandstructure_plot_bandweight_control"), + repeats=True, + ) class x_fplo_in_bandstructure_plot_bandplot_control(MSection): - ''' + """ FPLO input x_fplo_in.bandstructure_plot.bandplot_control - ''' + """ m_def = Section(validate=False) x_fplo_in_bandstructure_plot_bandplot_control_bandplot = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.bandplot - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_read_sympoints = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.read_sympoints - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_ndivisions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.ndivisions - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_emin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.emin - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_emax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.emax - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_nptdos = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.nptdos - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_plot_idos = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.plot_idos - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_plot_ndos = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.plot_ndos - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_restrict_bands_to_window = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.restrict_bands_to_window - ''') + """, + ) x_fplo_in_bandstructure_plot_bandplot_control_coeffout = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandplot_control.coeffout - ''') + """, + ) class x_fplo_in_bandstructure_plot_bandweight_control(MSection): - ''' + """ FPLO input x_fplo_in.bandstructure_plot.bandweight_control - ''' + """ m_def = Section(validate=False) x_fplo_in_bandstructure_plot_bandweight_control_bandweights = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.bandweights - ''') + """, + ) x_fplo_in_bandstructure_plot_bandweight_control_bweight_rot = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.bweight_rot - ''') + """, + ) x_fplo_in_bandstructure_plot_bandweight_control_z_axis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.z_axis - ''') + """, + ) x_fplo_in_bandstructure_plot_bandweight_control_x_axis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.x_axis - ''') + """, + ) x_fplo_in_bandstructure_plot_bandweight_control_bwdfilename = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.bwdfilename - ''') + """, + ) x_fplo_in_bandstructure_plot_bandweight_control_frelprojection = SubSection( - sub_section=SectionProxy('x_fplo_in_bandstructure_plot_bandweight_control_frelprojection'), - repeats=True) + sub_section=SectionProxy( + "x_fplo_in_bandstructure_plot_bandweight_control_frelprojection" + ), + repeats=True, + ) class x_fplo_in_bandstructure_plot_bandweight_control_frelprojection(MSection): - ''' + """ FPLO input x_fplo_in.bandstructure_plot.bandweight_control.frelprojection - ''' + """ m_def = Section(validate=False) x_fplo_in_bandstructure_plot_bandweight_control_frelprojection_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.frelprojection.type - ''') - - x_fplo_in_bandstructure_plot_bandweight_control_frelprojection_description = Quantity( - type=str, - shape=[], - description=''' + """, + ) + + x_fplo_in_bandstructure_plot_bandweight_control_frelprojection_description = ( + Quantity( + type=str, + shape=[], + description=""" FPLO input x_fplo_in.bandstructure_plot.bandweight_control.frelprojection.description - ''') + """, + ) + ) class x_fplo_in_iteration_control(MSection): - ''' + """ FPLO input section x_fplo_in.iteration_control - ''' + """ m_def = Section(validate=False) x_fplo_in_iteration_control_etot_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.etot_tolerance - ''') + """, + ) x_fplo_in_iteration_control_iteration_control = SubSection( - sub_section=SectionProxy('x_fplo_in_iteration_control_iteration_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_iteration_control_iteration_control"), + repeats=True, + ) x_fplo_in_iteration_control_iteration_version = SubSection( - sub_section=SectionProxy('x_fplo_in_iteration_control_iteration_version'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_iteration_control_iteration_version"), + repeats=True, + ) x_fplo_in_iteration_control_iteration_convergence_condition = SubSection( - sub_section=SectionProxy('x_fplo_in_iteration_control_iteration_convergence_condition'), - repeats=True) + sub_section=SectionProxy( + "x_fplo_in_iteration_control_iteration_convergence_condition" + ), + repeats=True, + ) x_fplo_in_iteration_control_iterationvector_ratio = SubSection( - sub_section=SectionProxy('x_fplo_in_iteration_control_iterationvector_ratio'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_iteration_control_iterationvector_ratio"), + repeats=True, + ) class x_fplo_in_iteration_control_iteration_control(MSection): - ''' + """ FPLO input x_fplo_in.iteration_control.iteration_control - ''' + """ m_def = Section(validate=False) x_fplo_in_iteration_control_iteration_control_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_control.steps - ''') + """, + ) x_fplo_in_iteration_control_iteration_control_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_control.tolerance - ''') + """, + ) x_fplo_in_iteration_control_iteration_control_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_control.mixing - ''') + """, + ) x_fplo_in_iteration_control_iteration_control_maxdim = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_control.maxdim - ''') + """, + ) x_fplo_in_iteration_control_iteration_control_progress = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_control.progress - ''') + """, + ) class x_fplo_in_iteration_control_iteration_version(MSection): - ''' + """ FPLO input x_fplo_in.iteration_control.iteration_version - ''' + """ m_def = Section(validate=False) x_fplo_in_iteration_control_iteration_version_scheme = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_version.scheme - ''') + """, + ) x_fplo_in_iteration_control_iteration_version_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_version.description - ''') + """, + ) class x_fplo_in_iteration_control_iteration_convergence_condition(MSection): - ''' + """ FPLO input x_fplo_in.iteration_control.iteration_convergence_condition - ''' + """ m_def = Section(validate=False) x_fplo_in_iteration_control_iteration_convergence_condition_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_convergence_condition.type - ''') + """, + ) x_fplo_in_iteration_control_iteration_convergence_condition_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iteration_convergence_condition.description - ''') + """, + ) class x_fplo_in_iteration_control_iterationvector_ratio(MSection): - ''' + """ FPLO input x_fplo_in.iteration_control.iterationvector_ratio - ''' + """ m_def = Section(validate=False) x_fplo_in_iteration_control_iterationvector_ratio_U = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.iteration_control.iterationvector_ratio.U - ''') + """, + ) class x_fplo_in_forces(MSection): - ''' + """ FPLO input section x_fplo_in.forces - ''' + """ m_def = Section(validate=False) x_fplo_in_forces_force_in_each_step = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_in_each_step - ''') + """, + ) x_fplo_in_forces_approx_nodndL_ewald = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.approx_nodndL_ewald - ''') + """, + ) x_fplo_in_forces_geomopt_sites = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.geomopt_sites - ''') + """, + ) x_fplo_in_forces_force_iteration_control = SubSection( - sub_section=SectionProxy('x_fplo_in_forces_force_iteration_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_forces_force_iteration_control"), + repeats=True, + ) x_fplo_in_forces_force_iteration_version = SubSection( - sub_section=SectionProxy('x_fplo_in_forces_force_iteration_version'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_forces_force_iteration_version"), + repeats=True, + ) x_fplo_in_forces_force_mode = SubSection( - sub_section=SectionProxy('x_fplo_in_forces_force_mode'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_forces_force_mode"), repeats=True + ) class x_fplo_in_forces_force_iteration_control(MSection): - ''' + """ FPLO input x_fplo_in.forces.force_iteration_control - ''' + """ m_def = Section(validate=False) x_fplo_in_forces_force_iteration_control_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_iteration_control.steps - ''') + """, + ) x_fplo_in_forces_force_iteration_control_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_iteration_control.tolerance - ''') + """, + ) x_fplo_in_forces_force_iteration_control_maxdim = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_iteration_control.maxdim - ''') + """, + ) class x_fplo_in_forces_force_iteration_version(MSection): - ''' + """ FPLO input x_fplo_in.forces.force_iteration_version - ''' + """ m_def = Section(validate=False) x_fplo_in_forces_force_iteration_version_scheme = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_iteration_version.scheme - ''') + """, + ) x_fplo_in_forces_force_iteration_version_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_iteration_version.description - ''') + """, + ) class x_fplo_in_forces_force_mode(MSection): - ''' + """ FPLO input x_fplo_in.forces.force_mode - ''' + """ m_def = Section(validate=False) x_fplo_in_forces_force_mode_mode = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_mode.mode - ''') + """, + ) x_fplo_in_forces_force_mode_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.forces.force_mode.description - ''') + """, + ) class x_fplo_in_options(MSection): - ''' + """ FPLO input section x_fplo_in.options - ''' + """ m_def = Section(validate=False) x_fplo_in_options_ex_field_strength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.ex_field_strength - ''') + """, + ) x_fplo_in_options_quantization_axis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.quantization_axis - ''') + """, + ) x_fplo_in_options_calc_etot = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.calc_etot - ''') + """, + ) x_fplo_in_options_spin = SubSection( - sub_section=SectionProxy('x_fplo_in_options_spin'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_spin"), repeats=True + ) x_fplo_in_options_xc_potential = SubSection( - sub_section=SectionProxy('x_fplo_in_options_xc_potential'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_xc_potential"), repeats=True + ) x_fplo_in_options_relativistic = SubSection( - sub_section=SectionProxy('x_fplo_in_options_relativistic'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_relativistic"), repeats=True + ) x_fplo_in_options_nuclear_model = SubSection( - sub_section=SectionProxy('x_fplo_in_options_nuclear_model'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_nuclear_model"), repeats=True + ) x_fplo_in_options_charges = SubSection( - sub_section=SectionProxy('x_fplo_in_options_charges'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_charges"), repeats=True + ) x_fplo_in_options_spin_pop_type = SubSection( - sub_section=SectionProxy('x_fplo_in_options_spin_pop_type'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_spin_pop_type"), repeats=True + ) x_fplo_in_options_options = SubSection( - sub_section=SectionProxy('x_fplo_in_options_options'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_options"), repeats=True + ) x_fplo_in_options_verbosity_level = SubSection( - sub_section=SectionProxy('x_fplo_in_options_verbosity_level'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_verbosity_level"), repeats=True + ) x_fplo_in_options_fsmoment = SubSection( - sub_section=SectionProxy('x_fplo_in_options_fsmoment'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_fsmoment"), repeats=True + ) class x_fplo_in_options_spin(MSection): - ''' + """ FPLO input x_fplo_in.options.spin - ''' + """ m_def = Section(validate=False) x_fplo_in_options_spin_mspin = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.spin.mspin - ''') + """, + ) x_fplo_in_options_spin_initial_spin_split = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.spin.initial_spin_split - ''') + """, + ) class x_fplo_in_options_xc_potential(MSection): - ''' + """ FPLO input x_fplo_in.options.xc_potential - ''' + """ m_def = Section(validate=False) x_fplo_in_options_xc_potential_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.xc_potential.type - ''') + """, + ) x_fplo_in_options_xc_potential_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.xc_potential.description - ''') + """, + ) class x_fplo_in_options_relativistic(MSection): - ''' + """ FPLO input x_fplo_in.options.relativistic - ''' + """ m_def = Section(validate=False) x_fplo_in_options_relativistic_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.relativistic.type - ''') + """, + ) x_fplo_in_options_relativistic_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.relativistic.description - ''') + """, + ) class x_fplo_in_options_nuclear_model(MSection): - ''' + """ FPLO input x_fplo_in.options.nuclear_model - ''' + """ m_def = Section(validate=False) x_fplo_in_options_nuclear_model_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.nuclear_model.type - ''') + """, + ) x_fplo_in_options_nuclear_model_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.nuclear_model.description - ''') + """, + ) class x_fplo_in_options_charges(MSection): - ''' + """ FPLO input x_fplo_in.options.charges - ''' + """ m_def = Section(validate=False) x_fplo_in_options_charges_ionicity = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.charges.ionicity - ''') + """, + ) x_fplo_in_options_charges_make_vca = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.charges.make_vca - ''') + """, + ) x_fplo_in_options_charges_chargemode = SubSection( - sub_section=SectionProxy('x_fplo_in_options_charges_chargemode'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_charges_chargemode"), repeats=True + ) x_fplo_in_options_charges_vca = SubSection( - sub_section=SectionProxy('x_fplo_in_options_charges_vca'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_options_charges_vca"), repeats=True + ) class x_fplo_in_options_charges_chargemode(MSection): - ''' + """ FPLO input x_fplo_in.options.charges.chargemode - ''' + """ m_def = Section(validate=False) x_fplo_in_options_charges_chargemode_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.charges.chargemode.type - ''') + """, + ) x_fplo_in_options_charges_chargemode_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.charges.chargemode.description - ''') + """, + ) class x_fplo_in_options_charges_vca(MSection): - ''' + """ FPLO input x_fplo_in.options.charges.vca - ''' + """ m_def = Section(validate=False) x_fplo_in_options_charges_vca_sort = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.charges.vca.sort - ''') + """, + ) x_fplo_in_options_charges_vca_Z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.charges.vca.Z - ''') + """, + ) class x_fplo_in_options_spin_pop_type(MSection): - ''' + """ FPLO input x_fplo_in.options.spin_pop_type - ''' + """ m_def = Section(validate=False) x_fplo_in_options_spin_pop_type_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.spin_pop_type.type - ''') + """, + ) x_fplo_in_options_spin_pop_type_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.spin_pop_type.description - ''') + """, + ) class x_fplo_in_options_options(MSection): - ''' + """ FPLO input x_fplo_in.options.options - ''' + """ m_def = Section(validate=False) x_fplo_in_options_options_CALC_DOS = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.CALC_DOS - ''') + """, + ) x_fplo_in_options_options_FULLBZ = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.FULLBZ - ''') + """, + ) x_fplo_in_options_options_CALC_PLASMON_FREQ = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.CALC_PLASMON_FREQ - ''') + """, + ) x_fplo_in_options_options_EMPTY_LATTICE_TEST = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.EMPTY_LATTICE_TEST - ''') + """, + ) x_fplo_in_options_options_NO_DOS = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_DOS - ''') + """, + ) x_fplo_in_options_options_PLOT_REALFUNC = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.PLOT_REALFUNC - ''') + """, + ) x_fplo_in_options_options_PLOT_BASIS = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.PLOT_BASIS - ''') + """, + ) x_fplo_in_options_options_TEST_LOI = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.TEST_LOI - ''') + """, + ) x_fplo_in_options_options_TEST_DIAGNO = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.TEST_DIAGNO - ''') + """, + ) x_fplo_in_options_options_TEST_SYMMETRIZATION = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.TEST_SYMMETRIZATION - ''') + """, + ) x_fplo_in_options_options_TEST_HS_SYM = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.TEST_HS_SYM - ''') + """, + ) x_fplo_in_options_options_PROT_PRINT_BASIS = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.PROT_PRINT_BASIS - ''') + """, + ) x_fplo_in_options_options_PROT_MAKELATTICE = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.PROT_MAKELATTICE - ''') + """, + ) x_fplo_in_options_options_PROT_STRUCTURE_PRNT = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.PROT_STRUCTURE_PRNT - ''') + """, + ) x_fplo_in_options_options_PROT_TCI = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.PROT_TCI - ''') + """, + ) x_fplo_in_options_options_NO_SYMMETRYTEST = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_SYMMETRYTEST - ''') + """, + ) x_fplo_in_options_options_NO_POTENTIAL = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_POTENTIAL - ''') + """, + ) x_fplo_in_options_options_NO_CORE = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_CORE - ''') + """, + ) x_fplo_in_options_options_NO_POPANALYSIS = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_POPANALYSIS - ''') + """, + ) x_fplo_in_options_options_NO_LOI = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_LOI - ''') + """, + ) x_fplo_in_options_options_NO_BASIS = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_BASIS - ''') + """, + ) x_fplo_in_options_options_NO_EFCH = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.options.NO_EFCH - ''') + """, + ) class x_fplo_in_options_verbosity_level(MSection): - ''' + """ FPLO input x_fplo_in.options.verbosity_level - ''' + """ m_def = Section(validate=False) x_fplo_in_options_verbosity_level_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.verbosity_level.type - ''') + """, + ) x_fplo_in_options_verbosity_level_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.verbosity_level.description - ''') + """, + ) class x_fplo_in_options_fsmoment(MSection): - ''' + """ FPLO input x_fplo_in.options.fsmoment - ''' + """ m_def = Section(validate=False) x_fplo_in_options_fsmoment_moment = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.fsmoment.moment - ''') + """, + ) x_fplo_in_options_fsmoment_fsm = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.options.fsmoment.fsm - ''') + """, + ) class x_fplo_in_cpa(MSection): - ''' + """ FPLO input section x_fplo_in.cpa - ''' + """ m_def = Section(validate=False) x_fplo_in_cpa_cpa_control = SubSection( - sub_section=SectionProxy('x_fplo_in_cpa_cpa_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_cpa_cpa_control"), repeats=True + ) x_fplo_in_cpa_cpa_fermi_control = SubSection( - sub_section=SectionProxy('x_fplo_in_cpa_cpa_fermi_control'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_cpa_cpa_fermi_control"), repeats=True + ) x_fplo_in_cpa_cpa_fermi_method = SubSection( - sub_section=SectionProxy('x_fplo_in_cpa_cpa_fermi_method'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_cpa_cpa_fermi_method"), repeats=True + ) x_fplo_in_cpa_cpa_dos = SubSection( - sub_section=SectionProxy('x_fplo_in_cpa_cpa_dos'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_cpa_cpa_dos"), repeats=True + ) x_fplo_in_cpa_cpa_bloch_spectral_density = SubSection( - sub_section=SectionProxy('x_fplo_in_cpa_cpa_bloch_spectral_density'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_cpa_cpa_bloch_spectral_density"), + repeats=True, + ) class x_fplo_in_cpa_cpa_control(MSection): - ''' + """ FPLO input x_fplo_in.cpa.cpa_control - ''' + """ m_def = Section(validate=False) x_fplo_in_cpa_cpa_control_emin0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_control.emin0 - ''') + """, + ) x_fplo_in_cpa_cpa_control_emax0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_control.emax0 - ''') + """, + ) x_fplo_in_cpa_cpa_control_nec = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_control.nec - ''') + """, + ) x_fplo_in_cpa_cpa_control_max_se_loops = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_control.max_se_loops - ''') + """, + ) x_fplo_in_cpa_cpa_control_eimag = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_control.eimag - ''') + """, + ) class x_fplo_in_cpa_cpa_fermi_control(MSection): - ''' + """ FPLO input x_fplo_in.cpa.cpa_fermi_control - ''' + """ m_def = Section(validate=False) x_fplo_in_cpa_cpa_fermi_control_efermi0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_fermi_control.efermi0 - ''') + """, + ) x_fplo_in_cpa_cpa_fermi_control_slop_0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_fermi_control.slop_0 - ''') + """, + ) x_fplo_in_cpa_cpa_fermi_control_slop_min = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_fermi_control.slop_min - ''') + """, + ) x_fplo_in_cpa_cpa_fermi_control_max_ef_loops = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_fermi_control.max_ef_loops - ''') + """, + ) class x_fplo_in_cpa_cpa_fermi_method(MSection): - ''' + """ FPLO input x_fplo_in.cpa.cpa_fermi_method - ''' + """ m_def = Section(validate=False) x_fplo_in_cpa_cpa_fermi_method_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_fermi_method.type - ''') + """, + ) x_fplo_in_cpa_cpa_fermi_method_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_fermi_method.description - ''') + """, + ) class x_fplo_in_cpa_cpa_dos(MSection): - ''' + """ FPLO input x_fplo_in.cpa.cpa_dos - ''' + """ m_def = Section(validate=False) x_fplo_in_cpa_cpa_dos_ne = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_dos.ne - ''') + """, + ) x_fplo_in_cpa_cpa_dos_eimag = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_dos.eimag - ''') + """, + ) class x_fplo_in_cpa_cpa_bloch_spectral_density(MSection): - ''' + """ FPLO input x_fplo_in.cpa.cpa_bloch_spectral_density - ''' + """ m_def = Section(validate=False) x_fplo_in_cpa_cpa_bloch_spectral_density_ne = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_bloch_spectral_density.ne - ''') + """, + ) x_fplo_in_cpa_cpa_bloch_spectral_density_eimag = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.cpa.cpa_bloch_spectral_density.eimag - ''') + """, + ) class x_fplo_in_numerics(MSection): - ''' + """ FPLO input section x_fplo_in.numerics - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_nfft_ewp_per_site = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.nfft_ewp_per_site - ''') + """, + ) x_fplo_in_numerics_interpolation = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_interpolation'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_interpolation"), repeats=True + ) x_fplo_in_numerics_one_center_integrals = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_one_center_integrals'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_one_center_integrals"), + repeats=True, + ) x_fplo_in_numerics_coulomb_energy_calc = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_coulomb_energy_calc'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_coulomb_energy_calc"), repeats=True + ) x_fplo_in_numerics_overlap_density_calc = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_overlap_density_calc'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_overlap_density_calc"), + repeats=True, + ) x_fplo_in_numerics_cutoff_tolerances = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_cutoff_tolerances'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_cutoff_tolerances"), repeats=True + ) x_fplo_in_numerics_ewald_parameter = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_ewald_parameter'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_ewald_parameter"), repeats=True + ) x_fplo_in_numerics_symtest = SubSection( - sub_section=SectionProxy('x_fplo_in_numerics_symtest'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_numerics_symtest"), repeats=True + ) class x_fplo_in_numerics_interpolation(MSection): - ''' + """ FPLO input x_fplo_in.numerics.interpolation - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_interpolation_degree = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.interpolation.degree - ''') + """, + ) class x_fplo_in_numerics_one_center_integrals(MSection): - ''' + """ FPLO input x_fplo_in.numerics.one_center_integrals - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_one_center_integrals_nr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.one_center_integrals.nr - ''') + """, + ) class x_fplo_in_numerics_coulomb_energy_calc(MSection): - ''' + """ FPLO input x_fplo_in.numerics.coulomb_energy_calc - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_coulomb_energy_calc_nxi = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.coulomb_energy_calc.nxi - ''') + """, + ) x_fplo_in_numerics_coulomb_energy_calc_neta = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.coulomb_energy_calc.neta - ''') + """, + ) class x_fplo_in_numerics_overlap_density_calc(MSection): - ''' + """ FPLO input x_fplo_in.numerics.overlap_density_calc - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_overlap_density_calc_nr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.overlap_density_calc.nr - ''') + """, + ) x_fplo_in_numerics_overlap_density_calc_neta = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.overlap_density_calc.neta - ''') + """, + ) class x_fplo_in_numerics_cutoff_tolerances(MSection): - ''' + """ FPLO input x_fplo_in.numerics.cutoff_tolerances - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_cutoff_tolerances_dens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.cutoff_tolerances.dens - ''') + """, + ) x_fplo_in_numerics_cutoff_tolerances_pot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.cutoff_tolerances.pot - ''') + """, + ) x_fplo_in_numerics_cutoff_tolerances_orbital = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.cutoff_tolerances.orbital - ''') + """, + ) class x_fplo_in_numerics_ewald_parameter(MSection): - ''' + """ FPLO input x_fplo_in.numerics.ewald_parameter - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_ewald_parameter_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.ewald_parameter.cutoff - ''') + """, + ) x_fplo_in_numerics_ewald_parameter_eps_r = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.ewald_parameter.eps_r - ''') + """, + ) x_fplo_in_numerics_ewald_parameter_eps_g = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.ewald_parameter.eps_g - ''') + """, + ) class x_fplo_in_numerics_symtest(MSection): - ''' + """ FPLO input x_fplo_in.numerics.symtest - ''' + """ m_def = Section(validate=False) x_fplo_in_numerics_symtest_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.numerics.symtest.tol - ''') + """, + ) class x_fplo_in_LSDA_U(MSection): - ''' + """ FPLO input section x_fplo_in.LSDA_U - ''' + """ m_def = Section(validate=False) x_fplo_in_LSDA_U_make_lsdau = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.make_lsdau - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_dmat_deviation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_dmat_deviation - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_projection = SubSection( - sub_section=SectionProxy('x_fplo_in_LSDA_U_lsdau_projection'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_LSDA_U_lsdau_projection"), repeats=True + ) x_fplo_in_LSDA_U_lsdau_functional = SubSection( - sub_section=SectionProxy('x_fplo_in_LSDA_U_lsdau_functional'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_LSDA_U_lsdau_functional"), repeats=True + ) x_fplo_in_LSDA_U_lsdau_dmat_mode = SubSection( - sub_section=SectionProxy('x_fplo_in_LSDA_U_lsdau_dmat_mode'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_LSDA_U_lsdau_dmat_mode"), repeats=True + ) x_fplo_in_LSDA_U_lsdau_defs = SubSection( - sub_section=SectionProxy('x_fplo_in_LSDA_U_lsdau_defs'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_LSDA_U_lsdau_defs"), repeats=True + ) class x_fplo_in_LSDA_U_lsdau_projection(MSection): - ''' + """ FPLO input x_fplo_in.LSDA_U.lsdau_projection - ''' + """ m_def = Section(validate=False) x_fplo_in_LSDA_U_lsdau_projection_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_projection.type - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_projection_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_projection.description - ''') + """, + ) class x_fplo_in_LSDA_U_lsdau_functional(MSection): - ''' + """ FPLO input x_fplo_in.LSDA_U.lsdau_functional - ''' + """ m_def = Section(validate=False) x_fplo_in_LSDA_U_lsdau_functional_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_functional.type - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_functional_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_functional.description - ''') + """, + ) class x_fplo_in_LSDA_U_lsdau_dmat_mode(MSection): - ''' + """ FPLO input x_fplo_in.LSDA_U.lsdau_dmat_mode - ''' + """ m_def = Section(validate=False) x_fplo_in_LSDA_U_lsdau_dmat_mode_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_dmat_mode.type - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_dmat_mode_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_dmat_mode.description - ''') + """, + ) class x_fplo_in_LSDA_U_lsdau_defs(MSection): - ''' + """ FPLO input x_fplo_in.LSDA_U.lsdau_defs - ''' + """ m_def = Section(validate=False) x_fplo_in_LSDA_U_lsdau_defs_sort = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_defs.sort - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_defs_state = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_defs.state - ''') + """, + ) x_fplo_in_LSDA_U_lsdau_defs_f_slater = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.LSDA_U.lsdau_defs.f_slater - ''') + """, + ) class x_fplo_in_OPC(MSection): - ''' + """ FPLO input section x_fplo_in.OPC - ''' + """ m_def = Section(validate=False) x_fplo_in_OPC_make_opc = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.make_opc - ''') + """, + ) x_fplo_in_OPC_opc_projection = SubSection( - sub_section=SectionProxy('x_fplo_in_OPC_opc_projection'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_OPC_opc_projection"), repeats=True + ) x_fplo_in_OPC_opc_functional = SubSection( - sub_section=SectionProxy('x_fplo_in_OPC_opc_functional'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_OPC_opc_functional"), repeats=True + ) x_fplo_in_OPC_opc_defs = SubSection( - sub_section=SectionProxy('x_fplo_in_OPC_opc_defs'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_OPC_opc_defs"), repeats=True + ) class x_fplo_in_OPC_opc_projection(MSection): - ''' + """ FPLO input x_fplo_in.OPC.opc_projection - ''' + """ m_def = Section(validate=False) x_fplo_in_OPC_opc_projection_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.opc_projection.type - ''') + """, + ) x_fplo_in_OPC_opc_projection_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.opc_projection.description - ''') + """, + ) class x_fplo_in_OPC_opc_functional(MSection): - ''' + """ FPLO input x_fplo_in.OPC.opc_functional - ''' + """ m_def = Section(validate=False) x_fplo_in_OPC_opc_functional_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.opc_functional.type - ''') + """, + ) x_fplo_in_OPC_opc_functional_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.opc_functional.description - ''') + """, + ) class x_fplo_in_OPC_opc_defs(MSection): - ''' + """ FPLO input x_fplo_in.OPC.opc_defs - ''' + """ m_def = Section(validate=False) x_fplo_in_OPC_opc_defs_sort = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.opc_defs.sort - ''') + """, + ) x_fplo_in_OPC_opc_defs_state = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.OPC.opc_defs.state - ''') + """, + ) class x_fplo_in_Advanced_output(MSection): - ''' + """ FPLO input section x_fplo_in.Advanced_output - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_ldossites = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.ldossites - ''') + """, + ) x_fplo_in_Advanced_output_grids_active = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids_active - ''') + """, + ) x_fplo_in_Advanced_output_grids_stop_after = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids_stop_after - ''') + """, + ) x_fplo_in_Advanced_output_grids = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_grids"), repeats=True + ) x_fplo_in_Advanced_output_topological_insulator = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_topological_insulator'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_topological_insulator"), + repeats=True, + ) x_fplo_in_Advanced_output_optics = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_optics'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_optics"), repeats=True + ) class x_fplo_in_Advanced_output_grids(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_direction1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.direction1 - ''') + """, + ) x_fplo_in_Advanced_output_grids_direction2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.direction2 - ''') + """, + ) x_fplo_in_Advanced_output_grids_direction3 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.direction3 - ''') + """, + ) x_fplo_in_Advanced_output_grids_origin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.origin - ''') + """, + ) x_fplo_in_Advanced_output_grids_subdivision = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.subdivision - ''') + """, + ) x_fplo_in_Advanced_output_grids_file = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.file - ''') + """, + ) x_fplo_in_Advanced_output_grids_InclPeriodicPoints = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.InclPeriodicPoints - ''') + """, + ) x_fplo_in_Advanced_output_grids_createOpenDX = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.createOpenDX - ''') + """, + ) x_fplo_in_Advanced_output_grids_scfwavefnctwindow = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.scfwavefnctwindow - ''') + """, + ) x_fplo_in_Advanced_output_grids_basis = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_basis'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_grids_basis"), repeats=True + ) x_fplo_in_Advanced_output_grids_quantities = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_quantities'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_grids_quantities"), + repeats=True, + ) x_fplo_in_Advanced_output_grids_outputdata = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_outputdata'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_grids_outputdata"), + repeats=True, + ) x_fplo_in_Advanced_output_grids_energywindows = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_energywindows'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_grids_energywindows"), + repeats=True, + ) x_fplo_in_Advanced_output_grids_kresolved = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_kresolved'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_grids_kresolved"), + repeats=True, + ) class x_fplo_in_Advanced_output_grids_basis(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.basis - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_basis_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.basis.type - ''') + """, + ) x_fplo_in_Advanced_output_grids_basis_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.basis.description - ''') + """, + ) class x_fplo_in_Advanced_output_grids_quantities(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.quantities - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_quantities_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.quantities.type - ''') + """, + ) x_fplo_in_Advanced_output_grids_quantities_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.quantities.description - ''') + """, + ) class x_fplo_in_Advanced_output_grids_outputdata(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.outputdata - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_outputdata_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.outputdata.type - ''') + """, + ) x_fplo_in_Advanced_output_grids_outputdata_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.outputdata.description - ''') + """, + ) class x_fplo_in_Advanced_output_grids_energywindows(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.energywindows - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_energywindows_name = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.energywindows.name - ''') + """, + ) x_fplo_in_Advanced_output_grids_energywindows_sections = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_energywindows_sections'), - repeats=True) + sub_section=SectionProxy( + "x_fplo_in_Advanced_output_grids_energywindows_sections" + ), + repeats=True, + ) class x_fplo_in_Advanced_output_grids_energywindows_sections(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_energywindows_sections_emin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections.emin - ''') + """, + ) x_fplo_in_Advanced_output_grids_energywindows_sections_emax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections.emax - ''') + """, + ) x_fplo_in_Advanced_output_grids_energywindows_sections_de = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections.de - ''') + """, + ) x_fplo_in_Advanced_output_grids_energywindows_sections_spin = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_grids_energywindows_sections_spin'), - repeats=True) + sub_section=SectionProxy( + "x_fplo_in_Advanced_output_grids_energywindows_sections_spin" + ), + repeats=True, + ) class x_fplo_in_Advanced_output_grids_energywindows_sections_spin(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections.spin - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_energywindows_sections_spin_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections.spin.type - ''') + """, + ) x_fplo_in_Advanced_output_grids_energywindows_sections_spin_description = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.energywindows.sections.spin.description - ''') + """, + ) class x_fplo_in_Advanced_output_grids_kresolved(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.grids.kresolved - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_grids_kresolved_name = Quantity( type=str, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.kresolved.name - ''') + """, + ) x_fplo_in_Advanced_output_grids_kresolved_kpoint = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.kresolved.kpoint - ''') + """, + ) x_fplo_in_Advanced_output_grids_kresolved_bandindices = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.kresolved.bandindices - ''') + """, + ) x_fplo_in_Advanced_output_grids_kresolved_energywindow = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.grids.kresolved.energywindow - ''') + """, + ) class x_fplo_in_Advanced_output_topological_insulator(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.topological_insulator - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_topological_insulator_active = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.topological_insulator.active - ''') + """, + ) class x_fplo_in_Advanced_output_optics(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.optics - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_optics_active = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.active - ''') + """, + ) x_fplo_in_Advanced_output_optics_jointdos = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.jointdos - ''') + """, + ) x_fplo_in_Advanced_output_optics_bandoutput = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.bandoutput - ''') + """, + ) x_fplo_in_Advanced_output_optics_stopafter = Quantity( type=bool, shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.stopafter - ''') + """, + ) x_fplo_in_Advanced_output_optics_energy = SubSection( - sub_section=SectionProxy('x_fplo_in_Advanced_output_optics_energy'), - repeats=True) + sub_section=SectionProxy("x_fplo_in_Advanced_output_optics_energy"), + repeats=True, + ) class x_fplo_in_Advanced_output_optics_energy(MSection): - ''' + """ FPLO input x_fplo_in.Advanced_output.optics.energy - ''' + """ m_def = Section(validate=False) x_fplo_in_Advanced_output_optics_energy_ne = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.energy.ne - ''') + """, + ) x_fplo_in_Advanced_output_optics_energy_emin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.energy.emin - ''') + """, + ) x_fplo_in_Advanced_output_optics_energy_emax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" FPLO input x_fplo_in.Advanced_output.optics.energy.emax - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) - x_fplo_in = SubSection( - sub_section=SectionProxy('x_fplo_in'), - repeats=True) + x_fplo_in = SubSection(sub_section=SectionProxy("x_fplo_in"), repeats=True) diff --git a/electronicparsers/fplo/metainfo/fplo_temporaries.py b/electronicparsers/fplo/metainfo/fplo_temporaries.py index a98f97ee..f3821c10 100644 --- a/electronicparsers/fplo/metainfo/fplo_temporaries.py +++ b/electronicparsers/fplo/metainfo/fplo_temporaries.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,252 +39,281 @@ class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_fplo_t_program_version_main = Quantity( type=str, shape=[], - description=''' + description=""" temporary: FPLO main version - ''') + """, + ) x_fplo_t_program_version_release = Quantity( type=str, shape=[], - description=''' + description=""" temporary: FPLO release number - ''') + """, + ) x_fplo_t_run_hosts = Quantity( type=str, shape=[], - description=''' + description=""" temporary: FPLO run hosts - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_fplo_t_vec_a_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for direct lattice vectors, x-component - ''') + """, + ) x_fplo_t_vec_a_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for direct lattice vectors, y-component - ''') + """, + ) x_fplo_t_vec_a_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for direct lattice vectors, z-component - ''') + """, + ) x_fplo_t_vec_b_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for reciprocal lattice vectors, x-component - ''') + """, + ) x_fplo_t_vec_b_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for reciprocal lattice vectors, y-component - ''') + """, + ) x_fplo_t_vec_b_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for reciprocal lattice vectors, z-component - ''') + """, + ) x_fplo_t_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for atom positions, x-component - ''') + """, + ) x_fplo_t_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for atom positions, y-component - ''') + """, + ) x_fplo_t_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for atom positions, z-component - ''') + """, + ) x_fplo_t_atom_idx = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO atom index - ''') + """, + ) x_fplo_t_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storage for FPLO atom labels - ''') + """, + ) x_fplo_t_atom_wyckoff_idx = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO Wyckoff position index of each atom - ''') + """, + ) x_fplo_t_atom_cpa_block = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO CPA block of each atom - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_fplo_t_relativity_method = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storage for FPLO relativistic method - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_species = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U species - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_element = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U element - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_subshell = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U (n,l)subshell - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_F0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U F0 - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_F2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U F2 - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_F4 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U F4 - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_F6 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U F6 - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_U = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U U - ''') + """, + ) x_fplo_t_dft_plus_u_species_subshell_J = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storage for FPLO per species/(n,l)subshell DFT+U J - ''') + """, + ) x_fplo_t_dft_plus_u_site_index = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO per site DFT+U index - ''') + """, + ) x_fplo_t_dft_plus_u_site_element = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storage for FPLO per site DFT+U element - ''') + """, + ) x_fplo_t_dft_plus_u_site_species = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO per site DFT+U species - ''') + """, + ) x_fplo_t_dft_plus_u_site_subshell = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storage for FPLO per site DFT+U (n,l)subshell - ''') + """, + ) x_fplo_t_dft_plus_u_site_ubi1 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO per site DFT+U ubi1 - ''') + """, + ) x_fplo_t_dft_plus_u_site_ubi2 = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Temporary storage for FPLO per site DFT+U ubi2 - ''') + """, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_fplo_t_energy_reference_fermi_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Temporary storage for FPLO Fermi energy in iteration - ''') + """, + ) diff --git a/electronicparsers/fplo/parser.py b/electronicparsers/fplo/parser.py index 0977f2cc..6d9dc936 100644 --- a/electronicparsers/fplo/parser.py +++ b/electronicparsers/fplo/parser.py @@ -23,16 +23,19 @@ class FploParser: def __init__(self): - re_f = r'\-*\d+\.\d+E*\-*\+*\d*' + re_f = r"\-*\d+\.\d+E*\-*\+*\d*" self._parser = BasicParser( - 'fplo', + "fplo", units_mapping=dict(length=ureg.bohr, energy=ureg.eV), - program_version=r'main version\:\s*(\S+)[\|\s]+sub version\:\s*(\S+)[\|\s]+release\s*\:\s*(\S+)', - lattice_vectors=r'lattice vectors\s*(a1\s*\:\s*[\s\S]+?)rec', - atom_labels_atom_positions=rf'No\. *Element WPS CPA\-Block *X *Y *Z([\s\S]+?)\n *\n', - energy_reference_fermi=(rf'Fermi energy\:\s*({re_f}).+electrons', lambda x: [x]), - energy_total=rf'total energy.+\s*EE\:\s*({re_f})' + program_version=r"main version\:\s*(\S+)[\|\s]+sub version\:\s*(\S+)[\|\s]+release\s*\:\s*(\S+)", + lattice_vectors=r"lattice vectors\s*(a1\s*\:\s*[\s\S]+?)rec", + atom_labels_atom_positions=rf"No\. *Element WPS CPA\-Block *X *Y *Z([\s\S]+?)\n *\n", + energy_reference_fermi=( + rf"Fermi energy\:\s*({re_f}).+electrons", + lambda x: [x], + ), + energy_total=rf"total energy.+\s*EE\:\s*({re_f})", ) def parse(self, mainfile, archive, logger=None): diff --git a/electronicparsers/gamess/metainfo/gamess.py b/electronicparsers/gamess/metainfo/gamess.py index 53e50757..a280a469 100644 --- a/electronicparsers/gamess/metainfo/gamess.py +++ b/electronicparsers/gamess/metainfo/gamess.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,731 +40,798 @@ class x_gamess_section_atom_forces(MSection): - ''' + """ section that contains Cartesian forces of the system for a given geometry - ''' + """ m_def = Section(validate=False) x_gamess_atom_x_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''') + """, + ) x_gamess_atom_y_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''') + """, + ) x_gamess_atom_z_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''') + """, + ) class x_gamess_section_cis(MSection): - ''' + """ Configuration interaction singles excitation energies and oscillator strengths. - ''' + """ m_def = Section(validate=False) x_gamess_cis_excitation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Value of the excitation energies for configuration interaction singles excited states. - ''') + """, + ) x_gamess_cis_oscillator_strength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of the oscillator strengths for configuration interaction singles excited states. - ''') + """, + ) class x_gamess_section_ci(MSection): - ''' + """ Configuration interaction energies. - ''' + """ m_def = Section(validate=False) class x_gamess_section_coupled_cluster(MSection): - ''' + """ Coupled cluster energies. - ''' + """ m_def = Section(validate=False) class x_gamess_section_elstruc_method(MSection): - ''' + """ Section containing electronic structure method. - ''' + """ m_def = Section(validate=False) x_gamess_electronic_structure_method = Quantity( type=str, shape=[], - description=''' + description=""" Name of electronic structure method. - ''') + """, + ) class x_gamess_section_excited_states(MSection): - ''' + """ Time-dependent DFT and configuration interaction singles results. - ''' + """ m_def = Section(validate=False) x_gamess_section_cis = SubSection( - sub_section=SectionProxy('x_gamess_section_cis'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_cis"), repeats=True + ) x_gamess_section_tddft = SubSection( - sub_section=SectionProxy('x_gamess_section_tddft'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_tddft"), repeats=True + ) class x_gamess_section_frequencies(MSection): - ''' + """ section for the values of the frequencies, reduced masses and normal mode vectors - ''' + """ m_def = Section(validate=False) x_gamess_frequencies = Quantity( type=np.dtype(np.float64), - shape=['number_of_frequencies'], - description=''' + shape=["number_of_frequencies"], + description=""" values of frequencies, in cm-1 - ''') + """, + ) x_gamess_frequency_values = Quantity( type=str, shape=[], - description=''' + description=""" values of frequencies, in cm-1 - ''') + """, + ) x_gamess_red_masses = Quantity( type=np.dtype(np.float64), - shape=['number_of_frequencies'], - description=''' + shape=["number_of_frequencies"], + description=""" values of normal mode reduced masses - ''') + """, + ) x_gamess_reduced_masses = Quantity( type=str, - shape=['number_of_reduced_masses_rows'], - description=''' + shape=["number_of_reduced_masses_rows"], + description=""" values of normal mode reduced masses - ''') + """, + ) class x_gamess_section_geometry_optimization_info(MSection): - ''' + """ Specifies whether a geometry optimization is converged. - ''' + """ m_def = Section(validate=False) x_gamess_geometry_optimization_converged = Quantity( type=str, shape=[], - description=''' + description=""" Specifies whether a geometry optimization is converged. - ''') + """, + ) class x_gamess_section_geometry(MSection): - ''' + """ section that contains Cartesian coordinates of the system for a given geometry - ''' + """ m_def = Section(validate=False) x_gamess_atom_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - unit='meter', - description=''' + shape=["number_of_atoms", 3], + unit="meter", + description=""" Initial positions of all the atoms, in Cartesian coordinates. - ''') + """, + ) x_gamess_atom_x_coord = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x coordinate for the atoms - ''') + """, + ) x_gamess_atom_y_coord = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y coordinate for the atoms - ''') + """, + ) x_gamess_atom_z_coord = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z coordinate for the atoms - ''') + """, + ) class x_gamess_section_mcscf(MSection): - ''' + """ Multiconfigurational SCF energies. - ''' + """ m_def = Section(validate=False) x_gamess_energy_mcscf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Value of the MCSCF total energy, normally CASSCF, during the iterations. - ''') + """, + ) x_gamess_mcscf_active_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of MCSCF active electrons in the calculation. - ''') + """, + ) x_gamess_mcscf_active_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of MCSCF active orbitals in the calculation. - ''') + """, + ) x_gamess_mcscf_inactive_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of MCSCF inactive orbitals in the calculation. - ''') + """, + ) class x_gamess_section_moller_plesset(MSection): - ''' + """ Perturbative Moller-Plesset energies. - ''' + """ m_def = Section(validate=False) class x_gamess_section_mrpt2(MSection): - ''' + """ Multiference multiconfigurational energies at second order of perturbation theory. - ''' + """ m_def = Section(validate=False) x_gamess_mrpt2_active_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of active electrons in MRPT2 calculation. - ''') + """, + ) x_gamess_mrpt2_active_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of active orbitals in MRPT2 calculation. - ''') + """, + ) x_gamess_mrpt2_doubly_occupied_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of doubly occupied orbitals in MRPT2 calculation. - ''') + """, + ) x_gamess_mrpt2_external_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of external orbitals in MRPT2 calculation. - ''') + """, + ) x_gamess_mrpt2_frozen_core_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of frozen core orbitals in MRPT2 calculation. - ''') + """, + ) x_gamess_mrpt2_frozen_virtual_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of frozen virtual orbitals in MRPT2 calculation. - ''') + """, + ) x_gamess_mrpt2_method_type = Quantity( type=str, shape=[], - description=''' + description=""" Determinant (MRPT2) or CSF (MC-QDPT) method for second-order perturbation theory calculation - ''') + """, + ) class x_gamess_section_scf_hf_method(MSection): - ''' + """ Section containing type of SCF method employed (RHF,UHF,ROHF or GVB). - ''' + """ m_def = Section(validate=False) x_gamess_scf_hf_method = Quantity( type=str, shape=[], - description=''' + description=""" Type of SCF method employed. - ''') + """, + ) class x_gamess_section_tddft(MSection): - ''' + """ Time-dependent DFT excitation energies and oscillator strengths. - ''' + """ m_def = Section(validate=False) x_gamess_tddft_excitation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Value of the excitation energies for time-dependent DFT excited states. - ''') + """, + ) x_gamess_tddft_oscillator_strength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of the oscillator strengths for time-dependent DFT excited states. - ''') + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - m_def = Section(validate=False, extends_base_section=True) x_gamess_alpha_eigenvalues_values = Quantity( type=str, shape=[], - description=''' + description=""" values of eigenenergies for alpha MOs - ''') + """, + ) x_gamess_beta_eigenvalues_values = Quantity( type=str, shape=[], - description=''' + description=""" values of eigenenergies for occupied beta MOs - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_gamess_atom_positions_initial = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - unit='meter', - description=''' + shape=["number_of_atoms", 3], + unit="meter", + description=""" Initial positions of all the atoms, in Cartesian coordinates. - ''') + """, + ) x_gamess_atom_x_coord_initial = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x coordinate for the atoms of the initial geometry - ''') + """, + ) x_gamess_atom_y_coord_initial = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y coordinate for the atoms of the initial geometry - ''') + """, + ) x_gamess_atom_z_coord_initial = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z coordinate for the atoms of the initial geometry - ''') + """, + ) x_gamess_number_of_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" number of electrons for system - ''') + """, + ) x_gamess_atomic_number = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" atomic number for atoms - ''') + """, + ) x_gamess_memory = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total memory for GAMESS job - ''') + """, + ) x_gamess_spin_target_multiplicity = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + 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. - ''') + """, + ) x_gamess_total_charge = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total charge of the system. - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_gamess_basis_set_diffsp = Quantity( type=str, shape=[], - description=''' + description=""" Include a set of SP diffuse functions on heavy atoms or not - ''') + """, + ) x_gamess_basis_set_diffs = Quantity( type=str, shape=[], - description=''' + description=""" Incluse a set of S diffuse functions on light atoms or not - ''') + """, + ) x_gamess_basis_set_gbasis = Quantity( type=str, shape=[], - description=''' + description=""" Gaussian basis set main name - ''') + """, + ) x_gamess_basis_set_igauss = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of main Gaussians - ''') + """, + ) x_gamess_basis_set_ndfunc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of polarization d function sets on heavy atoms - ''') + """, + ) x_gamess_basis_set_nffunc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of polarization f function sets on heavy atoms - ''') + """, + ) x_gamess_basis_set_npfunc = Quantity( type=str, shape=[], - description=''' + description=""" Number of polarization p function sets on light atoms - ''') + """, + ) x_gamess_basis_set_polar = Quantity( type=str, shape=[], - description=''' + description=""" Exponents of polarization functions - ''') + """, + ) x_gamess_cctype = Quantity( type=str, shape=[], - description=''' + description=""" Type of coupled cluster method employed - ''') + """, + ) x_gamess_cistep = Quantity( type=str, shape=[], - description=''' + description=""" Determinant or CSF method for multiconfigurational SCF calculation - ''') + """, + ) x_gamess_citype = Quantity( type=str, shape=[], - description=''' + description=""" Type of configuration interaction method employed - ''') + """, + ) x_gamess_comp_method = Quantity( type=str, shape=[], - description=''' + description=""" Control if the G3MP2 composite method has been defined - ''') + """, + ) x_gamess_mcscf_casscf = Quantity( type=str, shape=[], - description=''' + description=""" This indicates whether the multiconfigurational SCF calculation is a complete active space SCF calculation or not - ''') + """, + ) x_gamess_method = Quantity( type=str, shape=[], - description=''' + description=""" String identifying in an unique way the WF method used for the final wavefunctions. - ''') + """, + ) x_gamess_mplevel = Quantity( type=str, shape=[], - description=''' + description=""" Level of second-orden Moller-Plesset perturbation theory - ''') + """, + ) x_gamess_pptype = Quantity( type=str, shape=[], - description=''' + description=""" Name of the pseudopotential employed - ''') + """, + ) x_gamess_relatmethod = Quantity( type=str, shape=[], - description=''' + description=""" Type of relativistic method employed - ''') + """, + ) x_gamess_scf_method = Quantity( type=str, shape=[], - description=''' + description=""" String identifying in an unique way the SCF method used in the calculation. - ''') + """, + ) x_gamess_scf_type = Quantity( type=str, shape=[], - description=''' + description=""" String identifying in an unique way the SCF method used in the calculation. - ''') + """, + ) x_gamess_tddfttype = Quantity( type=str, shape=[], - description=''' + description=""" Type of time-dependent DFT calculation - ''') + """, + ) x_gamess_vbtype = Quantity( type=str, shape=[], - description=''' + description=""" Type of valence bond method employed - ''') + """, + ) x_gamess_xc = Quantity( type=str, shape=[], - description=''' + description=""" String identifying in an unique way the XC method used for the final wavefunctions. - ''') + """, + ) x_gamess_control_options = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_gamess_system_options = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_gamess_basis_options = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_gamess_section_elstruc_method = SubSection( - sub_section=SectionProxy('x_gamess_section_elstruc_method'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_elstruc_method"), repeats=True + ) x_gamess_section_scf_hf_method = SubSection( - sub_section=SectionProxy('x_gamess_section_scf_hf_method'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_scf_hf_method"), repeats=True + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_gamess_program_execution_date = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_gamess_program_implementation = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_gamess_section_geometry_optimization_info = SubSection( - sub_section=SectionProxy('x_gamess_section_geometry_optimization_info'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_geometry_optimization_info"), + repeats=True, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_gamess_energy_scf = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Final value of the total electronic energy calculated with the method described in XC_method. - ''') + """, + ) x_gamess_energy_total_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Value of the total electronic energy calculated with the method described in XC_method during each self-consistent field (SCF) iteration. - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_gamess_section_atom_forces = SubSection( - sub_section=SectionProxy('x_gamess_section_atom_forces'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_atom_forces"), repeats=True + ) x_gamess_section_ci = SubSection( - sub_section=SectionProxy('x_gamess_section_ci'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_ci"), repeats=True + ) x_gamess_section_coupled_cluster = SubSection( - sub_section=SectionProxy('x_gamess_section_coupled_cluster'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_coupled_cluster"), repeats=True + ) x_gamess_section_excited_states = SubSection( - sub_section=SectionProxy('x_gamess_section_excited_states'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_excited_states"), repeats=True + ) x_gamess_section_frequencies = SubSection( - sub_section=SectionProxy('x_gamess_section_frequencies'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_frequencies"), repeats=True + ) x_gamess_section_geometry = SubSection( - sub_section=SectionProxy('x_gamess_section_geometry'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_geometry"), repeats=True + ) x_gamess_section_mcscf = SubSection( - sub_section=SectionProxy('x_gamess_section_mcscf'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_mcscf"), repeats=True + ) x_gamess_section_moller_plesset = SubSection( - sub_section=SectionProxy('x_gamess_section_moller_plesset'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_moller_plesset"), repeats=True + ) x_gamess_section_mrpt2 = SubSection( - sub_section=SectionProxy('x_gamess_section_mrpt2'), - repeats=True) + sub_section=SectionProxy("x_gamess_section_mrpt2"), repeats=True + ) class Energy(runschema.calculation.Energy): - m_def = Section(validate=False, extends_base_section=True) x_gamess_virial_ratio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_gamess_wavefunction_normalization = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_gamess_one_electron = SubSection( sub_section=runschema.calculation.EnergyEntry.m_def, - description=''' - ''') + description=""" + """, + ) x_gamess_two_electron = SubSection( sub_section=runschema.calculation.EnergyEntry.m_def, - description=''' - ''') + description=""" + """, + ) diff --git a/electronicparsers/gamess/parser.py b/electronicparsers/gamess/parser.py index ba342ff2..24ac4b6a 100644 --- a/electronicparsers/gamess/parser.py +++ b/electronicparsers/gamess/parser.py @@ -26,19 +26,34 @@ from runschema.run import Run, Program from runschema.method import ( - Method, AtomParameters, DFT, XCFunctional, Functional, Electronic, BasisSet, - BasisSetAtomCentered, BasisSetContainer) -from runschema.system import ( - System, Atoms + Method, + AtomParameters, + DFT, + XCFunctional, + Functional, + Electronic, + BasisSet, + BasisSetAtomCentered, + BasisSetContainer, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, Forces, ForcesEntry, BandEnergies, - Charges, ChargesValue, Multipoles, MultipolesEntry + Calculation, + ScfIteration, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + BandEnergies, + Charges, + ChargesValue, + Multipoles, + MultipolesEntry, ) -re_n = r'[\n\r]' -re_f = r'[-+]?\d+\.\d*(?:[Ee][-+]\d+)?' +re_n = r"[\n\r]" +re_f = r"[-+]?\d+\.\d*(?:[Ee][-+]\d+)?" class OutParser(TextParser): @@ -46,7 +61,7 @@ def __init__(self): super().__init__() def init_quantities(self): - key_val_quantity = Quantity('key_val', r'([A-Z]+) *= *(\S+)', repeats=True) + key_val_quantity = Quantity("key_val", r"([A-Z]+) *= *(\S+)", repeats=True) def to_gradient(val_in): gradient = [] @@ -66,490 +81,535 @@ def to_charges(val_in): calc_quantities = [ Quantity( - 'scf', - r'(SCF CALCULATION[\s\S]+?)END OF .+? CALCULATION', - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - rf'ITER.+?TOTAL ENERGY.+([\s\S]+?){re_n} *{re_n}', - sub_parser=TextParser(quantities=[ - Quantity( - 'iter', - rf'({re_f} +{re_f}).+', - dtype=np.dtype(np.float64), repeats=True - ) - ]) - ), - Quantity( - 'energy_total', - rf'FINAL .+? ENERGY IS +({re_f})', unit=ureg.hartree - ), - Quantity( - 'converged', - r'(DENSITY CONVERGED)', str_operation=lambda x: True - ), - Quantity( - 'eigenvectors', - r'EIGENVECTORS\s+\-+([\s\S]+?)(?:\.{6}|\-{10})', - sub_parser=TextParser(quantities=[ - Quantity( - 'eigenvalues', - rf'{re_n} +({re_f}.+)', str_operation=lambda x: x.split(), repeats=True)]) - ), - - ]) + "scf", + r"(SCF CALCULATION[\s\S]+?)END OF .+? CALCULATION", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"ITER.+?TOTAL ENERGY.+([\s\S]+?){re_n} *{re_n}", + sub_parser=TextParser( + quantities=[ + Quantity( + "iter", + rf"({re_f} +{re_f}).+", + dtype=np.dtype(np.float64), + repeats=True, + ) + ] + ), + ), + Quantity( + "energy_total", + rf"FINAL .+? ENERGY IS +({re_f})", + unit=ureg.hartree, + ), + Quantity( + "converged", + r"(DENSITY CONVERGED)", + str_operation=lambda x: True, + ), + Quantity( + "eigenvectors", + r"EIGENVECTORS\s+\-+([\s\S]+?)(?:\.{6}|\-{10})", + sub_parser=TextParser( + quantities=[ + Quantity( + "eigenvalues", + rf"{re_n} +({re_f}.+)", + str_operation=lambda x: x.split(), + repeats=True, + ) + ] + ), + ), + ] + ), ), - Quantity('time_physical', rf'TOTAL WALL CLOCK TIME= *({re_f}) SECONDS', repeats=True), Quantity( - 'coordinates', - rf'((?:COORDINATES OF ALL ATOMS ARE \(ANGS\)\s+ATOM +|ATOM +ATOMIC +COORDINATES \(BOHR\)\s+)' - rf'CHARGE +X +Y +Z\s+\-*[\s\S]+?)INTERNUCLEAR', - sub_parser=TextParser(quantities=[ - Quantity('unit', r'\((\S+)\)'), - Quantity('label_charge', rf'([A-Z]+[a-z]*\d*) +({re_f})', repeats=True), - Quantity('position', rf'({re_f} +{re_f} +{re_f}) *{re_n}', dtype=np.dtype(np.float64), repeats=True) - ]) + "time_physical", + rf"TOTAL WALL CLOCK TIME= *({re_f}) SECONDS", + repeats=True, ), Quantity( - 'gradient', - r'ATOM +ZNUC + DE/DX +DE/DY +DE/DZ\s+\-+([\s\S]+?)MAXIMUM', - str_operation=to_gradient + "coordinates", + rf"((?:COORDINATES OF ALL ATOMS ARE \(ANGS\)\s+ATOM +|ATOM +ATOMIC +COORDINATES \(BOHR\)\s+)" + rf"CHARGE +X +Y +Z\s+\-*[\s\S]+?)INTERNUCLEAR", + sub_parser=TextParser( + quantities=[ + Quantity("unit", r"\((\S+)\)"), + Quantity( + "label_charge", + rf"([A-Z]+[a-z]*\d*) +({re_f})", + repeats=True, + ), + Quantity( + "position", + rf"({re_f} +{re_f} +{re_f}) *{re_n}", + dtype=np.dtype(np.float64), + repeats=True, + ), + ] + ), ), Quantity( - 'properties', - r'(?:properties for the|PROPERTY VALUES FOR THE|PROPERTIES FOR THE)([\s\S]+?)END OF PROPERTY EVALUATION', - sub_parser=TextParser(quantities=[ - Quantity( - 'energy_components', - r'ENERGY COMPONENTS\s+\-+([\s\S]+?VIRIAL RATIO.+)', - str_operation=lambda x: [v.strip().split('=') for v in x.strip().splitlines() if '=' in v] - ), - Quantity( - 'population_analysis', - r'MULLIKEN AND LOWDIN POPULATION ANALYSES\s+\-+([\s\S]+?(?:\-{30}|\Z))', - sub_parser=TextParser(quantities=[ - Quantity( - 'atomic', - rf'TOTAL MULLIKEN AND LOWDIN ATOMIC POPULATIONS\s+' - rf'ATOM +MULL.POP\. +CHARGE +LOW\.POP\. +CHARGE\s+([\s\S]+?)(?:{re_n} +[A-Z]|\Z)', - str_operation=to_charges - ), - Quantity( - 'spherical_harmonics', - rf'SPHERICAL HARMONIC POPULATIONS\s+ATOM.+\s+([\s\S]+?)(?:{re_n} +[A-Z]|\Z)', - str_operation=to_charges, repeats=True - ), - Quantity( - 'atomic_orbitals', - r'POPULATIONS IN EACH AO +\-+\s+MULLIKEN +LOWDIN\s+([\s\S]+?)\-\-\-\-\-', - str_operation=to_charges - ), - Quantity( - 'spins', - r'ATOMIC SPIN POPULATION \(ALPHA MINUS BETA\)\s+ATOM.+\s+([\s\S]+?)\-\-\-\-\-', - str_operation=to_charges - ) - ]) - ), - Quantity( - 'electrostatic_moments', - r'ELECTROSTATIC MOMENTS\s+\-+([\s\S]+?)\.\.\.\.\.\.', - sub_parser=TextParser(quantities=[ - Quantity( - 'dipole', - r'(POINT +\d+[\s\S]+?DEBYE.+\s+.+)', - repeats=True, - sub_parser=TextParser(quantities=[ + "gradient", + r"ATOM +ZNUC + DE/DX +DE/DY +DE/DZ\s+\-+([\s\S]+?)MAXIMUM", + str_operation=to_gradient, + ), + Quantity( + "properties", + r"(?:properties for the|PROPERTY VALUES FOR THE|PROPERTIES FOR THE)([\s\S]+?)END OF PROPERTY EVALUATION", + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_components", + r"ENERGY COMPONENTS\s+\-+([\s\S]+?VIRIAL RATIO.+)", + str_operation=lambda x: [ + v.strip().split("=") + for v in x.strip().splitlines() + if "=" in v + ], + ), + Quantity( + "population_analysis", + r"MULLIKEN AND LOWDIN POPULATION ANALYSES\s+\-+([\s\S]+?(?:\-{30}|\Z))", + sub_parser=TextParser( + quantities=[ Quantity( - 'origin', - rf'CHARGE\s+({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) + "atomic", + rf"TOTAL MULLIKEN AND LOWDIN ATOMIC POPULATIONS\s+" + rf"ATOM +MULL.POP\. +CHARGE +LOW\.POP\. +CHARGE\s+([\s\S]+?)(?:{re_n} +[A-Z]|\Z)", + str_operation=to_charges, ), Quantity( - 'value', - rf'DEBYE\)\s+({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) + "spherical_harmonics", + rf"SPHERICAL HARMONIC POPULATIONS\s+ATOM.+\s+([\s\S]+?)(?:{re_n} +[A-Z]|\Z)", + str_operation=to_charges, + repeats=True, + ), + Quantity( + "atomic_orbitals", + r"POPULATIONS IN EACH AO +\-+\s+MULLIKEN +LOWDIN\s+([\s\S]+?)\-\-\-\-\-", + str_operation=to_charges, + ), + Quantity( + "spins", + r"ATOMIC SPIN POPULATION \(ALPHA MINUS BETA\)\s+ATOM.+\s+([\s\S]+?)\-\-\-\-\-", + str_operation=to_charges, + ), + ] + ), + ), + Quantity( + "electrostatic_moments", + r"ELECTROSTATIC MOMENTS\s+\-+([\s\S]+?)\.\.\.\.\.\.", + sub_parser=TextParser( + quantities=[ + Quantity( + "dipole", + r"(POINT +\d+[\s\S]+?DEBYE.+\s+.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "origin", + rf"CHARGE\s+({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "value", + rf"DEBYE\)\s+({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + ] + ), ) - ]) - ) - ]) - ) - ]) - ) + ] + ), + ), + ] + ), + ), ] self._quantities = [ Quantity( - 'program_version', - r'GAMESS VERSION *\= *(.+?) *\*|(Firefly version [\d\.]+)', - str_operation=lambda x: x.strip() + "program_version", + r"GAMESS VERSION *\= *(.+?) *\*|(Firefly version [\d\.]+)", + str_operation=lambda x: x.strip(), ), Quantity( - 'x_gamess_program_implementation', - r'\*{16} (\d+[A-Z ]+) +\*{16}', - str_operation=lambda x: x.strip() + "x_gamess_program_implementation", + r"\*{16} (\d+[A-Z ]+) +\*{16}", + str_operation=lambda x: x.strip(), ), Quantity( - 'x_gamess_program_execution_date', - r'EXECUTION OF GAMESS BEGUN ([\w\: ]+)', - str_operation=lambda x: x.strip() + "x_gamess_program_execution_date", + r"EXECUTION OF GAMESS BEGUN ([\w\: ]+)", + str_operation=lambda x: x.strip(), ), Quantity( - 'x_gamess_memory', - r'(\d+) WORDS OF MEMORY AVAILABLE', dtype=np.int32 + "x_gamess_memory", r"(\d+) WORDS OF MEMORY AVAILABLE", dtype=np.int32 ), Quantity( - 'basis_options', - rf'BASIS OPTIONS\s+\-+([\s\S]+?){re_n} *{re_n} *{re_n}', - sub_parser=TextParser(quantities=[key_val_quantity]) + "basis_options", + rf"BASIS OPTIONS\s+\-+([\s\S]+?){re_n} *{re_n} *{re_n}", + sub_parser=TextParser(quantities=[key_val_quantity]), ), Quantity( - 'control_options', - rf'CONTRL OPTIONS\s+\-+([\s\S]+?)\$', - sub_parser=TextParser(quantities=[key_val_quantity]) + "control_options", + rf"CONTRL OPTIONS\s+\-+([\s\S]+?)\$", + sub_parser=TextParser(quantities=[key_val_quantity]), ), Quantity( - 'system_options', - rf'SYSTEM OPTIONS\s+\-+([\s\S]+?)\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-', - sub_parser=TextParser(quantities=[key_val_quantity]) + "system_options", + rf"SYSTEM OPTIONS\s+\-+([\s\S]+?)\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-", + sub_parser=TextParser(quantities=[key_val_quantity]), ), Quantity( - 'parameters', - rf'(NUMBER OF BASIS SET SHELLS += +\d+[\s\S]+?){re_n} *{re_n}', - str_operation=lambda x: [v.strip().split('=') for v in x.strip().splitlines()] + "parameters", + rf"(NUMBER OF BASIS SET SHELLS += +\d+[\s\S]+?){re_n} *{re_n}", + str_operation=lambda x: [ + v.strip().split("=") for v in x.strip().splitlines() + ], ), Quantity( - 'geometry_opt', - r'GEOMETRY SEARCH POINT([\s\S]+?)(?:BEGINNING|END OF GEOMETRY SEARCH|\Z)', - repeats=True, sub_parser=TextParser(quantities=calc_quantities) - ) + "geometry_opt", + r"GEOMETRY SEARCH POINT([\s\S]+?)(?:BEGINNING|END OF GEOMETRY SEARCH|\Z)", + repeats=True, + sub_parser=TextParser(quantities=calc_quantities), + ), ] + calc_quantities class GamessParser: def __init__(self): self._nspin = None - self._units = {'ANGS': ureg.angstrom, 'BOHR': ureg.bohr} + self._units = {"ANGS": ureg.angstrom, "BOHR": ureg.bohr} self._xc_map = { - 'SLATER': [{'name': 'LDA_X'}], - 'VWN': [{'name': 'LDA_C_VWN_5'}], - 'VWN3': [{'name': 'LDA_C_VWN_3'}], - 'VWN1RPA': [{'name': 'LDA_C_VWN1RPA'}], - 'BECKE': [{'name': 'GGA_X_B88'}], - 'OPTX': [{'name': 'GGA_X_OPTX'}], - 'GILL': [{'name': 'GGA_X_G96'}], - 'PW91X': [{'name': 'GGA_X_PW91'}], - 'PBEX': [{'name': 'GGA_X_PBE'}], - 'PZ81': [{'name': 'GGA_C_PZ'}], - 'P86': [{'name': 'GGA_C_P86'}], - 'LYP': [{'name': 'GGA_C_LYP'}], - 'PW91C': [{'name': 'GGA_C_PW91'}], - 'PBEC': [{'name': 'GGA_C_PBE'}], - 'OP': [{'name': 'GGA_C_OP'}], - 'SVWN': [{'name': 'LDA_C_VWN_5'}, {'name': 'LDA_X'}], - 'SVWN1RPA': [{'name': 'LDA_C_VWN1RPA'}, {'name': 'LDA_X'}], - 'SVWN3': [{'name': 'LDA_C_VWN_3'}, {'name': 'LDA_X'}], - 'SPZ81': [{'name': 'GGA_C_PZ'}, {'name': 'LDA_X'}], - 'SP86': [{'name': 'GGA_C_P86'}, {'name': 'LDA_X'}], - 'SLYP': [{'name': 'GGA_C_LYP'}, {'name': 'LDA_X'}], - 'SPW91': [{'name': 'GGA_C_PW91'}, {'name': 'LDA_X'}], - 'SPBE': [{'name': 'GGA_C_PBE'}, {'name': 'LDA_X'}], - 'SOP': [{'name': 'GGA_C_OP'}, {'name': 'LDA_X'}], - 'BVWN': [{'name': 'LDA_C_VWN_5'}, {'name': 'LDA_X_B88'}], - 'BVWN1RPA': [{'name': 'LDA_C_VWN1RPA'}, {'name': 'LDA_X_B88'}], - 'BVWN3': [{'name': 'LDA_C_VWN_3'}, {'name': 'LDA_X_B88'}], - 'BPZ81': [{'name': 'GGA_C_PZ'}, {'name': 'LDA_X_B88'}], - 'BP86': [{'name': 'GGA_C_P86'}, {'name': 'LDA_X_B88'}], - 'BLYP': [{'name': 'GGA_C_LYP'}, {'name': 'LDA_X_B88'}], - 'BPW91': [{'name': 'GGA_C_PW91'}, {'name': 'LDA_X_B88'}], - 'BPBE': [{'name': 'GGA_C_PBE'}, {'name': 'LDA_X_B88'}], - 'BOP': [{'name': 'GGA_C_OP'}, {'name': 'LDA_X_B88'}], - 'GVWN': [{'name': 'LDA_C_VWN_5'}, {'name': 'GGA_X_G96'}], - 'GVWN1RPA': [{'name': 'LDA_C_VWN1RPA'}, {'name': 'GGA_X_G96'}], - 'GVWN3': [{'name': 'LDA_C_VWN_3'}, {'name': 'GGA_X_G96'}], - 'GPZ81': [{'name': 'GGA_C_PZ'}, {'name': 'GGA_X_G96'}], - 'GP86': [{'name': 'GGA_C_P86'}, {'name': 'GGA_X_G96'}], - 'GLYP': [{'name': 'GGA_C_LYP'}, {'name': 'GGA_X_G96'}], - 'GPW91': [{'name': 'GGA_C_PW91'}, {'name': 'GGA_X_G96'}], - 'GPBE': [{'name': 'GGA_C_PBE'}, {'name': 'GGA_X_G96'}], - 'GOP': [{'name': 'GGA_C_OP'}, {'name': 'GGA_X_G96'}], - 'OVWN': [{'name': 'LDA_C_VWN_5'}, {'name': 'GGA_X_OPTX'}], - 'OVWN1RPA': [{'name': 'LDA_C_VWN1RPA'}, {'name': 'GGA_X_OPTX'}], - 'OVWN3': [{'name': 'LDA_C_VWN_3'}, {'name': 'GGA_X_OPTX'}], - 'OPZ81': [{'name': 'GGA_C_PZ'}, {'name': 'GGA_X_OPTX'}], - 'OP86': [{'name': 'GGA_C_P86'}, {'name': 'GGA_X_OPTX'}], - 'OLYP': [{'name': 'GGA_C_LYP'}, {'name': 'GGA_X_OPTX'}], - 'OPW91': [{'name': 'GGA_C_PW91'}, {'name': 'GGA_X_OPTX'}], - 'OPBE': [{'name': 'GGA_C_PBE'}, {'name': 'GGA_X_OPTX'}], - 'OOP': [{'name': 'GGA_C_OP'}, {'name': 'GGA_X_OPTX'}], - 'PW91VWN': [{'name': 'LDA_C_VWN_5'}, {'name': 'GGA_X_PW91'}], - 'PW91VWN1RPA': [{'name': 'LDA_C_VWN1RPA'}, {'name': 'GGA_X_PW91'}], - 'PW91VWN3': [{'name': 'LDA_C_VWN_3'}, {'name': 'GGA_X_PW91'}], - 'PW91PZ81': [{'name': 'GGA_C_PZ'}, {'name': 'GGA_X_PW91'}], - 'PW91P86': [{'name': 'GGA_C_P86'}, {'name': 'GGA_X_PW91'}], - 'PW91LYP': [{'name': 'GGA_C_LYP'}, {'name': 'GGA_X_PW91'}], - 'PW91': [{'name': 'GGA_C_PW91'}, {'name': 'GGA_X_PW91'}], - 'PW91PBE': [{'name': 'GGA_C_PBE'}, {'name': 'GGA_X_PW91'}], - 'PW91OP': [{'name': 'GGA_C_OP'}, {'name': 'GGA_X_PW91'}], - 'PBEVWN': [{'name': 'LDA_C_VWN_5'}, {'name': 'GGA_X_PBE'}], - 'PBEVWN1RPA': [{'name': 'LDA_C_VWN1RPA'}, {'name': 'GGA_X_PBE'}], - 'PBEVWN3': [{'name': 'LDA_C_VWN_3'}, {'name': 'GGA_X_PBE'}], - 'PBEPZ81': [{'name': 'GGA_C_PZ'}, {'name': 'GGA_X_PBE'}], - 'PBEP86': [{'name': 'GGA_C_P86'}, {'name': 'GGA_X_PBE'}], - 'PBELYP': [{'name': 'GGA_C_LYP'}, {'name': 'GGA_X_PBE'}], - 'PBEPW91': [{'name': 'GGA_C_PW91'}, {'name': 'GGA_X_PBE'}], - 'PBE': [{'name': 'GGA_C_PBE'}, {'name': 'GGA_X_PBE'}], - 'PBEOP': [{'name': 'GGA_C_OP'}, {'name': 'GGA_X_PBE'}], - 'EDF1': [{'name': 'GGA_XC_EDF1'}], - 'REVPBE': [{'name': 'GGA_XC_REVPBE'}], - 'RPBE': [{'name': 'GGA_XC_RPBE'}], - 'PBESOL': [{'name': 'GGA_XC_PBESOL'}], - 'HCTH93': [{'name': 'GGA_XC_HCTH_93'}], - 'HCTH147': [{'name': 'GGA_XC_HCTH_147'}], - 'HCTH407': [{'name': 'GGA_XC_HCTH_407'}], - 'SOGGA': [{'name': 'GGA_XC_SOGGA'}], - 'SOGGA11': [{'name': 'GGA_XC_SOGGA11'}], - 'MOHLYP': [{'name': 'GGA_XC_MOHLYP'}], - 'B97-D': [{'name': 'GGA_XC_B97D'}], - 'BHHLYP': [{'name': 'HYB_GGA_XC_BHANDHLYP'}], - 'B3PW91': [{'name': 'HYB_GGA_XC_B3PW91'}], - 'B3LYP': [{'name': 'HYB_GGA_XC_B3LYP'}], - 'B3LYPV1R': [{'name': 'HYB_GGA_XC_B3LYPVWN1RPA'}], - 'B3LYPV3': [{'name': 'HYB_GGA_XC_B3LYPVWN3'}], - 'B3P86': [{'name': 'HYB_GGA_XC_B3P86'}], - 'B3P86V1R': [{'name': 'HYB_GGA_XC_B3P86VWN1RPA'}], - 'B3P86V5': [{'name': 'HYB_GGA_XC_B3P86VWN5'}], - 'B97': [{'name': 'HYB_GGA_XC_B97'}], - 'B97-1': [{'name': 'HYB_GGA_XC_B971'}], - 'B97-2': [{'name': 'HYB_GGA_XC_B972'}], - 'B97-3': [{'name': 'HYB_GGA_XC_B973'}], - 'B97-K': [{'name': 'HYB_GGA_XC_B97K'}], - 'B98': [{'name': 'HYB_GGA_XC_B98'}], - 'PBE0': [{'name': 'HYB_GGA_XC_PBEH'}], - 'X3LYP': [{'name': 'HYB_GGA_XC_X3LYP'}], - 'SOGGA11X': [{'name': 'HYB_GGA_XC_SOGGA11X'}], - 'CAMB3LYP': [{'name': 'CAM-B3LYP'}], - 'WB97': [{'name': 'WB97'}], - 'WB97X': [{'name': 'WB97X'}], - 'WB97X-D': [{'name': 'WB97XD'}], - 'B2-PLYP': [{'name': 'B2PLYP'}], - 'B2K-PLYP': [{'name': 'B2KPLYP'}], - 'B2T-PLYP': [{'name': 'B2TPLYP'}], - 'B2GP-PLYP': [{'name': 'B2GPPLYP'}], - 'WB97X-2': [{'name': 'WB97X2'}], - 'WB97X-2L': [{'name': 'WB97X2L'}], - 'VS98': [{'name': 'MGGA_XC_VSXC'}], - 'PKZB': [{'name': 'MGGA_XC_PKZB'}], - 'THCTH': [{'name': 'MGGA_XC_TAU_HCTH'}], - 'THCTHHYB': [{'name': 'MGGA_XC_TAU_HCTHHYB'}], - 'BMK': [{'name': 'MGGA_XC_BMK'}], - 'TPSS': [{'name': 'MGGA_XC_TPSS'}], - 'TPSSH': [{'name': 'MGGA_XC_TPSSHYB'}], - 'TPSSM': [{'name': 'MGGA_XC_TPSSMOD'}], - 'REVTPSS': [{'name': 'MGGA_XC_REVISEDTPSS'}], - 'DLDF': [{'name': 'MGGA_XC_DLDF'}], - 'M05': [{'name': 'HYB_MGGA_XC_M05'}], - 'M05-2X': [{'name': 'HYB_MGGA_XC_M05_2X'}], - 'M06': [{'name': 'MGGA_C_M06'}, {'name': 'HYB_MGGA_X_M06'}], - 'M06-L': [{'name': 'MGGA_C_M06_L'}, {'name': 'MGGA_X_M06_L'}], - 'M06-2X': [{'name': 'MGGA_C_M06_2X'}, {'name': 'HYB_MGGA_X_M06_2X'}], - 'M06-HF': [{'name': 'MGGA_C_M06_HF'}, {'name': 'HYB_MGGA_X_M06_HF'}], - 'M08-HX': [{'name': 'MGGA_C_M08_HX'}, {'name': 'HYB_MGGA_X_M08_HX'}], - 'M08-SO': [{'name': 'MGGA_C_M08_SO'}, {'name': 'HYB_MGGA_X_M08_SO'}], - 'M11-L': [{'name': 'MGGA_C_M11_L'}, {'name': 'MGGA_X_M11_L'}], - 'M11': [{'name': 'MGGA_C_M11_L'}, {'name': 'MGGA_X_M11'}], - 'RHF': [{'name': 'RHF_X'}], - 'UHF': [{'name': 'UHF_X'}], - 'ROHF': [{'name': 'ROHF_X'}], - 'LCBOPLRD': [{'name': 'HYB_GGA_XC_HSE03'}], - 'XALPHA': [{'name': 'XALPHA_X_GRIDFREE'}], - 'DEPRISTO': [{'name': 'DEPRISTO_X_GRIDFREE'}], - 'CAMA': [{'name': 'CAMA_X_GRIDFREE'}], - 'HALF': [{'name': 'HYB_GGA_XC_HALF_GRIDFREE'}], + "SLATER": [{"name": "LDA_X"}], + "VWN": [{"name": "LDA_C_VWN_5"}], + "VWN3": [{"name": "LDA_C_VWN_3"}], + "VWN1RPA": [{"name": "LDA_C_VWN1RPA"}], + "BECKE": [{"name": "GGA_X_B88"}], + "OPTX": [{"name": "GGA_X_OPTX"}], + "GILL": [{"name": "GGA_X_G96"}], + "PW91X": [{"name": "GGA_X_PW91"}], + "PBEX": [{"name": "GGA_X_PBE"}], + "PZ81": [{"name": "GGA_C_PZ"}], + "P86": [{"name": "GGA_C_P86"}], + "LYP": [{"name": "GGA_C_LYP"}], + "PW91C": [{"name": "GGA_C_PW91"}], + "PBEC": [{"name": "GGA_C_PBE"}], + "OP": [{"name": "GGA_C_OP"}], + "SVWN": [{"name": "LDA_C_VWN_5"}, {"name": "LDA_X"}], + "SVWN1RPA": [{"name": "LDA_C_VWN1RPA"}, {"name": "LDA_X"}], + "SVWN3": [{"name": "LDA_C_VWN_3"}, {"name": "LDA_X"}], + "SPZ81": [{"name": "GGA_C_PZ"}, {"name": "LDA_X"}], + "SP86": [{"name": "GGA_C_P86"}, {"name": "LDA_X"}], + "SLYP": [{"name": "GGA_C_LYP"}, {"name": "LDA_X"}], + "SPW91": [{"name": "GGA_C_PW91"}, {"name": "LDA_X"}], + "SPBE": [{"name": "GGA_C_PBE"}, {"name": "LDA_X"}], + "SOP": [{"name": "GGA_C_OP"}, {"name": "LDA_X"}], + "BVWN": [{"name": "LDA_C_VWN_5"}, {"name": "LDA_X_B88"}], + "BVWN1RPA": [{"name": "LDA_C_VWN1RPA"}, {"name": "LDA_X_B88"}], + "BVWN3": [{"name": "LDA_C_VWN_3"}, {"name": "LDA_X_B88"}], + "BPZ81": [{"name": "GGA_C_PZ"}, {"name": "LDA_X_B88"}], + "BP86": [{"name": "GGA_C_P86"}, {"name": "LDA_X_B88"}], + "BLYP": [{"name": "GGA_C_LYP"}, {"name": "LDA_X_B88"}], + "BPW91": [{"name": "GGA_C_PW91"}, {"name": "LDA_X_B88"}], + "BPBE": [{"name": "GGA_C_PBE"}, {"name": "LDA_X_B88"}], + "BOP": [{"name": "GGA_C_OP"}, {"name": "LDA_X_B88"}], + "GVWN": [{"name": "LDA_C_VWN_5"}, {"name": "GGA_X_G96"}], + "GVWN1RPA": [{"name": "LDA_C_VWN1RPA"}, {"name": "GGA_X_G96"}], + "GVWN3": [{"name": "LDA_C_VWN_3"}, {"name": "GGA_X_G96"}], + "GPZ81": [{"name": "GGA_C_PZ"}, {"name": "GGA_X_G96"}], + "GP86": [{"name": "GGA_C_P86"}, {"name": "GGA_X_G96"}], + "GLYP": [{"name": "GGA_C_LYP"}, {"name": "GGA_X_G96"}], + "GPW91": [{"name": "GGA_C_PW91"}, {"name": "GGA_X_G96"}], + "GPBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_G96"}], + "GOP": [{"name": "GGA_C_OP"}, {"name": "GGA_X_G96"}], + "OVWN": [{"name": "LDA_C_VWN_5"}, {"name": "GGA_X_OPTX"}], + "OVWN1RPA": [{"name": "LDA_C_VWN1RPA"}, {"name": "GGA_X_OPTX"}], + "OVWN3": [{"name": "LDA_C_VWN_3"}, {"name": "GGA_X_OPTX"}], + "OPZ81": [{"name": "GGA_C_PZ"}, {"name": "GGA_X_OPTX"}], + "OP86": [{"name": "GGA_C_P86"}, {"name": "GGA_X_OPTX"}], + "OLYP": [{"name": "GGA_C_LYP"}, {"name": "GGA_X_OPTX"}], + "OPW91": [{"name": "GGA_C_PW91"}, {"name": "GGA_X_OPTX"}], + "OPBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_OPTX"}], + "OOP": [{"name": "GGA_C_OP"}, {"name": "GGA_X_OPTX"}], + "PW91VWN": [{"name": "LDA_C_VWN_5"}, {"name": "GGA_X_PW91"}], + "PW91VWN1RPA": [{"name": "LDA_C_VWN1RPA"}, {"name": "GGA_X_PW91"}], + "PW91VWN3": [{"name": "LDA_C_VWN_3"}, {"name": "GGA_X_PW91"}], + "PW91PZ81": [{"name": "GGA_C_PZ"}, {"name": "GGA_X_PW91"}], + "PW91P86": [{"name": "GGA_C_P86"}, {"name": "GGA_X_PW91"}], + "PW91LYP": [{"name": "GGA_C_LYP"}, {"name": "GGA_X_PW91"}], + "PW91": [{"name": "GGA_C_PW91"}, {"name": "GGA_X_PW91"}], + "PW91PBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_PW91"}], + "PW91OP": [{"name": "GGA_C_OP"}, {"name": "GGA_X_PW91"}], + "PBEVWN": [{"name": "LDA_C_VWN_5"}, {"name": "GGA_X_PBE"}], + "PBEVWN1RPA": [{"name": "LDA_C_VWN1RPA"}, {"name": "GGA_X_PBE"}], + "PBEVWN3": [{"name": "LDA_C_VWN_3"}, {"name": "GGA_X_PBE"}], + "PBEPZ81": [{"name": "GGA_C_PZ"}, {"name": "GGA_X_PBE"}], + "PBEP86": [{"name": "GGA_C_P86"}, {"name": "GGA_X_PBE"}], + "PBELYP": [{"name": "GGA_C_LYP"}, {"name": "GGA_X_PBE"}], + "PBEPW91": [{"name": "GGA_C_PW91"}, {"name": "GGA_X_PBE"}], + "PBE": [{"name": "GGA_C_PBE"}, {"name": "GGA_X_PBE"}], + "PBEOP": [{"name": "GGA_C_OP"}, {"name": "GGA_X_PBE"}], + "EDF1": [{"name": "GGA_XC_EDF1"}], + "REVPBE": [{"name": "GGA_XC_REVPBE"}], + "RPBE": [{"name": "GGA_XC_RPBE"}], + "PBESOL": [{"name": "GGA_XC_PBESOL"}], + "HCTH93": [{"name": "GGA_XC_HCTH_93"}], + "HCTH147": [{"name": "GGA_XC_HCTH_147"}], + "HCTH407": [{"name": "GGA_XC_HCTH_407"}], + "SOGGA": [{"name": "GGA_XC_SOGGA"}], + "SOGGA11": [{"name": "GGA_XC_SOGGA11"}], + "MOHLYP": [{"name": "GGA_XC_MOHLYP"}], + "B97-D": [{"name": "GGA_XC_B97D"}], + "BHHLYP": [{"name": "HYB_GGA_XC_BHANDHLYP"}], + "B3PW91": [{"name": "HYB_GGA_XC_B3PW91"}], + "B3LYP": [{"name": "HYB_GGA_XC_B3LYP"}], + "B3LYPV1R": [{"name": "HYB_GGA_XC_B3LYPVWN1RPA"}], + "B3LYPV3": [{"name": "HYB_GGA_XC_B3LYPVWN3"}], + "B3P86": [{"name": "HYB_GGA_XC_B3P86"}], + "B3P86V1R": [{"name": "HYB_GGA_XC_B3P86VWN1RPA"}], + "B3P86V5": [{"name": "HYB_GGA_XC_B3P86VWN5"}], + "B97": [{"name": "HYB_GGA_XC_B97"}], + "B97-1": [{"name": "HYB_GGA_XC_B971"}], + "B97-2": [{"name": "HYB_GGA_XC_B972"}], + "B97-3": [{"name": "HYB_GGA_XC_B973"}], + "B97-K": [{"name": "HYB_GGA_XC_B97K"}], + "B98": [{"name": "HYB_GGA_XC_B98"}], + "PBE0": [{"name": "HYB_GGA_XC_PBEH"}], + "X3LYP": [{"name": "HYB_GGA_XC_X3LYP"}], + "SOGGA11X": [{"name": "HYB_GGA_XC_SOGGA11X"}], + "CAMB3LYP": [{"name": "CAM-B3LYP"}], + "WB97": [{"name": "WB97"}], + "WB97X": [{"name": "WB97X"}], + "WB97X-D": [{"name": "WB97XD"}], + "B2-PLYP": [{"name": "B2PLYP"}], + "B2K-PLYP": [{"name": "B2KPLYP"}], + "B2T-PLYP": [{"name": "B2TPLYP"}], + "B2GP-PLYP": [{"name": "B2GPPLYP"}], + "WB97X-2": [{"name": "WB97X2"}], + "WB97X-2L": [{"name": "WB97X2L"}], + "VS98": [{"name": "MGGA_XC_VSXC"}], + "PKZB": [{"name": "MGGA_XC_PKZB"}], + "THCTH": [{"name": "MGGA_XC_TAU_HCTH"}], + "THCTHHYB": [{"name": "MGGA_XC_TAU_HCTHHYB"}], + "BMK": [{"name": "MGGA_XC_BMK"}], + "TPSS": [{"name": "MGGA_XC_TPSS"}], + "TPSSH": [{"name": "MGGA_XC_TPSSHYB"}], + "TPSSM": [{"name": "MGGA_XC_TPSSMOD"}], + "REVTPSS": [{"name": "MGGA_XC_REVISEDTPSS"}], + "DLDF": [{"name": "MGGA_XC_DLDF"}], + "M05": [{"name": "HYB_MGGA_XC_M05"}], + "M05-2X": [{"name": "HYB_MGGA_XC_M05_2X"}], + "M06": [{"name": "MGGA_C_M06"}, {"name": "HYB_MGGA_X_M06"}], + "M06-L": [{"name": "MGGA_C_M06_L"}, {"name": "MGGA_X_M06_L"}], + "M06-2X": [{"name": "MGGA_C_M06_2X"}, {"name": "HYB_MGGA_X_M06_2X"}], + "M06-HF": [{"name": "MGGA_C_M06_HF"}, {"name": "HYB_MGGA_X_M06_HF"}], + "M08-HX": [{"name": "MGGA_C_M08_HX"}, {"name": "HYB_MGGA_X_M08_HX"}], + "M08-SO": [{"name": "MGGA_C_M08_SO"}, {"name": "HYB_MGGA_X_M08_SO"}], + "M11-L": [{"name": "MGGA_C_M11_L"}, {"name": "MGGA_X_M11_L"}], + "M11": [{"name": "MGGA_C_M11_L"}, {"name": "MGGA_X_M11"}], + "RHF": [{"name": "RHF_X"}], + "UHF": [{"name": "UHF_X"}], + "ROHF": [{"name": "ROHF_X"}], + "LCBOPLRD": [{"name": "HYB_GGA_XC_HSE03"}], + "XALPHA": [{"name": "XALPHA_X_GRIDFREE"}], + "DEPRISTO": [{"name": "DEPRISTO_X_GRIDFREE"}], + "CAMA": [{"name": "CAMA_X_GRIDFREE"}], + "HALF": [{"name": "HYB_GGA_XC_HALF_GRIDFREE"}], # 'VWN': [{'name': 'LDA_C_VWN5_GRIDFREE'}], - 'PWLOC': [{'name': 'PWLOC_C_GRIDFREE'}], - 'BPWLOC': [{'name': 'PWLOC_C_GRIDFREE'}, {'name': 'GGA_X_B88_GRIDFREE'}], - 'CAMB': [{'name': 'GGA_C_CAMBRIDGE_GRIDFREE'}, {'name': 'GGA_X_CAMA_GRIDFREE'}], - 'XVWN': [{'name': 'LDA_C_VWN5_GRIDFREE'}, {'name': 'XALPHA_X_GRIDFREE'}], - 'XPWLOC': [{'name': 'GGA_C_PW91_GRIDFREE'}, {'name': 'XALPHA_X_GRIDFREE'}], - 'SPWLOC': [{'name': 'PWLOC_C_GRIDFREE'}, {'name': 'LDA_X_GRIDFREE'}], - 'WIGNER': [{'name': 'GGA_XC_WIGNER_GRIDFREE'}], - 'WS': [{'name': 'GGA_XC_WIGNER_GRIDFREE'}], - 'WIGEXP': [{'name': 'GGA_XC_WIGNER_GRIDFREE'}], - 'NONE': [{'name': 'NONE'}], + "PWLOC": [{"name": "PWLOC_C_GRIDFREE"}], + "BPWLOC": [{"name": "PWLOC_C_GRIDFREE"}, {"name": "GGA_X_B88_GRIDFREE"}], + "CAMB": [ + {"name": "GGA_C_CAMBRIDGE_GRIDFREE"}, + {"name": "GGA_X_CAMA_GRIDFREE"}, + ], + "XVWN": [{"name": "LDA_C_VWN5_GRIDFREE"}, {"name": "XALPHA_X_GRIDFREE"}], + "XPWLOC": [{"name": "GGA_C_PW91_GRIDFREE"}, {"name": "XALPHA_X_GRIDFREE"}], + "SPWLOC": [{"name": "PWLOC_C_GRIDFREE"}, {"name": "LDA_X_GRIDFREE"}], + "WIGNER": [{"name": "GGA_XC_WIGNER_GRIDFREE"}], + "WS": [{"name": "GGA_XC_WIGNER_GRIDFREE"}], + "WIGEXP": [{"name": "GGA_XC_WIGNER_GRIDFREE"}], + "NONE": [{"name": "NONE"}], } self._method_map = { - 'RHF': [{'name': 'RHF'}], - 'UHF': [{'name': 'UHF'}], - 'ROHF': [{'name': 'ROHF'}], - 'GVB': [{'name': 'GVB'}], - 'MCSCF': [{'name': 'MCSCF'}], - 'EXCITE': [{'name': 'TDDFT'}], - 'SPNFLP': [{'name': 'SF-TDDFT'}], - 'POL': [{'name': 'HYPERPOL'}], - 'VB2000': [{'name': 'VB'}], - 'CIS': [{'name': 'CIS'}], - 'SFCIS': [{'name': 'SF-CIS'}], - 'ALDET': [{'name': 'DET-MCSCF'}], - 'ORMAS': [{'name': 'ORMAS'}], - 'FSOCI': [{'name': 'SECONDORDER-CI'}], - 'GENCI': [{'name': 'GENERAL-CI'}], - 'LCCD': [{'name': 'L-CCSD'}], - 'CCD': [{'name': 'CCD'}], - 'CCSD': [{'name': 'CCSD'}], - 'CCSD(T)': [{'name': 'CCSD(T)'}], - 'R-CC': [{'name': 'R-CCSD(T)&R-CCSD[T]'}], - 'CR-CC': [{'name': 'CR-CCSD(T)&CR-CCSD[T]'}], - 'CR-CCL': [{'name': 'CR-CC(2,3)'}], - 'CCSD(TQ)': [{'name': 'CCSD(TQ)&R-CCSD(TQ)'}], - 'CR-CC(Q)': [{'name': 'CR-CCSD(TQ)'}], - 'EOM-CCSD': [{'name': 'EOM-CCSD'}], - 'CR-EOM': [{'name': 'CR-EOMCCSD(T)'}], - 'CR-EOML': [{'name': 'CR-EOMCC(2,3)'}], - 'IP-EOM2': [{'name': 'IP-EOMCCSD'}], - 'IP-EOM3A': [{'name': 'IP-EOMCCSDt'}], - 'EA-EOM2': [{'name': 'EA-EOMCCSD'}], - 'EA-EOM3A': [{'name': 'EA-EOMCCSDt'}], - 'IOTC': [{'name': 'SCALAR_RELATIVISTIC'}], - 'DK': [{'name': 'SCALAR_RELATIVISTIC'}], - 'RESC': [{'name': 'SCALAR_RELATIVISTIC'}], - 'NESC': [{'name': 'SCALAR_RELATIVISTIC'}], - 'SBKJC': [{'name': 'PSEUDO_SCALAR_RELATIVISTIC'}], - 'HW': [{'name': 'PSEUDO_SCALAR_RELATIVISTIC'}], - 'MCP': [{'name': 'PSEUDO_SCALAR_RELATIVISTIC'}], - 'TAMMD': [{'name': 'TAMM-DANCOFF'}], - 'DFTB': [{'name': 'DFTB'}], - 'MP2': [{'name': 'MP2'}], - 'RIMP2': [{'name': 'RESOLUTIONOFIDENTITY-MP2'}], - 'CPHF': [{'name': 'COUPLEDPERTURBED-HF'}], - 'G3MP2': [{'name': 'G3(MP2)'}], - 'G32CCSD': [{'name': 'G3(MP2,CCSD(T))'}], - 'G4MP2': [{'name': 'G4(MP2)'}], - 'G4MP2-6X': [{'name': 'G4(MP2)-6X'}], - 'CCCA-S4': [{'name': 'CCCA-S4'}], - 'CCCA-CCL': [{'name': 'CCCA-CC(2,3)'}], - 'MCQDPT': [{'name': 'MCQDPT2'}], - 'DETMRPT': [{'name': 'MRPT2'}], - 'FORS': [{'name': 'CASSCF'}], - 'FOCI': [{'name': 'FIRSTORDER-CI'}], - 'SOCI': [{'name': 'SECONDORDER-CI'}], - 'DM': [{'name': 'TRANSITIONMOMENTS'}], - 'HSO1': [{'name': 'ONEELEC-SOC'}], - 'HSO2P': [{'name': 'PARTIALTWOELEC-SOC'}], - 'HSO2': [{'name': 'TWOELEC-SOC'}], - 'HSO2FF': [{'name': 'TWOELECFORMFACTOR-SOC'}], - 'GUGA': [{'name': 'GUGA-CI'}], - 'NONE': [{'name': 'NOCORRELATEDMETHOD'}], + "RHF": [{"name": "RHF"}], + "UHF": [{"name": "UHF"}], + "ROHF": [{"name": "ROHF"}], + "GVB": [{"name": "GVB"}], + "MCSCF": [{"name": "MCSCF"}], + "EXCITE": [{"name": "TDDFT"}], + "SPNFLP": [{"name": "SF-TDDFT"}], + "POL": [{"name": "HYPERPOL"}], + "VB2000": [{"name": "VB"}], + "CIS": [{"name": "CIS"}], + "SFCIS": [{"name": "SF-CIS"}], + "ALDET": [{"name": "DET-MCSCF"}], + "ORMAS": [{"name": "ORMAS"}], + "FSOCI": [{"name": "SECONDORDER-CI"}], + "GENCI": [{"name": "GENERAL-CI"}], + "LCCD": [{"name": "L-CCSD"}], + "CCD": [{"name": "CCD"}], + "CCSD": [{"name": "CCSD"}], + "CCSD(T)": [{"name": "CCSD(T)"}], + "R-CC": [{"name": "R-CCSD(T)&R-CCSD[T]"}], + "CR-CC": [{"name": "CR-CCSD(T)&CR-CCSD[T]"}], + "CR-CCL": [{"name": "CR-CC(2,3)"}], + "CCSD(TQ)": [{"name": "CCSD(TQ)&R-CCSD(TQ)"}], + "CR-CC(Q)": [{"name": "CR-CCSD(TQ)"}], + "EOM-CCSD": [{"name": "EOM-CCSD"}], + "CR-EOM": [{"name": "CR-EOMCCSD(T)"}], + "CR-EOML": [{"name": "CR-EOMCC(2,3)"}], + "IP-EOM2": [{"name": "IP-EOMCCSD"}], + "IP-EOM3A": [{"name": "IP-EOMCCSDt"}], + "EA-EOM2": [{"name": "EA-EOMCCSD"}], + "EA-EOM3A": [{"name": "EA-EOMCCSDt"}], + "IOTC": [{"name": "SCALAR_RELATIVISTIC"}], + "DK": [{"name": "SCALAR_RELATIVISTIC"}], + "RESC": [{"name": "SCALAR_RELATIVISTIC"}], + "NESC": [{"name": "SCALAR_RELATIVISTIC"}], + "SBKJC": [{"name": "PSEUDO_SCALAR_RELATIVISTIC"}], + "HW": [{"name": "PSEUDO_SCALAR_RELATIVISTIC"}], + "MCP": [{"name": "PSEUDO_SCALAR_RELATIVISTIC"}], + "TAMMD": [{"name": "TAMM-DANCOFF"}], + "DFTB": [{"name": "DFTB"}], + "MP2": [{"name": "MP2"}], + "RIMP2": [{"name": "RESOLUTIONOFIDENTITY-MP2"}], + "CPHF": [{"name": "COUPLEDPERTURBED-HF"}], + "G3MP2": [{"name": "G3(MP2)"}], + "G32CCSD": [{"name": "G3(MP2,CCSD(T))"}], + "G4MP2": [{"name": "G4(MP2)"}], + "G4MP2-6X": [{"name": "G4(MP2)-6X"}], + "CCCA-S4": [{"name": "CCCA-S4"}], + "CCCA-CCL": [{"name": "CCCA-CC(2,3)"}], + "MCQDPT": [{"name": "MCQDPT2"}], + "DETMRPT": [{"name": "MRPT2"}], + "FORS": [{"name": "CASSCF"}], + "FOCI": [{"name": "FIRSTORDER-CI"}], + "SOCI": [{"name": "SECONDORDER-CI"}], + "DM": [{"name": "TRANSITIONMOMENTS"}], + "HSO1": [{"name": "ONEELEC-SOC"}], + "HSO2P": [{"name": "PARTIALTWOELEC-SOC"}], + "HSO2": [{"name": "TWOELEC-SOC"}], + "HSO2FF": [{"name": "TWOELECFORMFACTOR-SOC"}], + "GUGA": [{"name": "GUGA-CI"}], + "NONE": [{"name": "NOCORRELATEDMETHOD"}], } self._basis_set_map = { - 'STO': [{'name': 'STO'}], - 'N21': [{'name': 'N21'}], - 'N31': [{'name': 'N31'}], - 'N311': [{'name': 'N311'}], - 'MINI': [{'name': 'MINI'}], - 'MIDI': [{'name': 'MIDI'}], - 'DZV': [{'name': 'DZV'}], - 'DH': [{'name': 'DH'}], - 'TZV': [{'name': 'TZV'}], - 'MC': [{'name': 'MC'}], - 'G3L': [{'name': 'G3MP2LARGE'}], - 'G3LX': [{'name': 'G3MP2LARGEXP'}], - 'CCD': [{'name': 'CC_PVDZ'}], - 'CCT': [{'name': 'CC_PVTZ'}], - 'CCQ': [{'name': 'CC_PVQZ'}], - 'CC5': [{'name': 'CC_PV5Z'}], - 'CC6': [{'name': 'CC_PV6Z'}], - 'ACCD': [{'name': 'AUG-CC-PVDZ'}], - 'ACCT': [{'name': 'AUG-CC-PVTZ'}], - 'ACCQ': [{'name': 'AUG-CC-PVQZ'}], - 'ACC5': [{'name': 'AUG-CC-PV5Z'}], - 'ACC6': [{'name': 'AUG-CC-PV6Z'}], - 'CCDC': [{'name': 'CC-PCVDZ'}], - 'CCTC': [{'name': 'CC-PCVTZ'}], - 'CCQC': [{'name': 'CC-PCVQZ'}], - 'CC5C': [{'name': 'CC-PCV5Z'}], - 'CC6C': [{'name': 'CC-PCV6Z'}], - 'ACCDC': [{'name': 'AUG-CC-PCVDZ'}], - 'ACCTC': [{'name': 'AUG-CC-PCVTZ'}], - 'ACCQC': [{'name': 'AUG-CC-PCVQZ'}], - 'ACC5C': [{'name': 'AUG-CC-PCV5Z'}], - 'ACC6C': [{'name': 'AUG-CC-PCV6Z'}], - 'CCDWC': [{'name': 'CC-PWCVDZ'}], - 'CCTWC': [{'name': 'CC-PWCVTZ'}], - 'CCQWC': [{'name': 'CC-PWCVQZ'}], - 'CC5WC': [{'name': 'CC-PWCV5Z'}], - 'CC6WC': [{'name': 'CC-PWCV6Z'}], - 'ACCDWC': [{'name': 'AUG-CC-PWCVDZ'}], - 'ACCTWC': [{'name': 'AUG-CC-PWCVTZ'}], - 'ACCQWC': [{'name': 'AUG-CC-PWCVQZ'}], - 'ACC5WC': [{'name': 'AUG-CC-PWCV5Z'}], - 'ACC6WC': [{'name': 'AUG-CC-PWCV6Z'}], - 'PCSEG-0': [{'name': 'PCSEG-0'}], - 'PCSEG-1': [{'name': 'PCSEG-1'}], - 'PCSEG-2': [{'name': 'PCSEG-2'}], - 'PCSEG-3': [{'name': 'PCSEG-3'}], - 'PCSEG-4': [{'name': 'PCSEG-4'}], - 'APCSEG-0': [{'name': 'AUG-PCSEG-0'}], - 'APCSEG-1': [{'name': 'AUG-PCSEG-1'}], - 'APCSEG-2': [{'name': 'AUG-PCSEG-2'}], - 'APCSEG-3': [{'name': 'AUG-PCSEG-3'}], - 'APCSEG-4': [{'name': 'AUG-PCSEG-4'}], - 'SPK-DZP': [{'name': 'SPK-DZP'}], - 'SPK-DTP': [{'name': 'SPK-DTP'}], - 'SPK-DQP': [{'name': 'SPK-DQP'}], - 'SPK-ADZP': [{'name': 'AUG-SPK-DZP'}], - 'SPK-ATZP': [{'name': 'AUG-SPK-TZP'}], - 'SPK-AQZP': [{'name': 'AUG-SPK-QZP'}], - 'SPKRDZP': [{'name': 'SPK-RELDZP'}], - 'SPKRDTP': [{'name': 'SPK-RELDTP'}], - 'SPKRDQP': [{'name': 'SPK-RELDQP'}], - 'SPKRADZP': [{'name': 'AUG-SPK-RELDZP'}], - 'SPKRATZP': [{'name': 'AUG-SPK-RELTZP'}], - 'SPKRAQZP': [{'name': 'AUG-SPK-RELQZP'}], - 'SPK-DZC': [{'name': 'SPK-DZC'}], - 'SPK-TZC': [{'name': 'SPK-TZC'}], - 'SPK-QZC': [{'name': 'SPK-QZC'}], - 'SPK-DZCD': [{'name': 'SPK-DZCD'}], - 'SPK-TZCD': [{'name': 'SPK-TZCD'}], - 'SPK-QZCD': [{'name': 'SPK-QZCD'}], - 'SPKRDZC': [{'name': 'SPK-RELDZC'}], - 'SPKRTZC': [{'name': 'SPK-RELTZC'}], - 'SPKRQZC': [{'name': 'SPK-RELQZC'}], - 'SPKRDZCD': [{'name': 'SPK-RELDZCD'}], - 'SPKRTZCD': [{'name': 'SPK-RELTZCD'}], - 'SPKRQZCD': [{'name': 'SPK-RELQZCD'}], - 'KTZV': [{'name': 'KARLSRUHETZV'}], - 'KTZVP': [{'name': 'KARLSRUHETZVP'}], - 'KTZVPP': [{'name': 'KARLSRUHETZVPP'}], - 'MCP-DZP': [{'name': 'MCP-DZP'}], - 'MCP-TZP': [{'name': 'MCP-TZP'}], - 'MCP-QZP': [{'name': 'MCP-QZP'}], - 'MCP-ATZP': [{'name': 'AUG-MCP-TZP'}], - 'MCP-AQZP': [{'name': 'AUG-MCP-QZP'}], - 'MCPCDZP': [{'name': 'MCPCDZP'}], - 'MCPCTZP': [{'name': 'MCPCTZP'}], - 'MCPCQZP': [{'name': 'MCPCQZP'}], - 'MCPACDZP': [{'name': 'AUG-MCPCDZP'}], - 'MCPACTZP': [{'name': 'AUG-MCPCTZP'}], - 'MCPACQZP': [{'name': 'AUG-MCPCQZP'}], - 'IMCP-SR1': [{'name': 'IMPROVEDMCP-SCALREL1'}], - 'IMCP-SR2': [{'name': 'IMPROVEDMCP-SCALREL2'}], - 'ZFK3-DK3': [{'name': 'ZFK3-DK3'}], - 'ZFK4-DK3': [{'name': 'ZFK4-DK3'}], - 'ZFK5-DK3': [{'name': 'ZFK5-DK3'}], - 'ZFK3LDK3': [{'name': 'ZFK3LDK3'}], - 'ZFK4LDK3': [{'name': 'ZFK4LDK3'}], - 'ZFK5LDK3': [{'name': 'ZFK5LDK3'}], - 'SLATER-MNDO': [{'name': 'SLATER-MNDO'}], - 'AM1': [{'name': 'SLATER-AM1'}], - 'PM3': [{'name': 'SLATER-PM3'}], - 'RM1': [{'name': 'SLATER-RM1'}], - 'DFTB': [{'name': 'SLATER-DFTB'}] + "STO": [{"name": "STO"}], + "N21": [{"name": "N21"}], + "N31": [{"name": "N31"}], + "N311": [{"name": "N311"}], + "MINI": [{"name": "MINI"}], + "MIDI": [{"name": "MIDI"}], + "DZV": [{"name": "DZV"}], + "DH": [{"name": "DH"}], + "TZV": [{"name": "TZV"}], + "MC": [{"name": "MC"}], + "G3L": [{"name": "G3MP2LARGE"}], + "G3LX": [{"name": "G3MP2LARGEXP"}], + "CCD": [{"name": "CC_PVDZ"}], + "CCT": [{"name": "CC_PVTZ"}], + "CCQ": [{"name": "CC_PVQZ"}], + "CC5": [{"name": "CC_PV5Z"}], + "CC6": [{"name": "CC_PV6Z"}], + "ACCD": [{"name": "AUG-CC-PVDZ"}], + "ACCT": [{"name": "AUG-CC-PVTZ"}], + "ACCQ": [{"name": "AUG-CC-PVQZ"}], + "ACC5": [{"name": "AUG-CC-PV5Z"}], + "ACC6": [{"name": "AUG-CC-PV6Z"}], + "CCDC": [{"name": "CC-PCVDZ"}], + "CCTC": [{"name": "CC-PCVTZ"}], + "CCQC": [{"name": "CC-PCVQZ"}], + "CC5C": [{"name": "CC-PCV5Z"}], + "CC6C": [{"name": "CC-PCV6Z"}], + "ACCDC": [{"name": "AUG-CC-PCVDZ"}], + "ACCTC": [{"name": "AUG-CC-PCVTZ"}], + "ACCQC": [{"name": "AUG-CC-PCVQZ"}], + "ACC5C": [{"name": "AUG-CC-PCV5Z"}], + "ACC6C": [{"name": "AUG-CC-PCV6Z"}], + "CCDWC": [{"name": "CC-PWCVDZ"}], + "CCTWC": [{"name": "CC-PWCVTZ"}], + "CCQWC": [{"name": "CC-PWCVQZ"}], + "CC5WC": [{"name": "CC-PWCV5Z"}], + "CC6WC": [{"name": "CC-PWCV6Z"}], + "ACCDWC": [{"name": "AUG-CC-PWCVDZ"}], + "ACCTWC": [{"name": "AUG-CC-PWCVTZ"}], + "ACCQWC": [{"name": "AUG-CC-PWCVQZ"}], + "ACC5WC": [{"name": "AUG-CC-PWCV5Z"}], + "ACC6WC": [{"name": "AUG-CC-PWCV6Z"}], + "PCSEG-0": [{"name": "PCSEG-0"}], + "PCSEG-1": [{"name": "PCSEG-1"}], + "PCSEG-2": [{"name": "PCSEG-2"}], + "PCSEG-3": [{"name": "PCSEG-3"}], + "PCSEG-4": [{"name": "PCSEG-4"}], + "APCSEG-0": [{"name": "AUG-PCSEG-0"}], + "APCSEG-1": [{"name": "AUG-PCSEG-1"}], + "APCSEG-2": [{"name": "AUG-PCSEG-2"}], + "APCSEG-3": [{"name": "AUG-PCSEG-3"}], + "APCSEG-4": [{"name": "AUG-PCSEG-4"}], + "SPK-DZP": [{"name": "SPK-DZP"}], + "SPK-DTP": [{"name": "SPK-DTP"}], + "SPK-DQP": [{"name": "SPK-DQP"}], + "SPK-ADZP": [{"name": "AUG-SPK-DZP"}], + "SPK-ATZP": [{"name": "AUG-SPK-TZP"}], + "SPK-AQZP": [{"name": "AUG-SPK-QZP"}], + "SPKRDZP": [{"name": "SPK-RELDZP"}], + "SPKRDTP": [{"name": "SPK-RELDTP"}], + "SPKRDQP": [{"name": "SPK-RELDQP"}], + "SPKRADZP": [{"name": "AUG-SPK-RELDZP"}], + "SPKRATZP": [{"name": "AUG-SPK-RELTZP"}], + "SPKRAQZP": [{"name": "AUG-SPK-RELQZP"}], + "SPK-DZC": [{"name": "SPK-DZC"}], + "SPK-TZC": [{"name": "SPK-TZC"}], + "SPK-QZC": [{"name": "SPK-QZC"}], + "SPK-DZCD": [{"name": "SPK-DZCD"}], + "SPK-TZCD": [{"name": "SPK-TZCD"}], + "SPK-QZCD": [{"name": "SPK-QZCD"}], + "SPKRDZC": [{"name": "SPK-RELDZC"}], + "SPKRTZC": [{"name": "SPK-RELTZC"}], + "SPKRQZC": [{"name": "SPK-RELQZC"}], + "SPKRDZCD": [{"name": "SPK-RELDZCD"}], + "SPKRTZCD": [{"name": "SPK-RELTZCD"}], + "SPKRQZCD": [{"name": "SPK-RELQZCD"}], + "KTZV": [{"name": "KARLSRUHETZV"}], + "KTZVP": [{"name": "KARLSRUHETZVP"}], + "KTZVPP": [{"name": "KARLSRUHETZVPP"}], + "MCP-DZP": [{"name": "MCP-DZP"}], + "MCP-TZP": [{"name": "MCP-TZP"}], + "MCP-QZP": [{"name": "MCP-QZP"}], + "MCP-ATZP": [{"name": "AUG-MCP-TZP"}], + "MCP-AQZP": [{"name": "AUG-MCP-QZP"}], + "MCPCDZP": [{"name": "MCPCDZP"}], + "MCPCTZP": [{"name": "MCPCTZP"}], + "MCPCQZP": [{"name": "MCPCQZP"}], + "MCPACDZP": [{"name": "AUG-MCPCDZP"}], + "MCPACTZP": [{"name": "AUG-MCPCTZP"}], + "MCPACQZP": [{"name": "AUG-MCPCQZP"}], + "IMCP-SR1": [{"name": "IMPROVEDMCP-SCALREL1"}], + "IMCP-SR2": [{"name": "IMPROVEDMCP-SCALREL2"}], + "ZFK3-DK3": [{"name": "ZFK3-DK3"}], + "ZFK4-DK3": [{"name": "ZFK4-DK3"}], + "ZFK5-DK3": [{"name": "ZFK5-DK3"}], + "ZFK3LDK3": [{"name": "ZFK3LDK3"}], + "ZFK4LDK3": [{"name": "ZFK4LDK3"}], + "ZFK5LDK3": [{"name": "ZFK5LDK3"}], + "SLATER-MNDO": [{"name": "SLATER-MNDO"}], + "AM1": [{"name": "SLATER-AM1"}], + "PM3": [{"name": "SLATER-PM3"}], + "RM1": [{"name": "SLATER-RM1"}], + "DFTB": [{"name": "SLATER-DFTB"}], } self._metainfo_map = { - 'one electron': 'x_gamess_one_electron', - 'two electron': 'x_gamess_two_electron', - 'virial ratio (v/t)': 'x_gamess_virial_ratio' + "one electron": "x_gamess_one_electron", + "two electron": "x_gamess_two_electron", + "virial ratio (v/t)": "x_gamess_virial_ratio", } self.out_parser = OutParser() @@ -557,8 +617,10 @@ def __init__(self): @property def nspin(self): if self._nspin is None: - for key, val in self.out_parser.get('control_options', {}).get('key_val', []): - if key == 'MULT': + for key, val in self.out_parser.get("control_options", {}).get( + "key_val", [] + ): + if key == "MULT": self._nspin = 1 if val == 1 else 2 break return self._nspin @@ -572,14 +634,22 @@ def parse_method(self): sec_method = Method() self.archive.run[-1].method.append(sec_method) - for key in ['basis', 'control', 'system']: - setattr(sec_method, 'x_gamess_%s_options' % key, { - key: val for key, val in self.out_parser.get('%s_options' % key, {}).get('key_val', [])}) + for key in ["basis", "control", "system"]: + setattr( + sec_method, + "x_gamess_%s_options" % key, + { + key: val + for key, val in self.out_parser.get("%s_options" % key, {}).get( + "key_val", [] + ) + }, + ) - for key, val in self.out_parser.get('basis_options', {}).get('key_val', []): - setattr(sec_method, 'x_gamess_basis_set_%s' % key.lower(), val) + for key, val in self.out_parser.get("basis_options", {}).get("key_val", []): + setattr(sec_method, "x_gamess_basis_set_%s" % key.lower(), val) - for value in self.out_parser.get('coordinates', {}).get('label_charge', []): + for value in self.out_parser.get("coordinates", {}).get("label_charge", []): atom = AtomParameters() sec_method.atom_parameters.append(atom) atom.label = value[0] @@ -587,43 +657,49 @@ def parse_method(self): def resolve_basis(gbasis): # basis_set_name = self._basis_set_map.get(gbasis) - igauss = sec_method.x_gamess_basis_options.get('IGAUSS', 'NONE') - - if gbasis == 'STO': - return f'STO-{igauss}G' - - symbol, igauss = ('G', f'{igauss}-') if gbasis.startswith('N') else ('', '') - gbasis = gbasis.lstrip('N') - - plus = '' - for orb in ['SP', 'P']: - if sec_method.x_gamess_basis_options.get(f'DIFF{orb}', 'NONE').startswith('T'): - plus += '+' - - orb_suffix = '' - for orb in ['d', 'f', 'p']: - nfunc = sec_method.x_gamess_basis_options.get(f'N{orb.upper()}FUNC', 0) - prefix = '' if nfunc == 0 else orb if nfunc == 1 else f'{nfunc}{orb}' - orb_suffix += f',{prefix}' if orb == 'p' and orb_suffix and prefix else prefix - orb_suffix = f'({orb_suffix})' if orb_suffix else orb_suffix + igauss = sec_method.x_gamess_basis_options.get("IGAUSS", "NONE") + + if gbasis == "STO": + return f"STO-{igauss}G" + + symbol, igauss = ("G", f"{igauss}-") if gbasis.startswith("N") else ("", "") + gbasis = gbasis.lstrip("N") + + plus = "" + for orb in ["SP", "P"]: + if sec_method.x_gamess_basis_options.get( + f"DIFF{orb}", "NONE" + ).startswith("T"): + plus += "+" + + orb_suffix = "" + for orb in ["d", "f", "p"]: + nfunc = sec_method.x_gamess_basis_options.get(f"N{orb.upper()}FUNC", 0) + prefix = "" if nfunc == 0 else orb if nfunc == 1 else f"{nfunc}{orb}" + orb_suffix += ( + f",{prefix}" if orb == "p" and orb_suffix and prefix else prefix + ) + orb_suffix = f"({orb_suffix})" if orb_suffix else orb_suffix - return f'{igauss}{gbasis}{plus}{symbol}{orb_suffix}' + return f"{igauss}{gbasis}{plus}{symbol}{orb_suffix}" # Basis set - gbasis = sec_method.x_gamess_basis_options.get('GBASIS', 'NONE') + gbasis = sec_method.x_gamess_basis_options.get("GBASIS", "NONE") sec_method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', - scope=['wavefunction'], + type="atom-centered orbitals", + scope=["wavefunction"], basis_set=[ - BasisSet(type='gaussians',) - ] + BasisSet( + type="gaussians", + ) + ], ) ] for basis_set in self._basis_set_map.get(gbasis, []): sec_method.electrons_representation[0].basis_set[0].atom_centered.append( BasisSetAtomCentered( - name=basis_set.get('name'), + name=basis_set.get("name"), formula=resolve_basis(gbasis), ) ) @@ -631,43 +707,60 @@ def resolve_basis(gbasis): # electronic structure method sec_method.electronic = Electronic() relativity = sec_method.x_gamess_control_options.get( - 'RELWFN', sec_method.x_gamess_control_options.get('PP', 'NONE')) - if relativity != 'NONE': + "RELWFN", sec_method.x_gamess_control_options.get("PP", "NONE") + ) + if relativity != "NONE": for method in self._method_map.get(relativity, []): - sec_method.electronic.relativity_method = method.get('name', '').lower() - - scf_type = sec_method.x_gamess_control_options.get('SCFTYP', 'NONE') - run_type = sec_method.x_gamess_control_options.get('RUNTYP', 'NONE') - mp_level = sec_method.x_gamess_control_options.get('MPLEVL', 'NONE') - methods = [sec_method.x_gamess_control_options.get( - key, 'NONE') for key in ['CITYP', 'CCTYP', 'VBTYP', 'TDDFT']] - methods = [m for m in methods if m != 'NONE'] - electronic_method = scf_type if scf_type != 'NONE' else methods[0] if methods else run_type - if scf_type in ['RHF', 'UHF', 'ROHF'] and mp_level == 2: - sec_method.electronic.method = 'MP2' - elif scf_type == 'MCSCF': - sec_method.electronic.method = 'MRPT2' if mp_level == 2 else 'MCSCF' - elif electronic_method != 'NONE': + sec_method.electronic.relativity_method = method.get("name", "").lower() + + scf_type = sec_method.x_gamess_control_options.get("SCFTYP", "NONE") + run_type = sec_method.x_gamess_control_options.get("RUNTYP", "NONE") + mp_level = sec_method.x_gamess_control_options.get("MPLEVL", "NONE") + methods = [ + sec_method.x_gamess_control_options.get(key, "NONE") + for key in ["CITYP", "CCTYP", "VBTYP", "TDDFT"] + ] + methods = [m for m in methods if m != "NONE"] + electronic_method = ( + scf_type if scf_type != "NONE" else methods[0] if methods else run_type + ) + if scf_type in ["RHF", "UHF", "ROHF"] and mp_level == 2: + sec_method.electronic.method = "MP2" + elif scf_type == "MCSCF": + sec_method.electronic.method = "MRPT2" if mp_level == 2 else "MCSCF" + elif electronic_method != "NONE": for method in self._method_map.get(electronic_method, []): - sec_method.electronic.method = method.get('name') + sec_method.electronic.method = method.get("name") # dft xc functional - dfttyp = sec_method.x_gamess_control_options.get('DFTTYP', 'NONE') - if dfttyp != 'NONE': + dfttyp = sec_method.x_gamess_control_options.get("DFTTYP", "NONE") + if dfttyp != "NONE": sec_method.dft = DFT(xc_functional=XCFunctional()) for functional in self._xc_map.get(dfttyp, []): - xc_functional = functional.get('name', '') - if '_X_' in xc_functional or xc_functional.endswith('_X'): - sec_method.dft.xc_functional.exchange.append(Functional(name=xc_functional)) - elif '_C_' in xc_functional or xc_functional.endswith('_C'): - sec_method.dft.xc_functional.correlation.append(Functional(name=xc_functional)) - elif 'HYB' in xc_functional: - sec_method.dft.xc_functional.hybrid.append(Functional(name=xc_functional)) + xc_functional = functional.get("name", "") + if "_X_" in xc_functional or xc_functional.endswith("_X"): + sec_method.dft.xc_functional.exchange.append( + Functional(name=xc_functional) + ) + elif "_C_" in xc_functional or xc_functional.endswith("_C"): + sec_method.dft.xc_functional.correlation.append( + Functional(name=xc_functional) + ) + elif "HYB" in xc_functional: + sec_method.dft.xc_functional.hybrid.append( + Functional(name=xc_functional) + ) else: - sec_method.dft.xc_functional.contributions.append(Functional(name=xc_functional)) + sec_method.dft.xc_functional.contributions.append( + Functional(name=xc_functional) + ) def parse_calculation(self, source): - time_initial = self.archive.run[-1].calculation[-1].time_physical if self.archive.run[-1].calculation else 0 * ureg.s + time_initial = ( + self.archive.run[-1].calculation[-1].time_physical + if self.archive.run[-1].calculation + else 0 * ureg.s + ) sec_scc = Calculation() self.archive.run[-1].calculation.append(sec_scc) @@ -676,17 +769,18 @@ def parse_calculation(self, source): sec_scc.time_calculation = sec_scc.time_physical - time_initial if source.scf is not None: - for iteration in source.scf.get('iteration', {}).get('iter', []): + for iteration in source.scf.get("iteration", {}).get("iter", []): sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf.energy = Energy( total=EnergyEntry(value=iteration[0] * ureg.hartree), - change=iteration[1] * ureg.hartree) + change=iteration[1] * ureg.hartree, + ) sec_scc.energy = Energy(total=EnergyEntry(value=source.scf.energy_total)) sec_scc.calculation_converged = source.scf.converged - eigenvalues = source.scf.get('eigenvectors', {}).get('eigenvalues') + eigenvalues = source.scf.get("eigenvectors", {}).get("eigenvalues") if eigenvalues is not None: sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) @@ -694,84 +788,123 @@ def parse_calculation(self, source): shape = (self.nspin, 1, np.size(eigenvalues) // self.nspin) sec_eigenvalues.energies = np.reshape(eigenvalues, shape) * ureg.hartree sec_eigenvalues.occupations = np.reshape( - np.array([2 if energy <= 0. else 0 for energy in eigenvalues]) / self.nspin, shape) + np.array([2 if energy <= 0.0 else 0 for energy in eigenvalues]) + / self.nspin, + shape, + ) - properties = source.get('properties') + properties = source.get("properties") if properties is not None: - energies = {key.strip().lower(): val for key, val in properties.get('energy_components', [])} + energies = { + key.strip().lower(): val + for key, val in properties.get("energy_components", []) + } sec_energy = Energy() sec_scc.energy = sec_energy for key, val in energies.items(): # if key.endswith('potential energy') or key.endswith('kinetic energy'): # continue - if key.endswith('energy'): - key = key.rstrip('energy').strip() - potential = energies.get(f'{key} potential energy') + if key.endswith("energy"): + key = key.rstrip("energy").strip() + potential = energies.get(f"{key} potential energy") # kinetic = energies.get(f'{key} kinetic energy') - key = self._metainfo_map.get(key, key).replace(' ', '_') - if hasattr(Energy, key) or key.startswith('x_gamess'): - setattr(sec_energy, key, EnergyEntry( - value=val * ureg.hartree, - potential=potential * ureg.hartree if potential else potential, - # kinetic=kinetic * ureg.hartree if kinetic else kinetic - )) + key = self._metainfo_map.get(key, key).replace(" ", "_") + if hasattr(Energy, key) or key.startswith("x_gamess"): + setattr( + sec_energy, + key, + EnergyEntry( + value=val * ureg.hartree, + potential=potential * ureg.hartree + if potential + else potential, + # kinetic=kinetic * ureg.hartree if kinetic else kinetic + ), + ) else: - sec_energy.contributions.append(EnergyEntry(kind=key, value=val * ureg.hartree)) + sec_energy.contributions.append( + EnergyEntry(kind=key, value=val * ureg.hartree) + ) else: - setattr(sec_energy, self._metainfo_map.get(key, f'x_gamess_{key}'), val) + setattr( + sec_energy, self._metainfo_map.get(key, f"x_gamess_{key}"), val + ) - population = properties.get('population_analysis') + population = properties.get("population_analysis") if population is not None: - methods = ['Mulliken', 'Lowdin'] + methods = ["Mulliken", "Lowdin"] for n, method in enumerate(methods): sec_charges = Charges() sec_scc.charges.append(sec_charges) sec_charges.analysis_method = method if population.atomic is not None: - sec_charges.value = population.atomic[n * 2 + 1] * ureg.elementary_charge + sec_charges.value = ( + population.atomic[n * 2 + 1] * ureg.elementary_charge + ) if population.atomic_orbitals is not None: - for norbital, orbital in enumerate(population.atomic_orbitals[1]): + for norbital, orbital in enumerate( + population.atomic_orbitals[1] + ): sec_orbital_charges = ChargesValue() sec_charges.orbital_projected.append(sec_orbital_charges) - sec_orbital_charges.atom_index = population.atomic_orbitals[0][norbital] + sec_orbital_charges.atom_index = population.atomic_orbitals[ + 0 + ][norbital] sec_orbital_charges.orbital = str(orbital) - sec_orbital_charges.value = float(population.atomic_orbitals[2 + n][norbital]) * ureg.elementary_charge + sec_orbital_charges.value = ( + float(population.atomic_orbitals[2 + n][norbital]) + * ureg.elementary_charge + ) if population.spins is not None: sec_charges.spins = population.spins[n] - orbitals = ['s', 'p', 'd', 'f', 'g', 'h', 'i'] - for nspin, charges in enumerate(population.get('spherical_harmonics', [])[:2]): + orbitals = ["s", "p", "d", "f", "g", "h", "i"] + for nspin, charges in enumerate( + population.get("spherical_harmonics", [])[:2] + ): for norbital in range(len(charges[:-1])): for natom in range(len(charges[norbital])): sec_orbital_charges = ChargesValue() - sec_scc.charges[0].orbital_projected.append(sec_orbital_charges) + sec_scc.charges[0].orbital_projected.append( + sec_orbital_charges + ) sec_orbital_charges.atom_index = natom sec_orbital_charges.spin = nspin sec_orbital_charges.orbital = orbitals[norbital] - sec_orbital_charges.value = charges[norbital][natom] * ureg.elementary_charge + sec_orbital_charges.value = ( + charges[norbital][natom] * ureg.elementary_charge + ) - moments = properties.get('electrostatic_moments') + moments = properties.get("electrostatic_moments") if moments is not None: - for dipole in moments.get('dipole', []): + for dipole in moments.get("dipole", []): sec_multipoles = Multipoles() sec_scc.multipoles.append(sec_multipoles) - sec_multipoles.kind = 'electrostatic' + sec_multipoles.kind = "electrostatic" sec_multipoles.dipole = MultipolesEntry( # origin=dipole.get('origin'), - value=dipole.get('value')) + value=dipole.get("value") + ) - if source.get('gradient') is not None: + if source.get("gradient") is not None: sec_scc.forces = Forces(total=ForcesEntry(value=source.gradient)) def parse_system(self, source): - coordinates = source.get('coordinates', self.out_parser.coordinates) + coordinates = source.get("coordinates", self.out_parser.coordinates) if coordinates is not None: sec_system = System() self.archive.run[0].system.append(sec_system) - unit = self._units.get(coordinates.get('unit'), 1) + unit = self._units.get(coordinates.get("unit"), 1) sec_system.atoms = Atoms( - labels=[chemical_symbols[int(lc[1])] for lc in coordinates.get('label_charge', [])], - positions=np.array([p for p in coordinates.get('position', [])], dtype=np.float64) * unit) + labels=[ + chemical_symbols[int(lc[1])] + for lc in coordinates.get("label_charge", []) + ], + positions=np.array( + [p for p in coordinates.get("position", [])], dtype=np.float64 + ) + * unit, + ) def parse(self, filepath, archive, logger): self.filepath = filepath @@ -781,15 +914,15 @@ def parse(self, filepath, archive, logger): run = Run() archive.run.append(run) - run.program = Program(version=self.out_parser.get('program_version')) + run.program = Program(version=self.out_parser.get("program_version")) for key, val in self.out_parser.items(): - if key.startswith('x_gamess_'): + if key.startswith("x_gamess_"): setattr(run, key, val) self.parse_method() - if self.out_parser.get('geometry_opt') is not None: - for geometry_opt in self.out_parser.get('geometry_opt', []): + if self.out_parser.get("geometry_opt") is not None: + for geometry_opt in self.out_parser.get("geometry_opt", []): self.parse_system(geometry_opt) self.parse_calculation(geometry_opt) run.calculation[-1].system_ref = run.system[-1] diff --git a/electronicparsers/gaussian/metainfo/gaussian.py b/electronicparsers/gaussian/metainfo/gaussian.py index 655e9fa2..17f54a8b 100644 --- a/electronicparsers/gaussian/metainfo/gaussian.py +++ b/electronicparsers/gaussian/metainfo/gaussian.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,1184 +39,1374 @@ class x_gaussian_configuration_core(MCategory): - ''' + """ Properties defining the current configuration. - ''' + """ m_def = Category() 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() class x_gaussian_scf_info(MCategory): - ''' + """ Information on the self-consistent field (SCF) procedure. - ''' + """ m_def = Category() class x_gaussian_section_geometry(MSection): - ''' + """ section that contains Cartesian coordinates of the system for a given geometry - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_atomic_number = Quantity( type=str, shape=[], - description=''' + description=""" atomic number for atoms - ''',) + """, + ) x_gaussian_atom_x_coord = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x coordinate for the atoms - ''',) + """, + ) x_gaussian_atom_y_coord = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y coordinate for the atoms - ''',) + """, + ) x_gaussian_atom_z_coord = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z coordinate for the atoms - ''',) + """, + ) class x_gaussian_section_hybrid_coeffs(MSection): - ''' + """ section that contains coefficients for the hybrid DFT functionals - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) hybrid_xc_coeff1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Coefficient for Hartree-Fock exchange in hybrid DFT functionals - ''',) + """, + ) hybrid_xc_coeff2 = Quantity( type=str, shape=[], - description=''' + description=""" Coefficients for Slater exchange, non-local exchange, local correlation, and non- local correlation, respectively, in hybrid DFT functionals - ''',) + """, + ) x_gaussian_hybrid_xc_hfx = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Hartree-Fock exchange - ''',) + """, + ) x_gaussian_hybrid_xc_slater = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Slater exchange - ''',) + """, + ) x_gaussian_hybrid_xc_nonlocalex = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Slater exchange - ''',) + """, + ) x_gaussian_hybrid_xc_localcorr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Slater exchange - ''',) + """, + ) x_gaussian_hybrid_xc_nonlocalcorr = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Slater exchange - ''',) + """, + ) 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,) + m_def = Section( + validate=False, + ) class x_gaussian_section_times(MSection): - ''' + """ section that contains the execution times of the run - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_program_termination_date = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_gaussian_program_cpu_time = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) class x_gaussian_section_atom_forces(MSection): - ''' + """ section that contains Cartesian coordinates of the system for a given geometry - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_atom_x_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''',) + """, + ) x_gaussian_atom_y_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''',) + """, + ) x_gaussian_atom_z_force = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" - - ''',) + """, + ) class x_gaussian_section_molecular_multipoles(MSection): - ''' + """ Section describing multipoles (charges, dipoles,...). - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) charge = Quantity( type=str, shape=[], - description=''' + description=""" Value of the total charge of the system (in electronic units). - ''',) + """, + ) dipole_moment_x = Quantity( type=str, shape=[], - description=''' + description=""" Value of the x component of the dipole moment (Debye). - ''',) + """, + ) dipole_moment_y = Quantity( type=str, shape=[], - description=''' + description=""" Value of the y component of the dipole moment (Debye). - ''',) + """, + ) dipole_moment_z = Quantity( type=str, shape=[], - description=''' + description=""" Value of the z component of the dipole moment (Debye). - ''',) + """, + ) quadrupole_moment_xx = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xx component of the quadrupole moment (Debye-Ang). - ''',) + """, + ) quadrupole_moment_yy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yy component of the quadrupole moment (Debye-Ang). - ''',) + """, + ) quadrupole_moment_zz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the zz component of the quadrupole moment (Debye-Ang). - ''',) + """, + ) quadrupole_moment_xy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xy component of the quadrupole moment (Debye-Ang). - ''',) + """, + ) quadrupole_moment_xz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xz component of the quadrupole moment (Debye-Ang). - ''',) + """, + ) quadrupole_moment_yz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yz component of the quadrupole moment (Debye-Ang). - ''',) + """, + ) octapole_moment_xxx = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxx component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_yyy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyy component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_zzz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the zzz component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_xyy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xyy component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_xxy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxy component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_xxz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxz component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_xzz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xzz component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_yzz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yzz component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_yyz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyz component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) octapole_moment_xyz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xyz component of the octapole moment (Debye-Ang**2). - ''',) + """, + ) hexadecapole_moment_xxxx = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxxx component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_yyyy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyyy component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_zzzz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the zzzz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_xxxy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxxy component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_xxxz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxxz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_yyyx = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyyx component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_yyyz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyyz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_zzzx = Quantity( type=str, shape=[], - description=''' + description=""" Value of the zzzx component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_zzzy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the zzzy component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_xxyy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxyy component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_xxzz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxzz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_yyzz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyzz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_xxyz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the xxyz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_yyxz = Quantity( type=str, shape=[], - description=''' + description=""" Value of the yyxz component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) hexadecapole_moment_zzxy = Quantity( type=str, shape=[], - description=''' + description=""" Value of the zzxy component of the hexadecapole moment (Debye-Ang**3). - ''',) + """, + ) x_gaussian_molecular_multipole_lm = Quantity( type=np.dtype(np.int32), - shape=['x_gaussian_number_of_lm_molecular_multipoles', 2], - description=''' + 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. - ''',) + """, + ) x_gaussian_molecular_multipole_m_kind = Quantity( type=str, shape=[], - description=''' + 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). - ''',) + """, + ) x_gaussian_molecular_multipole_values = Quantity( type=np.dtype(np.float64), - shape=['x_gaussian_number_of_lm_molecular_multipoles'], - description=''' + 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.). - ''',) + """, + ) x_gaussian_number_of_lm_molecular_multipoles = Quantity( type=int, shape=[], - description=''' + description=""" Number of $l,m$ combinations for which molecular multipoles are given. - ''',) + """, + ) class x_gaussian_section_geometry_optimization_info(MSection): - ''' + """ Specifies whether a geometry optimization is converged. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_geometry_optimization_converged = Quantity( type=str, shape=[], - description=''' + description=""" Specifies whether a geometry optimization is 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,) + m_def = Section( + validate=False, + ) x_gaussian_frequency_values = Quantity( type=str, - shape=['number_of_frequency_rows'], - description=''' + shape=["number_of_frequency_rows"], + description=""" values of frequencies, in cm-1 - ''',) + """, + ) x_gaussian_frequencies = Quantity( type=np.dtype(np.float64), - shape=['number_of_frequencies'], - description=''' + shape=["number_of_frequencies"], + description=""" values of frequencies, in cm-1 - ''',) + """, + ) x_gaussian_reduced_masses = Quantity( type=np.dtype(np.float64), - shape=['number_of_reduced_masses_rows'], - description=''' + shape=["number_of_reduced_masses_rows"], + description=""" values of normal mode reduced masses - ''',) + """, + ) x_gaussian_red_masses = Quantity( type=np.dtype(np.float64), - shape=['number_of_frequencies'], - description=''' + shape=["number_of_frequencies"], + description=""" values of normal mode reduced masses - ''',) + """, + ) x_gaussian_normal_modes = Quantity( type=str, - shape=['number_of_normal_modes_rows'], - description=''' + shape=["number_of_normal_modes_rows"], + description=""" normal mode vectors - ''',) + """, + ) x_gaussian_normal_mode_values = Quantity( type=np.dtype(np.float64), - shape=['number_of_frequencies', 'number_of_atoms', 3], - description=''' + shape=["number_of_frequencies", "number_of_atoms", 3], + description=""" normal mode vectors - ''',) + """, + ) class x_gaussian_section_thermochem(MSection): - ''' + """ section for thermochemical quantities - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_temperature = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of temperature for thermochemical values - ''',) + """, + ) x_gaussian_pressure = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of pressure for thermochemical values - ''',) + """, + ) x_gaussian_moment_of_inertia_X = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" X component of moment of inertia - ''',) + """, + ) x_gaussian_moment_of_inertia_Y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Y component of moment of inertia - ''',) + """, + ) x_gaussian_moment_of_inertia_Z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Z component of moment of inertia - ''',) + """, + ) x_gaussian_moments = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Values of moments of inertia - ''',) + """, + ) x_gaussian_zero_point_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of zero-point energy - ''',) + """, + ) x_gaussian_thermal_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of thermal correction to total energy - ''',) + """, + ) x_gaussian_thermal_correction_enthalpy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of thermal correction to enthalpy - ''',) + """, + ) x_gaussian_thermal_correction_free_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of thermal correction to Gibbs 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,) + m_def = Section( + validate=False, + ) x_gaussian_force_constants = Quantity( type=str, shape=[], - description=''' + description=""" Force constant matrix elements - ''',) + """, + ) x_gaussian_force_constant_values = Quantity( type=np.dtype(np.float64), - shape=['number_of_degrees_of_freedom', 'number_of_degrees_of_freedom'], - description=''' + shape=["number_of_degrees_of_freedom", "number_of_degrees_of_freedom"], + description=""" Force constant matrix element values - ''',) + """, + ) class x_gaussian_section_orbital_symmetries(MSection): - ''' + """ section for the symmetry of the MOs - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_alpha_occ_symmetry_values = Quantity( type=str, - shape=['number_of_alpha_occ_rows'], - description=''' + shape=["number_of_alpha_occ_rows"], + description=""" symmetry of the alpha occupied MOs - ''',) + """, + ) x_gaussian_alpha_vir_symmetry_values = Quantity( type=str, - shape=['number_of_alpha_vir_rows'], - description=''' + shape=["number_of_alpha_vir_rows"], + description=""" symmetry of the alpha virtual MOs - ''',) + """, + ) x_gaussian_beta_occ_symmetry_values = Quantity( type=str, - shape=['number_of_beta_occ_rows'], - description=''' + shape=["number_of_beta_occ_rows"], + description=""" symmetry of the beta occupied MOs - ''',) + """, + ) x_gaussian_beta_vir_symmetry_values = Quantity( type=str, - shape=['number_of_beta_vir_rows'], - description=''' + shape=["number_of_beta_vir_rows"], + description=""" symmetry of the beta virtual MOs - ''',) + """, + ) x_gaussian_alpha_symmetries = Quantity( type=str, - shape=['number_of_alpha_mos'], - description=''' + shape=["number_of_alpha_mos"], + description=""" symmetry of the alpha MOs - ''',) + """, + ) x_gaussian_beta_symmetries = Quantity( type=str, - shape=['number_of_beta_mos'], - description=''' + shape=["number_of_beta_mos"], + description=""" symmetry of the beta MOs - ''',) + """, + ) class x_gaussian_section_symmetry(MSection): - ''' + """ section for the symmetry of the electronic state - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_elstate_symmetry = Quantity( type=str, shape=[], - description=''' + description=""" symmetry group of the electronic state - ''',) + """, + ) class x_gaussian_section_elstruc_method(MSection): - ''' + """ Section containing electronic structure method. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_electronic_structure_method = Quantity( type=str, shape=[], - description=''' + description=""" Name of electronic structure method. - ''',) + """, + ) class x_gaussian_section_energy_components(MSection): - ''' + """ Section containing total energy components - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) class x_gaussian_section_moller_plesset(MSection): - ''' + """ Perturbative Moller-Plesset energies. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_mp2_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and MP2 energies. - ''',) + """, + ) x_gaussian_mp3_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and MP3 energies. - ''',) + """, + ) x_gaussian_mp4dq_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and MP4(DQ) energies. - ''',) + """, + ) x_gaussian_mp4sdq_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and MP4(SDQ) energies. - ''',) + """, + ) x_gaussian_mp4sdtq_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and MP4(SDTQ) energies. - ''',) + """, + ) x_gaussian_mp5_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and MP5 energies. - ''',) + """, + ) class x_gaussian_section_coupled_cluster(MSection): - ''' + """ Coupled cluster energies. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_ccsd_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and CCSD energies. - ''',) + """, + ) class x_gaussian_section_quadratic_ci(MSection): - ''' + """ Quadratic CI energies. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_qcisd_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and QCISD energies. - ''',) + """, + ) x_gaussian_qcisdtq_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and QCISD(TQ) energies. - ''',) + """, + ) class x_gaussian_section_ci(MSection): - ''' + """ CI energies. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_ci_correction_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Difference between SCF and CI energies. - ''',) + """, + ) class x_gaussian_section_semiempirical(MSection): - ''' + """ semiempirical convergence cycles and energies. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_semiempirical_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" semiempirical energies. - ''',) + """, + ) x_gaussian_semiempirical_method = Quantity( type=str, shape=[], - description=''' + description=""" semiempirical method. - ''',) + """, + ) class x_gaussian_section_molmech(MSection): - ''' + """ molecular mechanics method and energies. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_molmech_method = Quantity( type=str, shape=[], - description=''' + description=""" molecular mechanics method. - ''',) + """, + ) class x_gaussian_section_models(MSection): - ''' + """ composite model chemistries. - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) class x_gaussian_section_excited_initial(MSection): - ''' + """ Excited state energies and properties - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) class x_gaussian_section_excited(MSection): - ''' + """ CI singles, TDDFT/TDHF, ZINDO or EOMCCSD excited state energies and properties - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_excited_state_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state number - ''',) + """, + ) x_gaussian_excited_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state energy - ''',) + """, + ) x_gaussian_excited_oscstrength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state oscillator strength - ''',) + """, + ) x_gaussian_excited_spin_squared = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state spin squared value - ''',) + """, + ) x_gaussian_excited_transition = Quantity( type=str, shape=[], - description=''' + description=""" CIS, TDDFT/TDHF, ZINDO or EOMCCSD excited state MOs involved in transitions and their coefficients - ''',) + """, + ) class x_gaussian_section_casscf(MSection): - ''' + """ CASSCF energies and properties - ''' + """ - m_def = Section(validate=False,) + m_def = Section( + validate=False, + ) x_gaussian_casscf_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" CASSCF energy - ''',) + """, + ) x_gaussian_casscf_determinant = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CASSCF determinant number - ''',) + """, + ) x_gaussian_casscf_coefficient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CASSCF determinant coefficient - ''',) + """, + ) class System(runschema.system.System): - - m_def = Section(validate=False, extends_base_section=True,) + m_def = Section( + validate=False, + extends_base_section=True, + ) x_gaussian_number_of_atoms = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" number of atoms of the system - ''',) + """, + ) x_gaussian_atomic_masses = Quantity( type=str, shape=[], - description=''' + description=""" atomic masses for atoms - ''',) + """, + ) x_gaussian_total_charge = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Total charge of the system. - ''',) + """, + ) x_gaussian_spin_target_multiplicity = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + 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. - ''',) + """, + ) x_gaussian_geometry_lattice_vector_x = Quantity( type=str, shape=[], - description=''' + description=""" x component of lattice vector - ''',) + """, + ) x_gaussian_geometry_lattice_vector_y = Quantity( type=str, shape=[], - description=''' + description=""" y component of lattice vector - ''',) + """, + ) x_gaussian_geometry_lattice_vector_z = Quantity( type=str, shape=[], - description=''' + description=""" z component of lattice vector - ''',) + """, + ) x_gaussian_masses = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" values of atomic masses - ''',) + """, + ) class Calculation(runschema.calculation.Calculation): - - m_def = Section(validate=False, extends_base_section=True,) + m_def = Section( + validate=False, + extends_base_section=True, + ) x_gaussian_atom_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - unit='newton', - description=''' + 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],) + """, + categories=[x_gaussian_atom_forces_type], + ) x_gaussian_energy_total_scf_converged = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" SCF total energy converged for a given geometry. - ''',) + """, + ) x_gaussian_number_of_scf_iterations = Quantity( type=int, shape=[], - description=''' + description=""" Number of performed self-consistent field (SCF) iterations at DFT level. - ''', - categories=[x_gaussian_scf_info],) + """, + categories=[x_gaussian_scf_info], + ) x_gaussian_section_hybrid_coeffs = SubSection( - sub_section=SectionProxy('x_gaussian_section_hybrid_coeffs'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_hybrid_coeffs"), + repeats=True, + ) x_gaussian_section_total_scf_one_geometry = SubSection( - sub_section=SectionProxy('x_gaussian_section_total_scf_one_geometry'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_total_scf_one_geometry"), + repeats=True, + ) x_gaussian_section_atom_forces = SubSection( - sub_section=SectionProxy('x_gaussian_section_atom_forces'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_atom_forces"), + repeats=True, + ) x_gaussian_section_molecular_multipoles = SubSection( - sub_section=SectionProxy('x_gaussian_section_molecular_multipoles'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_molecular_multipoles"), + repeats=True, + ) x_gaussian_section_energy_components = SubSection( - sub_section=SectionProxy('x_gaussian_section_energy_components'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_energy_components"), + repeats=True, + ) x_gaussian_section_moller_plesset = SubSection( - sub_section=SectionProxy('x_gaussian_section_moller_plesset'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_moller_plesset"), + repeats=True, + ) x_gaussian_section_coupled_cluster = SubSection( - sub_section=SectionProxy('x_gaussian_section_coupled_cluster'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_coupled_cluster"), + repeats=True, + ) x_gaussian_section_quadratic_ci = SubSection( - sub_section=SectionProxy('x_gaussian_section_quadratic_ci'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_quadratic_ci"), + repeats=True, + ) x_gaussian_section_ci = SubSection( - sub_section=SectionProxy('x_gaussian_section_ci'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_ci"), + repeats=True, + ) x_gaussian_section_semiempirical = SubSection( - sub_section=SectionProxy('x_gaussian_section_semiempirical'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_semiempirical"), + repeats=True, + ) x_gaussian_section_molmech = SubSection( - sub_section=SectionProxy('x_gaussian_section_molmech'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_molmech"), + repeats=True, + ) x_gaussian_section_models = SubSection( - sub_section=SectionProxy('x_gaussian_section_models'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_models"), + repeats=True, + ) x_gaussian_section_excited_initial = SubSection( - sub_section=SectionProxy('x_gaussian_section_excited_initial'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_excited_initial"), + repeats=True, + ) x_gaussian_section_excited = SubSection( - sub_section=SectionProxy('x_gaussian_section_excited'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_excited"), + repeats=True, + ) x_gaussian_section_casscf = SubSection( - sub_section=SectionProxy('x_gaussian_section_casscf'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_casscf"), + repeats=True, + ) class Run(runschema.run.Run): - - m_def = Section(validate=False, extends_base_section=True,) + m_def = Section( + validate=False, + extends_base_section=True, + ) x_gaussian_chk_file = Quantity( type=str, shape=[], - description=''' + description=""" binary file with detailed output information - ''',) + """, + ) x_gaussian_memory = Quantity( type=str, shape=[], - description=''' + description=""" total memory for the run - ''') + """, + ) x_gaussian_number_of_processors = Quantity( type=str, shape=[], - description=''' + description=""" number of processors used - ''') + """, + ) x_gaussian_program_execution_date = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_gaussian_program_release_date = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_gaussian_program_implementation = Quantity( type=str, shape=[], - description=''' + description=""" - - ''',) + """, + ) x_gaussian_atom_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - unit='meter', - description=''' + 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],) + """, + categories=[x_gaussian_configuration_core], + ) x_gaussian_atom_labels = Quantity( type=str, shape=[], - description=''' + 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 @@ -1219,247 +1416,296 @@ class Run(runschema.run.Run): 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],) + """, + categories=[x_gaussian_configuration_core], + ) x_gaussian_section_geometry = SubSection( - sub_section=SectionProxy('x_gaussian_section_geometry'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_geometry"), + repeats=True, + ) x_gaussian_section_times = SubSection( - sub_section=SectionProxy('x_gaussian_section_times'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_times"), + repeats=True, + ) x_gaussian_section_geometry_optimization_info = SubSection( - sub_section=SectionProxy('x_gaussian_section_geometry_optimization_info'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_geometry_optimization_info"), + repeats=True, + ) x_gaussian_section_frequencies = SubSection( - sub_section=SectionProxy('x_gaussian_section_frequencies'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_frequencies"), + repeats=True, + ) x_gaussian_section_thermochem = SubSection( - sub_section=SectionProxy('x_gaussian_section_thermochem'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_thermochem"), + repeats=True, + ) x_gaussian_section_force_constant_matrix = SubSection( - sub_section=SectionProxy('x_gaussian_section_force_constant_matrix'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_force_constant_matrix"), + repeats=True, + ) x_gaussian_section_orbital_symmetries = SubSection( - sub_section=SectionProxy('x_gaussian_section_orbital_symmetries'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_orbital_symmetries"), + repeats=True, + ) x_gaussian_section_symmetry = SubSection( - sub_section=SectionProxy('x_gaussian_section_symmetry'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_symmetry"), + repeats=True, + ) class ScfIteration(runschema.calculation.ScfIteration): - - m_def = Section(validate=False, extends_base_section=True,) + m_def = Section( + validate=False, + extends_base_section=True, + ) x_gaussian_energy_total_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Total energy calculated with a given method during the self-consistent field (SCF) iterations. - ''',) + """, + ) x_gaussian_delta_energy_total_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Total energy increment calculated with a given method during the self-consistent field (SCF) iterations. - ''',) + """, + ) x_gaussian_single_configuration_calculation_converged = Quantity( type=str, shape=[], - description=''' + description=""" Determines whether a single configuration calculation is converged. - ''',) + """, + ) x_gaussian_spin_S2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Real value of spin squared. - ''',) + """, + ) x_gaussian_after_annihilation_spin_S2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Real value of spin squared resulting from the annihilation of the first spin contaminant. - ''',) + """, + ) x_gaussian_energy_scf = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Value of the SCF total energy, either HF or DFT. - ''') + """, + ) x_gaussian_perturbation_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Value of the perturbation energy for double hybrids - ''') + """, + ) x_gaussian_hf_detect = Quantity( type=str, shape=[], - description=''' + description=""" Determine if the SCF method is one of RHF, UHF, or ROHF - ''',) + """, + ) x_gaussian_energy_electrostatic = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Total electrostatic energy (nuclei + electrons), defined consistently with calculation_method. - ''') + """, + ) x_gaussian_energy_error = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Error in the total energy. Defined consistently with XC_method. - ''') + """, + ) x_gaussian_electronic_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Self-consistent electronic kinetic energy as defined in XC_method. - ''') + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - - m_def = Section(validate=False, extends_base_section=True,) + m_def = Section( + validate=False, + extends_base_section=True, + ) x_gaussian_alpha_occ_eigenvalues_values = Quantity( type=str, shape=[], - description=''' + description=""" values of eigenenergies for occupied alpha MOs - ''',) + """, + ) x_gaussian_alpha_vir_eigenvalues_values = Quantity( type=str, shape=[], - description=''' + description=""" values of eigenenergies for virtual alpha MOs - ''',) + """, + ) x_gaussian_beta_occ_eigenvalues_values = Quantity( type=str, shape=[], - description=''' + description=""" values of eigenenergies for occupied beta MOs - ''',) + """, + ) x_gaussian_beta_vir_eigenvalues_values = Quantity( type=str, shape=[], - description=''' + description=""" values of eigenenergies for virtual beta MOs - ''',) + """, + ) x_gaussian_alpha_eigenvalues = Quantity( type=np.dtype(np.float64), - shape=['number_of_alpha_mos'], - description=''' + shape=["number_of_alpha_mos"], + description=""" values of eigenenergies, alpha occ - ''',) + """, + ) x_gaussian_beta_eigenvalues = Quantity( type=np.dtype(np.float64), - shape=['number_of_beta_mos'], - description=''' + shape=["number_of_beta_mos"], + description=""" values of eigenenergies, beta occ - ''',) + """, + ) x_gaussian_alpha_occupations = Quantity( type=np.dtype(np.float64), - shape=['number_of_alpha_mos'], - description=''' + shape=["number_of_alpha_mos"], + description=""" values of eigenenergies, alpha occ - ''',) + """, + ) x_gaussian_beta_occupations = Quantity( type=np.dtype(np.float64), - shape=['number_of_beta_mos'], - description=''' + shape=["number_of_beta_mos"], + description=""" values of eigenenergies, beta occ - ''',) + """, + ) x_gaussian_eigenvalues_occupation = Quantity( type=np.dtype(np.float64), - shape=['number_of_spin_channels', 'number_of_eigenvalues_kpoints', 'number_of_eigenvalues'], - description=''' + 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. - ''',) + """, + ) 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=''' + 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. - ''',) + """, + ) class Method(runschema.method.Method): - - m_def = Section(validate=False, extends_base_section=True,) + m_def = Section( + validate=False, + extends_base_section=True, + ) x_gaussian_settings = Quantity( type=str, shape=[], - description=''' + description=""" electronic structure method, basis set, etc. - ''',) + """, + ) x_gaussian_settings_corrected = Quantity( type=str, shape=[], - description=''' + description=""" electronic structure method, basis set, etc. - ''',) + """, + ) x_gaussian_method = Quantity( type=str, shape=[], - description=''' + description=""" String identifying in an unique way the electronic structure method used for the final wavefunctions. - ''',) + """, + ) x_gaussian_xc = Quantity( type=str, shape=[], - description=''' + description=""" String identifying in an unique way the XC method used for the final wavefunctions. - ''',) + """, + ) x_gaussian_section_elstruc_method = SubSection( - sub_section=SectionProxy('x_gaussian_section_elstruc_method'), - repeats=True,) + sub_section=SectionProxy("x_gaussian_section_elstruc_method"), + repeats=True, + ) diff --git a/electronicparsers/gaussian/parser.py b/electronicparsers/gaussian/parser.py index cb1ce510..c45bb03c 100644 --- a/electronicparsers/gaussian/parser.py +++ b/electronicparsers/gaussian/parser.py @@ -9,25 +9,46 @@ from nomad.parsing.file_parser.text_parser import TextParser, Quantity from runschema.run import Run, Program from runschema.method import ( - Electronic, Method, XCFunctional, Functional, DFT, BasisSet, BasisSetAtomCentered, + Electronic, + Method, + XCFunctional, + Functional, + DFT, + BasisSet, + BasisSetAtomCentered, BasisSetContainer, ) -from runschema.system import ( - System, Atoms -) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, BandEnergies, Forces, ForcesEntry, Thermodynamics, - ScfIteration + Calculation, + Energy, + EnergyEntry, + BandEnergies, + Forces, + ForcesEntry, + Thermodynamics, + ScfIteration, +) +from .metainfo.gaussian import ( + x_gaussian_section_elstruc_method, + x_gaussian_section_moller_plesset, + x_gaussian_section_hybrid_coeffs, + x_gaussian_section_coupled_cluster, + x_gaussian_section_quadratic_ci, + x_gaussian_section_ci, + x_gaussian_section_semiempirical, + x_gaussian_section_molmech, + x_gaussian_section_excited, + x_gaussian_section_casscf, + x_gaussian_section_orbital_symmetries, + x_gaussian_section_geometry_optimization_info, + x_gaussian_section_molecular_multipoles, + x_gaussian_section_frequencies, + x_gaussian_section_thermochem, + x_gaussian_section_force_constant_matrix, + x_gaussian_section_times, + x_gaussian_section_symmetry, ) -from .metainfo.gaussian import x_gaussian_section_elstruc_method,\ - x_gaussian_section_moller_plesset, x_gaussian_section_hybrid_coeffs,\ - x_gaussian_section_coupled_cluster, x_gaussian_section_quadratic_ci,\ - x_gaussian_section_ci, x_gaussian_section_semiempirical, x_gaussian_section_molmech,\ - x_gaussian_section_excited, x_gaussian_section_casscf, x_gaussian_section_orbital_symmetries,\ - x_gaussian_section_geometry_optimization_info, x_gaussian_section_molecular_multipoles,\ - x_gaussian_section_frequencies, x_gaussian_section_thermochem,\ - x_gaussian_section_force_constant_matrix, x_gaussian_section_times,\ - x_gaussian_section_symmetry class GaussianOutParser(TextParser): @@ -35,23 +56,25 @@ def __init__(self): super().__init__() def init_quantities(self): - re_float = r'[\d\.\-\+Ee]+' - re_float_dexp = r'[\d\.\-\+EeDd]+' - re_eigs = re.compile(r'(\-?\d*\.\d+\s*)') - re_force = re.compile(r'(\d+\s*\-?\d*\..*)') + re_float = r"[\d\.\-\+Ee]+" + re_float_dexp = r"[\d\.\-\+EeDd]+" + re_eigs = re.compile(r"(\-?\d*\.\d+\s*)") + re_force = re.compile(r"(\d+\s*\-?\d*\..*)") def str_to_exp(val_in): - val = np.array(val_in.rstrip('.').upper().replace('D', 'E').split(), dtype=float) + val = np.array( + val_in.rstrip(".").upper().replace("D", "E").split(), dtype=float + ) return val[0] if len(val) == 1 else val def str_to_orbital_symmetries(val_in): - val = re.findall(r'(?:Occupied|Virtual)\s*((?:\(.+\)\s*)*)', val_in) - return [v.replace('(', '').replace(')', '').split() for v in val] + val = re.findall(r"(?:Occupied|Virtual)\s*((?:\(.+\)\s*)*)", val_in) + return [v.replace("(", "").replace(")", "").split() for v in val] def str_to_eigenvalues(val_in): val = val_in.split() - spin_index = 0 if val[0] == 'Alpha' else 1 - occ = 0. if val[1] == 'virt' else 1. + spin_index = 0 if val[0] == "Alpha" else 1 + occ = 0.0 if val[1] == "virt" else 1.0 eigs, occs = [[], []], [[], []] # gaussian sometimes prints values without spaces so we need a re matching eigs[spin_index] = re_eigs.findall(val_in) @@ -59,14 +82,14 @@ def str_to_eigenvalues(val_in): return eigs, occs def str_to_normal_modes(val_in): - val = [v.split() for v in val_in.split('\n')] + val = [v.split() for v in val_in.split("\n")] return np.array([v[2:] for v in val if len(v) >= 5], dtype=float) def str_to_force_constants(val_in): val = re_force.findall(val_in) fc = [] for v in val: - v = np.array(v.upper().replace('D', 'E').split(), dtype=float) + v = np.array(v.upper().replace("D", "E").split(), dtype=float) index = int(v[0]) if len(fc) < index: fc.append([]) @@ -79,284 +102,508 @@ def str_to_force_constants(val_in): orientation_quantities = [ Quantity( - 'standard_orientation', - r'd orientation[\s\S]+?X\s*Y\s*Z\s*\-+\s*([\d\.\s\-]+?)\-{2}', - convert=False, str_operation=lambda x: np.array( - [v.split() for v in x.strip().split('\n')], dtype=float)), + "standard_orientation", + r"d orientation[\s\S]+?X\s*Y\s*Z\s*\-+\s*([\d\.\s\-]+?)\-{2}", + convert=False, + str_operation=lambda x: np.array( + [v.split() for v in x.strip().split("\n")], dtype=float + ), + ), Quantity( - 'input_orientation', - r't orientation[\s\S]+?X\s*Y\s*Z\s*\-+\s*([\d\.\s\-]+?)\-{2}', - convert=False, str_operation=lambda x: np.array( - [v.split() for v in x.strip().split('\n')], dtype=float)), + "input_orientation", + r"t orientation[\s\S]+?X\s*Y\s*Z\s*\-+\s*([\d\.\s\-]+?)\-{2}", + convert=False, + str_operation=lambda x: np.array( + [v.split() for v in x.strip().split("\n")], dtype=float + ), + ), Quantity( - 'z_matrix_orientation', - r'x orientation[\s\S]+?X\s*Y\s*Z\s*\-+\s*([\d\.\s\-]+?)\-{2}', - convert=False, str_operation=lambda x: np.array( - [v.split() for v in x.strip().split('\n')], dtype=float))] + "z_matrix_orientation", + r"x orientation[\s\S]+?X\s*Y\s*Z\s*\-+\s*([\d\.\s\-]+?)\-{2}", + convert=False, + str_operation=lambda x: np.array( + [v.split() for v in x.strip().split("\n")], dtype=float + ), + ), + ] calculation_quantities = [ Quantity( - 'energy_total', - rf'\n *(?:Energy=|Electronic Energy)\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), - Quantity( - 'hybrid_xc_coeff1', rf'ScaHFX=\s*({re_float})', dtype=float), + "energy_total", + rf"\n *(?:Energy=|Electronic Energy)\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), + Quantity("hybrid_xc_coeff1", rf"ScaHFX=\s*({re_float})", dtype=float), Quantity( - 'hybrid_xc_coeff2', - rf'ScaDFX=\s*({re_float}\s*{re_float}\s*{re_float}\s*{re_float})', - flatten=False), - Quantity('mp', r'(E2) ='), + "hybrid_xc_coeff2", + rf"ScaDFX=\s*({re_float}\s*{re_float}\s*{re_float}\s*{re_float})", + flatten=False, + ), + Quantity("mp", r"(E2) ="), Quantity( - 'energy_total_mp', - rf'(?:EUMP2|EUMP3|UMP4\(DQ\)|UMP4\(SDQ\)|UMP4\(SDTQ\)|MP5)\s*=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "energy_total_mp", + rf"(?:EUMP2|EUMP3|UMP4\(DQ\)|UMP4\(SDQ\)|UMP4\(SDTQ\)|MP5)\s*=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'mp2_correction_energy', - rf'E2 =\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "mp2_correction_energy", + rf"E2 =\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'mp3_correction_energy', - rf'E3\s*=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "mp3_correction_energy", + rf"E3\s*=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'mp4dq_correction_energy', - rf'E4\(DQ\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "mp4dq_correction_energy", + rf"E4\(DQ\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'mp4sdq_correction_energy', - rf'E4\(SDQ\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "mp4sdq_correction_energy", + rf"E4\(SDQ\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'mp4sdtq_correction_energy', - rf'E4\(SDTQ\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "mp4sdtq_correction_energy", + rf"E4\(SDTQ\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'mp5_correction_energy', - rf'DEMP5 =\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), - Quantity('cc', r'((?:CCSD\(T\)|E\(CORR\)))'), + "mp5_correction_energy", + rf"DEMP5 =\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), + Quantity("cc", r"((?:CCSD\(T\)|E\(CORR\)))"), Quantity( - 'energy_total_cc', - rf'(?:\n *CCSD\(T\)|E\(CORR\))\s*=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "energy_total_cc", + rf"(?:\n *CCSD\(T\)|E\(CORR\))\s*=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'ccsd_correction_energy', - rf'DE\(Corr\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), - Quantity('qci', r'(Quadratic Configuration Interaction)'), + "ccsd_correction_energy", + rf"DE\(Corr\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), + Quantity("qci", r"(Quadratic Configuration Interaction)"), Quantity( - 'energy_total_qci', - rf'(?:QCISD\(T\)|E\(Z\)|QCISD\(TQ\))=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "energy_total_qci", + rf"(?:QCISD\(T\)|E\(Z\)|QCISD\(TQ\))=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'qcisd_correction_energy', - rf'DE\(Z\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "qcisd_correction_energy", + rf"DE\(Z\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'qcisdtq_correction_energy', - rf'DE5\s*=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), - Quantity('ci', r'(\s{2}Configuration Interaction)'), + "qcisdtq_correction_energy", + rf"DE5\s*=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), + Quantity("ci", r"(\s{2}Configuration Interaction)"), Quantity( - 'energy_total_ci', - rf'E\(CI\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "energy_total_ci", + rf"E\(CI\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'ci_correction_energy', - rf'DE\(CI\)=\s*({re_float_dexp})', - str_operation=str_to_exp, convert=False, unit='hartree', repeats=True), + "ci_correction_energy", + rf"DE\(CI\)=\s*({re_float_dexp})", + str_operation=str_to_exp, + convert=False, + unit="hartree", + repeats=True, + ), Quantity( - 'semiempirical_method', - r'([-A-Z0-9]+\s*calculation of energy[a-zA-Z,. ]+)'), + "semiempirical_method", + r"([-A-Z0-9]+\s*calculation of energy[a-zA-Z,. ]+)", + ), Quantity( - 'semiempirical_energy', - rf'It=\s*\d+\s*PL=\s*[-+0-9EeDd.]+\s*DiagD=[A-Z]\s*ESCF=\s*({re_float})', - repeats=True, unit='hartree', dtype=float), + "semiempirical_energy", + rf"It=\s*\d+\s*PL=\s*[-+0-9EeDd.]+\s*DiagD=[A-Z]\s*ESCF=\s*({re_float})", + repeats=True, + unit="hartree", + dtype=float, + ), Quantity( - 'molmech_method', - r'([a-zA-Z0-9]+\s*calculation of energy[a-z,. ]+)'), + "molmech_method", r"([a-zA-Z0-9]+\s*calculation of energy[a-z,. ]+)" + ), Quantity( - 'excited_state', - rf'Excited State\s*(\d+):\s*\S+\s*({re_float})\s*eV\s*{re_float}\s*nm\s*' - rf'f=({re_float})\s*<[\w*]+>=({re_float})\s*(.*)', - repeats=True, convert=False), + "excited_state", + rf"Excited State\s*(\d+):\s*\S+\s*({re_float})\s*eV\s*{re_float}\s*nm\s*" + rf"f=({re_float})\s*<[\w*]+>=({re_float})\s*(.*)", + repeats=True, + convert=False, + ), Quantity( - 'casscf_energy', - rf'\(\s*[0-9]+\)\s*EIGENVALUE\s*({re_float})', - repeats=True, dtype=float, unit='hartree'), + "casscf_energy", + rf"\(\s*[0-9]+\)\s*EIGENVALUE\s*({re_float})", + repeats=True, + dtype=float, + unit="hartree", + ), Quantity( - 'optimization_completed', - r'(Optimization (?:completed|stopped))', flatten=False, convert=False), + "optimization_completed", + r"(Optimization (?:completed|stopped))", + flatten=False, + convert=False, + ), Quantity( - 'population_analysis', - r'(Population analysis using the SCF density[\s\S]+?Condensed)', - sub_parser=TextParser(quantities=[ - Quantity( - 'orbital_symmetries', - r'Orbital symmetries:([\s\S]*?)electro', - repeats=False, str_operation=str_to_orbital_symmetries), - Quantity( - 'x_gaussian_elstate_symmetry', - r'nic state is\s*(.+)\.', flatten=False), - Quantity( - 'eigenvalues', - r'(Alpha|Beta)\s*(occ|virt)\. eigenvalues \-\-\s*(.+)', - repeats=True, str_operation=str_to_eigenvalues, convert=False)])), + "population_analysis", + r"(Population analysis using the SCF density[\s\S]+?Condensed)", + sub_parser=TextParser( + quantities=[ + Quantity( + "orbital_symmetries", + r"Orbital symmetries:([\s\S]*?)electro", + repeats=False, + str_operation=str_to_orbital_symmetries, + ), + Quantity( + "x_gaussian_elstate_symmetry", + r"nic state is\s*(.+)\.", + flatten=False, + ), + Quantity( + "eigenvalues", + r"(Alpha|Beta)\s*(occ|virt)\. eigenvalues \-\-\s*(.+)", + repeats=True, + str_operation=str_to_eigenvalues, + convert=False, + ), + ] + ), + ), Quantity( - 'charge', - rf'\n *Charge=\s*({re_float})\s*electrons', dtype=float, unit='elementary_charge'), + "charge", + rf"\n *Charge=\s*({re_float})\s*electrons", + dtype=float, + unit="elementary_charge", + ), Quantity( - 'dipole', - r''.join([r'%s=\s*([\-\d\.]+)\s*' % c for c in ['X', 'Y', 'Z']]), - dtype=float, unit='debye'), + "dipole", + r"".join([r"%s=\s*([\-\d\.]+)\s*" % c for c in ["X", "Y", "Z"]]), + dtype=float, + unit="debye", + ), Quantity( - 'quadrupole', - r''.join([r'%s=\s*([\-\d\.]+)\s*' % c for c in [ - 'XX', 'YY', 'ZZ', 'XY', 'XZ', 'YZ']]), - dtype=float, unit='debye * angstrom'), + "quadrupole", + r"".join( + [ + r"%s=\s*([\-\d\.]+)\s*" % c + for c in ["XX", "YY", "ZZ", "XY", "XZ", "YZ"] + ] + ), + dtype=float, + unit="debye * angstrom", + ), Quantity( - 'octapole', - r''.join([r'%s=\s*([\-\d\.]+)\s*' % c for c in [ - 'XXX', 'YYY', 'ZZZ', 'XYY', 'XXY', 'XXZ', 'XZZ', 'YZZ', 'YYZ', 'XYZ']]), - dtype=float, unit='debye * angstrom**2'), + "octapole", + r"".join( + [ + r"%s=\s*([\-\d\.]+)\s*" % c + for c in [ + "XXX", + "YYY", + "ZZZ", + "XYY", + "XXY", + "XXZ", + "XZZ", + "YZZ", + "YYZ", + "XYZ", + ] + ] + ), + dtype=float, + unit="debye * angstrom**2", + ), Quantity( - 'hexadecapole', - r''.join([r'%s=\s*([\-\d\.]+)\s*' % c for c in [ - 'XXXX', 'YYYY', 'ZZZZ', 'XXXY', 'XXXZ', 'YYYX', 'YYYZ', 'ZZZX', - 'ZZZY', 'XXYY', 'XXZZ', 'YYZZ', 'XXYZ', 'YYXZ', 'ZZXY']]), - dtype=float, unit='debye * angstrom**3'), + "hexadecapole", + r"".join( + [ + r"%s=\s*([\-\d\.]+)\s*" % c + for c in [ + "XXXX", + "YYYY", + "ZZZZ", + "XXXY", + "XXXZ", + "YYYX", + "YYYZ", + "ZZZX", + "ZZZY", + "XXYY", + "XXZZ", + "YYZZ", + "XXYZ", + "YYXZ", + "ZZXY", + ] + ] + ), + dtype=float, + unit="debye * angstrom**3", + ), Quantity( - 'frequencies', - r'\n *Frequencies \-\-\s*(.+)', dtype=float, repeats=True), + "frequencies", r"\n *Frequencies \-\-\s*(.+)", dtype=float, repeats=True + ), Quantity( - 'reduced_masses', - r'\n *Red\. masses \-\-\s*(.+)', str_operation=lambda x: [float(v) for v in x.split()], repeats=True), + "reduced_masses", + r"\n *Red\. masses \-\-\s*(.+)", + str_operation=lambda x: [float(v) for v in x.split()], + repeats=True, + ), Quantity( - 'normal_modes', - r'Atom\s*AN.*\s*([\-\d\s\.]+)', - str_operation=str_to_normal_modes, convert=False, repeats=True), + "normal_modes", + r"Atom\s*AN.*\s*([\-\d\s\.]+)", + str_operation=str_to_normal_modes, + convert=False, + repeats=True, + ), Quantity( - 'temperature_pressure', - rf'Temperature\s*({re_float})\s*Kelvin\.\s*Pressure\s*({re_float})\s*Atm\.'), + "temperature_pressure", + rf"Temperature\s*({re_float})\s*Kelvin\.\s*Pressure\s*({re_float})\s*Atm\.", + ), Quantity( - 'moments', - r'(?:Eigenvalues|EIGENVALUES) \-\-\s*(\d+\.\d{5})\s*(\d+\.\d{5})\s*(\d+\.\d{5})', - dtype=float, unit='amu*angstrom**2'), + "moments", + r"(?:Eigenvalues|EIGENVALUES) \-\-\s*(\d+\.\d{5})\s*(\d+\.\d{5})\s*(\d+\.\d{5})", + dtype=float, + unit="amu*angstrom**2", + ), Quantity( - 'zero_point_energy', - rf'Zero\-point correction=\s*({re_float})', - dtype=float, unit='hartree'), + "zero_point_energy", + rf"Zero\-point correction=\s*({re_float})", + dtype=float, + unit="hartree", + ), Quantity( - 'thermal_correction_energy', - rf'Thermal correction to Energy=\s*({re_float})', - dtype=float, unit='hartree'), + "thermal_correction_energy", + rf"Thermal correction to Energy=\s*({re_float})", + dtype=float, + unit="hartree", + ), Quantity( - 'thermal_correction_enthalpy', - rf'Thermal correction to Enthalpy=\s*({re_float})', - dtype=float, unit='hartree'), + "thermal_correction_enthalpy", + rf"Thermal correction to Enthalpy=\s*({re_float})", + dtype=float, + unit="hartree", + ), Quantity( - 'thermal_correction_free_energy', - rf'Thermal correction to Gibbs Free Energy=\s*({re_float})', - dtype=float, unit='hartree'), + "thermal_correction_free_energy", + rf"Thermal correction to Gibbs Free Energy=\s*({re_float})", + dtype=float, + unit="hartree", + ), Quantity( - 'forces', - r'Forces \(Hartrees/Bohr\)\s*Number\s*Number\s*X\s*Y\s*Z\s*\-+\s*([\d\s\-\.]+?)\s*\-\-', - str_operation=lambda x: np.array([xi.split()[2:5] for xi in x.split('\n')], dtype=float), - convert=False, unit='hartree/bohr'), + "forces", + r"Forces \(Hartrees/Bohr\)\s*Number\s*Number\s*X\s*Y\s*Z\s*\-+\s*([\d\s\-\.]+?)\s*\-\-", + str_operation=lambda x: np.array( + [xi.split()[2:5] for xi in x.split("\n")], dtype=float + ), + convert=False, + unit="hartree/bohr", + ), Quantity( - 'force_constants', - r'Force constants in Cartesian coordinates:\s*([\s\S]+?)Force', - str_operation=str_to_force_constants, convert=False), + "force_constants", + r"Force constants in Cartesian coordinates:\s*([\s\S]+?)Force", + str_operation=str_to_force_constants, + convert=False, + ), Quantity( - 'scf_iteration', - r'(cle\s*\d+[\s\S]+?(?:Cy|\n\n|Leave))', sub_parser=TextParser(quantities=[ - Quantity( - 'number', r'cle\s*(\d+)', dtype=int), - Quantity( - 'energy_total_scf_iteration', - rf' E=\s*({re_float})', dtype=float, unit='hartree'), - Quantity( - 'x_gaussian_delta_energy_total_scf_iteration', - rf'Delta\-E=\s*({re_float})', dtype=float, unit='hartree')]), - repeats=True), + "scf_iteration", + r"(cle\s*\d+[\s\S]+?(?:Cy|\n\n|Leave))", + sub_parser=TextParser( + quantities=[ + Quantity("number", r"cle\s*(\d+)", dtype=int), + Quantity( + "energy_total_scf_iteration", + rf" E=\s*({re_float})", + dtype=float, + unit="hartree", + ), + Quantity( + "x_gaussian_delta_energy_total_scf_iteration", + rf"Delta\-E=\s*({re_float})", + dtype=float, + unit="hartree", + ), + ] + ), + repeats=True, + ), Quantity( - 'scf_iteration_final', - r'(SCF Done:[\s\S]+?(?:Leave|\n\n|End))', sub_parser=TextParser(quantities=[ - Quantity( - 'x_gaussian_single_configuration_calculation_converged', - r'(SCF Done)', convert=False, flatten=False), - Quantity( - 'x_gaussian_hf_detect', r'E\((.+?)\)'), - Quantity( - 'energy_total', - rf'({re_float})\s*A\.U\.', dtype=float, unit='hartree'), - Quantity( - 'x_gaussian_energy_error', - rf'Conv\s*=\s*({re_float_dexp})', unit='hartree', convert=False, - str_operation=str_to_exp), - Quantity( - ' energy_kinetic_electronic', - rf'KE\s*=\s*({re_float_dexp})', unit='hartree', convert=False, - str_operation=str_to_exp), - Quantity( - 'spin_S2', rf'before annihilation\s*({re_float})', dtype=float), - Quantity( - 'x_gaussian_after_annihilation_spin_S2', - rf',\s*after\s*({re_float})', dtype=float), - Quantity( - 'x_gaussian_perturbation_energy', - r'[()A-Z0-9]+\s*=\s*[-+0-9D.]+\s*[()A-Z0-9]+\s*=\s*([-+0-9D.]+)', - convert=False, str_operation=str_to_exp, unit='hartree')]), repeats=False) + "scf_iteration_final", + r"(SCF Done:[\s\S]+?(?:Leave|\n\n|End))", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_gaussian_single_configuration_calculation_converged", + r"(SCF Done)", + convert=False, + flatten=False, + ), + Quantity("x_gaussian_hf_detect", r"E\((.+?)\)"), + Quantity( + "energy_total", + rf"({re_float})\s*A\.U\.", + dtype=float, + unit="hartree", + ), + Quantity( + "x_gaussian_energy_error", + rf"Conv\s*=\s*({re_float_dexp})", + unit="hartree", + convert=False, + str_operation=str_to_exp, + ), + Quantity( + " energy_kinetic_electronic", + rf"KE\s*=\s*({re_float_dexp})", + unit="hartree", + convert=False, + str_operation=str_to_exp, + ), + Quantity( + "spin_S2", + rf"before annihilation\s*({re_float})", + dtype=float, + ), + Quantity( + "x_gaussian_after_annihilation_spin_S2", + rf",\s*after\s*({re_float})", + dtype=float, + ), + Quantity( + "x_gaussian_perturbation_energy", + r"[()A-Z0-9]+\s*=\s*[-+0-9D.]+\s*[()A-Z0-9]+\s*=\s*([-+0-9D.]+)", + convert=False, + str_operation=str_to_exp, + unit="hartree", + ), + ] + ), + repeats=False, + ), ] run_quantities = [ Quantity( - 'x_gaussian_settings_corrected', - r'\-{10}\s*(#[\s\S]+?)\-{10}', + "x_gaussian_settings_corrected", + r"\-{10}\s*(#[\s\S]+?)\-{10}", convert=False, - str_operation=lambda x: re.sub(r'\s*\n\s*', '', x).strip()), # when x_gaussian_settings_corrected is no longer stored, `strip()` can be removed - Quantity( - 'charge', r'Charge =\s*([\-\+\d]+)', dtype=int), - Quantity( - 'spin_target', r'Multiplicity =\s*([\-\+\d]+)', dtype=int), + str_operation=lambda x: re.sub(r"\s*\n\s*", "", x).strip(), + ), # when x_gaussian_settings_corrected is no longer stored, `strip()` can be removed + Quantity("charge", r"Charge =\s*([\-\+\d]+)", dtype=int), + Quantity("spin_target", r"Multiplicity =\s*([\-\+\d]+)", dtype=int), Quantity( - 'lattice_vector', r'(?:TV|Tv)\s*0?\s*([\d\. ]+)', dtype=float, repeats=True), + "lattice_vector", + r"(?:TV|Tv)\s*0?\s*([\d\. ]+)", + dtype=float, + repeats=True, + ), Quantity( - 'x_gaussian_atomic_masses', r'IAtWgt=([ \d\.]+)', dtype=float, repeats=True), + "x_gaussian_atomic_masses", + r"IAtWgt=([ \d\.]+)", + dtype=float, + repeats=True, + ), Quantity( - 'system', - r'((?:Standard|Z-Matrix|Input) orientation:[\s\S]+?)' - r'(?:Predicted change in Energy|PREDICTED CHANGE IN ENERGY|Z-Matrix orientation|Normal termination)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'calculation', - r'( of initial guess=[\s\S]+?(?:Initial guess read from the read\-write|\Z))', - sub_parser=TextParser(quantities=calculation_quantities), repeats=True) - ] + calculation_quantities + orientation_quantities)), + "system", + r"((?:Standard|Z-Matrix|Input) orientation:[\s\S]+?)" + r"(?:Predicted change in Energy|PREDICTED CHANGE IN ENERGY|Z-Matrix orientation|Normal termination)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "calculation", + r"( of initial guess=[\s\S]+?(?:Initial guess read from the read\-write|\Z))", + sub_parser=TextParser(quantities=calculation_quantities), + repeats=True, + ) + ] + + calculation_quantities + + orientation_quantities + ), + ), Quantity( - 'iteration', - r'ation Nr\.([\s\S]+?)(?:Iter|\n\n)', - repeats=True, sub_parser=TextParser(quantities=calculation_quantities)), - Quantity('program_cpu_time', r'Job cpu time:(.*)\.\n', flatten=False), + "iteration", + r"ation Nr\.([\s\S]+?)(?:Iter|\n\n)", + repeats=True, + sub_parser=TextParser(quantities=calculation_quantities), + ), + Quantity("program_cpu_time", r"Job cpu time:(.*)\.\n", flatten=False), Quantity( - 'program_termination_date', - r'Normal termination of Gaussian\s*\d+\s*at\s*(.*)\.\n', flatten=False) + "program_termination_date", + r"Normal termination of Gaussian\s*\d+\s*at\s*(.*)\.\n", + flatten=False, + ), ] self._quantities = [ Quantity( - 'program', - r'\s*Gaussian\s*([0-9]+):\s*(\S+)\s*(\S+)\s*(\d+\-\w+\-\d+)', - convert=False), - Quantity('x_gaussian_chk_file', r'%[Cc]hk=([A-Za-z0-9.]*)', dtype=str), - Quantity('x_gaussian_memory', r'%[Mm]em=([A-Za-z0-9.]*)', dtype=str), + "program", + r"\s*Gaussian\s*([0-9]+):\s*(\S+)\s*(\S+)\s*(\d+\-\w+\-\d+)", + convert=False, + ), + Quantity("x_gaussian_chk_file", r"%[Cc]hk=([A-Za-z0-9.]*)", dtype=str), + Quantity("x_gaussian_memory", r"%[Mm]em=([A-Za-z0-9.]*)", dtype=str), Quantity( - 'x_gaussian_number_of_processors', - r'%[Nn][Pp]roc=([A-Za-z0-9.]*)', dtype=str), + "x_gaussian_number_of_processors", + r"%[Nn][Pp]roc=([A-Za-z0-9.]*)", + dtype=str, + ), Quantity( - 'run', - r'(-{10}\s*#[\s\S]+?Normal termination.*\n)', repeats=True, - sub_parser=TextParser(quantities=run_quantities)), + "run", + r"(-{10}\s*#[\s\S]+?Normal termination.*\n)", + repeats=True, + sub_parser=TextParser(quantities=run_quantities), + ), ] @@ -366,298 +613,309 @@ def __init__(self): self.out_parser = GaussianOutParser() self._xc_functional_map = { - 'S': [{'name': 'LDA_X'}], - 'XA': [{'name': 'LDA_X_EMPIRICAL'}], - 'VWN': [{'name': 'LDA_C_VWN'}], - 'VWN3': [{'name': 'LDA_C_VWN_3'}], - 'SVWN': [{'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'}], - 'PBEH': [{'name': 'GGA_X_WPBEH'}], - 'WPBEH': [{'name': 'GGA_X_WPBEH'}], - 'PW91PW91': [{'name': 'GGA_C_PW91'}, {'name': 'GGA_X_PW91'}], - 'M06L': [{'name': 'MGGA_C_M06_L'}, {'name': 'MGGA_X_M06_L'}], - 'M11L': [{'name': 'MGGA_C_M11_L'}, {'name': 'MGGA_X_M11_L'}], - 'SOGGA11': [{'name': 'GGA_X_SOGGA11'}, {'name': 'GGA_C_SOGGA11'}], - 'MN12L': [{'name': 'MGGA_X_MN12_L'}, {'name': 'MGGA_C_MN12_L'}], - 'N12': [{'name': 'GGA_C_N12'}, {'name': 'GGA_X_N12'}], - 'VSXC': [{'name': 'MGGA_X_GVT4'}, {'name': 'MGGA_C_VSXC'}], - 'HCTH93': [{'name': 'GGA_XC_HCTH_93'}], - 'HCTH147': [{'name': 'GGA_XC_HCTH_147'}], - 'HCTH407': [{'name': 'GGA_XC_HCTH_407'}], - 'HCTH': [{'name': 'GGA_XC_HCTH_407'}], - 'B97D': [{'name': 'GGA_XC_B97_D'}], - 'B97D3': [{'name': 'GGA_XC_B97_D3'}], - 'MPW': [{'name': 'GGA_X_MPW91'}], - 'G96': [{'name': 'GGA_X_G96'}], - 'O': [{'name': 'GGA_X_OPTX'}], - 'BRX': [{'name': 'MGGA_X_BR89'}], - 'PKZB': [{'name': 'MGGA_C_PKZB'}, {'name': 'MGGA_X_PKZB'}], - 'PL': [{'name': 'LDA_C_PZ'}], - 'P86': [{'name': 'GGA_C_P86'}], - 'B95': [{'name': 'MGGA_C_BC95'}], - 'KCIS': [{'name': 'MGGA_C_KCIS'}], - 'BRC': [{'name': 'MGGA_X_BR89'}], - 'VP86': [{'name': 'LDA_C_VWN_RPA'}, {'name': 'GGA_C_P86'}], - 'V5LYP': [{'name': 'LDA_C_VWN_RPA'}, {'name': 'GGA_C_LYP'}], - 'THCTH': [{'name': 'MGGA_X_TAU_HCTH'}, {'name': 'GGA_C_TAU_HCTH'}], - 'TPSSTPSS': [{'name': 'MGGA_C_TPSS'}, {'name': 'MGGA_X_TPSS'}], - 'B3LYP': [{'name': 'HYB_GGA_XC_B3LYP'}], - 'B3PW91': [{'name': 'HYB_GGA_XC_B3PW91'}], - 'B3P86': [{'name': 'HYB_GGA_XC_B3P86'}], - 'B1B95': [{'name': 'HYB_MGGA_XC_B88B95'}], - 'MPW1PW91': [{'name': 'HYB_GGA_XC_MPW1PW'}], - 'MPW1LYP': [{'name': 'HYB_GGA_XC_MPW1LYP'}], - 'MPW1PBE': [{'name': 'HYB_GGA_XC_MPW1PBE'}], - 'MPW3PBE': [{'name': 'HYB_GGA_XC_MPW3PBE'}], - 'B98': [{'name': 'HYB_GGA_XC_SB98_2C'}], - 'B971': [{'name': 'HYB_GGA_XC_B97_1'}], - 'B972': [{'name': 'HYB_GGA_XC_B97_2'}], - 'O3LYP': [{'name': 'HYB_GGA_XC_O3LYP'}], - 'TPSSH': [{'name': 'HYB_MGGA_XC_TPSSH'}], - 'BMK': [{'name': 'HYB_GGA_XC_B97_K'}], - 'X3LYP': [{'name': 'HYB_GGA_XC_X3LYP'}], - 'THCTHHYB': [{'name': 'HYB_MGGA_X_TAU_HCTH'}, {'name': 'GGA_C_HYB_TAU_HCTH'}], - 'BHANDH': [{'name': 'HYB_GGA_XC_BHANDH'}], - 'BHANDHLYP': [{'name': 'HYB_GGA_XC_BHANDHLYP'}], - 'APF': [{'name': 'HYB_GGA_XC_APF'}], - 'APFD': [{'name': 'HYB_GGA_XC_APFD'}], - 'HF': [{'name': 'HF_HF_X'}], - 'RHF': [{'name': 'HF_RHF_X'}], - 'UHF': [{'name': 'HF_UHF_X'}], - 'ROHF': [{'name': 'HF_ROHF_X'}], - 'CC': [{'name': 'HF_CCD'}], - 'QCID': [{'name': 'HF_CCD'}], - 'CCD': [{'name': 'HF_CCD'}], - 'CCSD': [{'name': 'HF_CCSD'}], - 'CCSD(T)': [{'name': 'HF_CCSD(T)'}], - 'CCSD-T': [{'name': 'HF_CCSD(T)'}], - 'CI': [{'name': 'HF_CI'}], - 'CID': [{'name': 'HF_CID'}], - 'CISD': [{'name': 'HF_CISD'}], - 'QCISD': [{'name': 'HF_QCISD'}], - 'QCISD(T)': [{'name': 'HF_QCISD(T)'}], - 'QCISD(TQ)': [{'name': 'HF_QCISD(TQ)'}], - 'OHSE2PBE': [{'name': 'HYB_GGA_XC_HSE03'}], - 'HSEH1PBE': [{'name': 'HYB_GGA_XC_HSE06'}], - 'OHSE1PBE': [{'name': 'HYB_GGA_XC_HSEOLD'}], - 'PBEH1PBE': [{'name': 'HYB_GGA_XC_PBEH1PBE'}], - 'PBE1PBE': [{'name': 'HYB_GGA_XC_PBEH'}], - 'M05': [{'name': 'MGGA_X_M05'}, {'name': 'MGGA_C_M05'}], - 'M052X': [{'name': 'HYB_MGGA_X_M05_2X'}, {'name': 'MGGA_C_M05_2X'}], - 'M06': [{'name': 'HYB_MGGA_X_M06'}, {'name': 'MGGA_C_M06'}], - 'M062X': [{'name': 'HYB_MGGA_X_M06_2X'}, {'name': 'MGGA_C_M06_2X'}], - 'M06HF': [{'name': 'HYB_MGGA_X_M06_HF'}, {'name': 'MGGA_C_M06_HF'}], - 'M11': [{'name': 'HYB_MGGA_X_M11'}, {'name': 'MGGA_C_M11'}], - 'MP2': [{'name': 'HF_MP2'}], - 'MP3': [{'name': 'HF_MP3'}], - 'MP4': [{'name': 'HF_MP4'}], - 'MP4(DQ)': [{'name': 'HF_MP4(DQ)'}], - 'MP4(SDQ)': [{'name': 'HF_MP4(SDQ)'}], - 'MP4(SDTQ)': [{'name': 'HF_MP4SDTQ'}], - 'MP5': [{'name': 'HF_MP5'}], - 'AM1': [{'name': 'HYB_AM1'}], - 'PM3': [{'name': 'HYB_PM3'}], - 'PM3MM': [{'name': 'HYB_PM3MM'}], - 'PM3D3': [{'name': 'HYB_PM3D3'}], - 'PM6': [{'name': 'HYB_PM6'}], - 'PM7': [{'name': 'HYB_PM7'}], - 'PM7R6': [{'name': 'HYB_PM7R6'}], - 'PM7MOPAC': [{'name': 'HYB_PM7MOPAC'}], - 'CBS-4': [{'name': 'HYB_CBS-4'}], - 'CBS-4M': [{'name': 'HYB_CBS-4M'}], - 'CBS-4O': [{'name': 'HYB_CBS-4O'}], - 'CBS-APNO': [{'name': 'HYB_CBS-APNO'}], - 'CBS-Q': [{'name': 'HYB_CBS-Q'}], - 'CBS-QB3': [{'name': 'HYB_CBS-QB3'}], - 'CBS-QB3O': [{'name': 'HYB_CBS-QB3O'}], - 'ROCBS-QB3': [{'name': 'HYB_ROCBS-QB3'}], - 'SOGGA11X': [{'name': 'HYB_GGA_X_SOGGA11_X'}, {'name': 'HYB_GGA_X_SOGGA11_X'}], - 'MN12SX': [{'name': 'HYB_MGGA_X_MN12_SX'}, {'name': 'MGGA_C_MN12_SX'}], - 'N12SX': [{'name': 'HYB_GGA_X_N12_SX'}, {'name': 'GGA_C_N12_SX'}], - 'LC-WPBE': [{'name': 'HYB_GGA_XC_LC_WPBE'}], - 'CAM-B3LYP': [{'name': 'HYB_GGA_XC_CAM_B3LYP'}], - 'WB97': [{'name': 'HYB_GGA_XC_WB97'}], - 'WB97X': [{'name': 'HYB_GGA_XC_WB97X'}], - 'WB97XD': [{'name': 'HYB_GGA_XC_WB97X_D'}], - 'HISSBPBE': [{'name': 'HYB_HISSBPBE'}], - 'B2PLYP': [{'name': 'HYB_B2PLYP'}], - 'MPW2PLYP': [{'name': 'HYB_MPW2PLYP'}], - 'B2PLYPD': [{'name': 'HYB_B2PLYPD'}], - 'MPW2PLYPD': [{'name': 'HYB_MPW2PLYPD'}], - 'B2PLYPD3': [{'name': 'HYB_B2PLYPD3'}], - 'MPW2PLYPD3': [{'name': 'HYB_MPW2PLYPD3'}], - 'G1': [{'name': 'HYB_G1'}], - 'G2': [{'name': 'HYB_G2'}], - 'G2MP2': [{'name': 'HYB_G2MP2'}], - 'G3': [{'name': 'HYB_G3'}], - 'G3B3': [{'name': 'HYB_G3B3'}], - 'G3MP2': [{'name': 'HYB_G3MP2'}], - 'G3MP2B3': [{'name': 'HYB_G3MP2B3'}], - 'G4': [{'name': 'HYB_G4'}], - 'G4MP2': [{'name': 'HYB_G4MP2'}], - 'LC-': [{'name': 'GGA_X_ITYH_LONG_RANGE'}], - 'BP': [{'name': 'GGA_X_B88'}, {'name': 'GGA_C_P86'}], - 'BP86': [{'name': 'GGA_X_B88'}, {'name': 'GGA_C_P86'}] + "S": [{"name": "LDA_X"}], + "XA": [{"name": "LDA_X_EMPIRICAL"}], + "VWN": [{"name": "LDA_C_VWN"}], + "VWN3": [{"name": "LDA_C_VWN_3"}], + "SVWN": [{"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"}], + "PBEH": [{"name": "GGA_X_WPBEH"}], + "WPBEH": [{"name": "GGA_X_WPBEH"}], + "PW91PW91": [{"name": "GGA_C_PW91"}, {"name": "GGA_X_PW91"}], + "M06L": [{"name": "MGGA_C_M06_L"}, {"name": "MGGA_X_M06_L"}], + "M11L": [{"name": "MGGA_C_M11_L"}, {"name": "MGGA_X_M11_L"}], + "SOGGA11": [{"name": "GGA_X_SOGGA11"}, {"name": "GGA_C_SOGGA11"}], + "MN12L": [{"name": "MGGA_X_MN12_L"}, {"name": "MGGA_C_MN12_L"}], + "N12": [{"name": "GGA_C_N12"}, {"name": "GGA_X_N12"}], + "VSXC": [{"name": "MGGA_X_GVT4"}, {"name": "MGGA_C_VSXC"}], + "HCTH93": [{"name": "GGA_XC_HCTH_93"}], + "HCTH147": [{"name": "GGA_XC_HCTH_147"}], + "HCTH407": [{"name": "GGA_XC_HCTH_407"}], + "HCTH": [{"name": "GGA_XC_HCTH_407"}], + "B97D": [{"name": "GGA_XC_B97_D"}], + "B97D3": [{"name": "GGA_XC_B97_D3"}], + "MPW": [{"name": "GGA_X_MPW91"}], + "G96": [{"name": "GGA_X_G96"}], + "O": [{"name": "GGA_X_OPTX"}], + "BRX": [{"name": "MGGA_X_BR89"}], + "PKZB": [{"name": "MGGA_C_PKZB"}, {"name": "MGGA_X_PKZB"}], + "PL": [{"name": "LDA_C_PZ"}], + "P86": [{"name": "GGA_C_P86"}], + "B95": [{"name": "MGGA_C_BC95"}], + "KCIS": [{"name": "MGGA_C_KCIS"}], + "BRC": [{"name": "MGGA_X_BR89"}], + "VP86": [{"name": "LDA_C_VWN_RPA"}, {"name": "GGA_C_P86"}], + "V5LYP": [{"name": "LDA_C_VWN_RPA"}, {"name": "GGA_C_LYP"}], + "THCTH": [{"name": "MGGA_X_TAU_HCTH"}, {"name": "GGA_C_TAU_HCTH"}], + "TPSSTPSS": [{"name": "MGGA_C_TPSS"}, {"name": "MGGA_X_TPSS"}], + "B3LYP": [{"name": "HYB_GGA_XC_B3LYP"}], + "B3PW91": [{"name": "HYB_GGA_XC_B3PW91"}], + "B3P86": [{"name": "HYB_GGA_XC_B3P86"}], + "B1B95": [{"name": "HYB_MGGA_XC_B88B95"}], + "MPW1PW91": [{"name": "HYB_GGA_XC_MPW1PW"}], + "MPW1LYP": [{"name": "HYB_GGA_XC_MPW1LYP"}], + "MPW1PBE": [{"name": "HYB_GGA_XC_MPW1PBE"}], + "MPW3PBE": [{"name": "HYB_GGA_XC_MPW3PBE"}], + "B98": [{"name": "HYB_GGA_XC_SB98_2C"}], + "B971": [{"name": "HYB_GGA_XC_B97_1"}], + "B972": [{"name": "HYB_GGA_XC_B97_2"}], + "O3LYP": [{"name": "HYB_GGA_XC_O3LYP"}], + "TPSSH": [{"name": "HYB_MGGA_XC_TPSSH"}], + "BMK": [{"name": "HYB_GGA_XC_B97_K"}], + "X3LYP": [{"name": "HYB_GGA_XC_X3LYP"}], + "THCTHHYB": [ + {"name": "HYB_MGGA_X_TAU_HCTH"}, + {"name": "GGA_C_HYB_TAU_HCTH"}, + ], + "BHANDH": [{"name": "HYB_GGA_XC_BHANDH"}], + "BHANDHLYP": [{"name": "HYB_GGA_XC_BHANDHLYP"}], + "APF": [{"name": "HYB_GGA_XC_APF"}], + "APFD": [{"name": "HYB_GGA_XC_APFD"}], + "HF": [{"name": "HF_HF_X"}], + "RHF": [{"name": "HF_RHF_X"}], + "UHF": [{"name": "HF_UHF_X"}], + "ROHF": [{"name": "HF_ROHF_X"}], + "CC": [{"name": "HF_CCD"}], + "QCID": [{"name": "HF_CCD"}], + "CCD": [{"name": "HF_CCD"}], + "CCSD": [{"name": "HF_CCSD"}], + "CCSD(T)": [{"name": "HF_CCSD(T)"}], + "CCSD-T": [{"name": "HF_CCSD(T)"}], + "CI": [{"name": "HF_CI"}], + "CID": [{"name": "HF_CID"}], + "CISD": [{"name": "HF_CISD"}], + "QCISD": [{"name": "HF_QCISD"}], + "QCISD(T)": [{"name": "HF_QCISD(T)"}], + "QCISD(TQ)": [{"name": "HF_QCISD(TQ)"}], + "OHSE2PBE": [{"name": "HYB_GGA_XC_HSE03"}], + "HSEH1PBE": [{"name": "HYB_GGA_XC_HSE06"}], + "OHSE1PBE": [{"name": "HYB_GGA_XC_HSEOLD"}], + "PBEH1PBE": [{"name": "HYB_GGA_XC_PBEH1PBE"}], + "PBE1PBE": [{"name": "HYB_GGA_XC_PBEH"}], + "M05": [{"name": "MGGA_X_M05"}, {"name": "MGGA_C_M05"}], + "M052X": [{"name": "HYB_MGGA_X_M05_2X"}, {"name": "MGGA_C_M05_2X"}], + "M06": [{"name": "HYB_MGGA_X_M06"}, {"name": "MGGA_C_M06"}], + "M062X": [{"name": "HYB_MGGA_X_M06_2X"}, {"name": "MGGA_C_M06_2X"}], + "M06HF": [{"name": "HYB_MGGA_X_M06_HF"}, {"name": "MGGA_C_M06_HF"}], + "M11": [{"name": "HYB_MGGA_X_M11"}, {"name": "MGGA_C_M11"}], + "MP2": [{"name": "HF_MP2"}], + "MP3": [{"name": "HF_MP3"}], + "MP4": [{"name": "HF_MP4"}], + "MP4(DQ)": [{"name": "HF_MP4(DQ)"}], + "MP4(SDQ)": [{"name": "HF_MP4(SDQ)"}], + "MP4(SDTQ)": [{"name": "HF_MP4SDTQ"}], + "MP5": [{"name": "HF_MP5"}], + "AM1": [{"name": "HYB_AM1"}], + "PM3": [{"name": "HYB_PM3"}], + "PM3MM": [{"name": "HYB_PM3MM"}], + "PM3D3": [{"name": "HYB_PM3D3"}], + "PM6": [{"name": "HYB_PM6"}], + "PM7": [{"name": "HYB_PM7"}], + "PM7R6": [{"name": "HYB_PM7R6"}], + "PM7MOPAC": [{"name": "HYB_PM7MOPAC"}], + "CBS-4": [{"name": "HYB_CBS-4"}], + "CBS-4M": [{"name": "HYB_CBS-4M"}], + "CBS-4O": [{"name": "HYB_CBS-4O"}], + "CBS-APNO": [{"name": "HYB_CBS-APNO"}], + "CBS-Q": [{"name": "HYB_CBS-Q"}], + "CBS-QB3": [{"name": "HYB_CBS-QB3"}], + "CBS-QB3O": [{"name": "HYB_CBS-QB3O"}], + "ROCBS-QB3": [{"name": "HYB_ROCBS-QB3"}], + "SOGGA11X": [ + {"name": "HYB_GGA_X_SOGGA11_X"}, + {"name": "HYB_GGA_X_SOGGA11_X"}, + ], + "MN12SX": [{"name": "HYB_MGGA_X_MN12_SX"}, {"name": "MGGA_C_MN12_SX"}], + "N12SX": [{"name": "HYB_GGA_X_N12_SX"}, {"name": "GGA_C_N12_SX"}], + "LC-WPBE": [{"name": "HYB_GGA_XC_LC_WPBE"}], + "CAM-B3LYP": [{"name": "HYB_GGA_XC_CAM_B3LYP"}], + "WB97": [{"name": "HYB_GGA_XC_WB97"}], + "WB97X": [{"name": "HYB_GGA_XC_WB97X"}], + "WB97XD": [{"name": "HYB_GGA_XC_WB97X_D"}], + "HISSBPBE": [{"name": "HYB_HISSBPBE"}], + "B2PLYP": [{"name": "HYB_B2PLYP"}], + "MPW2PLYP": [{"name": "HYB_MPW2PLYP"}], + "B2PLYPD": [{"name": "HYB_B2PLYPD"}], + "MPW2PLYPD": [{"name": "HYB_MPW2PLYPD"}], + "B2PLYPD3": [{"name": "HYB_B2PLYPD3"}], + "MPW2PLYPD3": [{"name": "HYB_MPW2PLYPD3"}], + "G1": [{"name": "HYB_G1"}], + "G2": [{"name": "HYB_G2"}], + "G2MP2": [{"name": "HYB_G2MP2"}], + "G3": [{"name": "HYB_G3"}], + "G3B3": [{"name": "HYB_G3B3"}], + "G3MP2": [{"name": "HYB_G3MP2"}], + "G3MP2B3": [{"name": "HYB_G3MP2B3"}], + "G4": [{"name": "HYB_G4"}], + "G4MP2": [{"name": "HYB_G4MP2"}], + "LC-": [{"name": "GGA_X_ITYH_LONG_RANGE"}], + "BP": [{"name": "GGA_X_B88"}, {"name": "GGA_C_P86"}], + "BP86": [{"name": "GGA_X_B88"}, {"name": "GGA_C_P86"}], } self._method_map = { - 'AMBER': [{'name': 'Amber'}], - 'DREIDING': [{'name': 'Dreiding'}], - 'UFF': [{'name': 'UFF'}], - 'AM1': [{'name': 'AM1'}], - 'PM3': [{'name': 'PM3'}], - 'PM3MM': [{'name': 'PM3MM'}], - 'PM3D3': [{'name': 'PM3D3'}], - 'PM6': [{'name': 'PM6'}], - 'PM7': [{'name': 'PM7'}], - 'PM7R6': [{'name': 'PM7R6'}], - 'PM7MOPAC': [{'name': 'PM7MOPAC'}], - 'PDDG': [{'name': 'PDDG'}], - 'CNDO': [{'name': 'CNDO'}], - 'INDO': [{'name': 'INDO'}], - 'MINDO': [{'name': 'MINDO'}], - 'MINDO3': [{'name': 'MINDO3'}], - 'ZINDO': [{'name': 'ZINDO'}], - 'HUCKEL': [{'name': 'HUCKEL'}], - 'EXTENDEDHUCKEL': [{'name': 'HUCKEL'}], - 'ONIOM': [{'name': 'ONIOM'}], - 'HF': [{'name': 'HF'}], - 'RHF': [{'name': 'RHF'}], - 'UHF': [{'name': 'UHF'}], - 'ROHF': [{'name': 'ROHF'}], - 'GVB': [{'name': 'GVB'}], - 'DFT': [{'name': 'DFT'}], - 'CI': [{'name': 'CI'}], - 'CID': [{'name': 'CID'}], - 'CISD': [{'name': 'CISD'}], - 'CIS': [{'name': 'CIS'}], - 'BD': [{'name': 'BD'}], - 'BD(T)': [{'name': 'BD(T)'}], - 'CC': [{'name': 'CCD'}], - 'QCID': [{'name': 'CCD'}], - 'CCD': [{'name': 'CCD'}], - 'CCSD': [{'name': 'CCSD'}], - 'EOMCCSD': [{'name': 'EOMCCSD'}], - 'QCISD': [{'name': 'QCISD'}], - 'CCSD(T)': [{'name': 'CCSD(T)'}], - 'CCSD-T': [{'name': 'CCSD(T)'}], - 'QCISD(T)': [{'name': 'QCISD(T)'}], - 'QCISD(TQ)': [{'name': 'QCISD(TQ)'}], - 'MP2': [{'name': 'MP2'}], - 'MP3': [{'name': 'MP3'}], - 'MP4': [{'name': 'MP4'}], - 'MP4DQ': [{'name': 'MP4DQ'}], - 'MP4(DQ)': [{'name': 'MP4DQ'}], - 'MP4SDQ': [{'name': 'MP4SDQ'}], - 'MP4(SDQ)': [{'name': 'MP4SDQ'}], - 'MP4SDTQ': [{'name': 'MP4SDTQ'}], - 'MP4(SDTQ)': [{'name': 'MP4SDTQ'}], - 'MP5': [{'name': 'MP5'}], - 'CAS': [{'name': 'CASSCF'}], - 'CASSCF': [{'name': 'CASSCF'}], - 'G1': [{'name': 'G1'}], - 'G2': [{'name': 'G2'}], - 'G2MP2': [{'name': 'G2MP2'}], - 'G3': [{'name': 'G3'}], - 'G3MP2': [{'name': 'G3MP2'}], - 'G3B3': [{'name': 'G3B3'}], - 'G3MP2B3': [{'name': 'G3MP2B3'}], - 'G4': [{'name': 'G4'}], - 'G4MP2': [{'name': 'G4MP2'}], - 'CBS-4': [{'name': 'CBS-4'}], - 'CBS-4M': [{'name': 'CBS-4M'}], - 'CBS-4O': [{'name': 'CBS-4O'}], - 'CBS-APNO': [{'name': 'CBS-APNO'}], - 'CBS-Q': [{'name': 'CBS-Q'}], - 'CBS-QB3': [{'name': 'CBS-QB3'}], - 'CBS-QB3O': [{'name': 'CBS-QB3O'}], - 'CBSEXTRAP': [{'name': 'CBSExtrapolate'}], - 'CBSEXTRAPOLATE': [{'name': 'CBSExtrapolate'}], - 'ROCBS-QB3': [{'name': 'ROCBS-QB3'}], - 'W1U': [{'name': 'W1U'}], - 'W1BD': [{'name': 'W1BD'}], - 'W1RO': [{'name': 'W1RO'}], + "AMBER": [{"name": "Amber"}], + "DREIDING": [{"name": "Dreiding"}], + "UFF": [{"name": "UFF"}], + "AM1": [{"name": "AM1"}], + "PM3": [{"name": "PM3"}], + "PM3MM": [{"name": "PM3MM"}], + "PM3D3": [{"name": "PM3D3"}], + "PM6": [{"name": "PM6"}], + "PM7": [{"name": "PM7"}], + "PM7R6": [{"name": "PM7R6"}], + "PM7MOPAC": [{"name": "PM7MOPAC"}], + "PDDG": [{"name": "PDDG"}], + "CNDO": [{"name": "CNDO"}], + "INDO": [{"name": "INDO"}], + "MINDO": [{"name": "MINDO"}], + "MINDO3": [{"name": "MINDO3"}], + "ZINDO": [{"name": "ZINDO"}], + "HUCKEL": [{"name": "HUCKEL"}], + "EXTENDEDHUCKEL": [{"name": "HUCKEL"}], + "ONIOM": [{"name": "ONIOM"}], + "HF": [{"name": "HF"}], + "RHF": [{"name": "RHF"}], + "UHF": [{"name": "UHF"}], + "ROHF": [{"name": "ROHF"}], + "GVB": [{"name": "GVB"}], + "DFT": [{"name": "DFT"}], + "CI": [{"name": "CI"}], + "CID": [{"name": "CID"}], + "CISD": [{"name": "CISD"}], + "CIS": [{"name": "CIS"}], + "BD": [{"name": "BD"}], + "BD(T)": [{"name": "BD(T)"}], + "CC": [{"name": "CCD"}], + "QCID": [{"name": "CCD"}], + "CCD": [{"name": "CCD"}], + "CCSD": [{"name": "CCSD"}], + "EOMCCSD": [{"name": "EOMCCSD"}], + "QCISD": [{"name": "QCISD"}], + "CCSD(T)": [{"name": "CCSD(T)"}], + "CCSD-T": [{"name": "CCSD(T)"}], + "QCISD(T)": [{"name": "QCISD(T)"}], + "QCISD(TQ)": [{"name": "QCISD(TQ)"}], + "MP2": [{"name": "MP2"}], + "MP3": [{"name": "MP3"}], + "MP4": [{"name": "MP4"}], + "MP4DQ": [{"name": "MP4DQ"}], + "MP4(DQ)": [{"name": "MP4DQ"}], + "MP4SDQ": [{"name": "MP4SDQ"}], + "MP4(SDQ)": [{"name": "MP4SDQ"}], + "MP4SDTQ": [{"name": "MP4SDTQ"}], + "MP4(SDTQ)": [{"name": "MP4SDTQ"}], + "MP5": [{"name": "MP5"}], + "CAS": [{"name": "CASSCF"}], + "CASSCF": [{"name": "CASSCF"}], + "G1": [{"name": "G1"}], + "G2": [{"name": "G2"}], + "G2MP2": [{"name": "G2MP2"}], + "G3": [{"name": "G3"}], + "G3MP2": [{"name": "G3MP2"}], + "G3B3": [{"name": "G3B3"}], + "G3MP2B3": [{"name": "G3MP2B3"}], + "G4": [{"name": "G4"}], + "G4MP2": [{"name": "G4MP2"}], + "CBS-4": [{"name": "CBS-4"}], + "CBS-4M": [{"name": "CBS-4M"}], + "CBS-4O": [{"name": "CBS-4O"}], + "CBS-APNO": [{"name": "CBS-APNO"}], + "CBS-Q": [{"name": "CBS-Q"}], + "CBS-QB3": [{"name": "CBS-QB3"}], + "CBS-QB3O": [{"name": "CBS-QB3O"}], + "CBSEXTRAP": [{"name": "CBSExtrapolate"}], + "CBSEXTRAPOLATE": [{"name": "CBSExtrapolate"}], + "ROCBS-QB3": [{"name": "ROCBS-QB3"}], + "W1U": [{"name": "W1U"}], + "W1BD": [{"name": "W1BD"}], + "W1RO": [{"name": "W1RO"}], } self._basis_set_map = { - 'STO-3G': [{'name': 'STO-3G'}], - '3-21G': [{'name': '3-21G'}], - '6-21G': [{'name': '6-21G'}], - '4-31G': [{'name': '4-31G'}], - '6-31G': [{'name': '6-31G'}], - '6-311G': [{'name': '6-311G'}], - 'D95V': [{'name': 'D95V'}], - 'D95': [{'name': 'D95'}], - 'CC-PVDZ': [{'name': 'cc-pVDZ'}], - 'CC-PVTZ': [{'name': 'cc-pVTZ'}], - 'CC-PVQZ': [{'name': 'cc-pVQZ'}], - 'CC-PV5Z': [{'name': 'cc-pV5Z'}], - 'CC-PV6Z': [{'name': 'cc-pV6Z'}], - 'SV': [{'name': 'SV'}], - 'SVP': [{'name': 'SVP'}], - 'TZV': [{'name': 'TZV'}], - 'TZVP': [{'name': 'TZVP'}], - 'DEF2SV': [{'name': 'Def2SV'}], - 'DEF2SVP': [{'name': 'Def2SVP'}], - 'DEF2SVPP': [{'name': 'Def2SVPP'}], - 'DEF2TZV': [{'name': 'Def2TZV'}], - 'DEF2TZVP': [{'name': 'Def2TZVP'}], - 'DEF2TZVPP': [{'name': 'Def2TZVPP'}], - 'DEF2QZV': [{'name': 'Def2QZV'}], - 'DEF2QZVP': [{'name': 'Def2QZVP'}], - 'DEF2QZVPP': [{'name': 'Def2QZVPP'}], - 'QZVP': [{'name': 'QZVP'}], - 'MIDIX': [{'name': 'MidiX'}], - 'EPR-II': [{'name': 'EPR-II'}], - 'EPR-III': [{'name': 'EPR-III'}], - 'UGBS': [{'name': 'UGBS'}], - 'MTSMALL': [{'name': 'MTSmall'}], - 'DGDZVP': [{'name': 'DGDZVP'}], - 'DGDZVP2': [{'name': 'DGDZVP2'}], - 'DGTZVP': [{'name': 'DGTZVP'}], - 'CBSB3': [{'name': 'CBSB3'}], - 'CBSB7': [{'name': 'CBSB7'}], - 'SHC': [{'name': 'SHC'}], - 'SEC': [{'name': 'SHC'}], - 'CEP-4G': [{'name': 'CEP-4G'}], - 'CEP-31G': [{'name': 'CEP-31G'}], - 'CEP-121G': [{'name': 'CEP-121G'}], - 'LANL1': [{'name': 'LANL1'}], - 'LANL2': [{'name': 'LANL2'}], - 'SDD': [{'name': 'SDD'}], - 'OLDSDD': [{'name': 'OldSDD'}], - 'SDDALL': [{'name': 'SDDAll'}], - 'GEN': [{'name': 'General'}], - 'GENECP': [{'name': 'General ECP'}], - 'CHKBAS': [{'name': 'CHKBAS'}], - 'EXTRABASIS': [{'name': 'ExtraBasis'}], - 'DGA1': [{'name': 'DGA1'}], - 'DGA2': [{'name': 'DGA2'}], - 'SVPFIT': [{'name': 'SVPFit'}], - 'TZVPFIT': [{'name': 'TZVPFit'}], - 'W06': [{'name': 'W06'}], - 'CHF': [{'name': 'CHF'}], - 'FIT': [{'name': 'FIT'}], - 'AUTO': [{'name': 'AUTO'}], + "STO-3G": [{"name": "STO-3G"}], + "3-21G": [{"name": "3-21G"}], + "6-21G": [{"name": "6-21G"}], + "4-31G": [{"name": "4-31G"}], + "6-31G": [{"name": "6-31G"}], + "6-311G": [{"name": "6-311G"}], + "D95V": [{"name": "D95V"}], + "D95": [{"name": "D95"}], + "CC-PVDZ": [{"name": "cc-pVDZ"}], + "CC-PVTZ": [{"name": "cc-pVTZ"}], + "CC-PVQZ": [{"name": "cc-pVQZ"}], + "CC-PV5Z": [{"name": "cc-pV5Z"}], + "CC-PV6Z": [{"name": "cc-pV6Z"}], + "SV": [{"name": "SV"}], + "SVP": [{"name": "SVP"}], + "TZV": [{"name": "TZV"}], + "TZVP": [{"name": "TZVP"}], + "DEF2SV": [{"name": "Def2SV"}], + "DEF2SVP": [{"name": "Def2SVP"}], + "DEF2SVPP": [{"name": "Def2SVPP"}], + "DEF2TZV": [{"name": "Def2TZV"}], + "DEF2TZVP": [{"name": "Def2TZVP"}], + "DEF2TZVPP": [{"name": "Def2TZVPP"}], + "DEF2QZV": [{"name": "Def2QZV"}], + "DEF2QZVP": [{"name": "Def2QZVP"}], + "DEF2QZVPP": [{"name": "Def2QZVPP"}], + "QZVP": [{"name": "QZVP"}], + "MIDIX": [{"name": "MidiX"}], + "EPR-II": [{"name": "EPR-II"}], + "EPR-III": [{"name": "EPR-III"}], + "UGBS": [{"name": "UGBS"}], + "MTSMALL": [{"name": "MTSmall"}], + "DGDZVP": [{"name": "DGDZVP"}], + "DGDZVP2": [{"name": "DGDZVP2"}], + "DGTZVP": [{"name": "DGTZVP"}], + "CBSB3": [{"name": "CBSB3"}], + "CBSB7": [{"name": "CBSB7"}], + "SHC": [{"name": "SHC"}], + "SEC": [{"name": "SHC"}], + "CEP-4G": [{"name": "CEP-4G"}], + "CEP-31G": [{"name": "CEP-31G"}], + "CEP-121G": [{"name": "CEP-121G"}], + "LANL1": [{"name": "LANL1"}], + "LANL2": [{"name": "LANL2"}], + "SDD": [{"name": "SDD"}], + "OLDSDD": [{"name": "OldSDD"}], + "SDDALL": [{"name": "SDDAll"}], + "GEN": [{"name": "General"}], + "GENECP": [{"name": "General ECP"}], + "CHKBAS": [{"name": "CHKBAS"}], + "EXTRABASIS": [{"name": "ExtraBasis"}], + "DGA1": [{"name": "DGA1"}], + "DGA2": [{"name": "DGA2"}], + "SVPFIT": [{"name": "SVPFit"}], + "TZVPFIT": [{"name": "TZVPFit"}], + "W06": [{"name": "W06"}], + "CHF": [{"name": "CHF"}], + "FIT": [{"name": "FIT"}], + "AUTO": [{"name": "AUTO"}], } self._xc_functional_pattern = re.compile( - r'(?:#?[Pp]?)(?:(WPBEH)(.*)|(LC\-)(.*)|(G96)(.*)|(BRX)(.*)|(SV)(.*)|(B)([^2^3]*)|(O)([^2^3]))') + r"(?:#?[Pp]?)(?:(WPBEH)(.*)|(LC\-)(.*)|(G96)(.*)|(BRX)(.*)|(SV)(.*)|(B)([^2^3]*)|(O)([^2^3]))" + ) self._basis_set_pattern = re.compile( - r'(6\-311G)|(6\-31G)|(LANL2)|(LANL1)|(CBSB7)|(UGBS)|AUG\-(.*)|(D95)') + r"(6\-311G)|(6\-31G)|(LANL2)|(LANL1)|(CBSB7)|(UGBS)|AUG\-(.*)|(D95)" + ) self._energy_methods = { - 'mp': (x_gaussian_section_moller_plesset, [ - 'mp2', 'mp3', 'mp4dq', 'mp4sdq', 'mp4sdtq', 'mp5']), - 'cc': (x_gaussian_section_coupled_cluster, ['ccsd']), - 'qci': (x_gaussian_section_quadratic_ci, ['qcisd', 'qcisdtq']), - 'ci': (x_gaussian_section_ci, ['ci']), - 'semiempirical': (x_gaussian_section_semiempirical, ['']), - 'molmech': (x_gaussian_section_molmech, [])} + "mp": ( + x_gaussian_section_moller_plesset, + ["mp2", "mp3", "mp4dq", "mp4sdq", "mp4sdtq", "mp5"], + ), + "cc": (x_gaussian_section_coupled_cluster, ["ccsd"]), + "qci": (x_gaussian_section_quadratic_ci, ["qcisd", "qcisdtq"]), + "ci": (x_gaussian_section_ci, ["ci"]), + "semiempirical": (x_gaussian_section_semiempirical, [""]), + "molmech": (x_gaussian_section_molmech, []), + } def parse_scc(self, section): sec_run = self.archive.run[-1] @@ -667,23 +925,22 @@ def parse_scc(self, section): # total energy sec_energy = Energy() sec_scc.energy = sec_energy - energy_total = section.get('energy_total') + energy_total = section.get("energy_total") if energy_total is not None: sec_energy.total = EnergyEntry(value=energy_total[-1]) # hybrid coefficients sec_hybrid_coeffs = None - for key in ['coeff1', 'coeff2']: - val = section.get('hybrid_xc_%s' % key) + for key in ["coeff1", "coeff2"]: + val = section.get("hybrid_xc_%s" % key) if val is None: continue if sec_hybrid_coeffs is None: sec_hybrid_coeffs = x_gaussian_section_hybrid_coeffs() sec_scc.x_gaussian_section_hybrid_coeffs.append(sec_hybrid_coeffs) - setattr(sec_hybrid_coeffs, 'hybrid_xc_%s' % key, val) + setattr(sec_hybrid_coeffs, "hybrid_xc_%s" % key, val) def parse_energy_corrections(method, iteration=False): - if not iteration and section.get(method) is None: return @@ -696,20 +953,20 @@ def parse_energy_corrections(method, iteration=False): sec_scc.m_add_sub_section(sec_def, sec_method) for key in energy_keys: - key = '%s_correction_energy' % key + key = "%s_correction_energy" % key val = section.get(key) if val is not None: - setattr(sec_method, 'x_gaussian_%s' % key, val[-1]) + setattr(sec_method, "x_gaussian_%s" % key, val[-1]) - energy_method = section.get('%s_method' % method) + energy_method = section.get("%s_method" % method) if energy_method is not None: - setattr(sec_method, 'x_gaussian_%s_method' % method, energy_method) + setattr(sec_method, "x_gaussian_%s_method" % method, energy_method) - energy = section.get('%s_energy' % method) + energy = section.get("%s_energy" % method) if energy is not None: - setattr(sec_method, 'x_gaussian_%s_energy' % method, energy) + setattr(sec_method, "x_gaussian_%s_energy" % method, energy) - energy_total = section.get('energy_total_%s' % method) + energy_total = section.get("energy_total_%s" % method) if energy_total is not None: sec_energy.total = EnergyEntry(value=energy_total[-1]) @@ -717,14 +974,14 @@ def parse_energy_corrections(method, iteration=False): # energy corrections calculated from different methods sec_energy_method = None - for method in ['mp', 'cc', 'qci', 'ci', 'semiempirical', 'molmech']: + for method in ["mp", "cc", "qci", "ci", "semiempirical", "molmech"]: sec_energy_method = parse_energy_corrections(method) if sec_energy_method is not None: break # TODO make metainfo accept array not separate sections # excited state - excited_state = section.get('excited_state', []) + excited_state = section.get("excited_state", []) for state in excited_state: sec_excited_state = x_gaussian_section_excited() sec_scc.x_gaussian_section_excited.append(sec_excited_state) @@ -732,27 +989,35 @@ def parse_energy_corrections(method, iteration=False): sec_excited_state.x_gaussian_excited_energy = float(state[1]) * ureg.eV sec_excited_state.x_gaussian_excited_oscstrength = float(state[2]) sec_excited_state.x_gaussian_excited_spin_squared = float(state[3]) - sec_excited_state.x_gaussian_excited_transition = ' '.join(state[4:]) + sec_excited_state.x_gaussian_excited_transition = " ".join(state[4:]) # casscf - casscf_energy = section.get('casscf_energy', []) + casscf_energy = section.get("casscf_energy", []) for energy in casscf_energy: sec_casscf = x_gaussian_section_casscf() sec_scc.x_gaussian_section_casscf.append(sec_casscf) sec_casscf.x_gaussian_casscf_energy = energy # orbital symmetries - orbital_symmetries = section.get('population_analysis', {}).get('orbital_symmetries') + orbital_symmetries = section.get("population_analysis", {}).get( + "orbital_symmetries" + ) if orbital_symmetries is not None: sec_orbital_symmetries = x_gaussian_section_orbital_symmetries() sec_run.x_gaussian_section_orbital_symmetries.append(sec_orbital_symmetries) if orbital_symmetries[:2]: - sec_orbital_symmetries.x_gaussian_alpha_symmetries = np.concatenate(orbital_symmetries[:2]) + sec_orbital_symmetries.x_gaussian_alpha_symmetries = np.concatenate( + orbital_symmetries[:2] + ) if orbital_symmetries[2:]: - sec_orbital_symmetries.x_gaussian_beta_symmetries = np.concatenate(orbital_symmetries[2:]) + sec_orbital_symmetries.x_gaussian_beta_symmetries = np.concatenate( + orbital_symmetries[2:] + ) # electronic symmetries - elstate_symmetry = section.get('population_analysis', {}).get('x_gaussian_elstate_symmetry') + elstate_symmetry = section.get("population_analysis", {}).get( + "x_gaussian_elstate_symmetry" + ) if elstate_symmetry is not None: sec_symmetry = x_gaussian_section_symmetry() sec_run.x_gaussian_section_symmetry.append(sec_symmetry) @@ -760,7 +1025,7 @@ def parse_energy_corrections(method, iteration=False): # eigenvalues values, occupation = [[], []], [[], []] - eigenvalues = section.get('population_analysis', {}).get('eigenvalues') + eigenvalues = section.get("population_analysis", {}).get("eigenvalues") if eigenvalues is not None: for eigs_occs in eigenvalues: for spin in range(2): @@ -772,72 +1037,91 @@ def parse_energy_corrections(method, iteration=False): try: values = np.array(values, dtype=np.dtype(np.float64)) values = np.reshape(values, (len(values), 1, len(values[0]))) - occupation = np.reshape(occupation, (len(occupation), 1, len(occupation[0]))) + occupation = np.reshape( + occupation, (len(occupation), 1, len(occupation[0])) + ) sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) sec_eigenvalues.energies = values * ureg.hartree sec_eigenvalues.occupations = occupation except Exception: - self.logger.error('Error setting eigenvalues.') + self.logger.error("Error setting eigenvalues.") # optimization - optimization_completed = section.get('optimization_completed') + optimization_completed = section.get("optimization_completed") if optimization_completed is not None: sec_optimization_info = x_gaussian_section_geometry_optimization_info() - sec_run.x_gaussian_section_geometry_optimization_info.append(sec_optimization_info) - sec_optimization_info.x_gaussian_geometry_optimization_converged = optimization_completed + sec_run.x_gaussian_section_geometry_optimization_info.append( + sec_optimization_info + ) + sec_optimization_info.x_gaussian_geometry_optimization_converged = ( + optimization_completed + ) # multipoles multipoles = [] - keys = ['charge', 'dipole', 'quadrupole', 'octapole', 'hexadecapole'] + keys = ["charge", "dipole", "quadrupole", "octapole", "hexadecapole"] for n, key in enumerate(keys): val = section.get(key) if val is not None: - val = val.to('coulomb * meter**%d' % n).magnitude + val = val.to("coulomb * meter**%d" % n).magnitude val = [val] if isinstance(val, float) else val # TODO why quadrupole moments are not sorted, adapted from old parser - if key == 'quadrupole': + if key == "quadrupole": val = [val[0], val[3], val[1], val[4], val[5], val[2]] multipoles.extend(val) if multipoles: sec_molecular_multipoles = x_gaussian_section_molecular_multipoles() - sec_scc.x_gaussian_section_molecular_multipoles.append(sec_molecular_multipoles) + sec_scc.x_gaussian_section_molecular_multipoles.append( + sec_molecular_multipoles + ) sec_molecular_multipoles.x_gaussian_molecular_multipole_values = multipoles - sec_molecular_multipoles.x_gaussian_molecular_multipole_m_kind = 'polynomial' + sec_molecular_multipoles.x_gaussian_molecular_multipole_m_kind = ( + "polynomial" + ) # forces - forces = section.get('forces') + forces = section.get("forces") if forces is not None: sec_scc.forces = Forces(total=ForcesEntry(value_raw=forces)) # force constants - force_constants = section.get('force_constants') + force_constants = section.get("force_constants") if force_constants is not None: sec_force_constant = x_gaussian_section_force_constant_matrix() sec_run.x_gaussian_section_force_constant_matrix.append(sec_force_constant) - force_constants = force_constants * ureg.hartree / ureg.bohr ** 2 + force_constants = force_constants * ureg.hartree / ureg.bohr**2 sec_force_constant.x_gaussian_force_constant_values = force_constants.to( - 'J/(m**2)').magnitude + "J/(m**2)" + ).magnitude # vibrational frequencies - frequencies = section.get('frequencies') + frequencies = section.get("frequencies") if frequencies is not None: # frequencies in old parsers are in J, not consistent with metainfo sec_frequencies = x_gaussian_section_frequencies() sec_run.x_gaussian_section_frequencies.append(sec_frequencies) sec_frequencies.x_gaussian_frequencies = np.hstack(frequencies) - reduced_masses = section.get('reduced_masses') + reduced_masses = section.get("reduced_masses") if reduced_masses is not None: - reduced_masses = np.array(np.hstack(reduced_masses), dtype=np.float64) * ureg.amu - sec_frequencies.x_gaussian_red_masses = reduced_masses.to('kg').magnitude - normal_modes = section.get('normal_modes') + reduced_masses = ( + np.array(np.hstack(reduced_masses), dtype=np.float64) * ureg.amu + ) + sec_frequencies.x_gaussian_red_masses = reduced_masses.to( + "kg" + ).magnitude + normal_modes = section.get("normal_modes") if normal_modes is not None: normal_modes = np.hstack(normal_modes) - normal_modes = np.reshape(normal_modes, (len(normal_modes), len(normal_modes[0]) // 3, 3)) - sec_frequencies.x_gaussian_normal_mode_values = np.transpose(normal_modes, axes=(1, 0, 2)) + normal_modes = np.reshape( + normal_modes, (len(normal_modes), len(normal_modes[0]) // 3, 3) + ) + sec_frequencies.x_gaussian_normal_mode_values = np.transpose( + normal_modes, axes=(1, 0, 2) + ) # thermochemistry - temperature_pressure = section.get('temperature_pressure') + temperature_pressure = section.get("temperature_pressure") if temperature_pressure is not None: sec_thermo = Thermodynamics() sec_scc.thermodynamics.append(sec_thermo) @@ -845,38 +1129,45 @@ def parse_energy_corrections(method, iteration=False): sec_thermochem = x_gaussian_section_thermochem() sec_run.x_gaussian_section_thermochem.append(sec_thermochem) sec_thermo.temperature = temperature_pressure[0] - sec_thermo.pressure = (temperature_pressure[1] * ureg.atm).to('N/m**2') + sec_thermo.pressure = (temperature_pressure[1] * ureg.atm).to("N/m**2") sec_scc.temperature = temperature_pressure[0] - sec_scc.pressure = (temperature_pressure[1] * ureg.atm).to('N/m**2') - moments = section.get('moments') + sec_scc.pressure = (temperature_pressure[1] * ureg.atm).to("N/m**2") + moments = section.get("moments") if moments is not None: - sec_thermochem.x_gaussian_moments = moments.to('kg*m**2').magnitude - if section.get('zero_point_energy') is not None: - sec_scc.energy.zero_point = EnergyEntry(value=section.get('zero_point_energy')) - if section.get('thermal_correction_enthalpy') is not None: - sec_thermo.enthalpy = section.get('thermal_correction_enthalpy') + sec_thermochem.x_gaussian_moments = moments.to("kg*m**2").magnitude + if section.get("zero_point_energy") is not None: + sec_scc.energy.zero_point = EnergyEntry( + value=section.get("zero_point_energy") + ) + if section.get("thermal_correction_enthalpy") is not None: + sec_thermo.enthalpy = section.get("thermal_correction_enthalpy") keys = [ - 'zero_point_energy', 'thermal_correction_energy', - 'thermal_correction_enthalpy', 'thermal_correction_free_energy'] + "zero_point_energy", + "thermal_correction_energy", + "thermal_correction_enthalpy", + "thermal_correction_free_energy", + ] for key in keys: val = section.get(key) if val is not None: - setattr(sec_thermochem, 'x_gaussian_%s' % key, val.to('joule').magnitude) + setattr( + sec_thermochem, "x_gaussian_%s" % key, val.to("joule").magnitude + ) # scf_iteration - for iteration in section.get('scf_iteration', []): + for iteration in section.get("scf_iteration", []): sec_scf_iteration = ScfIteration() sec_scc.scf_iteration.append(sec_scf_iteration) - energy = iteration.get('energy_total_scf_iteration') + energy = iteration.get("energy_total_scf_iteration") sec_scf_energy = Energy() sec_scf_iteration.energy = sec_scf_energy if energy is not None: sec_scf_energy.total = EnergyEntry(value=energy) - energy = iteration.get('x_gaussian_delta_energy_total_scf_iteration') + energy = iteration.get("x_gaussian_delta_energy_total_scf_iteration") if energy is not None: sec_scf_energy.change = energy - iteration = section.get('scf_iteration_final') + iteration = section.get("scf_iteration_final") if iteration is not None: if sec_scc.scf_iteration: sec_scf_iteration = sec_scc.scf_iteration[-1] @@ -886,24 +1177,35 @@ def parse_energy_corrections(method, iteration=False): sec_scf_energy = Energy() sec_scf_iteration.energy = sec_scf_energy keys = [ - 'x_gaussian_single_configuration_calculation_converged', - 'x_gaussian_hf_detect', 'energy_total', 'x_gaussian_energy_error', - 'energy_kinetic_electronic', - 'spin_S2', 'x_gaussian_after_annihilation_spin_S2', - 'x_gaussian_perturbation_energy'] + "x_gaussian_single_configuration_calculation_converged", + "x_gaussian_hf_detect", + "energy_total", + "x_gaussian_energy_error", + "energy_kinetic_electronic", + "spin_S2", + "x_gaussian_after_annihilation_spin_S2", + "x_gaussian_perturbation_energy", + ] for key in keys: val = iteration.get(key) if val is not None: - if key.startswith('energy_'): - sec_scf_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '')), EnergyEntry(value=val)) + if key.startswith("energy_"): + sec_scf_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "")), + EnergyEntry(value=val), + ) else: setattr(sec_scf_iteration, key, val) - if iteration.get('x_gaussian_single_configuration_calculation_converged') is not None: - energy_scf = iteration.get('energy_total') - electronic_ke = iteration.get(' energy_kinetic_electronic') + if ( + iteration.get("x_gaussian_single_configuration_calculation_converged") + is not None + ): + energy_scf = iteration.get("energy_total") + electronic_ke = iteration.get(" energy_kinetic_electronic") if energy_scf is not None and electronic_ke is not None: - sec_scf_energy.electrostatic = EnergyEntry(value=energy_scf - electronic_ke) + sec_scf_energy.electrostatic = EnergyEntry( + value=energy_scf - electronic_ke + ) if energy_scf is not None: sec_energy.total = EnergyEntry(value=energy_scf) sec_scc.calculation_converged = True @@ -916,7 +1218,7 @@ def parse_system(self, n_run, section): sec_run.system.append(sec_system) sec_atoms = Atoms() sec_system.atoms = sec_atoms - lattice_vector = self.out_parser.get('run')[n_run].get('lattice_vector') + lattice_vector = self.out_parser.get("run")[n_run].get("lattice_vector") if lattice_vector is not None: sec_atoms.lattice_vectors = lattice_vector * ureg.angstrom pbc = [len(lattice_vector) >= n for n in [1, 2, 3]] @@ -925,24 +1227,25 @@ def parse_system(self, n_run, section): sec_atoms.lattice_vectors = np.zeros((3, 3)) sec_atoms.periodic = [False] * 3 - orientation = section.get('standard_orientation') + orientation = section.get("standard_orientation") if orientation is None: - orientation = section.get('input_orientation') + orientation = section.get("input_orientation") if orientation is None: - orientation = section.get('z_matrix_orientation') + orientation = section.get("z_matrix_orientation") if orientation is not None: sec_atoms.labels = [ - ase.data.chemical_symbols[int(n)] for n in [o[1] for o in orientation]] + ase.data.chemical_symbols[int(n)] for n in [o[1] for o in orientation] + ] sec_atoms.positions = [o[-3:] for o in orientation] * ureg.angstrom sec_system.x_gaussian_number_of_atoms = len(sec_system.atoms.labels) return sec_system def parse_configurations(self, n_run): - systems = self.out_parser.get('run')[n_run].get('system', []) + systems = self.out_parser.get("run")[n_run].get("system", []) for system in systems: sec_system = self.parse_system(n_run, system) - for calculation in system.get('calculation', [system]): + for calculation in system.get("calculation", [system]): sec_scc = self.parse_scc(calculation) if sec_scc is not None: if sec_system is not None: @@ -951,7 +1254,7 @@ def parse_configurations(self, n_run): if sec_method: sec_scc.method_ref = sec_method[-1] - iterations = self.out_parser.get('run')[n_run].get('iteration', []) + iterations = self.out_parser.get("run")[n_run].get("iteration", []) sec_system = self.archive.run[0].system sec_method = self.archive.run[0].method for iteration in iterations: @@ -966,9 +1269,9 @@ def parse_method(self, n_run): sec_run = self.archive.run[-1] sec_method = Method() sec_run.method.append(sec_method) - run = self.out_parser.get('run')[n_run] + run = self.out_parser.get("run")[n_run] - for key in ['x_gaussian_settings_corrected']: + for key in ["x_gaussian_settings_corrected"]: val = run.get(key) if val is None: continue @@ -981,7 +1284,7 @@ def get_method(name): return parameter xc = resolve_xc_functional(parameter) - return 'DFT' if xc is not None else None + return "DFT" if xc is not None else None method = get_method(parameter) if method is None: @@ -994,12 +1297,12 @@ def get_method(name): return method def resolve_prefix(name): - name = name.split('=')[0].strip() - prefix = '' - if name not in ['RHF', 'ROHF', 'UHF', 'UFF']: - res = re.match(r'([RU]{1}O?)(.*)', name) + name = name.split("=")[0].strip() + prefix = "" + if name not in ["RHF", "ROHF", "UHF", "UFF"]: + res = re.match(r"([RU]{1}O?)(.*)", name) if res is not None: - prefix = res[1] if res[1] else '' + prefix = res[1] if res[1] else "" name = res[2] return prefix, name @@ -1012,7 +1315,9 @@ def resolve_basis_set(parameter): if res is not None: basis_keys = [key for key in res.groups() if key is not None] if len(basis_keys) != 1: - self.logger.warning('Cannot resolve basis set', data=dict(key=parameter)) + self.logger.warning( + "Cannot resolve basis set", data=dict(key=parameter) + ) return (basis_keys[0], parameter) def resolve_xc_functional(parameter): @@ -1020,7 +1325,7 @@ def resolve_xc_functional(parameter): if xc_functional is not None: return parameter - part = parameter.split('-')[0] + part = parameter.split("-")[0] xc_functional = self._xc_functional_map.get(part) if xc_functional is not None: return part @@ -1029,25 +1334,34 @@ def resolve_xc_functional(parameter): if res is not None: xc_keys = [key for key in res.groups() if key is not None] if len(xc_keys) != 2: - self.logger.warning('Cannot resolve xc functional', data=dict(key=name)) + self.logger.warning( + "Cannot resolve xc functional", data=dict(key=name) + ) return - x_name = 'LC-' if xc_keys[0] == 'LC-' else self._xc_functional_map.get( - xc_keys[0], [{}])[0].get('name', '') - c_index = -1 if xc_keys[0] == 'LC-' else 0 - c_name = self._xc_functional_map.get(xc_keys[1], [{}])[c_index].get('name', '') + x_name = ( + "LC-" + if xc_keys[0] == "LC-" + else self._xc_functional_map.get(xc_keys[0], [{}])[0].get( + "name", "" + ) + ) + c_index = -1 if xc_keys[0] == "LC-" else 0 + c_name = self._xc_functional_map.get(xc_keys[1], [{}])[c_index].get( + "name", "" + ) if x_name and c_name: - return '%s%s' % (x_name, c_name) + return "%s%s" % (x_name, c_name) - settings = run.get('x_gaussian_settings_corrected', '').upper() - settings = re.sub(r'(?:#[Pp]? |# *)', '', settings) + settings = run.get("x_gaussian_settings_corrected", "").upper() + settings = re.sub(r"(?:#[Pp]? |# *)", "", settings) xc_functionals = set() basis_sets = set() methods = set() - prefix = '' + prefix = "" for setting in settings.split(): - parameter = setting.split('/') + parameter = setting.split("/") prefix, name = resolve_prefix(parameter[0]) method = resolve_method(name) @@ -1068,25 +1382,29 @@ def resolve_xc_functional(parameter): sec_electronic = Electronic() sec_method.electronic = sec_electronic if len(methods) != 1: - self.logger.error('Found mutiple or no method', data=dict( - n_parsed=len(methods))) + self.logger.error( + "Found mutiple or no method", data=dict(n_parsed=len(methods)) + ) for method in methods: sec_method.x_gaussian_method = method sec_electronic.method = method for entry in self._method_map.get(method, []): sec_elstruc_method = x_gaussian_section_elstruc_method() sec_method.x_gaussian_section_elstruc_method.append(sec_elstruc_method) - sec_elstruc_method.x_gaussian_electronic_structure_method = '%s%s' % ( - prefix, entry['name']) + sec_elstruc_method.x_gaussian_electronic_structure_method = "%s%s" % ( + prefix, + entry["name"], + ) # Basis set if len(basis_sets) != 1: - self.logger.error('Found multiple or no basis set', data=dict( - n_parsed=len(basis_sets))) + self.logger.error( + "Found multiple or no basis set", data=dict(n_parsed=len(basis_sets)) + ) for basis_set in basis_sets: bs = BasisSet( - type='gaussians', - scope=['full-electron'], + type="gaussians", + scope=["full-electron"], ) for _ in self._basis_set_map.get(basis_set[0], []): # TODO need to adjust basis_set atom centered to take multiple entries @@ -1094,31 +1412,35 @@ def resolve_xc_functional(parameter): bs.atom_centered.append(BasisSetAtomCentered(name=basis_set[1])) sec_method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', - scope=['wavefunction'], + type="atom-centered orbitals", + scope=["wavefunction"], basis_set=[bs], ) ] if len(xc_functionals) != 1: - self.logger.error('Found multiple or no xc functional', data=dict( - n_parsed=len(xc_functionals))) + self.logger.error( + "Found multiple or no xc functional", + data=dict(n_parsed=len(xc_functionals)), + ) sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for xc_functional in xc_functionals: sec_method.x_gaussian_xc = xc_functional for entry in self._xc_functional_map.get(xc_functional, []): - if '_X_' in entry['name'] or entry['name'].endswith('_X'): - sec_xc_functional.exchange.append(Functional(name=entry['name'])) - elif '_C_' in entry['name'] or entry['name'].endswith('_C'): - sec_xc_functional.correlation.append(Functional(name=entry['name'])) - elif 'HYB' in entry['name'] or entry['name'].endswith('_C'): - sec_xc_functional.hybrid.append(Functional(name=entry['name'])) + if "_X_" in entry["name"] or entry["name"].endswith("_X"): + sec_xc_functional.exchange.append(Functional(name=entry["name"])) + elif "_C_" in entry["name"] or entry["name"].endswith("_C"): + sec_xc_functional.correlation.append(Functional(name=entry["name"])) + elif "HYB" in entry["name"] or entry["name"].endswith("_C"): + sec_xc_functional.hybrid.append(Functional(name=entry["name"])) else: - sec_xc_functional.contributions.append(Functional(name=entry['name'])) + sec_xc_functional.contributions.append( + Functional(name=entry["name"]) + ) - for key in ['charge', 'spin_target']: - val = self.out_parser.get('run')[n_run].get(key) + for key in ["charge", "spin_target"]: + val = self.out_parser.get("run")[n_run].get(key) if val is not None: setattr(sec_electronic, key, val) @@ -1132,17 +1454,21 @@ def parse(self, filepath, archive, logger): self.logger = logging.getLogger(__name__) if logger is None else logger self.init_parser(filepath, logger) - runs = self.out_parser.get('run', []) + runs = self.out_parser.get("run", []) for n in range(len(runs)): - program = self.out_parser.get('program') + program = self.out_parser.get("program") sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='Gaussian', version=program[0]) + sec_run.program = Program(name="Gaussian", version=program[0]) sec_run.x_gaussian_program_implementation = program[1] sec_run.x_gaussian_program_release_date = program[2] sec_run.x_gaussian_program_execution_date = program[3] - for key in ['x_gaussian_chk_file', 'x_gaussian_memory', 'x_gaussian_number_of_processors']: + for key in [ + "x_gaussian_chk_file", + "x_gaussian_memory", + "x_gaussian_number_of_processors", + ]: val = self.out_parser.get(key) if val is not None: setattr(sec_run, key, val) @@ -1153,7 +1479,7 @@ def parse(self, filepath, archive, logger): sec_times = x_gaussian_section_times() sec_run.x_gaussian_section_times.append(sec_times) - for key in ['program_cpu_time', 'program_termination_date']: + for key in ["program_cpu_time", "program_termination_date"]: val = runs[n].get(key) if val is not None: - setattr(sec_times, 'x_gaussian_%s' % key, val.strip()) + setattr(sec_times, "x_gaussian_%s" % key, val.strip()) diff --git a/electronicparsers/gpaw/metainfo/gpaw.py b/electronicparsers/gpaw/metainfo/gpaw.py index c9ca59cd..862c616a 100644 --- a/electronicparsers/gpaw/metainfo/gpaw.py +++ b/electronicparsers/gpaw/metainfo/gpaw.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,150 +39,176 @@ class x_gpaw_section_paw_method(MSection): - ''' + """ GPAW PAW specific information - ''' + """ m_def = Section(validate=False) x_gpaw_number_of_packed_ap_elements = Quantity( type=int, shape=[], - description=''' + description=""" number of PAW projector matrix elements in packed format - ''') + """, + ) x_gpaw_number_of_projectors = Quantity( type=int, shape=[], - description=''' + description=""" number of PAW projectors - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_gpaw_atomic_density_matrices = Quantity( type=np.dtype(np.float64), - shape=['number_of_spin_channels', 'x_gpaw_number_of_packed_ap_elements'], - description=''' + shape=["number_of_spin_channels", "x_gpaw_number_of_packed_ap_elements"], + description=""" atomic density matrices in the PAW formalism - ''') + """, + ) x_gpaw_fixed_spin_Sz = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Target value (fixed) of the z projection of the spin moment operator $S^z$ for the converged calculation with the XC_method. - ''') + """, + ) x_gpaw_magnetic_moments = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Magnetic moments projected onto atoms. The sum gives the total magnetic moment - ''') + """, + ) x_gpaw_projections_imag = Quantity( type=np.dtype(np.float64), - shape=['number_of_spin_channels', 'number_of_eigenvalues_kpoints', 'number_of_eigenvalues', 'x_gpaw_number_of_projectors'], - description=''' + shape=[ + "number_of_spin_channels", + "number_of_eigenvalues_kpoints", + "number_of_eigenvalues", + "x_gpaw_number_of_projectors", + ], + description=""" projections in the PAW formalism (imaginary part) - ''') + """, + ) x_gpaw_projections_real = Quantity( type=np.dtype(np.float64), - shape=['number_of_spin_channels', 'number_of_eigenvalues_kpoints', 'number_of_eigenvalues', 'x_gpaw_number_of_projectors'], - description=''' + shape=[ + "number_of_spin_channels", + "number_of_eigenvalues_kpoints", + "number_of_eigenvalues", + "x_gpaw_number_of_projectors", + ], + description=""" projections in the PAW formalism (real part) - ''') + """, + ) x_gpaw_spin_Sz = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of the z projection of the spin moment operator $S^z$ for the converged calculation with the XC_method. - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_gpaw_density_convergence_criterion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Density convergence criteria for break the SCF cycle - ''') + """, + ) x_gpaw_fix_density = Quantity( type=bool, shape=[], - description=''' + description=""" Was it a calculation with a fixed density? - ''') + """, + ) x_gpaw_fix_magnetic_moment = Quantity( type=bool, shape=[], - description=''' + description=""" Was the magnetic moment fixed? If yes the x_gpaw_fixed_sZ is set - ''') + """, + ) x_gpaw_maximum_angular_momentum = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maxium angular momentum (L) for projectors - ''') + """, + ) x_gpaw_mix_beta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Damping parameter in the density mixer - ''') + """, + ) x_gpaw_mix_class = Quantity( type=str, shape=[], - description=''' + description=""" The density mixer class name (Mixer, MixerSum, MixerDiff) - ''') + """, + ) x_gpaw_mix_old = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of old densities in the density mixer - ''') + """, + ) x_gpaw_mix_weight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mixing weight in density mixer - ''') + """, + ) x_gpaw_symmetry_time_reversal_switch = Quantity( type=bool, shape=[], - description=''' + description=""" Was time reserval symmetry used - ''') + """, + ) x_gpaw_xc_functional = Quantity( type=str, shape=[], - description=''' + description=""" The XC functional name used in gpaw as input - ''') + """, + ) x_gpaw_section_paw_method = SubSection( - sub_section=SectionProxy('x_gpaw_section_paw_method'), - repeats=True) + sub_section=SectionProxy("x_gpaw_section_paw_method"), repeats=True + ) diff --git a/electronicparsers/gpaw/parser.py b/electronicparsers/gpaw/parser.py index e74a78b4..713ac337 100644 --- a/electronicparsers/gpaw/parser.py +++ b/electronicparsers/gpaw/parser.py @@ -25,15 +25,29 @@ from nomad.parsing.file_parser import FileParser, TarParser, XMLParser, DataTextParser from runschema.run import Run, Program from runschema.method import ( - Electronic, Method, DFT, Smearing, XCFunctional, Functional, BasisSet, - BasisSetContainer, Electronic, Scf -) -from runschema.system import ( - System, Atoms + Electronic, + Method, + DFT, + Smearing, + XCFunctional, + Functional, + BasisSet, + BasisSetContainer, + Electronic, + Scf, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, BandEnergies, BandStructure, - Density, Potential, PotentialValue + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + BandEnergies, + BandStructure, + Density, + Potential, + PotentialValue, ) from .metainfo import gpaw # pylint: disable=unused-import @@ -41,12 +55,17 @@ class GPWParser(TarParser): def __init__(self): super().__init__() - self._version_map = {6: '1.1.0', 5: '0.11.0', 3: '0.10.0'} + self._version_map = {6: "1.1.0", 5: "0.11.0", 3: "0.10.0"} self._info_map = { - 'energy_total': 'Epot', 'energy_XC': 'Exc', 'electronic_kinetic_energy': 'Ekin', - 'energy_correction_entropy': 'S', 'atom_forces_free': 'CartesianForce', - 'atom_positions': 'CartesianPositions', 'occupation': 'OccupationNumbers', - 'kpoints': 'IBZKPoints'} + "energy_total": "Epot", + "energy_XC": "Exc", + "electronic_kinetic_energy": "Ekin", + "energy_correction_entropy": "S", + "atom_forces_free": "CartesianForce", + "atom_positions": "CartesianPositions", + "occupation": "OccupationNumbers", + "kpoints": "IBZKPoints", + } def reset(self): super().reset() @@ -56,7 +75,7 @@ def reset(self): def info(self): if self._info is None: self._info = dict() - xml_file = self.get('info.xml', None) + xml_file = self.get("info.xml", None) if xml_file is None: return self.xml_file = xml_file @@ -66,8 +85,8 @@ def convert(val): if isinstance(val, list): return [convert(v) for v in val] try: - if val in ['True', 'False']: - return val == 'True' + if val in ["True", "False"]: + return val == "True" else: val = float(val) if val % 1.0 == 0.0: @@ -77,34 +96,42 @@ def convert(val): return val # parameters - self._info['parameter'] = { - 'lengthunit': 'angstrom', 'energyunit': 'eV', 'timeunit': 'femtosecond'} - self._info['parameter'].update({p['name'].lower(): convert( - p['value']) for p in xml_parser.get('parameter/', [])}) + self._info["parameter"] = { + "lengthunit": "angstrom", + "energyunit": "eV", + "timeunit": "femtosecond", + } + self._info["parameter"].update( + { + p["name"].lower(): convert(p["value"]) + for p in xml_parser.get("parameter/", []) + } + ) # array shapes, types, dimensions - self._info['array'] = dict() + self._info["array"] = dict() dimension = dict() - for arr in xml_parser.root.findall('./array'): - name = arr.attrib.get('name', None) - dtype = arr.attrib.get('type', None) + for arr in xml_parser.root.findall("./array"): + name = arr.attrib.get("name", None) + dtype = arr.attrib.get("type", None) if name is None or dtype is None: continue shape = [] - for dim in arr.findall('./dimension'): - length = int(dim.attrib.get('length', 0)) + for dim in arr.findall("./dimension"): + length = int(dim.attrib.get("length", 0)) shape.append(length) - dimension[dim.attrib.get('name')] = length - self._info['array'][name.lower()] = dict(dtype=dtype, shape=shape) - self._info['array_dimension'] = dimension + dimension[dim.attrib.get("name")] = length + self._info["array"][name.lower()] = dict(dtype=dtype, shape=shape) + self._info["array_dimension"] = dimension - self._info['bytesswap'] = ( - xml_parser.root.attrib['endianness'] == 'little') != np.little_endian + self._info["bytesswap"] = ( + xml_parser.root.attrib["endianness"] == "little" + ) != np.little_endian return self._info def get_parameter(self, key, unit=None): key = self._info_map.get(key, key) - return self.info['parameter'].get(key.lower(), None) + return self.info["parameter"].get(key.lower(), None) def get_array(self, key, unit=None): key = self._info_map.get(key, key) @@ -113,19 +140,20 @@ def get_array(self, key, unit=None): return key = key.lower() - shape = self.info['array'].get(key, {}).get('shape', None) - dtype = self.info['array'].get(key, {}).get('dtype', None) - dtype = np.dtype({'int': 'int32'}.get(dtype, dtype)) + shape = self.info["array"].get(key, {}).get("shape", None) + dtype = self.info["array"].get(key, {}).get("dtype", None) + dtype = np.dtype({"int": "int32"}.get(dtype, dtype)) size = np.prod(shape) * dtype.itemsize file_object.seek(0) parser = DataTextParser( - mainfile_contents=file_object.read(size), logger=self.logger, dtype=dtype) + mainfile_contents=file_object.read(size), logger=self.logger, dtype=dtype + ) if parser.data is None: return array = parser.data - if self._info['bytesswap']: + if self._info["bytesswap"]: array = array.byteswap() if dtype == np.int32: array = np.asarray(array, int) @@ -133,17 +161,17 @@ def get_array(self, key, unit=None): return array def get_array_dimension(self, key): - if key == 'ngpts': - val = [self.get_array_dimension('ngpts%s' % n) for n in ['x', 'y', 'z']] + if key == "ngpts": + val = [self.get_array_dimension("ngpts%s" % n) for n in ["x", "y", "z"]] else: - val = self.info['array_dimension'].get(key) + val = self.info["array_dimension"].get(key) return val def get_program_version(self): - return self._version_map.get(self.get_parameter('version'), '0.9.0') + return self._version_map.get(self.get_parameter("version"), "0.9.0") def get_smearing_width(self): - return self.get_parameter('fermiwidth') + return self.get_parameter("fermiwidth") class GPW2Parser(FileParser): @@ -167,53 +195,82 @@ def ulm(self): def info(self): if self._info is None: self._info = dict() - self._info['parameter'] = { - 'mode': 'fd', 'xc': 'LDA', 'occupations': None, 'poissonsolver': None, - 'h': None, 'gpts': None, 'kpts': [(0.0, 0.0, 0.0)], 'nbands': None, - 'charge': 0, 'setups': {}, 'basis': {}, 'spinpol': None, 'fixdensity': False, - 'filter': None, 'mixer': None, 'eigensolver': None, 'background_charge': None, - 'external': None, 'random': False, 'hund': False, 'maxiter': 333, - 'idiotproof': True, 'symmetry': { - 'point_group': True, 'time_reversal': True, 'symmorphic': True, - 'tolerance': 1e-7}, - 'convergence': { - 'energy': 0.0005, 'density': 1.0e-4, 'eigenstates': 4.0e-8, - 'bands': 'occupied', 'forces': np.inf}, - 'dtype': None, 'width': None, 'verbose': 0, 'lengthunit': 'angstrom', - 'energyunit': 'eV', 'timeunit': 'femtosecond'} + self._info["parameter"] = { + "mode": "fd", + "xc": "LDA", + "occupations": None, + "poissonsolver": None, + "h": None, + "gpts": None, + "kpts": [(0.0, 0.0, 0.0)], + "nbands": None, + "charge": 0, + "setups": {}, + "basis": {}, + "spinpol": None, + "fixdensity": False, + "filter": None, + "mixer": None, + "eigensolver": None, + "background_charge": None, + "external": None, + "random": False, + "hund": False, + "maxiter": 333, + "idiotproof": True, + "symmetry": { + "point_group": True, + "time_reversal": True, + "symmorphic": True, + "tolerance": 1e-7, + }, + "convergence": { + "energy": 0.0005, + "density": 1.0e-4, + "eigenstates": 4.0e-8, + "bands": "occupied", + "forces": np.inf, + }, + "dtype": None, + "width": None, + "verbose": 0, + "lengthunit": "angstrom", + "energyunit": "eV", + "timeunit": "femtosecond", + } if self.ulm is not None: - self._info['parameter'].update(self.ulm.parameters.asdict()) + self._info["parameter"].update(self.ulm.parameters.asdict()) return self._info def get_parameter(self, key): try: - if key == 'planewavecutoff': - val = self.get_parameter('mode').get('ecut', None) - elif key == 'basisset': - val = self.get_parameter('basis') - elif key == 'energyerror': - val = self.get_parameter('convergence').get('energy', None) - elif key == 'xcfunctional': - val = self.get_parameter('xc') + if key == "planewavecutoff": + val = self.get_parameter("mode").get("ecut", None) + elif key == "basisset": + val = self.get_parameter("basis") + elif key == "energyerror": + val = self.get_parameter("convergence").get("energy", None) + elif key == "xcfunctional": + val = self.get_parameter("xc") # in gpw format, energies are parameters - elif key == 'energy_total': + elif key == "energy_total": val = self.ulm.hamiltonian.e_total_extrapolated - elif key == 'energy_free': + elif key == "energy_free": val = self.ulm.hamiltonian.e_total_free - elif key == 'energy_XC': + elif key == "energy_XC": val = self.ulm.hamiltonian.e_xc - elif key == 'electronic_kinetic_energy': + elif key == "electronic_kinetic_energy": val = self.ulm.hamiltonian.e_kinetic - elif key == 'energy_correction_entropy': + elif key == "energy_correction_entropy": val = self.ulm.hamiltonian.e_entropy - elif key == 'fermilevel': + elif key == "fermilevel": val = self.ulm.occupations.fermilevel - elif key == 'split': + elif key == "split": val = self.ulm.occupations.split - elif key == 'converged': + elif key == "converged": val = self.ulm.scf.converged else: - val = self.info['parameter'].get(key.lower(), None) + val = self.info["parameter"].get(key.lower(), None) except Exception: val = None return val @@ -222,32 +279,32 @@ def get_array(self, key): if self.ulm is None: return try: - if key == 'unitcell': + if key == "unitcell": val = self.ulm.atoms.cell - elif key == 'atomicnumbers': + elif key == "atomicnumbers": val = self.ulm.atoms.numbers - elif key == 'atom_positions': + elif key == "atom_positions": val = self.ulm.atoms.positions - elif key == 'boundaryconditions': + elif key == "boundaryconditions": val = self.ulm.atoms.pbc - elif key == 'momenta': + elif key == "momenta": val = self.ulm.atoms.momenta - elif key == 'atom_forces_free_raw': + elif key == "atom_forces_free_raw": val = self.ulm.results.forces - elif key == 'magneticmoments': + elif key == "magneticmoments": val = self.ulm.results.magmoms - elif key == 'eigenvalues': + elif key == "eigenvalues": val = self.ulm.wave_functions.eigenvalues - elif key == 'occupation': + elif key == "occupation": val = self.ulm.wave_functions.occupations # TODO no koints data in ulm? - elif key == 'kpoints': + elif key == "kpoints": val = self.ulm.IBZKPoints - elif key == 'density': + elif key == "density": val = self.ulm.density.density - elif key == 'potential_effective': + elif key == "potential_effective": val = self.ulm.hamiltonian.potential - elif key == 'band_paths': + elif key == "band_paths": val = self.ulm.wave_functions.band_paths.asdict() else: val = self.ulm.asdict().get(key, None) @@ -256,7 +313,7 @@ def get_array(self, key): return val def get_array_dimension(self, key): - if key == 'ngpts': + if key == "ngpts": val = self.ulm.density.density.shape else: val = self.ulm.asdict().get(key, None) @@ -266,10 +323,10 @@ def get_program_version(self): return self.ulm.gpaw_version def get_smearing_width(self): - if self.get_parameter('occupations') is None: - return 0.0 if tuple(self.get_parameter('kpts')) == (1, 1, 1) else 0.1 + if self.get_parameter("occupations") is None: + return 0.0 if tuple(self.get_parameter("kpts")) == (1, 1, 1) else 0.1 else: - return self.get_parameter('occupations').get('width') + return self.get_parameter("occupations").get("width") def parse(self, key=None): pass @@ -280,20 +337,21 @@ def __init__(self): self.gpw_parser = GPWParser() self.gpw2_parser = GPW2Parser() self._xc_map = { - 'LDA': ['LDA_X', 'LDA_C_PW'], - 'PW91': ['GGA_X_PW91', 'GGA_C_PW91'], - 'PBE': ['GGA_X_PBE', 'GGA_C_PBE'], - 'PBEsol': ['GGA_X_PBE_SOL', 'GGA_C_PBE_SOL'], - 'revPBE': ['GGA_X_PBE_R', 'GGA_C_PBE'], - 'RPBE': ['GGA_X_RPBE', 'GGA_C_PBE'], - 'BLYP': ['GGA_X_B88', 'GGA_C_LYP'], - 'HCTH407': ['GGA_XC_HCTH_407'], - 'WC': ['GGA_X_WC', 'GGA_C_PBE'], - 'AM05': ['GGA_X_AM05', 'GGA_C_AM05'], - 'M06-L': ['MGGA_X_M06_L', 'MGGA_C_M06_L'], - 'TPSS': ['MGGA_X_TPSS', 'MGGA_C_TPSS'], - 'revTPSS': ['MGGA_X_REVTPSS', 'MGGA_C_REVTPSS'], - 'mBEEF': ['MGGA_X_MBEEF', 'GGA_C_PBE_SOL']} + "LDA": ["LDA_X", "LDA_C_PW"], + "PW91": ["GGA_X_PW91", "GGA_C_PW91"], + "PBE": ["GGA_X_PBE", "GGA_C_PBE"], + "PBEsol": ["GGA_X_PBE_SOL", "GGA_C_PBE_SOL"], + "revPBE": ["GGA_X_PBE_R", "GGA_C_PBE"], + "RPBE": ["GGA_X_RPBE", "GGA_C_PBE"], + "BLYP": ["GGA_X_B88", "GGA_C_LYP"], + "HCTH407": ["GGA_XC_HCTH_407"], + "WC": ["GGA_X_WC", "GGA_C_PBE"], + "AM05": ["GGA_X_AM05", "GGA_C_AM05"], + "M06-L": ["MGGA_X_M06_L", "MGGA_C_M06_L"], + "TPSS": ["MGGA_X_TPSS", "MGGA_C_TPSS"], + "revTPSS": ["MGGA_X_REVTPSS", "MGGA_C_REVTPSS"], + "mBEEF": ["MGGA_X_MBEEF", "GGA_C_PBE_SOL"], + } def init_parser(self, filepath, logger): self.parser = self.gpw_parser @@ -305,31 +363,35 @@ def init_parser(self, filepath, logger): def apply_unit(self, val, unit): units_map = { - 'ev': ureg.eV, 'hartree': ureg.hartree, 'angstrom': ureg.angstrom, - 'bohr': ureg.bohr, 'femtosecond': ureg.fs} - p_unit = self.parser.info['parameter'].get(unit, '').lower() + "ev": ureg.eV, + "hartree": ureg.hartree, + "angstrom": ureg.angstrom, + "bohr": ureg.bohr, + "femtosecond": ureg.fs, + } + p_unit = self.parser.info["parameter"].get(unit, "").lower() unit = units_map.get(p_unit, p_unit) if p_unit else unit return val * unit def get_mode(self): - mode = self.parser.get_parameter('mode') + mode = self.parser.get_parameter("mode") if isinstance(mode, dict): - mode = mode.get('name', None) + mode = mode.get("name", None) return mode def get_nspin(self): # TODO another way determine spin? - magnetic_moments = self.parser.get_array('magneticmoments') + magnetic_moments = self.parser.get_array("magneticmoments") return 1 if magnetic_moments is None else 2 def get_fermi_level(self): - fermi_level = [self.parser.get_parameter('fermilevel')] * self.get_nspin() + fermi_level = [self.parser.get_parameter("fermilevel")] * self.get_nspin() if None in fermi_level: return - split = self.parser.get_parameter('split') + split = self.parser.get_parameter("split") if split is not None: fermi_level = [v + (-i + 0.5) * split for i, v in enumerate(fermi_level)] - return self.apply_unit(fermi_level, 'energyunit') + return self.apply_unit(fermi_level, "energyunit") def parse_method(self): sec_method = Method() @@ -337,89 +399,104 @@ def parse_method(self): # Basis Set def _basisset_type_to_container(basisset_type: str) -> str: - for option in ('real-space grid', 'plane waves'): + for option in ("real-space grid", "plane waves"): if basisset_type == option: return basisset_type - if basisset_type == 'numeric AOs': - return 'atom-centered orbitals' - return '' + if basisset_type == "numeric AOs": + return "atom-centered orbitals" + return "" mode = self.get_mode() bs = None - if mode == 'pw': - pw_cutoff = self.parser.get_parameter('planewavecutoff') - pw_cutoff = self.apply_unit(pw_cutoff, 'energyunit') + if mode == "pw": + pw_cutoff = self.parser.get_parameter("planewavecutoff") + pw_cutoff = self.apply_unit(pw_cutoff, "energyunit") bs = BasisSet( - scope=['valence'], - type='plane waves', + scope=["valence"], + type="plane waves", cutoff=pw_cutoff, ) - elif mode == 'fd': + elif mode == "fd": bs = BasisSet( - scope=['full-electron'], # TODO check - type='real-space grid', + scope=["full-electron"], # TODO check + type="real-space grid", + ) + cell = self.parser.get_array("unitcell") + ngpts = self.apply_unit( + self.parser.get_array_dimension("ngpts"), "lengthunit" ) - cell = self.parser.get_array('unitcell') - ngpts = self.apply_unit(self.parser.get_array_dimension('ngpts'), 'lengthunit') if cell.any() and ngpts.all(): h_grid = np.linalg.norm(cell, axis=1) / np.array(ngpts[:3]) - bs.grid_spacing = self.apply_unit(h_grid, 'lengthunit') - elif mode == 'lcao': + bs.grid_spacing = self.apply_unit(h_grid, "lengthunit") + elif mode == "lcao": bs = BasisSet( - scope=['full-electron'], # TODO check - type='numeric AOs', + scope=["full-electron"], # TODO check + type="numeric AOs", ) if bs: sec_method.electrons_representation.append( BasisSetContainer( type=_basisset_type_to_container(bs.type), - scope=['wavefunction'], + scope=["wavefunction"], basis_set=[bs], ) ) sec_electronic = Electronic() sec_method.electronic = sec_electronic - sec_electronic.relativity_method = 'pseudo_scalar_relativistic' - sec_electronic.method = 'DFT' - charge = self.parser.get_parameter('charge') + sec_electronic.relativity_method = "pseudo_scalar_relativistic" + sec_electronic.method = "DFT" + charge = self.parser.get_parameter("charge") if charge is not None: sec_electronic.charge = int(charge) - threshold_energy = self.parser.get_parameter('energyerror') + threshold_energy = self.parser.get_parameter("energyerror") sec_scf = Scf() sec_method.scf = sec_scf - sec_scf.threshold_energy_change = self.apply_unit(threshold_energy, 'energyunit') + sec_scf.threshold_energy_change = self.apply_unit( + threshold_energy, "energyunit" + ) smearing_width = self.parser.get_smearing_width() if smearing_width is not None: - sec_electronic.smearing = Smearing(kind='fermi', width=self.apply_unit( - smearing_width, 'energyunit').to('joule').magnitude) + sec_electronic.smearing = Smearing( + kind="fermi", + width=self.apply_unit(smearing_width, "energyunit") + .to("joule") + .magnitude, + ) sec_dft = DFT() sec_method.dft = sec_dft sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional - xc_functional = self.parser.get_parameter('xcfunctional') + xc_functional = self.parser.get_parameter("xcfunctional") for xc in self._xc_map.get(xc_functional, [xc_functional]): - if '_X_' in xc or xc.endswith('_X'): + if "_X_" in xc or xc.endswith("_X"): sec_xc_functional.exchange.append(Functional(name=xc)) - elif '_C_' in xc or xc.endswith('_C'): + elif "_C_" in xc or xc.endswith("_C"): sec_xc_functional.correlation.append(Functional(name=xc)) - elif 'HYB' in xc: + elif "HYB" in xc: sec_xc_functional.hybrid.append(Functional(name=xc)) else: sec_xc_functional.contributions.append(Functional(name=xc)) method_keys = [ - 'fix_magnetic_moment', 'fix_density', 'density_convergence_criterion', - 'mix_class', 'mix_beta', 'mix_weight', 'mix_old', 'maximum_angular_momentum', - 'symmetry_time_reversal_switch'] + "fix_magnetic_moment", + "fix_density", + "density_convergence_criterion", + "mix_class", + "mix_beta", + "mix_weight", + "mix_old", + "maximum_angular_momentum", + "symmetry_time_reversal_switch", + ] for key in method_keys: - val = self.parser.get_parameter(key.replace('_', '')) + val = self.parser.get_parameter(key.replace("_", "")) if val is None: continue - setattr(sec_method, 'x_gpaw_%s' % key, val) + setattr(sec_method, "x_gpaw_%s" % key, val) def parse_scc(self): sec_run = self.archive.run[-1] @@ -428,30 +505,37 @@ def parse_scc(self): # energies (in gpw, energies are part of parameters) energy_keys = [ - 'energy_total', 'energy_free', 'energy_XC', 'energy_kinetic_electronic', - 'energy_correction_entropy'] + "energy_total", + "energy_free", + "energy_XC", + "energy_kinetic_electronic", + "energy_correction_entropy", + ] sec_energy = Energy() sec_scc.energy = sec_energy for key in energy_keys: val = self.parser.get_parameter(key) if val is not None: - sec_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '').lower()), EnergyEntry( - value=self.apply_unit(val, 'energyunit'))) + sec_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=self.apply_unit(val, "energyunit")), + ) # forces - if self.parser.get_array('atom_forces_free') is not None: - energyunit = self.apply_unit(1, 'energyunit').units - lengthunit = self.apply_unit(1, 'lengthunit').units - value = self.parser.get_array('atom_forces_free') * energyunit / lengthunit - raw = self.parser.get_array('atom_forces_free_raw') * energyunit / lengthunit + if self.parser.get_array("atom_forces_free") is not None: + energyunit = self.apply_unit(1, "energyunit").units + lengthunit = self.apply_unit(1, "lengthunit").units + value = self.parser.get_array("atom_forces_free") * energyunit / lengthunit + raw = ( + self.parser.get_array("atom_forces_free_raw") * energyunit / lengthunit + ) sec_scc.forces = Forces(free=ForcesEntry(value=value, value_raw=raw)) # magnetic moments - magnetic_moments = self.parser.get_array('magneticmoments') + magnetic_moments = self.parser.get_array("magneticmoments") if magnetic_moments is not None: sec_scc.x_gpaw_magnetic_moments = magnetic_moments - sec_scc.x_gpaw_fixed_spin_Sz = magnetic_moments.sum() / 2. + sec_scc.x_gpaw_fixed_spin_Sz = magnetic_moments.sum() / 2.0 # fermi level fermi_level = self.get_fermi_level() @@ -459,61 +543,69 @@ def parse_scc(self): sec_scc.energy.fermi = fermi_level[0] # eigenvalues - eigenvalues = self.parser.get_array('eigenvalues') + eigenvalues = self.parser.get_array("eigenvalues") if eigenvalues is not None: sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) - sec_eigenvalues.kpoints = self.parser.get_array('kpoints') - values = self.apply_unit(eigenvalues, 'energyunit') - occupations = self.parser.get_array('occupation') + sec_eigenvalues.kpoints = self.parser.get_array("kpoints") + values = self.apply_unit(eigenvalues, "energyunit") + occupations = self.parser.get_array("occupation") sec_eigenvalues.energies = values if occupations is not None: sec_eigenvalues.occupations = occupations # band path (TODO only in ulm?) - band_paths = self.parser.get_array('band_paths') + band_paths = self.parser.get_array("band_paths") if band_paths is not None: sec_k_band = BandStructure() sec_scc.band_structure_electronic.append(sec_k_band) for band_path in band_paths: sec_band_seg = BandEnergies() sec_k_band.segment.append(sec_band_seg) - if band_path.get('eigenvalues', None) is not None: - energies = self.apply_unit(band_path.get('eigenvalues'), 'energyunit') + if band_path.get("eigenvalues", None) is not None: + energies = self.apply_unit( + band_path.get("eigenvalues"), "energyunit" + ) sec_band_seg.energies = energies - kpoints = band_path.get('kpoints', None) + kpoints = band_path.get("kpoints", None) if kpoints is not None: sec_band_seg.kpoints = kpoints - if band_path.get('labels', None) is not None: - sec_band_seg.endpoints_labels = band_path.get('labels') + if band_path.get("labels", None) is not None: + sec_band_seg.endpoints_labels = band_path.get("labels") # volumetric data - density = self.parser.get_array('density') + density = self.parser.get_array("density") if density is not None: - cell = self.parser.get_array('unitcell') + cell = self.parser.get_array("unitcell") origin = -0.5 * np.array(cell).sum(axis=0) - pbc = self.parser.get_array('boundaryconditions') + pbc = self.parser.get_array("boundaryconditions") npoints = np.array(density.shape[1:]) - npoints = [(npt + 1) if not pbc[i] else npt for i, npt in enumerate(npoints)] + npoints = [ + (npt + 1) if not pbc[i] else npt for i, npt in enumerate(npoints) + ] displacements = cell / np.array(npoints) - lengthunit = self.apply_unit(1, 'lengthunit').units - energyunit = self.apply_unit(1, 'energyunit').units - density = self.parser.get_array('density') + lengthunit = self.apply_unit(1, "lengthunit").units + energyunit = self.apply_unit(1, "energyunit").units + density = self.parser.get_array("density") if density is not None: sec_density = Density() sec_scc.density_charge.append(sec_density) - sec_density.origin = (origin * lengthunit) - sec_density.displacements = (displacements * lengthunit) - sec_density.value = density / lengthunit ** 3 + sec_density.origin = origin * lengthunit + sec_density.displacements = displacements * lengthunit + sec_density.value = density / lengthunit**3 - potential = self.parser.get_array('potential_effective') + potential = self.parser.get_array("potential_effective") if potential is not None: sec_scc.potential.append(Potential(effective=[PotentialValue()])) - sec_scc.potential[0].effective[0].origin = (origin * lengthunit) - sec_scc.potential[0].effective[0].displacements = (displacements * lengthunit) - sec_scc.potential[0].effective[0].value = potential * energyunit / lengthunit ** 3 + sec_scc.potential[0].effective[0].origin = origin * lengthunit + sec_scc.potential[0].effective[0].displacements = ( + displacements * lengthunit + ) + sec_scc.potential[0].effective[0].value = ( + potential * energyunit / lengthunit**3 + ) - converged = self.parser.get_parameter('converged') + converged = self.parser.get_parameter("converged") if converged is not None: sec_scc.calculation_converged = converged @@ -526,26 +618,34 @@ def parse_system(self): sec_atoms = Atoms() sec_system.atoms = sec_atoms - cell = self.parser.get_array('unitcell') + cell = self.parser.get_array("unitcell") if cell is not None: - cell = self.apply_unit(cell, 'lengthunit') + cell = self.apply_unit(cell, "lengthunit") sec_atoms.lattice_vectors = cell sec_system.atoms.labels = [ - ase.data.chemical_symbols[z] for z in self.parser.get_array('atomicnumbers')] + ase.data.chemical_symbols[z] for z in self.parser.get_array("atomicnumbers") + ] - positions = self.parser.get_array('atom_positions') - sec_atoms.positions = self.apply_unit(positions, 'lengthunit') + positions = self.parser.get_array("atom_positions") + sec_atoms.positions = self.apply_unit(positions, "lengthunit") - pbc = [True, True, True] if self.get_mode() == 'pw' else np.array( - self.parser.get_array('boundaryconditions'), bool) + pbc = ( + [True, True, True] + if self.get_mode() == "pw" + else np.array(self.parser.get_array("boundaryconditions"), bool) + ) sec_atoms.periodic = pbc - momenta = self.parser.get_array('momenta') + momenta = self.parser.get_array("momenta") if momenta is not None: - masses = np.array([ase.data.atomic_masses[self.parser.get_array('atomicnumbers')]]) + masses = np.array( + [ase.data.atomic_masses[self.parser.get_array("atomicnumbers")]] + ) velocities = momenta / masses.reshape(-1, 1) - sec_atoms.velocities = velocities * ase.units.fs / ase.units.Angstrom * ureg.angstrom / ureg.fs + sec_atoms.velocities = ( + velocities * ase.units.fs / ase.units.Angstrom * ureg.angstrom / ureg.fs + ) def parse(self, filepath, archive, logger): self.filepath = filepath @@ -555,7 +655,9 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='GPAW', version=self.parser.get_program_version()) + sec_run.program = Program( + name="GPAW", version=self.parser.get_program_version() + ) self.parse_method() diff --git a/electronicparsers/magres/metainfo/magres.py b/electronicparsers/magres/metainfo/magres.py index 4f1d8c64..16ce9d32 100644 --- a/electronicparsers/magres/metainfo/magres.py +++ b/electronicparsers/magres/metainfo/magres.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) diff --git a/electronicparsers/molcas/metainfo/molcas.py b/electronicparsers/molcas/metainfo/molcas.py index 1c90c5d5..5d2592ad 100644 --- a/electronicparsers/molcas/metainfo/molcas.py +++ b/electronicparsers/molcas/metainfo/molcas.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,105 +39,113 @@ class x_molcas_section_frequency(MSection): - ''' + """ Section for Molcas frequency (symmetry, frequency, intensity) - ''' + """ m_def = Section(validate=False) x_molcas_frequency_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Molcas frequency value - ''') + """, + ) x_molcas_imaginary_frequency_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Molcas imaginary frequency value - ''') + """, + ) x_molcas_frequency_intensity = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Molcas intensity value - ''') + """, + ) x_molcas_frequency_symmetry = Quantity( type=str, shape=[], - description=''' + description=""" Molcas symmetry for frequencies - ''') + """, + ) class x_molcas_section_basis(MSection): - ''' + """ Section for Molcas basis sets - ''' + """ m_def = Section(validate=False) x_molcas_basis_atom_label = Quantity( type=str, shape=[], - description=''' + description=""" Molcas basis set atom label. - ''') + """, + ) x_molcas_basis_name = Quantity( type=str, shape=[], - description=''' + description=""" Molcas basis set name. Repeated strings of '.' are compressed to a single '.'. Any leading or trailing '.' are stripped. - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_molcas_method_name = Quantity( type=str, shape=[], - description=''' + description=""" Molcas method name (without UHF; see x_molcas_uhf) - ''') + """, + ) x_molcas_uhf = Quantity( type=bool, shape=[], - description=''' + description=""" If the Molcas method is UHF. - ''') + """, + ) x_molcas_section_basis = SubSection( - sub_section=SectionProxy('x_molcas_section_basis'), - repeats=True) + sub_section=SectionProxy("x_molcas_section_basis"), repeats=True + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_molcas_slapaf_grad_norm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Molcas slapaf (geometry optimization) grad (force) norm - ''') + """, + ) x_molcas_slapaf_grad_max = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Molcas slapaf (geometry optimization) grad (force) max - ''') + """, + ) x_molcas_section_frequency = SubSection( - sub_section=SectionProxy('x_molcas_section_frequency'), - repeats=True) + sub_section=SectionProxy("x_molcas_section_frequency"), repeats=True + ) diff --git a/electronicparsers/molcas/parser.py b/electronicparsers/molcas/parser.py index 0d861305..c5b577e3 100644 --- a/electronicparsers/molcas/parser.py +++ b/electronicparsers/molcas/parser.py @@ -26,23 +26,33 @@ class MolcasParser: def __init__(self): - re_f = r'\-*\d+\.\d+E*e*\-*\+*\d*' + re_f = r"\-*\d+\.\d+E*e*\-*\+*\d*" def get_positions(val): try: - labels, positions = zip(*re.findall(rf'\d+ +([A-Z][a-z]*)\d* +({re_f} +{re_f} +{re_f})', val)) - positions = np.array([v.split() for v in positions], dtype=np.dtype(np.float64)) * ureg.angstrom + labels, positions = zip( + *re.findall( + rf"\d+ +([A-Z][a-z]*)\d* +({re_f} +{re_f} +{re_f})", val + ) + ) + positions = ( + np.array([v.split() for v in positions], dtype=np.dtype(np.float64)) + * ureg.angstrom + ) except Exception: labels, positions = [], [] return dict(atom_labels=labels, atom_positions=positions) self._parser = BasicParser( - 'MOLCAS', + "MOLCAS", units_mapping=dict(length=ureg.bohr, energy=ureg.hartree), # include code name to distinguish gamess and firefly - program_version=r'version ([\d\.]+ patchlevel \d+)', - atom_labels_atom_positions=(r'No\. +Label +X +Y +Z\s*([\s\S]+?)\n *\n', get_positions), - energy_total=rf'Total.* energy *\:*\=* *({re_f})' + program_version=r"version ([\d\.]+ patchlevel \d+)", + atom_labels_atom_positions=( + r"No\. +Label +X +Y +Z\s*([\s\S]+?)\n *\n", + get_positions, + ), + energy_total=rf"Total.* energy *\:*\=* *({re_f})", ) def parse(self, mainfile, archive, logger=None): diff --git a/electronicparsers/mopac/metainfo/mopac.py b/electronicparsers/mopac/metainfo/mopac.py index c3b247b0..95b91545 100644 --- a/electronicparsers/mopac/metainfo/mopac.py +++ b/electronicparsers/mopac/metainfo/mopac.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,38 +40,40 @@ class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_mopac_fhof = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Final heat of formation - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_mopac_keyword_line = Quantity( type=str, shape=[], - description=''' + description=""" Mopac keyword line (it controls the calculation) - ''') + """, + ) x_mopac_method = Quantity( type=str, shape=[], - description=''' + description=""" Mopac method, i.e. PM7, AM1, etc.. - ''') + """, + ) x_mopac_calculation_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) diff --git a/electronicparsers/mopac/parser.py b/electronicparsers/mopac/parser.py index 1c0f6f02..a3fe7e5d 100644 --- a/electronicparsers/mopac/parser.py +++ b/electronicparsers/mopac/parser.py @@ -28,105 +28,133 @@ from runschema.method import Method from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, BandEnergies, - Multipoles, MultipolesEntry, Charges, ChargesValue + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + BandEnergies, + Multipoles, + MultipolesEntry, + Charges, + ChargesValue, ) from .metainfo import m_env # pylint: disable=unused-import -re_f = r'[-+]?\d*\.\d*(?:[Ee][-+]\d+)?' -re_n = r'[\n\r]' -MOL = 6.02214076e+23 +re_f = r"[-+]?\d*\.\d*(?:[Ee][-+]\d+)?" +re_n = r"[\n\r]" +MOL = 6.02214076e23 class MainfileParser(TextParser): def init_quantities(self): self._quantities = [ - Quantity('program_version', r'Version (\S+)', dtype=str), - Quantity('program_version', r'MOPAC v([\d\.]+)', dtype=str), + Quantity("program_version", r"Version (\S+)", dtype=str), + Quantity("program_version", r"MOPAC v([\d\.]+)", dtype=str), Quantity( - 'calculation', - r'(CALCULATION DONE:[\s\S]+?)\*\*\*\*\*', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - r'([\w=]+) +\- +(.+)', - str_operation=lambda x: x.split(' ', 1), repeats=True - ), - Quantity( - 'date_start', - r'CALCULATION DONE\: +\w+ (\w+) +(\d+ +\d+\:\d+\:\d+ \d+)', - flatten=False, dtype=str - ) - ]) + "calculation", + r"(CALCULATION DONE:[\s\S]+?)\*\*\*\*\*", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"([\w=]+) +\- +(.+)", + str_operation=lambda x: x.split(" ", 1), + repeats=True, + ), + Quantity( + "date_start", + r"CALCULATION DONE\: +\w+ (\w+) +(\d+ +\d+\:\d+\:\d+ \d+)", + flatten=False, + dtype=str, + ), + ] + ), ), Quantity( - 'coordinates', - rf'CARTESIAN COORDINATES\s+NO\. +ATOM +X +Y +Z\s+' - rf'((?:\d+ +[A-Z]\w* +{re_f} +{re_f} +{re_f}\s+)+)', - str_operation=lambda x: [v.split() for v in x.strip().splitlines()] + "coordinates", + rf"CARTESIAN COORDINATES\s+NO\. +ATOM +X +Y +Z\s+" + rf"((?:\d+ +[A-Z]\w* +{re_f} +{re_f} +{re_f}\s+)+)", + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], + ), + Quantity( + "x_mopac_fhof", + rf"FINAL HEAT OF FORMATION += +({re_f}) KCAL/MOL", + dtype=np.float64, + unit=ureg.J * 4184.0 / MOL, ), Quantity( - 'x_mopac_fhof', - rf'FINAL HEAT OF FORMATION += +({re_f}) KCAL/MOL', - dtype=np.float64, unit=ureg.J * 4184.0 / MOL + "energy_total", + rf"TOTAL ENERGY += +({re_f}) EV", + dtype=np.float64, + unit=ureg.eV, ), Quantity( - 'energy_total', - rf'TOTAL ENERGY += +({re_f}) EV', - dtype=np.float64, unit=ureg.eV + "energy_electronic", + rf"ELECTRONIC ENERGY += +({re_f}) EV", + dtype=np.float64, + unit=ureg.eV, ), Quantity( - 'energy_electronic', - rf'ELECTRONIC ENERGY += +({re_f}) EV', - dtype=np.float64, unit=ureg.eV + "energy_nuclear_repulsion", + rf"CORE\-CORE REPULSION += +({re_f}) EV", + dtype=np.float64, + unit=ureg.eV, ), Quantity( - 'energy_nuclear_repulsion', - rf'CORE\-CORE REPULSION += +({re_f}) EV', - dtype=np.float64, unit=ureg.eV + "n_filled_levels", r"NO\. OF FILLED LEVELS += +(\d+)", dtype=np.int32 ), Quantity( - 'n_filled_levels', - r'NO\. OF FILLED LEVELS += +(\d+)', dtype=np.int32 + "n_alpha_electrons", + r"NO\. OF ALPHA +ELECTRONS += +(\d+)", + dtype=np.int32, ), Quantity( - 'n_alpha_electrons', - r'NO\. OF ALPHA +ELECTRONS += +(\d+)', dtype=np.int32 + "n_beta_electrons", r"NO\. OF BETA +ELECTRONS += +(\d+)", dtype=np.int32 ), Quantity( - 'n_beta_electrons', - r'NO\. OF BETA +ELECTRONS += +(\d+)', dtype=np.int32 + "eigenvalues", + rf"EIGENVALUES\s+((?:{re_f}\s+)+)", + repeats=True, + dtype=np.dtype(np.float64), ), Quantity( - 'eigenvalues', - rf'EIGENVALUES\s+((?:{re_f}\s+)+)', - repeats=True, dtype=np.dtype(np.float64) + "forces", + r"FINAL +POINT +AND +DERIVATIVES\s+PARAMETER +ATOM.+\s+" + rf"((?:\d+ +\d+ +[A-Z]\S* +CARTESIAN.+\s+)+)", + str_operation=lambda x: np.array( + [v.split()[6] for v in x.strip().splitlines()], np.dtype(np.float64) + ), ), Quantity( - 'forces', - r'FINAL +POINT +AND +DERIVATIVES\s+PARAMETER +ATOM.+\s+' - rf'((?:\d+ +\d+ +[A-Z]\S* +CARTESIAN.+\s+)+)', - str_operation=lambda x: np.array([v.split()[6] for v in x.strip().splitlines()], np.dtype(np.float64)) + "dipole", + rf"DIPOLE +X +Y +Z +TOTAL\s+((?:\S+ +{re_f} +{re_f} +{re_f} +{re_f}\s+)+)", + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], ), Quantity( - 'dipole', - rf'DIPOLE +X +Y +Z +TOTAL\s+((?:\S+ +{re_f} +{re_f} +{re_f} +{re_f}\s+)+)', - str_operation=lambda x: [v.split() for v in x.strip().splitlines()] + "atomic_population", + rf"ATOM NO\. +TYPE +CHARGE.+\s+((?:\d+ +[A-Z]\S* +{re_f}.+\s+)+)", + str_operation=lambda x: [v.split() for v in x.strip().splitlines()], ), Quantity( - 'atomic_population', - rf'ATOM NO\. +TYPE +CHARGE.+\s+((?:\d+ +[A-Z]\S* +{re_f}.+\s+)+)', + "orbital_population", + rf"ATOMIC ORBITAL ELECTRON POPULATIONS\s+(Atom.+\s+)((?:\d+ +[A-Z]\S* +{re_f}.+\s+)+)", str_operation=lambda x: [v.split() for v in x.strip().splitlines()], ), + Quantity("spin_S2", rf"\(S\*\*2\) += +({re_f})", dtype=np.float64), + Quantity( + "time_physical", + rf"WALL\-CLOCK TIME += +({re_f}) SECONDS", + dtype=np.float64, + unit=ureg.s, + ), Quantity( - 'orbital_population', - rf'ATOMIC ORBITAL ELECTRON POPULATIONS\s+(Atom.+\s+)((?:\d+ +[A-Z]\S* +{re_f}.+\s+)+)', - str_operation=lambda x: [v.split() for v in x.strip().splitlines()] + "time_calculation", + rf"COMPUTATION TIME += +({re_f}) SECONDS", + dtype=np.float64, + unit=ureg.s, ), - Quantity('spin_S2', rf'\(S\*\*2\) += +({re_f})', dtype=np.float64), - Quantity('time_physical', rf'WALL\-CLOCK TIME += +({re_f}) SECONDS', dtype=np.float64, unit=ureg.s), - Quantity('time_calculation', rf'COMPUTATION TIME += +({re_f}) SECONDS', dtype=np.float64, unit=ureg.s) ] @@ -134,8 +162,21 @@ class MopacParser: def __init__(self): self.mainfile_parser = MainfileParser() self._methods = [ - 'AM1', 'MNDO', 'MNDOD', 'PM3', 'PM6', 'PM6-D3', 'PM6-DH+', 'PM6-DH2', - 'PM6-DH2X', 'PM6-D3H4', 'PM6-D3H4X', 'PMEP', 'PM7', 'PM7-TS', 'RM1' + "AM1", + "MNDO", + "MNDOD", + "PM3", + "PM6", + "PM6-D3", + "PM6-DH+", + "PM6-DH2", + "PM6-DH2X", + "PM6-D3H4", + "PM6-D3H4X", + "PMEP", + "PM7", + "PM7-TS", + "RM1", ] def parse(self, filepath, archive, logger): @@ -150,18 +191,23 @@ def parse(self, filepath, archive, logger): sec_run = Run() archive.run.append(sec_run) sec_run.program = Program( - name='mopac', - version=self.mainfile_parser.get('program_version')) + name="mopac", version=self.mainfile_parser.get("program_version") + ) - date_start = self.mainfile_parser.get('calculation', {}).get('date_start') + date_start = self.mainfile_parser.get("calculation", {}).get("date_start") if date_start is not None: sec_run.time_run = TimeRun( - date_start=datetime.strptime(date_start, '%b %d %H:%M:%S %Y').timestamp()) + date_start=datetime.strptime( + date_start, "%b %d %H:%M:%S %Y" + ).timestamp() + ) sec_method = Method() sec_run.method.append(sec_method) sec_method.x_mopac_calculation_parameters = { - v[0]: v[1] for v in self.mainfile_parser.get('calculation', {}).get('parameters', [])} + v[0]: v[1] + for v in self.mainfile_parser.get("calculation", {}).get("parameters", []) + } for method in self._methods: if method in sec_method.x_mopac_calculation_parameters: @@ -171,8 +217,10 @@ def parse(self, filepath, archive, logger): sec_system = System() sec_run.system.append(sec_system) sec_system.atoms = Atoms( - labels=[v[1] for v in self.mainfile_parser.get('coordinates', [])], - positions=[v[2:5] for v in self.mainfile_parser.get('coordinates', [])] * ureg.angstrom) + labels=[v[1] for v in self.mainfile_parser.get("coordinates", [])], + positions=[v[2:5] for v in self.mainfile_parser.get("coordinates", [])] + * ureg.angstrom, + ) sec_calc = Calculation() sec_run.calculation.append(sec_calc) @@ -181,19 +229,33 @@ def parse(self, filepath, archive, logger): sec_calc.energy = Energy( total=EnergyEntry(value=self.mainfile_parser.energy_total), electronic=EnergyEntry(value=self.mainfile_parser.energy_electronic), - nuclear_repulsion=EnergyEntry(value=self.mainfile_parser.energy_nuclear_repulsion) + nuclear_repulsion=EnergyEntry( + value=self.mainfile_parser.energy_nuclear_repulsion + ), ) forces = self.mainfile_parser.forces if forces is not None: - sec_calc.forces = Forces(total=ForcesEntry( - value=np.reshape(forces, (len(sec_system.atoms.labels), 3)) * ureg.J * 4184.0 / ureg.angstrom / MOL) + sec_calc.forces = Forces( + total=ForcesEntry( + value=np.reshape(forces, (len(sec_system.atoms.labels), 3)) + * ureg.J + * 4184.0 + / ureg.angstrom + / MOL + ) ) eigenvalues = self.mainfile_parser.eigenvalues if eigenvalues is not None: - occupied = [self.mainfile_parser.n_filled] if len(eigenvalues) == 1 else [ - self.mainfile_parser.n_alpha_electrons, self.mainfile_parser.n_beta_electrons] + occupied = ( + [self.mainfile_parser.n_filled] + if len(eigenvalues) == 1 + else [ + self.mainfile_parser.n_alpha_electrons, + self.mainfile_parser.n_beta_electrons, + ] + ) occupations = np.zeros(np.shape(eigenvalues)) for spin, max_occupied in enumerate(occupied): occupations[spin, 0:max_occupied] = 2 // len(occupied) @@ -216,17 +278,24 @@ def parse(self, filepath, archive, logger): sec_charges = Charges() sec_calc.charges.append(sec_charges) # atom projections - sec_charges.value = [c[3] for c in atomic_population] * ureg.elementary_charge - orbital_population = self.mainfile_parser.get('orbital_population') + sec_charges.value = [ + c[3] for c in atomic_population + ] * ureg.elementary_charge + orbital_population = self.mainfile_parser.get("orbital_population") if orbital_population is not None: # orbital labels orbitals = orbital_population[0][1:] for n_atom, atom in enumerate(orbital_population[1:]): for n_orb, value in enumerate(atom[2:]): # orbital projections - sec_charges.orbital_projected.append(ChargesValue( - orbital=orbitals[n_orb], value=value * ureg.elementary_charge, - atom_index=n_atom, atom_label=atom[1])) + sec_charges.orbital_projected.append( + ChargesValue( + orbital=orbitals[n_orb], + value=value * ureg.elementary_charge, + atom_index=n_atom, + atom_label=atom[1], + ) + ) sec_calc.spin_S2 = self.mainfile_parser.spin_S2 sec_calc.time_physical = self.mainfile_parser.time_physical diff --git a/electronicparsers/nwchem/metainfo/nwchem.py b/electronicparsers/nwchem/metainfo/nwchem.py index 9090dbae..463db629 100644 --- a/electronicparsers/nwchem/metainfo/nwchem.py +++ b/electronicparsers/nwchem/metainfo/nwchem.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -33,411 +40,448 @@ class x_nwchem_section_start_information(MSection): - ''' + """ Contains information about the starting conditions for this run - ''' + """ m_def = Section(validate=False) x_nwchem_input_filename = Quantity( type=str, shape=[], - description=''' + description=""" . - ''') + """, + ) x_nwchem_start_datetime = Quantity( type=str, shape=[], - description=''' + description=""" The run start date and time. - ''') + """, + ) x_nwchem_compilation_datetime = Quantity( type=str, shape=[], - description=''' + description=""" The compilation date and time. - ''') + """, + ) x_nwchem_run_host_name = Quantity( type=str, shape=[], - description=''' + description=""" The host on which this calculation was made on. - ''') + """, + ) x_nwchem_source = Quantity( type=str, shape=[], - description=''' + description=""" The source directory of the code. - ''') + """, + ) x_nwchem_branch = Quantity( type=str, shape=[], - description=''' + description=""" The main branch of the code. - ''') + """, + ) x_nwchem_revision = Quantity( type=str, shape=[], - description=''' + description=""" The SVN revision of the code. - ''') + """, + ) x_nwchem_ga_revision = Quantity( type=str, shape=[], - description=''' + description=""" The ga revision. - ''') + """, + ) x_nwchem_input_prefix = Quantity( type=str, shape=[], - description=''' + description=""" The input prefix. - ''') + """, + ) x_nwchem_db_filename = Quantity( type=str, shape=[], - description=''' + description=""" The database filename. - ''') + """, + ) x_nwchem_status = Quantity( type=str, shape=[], - description=''' + description=""" Status of the run. - ''') + """, + ) x_nwchem_nproc = Quantity( type=str, shape=[], - description=''' + description=""" Number of processes used. - ''') + """, + ) x_nwchem_time_left = Quantity( type=str, shape=[], - description=''' + description=""" Time left in seconds. - ''') + """, + ) x_nwchem_program_name = Quantity( type=str, shape=[], - description=''' + description=""" The name of the program that was run. - ''') + """, + ) class x_nwchem_section_xc_part(MSection): - ''' + """ Describes a part of the XC functional that is used in the calculation. Can be a local or non-local part, can be exchange or correlation, can have a weight. - ''' + """ m_def = Section(validate=False) x_nwchem_xc_functional_name = Quantity( type=str, shape=[], - description=''' + description=""" The name of the XC functional - ''') + """, + ) x_nwchem_xc_functional_weight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The weight of the XC functional. - ''') + """, + ) x_nwchem_xc_functional_type = Quantity( type=str, shape=[], - description=''' + description=""" The type of the XC functional, local or non-local - ''') + """, + ) class x_nwchem_section_geometry(MSection): - ''' + """ Contains system information for a calculation to follow. Contains all of the geometries used in different NWChem tasks contained by this calculations. - ''' + """ m_def = Section(validate=False) class x_nwchem_section_geo_opt_module(MSection): - ''' + """ Section for a geometry optimization task. - ''' + """ m_def = Section(validate=False) x_nwchem_section_geo_opt_step = SubSection( - sub_section=SectionProxy('x_nwchem_section_geo_opt_step'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_geo_opt_step"), repeats=True + ) class x_nwchem_section_geo_opt_step(MSection): - ''' + """ Section for a geometry optimization step. - ''' + """ m_def = Section(validate=False) x_nwchem_geo_opt_step_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The energy for a geometry optimization step. - ''') + """, + ) class x_nwchem_section_qmd_module(MSection): - ''' + """ Section for QMD Module. - ''' + """ m_def = Section(validate=False) class x_nwchem_section_qmd_step(MSection): - ''' + """ DFT QMD step - ''' + """ m_def = Section(validate=False) x_nwchem_qmd_step_time = Quantity( type=np.dtype(np.float64), shape=[], - unit='second', - description=''' + unit="second", + description=""" Elapsed simulation time. - ''') + """, + ) x_nwchem_qmd_step_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Kinetic energy. - ''') + """, + ) x_nwchem_qmd_step_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Potential energy. - ''') + """, + ) x_nwchem_qmd_step_total_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Total energy. - ''') + """, + ) x_nwchem_qmd_step_target_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" Target temperature. - ''') + """, + ) x_nwchem_qmd_step_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' + unit="kelvin", + description=""" Temperature. - ''') + """, + ) x_nwchem_qmd_step_dipole = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Electric dipole moment. - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_nwchem_section_start_information = SubSection( - sub_section=SectionProxy('x_nwchem_section_start_information'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_start_information"), repeats=True + ) x_nwchem_section_geometry = SubSection( - sub_section=SectionProxy('x_nwchem_section_geometry'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_geometry"), repeats=True + ) x_nwchem_section_geo_opt_module = SubSection( - sub_section=SectionProxy('x_nwchem_section_geo_opt_module'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_geo_opt_module"), repeats=True + ) x_nwchem_section_qmd_module = SubSection( - sub_section=SectionProxy('x_nwchem_section_qmd_module'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_qmd_module"), repeats=True + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_nwchem_xc_functional_shortcut = Quantity( type=str, shape=[], - description=''' + description=""" Shorcut for a XC functional definition. - ''') + """, + ) x_nwchem_electron_spin_restriction = Quantity( type=str, shape=[], - description=''' + description=""" Electron spin restriction. - ''') + """, + ) x_nwchem_section_xc_part = SubSection( - sub_section=SectionProxy('x_nwchem_section_xc_part'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_xc_part"), repeats=True + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_nwchem_energy_one_electron = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The one-electron energy in a DFT calculation. - ''') + """, + ) x_nwchem_energy_coulomb = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The Coulomb energy energy in a DFT calculation. - ''') + """, + ) x_nwchem_energy_nuclear_repulsion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The nuclear repulsion energy in a DFT calculation. - ''') + """, + ) x_nwchem_section_qmd_step = SubSection( - sub_section=SectionProxy('x_nwchem_section_qmd_step'), - repeats=True) + sub_section=SectionProxy("x_nwchem_section_qmd_step"), repeats=True + ) class MolecularDynamics(simulationworkflowschema.MolecularDynamics): - m_def = Section(validate=False, extends_base_section=True) x_nwchem_qmd_number_of_nuclear_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of nuclear steps. - ''') + """, + ) x_nwchem_qmd_nuclear_time_step = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Nuclear time step. - ''') + """, + ) x_nwchem_qmd_target_temperature = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Target temperature. - ''') + """, + ) x_nwchem_qmd_thermostat = Quantity( type=str, shape=[], - description=''' + description=""" Thermostat for QMD. - ''') + """, + ) x_nwchem_qmd_tau = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Tau for QMD thermostat. - ''') + """, + ) x_nwchem_qmd_random_seed = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Random seed. - ''') + """, + ) x_nwchem_qmd_nuclear_integrator = Quantity( type=str, shape=[], - description=''' + description=""" Integrator for nuclei. - ''') + """, + ) x_nwchem_qmd_initial_temperature = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Initial temperature - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_nwchem_reciprocal_simulation_cell = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" The simulation cell in reciprocal space. - ''') + """, + ) x_nwchem_lattice_basis_vector_lengths = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" The lengths of the basis vectors. - ''') + """, + ) x_nwchem_lattice_basis_vector_angles = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" The angles between the basis vectors. - ''') + """, + ) x_nwchem_lattice_omega = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The lattice omega value. - ''') + """, + ) diff --git a/electronicparsers/nwchem/parser.py b/electronicparsers/nwchem/parser.py index 10d00798..bf9e1ac1 100644 --- a/electronicparsers/nwchem/parser.py +++ b/electronicparsers/nwchem/parser.py @@ -25,26 +25,39 @@ from nomad.parsing.file_parser import TextParser, Quantity from runschema.run import Run, Program from runschema.method import ( - Electronic, Method, DFT, XCFunctional, Functional, BasisSet, Scf, + Electronic, + Method, + DFT, + XCFunctional, + Functional, + BasisSet, + Scf, BasisSetContainer, ) -from runschema.system import ( - System, Atoms -) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, ScfIteration + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + ScfIteration, ) from simulationworkflowschema import ( - SinglePoint, GeometryOptimization, - GeometryOptimizationMethod, MolecularDynamics + SinglePoint, + GeometryOptimization, + GeometryOptimizationMethod, + MolecularDynamics, ) from .metainfo.nwchem import ( - x_nwchem_section_start_information, x_nwchem_section_qmd_step) + x_nwchem_section_start_information, + x_nwchem_section_qmd_step, +) def fix_dfloat(val_in): - return float(re.sub(r'[dD]([\-\+]*\d)', r'E\1', val_in)) + return float(re.sub(r"[dD]([\-\+]*\d)", r"E\1", val_in)) class OutParser(TextParser): @@ -52,31 +65,31 @@ def __init__(self): super().__init__() def init_quantities(self): - re_float = r'[-+]?\d+\.\d*(?:[EeDd][-+]\d+)?' + re_float = r"[-+]?\d+\.\d*(?:[EeDd][-+]\d+)?" def str_to_functional(val_in): - val = [v.strip() for v in val_in.strip().rsplit(' ', 1)] + val = [v.strip() for v in val_in.strip().rsplit(" ", 1)] if len(val) == 2: val = [val[0]] + val[1].split() return val def str_to_energy(val_in): - separator = '=' if '=' in val_in else ':' + separator = "=" if "=" in val_in else ":" val = [v.strip() for v in val_in.strip().split(separator)] return val[0], float(val[1]) * ureg.hartree def str_to_labels_positions(val_in): - val = [v.strip().split() for v in val_in.strip().split('\n')] + val = [v.strip().split() for v in val_in.strip().split("\n")] labels, positions = [], [] for val_i in val: labels.append(val_i[1]) - positions.append(val_i[3: 6]) + positions.append(val_i[3:6]) positions = np.array(positions, dtype=np.dtype(np.float64)) return labels, positions * ureg.angstrom def str_to_labels_positions_forces(val_in): - val = np.transpose([v.split() for v in val_in.strip().split('\n')]) + val = np.transpose([v.split() for v in val_in.strip().split("\n")]) labels = val[0] positions = np.transpose(np.array(val[2:5], dtype=np.dtype(np.float64))) forces = np.transpose(np.array(val[5:8], dtype=np.dtype(np.float64))) @@ -84,157 +97,244 @@ def str_to_labels_positions_forces(val_in): geometry_quantities = [ Quantity( - 'labels_positions', - r'No\.\s*Tag\s*Charge\s*X\s*Y\s*Z[\s\-]+([\s\S]+?)\n *\n', - str_operation=str_to_labels_positions, convert=False), + "labels_positions", + r"No\.\s*Tag\s*Charge\s*X\s*Y\s*Z[\s\-]+([\s\S]+?)\n *\n", + str_operation=str_to_labels_positions, + convert=False, + ), Quantity( - 'lattice_vectors', - r'a1\=\<([\d\.\- ]+)\>\s*' - r'a2\=\<([\d\.\- ]+)\>\s*' - r'a3\=\<([\d\.\- ]+)\>\s*', - dtype=np.dtype(np.float64), shape=(3, 3), unit=ureg.bohr) + "lattice_vectors", + r"a1\=\<([\d\.\- ]+)\>\s*" + r"a2\=\<([\d\.\- ]+)\>\s*" + r"a3\=\<([\d\.\- ]+)\>\s*", + dtype=np.dtype(np.float64), + shape=(3, 3), + unit=ureg.bohr, + ), ] dft_quantities = geometry_quantities + [ Quantity( - 'general_info', - r'General Information\s+\-+([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'info', - r' +([\w\. ]+\s*\:\s*[\w\.\- ]+)', - str_operation=lambda x: [v.strip() for v in x.split(':')], - repeats=True)])), + "general_info", + r"General Information\s+\-+([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "info", + r" +([\w\. ]+\s*\:\s*[\w\.\- ]+)", + str_operation=lambda x: [v.strip() for v in x.split(":")], + repeats=True, + ) + ] + ), + ), Quantity( - 'xc_info', - r'XC Information\s+\-+([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'functional', - r'(.+(?:Functional|Exchange|POtential).+)', - str_operation=str_to_functional, repeats=True)])), + "xc_info", + r"XC Information\s+\-+([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "functional", + r"(.+(?:Functional|Exchange|POtential).+)", + str_operation=str_to_functional, + repeats=True, + ) + ] + ), + ), Quantity( - 'energy', - rf'([\w \-\.]+ energy\s*=\s*{re_float})', - str_operation=str_to_energy, repeats=True, convert=False), + "energy", + rf"([\w \-\.]+ energy\s*=\s*{re_float})", + str_operation=str_to_energy, + repeats=True, + convert=False, + ), Quantity( - 'labels_positions_forces', - r'atom\s*coordinates\s*gradient\s*x\s*y\s*z\s*x\s*y\s*z\s*([\s\S]+?\n *\n)', - str_operation=str_to_labels_positions_forces, convert=False), + "labels_positions_forces", + r"atom\s*coordinates\s*gradient\s*x\s*y\s*z\s*x\s*y\s*z\s*([\s\S]+?\n *\n)", + str_operation=str_to_labels_positions_forces, + convert=False, + ), Quantity( - 'qmd_info', - r'QMD Run Information\s*\-+\s*([\s\S]+?)\n *\n', - str_operation=lambda x: [[vi.strip() for vi in v.split(':')] for v in x.split('\n')], - convert=False), + "qmd_info", + r"QMD Run Information\s*\-+\s*([\s\S]+?)\n *\n", + str_operation=lambda x: [ + [vi.strip() for vi in v.split(":")] for v in x.split("\n") + ], + convert=False, + ), Quantity( - 'self_consistency', - r'convergence\s*iter\s*energy\s*DeltaE\s*RMS\-Dens\s*Diis\-err\s*time\s*' - r'([\s\S]+?)\n *\n *\n', - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - rf'd\=\s*\d+,ls=[\d\.]+,diis\s*\d+\s*({re_float})\s*({re_float})\s*{re_float}\s*{re_float}\s*({re_float})', - dtype=np.dtype(np.float64), repeats=True)])), + "self_consistency", + r"convergence\s*iter\s*energy\s*DeltaE\s*RMS\-Dens\s*Diis\-err\s*time\s*" + r"([\s\S]+?)\n *\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"d\=\s*\d+,ls=[\d\.]+,diis\s*\d+\s*({re_float})\s*({re_float})\s*{re_float}\s*{re_float}\s*({re_float})", + dtype=np.dtype(np.float64), + repeats=True, + ) + ] + ), + ), Quantity( - 'time_calculation', - rf'Total iterative time = +({re_float})s', dtype=np.float64, unit=ureg.s) + "time_calculation", + rf"Total iterative time = +({re_float})s", + dtype=np.float64, + unit=ureg.s, + ), ] dft_gradient_quantities = [ Quantity( - 'labels_positions_forces', - r'atom\s*coordinates\s*gradient\s*x\s*y\s*z\s*x\s*y\s*z\s*([\s\S]+?\n *\n)', - str_operation=str_to_labels_positions_forces, convert=False), - Quantity( - 'energy', - r'Step\s*Energy.+[\-\s\@]+(.+)') + "labels_positions_forces", + r"atom\s*coordinates\s*gradient\s*x\s*y\s*z\s*x\s*y\s*z\s*([\s\S]+?\n *\n)", + str_operation=str_to_labels_positions_forces, + convert=False, + ), + Quantity("energy", r"Step\s*Energy.+[\-\s\@]+(.+)"), ] pw_quantities = geometry_quantities + [ Quantity( - 'energy', - rf'([\w \-]+ energy\s*\:\s*{re_float})', - str_operation=str_to_energy, repeats=True, convert=False), + "energy", + rf"([\w \-]+ energy\s*\:\s*{re_float})", + str_operation=str_to_energy, + repeats=True, + convert=False, + ), + Quantity("spin_S2", rf"\\s*\=\s*({re_float})", dtype=np.float64), Quantity( - 'spin_S2', - rf'\\s*\=\s*({re_float})', dtype=np.float64), + "parameters", + r"options\:\s*([\s\S]+?)\n *\n", + str_operation=lambda x: [ + [vi.strip() for vi in v.split("=")] for v in x.split("\n") + ], + ), Quantity( - 'parameters', - r'options\:\s*([\s\S]+?)\n *\n', - str_operation=lambda x: [[vi.strip() for vi in v.split('=')] for v in x.split('\n')]), + "self_consistency", + r"ITERATION STARTED([\s\S]+?)ITERATION ENDED", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"\d+\s+({re_float}\s+{re_float})\s+{re_float}\n", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), Quantity( - 'self_consistency', - r'ITERATION STARTED([\s\S]+?)ITERATION ENDED', - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - rf'\d+\s+({re_float}\s+{re_float})\s+{re_float}\n', - repeats=True, dtype=np.dtype(np.float64))])), - Quantity('total_charge', rf'total charge\:\s*({re_float})', dtype=np.float64) + "total_charge", rf"total charge\:\s*({re_float})", dtype=np.float64 + ), # TODO add xc functionals cannot find mapping ] calculation_quantities = geometry_quantities + [ Quantity( - 'dft', - r'(DFT Module[\s\S]+?)(?:NWChem|\Z)', - repeats=True, sub_parser=TextParser(quantities=dft_quantities)), + "dft", + r"(DFT Module[\s\S]+?)(?:NWChem|\Z)", + repeats=True, + sub_parser=TextParser(quantities=dft_quantities), + ), Quantity( - 'dft_gradient', - r'(DFT Gradient Module[\s\S]+?)(?:NWChem|\Z)', - repeats=True, sub_parser=TextParser(quantities=dft_gradient_quantities)), + "dft_gradient", + r"(DFT Gradient Module[\s\S]+?)(?:NWChem|\Z)", + repeats=True, + sub_parser=TextParser(quantities=dft_gradient_quantities), + ), Quantity( - 'pw', - r'(PSPW Calculation[\s\S]+?)(?:\*\s*NWPW|\Z)', - repeats=True, sub_parser=TextParser(quantities=pw_quantities))] + "pw", + r"(PSPW Calculation[\s\S]+?)(?:\*\s*NWPW|\Z)", + repeats=True, + sub_parser=TextParser(quantities=pw_quantities), + ), + ] self._quantities = [ Quantity( - 'version', - r'Northwest Computational Chemistry Package \(NWChem\) (.+)\n', - flatten=False, convert=False), + "version", + r"Northwest Computational Chemistry Package \(NWChem\) (.+)\n", + flatten=False, + convert=False, + ), Quantity( - 'job_info', - r'Job information\s*\-+\s*([\s\S]+?)\n *\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'info', - r'(\w.+?\s*\=\s*.+)', - str_operation=lambda x: [v.strip() for v in x.split('=')], - convert=False, repeats=True)])), + "job_info", + r"Job information\s*\-+\s*([\s\S]+?)\n *\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "info", + r"(\w.+?\s*\=\s*.+)", + str_operation=lambda x: [v.strip() for v in x.split("=")], + convert=False, + repeats=True, + ) + ] + ), + ), Quantity( - 'input', - r'(Input Module[\s\S]+? {30}NWChem)', - sub_parser=TextParser(quantities=geometry_quantities)), + "input", + r"(Input Module[\s\S]+? {30}NWChem)", + sub_parser=TextParser(quantities=geometry_quantities), + ), Quantity( - 'single_point', - r'(DFT Module\s+\-+[\s\S]+?)(?:GA Statistics for process|NWChem Input Module|\Z)', - sub_parser=TextParser(quantities=calculation_quantities)), + "single_point", + r"(DFT Module\s+\-+[\s\S]+?)(?:GA Statistics for process|NWChem Input Module|\Z)", + sub_parser=TextParser(quantities=calculation_quantities), + ), Quantity( - 'geometry_optimization', - r'(Geometry Optimization[\s\S]+?)(?:GA Statistics for process|NWChem Input Module|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - r'(maximum gradient threshold\s*\(gmax\)[\s\S]+?)\n *\n', - str_operation=lambda x: [[vi.strip() for vi in v.split('=')] for v in x.split('\n')]), - Quantity( - 'iteration', - r'p\s+\d+\s*\-+\s*(Geometry[\s\S]+?(?:\-+\n +Ste|\Z))', - repeats=True, sub_parser=TextParser(quantities=calculation_quantities))])), + "geometry_optimization", + r"(Geometry Optimization[\s\S]+?)(?:GA Statistics for process|NWChem Input Module|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"(maximum gradient threshold\s*\(gmax\)[\s\S]+?)\n *\n", + str_operation=lambda x: [ + [vi.strip() for vi in v.split("=")] + for v in x.split("\n") + ], + ), + Quantity( + "iteration", + r"p\s+\d+\s*\-+\s*(Geometry[\s\S]+?(?:\-+\n +Ste|\Z))", + repeats=True, + sub_parser=TextParser(quantities=calculation_quantities), + ), + ] + ), + ), Quantity( - 'molecular_dynamics', - r'(QMD Module[\s\S]+?)(?:GA Statistics for process|NWChem Input Module|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - r'QMD Run Parameters\s*\-+\s*([\s\S]+?)\n *\n', - str_operation=lambda x: [[vi.strip() for vi in v.split(':')] for v in x.split('\n')]), - Quantity( - 'iteration', - r'(DFT Module[\s\S]+?(?:NWChem|\Z))', - repeats=True, sub_parser=TextParser(quantities=calculation_quantities))])), + "molecular_dynamics", + r"(QMD Module[\s\S]+?)(?:GA Statistics for process|NWChem Input Module|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"QMD Run Parameters\s*\-+\s*([\s\S]+?)\n *\n", + str_operation=lambda x: [ + [vi.strip() for vi in v.split(":")] + for v in x.split("\n") + ], + ), + Quantity( + "iteration", + r"(DFT Module[\s\S]+?(?:NWChem|\Z))", + repeats=True, + sub_parser=TextParser(quantities=calculation_quantities), + ), + ] + ), + ), Quantity( - 'pw', - r'(PSPW Calculation[\s\S]+?)(?:\*\s*NWPW|GA Statistics for process|\Z)', - repeats=True, sub_parser=TextParser(quantities=pw_quantities)) + "pw", + r"(PSPW Calculation[\s\S]+?)(?:\*\s*NWPW|GA Statistics for process|\Z)", + repeats=True, + sub_parser=TextParser(quantities=pw_quantities), + ), # TODO implement frequency analysis # TODO add timings ] @@ -245,51 +345,65 @@ def __init__(self): self.out_parser = OutParser() self._metainfo_map = { - 'hostname': 'run_host_name', 'program': 'program_name', 'date': 'start_datetime', - 'compiled': 'compilation_datetime', 'nwchem branch': 'branch', - 'nwchem revision': 'revision', 'input': 'input_filename', 'prefix': 'input_prefix', - 'data base': 'db_filename', 'Charge': 'total_charge', - 'Spin multiplicity': 'spin_target_multiplicity', - 'Maximum number of iterations': 'scf_max_iteration', - 'Convergence on energy requested': 'scf_threshold_energy_change', - 'Total DFT energy': 'energy_total', 'One electron energy': 'x_nwchem_energy_one_electron', - 'Coulomb energy': 'energy_coulomb', 'Exchange energy': 'energy_exchange', - 'Exchange-Corr. energy': 'energy_XC', - 'Correlation energy': 'energy_correlation', 'Nuclear repulsion energy': 'energy_nuclear_repulsion', - 'total energy': 'energy_total', 'exc-corr energy': 'energy_XC', + "hostname": "run_host_name", + "program": "program_name", + "date": "start_datetime", + "compiled": "compilation_datetime", + "nwchem branch": "branch", + "nwchem revision": "revision", + "input": "input_filename", + "prefix": "input_prefix", + "data base": "db_filename", + "Charge": "total_charge", + "Spin multiplicity": "spin_target_multiplicity", + "Maximum number of iterations": "scf_max_iteration", + "Convergence on energy requested": "scf_threshold_energy_change", + "Total DFT energy": "energy_total", + "One electron energy": "x_nwchem_energy_one_electron", + "Coulomb energy": "energy_coulomb", + "Exchange energy": "energy_exchange", + "Exchange-Corr. energy": "energy_XC", + "Correlation energy": "energy_correlation", + "Nuclear repulsion energy": "energy_nuclear_repulsion", + "total energy": "energy_total", + "exc-corr energy": "energy_XC", # TODO verify if energy contributions mapping is correct # 'total orbital energy': 'energy_sum_eigenvalues' - 'hartree energy': 'energy_correction_hartree', - 'ion-ion energy': 'energy_nuclear_repulsion', - 'No. of nuclear steps': 'qmd_number_of_nuclear_steps', - 'Nuclear time step': 'qmd_nuclear_time_step', - 'Target temp. (K)': 'qmd_target_temperature', 'Thermostat': 'qmd_thermostat', - 'Tau': 'qmd_tau', 'Random seed': 'qmd_random_seed', - 'Nuclear integrator': 'qmd_nuclear_integrator', 'Current temp. (K)': 'qmd_initial_temperature', - 'electron spin': 'electron_spin_restriction'} + "hartree energy": "energy_correction_hartree", + "ion-ion energy": "energy_nuclear_repulsion", + "No. of nuclear steps": "qmd_number_of_nuclear_steps", + "Nuclear time step": "qmd_nuclear_time_step", + "Target temp. (K)": "qmd_target_temperature", + "Thermostat": "qmd_thermostat", + "Tau": "qmd_tau", + "Random seed": "qmd_random_seed", + "Nuclear integrator": "qmd_nuclear_integrator", + "Current temp. (K)": "qmd_initial_temperature", + "electron spin": "electron_spin_restriction", + } self._xc_functional_map = { - 'B3LYP Method XC Potential': 'HYB_GGA_XC_B3LYP', - 'PBE0 Method XC Functional': 'HYB_GGA_XC_PBEH', - 'Becke half-and-half Method XC Potential': 'HYB_GGA_XC_BHANDH', - 'HCTH120 Method XC Functional': 'GGA_XC_HCTH_120', - 'HCTH147 Method XC Functional': 'GGA_XC_HCTH_147', - 'HCTH407 Method XC Functional': 'GGA_XC_HCTH_407', - 'PerdewBurkeErnzerhof Exchange Functional': 'GGA_X_PBE', - 'Becke 1988 Exchange Functional': 'GGA_X_B88', - 'Lee-Yang-Parr Correlation Functional': 'GGA_C_LYP', - 'Perdew 1986 Correlation Functional': 'GGA_C_P86', - 'Perdew 1991 Correlation Functional': 'GGA_C_PW91', - 'Perdew 1991 Exchange Functional': 'GGA_X_PW91', - 'Hartree-Fock (Exact) Exchange': 'HF_X', - 'TPSS metaGGA Exchange Functional': 'MGGA_X_TPSS', - 'TPSS03 metaGGA Correlation Functional': 'MGGA_C_TPSS', - 'Slater Exchange Functional': 'LDA_X', - 'VWN V Correlation Functional': 'LDA_C_VWN', - 'OPTX Exchange Functional_1.432_non-local+Slater Exchange Functional_1.052_local': 'GGA_X_OPTX', - 'Perdew 1991 LDA Correlation Functional_1.000_local+PerdewBurkeErnz. Correlation Functional_1.000_non-local': 'GGA_C_PBE', - 'Perdew 1981 Correlation Functional_1.000_local+Perdew 1986 Correlation Functional_1.000_non-local': 'GGA_C_P86', - 'Perdew 1991 Correlation Functional_1.000_non-local+Perdew 1991 LDA Correlation Functional_1.000_local': 'GGA_C_PW91' + "B3LYP Method XC Potential": "HYB_GGA_XC_B3LYP", + "PBE0 Method XC Functional": "HYB_GGA_XC_PBEH", + "Becke half-and-half Method XC Potential": "HYB_GGA_XC_BHANDH", + "HCTH120 Method XC Functional": "GGA_XC_HCTH_120", + "HCTH147 Method XC Functional": "GGA_XC_HCTH_147", + "HCTH407 Method XC Functional": "GGA_XC_HCTH_407", + "PerdewBurkeErnzerhof Exchange Functional": "GGA_X_PBE", + "Becke 1988 Exchange Functional": "GGA_X_B88", + "Lee-Yang-Parr Correlation Functional": "GGA_C_LYP", + "Perdew 1986 Correlation Functional": "GGA_C_P86", + "Perdew 1991 Correlation Functional": "GGA_C_PW91", + "Perdew 1991 Exchange Functional": "GGA_X_PW91", + "Hartree-Fock (Exact) Exchange": "HF_X", + "TPSS metaGGA Exchange Functional": "MGGA_X_TPSS", + "TPSS03 metaGGA Correlation Functional": "MGGA_C_TPSS", + "Slater Exchange Functional": "LDA_X", + "VWN V Correlation Functional": "LDA_C_VWN", + "OPTX Exchange Functional_1.432_non-local+Slater Exchange Functional_1.052_local": "GGA_X_OPTX", + "Perdew 1991 LDA Correlation Functional_1.000_local+PerdewBurkeErnz. Correlation Functional_1.000_non-local": "GGA_C_PBE", + "Perdew 1981 Correlation Functional_1.000_local+Perdew 1986 Correlation Functional_1.000_non-local": "GGA_C_P86", + "Perdew 1991 Correlation Functional_1.000_non-local+Perdew 1991 LDA Correlation Functional_1.000_local": "GGA_C_PW91", } def init_parser(self): @@ -300,23 +414,27 @@ def parse_system(self, source): sec_system = System() self.archive.run[0].system.append(sec_system) - labels, positions = source.get('labels_positions', [[], []]) + labels, positions = source.get("labels_positions", [[], []]) if len(positions) == 0: - dft = source.get('dft', [{}])[-1] - dft_gradient = source.get('dft_gradient', [{}])[-1] - labels_positions = dft.get('labels_positions_forces', dft_gradient.get('labels_positions_forces')) + dft = source.get("dft", [{}])[-1] + dft_gradient = source.get("dft_gradient", [{}])[-1] + labels_positions = dft.get( + "labels_positions_forces", dft_gradient.get("labels_positions_forces") + ) if labels_positions is not None: labels, positions = labels_positions[:2] if len(positions) == 0: - labels, positions = self.out_parser.get('input', {}).get('labels_positions', [[], []]) + labels, positions = self.out_parser.get("input", {}).get( + "labels_positions", [[], []] + ) sec_atoms = Atoms() sec_system.atoms = sec_atoms sec_atoms.labels = labels sec_atoms.positions = positions - lattice_vectors = source.get('lattice_vectors') + lattice_vectors = source.get("lattice_vectors") if lattice_vectors is not None: sec_atoms.lattice_vectors = lattice_vectors sec_atoms.periodic = [True, True, True] @@ -327,82 +445,102 @@ def parse_system(self, source): def parse_scc(self, source): sec_run = self.archive.run[0] - initial_time = sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + initial_time = ( + sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + ) sec_scc = Calculation() sec_run.calculation.append(sec_scc) # we only read the results from the last dft and gradients module - dft = source.get('dft', [{}])[-1] - dft_gradient = source.get('dft_gradient', [{}])[-1] + dft = source.get("dft", [{}])[-1] + dft_gradient = source.get("dft_gradient", [{}])[-1] # energies sec_energy = Energy() sec_scc.energy = sec_energy - for key, val in source.get('energy', dft.get('energy', [])): + for key, val in source.get("energy", dft.get("energy", [])): key = self._metainfo_map.get(key) if key is not None: - if key.startswith('x_nwchem_energy_'): - setattr(sec_scc, key, val.to('J').magnitude) + if key.startswith("x_nwchem_energy_"): + setattr(sec_scc, key, val.to("J").magnitude) else: - sec_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '').lower()), EnergyEntry(value=val)) + sec_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) # for geometry optimization, energy can also be parsed from gradient module - energy = dft_gradient.get('energy') + energy = dft_gradient.get("energy") if energy is not None: sec_energy.total = EnergyEntry(value=energy[1] * ureg.hartree) sec_scc.time_physical = energy[-1] * ureg.s sec_scc.time_calculation = sec_scc.time_physical - initial_time # forces - forces = dft_gradient.get('labels_positions_forces', dft.get('labels_positions_forces')) + forces = dft_gradient.get( + "labels_positions_forces", dft.get("labels_positions_forces") + ) if forces is not None: sec_scc.forces = Forces(total=ForcesEntry(value=forces[2])) # spin - spin_S2 = source.get('spin_S2') + spin_S2 = source.get("spin_S2") if spin_S2 is not None: sec_scc.spin_S2 = spin_S2 # md properties - qmd_info = dft.get('qmd_info') + qmd_info = dft.get("qmd_info") if qmd_info is not None: sec_qmd = x_nwchem_section_qmd_step() sec_scc.x_nwchem_section_qmd_step.append(sec_qmd) for key, val in qmd_info: val = val.split() - if key == 'Time elapsed (fs)': + if key == "Time elapsed (fs)": sec_qmd.x_nwchem_qmd_step_time = float(val[0]) * ureg.fs - elif key == 'Kin. energy (a.u.)': - sec_qmd.x_nwchem_qmd_step_kinetic_energy = float(val[1]) * ureg.hartree - elif key == 'Pot. energy (a.u.)': - sec_qmd.x_nwchem_qmd_step_potential_energy = float(val[1]) * ureg.hartree - elif key == 'Tot. energy (a.u.)': - sec_qmd.x_nwchem_qmd_step_total_energy = float(val[1]) * ureg.hartree - elif key == 'Target temp. (K)': - sec_qmd.x_nwchem_qmd_step_target_temperature = float(val[1]) * ureg.kelvin - elif key == 'Current temp. (K)': + elif key == "Kin. energy (a.u.)": + sec_qmd.x_nwchem_qmd_step_kinetic_energy = ( + float(val[1]) * ureg.hartree + ) + elif key == "Pot. energy (a.u.)": + sec_qmd.x_nwchem_qmd_step_potential_energy = ( + float(val[1]) * ureg.hartree + ) + elif key == "Tot. energy (a.u.)": + sec_qmd.x_nwchem_qmd_step_total_energy = ( + float(val[1]) * ureg.hartree + ) + elif key == "Target temp. (K)": + sec_qmd.x_nwchem_qmd_step_target_temperature = ( + float(val[1]) * ureg.kelvin + ) + elif key == "Current temp. (K)": sec_qmd.x_nwchem_qmd_step_temperature = float(val[1]) * ureg.kelvin - elif key == 'Dipole (a.u.)': + elif key == "Dipole (a.u.)": sec_qmd.x_nwchem_qmd_step_dipole = [float(v) for v in val[1:4]] # self consistency - scf = dft.get('self_consistency', source.get('self_consistency')) + scf = dft.get("self_consistency", source.get("self_consistency")) if scf is not None: - for iteration in scf.get('iteration', []): - scf_initial_time = sec_scc.scf_iteration[-1].time_physical if sec_scc.scf_iteration else initial_time + for iteration in scf.get("iteration", []): + scf_initial_time = ( + sec_scc.scf_iteration[-1].time_physical + if sec_scc.scf_iteration + else initial_time + ) sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf_energy = Energy() sec_scf.energy = sec_scf_energy - iteration = [fix_dfloat(i) if isinstance(i, str) else i for i in iteration] + iteration = [ + fix_dfloat(i) if isinstance(i, str) else i for i in iteration + ] sec_scf_energy.total = EnergyEntry(value=iteration[0] * ureg.hartree) sec_scf_energy.change = iteration[1] * ureg.hartree if len(iteration) > 2: sec_scf.time_physical = iteration[2] * ureg.s sec_scf.time_calculation = sec_scf.time_physical - scf_initial_time - if not sec_scc.time_calculation and dft.get('time_calculation') is not None: + if not sec_scc.time_calculation and dft.get("time_calculation") is not None: sec_scc.time_calculation = dft.time_calculation sec_scc.time_physical = initial_time + dft.time_calculation @@ -423,7 +561,9 @@ def resolve_functional_combination(functionals): for f_b in functionals: if len(f_a) < 3 or len(f_b) < 3: continue - combination = '+'.join(['%s_%1.3f_%s' % tuple(f) for f in [f_a, f_b]]) + combination = "+".join( + ["%s_%1.3f_%s" % tuple(f) for f in [f_a, f_b]] + ) name = self._xc_functional_map.get(combination) if name is not None: names.append([name, None]) @@ -433,59 +573,67 @@ def resolve_functional_combination(functionals): sec_method.dft = sec_dft sec_electronic = Electronic() sec_method.electronic = sec_electronic - sec_electronic.method = 'DFT' + sec_electronic.method = "DFT" - dft = source.get('dft', [{}])[-1] + dft = source.get("dft", [{}])[-1] - general_info = dft.get('general_info', {}) + general_info = dft.get("general_info", {}) sec_scf = Scf() sec_method.scf = sec_scf - for key, val in general_info.get('info', []): + for key, val in general_info.get("info", []): key = self._metainfo_map.get(key) if key is None: continue - if key == 'scf_threshold_energy_change': + if key == "scf_threshold_energy_change": val = fix_dfloat(val) * ureg.hartree sec_scf.threshold_energy_change = val - elif key == 'scf_max_iteration' and isinstance(val, int): + elif key == "scf_max_iteration" and isinstance(val, int): sec_scf.n_max_iteration = val else: setattr(sec_method, key, val) - xc_functionals = dft.get('xc_info', {}).get('functional', []) + xc_functionals = dft.get("xc_info", {}).get("functional", []) sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for name, weight in resolve_functional_combination(xc_functionals): functional = Functional(name=name) if weight is not None: functional.weight = weight - if '_X_' in name or name.endswith('_X'): + if "_X_" in name or name.endswith("_X"): sec_xc_functional.exchange.append(functional) - elif '_C_' in name or name.endswith('_C'): + elif "_C_" in name or name.endswith("_C"): sec_xc_functional.correlation.append(functional) - elif 'HYB' in name: + elif "HYB" in name: sec_xc_functional.hybrid.append(functional) else: sec_xc_functional.contributions.append(functional) - parameters = source.get('parameters', []) + parameters = source.get("parameters", []) for parameter in parameters: key = self._metainfo_map.get(parameter[0]) if len(parameter) == 2 and key is not None: - setattr(sec_method, 'x_nwchem_%s' % key, parameter[1]) + setattr(sec_method, "x_nwchem_%s" % key, parameter[1]) - total_charge = source.get('total_charge') + total_charge = source.get("total_charge") if total_charge is not None: sec_electronic.charge = total_charge sec_basis = BasisSet() - sec_basis.type = 'plane waves' if self.out_parser.get('pw') is not None else 'gaussians' - sec_basis.scope = ['valence'] if sec_basis.type == 'gaussians' else [] # TODO: add distinction for ECP - full_type = 'plane waves' if sec_basis.type == 'plane waves' else 'atom-centered orbitals' + sec_basis.type = ( + "plane waves" if self.out_parser.get("pw") is not None else "gaussians" + ) + sec_basis.scope = ( + ["valence"] if sec_basis.type == "gaussians" else [] + ) # TODO: add distinction for ECP + full_type = ( + "plane waves" + if sec_basis.type == "plane waves" + else "atom-centered orbitals" + ) sec_method.electrons_representation = [ BasisSetContainer( type=full_type, - scope=['wavefunction'], + scope=["wavefunction"], basis_set=[sec_basis], ) ] @@ -493,7 +641,6 @@ def resolve_functional_combination(functionals): return sec_method def parse_configurations(self): - def parse_calculation(source): sec_method = self.parse_method(source) sec_system = self.parse_system(source) @@ -501,56 +648,83 @@ def parse_calculation(source): sec_scc.method_ref = sec_method sec_scc.system_ref = sec_system - if self.out_parser.get('geometry_optimization') is not None: - for iteration in self.out_parser.get('geometry_optimization').get('iteration', []): + if self.out_parser.get("geometry_optimization") is not None: + for iteration in self.out_parser.get("geometry_optimization").get( + "iteration", [] + ): parse_calculation(iteration) - elif self.out_parser.get('molecular_dynamics') is not None: - for iteration in self.out_parser.get('molecular_dynamics').get('iteration', []): + elif self.out_parser.get("molecular_dynamics") is not None: + for iteration in self.out_parser.get("molecular_dynamics").get( + "iteration", [] + ): parse_calculation(iteration) - elif self.out_parser.get('pw') is not None: - for calculation in self.out_parser.get('pw'): + elif self.out_parser.get("pw") is not None: + for calculation in self.out_parser.get("pw"): parse_calculation(calculation) - elif self.out_parser.get('single_point') is not None: - parse_calculation(self.out_parser.get('single_point')) + elif self.out_parser.get("single_point") is not None: + parse_calculation(self.out_parser.get("single_point")) def parse_workflow(self): workflow = None parameters = [] - if self.out_parser.get('geometry_optimization') is not None: - parameters = self.out_parser.get('geometry_optimization').get('parameters', []) + if self.out_parser.get("geometry_optimization") is not None: + parameters = self.out_parser.get("geometry_optimization").get( + "parameters", [] + ) workflow = GeometryOptimization(method=GeometryOptimizationMethod()) - elif self.out_parser.get('molecular_dynamics') is not None: - parameters = self.out_parser.get('molecular_dynamics').get('parameters', []) + elif self.out_parser.get("molecular_dynamics") is not None: + parameters = self.out_parser.get("molecular_dynamics").get("parameters", []) workflow = MolecularDynamics() - elif self.out_parser.get('pw') is not None: + elif self.out_parser.get("pw") is not None: # pw is not fully implemented as I do not have example files - workflow = GeometryOptimization() if len( - self.out_parser.get('pw')) > 1 else SinglePoint() + workflow = ( + GeometryOptimization() + if len(self.out_parser.get("pw")) > 1 + else SinglePoint() + ) - elif self.out_parser.get('single_point') is not None: + elif self.out_parser.get("single_point") is not None: workflow = SinglePoint() for parameter in parameters: if len(parameter) != 2: continue - if parameter[0] == 'maximum gradient threshold (gmax)': - val = fix_dfloat(parameter[1]) if isinstance(parameter[1], str) else parameter[1] - workflow.method.convergence_tolerance_force_maximum = val * ureg.hartree / ureg.bohr - elif parameter[0] == 'maximum cartesian step threshold (xmax)': - val = fix_dfloat(parameter[1]) if isinstance(parameter[1], str) else parameter[1] - workflow.method.convergence_tolerance_displacement_maximum = val * ureg.bohr - elif parameter[0] == 'energy precision (eprec)': - val = fix_dfloat(parameter[1]) if isinstance(parameter[1], str) else parameter[1] - workflow.method.convergence_tolerance_energy_difference = val * ureg.hartree + if parameter[0] == "maximum gradient threshold (gmax)": + val = ( + fix_dfloat(parameter[1]) + if isinstance(parameter[1], str) + else parameter[1] + ) + workflow.method.convergence_tolerance_force_maximum = ( + val * ureg.hartree / ureg.bohr + ) + elif parameter[0] == "maximum cartesian step threshold (xmax)": + val = ( + fix_dfloat(parameter[1]) + if isinstance(parameter[1], str) + else parameter[1] + ) + workflow.method.convergence_tolerance_displacement_maximum = ( + val * ureg.bohr + ) + elif parameter[0] == "energy precision (eprec)": + val = ( + fix_dfloat(parameter[1]) + if isinstance(parameter[1], str) + else parameter[1] + ) + workflow.method.convergence_tolerance_energy_difference = ( + val * ureg.hartree + ) else: parameter[0] = self._metainfo_map.get(parameter[0]) if parameter[0] is not None: - setattr(workflow, 'x_nwchem_%s' % parameter[0], parameter[1]) + setattr(workflow, "x_nwchem_%s" % parameter[0], parameter[1]) self.archive.workflow2 = workflow @@ -565,16 +739,18 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='NWChem', version=self.out_parser.get('version', '')) + sec_run.program = Program( + name="NWChem", version=self.out_parser.get("version", "") + ) # job information sec_info = x_nwchem_section_start_information() sec_run.x_nwchem_section_start_information.append(sec_info) - for key, val in self.out_parser.get('job_info', {}).get('info', []): + for key, val in self.out_parser.get("job_info", {}).get("info", []): if val is None: continue - key = self._metainfo_map.get(key, key.replace(' ', '_')) - setattr(sec_info, 'x_nwchem_%s' % key, val) + key = self._metainfo_map.get(key, key.replace(" ", "_")) + setattr(sec_info, "x_nwchem_%s" % key, val) self.parse_configurations() diff --git a/electronicparsers/ocean/metainfo/ocean.py b/electronicparsers/ocean/metainfo/ocean.py index 3838507b..6215c209 100644 --- a/electronicparsers/ocean/metainfo/ocean.py +++ b/electronicparsers/ocean/metainfo/ocean.py @@ -16,9 +16,14 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import +import numpy as np # pylint: disable=unused-import from nomad.metainfo import ( # pylint: disable=unused-import - MSection, Package, Quantity, Section, SubSection, MEnum + MSection, + Package, + Quantity, + Section, + SubSection, + MEnum, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -30,277 +35,319 @@ class x_ocean_core_haydock_parameters(MSection): - ''' + """ Input parameters for the Lanczos-Haydock algorithm. - ''' + """ m_def = Section(validate=False) x_ocean_converge_spacing = Quantity( type=np.int32, - description=''' - ''') + description=""" + """, + ) x_ocean_converge_thresh = Quantity( type=np.float64, - description=''' - ''') + description=""" + """, + ) x_ocean_niter = Quantity( type=np.int32, - description=''' + description=""" This sets the number of Haydock iterations. The default is 100. - ''') + """, + ) class x_ocean_core_gmres_parameters(MSection): - ''' + """ Input parameters for the GMRES algorithm. - ''' + """ m_def = Section(validate=False) x_ocean_echamp = Quantity( type=bool, - description=''' - ''') + description=""" + """, + ) x_ocean_elist = Quantity( type=np.float64, - shape=['*'], - description=''' + shape=["*"], + description=""" A list of energies (of arbitrary length) for the code to run the GMRES algorithm. - ''') + """, + ) x_ocean_erange = Quantity( type=np.int32, shape=[3], - description=''' + description=""" Run the GMRES algorithm on a set of evenly spaced energies specified by starting energy, ending energy, and step size (all in eV). - ''') + """, + ) x_ocean_estyle = Quantity( type=str, - description=''' - ''') + description=""" + """, + ) x_ocean_ffff = Quantity( type=np.float64, - description=''' + description=""" Sets the convergence criterion for the GMRES - ''') + """, + ) x_ocean_gprc = Quantity( type=np.float64, - description=''' + description=""" The version of the GMRES algorithm implemented in ocean uses the one-electron energies as a pre-conditioner with a Lorentzian broadening set by GPRC (in Ha.). By default this is 0.5 Ha. - ''') + """, + ) x_ocean_nloop = Quantity( type=np.int32, - description=''' + description=""" The version of the GMRES algorithm implemented in ocean will grow to be a subspace of no larger than NLOOP before it is restarted. By default this is set to 80 - ''') + """, + ) class x_ocean_bse_parameters(MSection): - ''' + """ Input parameters for the BSE type of calculation: haydock or gmres. - ''' + """ m_def = Section(validate=False) x_ocean_screen_radius = Quantity( type=np.float64, - description=''' - ''') + description=""" + """, + ) - x_ocean_core_haydock = SubSection(sub_section=x_ocean_core_haydock_parameters.m_def, repeats=False) + x_ocean_core_haydock = SubSection( + sub_section=x_ocean_core_haydock_parameters.m_def, repeats=False + ) - x_ocean_core_gmres = SubSection(sub_section=x_ocean_core_gmres_parameters.m_def, repeats=False) + x_ocean_core_gmres = SubSection( + sub_section=x_ocean_core_gmres_parameters.m_def, repeats=False + ) x_ocean_xmesh = Quantity( type=np.int32, shape=[3], - description=''' + description=""" When the wave-functions are converted into the NIST BSE format they are condensed onto a grid controlled by CNBSE.XMESH. The states are then projected onto a localized basis set, using the PAW formalism. By default ocean will attempt to guess a reasonable setting for this mesh. - ''') + """, + ) class x_ocean_screen_parameters(MSection): - ''' + """ Input parameters for the screening. - ''' + """ m_def = Section(validate=False) x_ocean_all_augment = Quantity( type=bool, - description=''' - ''') + description=""" + """, + ) x_ocean_augment = Quantity( type=bool, - description=''' - ''') + description=""" + """, + ) x_ocean_convertstyle = Quantity( type=str, - description=''' - ''') + description=""" + """, + ) x_ocean_core_offset_average = Quantity( type=bool, - description=''' - ''') + description=""" + """, + ) x_ocean_core_offset_enable = Quantity( type=bool, - description=''' - ''') + description=""" + """, + ) x_ocean_core_offset_energy = Quantity( type=str, - description=''' - ''') + description=""" + """, + ) x_ocean_dft_energy_range = Quantity( type=np.float64, - description=''' - ''') + description=""" + """, + ) x_ocean_final_dr = Quantity( type=np.float64, - description=''' - ''') + description=""" + """, + ) x_ocean_final_rmax = Quantity( type=np.int32, - description=''' - ''') + description=""" + """, + ) x_ocean_grid_ang = Quantity( type=np.float64, - shape=['*'], - description=''' - ''') + shape=["*"], + description=""" + """, + ) x_ocean_grid_deltar = Quantity( type=np.float64, - shape=['*'], - description=''' - ''') + shape=["*"], + description=""" + """, + ) x_ocean_grid_lmax = Quantity( type=np.int32, - description=''' - ''') + description=""" + """, + ) x_ocean_grid_rmax = Quantity( type=np.int32, - description=''' - ''') + description=""" + """, + ) x_ocean_grid_rmode = Quantity( type=str, - shape=['*'], - description=''' - ''') + shape=["*"], + description=""" + """, + ) x_ocean_grid_scheme = Quantity( type=str, - description=''' - ''') + description=""" + """, + ) x_ocean_grid_shells = Quantity( type=np.int32, - shape=['*'], - description=''' - ''') + shape=["*"], + description=""" + """, + ) x_ocean_inversionstyle = Quantity( type=str, - description=''' - ''') + description=""" + """, + ) x_ocean_kshift = Quantity( type=np.float64, shape=[3], - description=''' - ''') + description=""" + """, + ) x_ocean_mimic_exciting_bands = Quantity( type=bool, - description=''' - ''') + description=""" + """, + ) x_ocean_model_flavor = Quantity( type=str, - description=''' - ''') + description=""" + """, + ) x_ocean_shells = Quantity( type=np.float64, - shape=['*'], - description=''' - ''') + shape=["*"], + description=""" + """, + ) class Method(runschema.run.Method): - ''' + """ Section containing the various parameters that define the theory and the approximations (convergence, thresholds, etc.) behind the calculation. - ''' + """ m_def = Section(validate=False, extends_base_section=True) x_ocean_bse = SubSection(sub_section=x_ocean_bse_parameters.m_def, repeats=False) - x_ocean_screen = SubSection(sub_section=x_ocean_screen_parameters.m_def, repeats=False) + x_ocean_screen = SubSection( + sub_section=x_ocean_screen_parameters.m_def, repeats=False + ) x_ocean_edges = Quantity( type=np.int32, - shape=['*'], - description=''' + shape=["*"], + description=""" Each edge entry consists of 3 integers. When the first is greater than 0 it denotes the index of the atom (in the order set by XRED), and when it is less than zero it sets the (negative) Z, allowing you to specify all of a given element. The second and third numbers are the principle and angular quantum number. For instance ` 1 2 1 ` would run the L 2,3 edge of the first atom in the input, while ` -22 2 1 ` would run the L 2,3 edges of every titanium atom in the system. - ''') + """, + ) class x_ocean_lanczos_results(MSection): - ''' + """ Results from the Lanczos calculation. - ''' + """ m_def = Section(validate=False) x_ocean_n_tridiagonal_matrix = Quantity( type=np.int32, - description=''' + description=""" Size of the triagonal matrix. - ''') + """, + ) x_ocean_scaling_factor = Quantity( type=np.float64, - description=''' + description=""" The scaling factor is because the Lanczos algorithm is done by setting the norm of the initial vector to 1. - ''') + """, + ) x_ocean_tridiagonal_matrix = Quantity( type=np.float64, - shape=['x_ocean_n_tridiagonal_matrix', 2], - description=''' + shape=["x_ocean_n_tridiagonal_matrix", 2], + description=""" a's and b's values of the tri-diagonal matrix. Order is: [ [a1, 0], @@ -311,18 +358,20 @@ class x_ocean_lanczos_results(MSection): [0, bN] ] with N being between 1 and n_tridiagonal_matrix - 1 - ''') + """, + ) x_ocean_eigenvalues = Quantity( type=np.float64, - shape=['x_ocean_n_tridiagonal_matrix', 3], - description=''' + shape=["x_ocean_n_tridiagonal_matrix", 3], + description=""" (i, j, E_n) eigenvalues of the tri-diagonal matrix. - ''') + """, + ) class Calculation(runschema.run.Calculation): - ''' + """ Contains computed properties of a configuration as defined by the corresponding section system and with the simulation method defined by section method. The references to the system and method sections are given by system_ref and method_ref, @@ -330,29 +379,32 @@ class Calculation(runschema.run.Calculation): Properties derived from a group of configurations are not included in this section but can be accessed in section workflow. - ''' + """ m_def = Section(validate=False, extends_base_section=True) - x_ocean_lanczos = SubSection(sub_section=x_ocean_lanczos_results.m_def, repeats=True) + x_ocean_lanczos = SubSection( + sub_section=x_ocean_lanczos_results.m_def, repeats=True + ) class Program(runschema.run.Program): - ''' + """ Contains the specifications of the program. - ''' + """ m_def = Section(validate=False, extends_base_section=True) x_ocean_commit_hash = Quantity( type=str, - description=''' + description=""" Commit hash label from the OCEAN git repository. - ''') + """, + ) x_ocean_original_dft_code = Quantity( type=str, - description=''' + description=""" DFT code (QuantumESPRESSO or ABINIT) used in the initial step. - ''' + """, ) diff --git a/electronicparsers/octopus/metainfo/octopus.py b/electronicparsers/octopus/metainfo/octopus.py index 049343b4..1d8c6bac 100644 --- a/electronicparsers/octopus/metainfo/octopus.py +++ b/electronicparsers/octopus/metainfo/octopus.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,32 +39,33 @@ class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_octopus_info_energy_ion_ion = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" ion-ion interaction energy - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_octopus_info_scf_converged_iterations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of scf iterations to converge calculation - ''') + """, + ) x_octopus_log_svn_revision = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" octopus svn revision - ''') + """, + ) diff --git a/electronicparsers/octopus/metainfo/octopus_autogenerated.py b/electronicparsers/octopus/metainfo/octopus_autogenerated.py index 2f102d9d..2051943c 100644 --- a/electronicparsers/octopus/metainfo/octopus_autogenerated.py +++ b/electronicparsers/octopus/metainfo/octopus_autogenerated.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,10434 +39,11609 @@ class x_octopus_input(MCategory): - ''' + """ section describing Octopus input parameters - ''' + """ m_def = Category() class x_octopus_parserlog(MCategory): - ''' + """ section describing Octopus inputfile parser log output - ''' + """ m_def = Category() class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_octopus_input_ABCapHeight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ABCapHeight" of type "float" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ABShape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ABShape" of type "block" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_AbsorbingBoundaries = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "AbsorbingBoundaries" of type "flag" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ABWidth = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ABWidth" of type "float" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_AlphaFMM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "AlphaFMM" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_AnimationMultiFiles = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "AnimationMultiFiles" of type "logical" in section "Utilities::oct-xyz-anim" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_AnimationSampling = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "AnimationSampling" of type "integer" in section "Utilities::oct-xyz-anim" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ArpackInitialTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ArpackInitialTolerance" of type "float" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_AtomsMagnetDirection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "AtomsMagnetDirection" of type "block" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_AxisType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "AxisType" of type "integer" in section "Utilities::oct- center-geom" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_CalcDipoleMtxels = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_CalcDipoleMtxels" of type "logical" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_CalcExchange = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_CalcExchange" of type "logical" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_NumberBands = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_NumberBands" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_VmtxelNumCondBands = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_VmtxelNumCondBands" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_VmtxelNumValBands = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_VmtxelNumValBands" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_VmtxelPolarization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_VmtxelPolarization" of type "block" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_Vxc_diag_nmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_Vxc_diag_nmax" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_Vxc_diag_nmin = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_Vxc_diag_nmin" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_Vxc_offdiag_nmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_Vxc_offdiag_nmax" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_Vxc_offdiag_nmin = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_Vxc_offdiag_nmin" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BerkeleyGW_WFN_filename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BerkeleyGW_WFN_filename" of type "string" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BornChargeSumRuleCorrection = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "BornChargeSumRuleCorrection" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BoxShapeImage = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BoxShapeImage" of type "string" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BoxShapeUsDef = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BoxShapeUsDef" of type "string" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_BoxShape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "BoxShape" of type "integer" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CalcEigenvalues = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CalcEigenvalues" of type "logical" in section "SCF" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CalcInfrared = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CalcInfrared" of type "logical" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CalcNormalModeWfs = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CalcNormalModeWfs" of type "logical" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CalculateSelfInducedMagneticField = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CalculateSelfInducedMagneticField" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CalculationMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CalculationMode" of type "integer" in section "Calculation Modes" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaCalcForcesKernel = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CasidaCalcForcesKernel" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaCalcForcesSCF = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CasidaCalcForcesSCF" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaCalcForces = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CasidaCalcForces" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaCalcTriplet = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CasidaCalcTriplet" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaHermitianConjugate = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "CasidaHermitianConjugate" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaKohnShamStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CasidaKohnShamStates" of type "string" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaKSEnergyWindow = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CasidaKSEnergyWindow" of type "float" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaMomentumTransfer = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CasidaMomentumTransfer" of type "block" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaQuadratureOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CasidaQuadratureOrder" of type "integer" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaSpectrumBroadening = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CasidaSpectrumBroadening" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaSpectrumEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CasidaSpectrumEnergyStep" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaSpectrumMaxEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CasidaSpectrumMaxEnergy" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaSpectrumMinEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CasidaSpectrumMinEnergy" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaSpectrumRotationMatrix = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CasidaSpectrumRotationMatrix" of type "block" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaTheoryLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CasidaTheoryLevel" of type "flag" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CasidaTransitionDensities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CasidaTransitionDensities" of type "string" in section "Linear Response::Casida" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ClassicalPotential = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ClassicalPotential" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingAlphaLeft = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingAlphaLeft" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingAlpha" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingLocalizationRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingLocalizationRadius" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingLocalizationThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingLocalizationThreshold" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingLocalizedStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingLocalizedStates" of type "integer" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingPenalizationFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingPenalizationFactor" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingRotateSpectrum = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingRotateSpectrum" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScalingTheta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ComplexScalingTheta" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ComplexScaling = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ComplexScaling" of type "flag" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConductivityFromForces = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ConductivityFromForces" of type "logical" in section "Utilities::oct-conductivity_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConductivitySpectrumTimeStepFactor = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConductivitySpectrumTimeStepFactor" of type "integer" in section "Utilities::oct-conductivity_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvAbsDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvAbsDens" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvAbsEv = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvAbsEv" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvEigenError = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ConvEigenError" of type "logical" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvEnergy" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertEnd = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertEnd" of type "integer" in section "Utilities::oct- convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertEnergyMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvertEnergyMax" of type "float" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertEnergyMin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvertEnergyMin" of type "float" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvertEnergyStep" of type "float" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertFilename" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertFolder" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertFTMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertFTMethod" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertHow = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertHow" of type "integer" in section "Utilities::oct- convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertIterateFolder = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ConvertIterateFolder" of type "logical" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertOutputFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertOutputFilename" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertOutputFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertOutputFolder" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertReadSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertReadSize" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertScalarOperation = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertScalarOperation" of type "block" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertStart" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertStep = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertStep" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertSubtractFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertSubtractFilename" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertSubtractFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ConvertSubtractFolder" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvertSubtract = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ConvertSubtract" of type "logical" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvForce = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvForce" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvRelDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvRelDens" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ConvRelEv = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ConvRelEv" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Coordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Coordinates" of type "block" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurrentDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CurrentDensity" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurrentThroughPlane = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CurrentThroughPlane" of type "block" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvGygiAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvGygiAlpha" of type "float" in section "Mesh::Curvilinear::Gygi" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvGygiA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvGygiA" of type "float" in section "Mesh::Curvilinear::Gygi" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvGygiBeta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvGygiBeta" of type "float" in section "Mesh::Curvilinear::Gygi" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "CurvMethod" of type "integer" in section "Mesh::Curvilinear" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvModineJBar = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvModineJBar" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvModineJlocal = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvModineJlocal" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvModineJrange = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvModineJrange" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_CurvModineXBar = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "CurvModineXBar" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Debug = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Debug" of type "flag" in section "Execution::Debug" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DegeneracyThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "DegeneracyThreshold" of type "float" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DeltaEFMM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "DeltaEFMM" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DensitytoCalc = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "DensitytoCalc" of type "block" in section "States::ModelMB" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DerivativesOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "DerivativesOrder" of type "integer" in section "Mesh::Derivatives" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DerivativesStencil = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "DerivativesStencil" of type "integer" in section "Mesh::Derivatives" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DescribeParticlesModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "DescribeParticlesModelmb" of type "block" in section "States::ModelMB" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Dimensions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Dimensions" of type "integer" in section "System" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DisableOpenCL = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "DisableOpenCL" of type "logical" in section "Execution::OpenCL" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Displacement = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Displacement" of type "float" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DOSEnergyMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "DOSEnergyMax" of type "float" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DOSEnergyMin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "DOSEnergyMin" of type "float" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DOSEnergyPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "DOSEnergyPoints" of type "integer" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DOSGamma = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "DOSGamma" of type "float" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DoubleFFTParameter = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "DoubleFFTParameter" of type "float" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DoubleGridOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "DoubleGridOrder" of type "integer" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_DoubleGrid = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "DoubleGrid" of type "logical" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverArnoldiVectors = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverArnoldiVectors" of type "integer" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverArpackInitialResid = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverArpackInitialResid" of type "integer" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverArpackSort = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverArpackSort" of type "string" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverImaginaryTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "EigensolverImaginaryTime" of type "float" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverMaxIter" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverMinimizationIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverMinimizationIter" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverParpack = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverParpack" of type "logical" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverSaveMemory = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EigensolverSaveMemory" of type "logical" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EigensolverTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "EigensolverTolerance" of type "float" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Eigensolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Eigensolver" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ELFWithCurrentTerm = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ELFWithCurrentTerm" of type "logical" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMCalcBornCharges = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMCalcBornCharges" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMCalcDiagonalField = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMCalcDiagonalField" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMCalcMagnetooptics = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMCalcMagnetooptics" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMCalcRotatoryResponse = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMCalcRotatoryResponse" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMEta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "EMEta" of type "float" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMForceNoKdotP = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMForceNoKdotP" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMFreqsSort = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMFreqsSort" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMFreqs = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EMFreqs" of type "block" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMHyperpol = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EMHyperpol" of type "block" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMMagnetoopticsNoHVar = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMMagnetoopticsNoHVar" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMOccupiedResponse = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMOccupiedResponse" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMPerturbationType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "EMPerturbationType" of type "integer" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMStartDensityIsZeroField = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMStartDensityIsZeroField" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMStaticElectricField = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "EMStaticElectricField" of type "float" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMVerbose = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMVerbose" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMWavefunctionsFromScratch = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMWavefunctionsFromScratch" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EMWriteRestartDensities = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "EMWriteRestartDensities" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_EwaldAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "EwaldAlpha" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ExcessCharge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ExcessCharge" of type "float" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ExperimentalFeatures = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ExperimentalFeatures" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ExtraStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ExtraStates" of type "integer" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FeastContour = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FeastContour" of type "block" in section "SCF::Eigensolver::FEAST" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FeastMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FeastMaxIter" of type "integer" in section "SCF::Eigensolver::FEAST" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FFTLibrary = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FFTLibrary" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FFTOptimize = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "FFTOptimize" of type "logical" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FFTPreparePlan = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FFTPreparePlan" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FilterPotentials = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FilterPotentials" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FlushMessages = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "FlushMessages" of type "logical" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ForceComplex = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ForceComplex" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ForceTotalEnforce = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ForceTotalEnforce" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FromScratch = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "FromScratch" of type "logical" in section "Execution" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FrozenDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FrozenDir" of type "string" in section "Output::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_FrozenStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "FrozenStates" of type "integer" in section "Output::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GaugeFieldDynamics = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "GaugeFieldDynamics" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GaugeVectorField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "GaugeVectorField" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOCenter = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "GOCenter" of type "logical" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOFireMass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "GOFireMass" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOLineTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "GOLineTol" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "GOMaxIter" of type "integer" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "GOMethod" of type "integer" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOMinimumMove = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "GOMinimumMove" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOObjective = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "GOObjective" of type "integer" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "GOStep" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GOTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "GOTolerance" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GuessMagnetDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "GuessMagnetDensity" of type "integer" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_GyromagneticRatio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "GyromagneticRatio" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_HamiltonianVariation = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "HamiltonianVariation" of type "integer" in section "Linear Response::Sternheimer" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_IgnoreExternalIons = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "IgnoreExternalIons" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_InitialSpins = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "InitialSpins" of type "block" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Interaction1DScreening = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Interaction1DScreening" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Interaction1D = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Interaction1D" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_InvertKSConvAbsDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "InvertKSConvAbsDens" of type "float" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_InvertKSMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "InvertKSMaxIter" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_InvertKSmethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "InvertKSmethod" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_InvertKSTargetDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "InvertKSTargetDensity" of type "string" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_InvertKSVerbosity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "InvertKSVerbosity" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_IonicInteraction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "IonicInteraction" of type "block" in section "System::Species" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_IonsConstantVelocity = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "IonsConstantVelocity" of type "logical" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_IonsTimeDependentDisplacements = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "IonsTimeDependentDisplacements" of type "block" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KdotPCalcSecondOrder = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "KdotPCalcSecondOrder" of type "logical" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KdotPCalculateEffectiveMasses = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "KdotPCalculateEffectiveMasses" of type "logical" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KdotPEta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "KdotPEta" of type "float" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KdotPOccupiedSolutionMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KdotPOccupiedSolutionMethod" of type "integer" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KdotPUseNonLocalPseudopotential = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "KdotPUseNonLocalPseudopotential" of type "logical" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KdotPVelMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KdotPVelMethod" of type "integer" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KPointsGrid = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KPointsGrid" of type "block" in section "Mesh::KPoints" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KPointsReduced = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KPointsReduced" of type "block" in section "Mesh::KPoints" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KPointsUseSymmetries = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "KPointsUseSymmetries" of type "logical" in section "Mesh::KPoints" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KPointsUseTimeReversal = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "KPointsUseTimeReversal" of type "logical" in section "Mesh::KPoints" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KPoints" of type "block" in section "Mesh::KPoints" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KSInversionAsymptotics = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KSInversionAsymptotics" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_KSInversionLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "KSInversionLevel" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LatticeParameters = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LatticeParameters" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LatticeVectors = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LatticeVectors" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LB94_modified = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LB94_modified" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LB94_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LB94_threshold" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOAlternative = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LCAOAlternative" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOComplexYlms = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LCAOComplexYlms" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAODiagTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LCAODiagTol" of type "float" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAODimension = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LCAODimension" of type "integer" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOExtraOrbitals = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LCAOExtraOrbitals" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOKeepOrbitals = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LCAOKeepOrbitals" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOMaximumOrbitalRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LCAOMaximumOrbitalRadius" of type "float" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOScaleFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LCAOScaleFactor" of type "float" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LCAOStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LCAOStart" of type "integer" in section "SCF::LCAO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDBaderThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LDBaderThreshold" of type "float" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDEnd = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDEnd" of type "integer" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDExtraWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDExtraWrite" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDFilename" of type "string" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDFolder" of type "string" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDIonicDipole = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDIonicDipole" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDIterateFolder = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDIterateFolder" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDMultipoleLmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDMultipoleLmax" of type "integer" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDOutputFormat = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDOutputFormat" of type "flag" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDOutput" of type "flag" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDOverWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDOverWrite" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDRadiiFile = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDRadiiFile" of type "string" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDRestartFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDRestartFolder" of type "string" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDRestart = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDRestart" of type "logical" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDStart" of type "integer" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDStep = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LDStep" of type "integer" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDUpdate = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDUpdate" of type "logical" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LDUseAtomicRadii = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "LDUseAtomicRadii" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_libvdwxcDebug = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "libvdwxcDebug" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_libvdwxcMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "libvdwxcMode" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_libvdwxcVDWFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "libvdwxcVDWFactor" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LinearSolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LinearSolverMaxIter" of type "integer" in section "Linear Response::Solver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LinearSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LinearSolver" of type "integer" in section "Linear Response::Solver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LocalDomains = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LocalDomains" of type "block" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LocalMagneticMomentsSphereRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LocalMagneticMomentsSphereRadius" of type "float" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRConvAbsDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LRConvAbsDens" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRConvRelDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LRConvRelDens" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRMaximumIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LRMaximumIter" of type "integer" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRTolAdaptiveFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LRTolAdaptiveFactor" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRTolFinalTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LRTolFinalTol" of type "float" in section "Linear Response::Solver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRTolInitTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LRTolInitTol" of type "float" in section "Linear Response::Solver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRTolIterWindow = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "LRTolIterWindow" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_LRTolScheme = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "LRTolScheme" of type "integer" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Lsize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Lsize" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MagneticGaugeCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MagneticGaugeCorrection" of type "integer" in section "Linear Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MainAxis = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MainAxis" of type "block" in section "Utilities::oct- center-geom" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MassScaling = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MassScaling" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MaximumIterBerry = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MaximumIterBerry" of type "integer" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MaximumIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MaximumIter" of type "integer" in section "SCF::Convergence" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MemoryLimit = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MemoryLimit" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshBlockSize" of type "block" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshOrder" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartitionDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartitionDir" of type "string" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartitionPackage = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartitionPackage" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartitionRead = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartitionRead" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartitionStencil = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartitionStencil" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartitionVirtualSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartitionVirtualSize" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartitionWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartitionWrite" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshPartition = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MeshPartition" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MeshUseTopology = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "MeshUseTopology" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MixField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MixField" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MixingPreconditioner = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "MixingPreconditioner" of type "logical" in section "SCF::Mixing" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MixingScheme = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MixingScheme" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Mixing" of type "float" in section "SCF::Mixing" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MixInterval = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MixInterval" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MixNumberSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MixNumberSteps" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MomentumTransfer = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MomentumTransfer" of type "block" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MoveIons = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "MoveIons" of type "logical" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MPIDebugHook = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "MPIDebugHook" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MultigridLevels = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MultigridLevels" of type "integer" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MultiResolutionArea = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MultiResolutionArea" of type "block" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_MultiResolutionInterpolationOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "MultiResolutionInterpolationOrder" of type "integer" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NDimModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "NDimModelmb" of type "integer" in section "States::ModelMB" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NFFTCutoff = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "NFFTCutoff" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NFFTGuruInterface = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "NFFTGuruInterface" of type "logical" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NFFTOversampling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "NFFTOversampling" of type "float" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NFFTPrecompute = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "NFFTPrecompute" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NLOperatorCompactBoundaries = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "NLOperatorCompactBoundaries" of type "logical" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NParticleModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "NParticleModelmb" of type "integer" in section "States::ModelMB" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_NTypeParticleModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "NTypeParticleModelmb" of type "integer" in section "States::ModelMB" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Occupations = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Occupations" of type "block" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTCheckGradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTCheckGradient" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTClassicalTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTClassicalTarget" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTControlFunctionOmegaMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTControlFunctionOmegaMax" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTControlFunctionRepresentation = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTControlFunctionRepresentation" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTControlFunctionType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTControlFunctionType" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTCurrentFunctional = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTCurrentFunctional" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTCurrentWeight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTCurrentWeight" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTDelta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTDelta" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTDirectStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTDirectStep" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTDoubleCheck = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OCTDoubleCheck" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTDumpIntermediate = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OCTDumpIntermediate" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTEps = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTEps" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTEta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTEta" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTExcludedStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTExcludedStates" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTFilter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTFilter" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTFixFluenceTo = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTFixFluenceTo" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTFixInitialFluence = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OCTFixInitialFluence" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTHarmonicWeight = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTHarmonicWeight" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTInitialState = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTInitialState" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTInitialTransformStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTInitialTransformStates" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTInitialUserdefined = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTInitialUserdefined" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTLaserEnvelope = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTLaserEnvelope" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTLocalTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTLocalTarget" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTMaxIter" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTMomentumDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTMomentumDerivatives" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTNumberCheckPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTNumberCheckPoints" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTOptimizeHarmonicSpectrum = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTOptimizeHarmonicSpectrum" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTPenalty = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OCTPenalty" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTPositionDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTPositionDerivatives" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTRandomInitialGuess = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OCTRandomInitialGuess" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTScheme = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTScheme" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTSpatialCurrWeight = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTSpatialCurrWeight" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTStartIterCurrTg = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTStartIterCurrTg" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTargetDensityFromState = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTargetDensityFromState" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTargetDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTargetDensity" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTargetOperator = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTargetOperator" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTargetSpin = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTargetSpin" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTargetTransformStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTargetTransformStates" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTargetUserdefined = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTargetUserdefined" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTTdTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTTdTarget" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTVelocityDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTVelocityDerivatives" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OCTVelocityTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OCTVelocityTarget" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OEPLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OEPLevel" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OEPMixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OEPMixing" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OnlyUserDefinedInitialStates = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OnlyUserDefinedInitialStates" of type "logical" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OpenCLBenchmark = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OpenCLBenchmark" of type "logical" in section "Execution::OpenCL" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OpenCLDevice = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OpenCLDevice" of type "integer" in section "Execution::OpenCL" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OpenCLPlatform = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OpenCLPlatform" of type "integer" in section "Execution::OpenCL" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OpenSCADIsovalue = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "OpenSCADIsovalue" of type "float" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OperateComplexSingle = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OperateComplexSingle" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OperateComplex = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OperateComplex" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OperateDouble = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OperateDouble" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OperateOpenCL = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OperateOpenCL" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OperateSingle = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OperateSingle" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputBandsGnuplotMode = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OutputBandsGnuplotMode" of type "logical" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputBandsGraceMode = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OutputBandsGraceMode" of type "logical" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputDuringSCF = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "OutputDuringSCF" of type "logical" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputFormat = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OutputFormat" of type "flag" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputInterval = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OutputInterval" of type "integer" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputIterDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OutputIterDir" of type "string" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputMatrixElements = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OutputMatrixElements" of type "flag" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputMEMultipoles = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OutputMEMultipoles" of type "integer" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_OutputWfsNumber = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "OutputWfsNumber" of type "string" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Output = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Output" of type "flag" in section "Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParallelizationNumberSlaves = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ParallelizationNumberSlaves" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParallelizationOfDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ParallelizationOfDerivatives" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParallelizationPoissonAllNodes = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ParallelizationPoissonAllNodes" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParDomains = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ParDomains" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParKPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ParKPoints" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParOther = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ParOther" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ParStates" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ParticleMass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ParticleMass" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PartitionPrint = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PartitionPrint" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMCalcMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PCMCalcMethod" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMCalculation = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PCMCalculation" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMCavity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PCMCavity" of type "string" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMChargeSmearNN = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PCMChargeSmearNN" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMDynamicEpsilon = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PCMDynamicEpsilon" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMGamessBenchmark = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PCMGamessBenchmark" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMQtotTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PCMQtotTol" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMRadiusScaling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PCMRadiusScaling" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMRenormCharges = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PCMRenormCharges" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMSmearingFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PCMSmearingFactor" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMSpheresOnH = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PCMSpheresOnH" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMStaticEpsilon = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PCMStaticEpsilon" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMTessSubdivider = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PCMTessSubdivider" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMUpdateIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PCMUpdateIter" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PCMVdWRadii = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PCMVdWRadii" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PDBClassical = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PDBClassical" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PDBCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PDBCoordinates" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PDBVelocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PDBVelocities" of type "string" in section "System::Velocities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PeriodicDimensions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PeriodicDimensions" of type "integer" in section "System" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_ARPES_grid = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_ARPES_grid" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_AvoidAB = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_AvoidAB" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_BZones = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_BZones" of type "block" in section "Time- Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_DeltaK = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_DeltaK" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_EnergyGrid = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_EnergyGrid" of type "block" in section "Time- Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Gpoint_Upsample = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Gpoint_Upsample" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Kmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Kmax" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Lmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Lmax" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Lsize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Lsize" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Offset = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Offset" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Radius" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_Shape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_Shape" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_StepsPhiK = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_StepsPhiK" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_StepsPhiR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_StepsPhiR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_StepsThetaK = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_StepsThetaK" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_StepsThetaR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_StepsThetaR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_Flux_UseMemory = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PES_Flux_UseMemory" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_DeltaOmega = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_DeltaOmega" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_OmegaMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_OmegaMax" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_points = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_points" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_Radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_Radius" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_recipe = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_recipe" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_StepsPhiR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_StepsPhiR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PES_spm_StepsThetaR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PES_spm_StepsThetaR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMask2PEnlargeFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PESMask2PEnlargeFactor" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskEnlargeFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PESMaskEnlargeFactor" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskFilterCutOff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PESMaskFilterCutOff" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskIncludePsiA = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PESMaskIncludePsiA" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PESMaskMode" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskPlaneWaveProjection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PESMaskPlaneWaveProjection" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskShape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PESMaskShape" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PESMaskSize" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskSpectEnergyMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PESMaskSpectEnergyMax" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskSpectEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PESMaskSpectEnergyStep" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PESMaskStartTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PESMaskStartTime" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PhotoelectronSpectrumOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PhotoelectronSpectrumOutput" of type "flag" in section "Utilities::oct-photoelectron_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PhotoelectronSpectrumResolveStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PhotoelectronSpectrumResolveStates" of type "block" in section "Utilities::oct-photoelectron_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PhotoElectronSpectrum = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PhotoElectronSpectrum" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PNFFTCutoff = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PNFFTCutoff" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PNFFTOversampling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PNFFTOversampling" of type "float" in section "Mesh::FFTs" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Poisson1DSoftCoulombParam = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Poisson1DSoftCoulombParam" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonCutoffRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PoissonCutoffRadius" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonFFTKernel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonFFTKernel" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverBoundaries = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverBoundaries" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverISFParallelData = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverISFParallelData" of type "logical" in section "Hamiltonian::Poisson::ISF" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMaxIter" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMaxMultipole = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMaxMultipole" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMGMaxCycles = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMGMaxCycles" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMGPostsmoothingSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMGPostsmoothingSteps" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMGPresmoothingSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMGPresmoothingSteps" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMGRelaxationFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMGRelaxationFactor" of type "float" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMGRelaxationMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMGRelaxationMethod" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverMGRestrictionMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverMGRestrictionMethod" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverNodes = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverNodes" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolverThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolverThreshold" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PoissonSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PoissonSolver" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PreconditionerFilterFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PreconditionerFilterFactor" of type "float" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Preconditioner = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Preconditioner" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Preorthogonalization = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "Preorthogonalization" of type "logical" in section "Linear Response::Sternheimer" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ProfilingAllNodes = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ProfilingAllNodes" of type "logical" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ProfilingMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ProfilingMode" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumDampFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumDampFactor" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumDampMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumDampMode" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumEndTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumEndTime" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumEnergyStep" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumMaxEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumMaxEnergy" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumSigmaDiagonalization = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumSigmaDiagonalization" of type "logical" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumStartTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumStartTime" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumTransform = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumTransform" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PropagationSpectrumType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PropagationSpectrumType" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_PseudopotentialSet = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "PseudopotentialSet" of type "integer" in section "System::Species" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Radius" of type "float" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RandomVelocityTemp = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RandomVelocityTemp" of type "float" in section "System::Velocities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RashbaSpinOrbitCoupling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RashbaSpinOrbitCoupling" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RDMConvEner = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RDMConvEner" of type "float" in section "SCF::RDMFT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RDMTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RDMTolerance" of type "float" in section "SCF::RDMFT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RecalculateGSDuringEvolution = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "RecalculateGSDuringEvolution" of type "logical" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ReducedCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ReducedCoordinates" of type "block" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RelativisticCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "RelativisticCorrection" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ReportMemory = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ReportMemory" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ResponseMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "ResponseMethod" of type "integer" in section "Linear Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RestartFixedOccupations = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "RestartFixedOccupations" of type "logical" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RestartOptions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "RestartOptions" of type "block" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RestartReorderOccs = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "RestartReorderOccs" of type "logical" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RestartWriteInterval = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "RestartWriteInterval" of type "integer" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RestartWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "RestartWrite" of type "logical" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RootSolverAbsTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RootSolverAbsTolerance" of type "float" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RootSolverHavePolynomial = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "RootSolverHavePolynomial" of type "logical" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RootSolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "RootSolverMaxIter" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RootSolverRelTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RootSolverRelTolerance" of type "float" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RootSolverWSRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "RootSolverWSRadius" of type "float" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_RootSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "RootSolver" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ScaLAPACKCompatible = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "ScaLAPACKCompatible" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCDM_EXX = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SCDM_EXX" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCDM_verbose = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SCDM_verbose" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCDMCutoffRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "SCDMCutoffRadius" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCFCalculateDipole = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SCFCalculateDipole" of type "logical" in section "SCF" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCFCalculateForces = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SCFCalculateForces" of type "logical" in section "SCF" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCFCalculatePartialCharges = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SCFCalculatePartialCharges" of type "logical" in section "SCF" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SCFinLCAO = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SCFinLCAO" of type "logical" in section "SCF" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SICCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SICCorrection" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SmearingFunction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SmearingFunction" of type "integer" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SmearingMPOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SmearingMPOrder" of type "integer" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Smearing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Smearing" of type "float" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SOStrength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "SOStrength" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Spacing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Spacing" of type "float" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITAbsTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITAbsTolerance" of type "float" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITIterOut = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITIterOut" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITKrylovSubspaceSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITKrylovSubspaceSize" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITMaxIter" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITRelTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITRelTolerance" of type "float" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITSolver" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SPARSKITVerboseSolver = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SPARSKITVerboseSolver" of type "logical" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SpeciesProjectorSphereThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "SpeciesProjectorSphereThreshold" of type "float" in section "System::Species" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SpeciesTimeDependent = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SpeciesTimeDependent" of type "logical" in section "System::Species" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Species = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Species" of type "block" in section "System::Species" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SpectrumMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SpectrumMethod" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SpectrumSignalNoise = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "SpectrumSignalNoise" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SpinComponents = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SpinComponents" of type "integer" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Splines = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Splines" of type "integer" in section "Execution" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StatesBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "StatesBlockSize" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StatesCLDeviceMemory = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "StatesCLDeviceMemory" of type "float" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StatesOrthogonalization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "StatesOrthogonalization" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StatesPack = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "StatesPack" of type "logical" in section "Execution::Optimization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StaticElectricField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "StaticElectricField" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StaticMagneticField2DGauge = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "StaticMagneticField2DGauge" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_StaticMagneticField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "StaticMagneticField" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_stderr = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "stderr" of type "string" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_stdout = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "stdout" of type "string" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SubspaceDiagonalization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SubspaceDiagonalization" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SubSystemCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SubSystemCoordinates" of type "block" in section "System::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SubSystems = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SubSystems" of type "block" in section "System::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SymmetriesCompute = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SymmetriesCompute" of type "logical" in section "Execution::Symmetries" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SymmetrizeDensity = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SymmetrizeDensity" of type "logical" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SymmetrizeDynamicalMatrix = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "SymmetrizeDynamicalMatrix" of type "logical" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_SymmetryBreakDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "SymmetryBreakDir" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDDeltaKickTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDDeltaKickTime" of type "float" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDDeltaStrengthMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDDeltaStrengthMode" of type "integer" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDDeltaStrength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDDeltaStrength" of type "float" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDDeltaUserDefined = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDDeltaUserDefined" of type "string" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDDynamics = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDDynamics" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDEnergyUpdateIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDEnergyUpdateIter" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDExcitedStatesToProject = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDExcitedStatesToProject" of type "block" in section "Time-Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDExponentialMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDExponentialMethod" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDExpOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDExpOrder" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDExternalFields = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDExternalFields" of type "block" in section "Time- Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDFloquetDimension = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDFloquetDimension" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDFloquetFrequency = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDFloquetFrequency" of type "float" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDFloquetSample = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDFloquetSample" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDFreezeHXC = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "TDFreezeHXC" of type "logical" in section "Time- Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDFreezeOrbitals = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDFreezeOrbitals" of type "integer" in section "Time- Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDFunctions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDFunctions" of type "block" in section "Time-Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDGlobalForce = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDGlobalForce" of type "string" in section "Time- Dependent" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDIonicTimeScale = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDIonicTimeScale" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDKickFunction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDKickFunction" of type "block" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDLanczosTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDLanczosTol" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDMaxSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDMaxSteps" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDMomentumTransfer = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDMomentumTransfer" of type "block" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDMultipoleLmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDMultipoleLmax" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDOutput" of type "flag" in section "Time-Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDPolarizationDirection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDPolarizationDirection" of type "integer" in section "Time-Dependent::Response::Dipole" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDPolarizationEquivAxes = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDPolarizationEquivAxes" of type "integer" in section "Time-Dependent::Response::Dipole" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDPolarizationWprime = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDPolarizationWprime" of type "block" in section "Time- Dependent::Response::Dipole" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDPolarization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDPolarization" of type "block" in section "Time- Dependent::Response::Dipole" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDProjStateStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDProjStateStart" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDPropagationTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDPropagationTime" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDPropagator = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDPropagator" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDSCFThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDSCFThreshold" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDStepsWithSelfConsistency = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TDStepsWithSelfConsistency" of type "integer" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TDTimeStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TDTimeStep" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TemperatureFunction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TemperatureFunction" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TestMaxBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TestMaxBlockSize" of type "integer" in section "Utilities::oct-test" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TestMinBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TestMinBlockSize" of type "integer" in section "Utilities::oct-test" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TestMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TestMode" of type "integer" in section "Utilities::oct- test" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TestRepetitions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TestRepetitions" of type "integer" in section "Utilities::oct-test" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TestType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TestType" of type "integer" in section "Utilities::oct- test" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TheoryLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TheoryLevel" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_ThermostatMass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "ThermostatMass" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Thermostat = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Thermostat" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TimeZero = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "TimeZero" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TnaddFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "TnaddFactor" of type "float" in section "Hamiltonian::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TnaddFunctional = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TnaddFunctional" of type "integer" in section "Hamiltonian::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TnaddPolarized = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "TnaddPolarized" of type "logical" in section "Hamiltonian::Subsystems" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TotalStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TotalStates" of type "integer" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_TransformStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "TransformStates" of type "block" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_UnitsInput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "UnitsInput" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_UnitsOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "UnitsOutput" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_UnitsXYZFiles = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "UnitsXYZFiles" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Units = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Units" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_UnoccShowOccStates = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "UnoccShowOccStates" of type "logical" in section "Calculation Modes::Unoccupied States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_UseFineMesh = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "UseFineMesh" of type "logical" in section "Mesh" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_UserDefinedStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "UserDefinedStates" of type "block" in section "States" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_VDWCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "VDWCorrection" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_vdWNPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "vdWNPoints" of type "integer" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_VDWSelfConsistent = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "VDWSelfConsistent" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Velocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "Velocities" of type "block" in section "System::Velocities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_VibrationalSpectrumTimeStepFactor = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "VibrationalSpectrumTimeStepFactor" of type "integer" in section "Utilities::oct-vibrational_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_VibrationalSpectrumTime = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "VibrationalSpectrumTime" of type "integer" in section "Utilities::oct-vibrational_spectrum" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_WatterstromODESolverNSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "WatterstromODESolverNSteps" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_WatterstromODESolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "WatterstromODESolver" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_WorkDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "WorkDir" of type "string" in section "Execution::IO" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Xalpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Xalpha" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCDensityCorrectionCutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "XCDensityCorrectionCutoff" of type "float" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCDensityCorrectionMinimum = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "XCDensityCorrectionMinimum" of type "logical" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCDensityCorrectionNormalize = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "XCDensityCorrectionNormalize" of type "logical" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCDensityCorrectionOptimize = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "XCDensityCorrectionOptimize" of type "logical" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCDensityCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XCDensityCorrection" of type "integer" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCFunctional = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XCFunctional" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCKernelLRCAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "XCKernelLRCAlpha" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCKernel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XCKernel" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCParallel = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "XCParallel" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XCUseGaugeIndependentKED = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus input parameter "XCUseGaugeIndependentKED" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_Xlength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus input parameter "Xlength" of type "float" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XSFCoordinatesAnimStep = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XSFCoordinatesAnimStep" of type "integer" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XSFCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XSFCoordinates" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XSFVelocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XSFVelocities" of type "string" in section "System::Velocities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XYZCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XYZCoordinates" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_input_XYZVelocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus input parameter "XYZVelocities" of type "string" in section "System::Velocities" - ''', - categories=[x_octopus_input]) + """, + categories=[x_octopus_input], + ) x_octopus_parserlog_ABCapHeight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ABCapHeight" of type "float" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ABShape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ABShape" of type "block" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_AbsorbingBoundaries = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "AbsorbingBoundaries" of type "flag" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ABWidth = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ABWidth" of type "float" in section "Time- Dependent::Absorbing Boundaries" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_AlphaFMM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "AlphaFMM" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_AnimationMultiFiles = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "AnimationMultiFiles" of type "logical" in section "Utilities::oct-xyz-anim" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_AnimationSampling = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "AnimationSampling" of type "integer" in section "Utilities::oct-xyz-anim" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ArpackInitialTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ArpackInitialTolerance" of type "float" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_AtomsMagnetDirection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "AtomsMagnetDirection" of type "block" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_AxisType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "AxisType" of type "integer" in section "Utilities::oct- center-geom" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_CalcDipoleMtxels = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_CalcDipoleMtxels" of type "logical" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_CalcExchange = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_CalcExchange" of type "logical" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_NumberBands = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_NumberBands" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_VmtxelNumCondBands = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_VmtxelNumCondBands" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_VmtxelNumValBands = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_VmtxelNumValBands" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_VmtxelPolarization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_VmtxelPolarization" of type "block" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_Vxc_diag_nmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_Vxc_diag_nmax" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_Vxc_diag_nmin = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_Vxc_diag_nmin" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_Vxc_offdiag_nmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_Vxc_offdiag_nmax" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_Vxc_offdiag_nmin = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_Vxc_offdiag_nmin" of type "integer" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BerkeleyGW_WFN_filename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BerkeleyGW_WFN_filename" of type "string" in section "Output::BerkeleyGW" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BornChargeSumRuleCorrection = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "BornChargeSumRuleCorrection" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BoxShapeImage = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BoxShapeImage" of type "string" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BoxShapeUsDef = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BoxShapeUsDef" of type "string" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_BoxShape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "BoxShape" of type "integer" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CalcEigenvalues = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CalcEigenvalues" of type "logical" in section "SCF" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CalcInfrared = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CalcInfrared" of type "logical" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CalcNormalModeWfs = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CalcNormalModeWfs" of type "logical" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CalculateSelfInducedMagneticField = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CalculateSelfInducedMagneticField" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CalculationMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CalculationMode" of type "integer" in section "Calculation Modes" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaCalcForcesKernel = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaCalcForcesKernel" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaCalcForcesSCF = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaCalcForcesSCF" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaCalcForces = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaCalcForces" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaCalcTriplet = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaCalcTriplet" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaHermitianConjugate = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaHermitianConjugate" of type "logical" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaKohnShamStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaKohnShamStates" of type "string" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaKSEnergyWindow = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CasidaKSEnergyWindow" of type "float" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaMomentumTransfer = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaMomentumTransfer" of type "block" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaQuadratureOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaQuadratureOrder" of type "integer" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaSpectrumBroadening = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CasidaSpectrumBroadening" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaSpectrumEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CasidaSpectrumEnergyStep" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaSpectrumMaxEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CasidaSpectrumMaxEnergy" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaSpectrumMinEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CasidaSpectrumMinEnergy" of type "float" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaSpectrumRotationMatrix = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaSpectrumRotationMatrix" of type "block" in section "Utilities::oct-casida_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaTheoryLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaTheoryLevel" of type "flag" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CasidaTransitionDensities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CasidaTransitionDensities" of type "string" in section "Linear Response::Casida" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ClassicalPotential = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ClassicalPotential" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingAlphaLeft = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingAlphaLeft" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingAlpha" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingLocalizationRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingLocalizationRadius" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingLocalizationThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingLocalizationThreshold" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingLocalizedStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingLocalizedStates" of type "integer" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingPenalizationFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingPenalizationFactor" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingRotateSpectrum = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingRotateSpectrum" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScalingTheta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScalingTheta" of type "float" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ComplexScaling = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ComplexScaling" of type "flag" in section "Hamiltonian::ComplexScaling" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConductivityFromForces = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ConductivityFromForces" of type "logical" in section "Utilities::oct-conductivity_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConductivitySpectrumTimeStepFactor = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConductivitySpectrumTimeStepFactor" of type "integer" in section "Utilities::oct-conductivity_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvAbsDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvAbsDens" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvAbsEv = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvAbsEv" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvEigenError = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ConvEigenError" of type "logical" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvEnergy" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertEnd = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertEnd" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertEnergyMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvertEnergyMax" of type "float" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertEnergyMin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvertEnergyMin" of type "float" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvertEnergyStep" of type "float" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertFilename" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertFolder" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertFTMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertFTMethod" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertHow = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertHow" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertIterateFolder = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertIterateFolder" of type "logical" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertOutputFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertOutputFilename" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertOutputFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertOutputFolder" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertReadSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertReadSize" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertScalarOperation = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertScalarOperation" of type "block" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertStart" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertStep = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertStep" of type "integer" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertSubtractFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertSubtractFilename" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertSubtractFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertSubtractFolder" of type "string" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvertSubtract = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ConvertSubtract" of type "logical" in section "Utilities::oct-convert" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvForce = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvForce" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvRelDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvRelDens" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ConvRelEv = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ConvRelEv" of type "float" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Coordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Coordinates" of type "block" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurrentDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CurrentDensity" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurrentThroughPlane = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CurrentThroughPlane" of type "block" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvGygiAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvGygiAlpha" of type "float" in section "Mesh::Curvilinear::Gygi" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvGygiA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvGygiA" of type "float" in section "Mesh::Curvilinear::Gygi" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvGygiBeta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvGygiBeta" of type "float" in section "Mesh::Curvilinear::Gygi" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "CurvMethod" of type "integer" in section "Mesh::Curvilinear" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvModineJBar = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvModineJBar" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvModineJlocal = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvModineJlocal" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvModineJrange = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvModineJrange" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_CurvModineXBar = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "CurvModineXBar" of type "float" in section "Mesh::Curvilinear::Modine" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Debug = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Debug" of type "flag" in section "Execution::Debug" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DegeneracyThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "DegeneracyThreshold" of type "float" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DeltaEFMM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "DeltaEFMM" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DensitytoCalc = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "DensitytoCalc" of type "block" in section "States::ModelMB" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DerivativesOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "DerivativesOrder" of type "integer" in section "Mesh::Derivatives" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DerivativesStencil = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "DerivativesStencil" of type "integer" in section "Mesh::Derivatives" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DescribeParticlesModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "DescribeParticlesModelmb" of type "block" in section "States::ModelMB" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Dimensions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Dimensions" of type "integer" in section "System" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DisableOpenCL = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "DisableOpenCL" of type "logical" in section "Execution::OpenCL" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Displacement = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Displacement" of type "float" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DOSEnergyMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "DOSEnergyMax" of type "float" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DOSEnergyMin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "DOSEnergyMin" of type "float" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DOSEnergyPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "DOSEnergyPoints" of type "integer" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DOSGamma = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "DOSGamma" of type "float" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DoubleFFTParameter = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "DoubleFFTParameter" of type "float" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DoubleGridOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "DoubleGridOrder" of type "integer" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_DoubleGrid = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "DoubleGrid" of type "logical" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverArnoldiVectors = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverArnoldiVectors" of type "integer" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverArpackInitialResid = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverArpackInitialResid" of type "integer" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverArpackSort = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverArpackSort" of type "string" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverImaginaryTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverImaginaryTime" of type "float" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverMaxIter" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverMinimizationIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverMinimizationIter" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverParpack = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverParpack" of type "logical" in section "SCF::Eigensolver::ARPACK" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverSaveMemory = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverSaveMemory" of type "logical" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EigensolverTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "EigensolverTolerance" of type "float" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Eigensolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Eigensolver" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ELFWithCurrentTerm = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ELFWithCurrentTerm" of type "logical" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMCalcBornCharges = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMCalcBornCharges" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMCalcDiagonalField = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMCalcDiagonalField" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMCalcMagnetooptics = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMCalcMagnetooptics" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMCalcRotatoryResponse = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMCalcRotatoryResponse" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMEta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "EMEta" of type "float" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMForceNoKdotP = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMForceNoKdotP" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMFreqsSort = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMFreqsSort" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMFreqs = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EMFreqs" of type "block" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMHyperpol = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EMHyperpol" of type "block" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMMagnetoopticsNoHVar = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMMagnetoopticsNoHVar" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMOccupiedResponse = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMOccupiedResponse" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMPerturbationType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "EMPerturbationType" of type "integer" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMStartDensityIsZeroField = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMStartDensityIsZeroField" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMStaticElectricField = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "EMStaticElectricField" of type "float" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMVerbose = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMVerbose" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMWavefunctionsFromScratch = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMWavefunctionsFromScratch" of type "logical" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EMWriteRestartDensities = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "EMWriteRestartDensities" of type "logical" in section "Linear Response::Static Polarization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_EwaldAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "EwaldAlpha" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ExcessCharge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ExcessCharge" of type "float" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ExperimentalFeatures = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ExperimentalFeatures" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ExtraStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ExtraStates" of type "integer" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FeastContour = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FeastContour" of type "block" in section "SCF::Eigensolver::FEAST" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FeastMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FeastMaxIter" of type "integer" in section "SCF::Eigensolver::FEAST" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FFTLibrary = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FFTLibrary" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FFTOptimize = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "FFTOptimize" of type "logical" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FFTPreparePlan = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FFTPreparePlan" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FilterPotentials = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FilterPotentials" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FlushMessages = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "FlushMessages" of type "logical" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ForceComplex = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ForceComplex" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ForceTotalEnforce = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ForceTotalEnforce" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FromScratch = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "FromScratch" of type "logical" in section "Execution" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FrozenDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FrozenDir" of type "string" in section "Output::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_FrozenStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "FrozenStates" of type "integer" in section "Output::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GaugeFieldDynamics = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "GaugeFieldDynamics" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GaugeVectorField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "GaugeVectorField" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOCenter = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "GOCenter" of type "logical" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOFireMass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "GOFireMass" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOLineTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "GOLineTol" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "GOMaxIter" of type "integer" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "GOMethod" of type "integer" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOMinimumMove = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "GOMinimumMove" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOObjective = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "GOObjective" of type "integer" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "GOStep" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GOTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "GOTolerance" of type "float" in section "Calculation Modes::Geometry Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GuessMagnetDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "GuessMagnetDensity" of type "integer" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_GyromagneticRatio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "GyromagneticRatio" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_HamiltonianVariation = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "HamiltonianVariation" of type "integer" in section "Linear Response::Sternheimer" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_IgnoreExternalIons = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "IgnoreExternalIons" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_InitialSpins = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "InitialSpins" of type "block" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Interaction1DScreening = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Interaction1DScreening" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Interaction1D = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Interaction1D" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_InvertKSConvAbsDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "InvertKSConvAbsDens" of type "float" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_InvertKSMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "InvertKSMaxIter" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_InvertKSmethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "InvertKSmethod" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_InvertKSTargetDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "InvertKSTargetDensity" of type "string" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_InvertKSVerbosity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "InvertKSVerbosity" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_IonicInteraction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "IonicInteraction" of type "block" in section "System::Species" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_IonsConstantVelocity = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "IonsConstantVelocity" of type "logical" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_IonsTimeDependentDisplacements = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "IonsTimeDependentDisplacements" of type "block" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KdotPCalcSecondOrder = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "KdotPCalcSecondOrder" of type "logical" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KdotPCalculateEffectiveMasses = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "KdotPCalculateEffectiveMasses" of type "logical" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KdotPEta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "KdotPEta" of type "float" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KdotPOccupiedSolutionMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KdotPOccupiedSolutionMethod" of type "integer" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KdotPUseNonLocalPseudopotential = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "KdotPUseNonLocalPseudopotential" of type "logical" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KdotPVelMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KdotPVelMethod" of type "integer" in section "Linear Response::KdotP" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KPointsGrid = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KPointsGrid" of type "block" in section "Mesh::KPoints" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KPointsReduced = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KPointsReduced" of type "block" in section "Mesh::KPoints" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KPointsUseSymmetries = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "KPointsUseSymmetries" of type "logical" in section "Mesh::KPoints" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KPointsUseTimeReversal = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "KPointsUseTimeReversal" of type "logical" in section "Mesh::KPoints" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KPoints" of type "block" in section "Mesh::KPoints" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KSInversionAsymptotics = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KSInversionAsymptotics" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_KSInversionLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "KSInversionLevel" of type "integer" in section "Calculation Modes::Invert KS" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LatticeParameters = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LatticeParameters" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LatticeVectors = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LatticeVectors" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LB94_modified = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LB94_modified" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LB94_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LB94_threshold" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOAlternative = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LCAOAlternative" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOComplexYlms = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LCAOComplexYlms" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAODiagTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LCAODiagTol" of type "float" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAODimension = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LCAODimension" of type "integer" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOExtraOrbitals = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LCAOExtraOrbitals" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOKeepOrbitals = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LCAOKeepOrbitals" of type "logical" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOMaximumOrbitalRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LCAOMaximumOrbitalRadius" of type "float" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOScaleFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LCAOScaleFactor" of type "float" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LCAOStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LCAOStart" of type "integer" in section "SCF::LCAO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDBaderThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LDBaderThreshold" of type "float" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDEnd = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDEnd" of type "integer" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDExtraWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDExtraWrite" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDFilename = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDFilename" of type "string" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDFolder" of type "string" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDIonicDipole = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDIonicDipole" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDIterateFolder = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDIterateFolder" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDMultipoleLmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDMultipoleLmax" of type "integer" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDOutputFormat = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDOutputFormat" of type "flag" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDOutput" of type "flag" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDOverWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDOverWrite" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDRadiiFile = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDRadiiFile" of type "string" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDRestartFolder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDRestartFolder" of type "string" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDRestart = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDRestart" of type "logical" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDStart" of type "integer" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDStep = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LDStep" of type "integer" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDUpdate = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDUpdate" of type "logical" in section "Utilities::oct- local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LDUseAtomicRadii = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "LDUseAtomicRadii" of type "logical" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_libvdwxcDebug = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "libvdwxcDebug" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_libvdwxcMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "libvdwxcMode" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_libvdwxcVDWFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "libvdwxcVDWFactor" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LinearSolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LinearSolverMaxIter" of type "integer" in section "Linear Response::Solver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LinearSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LinearSolver" of type "integer" in section "Linear Response::Solver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LocalDomains = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LocalDomains" of type "block" in section "Utilities::oct-local_multipoles" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LocalMagneticMomentsSphereRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LocalMagneticMomentsSphereRadius" of type "float" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRConvAbsDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LRConvAbsDens" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRConvRelDens = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LRConvRelDens" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRMaximumIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LRMaximumIter" of type "integer" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRTolAdaptiveFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LRTolAdaptiveFactor" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRTolFinalTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LRTolFinalTol" of type "float" in section "Linear Response::Solver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRTolInitTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LRTolInitTol" of type "float" in section "Linear Response::Solver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRTolIterWindow = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "LRTolIterWindow" of type "float" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_LRTolScheme = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "LRTolScheme" of type "integer" in section "Linear Response::SCF in LR calculations" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Lsize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Lsize" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MagneticGaugeCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MagneticGaugeCorrection" of type "integer" in section "Linear Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MainAxis = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MainAxis" of type "block" in section "Utilities::oct- center-geom" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MassScaling = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MassScaling" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MaximumIterBerry = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MaximumIterBerry" of type "integer" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MaximumIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MaximumIter" of type "integer" in section "SCF::Convergence" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MemoryLimit = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MemoryLimit" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshBlockSize" of type "block" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshOrder" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartitionDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartitionDir" of type "string" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartitionPackage = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartitionPackage" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartitionRead = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartitionRead" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartitionStencil = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartitionStencil" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartitionVirtualSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartitionVirtualSize" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartitionWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartitionWrite" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshPartition = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MeshPartition" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MeshUseTopology = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "MeshUseTopology" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MixField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MixField" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MixingPreconditioner = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "MixingPreconditioner" of type "logical" in section "SCF::Mixing" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MixingScheme = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MixingScheme" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Mixing" of type "float" in section "SCF::Mixing" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MixInterval = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MixInterval" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MixNumberSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MixNumberSteps" of type "integer" in section "SCF::Mixing" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MomentumTransfer = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MomentumTransfer" of type "block" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MoveIons = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "MoveIons" of type "logical" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MPIDebugHook = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "MPIDebugHook" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MultigridLevels = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MultigridLevels" of type "integer" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MultiResolutionArea = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MultiResolutionArea" of type "block" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_MultiResolutionInterpolationOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "MultiResolutionInterpolationOrder" of type "integer" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NDimModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "NDimModelmb" of type "integer" in section "States::ModelMB" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NFFTCutoff = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "NFFTCutoff" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NFFTGuruInterface = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "NFFTGuruInterface" of type "logical" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NFFTOversampling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "NFFTOversampling" of type "float" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NFFTPrecompute = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "NFFTPrecompute" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NLOperatorCompactBoundaries = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "NLOperatorCompactBoundaries" of type "logical" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NParticleModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "NParticleModelmb" of type "integer" in section "States::ModelMB" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_NTypeParticleModelmb = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "NTypeParticleModelmb" of type "integer" in section "States::ModelMB" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Occupations = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Occupations" of type "block" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTCheckGradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTCheckGradient" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTClassicalTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTClassicalTarget" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTControlFunctionOmegaMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTControlFunctionOmegaMax" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTControlFunctionRepresentation = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTControlFunctionRepresentation" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTControlFunctionType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTControlFunctionType" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTCurrentFunctional = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTCurrentFunctional" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTCurrentWeight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTCurrentWeight" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTDelta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTDelta" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTDirectStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTDirectStep" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTDoubleCheck = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OCTDoubleCheck" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTDumpIntermediate = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OCTDumpIntermediate" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTEps = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTEps" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTEta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTEta" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTExcludedStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTExcludedStates" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTFilter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTFilter" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTFixFluenceTo = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTFixFluenceTo" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTFixInitialFluence = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OCTFixInitialFluence" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTHarmonicWeight = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTHarmonicWeight" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTInitialState = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTInitialState" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTInitialTransformStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTInitialTransformStates" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTInitialUserdefined = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTInitialUserdefined" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTLaserEnvelope = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTLaserEnvelope" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTLocalTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTLocalTarget" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTMaxIter" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTMomentumDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTMomentumDerivatives" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTNumberCheckPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTNumberCheckPoints" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTOptimizeHarmonicSpectrum = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTOptimizeHarmonicSpectrum" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTPenalty = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OCTPenalty" of type "float" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTPositionDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTPositionDerivatives" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTRandomInitialGuess = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OCTRandomInitialGuess" of type "logical" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTScheme = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTScheme" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTSpatialCurrWeight = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTSpatialCurrWeight" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTStartIterCurrTg = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTStartIterCurrTg" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTargetDensityFromState = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTargetDensityFromState" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTargetDensity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTargetDensity" of type "string" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTargetOperator = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTargetOperator" of type "integer" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTargetSpin = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTargetSpin" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTargetTransformStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTargetTransformStates" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTargetUserdefined = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTargetUserdefined" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTTdTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTTdTarget" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTVelocityDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTVelocityDerivatives" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OCTVelocityTarget = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OCTVelocityTarget" of type "block" in section "Calculation Modes::Optimal Control" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OEPLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OEPLevel" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OEPMixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OEPMixing" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OnlyUserDefinedInitialStates = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OnlyUserDefinedInitialStates" of type "logical" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OpenCLBenchmark = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OpenCLBenchmark" of type "logical" in section "Execution::OpenCL" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OpenCLDevice = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OpenCLDevice" of type "integer" in section "Execution::OpenCL" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OpenCLPlatform = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OpenCLPlatform" of type "integer" in section "Execution::OpenCL" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OpenSCADIsovalue = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "OpenSCADIsovalue" of type "float" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OperateComplexSingle = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OperateComplexSingle" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OperateComplex = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OperateComplex" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OperateDouble = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OperateDouble" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OperateOpenCL = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OperateOpenCL" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OperateSingle = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OperateSingle" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputBandsGnuplotMode = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OutputBandsGnuplotMode" of type "logical" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputBandsGraceMode = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OutputBandsGraceMode" of type "logical" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputDuringSCF = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "OutputDuringSCF" of type "logical" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputFormat = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OutputFormat" of type "flag" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputInterval = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OutputInterval" of type "integer" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputIterDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OutputIterDir" of type "string" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputMatrixElements = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OutputMatrixElements" of type "flag" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputMEMultipoles = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OutputMEMultipoles" of type "integer" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_OutputWfsNumber = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "OutputWfsNumber" of type "string" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Output = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Output" of type "flag" in section "Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParallelizationNumberSlaves = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ParallelizationNumberSlaves" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParallelizationOfDerivatives = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ParallelizationOfDerivatives" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParallelizationPoissonAllNodes = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ParallelizationPoissonAllNodes" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParDomains = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ParDomains" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParKPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ParKPoints" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParOther = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ParOther" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ParStates" of type "integer" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ParticleMass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ParticleMass" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PartitionPrint = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PartitionPrint" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMCalcMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PCMCalcMethod" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMCalculation = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PCMCalculation" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMCavity = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PCMCavity" of type "string" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMChargeSmearNN = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PCMChargeSmearNN" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMDynamicEpsilon = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PCMDynamicEpsilon" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMGamessBenchmark = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PCMGamessBenchmark" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMQtotTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PCMQtotTol" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMRadiusScaling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PCMRadiusScaling" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMRenormCharges = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PCMRenormCharges" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMSmearingFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PCMSmearingFactor" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMSpheresOnH = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PCMSpheresOnH" of type "logical" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMStaticEpsilon = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PCMStaticEpsilon" of type "float" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMTessSubdivider = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PCMTessSubdivider" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMUpdateIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PCMUpdateIter" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PCMVdWRadii = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PCMVdWRadii" of type "integer" in section "Hamiltonian::PCM" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PDBClassical = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PDBClassical" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PDBCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PDBCoordinates" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PDBVelocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PDBVelocities" of type "string" in section "System::Velocities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PeriodicDimensions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PeriodicDimensions" of type "integer" in section "System" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_ARPES_grid = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_ARPES_grid" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_AvoidAB = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_AvoidAB" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_BZones = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_BZones" of type "block" in section "Time- Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_DeltaK = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_DeltaK" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_EnergyGrid = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_EnergyGrid" of type "block" in section "Time- Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Gpoint_Upsample = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Gpoint_Upsample" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Kmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Kmax" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Lmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Lmax" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Lsize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Lsize" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Offset = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Offset" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Radius" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_Shape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_Shape" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_StepsPhiK = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_StepsPhiK" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_StepsPhiR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_StepsPhiR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_StepsThetaK = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_StepsThetaK" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_StepsThetaR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_StepsThetaR" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_Flux_UseMemory = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PES_Flux_UseMemory" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_DeltaOmega = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_DeltaOmega" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_OmegaMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_OmegaMax" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_points = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_points" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_Radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_Radius" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_recipe = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_recipe" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_StepsPhiR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_StepsPhiR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PES_spm_StepsThetaR = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PES_spm_StepsThetaR" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMask2PEnlargeFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PESMask2PEnlargeFactor" of type "float" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskEnlargeFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskEnlargeFactor" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskFilterCutOff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskFilterCutOff" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskIncludePsiA = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskIncludePsiA" of type "logical" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskMode" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskPlaneWaveProjection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskPlaneWaveProjection" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskShape = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskShape" of type "integer" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskSize" of type "block" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskSpectEnergyMax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskSpectEnergyMax" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskSpectEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskSpectEnergyStep" of type "float" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PESMaskStartTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PESMaskStartTime" of type "float" in section "Time- Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PhotoelectronSpectrumOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PhotoelectronSpectrumOutput" of type "flag" in section "Utilities::oct-photoelectron_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PhotoelectronSpectrumResolveStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PhotoelectronSpectrumResolveStates" of type "block" in section "Utilities::oct-photoelectron_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PhotoElectronSpectrum = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PhotoElectronSpectrum" of type "integer" in section "Time-Dependent::PhotoElectronSpectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PNFFTCutoff = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PNFFTCutoff" of type "integer" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PNFFTOversampling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PNFFTOversampling" of type "float" in section "Mesh::FFTs" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Poisson1DSoftCoulombParam = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Poisson1DSoftCoulombParam" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonCutoffRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PoissonCutoffRadius" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonFFTKernel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonFFTKernel" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverBoundaries = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverBoundaries" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverISFParallelData = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverISFParallelData" of type "logical" in section "Hamiltonian::Poisson::ISF" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMaxIter" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMaxMultipole = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMaxMultipole" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMGMaxCycles = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMGMaxCycles" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMGPostsmoothingSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMGPostsmoothingSteps" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMGPresmoothingSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMGPresmoothingSteps" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMGRelaxationFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMGRelaxationFactor" of type "float" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMGRelaxationMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMGRelaxationMethod" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverMGRestrictionMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverMGRestrictionMethod" of type "integer" in section "Hamiltonian::Poisson::Multigrid" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverNodes = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverNodes" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolverThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolverThreshold" of type "float" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PoissonSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PoissonSolver" of type "integer" in section "Hamiltonian::Poisson" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PreconditionerFilterFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PreconditionerFilterFactor" of type "float" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Preconditioner = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Preconditioner" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Preorthogonalization = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "Preorthogonalization" of type "logical" in section "Linear Response::Sternheimer" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ProfilingAllNodes = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ProfilingAllNodes" of type "logical" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ProfilingMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ProfilingMode" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumDampFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumDampFactor" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumDampMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumDampMode" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumEndTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumEndTime" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumEnergyStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumEnergyStep" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumMaxEnergy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumMaxEnergy" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumSigmaDiagonalization = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumSigmaDiagonalization" of type "logical" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumStartTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumStartTime" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumTransform = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumTransform" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PropagationSpectrumType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PropagationSpectrumType" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_PseudopotentialSet = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "PseudopotentialSet" of type "integer" in section "System::Species" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Radius" of type "float" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RandomVelocityTemp = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RandomVelocityTemp" of type "float" in section "System::Velocities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RashbaSpinOrbitCoupling = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RashbaSpinOrbitCoupling" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RDMConvEner = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RDMConvEner" of type "float" in section "SCF::RDMFT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RDMTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RDMTolerance" of type "float" in section "SCF::RDMFT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RecalculateGSDuringEvolution = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "RecalculateGSDuringEvolution" of type "logical" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ReducedCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ReducedCoordinates" of type "block" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RelativisticCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "RelativisticCorrection" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ReportMemory = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ReportMemory" of type "logical" in section "Execution::Debug" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ResponseMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "ResponseMethod" of type "integer" in section "Linear Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RestartFixedOccupations = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "RestartFixedOccupations" of type "logical" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RestartOptions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "RestartOptions" of type "block" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RestartReorderOccs = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "RestartReorderOccs" of type "logical" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RestartWriteInterval = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "RestartWriteInterval" of type "integer" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RestartWrite = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "RestartWrite" of type "logical" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RootSolverAbsTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RootSolverAbsTolerance" of type "float" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RootSolverHavePolynomial = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "RootSolverHavePolynomial" of type "logical" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RootSolverMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "RootSolverMaxIter" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RootSolverRelTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RootSolverRelTolerance" of type "float" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RootSolverWSRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "RootSolverWSRadius" of type "float" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_RootSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "RootSolver" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ScaLAPACKCompatible = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "ScaLAPACKCompatible" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCDM_EXX = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SCDM_EXX" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCDM_verbose = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SCDM_verbose" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCDMCutoffRadius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "SCDMCutoffRadius" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCFCalculateDipole = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SCFCalculateDipole" of type "logical" in section "SCF" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCFCalculateForces = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SCFCalculateForces" of type "logical" in section "SCF" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCFCalculatePartialCharges = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SCFCalculatePartialCharges" of type "logical" in section "SCF" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SCFinLCAO = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SCFinLCAO" of type "logical" in section "SCF" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SICCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SICCorrection" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SmearingFunction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SmearingFunction" of type "integer" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SmearingMPOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SmearingMPOrder" of type "integer" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Smearing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Smearing" of type "float" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SOStrength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "SOStrength" of type "float" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Spacing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Spacing" of type "float" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITAbsTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITAbsTolerance" of type "float" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITIterOut = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITIterOut" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITKrylovSubspaceSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITKrylovSubspaceSize" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITMaxIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITMaxIter" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITRelTolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITRelTolerance" of type "float" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITSolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITSolver" of type "integer" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SPARSKITVerboseSolver = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SPARSKITVerboseSolver" of type "logical" in section "Math::SPARSKIT" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SpeciesProjectorSphereThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "SpeciesProjectorSphereThreshold" of type "float" in section "System::Species" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SpeciesTimeDependent = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SpeciesTimeDependent" of type "logical" in section "System::Species" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Species = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Species" of type "block" in section "System::Species" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SpectrumMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SpectrumMethod" of type "integer" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SpectrumSignalNoise = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "SpectrumSignalNoise" of type "float" in section "Utilities::oct-propagation_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SpinComponents = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SpinComponents" of type "integer" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Splines = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Splines" of type "integer" in section "Execution" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StatesBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "StatesBlockSize" of type "integer" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StatesCLDeviceMemory = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "StatesCLDeviceMemory" of type "float" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StatesOrthogonalization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "StatesOrthogonalization" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StatesPack = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "StatesPack" of type "logical" in section "Execution::Optimization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StaticElectricField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "StaticElectricField" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StaticMagneticField2DGauge = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "StaticMagneticField2DGauge" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_StaticMagneticField = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "StaticMagneticField" of type "block" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_stderr = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "stderr" of type "string" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_stdout = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "stdout" of type "string" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SubspaceDiagonalization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SubspaceDiagonalization" of type "integer" in section "SCF::Eigensolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SubSystemCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SubSystemCoordinates" of type "block" in section "System::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SubSystems = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SubSystems" of type "block" in section "System::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SymmetriesCompute = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SymmetriesCompute" of type "logical" in section "Execution::Symmetries" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SymmetrizeDensity = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SymmetrizeDensity" of type "logical" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SymmetrizeDynamicalMatrix = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "SymmetrizeDynamicalMatrix" of type "logical" in section "Linear Response::Vibrational Modes" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_SymmetryBreakDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "SymmetryBreakDir" of type "block" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDDeltaKickTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDDeltaKickTime" of type "float" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDDeltaStrengthMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDDeltaStrengthMode" of type "integer" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDDeltaStrength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDDeltaStrength" of type "float" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDDeltaUserDefined = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDDeltaUserDefined" of type "string" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDDynamics = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDDynamics" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDEnergyUpdateIter = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDEnergyUpdateIter" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDExcitedStatesToProject = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDExcitedStatesToProject" of type "block" in section "Time-Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDExponentialMethod = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDExponentialMethod" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDExpOrder = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDExpOrder" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDExternalFields = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDExternalFields" of type "block" in section "Time- Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDFloquetDimension = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDFloquetDimension" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDFloquetFrequency = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDFloquetFrequency" of type "float" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDFloquetSample = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDFloquetSample" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDFreezeHXC = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "TDFreezeHXC" of type "logical" in section "Time- Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDFreezeOrbitals = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDFreezeOrbitals" of type "integer" in section "Time- Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDFunctions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDFunctions" of type "block" in section "Time-Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDGlobalForce = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDGlobalForce" of type "string" in section "Time- Dependent" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDIonicTimeScale = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDIonicTimeScale" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDKickFunction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDKickFunction" of type "block" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDLanczosTol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDLanczosTol" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDMaxSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDMaxSteps" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDMomentumTransfer = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDMomentumTransfer" of type "block" in section "Time- Dependent::Response" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDMultipoleLmax = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDMultipoleLmax" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDOutput" of type "flag" in section "Time-Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDPolarizationDirection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDPolarizationDirection" of type "integer" in section "Time-Dependent::Response::Dipole" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDPolarizationEquivAxes = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDPolarizationEquivAxes" of type "integer" in section "Time-Dependent::Response::Dipole" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDPolarizationWprime = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDPolarizationWprime" of type "block" in section "Time- Dependent::Response::Dipole" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDPolarization = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDPolarization" of type "block" in section "Time- Dependent::Response::Dipole" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDProjStateStart = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDProjStateStart" of type "integer" in section "Time- Dependent::TD Output" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDPropagationTime = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDPropagationTime" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDPropagator = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDPropagator" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDSCFThreshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDSCFThreshold" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDStepsWithSelfConsistency = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TDStepsWithSelfConsistency" of type "integer" in section "Time-Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TDTimeStep = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TDTimeStep" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TemperatureFunction = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TemperatureFunction" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TestMaxBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TestMaxBlockSize" of type "integer" in section "Utilities::oct-test" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TestMinBlockSize = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TestMinBlockSize" of type "integer" in section "Utilities::oct-test" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TestMode = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TestMode" of type "integer" in section "Utilities::oct- test" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TestRepetitions = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TestRepetitions" of type "integer" in section "Utilities::oct-test" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TestType = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TestType" of type "integer" in section "Utilities::oct- test" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TheoryLevel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TheoryLevel" of type "integer" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_ThermostatMass = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "ThermostatMass" of type "float" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Thermostat = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Thermostat" of type "integer" in section "Time- Dependent::Propagation" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TimeZero = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "TimeZero" of type "logical" in section "Hamiltonian" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TnaddFactor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "TnaddFactor" of type "float" in section "Hamiltonian::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TnaddFunctional = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TnaddFunctional" of type "integer" in section "Hamiltonian::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TnaddPolarized = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "TnaddPolarized" of type "logical" in section "Hamiltonian::Subsystems" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TotalStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TotalStates" of type "integer" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_TransformStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "TransformStates" of type "block" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_UnitsInput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "UnitsInput" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_UnitsOutput = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "UnitsOutput" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_UnitsXYZFiles = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "UnitsXYZFiles" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Units = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Units" of type "integer" in section "Execution::Units" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_UnoccShowOccStates = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "UnoccShowOccStates" of type "logical" in section "Calculation Modes::Unoccupied States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_UseFineMesh = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "UseFineMesh" of type "logical" in section "Mesh" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_UserDefinedStates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "UserDefinedStates" of type "block" in section "States" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_VDWCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "VDWCorrection" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_vdWNPoints = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "vdWNPoints" of type "integer" in section "Linear Response::Polarizabilities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_VDWSelfConsistent = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "VDWSelfConsistent" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Velocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "Velocities" of type "block" in section "System::Velocities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_VibrationalSpectrumTimeStepFactor = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "VibrationalSpectrumTimeStepFactor" of type "integer" in section "Utilities::oct-vibrational_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_VibrationalSpectrumTime = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "VibrationalSpectrumTime" of type "integer" in section "Utilities::oct-vibrational_spectrum" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_WatterstromODESolverNSteps = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "WatterstromODESolverNSteps" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_WatterstromODESolver = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "WatterstromODESolver" of type "integer" in section "Math::RootSolver" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_WorkDir = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "WorkDir" of type "string" in section "Execution::IO" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Xalpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Xalpha" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCDensityCorrectionCutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "XCDensityCorrectionCutoff" of type "float" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCDensityCorrectionMinimum = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "XCDensityCorrectionMinimum" of type "logical" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCDensityCorrectionNormalize = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "XCDensityCorrectionNormalize" of type "logical" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCDensityCorrectionOptimize = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "XCDensityCorrectionOptimize" of type "logical" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCDensityCorrection = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XCDensityCorrection" of type "integer" in section "Hamiltonian::XC::DensityCorrection" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCFunctional = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XCFunctional" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCKernelLRCAlpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "XCKernelLRCAlpha" of type "float" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCKernel = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XCKernel" of type "integer" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCParallel = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "XCParallel" of type "logical" in section "Execution::Parallelization" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XCUseGaugeIndependentKED = Quantity( type=bool, shape=[], - description=''' + description=""" Octopus parser log entry "XCUseGaugeIndependentKED" of type "logical" in section "Hamiltonian::XC" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_Xlength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Octopus parser log entry "Xlength" of type "float" in section "Mesh::Simulation Box" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XSFCoordinatesAnimStep = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XSFCoordinatesAnimStep" of type "integer" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XSFCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XSFCoordinates" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XSFVelocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XSFVelocities" of type "string" in section "System::Velocities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XYZCoordinates = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XYZCoordinates" of type "string" in section "System::Coordinates" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) x_octopus_parserlog_XYZVelocities = Quantity( type=str, shape=[], - description=''' + description=""" Octopus parser log entry "XYZVelocities" of type "string" in section "System::Velocities" - ''', - categories=[x_octopus_parserlog]) + """, + categories=[x_octopus_parserlog], + ) diff --git a/electronicparsers/octopus/parser.py b/electronicparsers/octopus/parser.py index 7e34af8a..8d54726f 100644 --- a/electronicparsers/octopus/parser.py +++ b/electronicparsers/octopus/parser.py @@ -10,19 +10,30 @@ from nomad.parsing.file_parser import TextParser, Quantity from runschema.run import Run, Program from runschema.method import ( - Electronic, Functional, Smearing, Method, DFT, BasisSet, BasisSetContainer, - XCFunctional, KMesh -) -from runschema.system import ( - System, Atoms + Electronic, + Functional, + Smearing, + Method, + DFT, + BasisSet, + BasisSetContainer, + XCFunctional, + KMesh, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, ScfIteration, Energy, EnergyEntry, Forces, ForcesEntry, BandEnergies + Calculation, + ScfIteration, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + BandEnergies, ) from simulationworkflowschema import GeometryOptimization -re_float = r'[\d\.\-\+Ee]+' +re_float = r"[\d\.\-\+Ee]+" class EigenvalueParser(TextParser): @@ -31,8 +42,12 @@ def __init__(self): def init_quantities(self): def str_to_eigenvalues(val_in): - val = [v.split() for v in val_in.strip().split('\n')] - kpoint = [0., 0., 0.] if val[0][0] == '#st' else [float(v.rstrip(',')) for v in val[0]] + val = [v.split() for v in val_in.strip().split("\n")] + kpoint = ( + [0.0, 0.0, 0.0] + if val[0][0] == "#st" + else [float(v.rstrip(",")) for v in val[0]] + ) if len(val) == 1: return eigenvalues = np.array([[v[0], v[2], v[3]] for v in val[1:]], dtype=float) @@ -45,24 +60,38 @@ def str_to_eigenvalues(val_in): def str_to_fermi_energy(val_in): val = val_in.split() - unit = ureg.eV if val[1].startswith('e') else ureg.hartree + unit = ureg.eV if val[1].startswith("e") else ureg.hartree return float(val[0]) * unit - self._quantities = [Quantity( - 'eigenvalues', - r'(Eigenvalues \[[\s\S]+?)(?:\n\n|\Z)', sub_parser=TextParser(quantities=[ - Quantity( - 'eigenvalues', - r'(?:(#st)\s*Spin\s*Eigenvalue\s*Occupation|#k =\s*\d+, k = \(([\-\d\.,\s]+)\))([\d\s\.\-updn]+)', - str_operation=str_to_eigenvalues, repeats=True, convert=False), - Quantity( - 'unit', - r'Eigenvalues \[(.*)\]', convert=False, - str_operation=lambda x: 'eV' if x == 'eV' else 'hartree'), - Quantity( - 'fermi_energy', - rf'Fermi energy =\s*({re_float} .*)', - convert=False, str_operation=str_to_fermi_energy)]))] + self._quantities = [ + Quantity( + "eigenvalues", + r"(Eigenvalues \[[\s\S]+?)(?:\n\n|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "eigenvalues", + r"(?:(#st)\s*Spin\s*Eigenvalue\s*Occupation|#k =\s*\d+, k = \(([\-\d\.,\s]+)\))([\d\s\.\-updn]+)", + str_operation=str_to_eigenvalues, + repeats=True, + convert=False, + ), + Quantity( + "unit", + r"Eigenvalues \[(.*)\]", + convert=False, + str_operation=lambda x: "eV" if x == "eV" else "hartree", + ), + Quantity( + "fermi_energy", + rf"Fermi energy =\s*({re_float} .*)", + convert=False, + str_operation=str_to_fermi_energy, + ), + ] + ), + ) + ] class InfoParser(EigenvalueParser): @@ -70,73 +99,107 @@ def __init__(self): super().__init__() def init_quantities(self): - def str_to_energies(val_in): - val = [v.split('=') for v in val_in.strip().split('\n')] - unit = ureg.eV if '[eV]:' in val[0] else ureg.hartree + val = [v.split("=") for v in val_in.strip().split("\n")] + unit = ureg.eV if "[eV]:" in val[0] else ureg.hartree return {v[0].strip(): float(v[1]) * unit for v in val if len(v) == 2} def str_to_forces(val_in): - val = [v.split() for v in val_in.strip().split('\n')] - unit = ureg.eV / ureg.angstrom if '[eV/A]' in val[0] else ureg.hartree / ureg.bohr + val = [v.split() for v in val_in.strip().split("\n")] + unit = ( + ureg.eV / ureg.angstrom + if "[eV/A]" in val[0] + else ureg.hartree / ureg.bohr + ) return np.array([v[2:5] for v in val if len(v) == 5], dtype=float) * unit super().init_quantities() self._quantities += [ Quantity( - 'brillouin_zone_sampling', - r'Brillouin zone sampling([\s\S]+?)\*+\n\n', sub_parser=TextParser(quantities=[ - Quantity( - 'kgrid', - r'Dimensions of the k\-point grid\s*=(.*)', dtype=int), - Quantity( - 'n_kpoints', r'Total number of k\-points\s*=(.*)', dtype=int), - Quantity( - 'n_kpoints_reduced', - r'Number of symmetry-reduced k\-points\s*=(.*)', dtype=int), - Quantity( - 'kpoints', - rf'\d+\s*({re_float})\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float, repeats=True)])), + "brillouin_zone_sampling", + r"Brillouin zone sampling([\s\S]+?)\*+\n\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "kgrid", + r"Dimensions of the k\-point grid\s*=(.*)", + dtype=int, + ), + Quantity( + "n_kpoints", r"Total number of k\-points\s*=(.*)", dtype=int + ), + Quantity( + "n_kpoints_reduced", + r"Number of symmetry-reduced k\-points\s*=(.*)", + dtype=int, + ), + Quantity( + "kpoints", + rf"\d+\s*({re_float})\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + repeats=True, + ), + ] + ), + ), Quantity( - 'energies', - r'Energy (\[[\s\S]+?)\n\n', str_operation=str_to_energies), + "energies", r"Energy (\[[\s\S]+?)\n\n", str_operation=str_to_energies + ), Quantity( - 'total_magnetic_moment', - rf'Total Magnetic Moment:\s*mz\s*=\s*({re_float})'), + "total_magnetic_moment", + rf"Total Magnetic Moment:\s*mz\s*=\s*({re_float})", + ), Quantity( - 'local_magnetic_moments', - r'Ion\s*mz\s*([\w\s\.\-]+?)\n\n', convert=False, + "local_magnetic_moments", + r"Ion\s*mz\s*([\w\s\.\-]+?)\n\n", + convert=False, str_operation=lambda x: np.array( - [v.split()[2] for v in x.strip().split('\n')], dtype=float)), + [v.split()[2] for v in x.strip().split("\n")], dtype=float + ), + ), Quantity( - 'dipole', - rf'Dipole:.*\[Debye\]\s* =\s*\S+\s*({re_float})\s*' - rf' =\s*\S+\s*({re_float})\s* =\s*\S+\s*({re_float})', dtype=float), + "dipole", + rf"Dipole:.*\[Debye\]\s* =\s*\S+\s*({re_float})\s*" + rf" =\s*\S+\s*({re_float})\s* =\s*\S+\s*({re_float})", + dtype=float, + ), Quantity( - 'forces', - r'Forces on the ions (\[.*\]\s*)Ion\s*x\s*y\s*z\s*([\s\S]*)', - str_operation=str_to_forces, convert=False)] + "forces", + r"Forces on the ions (\[.*\]\s*)Ion\s*x\s*y\s*z\s*([\s\S]*)", + str_operation=str_to_forces, + convert=False, + ), + ] class ControlParser(TextParser): def __init__(self): super().__init__() self._constants = { - 'pi': np.pi, 'angstrom': 1. / ase_units.Bohr, 'ev': 1. / ase_units.Hartree, - 'yes': True, 'no': False, 't': True, 'f': False, 'true': True, 'false': False, - 'i': 1j} - self._re_sqrt = re.compile(r'sqrt([\w\. ]+\Z)') + "pi": np.pi, + "angstrom": 1.0 / ase_units.Bohr, + "ev": 1.0 / ase_units.Hartree, + "yes": True, + "no": False, + "t": True, + "f": False, + "true": True, + "false": False, + "i": 1j, + } + self._re_sqrt = re.compile(r"sqrt([\w\. ]+\Z)") self._info = None def init_quantities(self): def str_to_line(val_in): - val = val_in.replace('"', '').replace("'", '').split('=', 1) - return [v.strip().split('#')[0] for v in val] + val = val_in.replace('"', "").replace("'", "").split("=", 1) + return [v.strip().split("#")[0] for v in val] self._quantities = [ Quantity( - 'line', r'(\w.*\s*=\s*.*)#?', str_operation=str_to_line, repeats=True)] + "line", r"(\w.*\s*=\s*.*)#?", str_operation=str_to_line, repeats=True + ) + ] @property def mainfile(self): @@ -167,7 +230,7 @@ def evaluate_value(self, value): pass value = value.strip() - if value == '': + if value == "": return 1 val = self._constants.get(value.lower(), None) @@ -178,16 +241,16 @@ def evaluate_value(self, value): if val is not None: return val - open_p = value.rfind('(') + open_p = value.rfind("(") if open_p > -1: - n_groups = value.count('(') - if n_groups != value.count(')'): + n_groups = value.count("(") + if n_groups != value.count(")"): return value for _ in range(n_groups): - part = value[open_p + 1:] - part = part[:part.find(')')] - value = value.replace('(%s)' % part, str(self.evaluate_value(part))) - open_p = value.rfind('(') + part = value[open_p + 1 :] + part = part[: part.find(")")] + value = value.replace("(%s)" % part, str(self.evaluate_value(part))) + open_p = value.rfind("(") return self.evaluate_value(value) sqrt = self._re_sqrt.match(value) @@ -195,20 +258,20 @@ def evaluate_value(self, value): val = self.evaluate_value(sqrt.group(1)) return np.sqrt(val) - vals = value.split('**') + vals = value.split("**") if len(vals) > 1: vals = [self.evaluate_value(v) for v in vals] val = vals[0] for v in reversed(vals[1:]): - val = val ** v + val = val**v return val - vals = value.split('*') + vals = value.split("*") if len(vals) > 1: vals = [self.evaluate_value(v) for v in vals] return np.product(vals) - vals = value.split('/') + vals = value.split("/") if len(vals) > 1: vals = [self.evaluate_value(v) for v in vals] val = vals[0] @@ -216,16 +279,16 @@ def evaluate_value(self, value): val /= v return val - if '+' in value: - vals = value.split('+') + if "+" in value: + vals = value.split("+") vals = [self.evaluate_value(v) for v in vals] val = 0.0 for v in vals: val += v return val - if '-' in value: - vals = value.split('-') + if "-" in value: + vals = value.split("-") vals = [self.evaluate_value(v) for v in vals] val = 0.0 for v in vals: @@ -237,8 +300,8 @@ def evaluate_value(self, value): @property def info(self): if self._info is None: - self._info = {v[0].strip(): v[1] for v in self.get('line', [])} - self._info.update({v[0].strip(): v[1:] for v in self.get('block', [])}) + self._info = {v[0].strip(): v[1] for v in self.get("line", [])} + self._info.update({v[0].strip(): v[1:] for v in self.get("block", [])}) self._keys_mapping = {k.lower(): k for k in self._info.keys()} for key, val in self._info.items(): try: @@ -256,20 +319,18 @@ def __init__(self): def init_quantities(self): def str_to_block(val_in): - val = [v.split('#')[0] for v in val_in.strip().split('\n')] - val = [ - v.replace('"', '').replace("'", '').split('|') - for v in val if v] + val = [v.split("#")[0] for v in val_in.strip().split("\n")] + val = [v.replace('"', "").replace("'", "").split("|") for v in val if v] val[0] = val[0][0] return val super().init_quantities() self._quantities += [ - Quantity( - 'block', r'%([\s\S]+?)%', repeats=True, str_operation=str_to_block)] + Quantity("block", r"%([\s\S]+?)%", repeats=True, str_operation=str_to_block) + ] def get_coordinates(self): - val = self.info.get('Coordinates', self.info.get('ReducedCoordinates', [])) + val = self.info.get("Coordinates", self.info.get("ReducedCoordinates", [])) symbols = [] coordinates = [] @@ -288,23 +349,29 @@ def __init__(self): def init_quantities(self): def str_to_block(val_in): - val = val_in.strip().split('\n') - name = val[0].strip().replace('"', '').replace("'", '') - val = [v.split('#')[0].split('=')[1].replace('"', '').replace("'", '').strip() for v in val[1:]] + val = val_in.strip().split("\n") + name = val[0].strip().replace('"', "").replace("'", "") + val = [ + v.split("#")[0].split("=")[1].replace('"', "").replace("'", "").strip() + for v in val[1:] + ] return [name, val] super().init_quantities() self._quantities += [ Quantity( - 'block', - r'Opened block([\s\S]+?)Closed block', - repeats=True, str_operation=str_to_block)] + "block", + r"Opened block([\s\S]+?)Closed block", + repeats=True, + str_operation=str_to_block, + ) + ] def get_coordinates(self): symbols = [] coordinates = [] - val = self.info.get('Coordinates', self.info.get('ReducedCoordinates', [[]]))[0] + val = self.info.get("Coordinates", self.info.get("ReducedCoordinates", [[]]))[0] for v in val: if isinstance(v, str): @@ -324,99 +391,158 @@ def __init__(self): def init_quantities(self): def str_to_option(val_in): - val = val_in.strip().split(':') - return [val[0].strip(), ''.join(val[1:]).strip()] + val = val_in.strip().split(":") + return [val[0].strip(), "".join(val[1:]).strip()] def str_to_cell(val_in): - unit = ureg.angstrom if val_in.lower().startswith('a') else ureg.bohr - val = [v.split() for v in val_in.strip().split('\n')[1:]] + unit = ureg.angstrom if val_in.lower().startswith("a") else ureg.bohr + val = [v.split() for v in val_in.strip().split("\n")[1:]] return np.array(val, dtype=float) * unit def str_to_spacing(val_in): - unit = ureg.angstrom if val_in.startswith('A') else ureg.bohr + unit = ureg.angstrom if val_in.startswith("A") else ureg.bohr return np.array(val_in.split()[1:4], dtype=float) * unit def str_to_energy(val_in): val = val_in.split() - unit = ureg.eV if val[1].startswith('e') else ureg.hartree + unit = ureg.eV if val[1].startswith("e") else ureg.hartree return float(val[0]) * unit def str_to_td_iteration(val_in): val = val_in.strip().split() return dict( - iter=int(val[0]), time=float(val[1]), energy=float(val[2]), - scfsteps=int(val[3]), elapsed_time=float(val[4])) + iter=int(val[0]), + time=float(val[1]), + energy=float(val[2]), + scfsteps=int(val[3]), + elapsed_time=float(val[4]), + ) iteration_quantities = [ - Quantity('energy_total', rf'etot\s*=\s*({re_float})'), + Quantity("energy_total", rf"etot\s*=\s*({re_float})"), # TODO scf_iteration eigenvalues are sometimes truncated and unusable Quantity( - 'fermi_level', rf'Fermi energy\s*=\s*({re_float} .*)', - str_operation=str_to_energy, convert=False), + "fermi_level", + rf"Fermi energy\s*=\s*({re_float} .*)", + str_operation=str_to_energy, + convert=False, + ), Quantity( - 'time', - r'Elapsed time for SCF step\s*\d+:\s*([\d\.]+)', unit='s', dtype=float)] + "time", + r"Elapsed time for SCF step\s*\d+:\s*([\d\.]+)", + unit="s", + dtype=float, + ), + ] self._quantities = [ Quantity( - 'header', - r'Running octopus([\s\S]+?)\*{10}', sub_parser=TextParser(quantities=[ - Quantity( - 'options', - r'\n *([\w ]+?\s*:\s*.*)', str_operation=str_to_option, repeats=True), - ])), + "header", + r"Running octopus([\s\S]+?)\*{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "options", + r"\n *([\w ]+?\s*:\s*.*)", + str_operation=str_to_option, + repeats=True, + ), + ] + ), + ), Quantity( - 'grid', - r'\*\s*Grid\s*\*+\s*([\s\S]+?)\*{10}', sub_parser=TextParser(quantities=[ - Quantity('boxshape', r'Type\s*=\s*(.*)'), - Quantity( - 'npbc', - r'Octopus will treat the system as periodic in (\S+) dim', dtype=int), - Quantity( - 'cell', - r'Lattice Vectors \[(.*)\]([-\d\s\.]+)', - str_operation=str_to_cell, convert=False), - Quantity( - 'spacing', - r'Spacing \[(.*)\] = \(\s*(\S+), (\S+), (\S+)\s*\)', - str_operation=str_to_spacing, convert=False)])), + "grid", + r"\*\s*Grid\s*\*+\s*([\s\S]+?)\*{10}", + sub_parser=TextParser( + quantities=[ + Quantity("boxshape", r"Type\s*=\s*(.*)"), + Quantity( + "npbc", + r"Octopus will treat the system as periodic in (\S+) dim", + dtype=int, + ), + Quantity( + "cell", + r"Lattice Vectors \[(.*)\]([-\d\s\.]+)", + str_operation=str_to_cell, + convert=False, + ), + Quantity( + "spacing", + r"Spacing \[(.*)\] = \(\s*(\S+), (\S+), (\S+)\s*\)", + str_operation=str_to_spacing, + convert=False, + ), + ] + ), + ), Quantity( - 'theory_level', - r'\*\s*Theory Level\s*\*+\s*([\s\S]+?)\*{10}', sub_parser=TextParser(quantities=[ - Quantity('theory_level', r'\[TheoryLevel = (.+)\]', flatten=False), - Quantity('exchange', r'Exchange\s+(.*) \(', flatten=False), - Quantity('correlation', r'Correlation\s+(.*) \(', flatten=False) - ]) + "theory_level", + r"\*\s*Theory Level\s*\*+\s*([\s\S]+?)\*{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "theory_level", r"\[TheoryLevel = (.+)\]", flatten=False + ), + Quantity("exchange", r"Exchange\s+(.*) \(", flatten=False), + Quantity( + "correlation", r"Correlation\s+(.*) \(", flatten=False + ), + ] + ), ), Quantity( - 'self_consistent', - r'Info: Starting SCF iteration\.\s*([\s\S]+?)Info: SCF', repeats=True, - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - r'SCF CYCLE ITER #\s*(\d+\s*\*+[\s\S]+?)\*{10}', repeats=True, - sub_parser=TextParser(quantities=iteration_quantities))])), + "self_consistent", + r"Info: Starting SCF iteration\.\s*([\s\S]+?)Info: SCF", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + r"SCF CYCLE ITER #\s*(\d+\s*\*+[\s\S]+?)\*{10}", + repeats=True, + sub_parser=TextParser(quantities=iteration_quantities), + ) + ] + ), + ), Quantity( - 'time_dependent', - r'Time\-Dependent Simulation \*+([\s\S]+?)Info: Finished writing information', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - rf'\n *(\d+\s*{re_float}\s*{re_float}\s*\d+\s*{re_float}) *\n', - str_operation=str_to_td_iteration, repeats=True, convert=False)]) + "time_dependent", + r"Time\-Dependent Simulation \*+([\s\S]+?)Info: Finished writing information", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"\n *(\d+\s*{re_float}\s*{re_float}\s*\d+\s*{re_float}) *\n", + str_operation=str_to_td_iteration, + repeats=True, + convert=False, + ) + ] + ), ), Quantity( - 'x_octopus_info_scf_converged_iterations', - r'SCF converged in\s*(\d+) iterations', dtype=int), + "x_octopus_info_scf_converged_iterations", + r"SCF converged in\s*(\d+) iterations", + dtype=int, + ), Quantity( - 'minimization', - r'(MINIMIZATION ITER #:\s*\d+\s*\++\s*Energy[\s\S]+?\+{10})', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'energy_total', rf'Energy\s*=\s*({re_float} .*)', - str_operation=str_to_energy, convert=False), - Quantity( - 'number', r'ITER #:\s*(\d+)', dtype=int)])) + "minimization", + r"(MINIMIZATION ITER #:\s*\d+\s*\++\s*Energy[\s\S]+?\+{10})", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_total", + rf"Energy\s*=\s*({re_float} .*)", + str_operation=str_to_energy, + convert=False, + ), + Quantity("number", r"ITER #:\s*(\d+)", dtype=int), + ] + ), + ), # calculation results are not printed in outfile but in info ] @@ -424,7 +550,7 @@ def str_to_td_iteration(val_in): @property def header(self): - return {k: v for k, v in self.get('header', {}).get('options', [])} + return {k: v for k, v in self.get("header", {}).get("options", [])} class OctopusParser: @@ -438,26 +564,49 @@ def __init__(self): self._info = None self._metainfo_keys_mapping = { - 'Total': 'energy_total', 'Free': 'energy_free', 'Ion-ion': 'energy_nuclear_repulsion', - 'Eigenvalues': 'energy_sum_eigenvalues', 'Hartree': 'energy_electrostatic', - 'Exchange': 'energy_exchange', 'Correlation': 'energy_correlation', 'vanderWaals': 'energy_van_der_Waals', - '-TS': 'energy_correction_entropy', 'Kinetic': 'energy_kinetic_electronic', - 'SpinComponents': 'n_spin_channels', 'ExcessCharge': 'charge'} + "Total": "energy_total", + "Free": "energy_free", + "Ion-ion": "energy_nuclear_repulsion", + "Eigenvalues": "energy_sum_eigenvalues", + "Hartree": "energy_electrostatic", + "Exchange": "energy_exchange", + "Correlation": "energy_correlation", + "vanderWaals": "energy_van_der_Waals", + "-TS": "energy_correction_entropy", + "Kinetic": "energy_kinetic_electronic", + "SpinComponents": "n_spin_channels", + "ExcessCharge": "charge", + } # TODO metainfo smearing_kind should be extended to cover all functions, # e.g. gaussian and spline are not the same self._smearing_functions = { - 1: 'empty', 2: 'fermi', 3: 'marzari-vanderbilt', 4: 'methfessel_paxton', - 5: 'gaussian', 'semiconducting': 'empty', 'spline_smearing': 'gaussian', - 'fermi_dirac': 'fermi', 'cold_smearing': 'marzari-vanderbilt', - 'methfessel_paxton': 'methfessel-paxton'} + 1: "empty", + 2: "fermi", + 3: "marzari-vanderbilt", + 4: "methfessel_paxton", + 5: "gaussian", + "semiconducting": "empty", + "spline_smearing": "gaussian", + "fermi_dirac": "fermi", + "cold_smearing": "marzari-vanderbilt", + "methfessel_paxton": "methfessel-paxton", + } # TODO metainfo electronic_structure_method should be extended to cover all these # HF is not DFT but nomad treats it this way self._theory_levels = { - 1: 'DFT', 2: None, 3: 'DFT', 4: 'DFT', 5: None, 'hartree': 'DFT', - 'independent_particles': None, 'hartree_fock': 'DFT', 'dft': 'DFT', - 'classical': None} + 1: "DFT", + 2: None, + 3: "DFT", + 4: "DFT", + 5: None, + "hartree": "DFT", + "independent_particles": None, + "hartree_fock": "DFT", + "dft": "DFT", + "classical": None, + } # List was generated from https://github.com/qsnake/octopus/blob/master/share/varinfo # In parser.log, XCFunctional is an integer given as a sum of exchange @@ -469,154 +618,195 @@ def __init__(self): # in parser.log. # TODO resolve solely from the integer value self._xc_functionals = { - 'Exchange': ('lda_x', 1), - 'Wigner parametrization': ('lda_c_wigner', 2000), - 'Random Phase Approximation': ('lda_c_rpa', 3000), - 'Hedin & Lundqvist': ('lda_c_hl', 4000), - 'Gunnarson & Lundqvist': ('lda_c_gl', 5000), - 'Slater Xalpha': ('lda_c_xalpha', 6000), - 'Vosko, Wilk, & Nussair': ('lda_c_vwn', 7000), - 'Vosko, Wilk, & Nussair (RPA)': ('lda_c_vwn_rpa', 8000), - 'Perdew & Zunger': ('lda_c_pz', 9000), - 'Perdew & Zunger (Modified)': ('lda_c_pz_mod', 10000), - 'Ortiz & Ballone (PZ)': ('lda_c_ob_pz', 11000), - 'Perdew & Wang': ('lda_c_pw', 12000), - 'Perdew & Wang (Modified)': ('lda_c_pw_mod', 13000), - 'Ortiz & Ballone (PW)': ('lda_c_ob_pw', 14000), - 'Attacalite et al': ('lda_c_2d_amgb', 15000), - 'Pittalis, Rasanen & Marques correlation in 2D': ('lda_c_2d_prm', 16000), - 'von Barth & Hedin': ('lda_c_vbh', 17000), - 'Casula, Sorella, and Senatore 1D correlation': ('lda_c_1d_csc', 18000), - 'Exchange in 2D': ('lda_x_2d', 19), - 'Teter 93 parametrization': ('lda_xc_teter93', 20000), - 'Exchange in 1D': ('lda_x_1d', 21), - 'Modified LSD (version 1) of Proynov and Salahub': ('lda_c_ml1', 22000), - 'Modified LSD (version 2) of Proynov and Salahub': ('lda_c_ml2', 23000), - 'Gombas parametrization': ('lda_c_gombas', 24000), - 'Thomas-Fermi kinetic energy functional': ('lda_k_tf', 50), - 'Lee and Parr Gaussian ansatz': ('lda_k_lp', 51), - 'Perdew, Burke & Ernzerhof exchange': ('gga_x_pbe', 101), - 'Perdew, Burke & Ernzerhof exchange (revised)': ('gga_x_pbe_r', 102), - 'Becke 86 Xalfa,beta,gamma': ('gga_x_2d_b86', 128), - 'Herman et al original GGA': ('gga_x_herman', 104), - 'Becke 86 Xalfa,beta,gamma (with mod. grad. correction)': ('gga_x_b86_mgc', 105), - 'Becke 88': ('gga_x_b88', 106), - 'Gill 96': ('gga_x_g96', 107), - 'Perdew & Wang 86': ('gga_x_pw86', 108), - 'Perdew & Wang 91': ('gga_c_pw91', 134000), - 'Handy & Cohen OPTX 01': ('gga_x_optx', 110), - 'dePristo & Kress 87 (version R1)': ('gga_x_dk87_r1', 111), - 'dePristo & Kress 87 (version R2)': ('gga_x_dk87_r2', 112), - 'Lacks & Gordon 93': ('gga_x_lg93', 113), - 'Filatov & Thiel 97 (version A)': ('gga_x_ft97_a', 114), - 'Filatov & Thiel 97 (version B)': ('gga_x_ft97_b', 115), - 'Perdew, Burke & Ernzerhof exchange (solids)': ('gga_x_pbe_sol', 116), - 'Hammer, Hansen & Norskov (PBE-like)': ('gga_x_rpbe', 117), - 'Wu & Cohen': ('gga_x_wc', 118), - 'Modified form of PW91 by Adamo & Barone': ('gga_x_mpw91', 119), - 'Armiento & Mattsson 05 exchange': ('gga_x_am05', 120), - 'Madsen (PBE-like)': ('gga_x_pbea', 121), - 'Adamo & Barone modification to PBE': ('gga_x_mpbe', 122), - 'xPBE reparametrization by Xu & Goddard': ('gga_c_xpbe', 136000), - 'Becke 86 MGC for 2D systems': ('gga_x_2d_b86_mgc', 124), - 'Bayesian best fit for the enhancement factor': ('gga_x_bayesian', 125), - 'JSJR reparametrization by Pedroza, Silva & Capelle': ('gga_x_pbe_jsjr', 126), - 'Becke 88 in 2D': ('gga_x_2d_b88', 127), - 'Perdew, Burke & Ernzerhof exchange in 2D': ('gga_x_2d_pbe', 129), - 'Perdew, Burke & Ernzerhof correlation': ('gga_c_pbe', 130000), - 'Lee, Yang & Parr': ('gga_c_lyp', 131000), - 'Perdew 86': ('gga_c_p86', 132000), - 'Perdew, Burke & Ernzerhof correlation SOL': ('gga_c_pbe_sol', 133000), - 'Armiento & Mattsson 05 correlation': ('gga_c_am05', 135000), - 'Langreth and Mehl correlation': ('gga_c_lm', 137000), - 'JRGX reparametrization by Pedroza, Silva & Capelle': ('gga_c_pbe_jrgx', 138000), - 'Becke 88 reoptimized to be used with vdW functional of Dion et al': ('gga_x_optb88_vdw', 139), - 'PBE reparametrization for vdW': ('gga_x_optpbe_vdw', 141), - 'Regularized PBE': ('gga_c_rge2', 143000), - 'refitted Perdew & Wang 86': ('gga_x_rpw86', 144), - 'Keal and Tozer version 1': ('gga_x_kt1', 145), - 'Keal and Tozer version 2': ('gga_xc_kt2', 146000), - 'Wilson & Levy': ('gga_c_wl', 147000), - 'Wilson & Ivanov': ('gga_c_wi', 148000), - 'van Leeuwen & Baerends': ('gga_x_lb', 160), - 'HCTH functional fitted to 93 molecules': ('gga_xc_hcth_93', 161000), - 'HCTH functional fitted to 120 molecules': ('gga_xc_hcth_120', 162000), - 'HCTH functional fitted to 147 molecules': ('gga_xc_hcth_407', 164000), - 'Empirical functionals from Adamson, Gill, and Pople': ('gga_xc_edf1', 165000), - 'XLYP functional': ('gga_xc_xlyp', 166000), - 'Becke 97': ('hyb_gga_xc_b97', 407000), - 'Becke 97-1': ('hyb_gga_xc_b97_1', 408000), - 'Becke 97-2': ('hyb_gga_xc_b97_2', 410000), - 'Grimme functional to be used with C6 vdW term': ('gga_xc_b97_d', 170000), - 'Boese-Martin for Kinetics': ('hyb_gga_xc_b97_k', 413000), - 'Becke 97-3': ('hyb_gga_xc_b97_3', 414000), - 'Functionals fitted for water': ('gga_xc_pbelyp1w', 175000), - 'Schmider-Becke 98 parameterization 1a': ('hyb_gga_xc_sb98_1a', 420000), - 'Schmider-Becke 98 parameterization 1b': ('hyb_gga_xc_sb98_1b', 421000), - 'Schmider-Becke 98 parameterization 1c': ('hyb_gga_xc_sb98_1c', 422000), - 'Schmider-Becke 98 parameterization 2a': ('hyb_gga_xc_sb98_2a', 423000), - 'Schmider-Becke 98 parameterization 2b': ('hyb_gga_xc_sb98_2b', 424000), - 'Schmider-Becke 98 parameterization 2c': ('hyb_gga_xc_sb98_2c', 425000), - 'van Leeuwen & Baerends modified': ('gga_x_lbm', 182), - 'von Weiszaecker correction to Thomas-Fermi': ('gga_k_vw', 500), - 'Second-order gradient expansion (l = 1/9)': ('gga_k_ge2', 501), - 'TF-lambda-vW form by Golden (l = 13/45)': ('gga_k_golden', 502), - 'TF-lambda-vW form by Yonei and Tomishima (l = 1/5)': ('gga_k_yt65', 503), - 'TF-lambda-vW form by Baltin (l = 5/9)': ('gga_k_baltin', 504), - 'TF-lambda-vW form by Lieb (l = 0.185909191)': ('gga_k_lieb', 505), - 'gamma-TFvW form by Acharya et al [g = 1 - 1.412/N^(1/3)]': ('gga_k_absr1', 506), - 'gamma-TFvW form by Acharya et al [g = 1 - 1.332/N^(1/3)]': ('gga_k_absr2', 507), - 'gamma-TFvW form by Gázquez and Robles': ('gga_k_gr', 508), - 'gamma-TFvW form by Ludeña': ('gga_k_ludena', 509), - 'gamma-TFvW form by Ghosh and Parr': ('gga_k_gp85', 510), - 'Pearson': ('gga_k_pearson', 511), - 'Ou-Yang and Levy v.1': ('gga_k_ol1', 512), - 'Ou-Yang and Levy v.2': ('gga_k_ol2', 513), - 'Fuentealba & Reyes (B88 version)': ('gga_k_fr_b88', 514), - 'Fuentealba & Reyes (PW86 version)': ('gga_k_fr_pw86', 515), - 'The original hybrid proposed by Becke': ('hyb_gga_xc_b3pw91', 401000), - 'The (in)famous B3LYP': ('hyb_gga_xc_b3lyp', 402000), - 'Perdew 86 hybrid similar to B3PW91': ('hyb_gga_xc_b3p86', 403000), - 'hybrid using the optx functional': ('hyb_gga_xc_o3lyp', 404000), - 'mixture of mPW91 and PW91 optimized for kinetics': ('hyb_gga_xc_mpw1k', 405000), - 'aka PBE0 or PBE1PBE': ('hyb_gga_xc_pbeh', 406000), - 'maybe the best hybrid': ('hyb_gga_xc_x3lyp', 411000), - 'Becke 1-parameter mixture of WC and PBE': ('hyb_gga_xc_b1wc', 412000), - 'mixture with the mPW functional': ('hyb_gga_xc_mpw3pw', 415000), - 'Becke 1-parameter mixture of B88 and LYP': ('hyb_gga_xc_b1lyp', 416000), - 'Becke 1-parameter mixture of B88 and PW91': ('hyb_gga_xc_b1pw91', 417000), - 'Becke 1-parameter mixture of mPW91 and PW91': ('hyb_gga_xc_mpw1pw', 418000), - 'mixture of mPW and LYP': ('hyb_gga_xc_mpw3lyp', 419000), - 'Local tau approximation of Ernzerhof & Scuseria': ('mgga_x_lta', 201), - 'Perdew, Tao, Staroverov & Scuseria exchange': ('mgga_x_tpss', 202), - 'Zhao, Truhlar exchange': ('mgga_x_m06l', 203), - 'GVT4 from Van Voorhis and Scuseria (exchange part)': ('mgga_x_gvt4', 204), - 'tau-HCTH from Boese and Handy': ('mgga_x_tau_hcth', 205), - 'Becke-Roussel 89': ('mgga_x_br89', 206), - 'Becke & Johnson correction to Becke-Roussel 89': ('mgga_x_bj06', 207), - 'Tran & Blaha correction to Becke & Johnson': ('mgga_x_tb09', 208), - 'Rasanen, Pittalis, and Proetto correction to Becke & Johnson': ('mgga_x_rpp09', 209), - 'Pittalis, Rasanen, Helbig, Gross Exchange Functional': ('mgga_x_2d_prhg07', 210), - 'PRGH07 with PRP10 correction': ('mgga_x_2d_prhg07_prp10', 211), - 'Perdew, Tao, Staroverov & Scuseria correlation': ('mgga_c_tpss', 231000), - 'VSxc from Van Voorhis and Scuseria (correlation part)': ('mgga_c_vsxc', 232000), - 'Orestes, Marcasso & Capelle': ('lca_omc', 301), - 'Lee, Colwell & Handy': ('lca_lch', 302), - 'OEP: Exact exchange': ('oep_x', 901)} - - self._units_mapping = dict(ev=ureg.eV, hartree=ureg.hartree, angstrom=ureg.angstrom, bohr=ureg.bohr) + "Exchange": ("lda_x", 1), + "Wigner parametrization": ("lda_c_wigner", 2000), + "Random Phase Approximation": ("lda_c_rpa", 3000), + "Hedin & Lundqvist": ("lda_c_hl", 4000), + "Gunnarson & Lundqvist": ("lda_c_gl", 5000), + "Slater Xalpha": ("lda_c_xalpha", 6000), + "Vosko, Wilk, & Nussair": ("lda_c_vwn", 7000), + "Vosko, Wilk, & Nussair (RPA)": ("lda_c_vwn_rpa", 8000), + "Perdew & Zunger": ("lda_c_pz", 9000), + "Perdew & Zunger (Modified)": ("lda_c_pz_mod", 10000), + "Ortiz & Ballone (PZ)": ("lda_c_ob_pz", 11000), + "Perdew & Wang": ("lda_c_pw", 12000), + "Perdew & Wang (Modified)": ("lda_c_pw_mod", 13000), + "Ortiz & Ballone (PW)": ("lda_c_ob_pw", 14000), + "Attacalite et al": ("lda_c_2d_amgb", 15000), + "Pittalis, Rasanen & Marques correlation in 2D": ("lda_c_2d_prm", 16000), + "von Barth & Hedin": ("lda_c_vbh", 17000), + "Casula, Sorella, and Senatore 1D correlation": ("lda_c_1d_csc", 18000), + "Exchange in 2D": ("lda_x_2d", 19), + "Teter 93 parametrization": ("lda_xc_teter93", 20000), + "Exchange in 1D": ("lda_x_1d", 21), + "Modified LSD (version 1) of Proynov and Salahub": ("lda_c_ml1", 22000), + "Modified LSD (version 2) of Proynov and Salahub": ("lda_c_ml2", 23000), + "Gombas parametrization": ("lda_c_gombas", 24000), + "Thomas-Fermi kinetic energy functional": ("lda_k_tf", 50), + "Lee and Parr Gaussian ansatz": ("lda_k_lp", 51), + "Perdew, Burke & Ernzerhof exchange": ("gga_x_pbe", 101), + "Perdew, Burke & Ernzerhof exchange (revised)": ("gga_x_pbe_r", 102), + "Becke 86 Xalfa,beta,gamma": ("gga_x_2d_b86", 128), + "Herman et al original GGA": ("gga_x_herman", 104), + "Becke 86 Xalfa,beta,gamma (with mod. grad. correction)": ( + "gga_x_b86_mgc", + 105, + ), + "Becke 88": ("gga_x_b88", 106), + "Gill 96": ("gga_x_g96", 107), + "Perdew & Wang 86": ("gga_x_pw86", 108), + "Perdew & Wang 91": ("gga_c_pw91", 134000), + "Handy & Cohen OPTX 01": ("gga_x_optx", 110), + "dePristo & Kress 87 (version R1)": ("gga_x_dk87_r1", 111), + "dePristo & Kress 87 (version R2)": ("gga_x_dk87_r2", 112), + "Lacks & Gordon 93": ("gga_x_lg93", 113), + "Filatov & Thiel 97 (version A)": ("gga_x_ft97_a", 114), + "Filatov & Thiel 97 (version B)": ("gga_x_ft97_b", 115), + "Perdew, Burke & Ernzerhof exchange (solids)": ("gga_x_pbe_sol", 116), + "Hammer, Hansen & Norskov (PBE-like)": ("gga_x_rpbe", 117), + "Wu & Cohen": ("gga_x_wc", 118), + "Modified form of PW91 by Adamo & Barone": ("gga_x_mpw91", 119), + "Armiento & Mattsson 05 exchange": ("gga_x_am05", 120), + "Madsen (PBE-like)": ("gga_x_pbea", 121), + "Adamo & Barone modification to PBE": ("gga_x_mpbe", 122), + "xPBE reparametrization by Xu & Goddard": ("gga_c_xpbe", 136000), + "Becke 86 MGC for 2D systems": ("gga_x_2d_b86_mgc", 124), + "Bayesian best fit for the enhancement factor": ("gga_x_bayesian", 125), + "JSJR reparametrization by Pedroza, Silva & Capelle": ( + "gga_x_pbe_jsjr", + 126, + ), + "Becke 88 in 2D": ("gga_x_2d_b88", 127), + "Perdew, Burke & Ernzerhof exchange in 2D": ("gga_x_2d_pbe", 129), + "Perdew, Burke & Ernzerhof correlation": ("gga_c_pbe", 130000), + "Lee, Yang & Parr": ("gga_c_lyp", 131000), + "Perdew 86": ("gga_c_p86", 132000), + "Perdew, Burke & Ernzerhof correlation SOL": ("gga_c_pbe_sol", 133000), + "Armiento & Mattsson 05 correlation": ("gga_c_am05", 135000), + "Langreth and Mehl correlation": ("gga_c_lm", 137000), + "JRGX reparametrization by Pedroza, Silva & Capelle": ( + "gga_c_pbe_jrgx", + 138000, + ), + "Becke 88 reoptimized to be used with vdW functional of Dion et al": ( + "gga_x_optb88_vdw", + 139, + ), + "PBE reparametrization for vdW": ("gga_x_optpbe_vdw", 141), + "Regularized PBE": ("gga_c_rge2", 143000), + "refitted Perdew & Wang 86": ("gga_x_rpw86", 144), + "Keal and Tozer version 1": ("gga_x_kt1", 145), + "Keal and Tozer version 2": ("gga_xc_kt2", 146000), + "Wilson & Levy": ("gga_c_wl", 147000), + "Wilson & Ivanov": ("gga_c_wi", 148000), + "van Leeuwen & Baerends": ("gga_x_lb", 160), + "HCTH functional fitted to 93 molecules": ("gga_xc_hcth_93", 161000), + "HCTH functional fitted to 120 molecules": ("gga_xc_hcth_120", 162000), + "HCTH functional fitted to 147 molecules": ("gga_xc_hcth_407", 164000), + "Empirical functionals from Adamson, Gill, and Pople": ( + "gga_xc_edf1", + 165000, + ), + "XLYP functional": ("gga_xc_xlyp", 166000), + "Becke 97": ("hyb_gga_xc_b97", 407000), + "Becke 97-1": ("hyb_gga_xc_b97_1", 408000), + "Becke 97-2": ("hyb_gga_xc_b97_2", 410000), + "Grimme functional to be used with C6 vdW term": ("gga_xc_b97_d", 170000), + "Boese-Martin for Kinetics": ("hyb_gga_xc_b97_k", 413000), + "Becke 97-3": ("hyb_gga_xc_b97_3", 414000), + "Functionals fitted for water": ("gga_xc_pbelyp1w", 175000), + "Schmider-Becke 98 parameterization 1a": ("hyb_gga_xc_sb98_1a", 420000), + "Schmider-Becke 98 parameterization 1b": ("hyb_gga_xc_sb98_1b", 421000), + "Schmider-Becke 98 parameterization 1c": ("hyb_gga_xc_sb98_1c", 422000), + "Schmider-Becke 98 parameterization 2a": ("hyb_gga_xc_sb98_2a", 423000), + "Schmider-Becke 98 parameterization 2b": ("hyb_gga_xc_sb98_2b", 424000), + "Schmider-Becke 98 parameterization 2c": ("hyb_gga_xc_sb98_2c", 425000), + "van Leeuwen & Baerends modified": ("gga_x_lbm", 182), + "von Weiszaecker correction to Thomas-Fermi": ("gga_k_vw", 500), + "Second-order gradient expansion (l = 1/9)": ("gga_k_ge2", 501), + "TF-lambda-vW form by Golden (l = 13/45)": ("gga_k_golden", 502), + "TF-lambda-vW form by Yonei and Tomishima (l = 1/5)": ("gga_k_yt65", 503), + "TF-lambda-vW form by Baltin (l = 5/9)": ("gga_k_baltin", 504), + "TF-lambda-vW form by Lieb (l = 0.185909191)": ("gga_k_lieb", 505), + "gamma-TFvW form by Acharya et al [g = 1 - 1.412/N^(1/3)]": ( + "gga_k_absr1", + 506, + ), + "gamma-TFvW form by Acharya et al [g = 1 - 1.332/N^(1/3)]": ( + "gga_k_absr2", + 507, + ), + "gamma-TFvW form by Gázquez and Robles": ("gga_k_gr", 508), + "gamma-TFvW form by Ludeña": ("gga_k_ludena", 509), + "gamma-TFvW form by Ghosh and Parr": ("gga_k_gp85", 510), + "Pearson": ("gga_k_pearson", 511), + "Ou-Yang and Levy v.1": ("gga_k_ol1", 512), + "Ou-Yang and Levy v.2": ("gga_k_ol2", 513), + "Fuentealba & Reyes (B88 version)": ("gga_k_fr_b88", 514), + "Fuentealba & Reyes (PW86 version)": ("gga_k_fr_pw86", 515), + "The original hybrid proposed by Becke": ("hyb_gga_xc_b3pw91", 401000), + "The (in)famous B3LYP": ("hyb_gga_xc_b3lyp", 402000), + "Perdew 86 hybrid similar to B3PW91": ("hyb_gga_xc_b3p86", 403000), + "hybrid using the optx functional": ("hyb_gga_xc_o3lyp", 404000), + "mixture of mPW91 and PW91 optimized for kinetics": ( + "hyb_gga_xc_mpw1k", + 405000, + ), + "aka PBE0 or PBE1PBE": ("hyb_gga_xc_pbeh", 406000), + "maybe the best hybrid": ("hyb_gga_xc_x3lyp", 411000), + "Becke 1-parameter mixture of WC and PBE": ("hyb_gga_xc_b1wc", 412000), + "mixture with the mPW functional": ("hyb_gga_xc_mpw3pw", 415000), + "Becke 1-parameter mixture of B88 and LYP": ("hyb_gga_xc_b1lyp", 416000), + "Becke 1-parameter mixture of B88 and PW91": ("hyb_gga_xc_b1pw91", 417000), + "Becke 1-parameter mixture of mPW91 and PW91": ( + "hyb_gga_xc_mpw1pw", + 418000, + ), + "mixture of mPW and LYP": ("hyb_gga_xc_mpw3lyp", 419000), + "Local tau approximation of Ernzerhof & Scuseria": ("mgga_x_lta", 201), + "Perdew, Tao, Staroverov & Scuseria exchange": ("mgga_x_tpss", 202), + "Zhao, Truhlar exchange": ("mgga_x_m06l", 203), + "GVT4 from Van Voorhis and Scuseria (exchange part)": ("mgga_x_gvt4", 204), + "tau-HCTH from Boese and Handy": ("mgga_x_tau_hcth", 205), + "Becke-Roussel 89": ("mgga_x_br89", 206), + "Becke & Johnson correction to Becke-Roussel 89": ("mgga_x_bj06", 207), + "Tran & Blaha correction to Becke & Johnson": ("mgga_x_tb09", 208), + "Rasanen, Pittalis, and Proetto correction to Becke & Johnson": ( + "mgga_x_rpp09", + 209, + ), + "Pittalis, Rasanen, Helbig, Gross Exchange Functional": ( + "mgga_x_2d_prhg07", + 210, + ), + "PRGH07 with PRP10 correction": ("mgga_x_2d_prhg07_prp10", 211), + "Perdew, Tao, Staroverov & Scuseria correlation": ("mgga_c_tpss", 231000), + "VSxc from Van Voorhis and Scuseria (correlation part)": ( + "mgga_c_vsxc", + 232000, + ), + "Orestes, Marcasso & Capelle": ("lca_omc", 301), + "Lee, Colwell & Handy": ("lca_lch", 302), + "OEP: Exact exchange": ("oep_x", 901), + } + + self._units_mapping = dict( + ev=ureg.eV, hartree=ureg.hartree, angstrom=ureg.angstrom, bohr=ureg.bohr + ) def init_parser(self, filepath, logger): self.out_parser.mainfile = filepath self.out_parser.logger = logger - self.info_parser.mainfile = os.path.join(self.maindir, 'static/info') + self.info_parser.mainfile = os.path.join(self.maindir, "static/info") self.info_parser.logger = logger - self.log_parser.mainfile = os.path.join(self.maindir, 'exec/parser.log') + self.log_parser.mainfile = os.path.join(self.maindir, "exec/parser.log") self.log_parser.logger = logger - self.inp_parser.mainfile = os.path.join(self.maindir, 'inp') + self.inp_parser.mainfile = os.path.join(self.maindir, "inp") self.inp_parser.logger = logger - self.eigenvalue_parser.mainfile = os.path.join(self.maindir, 'static/eigenvalues') + self.eigenvalue_parser.mainfile = os.path.join( + self.maindir, "static/eigenvalues" + ) self.eigenvalue_parser.logger = logger self._info = None @@ -631,21 +821,21 @@ def info(self): # add units for energy, length # TODO not sure what defaults are for units and expected values for units(input) # and their meaning - energyunit = 'hartree' - lengthunit = 'bohr' - units = self._info.get('Units', self._info.get('UnitsInput', 0)) + energyunit = "hartree" + lengthunit = "bohr" + units = self._info.get("Units", self._info.get("UnitsInput", 0)) if isinstance(units, str): units = units.lower() - energyunit = 'eV' if 'ev' in units else energyunit - lengthunit = 'angstrom' if 'angs' in units else lengthunit + energyunit = "eV" if "ev" in units else energyunit + lengthunit = "angstrom" if "angs" in units else lengthunit elif isinstance(units, int): - energyunit = 'eV' if units == 1 else energyunit - lengthunit = 'angstrom' if units == 1 else lengthunit + energyunit = "eV" if units == 1 else energyunit + lengthunit = "angstrom" if units == 1 else lengthunit elif units is None: - cell = self.out_parser.get('grid', {}).get('cell') + cell = self.out_parser.get("grid", {}).get("cell") if cell is not None: lengthunit = cell.units - energyunit = 'eV' if lengthunit == 'angstrom' else energyunit + energyunit = "eV" if lengthunit == "angstrom" else energyunit self._info.update(dict(energyunit=energyunit, lengthunit=lengthunit)) return self._info @@ -654,42 +844,62 @@ def parse_scc(self): # self-consistent # SCF energies are printed only in output - initial_time = sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s - for scf in self.out_parser.get('self_consistent', []): + initial_time = ( + sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + ) + for scf in self.out_parser.get("self_consistent", []): sec_scc = Calculation() sec_run.calculation.append(sec_scc) - for iteration in scf.get('iteration', []): - initial_time = sec_scc.scf_iteration[-1].time_physical if sec_scc.scf_iteration else initial_time + for iteration in scf.get("iteration", []): + initial_time = ( + sec_scc.scf_iteration[-1].time_physical + if sec_scc.scf_iteration + else initial_time + ) sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf_energy = Energy() sec_scf.energy = sec_scf_energy - fermi_level = iteration.get('fermi_level') + fermi_level = iteration.get("fermi_level") unit = None if fermi_level is not None: sec_scf_energy.fermi = fermi_level - energy_total = iteration.get('energy_total') + energy_total = iteration.get("energy_total") if energy_total is not None: - unit = self._units_mapping.get(self.info.get('energyunit', 'hartree').lower()) if unit is None else unit + unit = ( + self._units_mapping.get( + self.info.get("energyunit", "hartree").lower() + ) + if unit is None + else unit + ) sec_scf_energy.total = EnergyEntry(value=energy_total * unit) - time = iteration.get('time') + time = iteration.get("time") if time is not None: sec_scf.time_calculation = time sec_scf.time_physical = initial_time + sec_scf.time_calculation if sec_scc.scf_iteration: - sec_scc.time_calculation = sum(scf.time_calculation for scf in sec_scc.scf_iteration) + sec_scc.time_calculation = sum( + scf.time_calculation for scf in sec_scc.scf_iteration + ) sec_scc.time_physical = sec_scc.scf_iteration[-1].time_physical # time-dependent # each td iteration is an scc - for td in self.out_parser.get('time_dependent', []): - for iteration in td.get('iteration', []): + for td in self.out_parser.get("time_dependent", []): + for iteration in td.get("iteration", []): sec_scc = Calculation() sec_run.calculation.append(sec_scc) - energy = iteration.get('energy', None) + energy = iteration.get("energy", None) if energy is not None: - sec_scc.energy = Energy(total=EnergyEntry( - value=energy * self._units_mapping.get(self.info.get('energyunit', 'hartree').lower()))) + sec_scc.energy = Energy( + total=EnergyEntry( + value=energy + * self._units_mapping.get( + self.info.get("energyunit", "hartree").lower() + ) + ) + ) # TODO add other calculation types @@ -700,19 +910,21 @@ def parse_scc(self): # TODO add volumetric data # TODO test geometry optimizations, cannot find an exaple - for minimization in self.out_parser.get('minimization', []): + for minimization in self.out_parser.get("minimization", []): sec_scc = Calculation() sec_run.calculation.append(sec_scc) - energy_total = minimization.get('energy_total') + energy_total = minimization.get("energy_total") if energy_total is not None: sec_scc.energy = Energy(total=EnergyEntry(value=energy_total)) - number = minimization.get('number') + number = minimization.get("number") cell = sec_run.system[-1].atoms.lattice_vectors pbc = sec_run.system[-1].atoms.periodic if number is not None: - path = os.path.join(self.out_parser.maindir, 'geom/go.%04d.xyz' % number) + path = os.path.join( + self.out_parser.maindir, "geom/go.%04d.xyz" % number + ) try: - atoms = read(path, format='xyz') + atoms = read(path, format="xyz") except Exception: continue sec_system = System() @@ -731,43 +943,51 @@ def parse_scc(self): sec_scc = sec_run.calculation[-1] # final results are printed only in static/info # energies - energies = self.info_parser.get('energies', {}) + energies = self.info_parser.get("energies", {}) sec_energy = Energy() sec_scc.energy = sec_energy for key, val in energies.items(): metainfo_key = self._metainfo_keys_mapping.get(key, None) if metainfo_key is None: continue - if metainfo_key.startswith('energy_'): - sec_energy.m_add_sub_section(getattr( - Energy, metainfo_key.replace('energy_', '').lower()), EnergyEntry(value=val)) + if metainfo_key.startswith("energy_"): + sec_energy.m_add_sub_section( + getattr(Energy, metainfo_key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: setattr(sec_scc, metainfo_key, val) # forces - forces = self.info_parser.get('forces') + forces = self.info_parser.get("forces") if forces is not None: sec_scc.forces = Forces(free=ForcesEntry(value_raw=forces)) # eigenvalues - eigenvalues = self.eigenvalue_parser.get('eigenvalues', self.info_parser.get('eigenvalues')) - if eigenvalues is not None and eigenvalues.get('eigenvalues') is not None: - kpts, eigs, occs = list(zip(*[e for e in eigenvalues.eigenvalues if e is not None])) + eigenvalues = self.eigenvalue_parser.get( + "eigenvalues", self.info_parser.get("eigenvalues") + ) + if eigenvalues is not None and eigenvalues.get("eigenvalues") is not None: + kpts, eigs, occs = list( + zip(*[e for e in eigenvalues.eigenvalues if e is not None]) + ) eigs = np.transpose(eigs, axes=(2, 0, 1)) occs = np.transpose(occs, axes=(2, 0, 1)) sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) if len(kpts) > 0: sec_eigenvalues.kpoints = kpts - eigs = eigs * self._units_mapping.get(self.info.get('energyunit').lower()) + eigs = eigs * self._units_mapping.get( + self.info.get("energyunit").lower() + ) sec_eigenvalues.energies = eigs sec_eigenvalues.occupations = occs - fermi_level = eigenvalues.get('fermi_energy') + fermi_level = eigenvalues.get("fermi_energy") if fermi_level is not None: sec_energy.fermi = fermi_level - converged = self.out_parser.get('x_octopus_info_scf_converged_iterations') + converged = self.out_parser.get("x_octopus_info_scf_converged_iterations") if converged is not None: sec_run.x_octopus_info_scf_converged_iterations = converged @@ -787,8 +1007,10 @@ def parse_system(self): # try to read from file atoms = None file_types = { - 'PDBCoordinates': 'proteindatabank', 'XYZCoordinates': 'xyz', - 'XSFCoordinates': 'xsf'} + "PDBCoordinates": "proteindatabank", + "XYZCoordinates": "xyz", + "XSFCoordinates": "xsf", + } for ftype, fformat in file_types.items(): filename = self.info.get(ftype) if filename is None: @@ -796,34 +1018,36 @@ def parse_system(self): try: atoms = read(os.path.join(self.maindir, filename), format=fformat) except Exception: - self.logger.error('Error reading coordinates file', data=dict(filename=filename)) + self.logger.error( + "Error reading coordinates file", data=dict(filename=filename) + ) if atoms is not None: symbols = atoms.get_chemical_symbols() coordinates = atoms.get_positions() break if len(coordinates) == 0: - self.logger.error('Error parsing atom positions and labels.') + self.logger.error("Error parsing atom positions and labels.") return sec_atoms = Atoms() sec_system.atoms = sec_atoms - cell = self.out_parser.get('grid', {}).get('cell') + cell = self.out_parser.get("grid", {}).get("cell") if cell is not None: sec_atoms.lattice_vectors = cell - npbc = self.out_parser.get('grid', {}).get('npbc', 3) + npbc = self.out_parser.get("grid", {}).get("npbc", 3) pbc = [True for _ in range(npbc)] sec_atoms.periodic = pbc + [False] * (3 - len(pbc)) - if self.info.get('ReducedCoordinates', None) is not None and cell is not None: + if self.info.get("ReducedCoordinates", None) is not None and cell is not None: coordinates = np.dot(coordinates, cell.magnitude) units = cell.units - elif self.info.get('Coordinates', None) is not None: - units = self.info.get('lengthunit') + elif self.info.get("Coordinates", None) is not None: + units = self.info.get("lengthunit") else: # read from ase atoms (in angstroms) - units = 'angstrom' + units = "angstrom" sec_atoms.positions = coordinates * self._units_mapping.get(str(units).lower()) sec_atoms.labels = symbols @@ -833,10 +1057,10 @@ def parse_method(self): sec_run.method.append(sec_method) k_mesh = KMesh() sec_method.k_mesh = k_mesh - brillouin_zone_sampling = self.info_parser.get('brillouin_zone_sampling') + brillouin_zone_sampling = self.info_parser.get("brillouin_zone_sampling") if brillouin_zone_sampling is not None: if brillouin_zone_sampling.results is not None: - k_mesh.grid = brillouin_zone_sampling.results.get('kgrid') + k_mesh.grid = brillouin_zone_sampling.results.get("kgrid") sec_electronic = Electronic() sec_method.electronic = sec_electronic @@ -846,45 +1070,55 @@ def parse_method(self): # basis set sec_method.electrons_representation.append( BasisSetContainer( - type='real-space grid', - scope=['wavefunction'], + type="real-space grid", + scope=["wavefunction"], basis_set=[ BasisSet( - scope=['valence'], - type='real-space grid', + scope=["valence"], + type="real-space grid", ) - ] + ], ) ) # smearing - smearing_function = self._smearing_functions.get(self.info.get('SmearingFunction'), None) + smearing_function = self._smearing_functions.get( + self.info.get("SmearingFunction"), None + ) if smearing_function is not None: sec_electronic.smearing = Smearing(kind=smearing_function) - smearing_width = self.info.get('Smearing', None) + smearing_width = self.info.get("Smearing", None) if smearing_width is not None: - sec_electronic.smearing.width = (smearing_width * self._units_mapping.get( - self.info['energyunit'].lower())).to('joule').magnitude + sec_electronic.smearing.width = ( + ( + smearing_width + * self._units_mapping.get(self.info["energyunit"].lower()) + ) + .to("joule") + .magnitude + ) # check dft+u - dft_u = self.info.get('DFTULevel') + dft_u = self.info.get("DFTULevel") if dft_u is not None: - sec_electronic.method = 'DFT+U' + sec_electronic.method = "DFT+U" else: - theory_level = self._theory_levels.get(self.info.get('TheoryLevel', 4), None) + theory_level = self._theory_levels.get( + self.info.get("TheoryLevel", 4), None + ) if theory_level is not None: sec_electronic.method = theory_level # xc functional xc_functionals = [] xc_int_sum = 0 - xc_functional = self.info.get('XCFunctional', 0) + xc_functional = self.info.get("XCFunctional", 0) if isinstance(xc_functional, str): - xc_functionals = [xc.strip() for xc in xc_functional.upper().split('+')] + xc_functionals = [xc.strip() for xc in xc_functional.upper().split("+")] else: # we try to resolve from output string - for key in ['exchange', 'correlation']: - val = self.out_parser.get('theory_level', {}).get(key, None) + for key in ["exchange", "correlation"]: + val = self.out_parser.get("theory_level", {}).get(key, None) name, number = self._xc_functionals.get(val, (None, 0)) if name is not None: xc_functionals.append(name.upper()) @@ -900,20 +1134,22 @@ def parse_method(self): if diff < 0: xc_functionals = [] self.logger.error( - 'Error resolving xc functional', data=dict(XCfunctional=xc_functional)) + "Error resolving xc functional", + data=dict(XCfunctional=xc_functional), + ) sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for xc_functional in xc_functionals: - if '_X_' in xc_functional or xc_functional.endswith('_X'): + if "_X_" in xc_functional or xc_functional.endswith("_X"): sec_xc_functional.exchange.append(Functional(name=xc_functional)) - elif '_C_' in xc_functional or xc_functional.endswith('_C'): + elif "_C_" in xc_functional or xc_functional.endswith("_C"): sec_xc_functional.correlation.append(Functional(name=xc_functional)) - elif 'HYB' in xc_functional: + elif "HYB" in xc_functional: sec_xc_functional.hybrid.append(Functional(name=xc_functional)) else: sec_xc_functional.contributions.append(Functional(name=xc_functional)) - method_keys = ['SpinComponents', 'ExcessCharge'] + method_keys = ["SpinComponents", "ExcessCharge"] for key in method_keys: val = self.info.get(key) metainfo_key = self._metainfo_keys_mapping.get(key, None) @@ -922,13 +1158,15 @@ def parse_method(self): try: setattr(sec_electronic, metainfo_key, int(val)) except Exception: - self.logger.warning('Error setting metainfo', data=dict(key=metainfo_key)) + self.logger.warning( + "Error setting metainfo", data=dict(key=metainfo_key) + ) # convert parsed values to proper metainfo type definitions = dict(m_env.all_definitions_by_name) def convert_to_metainfo(prefix, key, val): - metainfo_name = 'x_octopus_%s_%s' % (prefix, key) + metainfo_name = "x_octopus_%s_%s" % (prefix, key) metainfo_type = definitions.get(metainfo_name, None) if metainfo_type is not None: metainfo_type = metainfo_type[0].type @@ -939,7 +1177,7 @@ def convert_to_metainfo(prefix, key, val): return metainfo_name, val # parse keywords from inp and parser.log - sources = {'input': self.inp_parser, 'parserlog': self.log_parser} + sources = {"input": self.inp_parser, "parserlog": self.log_parser} for prefix, source in sources.items(): for key, val in source.info.items(): try: @@ -947,7 +1185,7 @@ def convert_to_metainfo(prefix, key, val): metainfo_name, val = convert_to_metainfo(prefix, key, val) setattr(sec_run, metainfo_name, val) except Exception: - self.logger.warning('Error setting metainfo', data=dict(key=key)) + self.logger.warning("Error setting metainfo", data=dict(key=key)) def parse(self, filepath, archive, logger): self.filepath = filepath @@ -960,8 +1198,10 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) header = self.out_parser.header - sec_run.program = Program(name='Octopus', version=str(header.get('Version', ''))) - sec_run.x_octopus_log_svn_revision = int(header.get('Revision', 0)) + sec_run.program = Program( + name="Octopus", version=str(header.get("Version", "")) + ) + sec_run.x_octopus_log_svn_revision = int(header.get("Revision", 0)) self.parse_method() diff --git a/electronicparsers/onetep/metainfo/onetep.py b/electronicparsers/onetep/metainfo/onetep.py index 59e50663..03b778bc 100644 --- a/electronicparsers/onetep/metainfo/onetep.py +++ b/electronicparsers/onetep/metainfo/onetep.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -33,2070 +41,2296 @@ class x_onetep_section_vibrational_frequencies(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_vibrationl_frequencies = Quantity( type=np.dtype(np.float64), - shape=['len(self.nr_iter)'], - description=''' + shape=["len(self.nr_iter)"], + description=""" Vibration Frequenices (cm-1) - ''') + """, + ) x_onetep_vibrationl_frequencies_store = Quantity( type=str, shape=[], - description=''' + description=""" Vibration Frequenices (cm-1) - ''') + """, + ) x_onetep_ir_store = Quantity( type=str, shape=[], - description=''' + description=""" Irreducible representation in the Point Group - ''') + """, + ) x_onetep_ir = Quantity( type=str, - shape=['len(self.nr_iter)'], - description=''' + shape=["len(self.nr_iter)"], + description=""" Irreducible representation in the Point Group - ''') + """, + ) x_onetep_raman_activity = Quantity( type=np.dtype(np.float64), - shape=['len(self.nr_iter)'], - description=''' + shape=["len(self.nr_iter)"], + description=""" Raman activity (A**4/amu) - ''') + """, + ) x_onetep_raman_active = Quantity( type=str, shape=[], - description=''' + description=""" Raman activity (A**4/amu) - ''') + """, + ) x_onetep_n_iterations_phonons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of iterations in phonons - ''') + """, + ) x_onetep_raman_activity_store = Quantity( type=str, shape=[], - description=''' + description=""" Raman activity (A**4/amu) - ''') + """, + ) x_onetep_ir_intensity = Quantity( type=np.dtype(np.float64), - shape=['len(self.nr_iter)'], - description=''' + shape=["len(self.nr_iter)"], + description=""" IR intensities (D/A)**2/amu - ''') + """, + ) x_onetep_ir_intensity_store = Quantity( type=str, shape=[], - description=''' + description=""" IR intensities (D/A)**2/amu - ''') + """, + ) class x_onetep_section_tddft(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_tddft_energies = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" lrtddft energy - ''') + """, + ) x_onetep_tddft_penalties = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" lrtddft energy - ''') + """, + ) x_onetep_tddft_steps = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" lrtddft energy - ''') + """, + ) x_onetep_tddft_omega_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" change in omega - ''') + """, + ) x_onetep_tddft_rms_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" rms gradient tddft - ''') + """, + ) x_onetep_tddft_number_conv_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number converged states - ''') + """, + ) x_onetep_tddft_excit_energies = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" excitations - ''') + """, + ) x_onetep_tddft_excit_oscill_str = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" oscillator strenght - ''') + """, + ) x_onetep_tddft_excit_lifetime = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" excit_lifetime - ''') + """, + ) x_onetep_section_tddft_excitations = SubSection( - sub_section=SectionProxy('x_onetep_section_tddft_excitations'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_tddft_excitations"), repeats=True + ) x_onetep_section_tddft_iterations = SubSection( - sub_section=SectionProxy('x_onetep_section_tddft_iterations'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_tddft_iterations"), repeats=True + ) class x_onetep_section_tddft_excitations(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_tddft_excit_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" exciations - ''') + """, + ) x_onetep_tddft_excit_oscill_str = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" oscillator strenght - ''') + """, + ) x_onetep_tddft_excit_lifetime = Quantity( type=np.dtype(np.float64), shape=[], - unit='s', - description=''' + unit="s", + description=""" excit_lifetime - ''') + """, + ) class x_onetep_section_tddft_iterations(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_tddft_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lrtddft energy - ''') + """, + ) x_onetep_tddft_penalties = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lrtddft energy - ''') + """, + ) x_onetep_tddft_step = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lrtddft energy - ''') + """, + ) class x_onetep_section_atom_ionic_velocities(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_onetep_section_atom_positions_optim(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_cell_angle_alpha_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle alpha - ''') + """, + ) x_onetep_cell_angle_beta_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle beta - ''') + """, + ) x_onetep_cell_angle_gamma_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle gamma - ''') + """, + ) x_onetep_cell_length_a_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" a unit cell edge length - ''') + """, + ) x_onetep_cell_length_b_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" b unit cell edge length - ''') + """, + ) x_onetep_cell_length_c_optim = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" c unit cell edge length - ''') + """, + ) class x_onetep_section_atom_positions(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_cell_angle_alpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle alpha - ''') + """, + ) x_onetep_cell_angle_beta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle beta - ''') + """, + ) x_onetep_cell_angle_gamma = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Simulation cell angle gamma - ''') + """, + ) x_onetep_cell_length_a = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" a unit cell edge length - ''') + """, + ) x_onetep_cell_length_b = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" b unit cell edge length - ''') + """, + ) x_onetep_cell_length_c = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" c unit cell edge length - ''') + """, + ) class x_onetep_section_dipole(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_electronic_dipole_moment_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" store dipole - ''') + """, + ) x_onetep_electronic_dipole_moment = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_onetep_electronic_dipole_moment_magnitude = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_ionic_dipole_moment_magnitude = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_total_dipole_moment_magnitude = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_ionic_dipole_moment_store = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_onetep_ionic_dipole_moment = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_onetep_total_dipole_moment_store = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" - - ''') + """, + ) x_onetep_total_dipole_moment = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" - - ''') + """, + ) class x_onetep_section_cell_optim(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_cell_vector_optim = Quantity( type=str, shape=[], - description=''' + description=""" Temporay storage for cell vectors - ''') + """, + ) class x_onetep_section_cell(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_units = Quantity( type=str, shape=[], - description=''' + description=""" units - ''') + """, + ) x_onetep_cell_vector = Quantity( type=str, shape=[], - description=''' + description=""" Temporay storage for cell vectors - ''') + """, + ) class x_onetep_section_collect_scf_eigenvalues(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_onetep_section_eigenvalues_1(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_eigenvalues_1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storing eigenvalues - ''') + """, + ) class x_onetep_section_eigenvalues(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_eigenvalues = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Temporary storing eigenvalues - ''') + """, + ) class x_onetep_section_functional_definition(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_functional_type = Quantity( type=str, shape=[], - description=''' + description=""" XC functional definition in onetep convention - ''') + """, + ) x_onetep_functional_weight = Quantity( type=str, shape=[], - description=''' + description=""" XC functional weight in onetep convention - ''') + """, + ) class x_onetep_section_functionals(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_functional_name = Quantity( type=str, shape=[], - description=''' + description=""" XC functional in onetep convention - ''') + """, + ) class x_onetep_section_mulliken_population_analysis(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_mulliken_atom_index = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_atom_index - ''') + """, + ) x_onetep_mulliken_atom = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_atom kind - ''') + """, + ) x_onetep_total_orbital = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_total_contribution - ''') + """, + ) x_onetep_total_orbital_store = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_total_contribution - ''') + """, + ) x_onetep_spin = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_spin - ''') + """, + ) x_onetep_spin_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Mulliken_spin - ''') + """, + ) x_onetep_mulliken_charge_store = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_charges - ''') + """, + ) x_onetep_mulliken_charge = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Mulliken_charges - ''') + """, + ) class x_onetep_section_nbo_population_analysis(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_nbo_atom_label_store = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" nbo_atom kind - ''') + """, + ) x_onetep_nbo_atom_labels = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" nbo_atom kind - ''') + """, + ) x_onetep_total_nbo_population_store = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" nbo_population - ''') + """, + ) x_onetep_total_nbo_population = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" nbo_population - ''') + """, + ) x_onetep_nbo_partial_charge_store = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" nbo_charges - ''') + """, + ) x_onetep_nbo_partial_charge = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" nbo_charges - ''') + """, + ) x_onetep_nbo_total_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" nbo_charges - ''') + """, + ) class x_onetep_section_geom_optimisation_method(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_geometry_optim_method = Quantity( type=str, shape=[], - description=''' + description=""" Determines optimisation method used - ''') + """, + ) class x_onetep_section_optics_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_optics_n_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" optics_number_of_bands - ''') + """, + ) x_onetep_optics_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" optics_band_convergence_tolerance - ''') + """, + ) class x_onetep_section_ngwf_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ngwf_cg_max_step = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ngwf_cg_max_step - ''') + """, + ) x_onetep_ngwf_cg_type = Quantity( type=str, shape=[], - description=''' + description=""" ngwf_cg_type - ''') + """, + ) x_onetep_ngwf_halo = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ngwf_halo - ''') + """, + ) x_onetep_ngwf_max_grad = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_ngwf_max_grad - ''') + """, + ) x_onetep_ngwf_threshold_orig = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ngwf_threshold_orig - ''') + """, + ) class x_onetep_section_kernel_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_kernel_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_maxit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_coeff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_thershold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_size = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_type_store = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_type = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_kernel_diis_lshift = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Value of the shift in energy of the conduction bands with the level-shifting technique during the inner loop DIIS. Reference: - ''') + """, + ) x_onetep_kernel_diis_linear_iter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_onetep_section_phonons(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_phonon_method = Quantity( type=str, shape=[], - description=''' + description=""" Phonon calculation method - ''') + """, + ) x_onetep_DFPT_solver_method = Quantity( type=str, shape=[], - description=''' + description=""" Phonon DFPT solver method - ''') + """, + ) x_onetep_phonon_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Phonon calculation tolerance (eV/A**2) - ''') + """, + ) x_onetep_phonon_cycles = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Phonon calculation cycles - ''') + """, + ) x_onetep_band_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Phonon band convergence tolerance window - ''') + """, + ) class x_onetep_section_density_mixing_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_density_mixing_scheme = Quantity( type=str, shape=[], - description=''' + description=""" density_mixing_scheme - ''') + """, + ) x_onetep_density_mixing_length = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" density_mixing_scheme_length - ''') + """, + ) x_onetep_charge_density_mixing_amplitude = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" charge_density_mixing_amplitude - ''') + """, + ) x_onetep_cut_off_energy_for_mixing = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" charge_density_mixing_cut_off_energy_for_mixing (A) - ''') + """, + ) class x_onetep_section_population_analysis_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_population_analysis_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Population_analysis_cutoff_(A) - ''') + """, + ) class x_onetep_section_kernel_optimisation(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_total_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total_energy(Eh) - ''') + """, + ) x_onetep_total_free_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total_energy(Eh) - ''') + """, + ) x_onetep_band_gap = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" band_gap - ''') + """, + ) x_onetep_rms_occupancy_error = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" rms_occupancy - ''') + """, + ) x_onetep_commutator = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Commutator between Hamiltonian and Kernel - ''') + """, + ) class x_onetep_section_k_band(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_onetep_section_k_points_1(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_k_points_1 = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing k points coordinates (fractional) - ''') + """, + ) class x_onetep_section_k_points(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_k_points = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing k points coordinates (fractional) - ''') + """, + ) class x_onetep_section_relativity_treatment(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_relativity_treatment_scf = Quantity( type=str, shape=[], - description=''' + description=""" Relativity treatment in onetep convention - ''') + """, + ) class x_onetep_section_scf_eigenvalues(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_scf_eigenvalues = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_onetep_section_SCF_iteration_frame(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_frame_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_store_t_md_frame - ''') + """, + ) x_onetep_SCF_frame_energy = Quantity( type=str, shape=[], - description=''' + description=""" energy_frame_iterations - ''') + """, + ) x_onetep_SCF_frame_energy_gain = Quantity( type=str, shape=[], - description=''' + description=""" energy_frame_iterations_gain - ''') + """, + ) x_onetep_frame_time_scf_iteration_wall_end = Quantity( type=str, shape=[], - description=''' + description=""" energy_frame_wall_end_time - ''') + """, + ) x_onetep_frame_energy_free = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" energy_free - ''') + """, + ) x_onetep_frame_energy_total_T0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" energy_free_corrected_for_finite_basis - ''') + """, + ) class x_onetep_section_scf_k_points(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_scf_k_points = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_section_scf_eigenvalues = SubSection( - sub_section=SectionProxy('x_onetep_section_scf_eigenvalues'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_scf_eigenvalues"), repeats=True + ) class x_onetep_section_spin_number(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_spin_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) class x_onetep_section_stress_tensor(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_stress_tensor = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing stress tensor components - ''') + """, + ) class x_onetep_section_time(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_onetep_section_raman_tensor(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_store_raman_tensor = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged Raman susceptibility tensor - ''') + """, + ) x_onetep_ramen_tensor = Quantity( type=np.dtype(np.float64), shape=[3, 3], - unit='ampere / unified_atomic_mass_unit', - description=''' + unit="ampere / unified_atomic_mass_unit", + description=""" Ramen tensor, unit scaled by 0.5 - ''') + """, + ) class x_onetep_section_tddft_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_lr_tddft_cg_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_lr_tddft_cg_threshold - ''') + """, + ) x_onetep_lr_tddft_kernel_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_lr_tddft_kernel_cutoff - ''') + """, + ) x_onetep_lr_tddft_maxit_cg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_onetep_lr_tddft_maxit_cg - ''') + """, + ) x_onetep_lr_tddft_maxit_pen = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_onetep_lr_tddft_maxit_pen - ''') + """, + ) x_onetep_lr_tddft_num_states = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" x_onetep_lr_tddft_num_states - ''') + """, + ) x_onetep_lr_tddft_penalty_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_lr_tddft_penalty_tol - ''') + """, + ) class x_onetep_section_scf_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_energy_threshold_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy Threshold store - ''') + """, + ) x_onetep_max_iter_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number of maximum iterations steps store - ''') + """, + ) x_onetep_smearing_kind = Quantity( type=str, shape=[], - description=''' + description=""" Smearing kind - ''') + """, + ) x_onetep_smearing_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Smearing width - ''') + """, + ) x_onetep_elec_cg_max = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_elec_cg_max - ''') + """, + ) x_onetep_elec_force_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_elec_force_tol - ''') + """, + ) class x_onetep_section_electronic_spectroscpy_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_theory_level = Quantity( type=str, shape=[], - description=''' + description=""" Electronic spectroscopy parameters theory level - ''') + """, + ) x_onetep_spectroscopy_calculation = Quantity( type=str, shape=[], - description=''' + description=""" Electronic spectroscopy parameters calculation type - ''') + """, + ) x_onetep_spec_max_iter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Max number of iterations - ''') + """, + ) x_onetep_spec_max_steps = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Max number of steps - ''') + """, + ) x_onetep_spec_max_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Max number of bands - ''') + """, + ) x_onetep_spec_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Tolerance (eV) - ''') + """, + ) class x_onetep_section_md(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_md_energies = Quantity( type=str, shape=[], - description=''' + description=""" md_energy_components - ''') + """, + ) x_onetep_md_temperature = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" md_temp(K) - ''') + """, + ) x_onetep_md_pressure = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" md_pressure - ''') + """, + ) x_onetep_md_cell_vectors = Quantity( type=str, shape=[], - description=''' + description=""" md_cell_vectors - ''') + """, + ) x_onetep_md_cell_vectors_vel = Quantity( type=str, shape=[], - description=''' + description=""" md_cell_vectors_velocities - ''') + """, + ) x_onetep_md_stress_tensor = Quantity( type=str, shape=[], - description=''' + description=""" md_stress_tensor - ''') + """, + ) x_onetep_md_positions = Quantity( type=str, shape=[], - description=''' + description=""" md_positions - ''') + """, + ) x_onetep_md_forces = Quantity( type=str, shape=[], - description=''' + description=""" md_forces - ''') + """, + ) x_onetep_md_lab = Quantity( type=str, shape=[], - description=''' + description=""" md_lables - ''') + """, + ) x_onetep_md_veloc = Quantity( type=str, shape=[], - description=''' + description=""" md_veloc - ''') + """, + ) class x_onetep_section_edft_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_edft_commutator_thres = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_commutator_thres - ''') + """, + ) x_onetep_edft_energy_thres = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_energy_thres - ''') + """, + ) x_onetep_edft_entropy_thres = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_entropy_thres - ''') + """, + ) x_onetep_edft_extra_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" edft_extra_bands - ''') + """, + ) x_onetep_edft_fermi_thres = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_fermi_thres - ''') + """, + ) x_onetep_edft_free_energy_thres = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_free_energy_thres - ''') + """, + ) x_onetep_edft_maxit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" edft_maxit - ''') + """, + ) x_onetep_edft_rms_gradient_thres = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_rms_gradient_thres - ''') + """, + ) x_onetep_edft_smearing_width = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" edft_smearing_width - ''') + """, + ) class x_onetep_section_ts(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_energy_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_total - ''') + """, + ) x_onetep_ts_cell_vectors = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ts_cell_vectors - ''') + """, + ) x_onetep_ts_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_positions - ''') + """, + ) x_onetep_ts_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_forces - ''') + """, + ) x_onetep_ts_lab = Quantity( type=str, shape=[], - description=''' + description=""" ts_lables - ''') + """, + ) class x_onetep_section_ts_store(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_ts_store - ''') + """, + ) x_onetep_ts_cell_vectors_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_cell_vectors - ''') + """, + ) x_onetep_ts_positions_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_positions_store - ''') + """, + ) x_onetep_ts_forces_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_forces_store - ''') + """, + ) class x_onetep_section_ts_final_store(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_energy_final_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_ts - ''') + """, + ) x_onetep_ts_forces_final_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_forces_final - ''') + """, + ) x_onetep_ts_positions_final_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_energy_positions_final - ''') + """, + ) x_onetep_ts_cell_vectors_final_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_cell_vectors_final - ''') + """, + ) class x_onetep_section_ts_final(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_energy_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_final - ''') + """, + ) x_onetep_ts_cell_vectors_final = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ts_cell_vectors - ''') + """, + ) x_onetep_ts_positions_final = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_positions_final - ''') + """, + ) x_onetep_ts_forces_final = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_force_finals - ''') + """, + ) class x_onetep_section_ts_product(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_energy_product = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_prod - ''') + """, + ) x_onetep_ts_forces_product = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_energy_forces_pro - ''') + """, + ) x_onetep_ts_positions_product = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" ts_energy_positions_pro - ''') + """, + ) x_onetep_ts_cell_vectors_product = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" ts_product_cell_vectors - ''') + """, + ) class x_onetep_section_ts_product_store(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_energy_product_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_energy_components_pro - ''') + """, + ) x_onetep_ts_forces_pro_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_energy_forces_pro_store - ''') + """, + ) x_onetep_ts_positions_pro_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_energy_positions_pro_store - ''') + """, + ) x_onetep_ts_cell_vectors_pro_store = Quantity( type=str, shape=[], - description=''' + description=""" ts_cell_vectors_pro - ''') + """, + ) class x_onetep_section_ts_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_ts_method = Quantity( type=str, shape=[], - description=''' + description=""" ts_method - ''') + """, + ) x_onetep_ts_protocol = Quantity( type=str, shape=[], - description=''' + description=""" ts_protocol - ''') + """, + ) x_onetep_ts_qst_iter = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ts_qst_iterations - ''') + """, + ) x_onetep_ts_number_cg = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ts_number_of_cg_iterations - ''') + """, + ) x_onetep_ts_force_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_force_tolerance (eV/A) - ''') + """, + ) x_onetep_ts_displacement_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_displacement_tolerance (A) - ''') + """, + ) class x_onetep_section_van_der_Waals_parameters(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_disp_method_name_store = Quantity( type=str, shape=[], - description=''' + description=""" Name type - ''') + """, + ) x_onetep_disp_method_name = Quantity( type=str, shape=[], - description=''' + description=""" Name type - ''') + """, + ) x_onetep_Parameter_d = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method G06 - ''') + """, + ) x_onetep_Parameter_LAMBDA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method OBS - ''') + """, + ) x_onetep_Parameter_n = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method OBS - ''') + """, + ) x_onetep_Parameter_s6 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method G06 - ''') + """, + ) x_onetep_Parameter_sR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter for dispersion method TS - ''') + """, + ) class x_onetep_section_energy_components(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_pseudo_local_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Pseudopotential - ''') + """, + ) x_onetep_electronic_kinetic_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Kinetic component store - ''') + """, + ) x_onetep_energy_correction_hartree_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Hartree correction store - ''') + """, + ) x_onetep_energy_XC_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" exchange energy store - ''') + """, + ) x_onetep_ewald_correction_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ewald correction store - ''') + """, + ) x_onetep_dispersion_correction_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" dispersion correction store - ''') + """, + ) x_onetep_integrated_density_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" store_integrated density - ''') + """, + ) x_onetep_pseudo_non_local_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Pseudopotential - ''') + """, + ) class x_onetep_section_edft(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_section_edft_iterations = SubSection( - sub_section=SectionProxy('x_onetep_section_edft_iterations'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_edft_iterations"), repeats=True + ) class x_onetep_section_edft_spin(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_edft_spin_type = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" spin type - ''') + """, + ) x_onetep_edft_n_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" integrated number of electrons - ''') + """, + ) x_onetep_edft_fermi_level = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" fermi level - ''') + """, + ) x_onetep_edft_fermi_level_delta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" fermi level - ''') + """, + ) x_onetep_section_edft_spin_iterations = SubSection( - sub_section=SectionProxy('x_onetep_section_edft_spin_iterations'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_edft_spin_iterations"), repeats=True + ) class x_onetep_section_edft_spin_iterations(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_edft_orbital_iteration_spin = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" orbital - ''') + """, + ) x_onetep_edft_eigenvalue = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" eigenvalues - ''') + """, + ) x_onetep_edft_occupancy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" occupancy - ''') + """, + ) class x_onetep_section_edft_iterations(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_edft_step = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" step - ''') + """, + ) x_onetep_edft_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" step - ''') + """, + ) x_onetep_edft_0K = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" step - ''') + """, + ) x_onetep_residual_nonorthog = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" step - ''') + """, + ) x_onetep_residual_n_elec = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" step - ''') + """, + ) x_onetep_edft_commutator = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Commutator - ''') + """, + ) x_onetep_edft_free_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" free energy A=E-TS - ''') + """, + ) x_onetep_edft_rms_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" rms gradient in edft - ''') + """, + ) x_onetep_edft_entropy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" rms gradient in edft - ''') + """, + ) x_onetep_edft_iteration = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" iteration number - ''') + """, + ) x_onetep_section_edft_spin = SubSection( - sub_section=SectionProxy('x_onetep_section_edft_spin'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_edft_spin"), repeats=True + ) class x_onetep_section_orbital_information(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_onetep_total_number_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_total_number_occ_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_occupancy_sum = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_homo_lumo_gap = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_mid_gap = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_orbital_number = Quantity( type=np.dtype(np.int32), - shape=['x_onetep_total_number_occ_orbitals'], - description=''' + shape=["x_onetep_total_number_occ_orbitals"], + description=""" - - ''') + """, + ) x_onetep_orbital_energy = Quantity( type=np.dtype(np.float64), - shape=['x_onetep_total_number_occ_orbitals'], - description=''' + shape=["x_onetep_total_number_occ_orbitals"], + description=""" - - ''') + """, + ) x_onetep_orbital_occupancy_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_orbital_number_store = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_orbital_energy_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_orbital_occupancy = Quantity( type=np.dtype(np.float64), - shape=['x_onetep_total_number_occ_orbitals'], - description=''' + shape=["x_onetep_total_number_occ_orbitals"], + description=""" - - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_onetep_atom_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Forces on the atoms as minus gradient of energy_total, including forces' unitary- transformation (rigid body) filtering and including constraints, if present. The derivatives with respect to displacements of the nuclei in the gradient are @@ -2106,994 +2340,1104 @@ class Run(runschema.run.Run): non periodic), atom_forces_raw for the unfiltered counterpart. Furthermore, forces due to constraints like fixed atoms, distances, angles, dihedrals, and so on, are here included (see atom_forces_raw for the unfiltered counterpart). - ''') + """, + ) x_onetep_atom_ionforces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" forces - ''') + """, + ) x_onetep_atom_local_potentialforces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" forces - ''') + """, + ) x_onetep_atom_nonlocal_potentialforces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" forces - ''') + """, + ) x_onetep_atom_nonself_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" forces - ''') + """, + ) x_onetep_atom_correction_forces = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" forces - ''') + """, + ) x_onetep_basis_set_planewave_cutoff_iteration_0 = Quantity( type=str, shape=[], - description=''' + description=""" cutoff at iteration 0 of geometry optimisation - ''') + """, + ) x_onetep_final_time = Quantity( type=str, shape=[], - description=''' + description=""" onetep_calculation_time - ''') + """, + ) x_onetep_final_date = Quantity( type=str, shape=[], - description=''' + description=""" onetep_calculation_date - ''') + """, + ) x_onetep_compiler = Quantity( type=str, shape=[], - description=''' + description=""" Compiler name - ''') + """, + ) x_onetep_constants_reference = Quantity( type=str, shape=[], - description=''' + description=""" Fundamental constant data source - ''') + """, + ) x_onetep_fft_library = Quantity( type=str, shape=[], - description=''' + description=""" fft library name - ''') + """, + ) x_onetep_avarage_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_finalisation_time - ''') + """, + ) x_onetep_geom_converged = Quantity( type=str, shape=[], - description=''' + description=""" onetep_geom_converged - ''') + """, + ) x_onetep_pbc_cutoff = Quantity( type=str, shape=[], - description=''' + description=""" onetep_pbc cutoff for effect of open boundary - ''') + """, + ) x_onetep_is_smearing = Quantity( type=str, shape=[], - description=''' + description=""" Turns on the smeared ion representation for electrostatics calculation. - ''') + """, + ) x_onetep_total_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x_onetep_Initialisation_time - ''') + """, + ) x_onetep_maths_library = Quantity( type=str, shape=[], - description=''' + description=""" Maths library name - ''') + """, + ) x_onetep_program_compilation_date = Quantity( type=str, shape=[], - description=''' + description=""" Compilation date (string) - ''') + """, + ) x_onetep_program_compilation_time = Quantity( type=str, shape=[], - description=''' + description=""" Compilation time (string) - ''') + """, + ) x_onetep_program_execution_date = Quantity( type=str, shape=[], - description=''' + description=""" Run execution date (string) - ''') + """, + ) x_onetep_program_execution_time = Quantity( type=str, shape=[], - description=''' + description=""" Run execution start time (string) - ''') + """, + ) x_onetep_crystal_point_group = Quantity( type=str, shape=[], - description=''' + description=""" Point group of the crystal (Schoenflies notation) - ''') + """, + ) x_onetep_space_group = Quantity( type=str, shape=[], - description=''' + description=""" Point space of the crystal - ''') + """, + ) x_onetep_ts_path = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_path_number - ''') + """, + ) x_onetep_ts_path_ts_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_path_final - ''') + """, + ) x_onetep_ts_path_product = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ts_path_pro - ''') + """, + ) x_onetep_store_atom_forces_band = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_number_of_processors = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of processors - ''') + """, + ) x_onetep_section_vibrational_frequencies = SubSection( - sub_section=SectionProxy('x_onetep_section_vibrational_frequencies'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_vibrational_frequencies"), + repeats=True, + ) x_onetep_section_tddft = SubSection( - sub_section=SectionProxy('x_onetep_section_tddft'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_tddft"), repeats=True + ) x_onetep_section_dipole = SubSection( - sub_section=SectionProxy('x_onetep_section_dipole'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_dipole"), repeats=True + ) x_onetep_section_collect_scf_eigenvalues = SubSection( - sub_section=SectionProxy('x_onetep_section_collect_scf_eigenvalues'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_collect_scf_eigenvalues"), + repeats=True, + ) x_onetep_section_mulliken_population_analysis = SubSection( - sub_section=SectionProxy('x_onetep_section_mulliken_population_analysis'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_mulliken_population_analysis"), + repeats=True, + ) x_onetep_section_nbo_population_analysis = SubSection( - sub_section=SectionProxy('x_onetep_section_nbo_population_analysis'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_nbo_population_analysis"), + repeats=True, + ) x_onetep_section_geom_optimisation_method = SubSection( - sub_section=SectionProxy('x_onetep_section_geom_optimisation_method'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_geom_optimisation_method"), + repeats=True, + ) x_onetep_section_optics_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_optics_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_optics_parameters"), repeats=True + ) x_onetep_section_ngwf_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_ngwf_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ngwf_parameters"), repeats=True + ) x_onetep_section_kernel_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_kernel_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_kernel_parameters"), repeats=True + ) x_onetep_section_phonons = SubSection( - sub_section=SectionProxy('x_onetep_section_phonons'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_phonons"), repeats=True + ) x_onetep_section_density_mixing_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_density_mixing_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_density_mixing_parameters"), + repeats=True, + ) x_onetep_section_population_analysis_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_population_analysis_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_population_analysis_parameters"), + repeats=True, + ) x_onetep_section_kernel_optimisation = SubSection( - sub_section=SectionProxy('x_onetep_section_kernel_optimisation'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_kernel_optimisation"), repeats=True + ) x_onetep_section_SCF_iteration_frame = SubSection( - sub_section=SectionProxy('x_onetep_section_SCF_iteration_frame'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_SCF_iteration_frame"), repeats=True + ) x_onetep_section_time = SubSection( - sub_section=SectionProxy('x_onetep_section_time'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_time"), repeats=True + ) x_onetep_section_raman_tensor = SubSection( - sub_section=SectionProxy('x_onetep_section_raman_tensor'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_raman_tensor"), repeats=True + ) x_onetep_section_tddft_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_tddft_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_tddft_parameters"), repeats=True + ) x_onetep_section_scf_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_scf_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_scf_parameters"), repeats=True + ) x_onetep_section_electronic_spectroscpy_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_electronic_spectroscpy_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_electronic_spectroscpy_parameters"), + repeats=True, + ) x_onetep_section_md = SubSection( - sub_section=SectionProxy('x_onetep_section_md'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_md"), repeats=True + ) x_onetep_section_edft_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_edft_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_edft_parameters"), repeats=True + ) x_onetep_section_ts = SubSection( - sub_section=SectionProxy('x_onetep_section_ts'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts"), repeats=True + ) x_onetep_section_ts_store = SubSection( - sub_section=SectionProxy('x_onetep_section_ts_store'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts_store"), repeats=True + ) x_onetep_section_ts_final_store = SubSection( - sub_section=SectionProxy('x_onetep_section_ts_final_store'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts_final_store"), repeats=True + ) x_onetep_section_ts_final = SubSection( - sub_section=SectionProxy('x_onetep_section_ts_final'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts_final"), repeats=True + ) x_onetep_section_ts_product = SubSection( - sub_section=SectionProxy('x_onetep_section_ts_product'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts_product"), repeats=True + ) x_onetep_section_ts_product_store = SubSection( - sub_section=SectionProxy('x_onetep_section_ts_product_store'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts_product_store"), repeats=True + ) x_onetep_section_ts_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_ts_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_ts_parameters"), repeats=True + ) x_onetep_section_van_der_Waals_parameters = SubSection( - sub_section=SectionProxy('x_onetep_section_van_der_Waals_parameters'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_van_der_Waals_parameters"), + repeats=True, + ) x_onetep_section_energy_components = SubSection( - sub_section=SectionProxy('x_onetep_section_energy_components'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_energy_components"), repeats=True + ) x_onetep_section_edft = SubSection( - sub_section=SectionProxy('x_onetep_section_edft'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_edft"), repeats=True + ) x_onetep_section_orbital_information = SubSection( - sub_section=SectionProxy('x_onetep_section_orbital_information'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_orbital_information"), repeats=True + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_onetep_net_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Net charge of system - ''') + """, + ) x_onetep_number_of_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of bands - ''') + """, + ) x_onetep_units_atom_position = Quantity( type=str, shape=[], - description=''' + description=""" units - ''') + """, + ) x_onetep_number_of_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number of electrons - ''') + """, + ) x_onetep_atom_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Storing atomic positions in fractional coordinates - ''') + """, + ) x_onetep_cell_volume = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_cell_volume - ''') + """, + ) x_onetep_optimised_atom_labels = Quantity( type=str, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Temporary storing atomic positions - ''') + """, + ) x_onetep_optimised_atom_positions = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Storing atomic optimised positions in fractional coordinates - ''') + """, + ) x_onetep_velocities_cell_vector = Quantity( type=np.dtype(np.float64), shape=[3, 3], - description=''' + description=""" cell vector velocities - ''') + """, + ) x_onetep_number_of_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number_of_atoms - ''') + """, + ) x_onetep_number_of_ngwf = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number_of_ngwf - ''') + """, + ) x_onetep_number_of_projectors = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number_of_proj - ''') + """, + ) x_onetep_store_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atom labels - ''') + """, + ) x_onetep_store_atom_positions = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_onetep_store_atom_ionic_velocities = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_onetep_atom_ionic_velocities = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Temporary storing atomic positions - ''') + """, + ) x_onetep_store_optimised_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_onetep_store_optimised_atom_positions = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atomic positions - ''') + """, + ) x_onetep_section_atom_ionic_velocities = SubSection( - sub_section=SectionProxy('x_onetep_section_atom_ionic_velocities'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_atom_ionic_velocities"), repeats=True + ) x_onetep_section_atom_positions_optim = SubSection( - sub_section=SectionProxy('x_onetep_section_atom_positions_optim'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_atom_positions_optim"), repeats=True + ) x_onetep_section_atom_positions = SubSection( - sub_section=SectionProxy('x_onetep_section_atom_positions'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_atom_positions"), repeats=True + ) x_onetep_section_cell_optim = SubSection( - sub_section=SectionProxy('x_onetep_section_cell_optim'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_cell_optim"), repeats=True + ) x_onetep_section_cell = SubSection( - sub_section=SectionProxy('x_onetep_section_cell'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_cell"), repeats=True + ) class BasisSet(runschema.method.BasisSet): - m_def = Section(validate=False, extends_base_section=True) x_onetep_size_std_grid = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" size of standard grid (eV) - ''') + """, + ) x_onetep_size_fine_grid = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" sise of fine grid (1/A) - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_onetep_enthalpy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_Enthalpy - ''') + """, + ) x_onetep_frequency = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_frequency (cm-1) - ''') + """, + ) x_onetep_improved_energy_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" md_forces - ''') + """, + ) x_onetep_frame_time_0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_store_t_md_frame - ''') + """, + ) x_onetep_geom_iteration_index = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Index for number of iterations in geometry optimisation - ''') + """, + ) x_onetep_pseudo_local = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Pseudopotential - ''') + """, + ) x_onetep_pseudo_non_local = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Pseudopotential - ''') + """, + ) x_onetep_rms_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" RMS Gradient - ''') + """, + ) x_onetep_n_ngwf_iterations = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGWF iterations - ''') + """, + ) x_onetep_integrated_density = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" integrated density - ''') + """, + ) x_onetep_dispersion_correction = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Dispersion correction to the final SCF energy - ''') + """, + ) x_onetep_ewald_correction = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Ewald correction - ''') + """, + ) x_onetep_store_atom_forces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_store_atom_ionforces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_store_atom_localforces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_store_atom_nonlocalforces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_store_atom_nonselfforces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_store_atom_corrforces = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing converged atom forces (ev/A) - ''') + """, + ) x_onetep_initial_scf_iteration_wall_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Initial SCF iteration wall time - ''') + """, + ) x_onetep_total_dispersion_corrected_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Total electronic energy that includes dispersion energy computed with Disp_method_name not corrected for finite basis-set - ''') + """, + ) x_onetep_total_energy_corrected_for_finite_basis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" onetep_total_energy_corrected_for_finite_basis - ''') + """, + ) x_onetep_total_energy_corrected_for_finite_basis_store = Quantity( type=str, shape=[], - description=''' + description=""" onetep_total_energy_corrected_for_finite_basis_store - ''') + """, + ) x_onetep_number_of_scf_iterations_store = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of scf iterations in single point calculation - ''') + """, + ) x_onetep_energy_total_scf_iteration_list = Quantity( type=np.dtype(np.float64), shape=[-1], - description=''' + description=""" Total electronic energy calculated with XC_method_scf during the scf iterations is stored in a list - ''') + """, + ) x_onetep_ts_coordinate_path = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TS coordinate path - ''') + """, + ) x_onetep_energy_reac = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy of reactant - ''') + """, + ) x_onetep_energy_prod = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy of product - ''') + """, + ) x_onetep_geom_optim_energy_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy of product - ''') + """, + ) x_onetep_energy_lst_max = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Energy of LST max - ''') + """, + ) x_onetep_location_lst_max = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" location of LST max - ''') + """, + ) x_onetep_barrier_reac = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" barrier from reac - ''') + """, + ) x_onetep_barrier_prod = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" barrier from prod - ''') + """, + ) x_onetep_reaction_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" reaction energy - ''') + """, + ) x_onetep_section_scf_k_points = SubSection( - sub_section=SectionProxy('x_onetep_section_scf_k_points'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_scf_k_points"), repeats=True + ) x_onetep_section_spin_number = SubSection( - sub_section=SectionProxy('x_onetep_section_spin_number'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_spin_number"), repeats=True + ) x_onetep_section_stress_tensor = SubSection( - sub_section=SectionProxy('x_onetep_section_stress_tensor'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_stress_tensor"), repeats=True + ) - x_onetep_section_tddft = SubSection(sub_section=x_onetep_section_tddft.m_def, repeats=True) + x_onetep_section_tddft = SubSection( + sub_section=x_onetep_section_tddft.m_def, repeats=True + ) class Energy(runschema.calculation.Energy): - m_def = Section(validate=False, extends_base_section=True) - x_onetep_pseudopotential_local = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def) + x_onetep_pseudopotential_local = SubSection( + sub_section=runschema.calculation.EnergyEntry.m_def + ) - x_onetep_pseudopotential_non_local = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def) + x_onetep_pseudopotential_non_local = SubSection( + sub_section=runschema.calculation.EnergyEntry.m_def + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_onetep_functional_and_weight = Quantity( type=str, shape=[], - description=''' + description=""" XC functional+weight in onetep convention - ''') + """, + ) x_onetep_section_functional_definition = SubSection( - sub_section=SectionProxy('x_onetep_section_functional_definition'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_functional_definition"), repeats=True + ) x_onetep_section_functionals = SubSection( - sub_section=SectionProxy('x_onetep_section_functionals'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_functionals"), repeats=True + ) x_onetep_section_relativity_treatment = SubSection( - sub_section=SectionProxy('x_onetep_section_relativity_treatment'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_relativity_treatment"), repeats=True + ) x_onetep_input_parameters = Quantity( type=JSON, shape=[], - description=''' - ''' + description=""" + """, ) class GeometryOptimization(simulationworkflowschema.GeometryOptimization): - m_def = Section(validate=False, extends_base_section=True) geometry_optimization_frequency_tol = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Specifies the estimated average phonon frequency (as an energy) used to initialize the inverse Hessian matrix for geometry optimization. (eV)) - ''') + """, + ) x_onetep_max_number_of_steps = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Number_of iterations geom_optim - ''') + """, + ) geometry_optimization_geometry_conv_win = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" geom optim number of consecutive iterations during which convergence must be met - ''') + """, + ) class MolecularDynamics(simulationworkflowschema.MolecularDynamics): - m_def = Section(validate=False, extends_base_section=True) x_onetep_thermostat_target_temperature = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" thermostat_target_temperature(K) - ''') + """, + ) x_onetep_barostat_type = Quantity( type=str, shape=[], - description=''' + description=""" barostat_type - ''') + """, + ) x_onetep_thermostat_type = Quantity( type=str, shape=[], - description=''' + description=""" thermostat_type - ''') + """, + ) x_onetep_thermostat_tau = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" thermostat_type - ''') + """, + ) x_onetep_barostat_tau = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" barostat_tau - ''') + """, + ) x_onetep_integrator_dt = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" MD_time_step (ps) - ''') + """, + ) x_onetep_number_of_steps_requested = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" MD_time_step_number - ''') + """, + ) x_onetep_frame_pressure = Quantity( type=str, shape=[], - description=''' + description=""" MD_pressure - ''') + """, + ) x_onetep_frame_energy_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" MD_scf_energy tolerance (eV) - ''') + """, + ) x_onetep_frame_eigen_tolerance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" MD_scf_eigen tolerance (eV) - ''') + """, + ) class BandStructure(runschema.calculation.BandStructure): - m_def = Section(validate=False, extends_base_section=True) x_onetep_k_path = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_store_k_path = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_onetep_section_eigenvalues_1 = SubSection( - sub_section=SectionProxy('x_onetep_section_eigenvalues_1'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_eigenvalues_1"), repeats=True + ) x_onetep_section_eigenvalues = SubSection( - sub_section=SectionProxy('x_onetep_section_eigenvalues'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_eigenvalues"), repeats=True + ) x_onetep_section_k_band = SubSection( - sub_section=SectionProxy('x_onetep_section_k_band'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_k_band"), repeats=True + ) x_onetep_section_k_points_1 = SubSection( - sub_section=SectionProxy('x_onetep_section_k_points_1'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_k_points_1"), repeats=True + ) x_onetep_section_k_points = SubSection( - sub_section=SectionProxy('x_onetep_section_k_points'), - repeats=True) + sub_section=SectionProxy("x_onetep_section_k_points"), repeats=True + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_onetep_scf_rms_gradient = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" RMS Gradient - ''') + """, + ) class AtomParameters(runschema.method.AtomParameters): - m_def = Section(validate=False, extends_base_section=True) x_onetep_store_atom_mass = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atom mass - ''') + """, + ) x_onetep_n_ngwf_atom_store = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number ngwf per atom - ''') + """, + ) x_onetep_ngwf_radius = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" radius ngwf - ''') + """, + ) x_onetep_n_ngwf_atom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number ngwf per atom - ''') + """, + ) x_onetep_ngwf_radius_store = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" radius ngwf - ''') + """, + ) x_onetep_store_atom_name = Quantity( type=str, shape=[], - description=''' + description=""" Temporary storing atom name - ''') + """, + ) diff --git a/electronicparsers/onetep/parser.py b/electronicparsers/onetep/parser.py index 6b8f93a2..92b2dee6 100644 --- a/electronicparsers/onetep/parser.py +++ b/electronicparsers/onetep/parser.py @@ -23,23 +23,30 @@ from nomad.units import ureg from nomad.parsing.file_parser import TextParser, Quantity -from runschema.run import ( - Run, Program, TimeRun) +from runschema.run import Run, Program, TimeRun from runschema.method import ( - Method, DFT, XCFunctional, Functional, BasisSet, BasisSetContainer, -) -from runschema.system import ( - System, Atoms + Method, + DFT, + XCFunctional, + Functional, + BasisSet, + BasisSetContainer, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, ScfIteration, Charges + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + ScfIteration, + Charges, ) -from .metainfo.onetep import ( - x_onetep_section_tddft, x_onetep_section_tddft_excitations) +from .metainfo.onetep import x_onetep_section_tddft, x_onetep_section_tddft_excitations -re_n = r'[\n\r]' -re_f = r'[-+]?\d+\.\d*(?:[DdEe][-+]\d+)?' +re_n = r"[\n\r]" +re_f = r"[-+]?\d+\.\d*(?:[DdEe][-+]\d+)?" class InputParser(TextParser): @@ -48,237 +55,310 @@ def __init__(self): def init_quantities(self): def to_block(val_in): - val = val_in.strip().replace('"', '').splitlines() + val = val_in.strip().replace('"', "").splitlines() key = val[0].strip() return [key.lower(), [v.split() for v in val[1:]]] self._quantities = [ - Quantity('parameter', r'([a-z_]+) +: +(\S+)', repeats=True), + Quantity("parameter", r"([a-z_]+) +: +(\S+)", repeats=True), Quantity( - 'block', - r'\%block +([a-z_]+\s+[\s\S]+?)\s+\%endblock', - repeats=True, str_operation=to_block) + "block", + r"\%block +([a-z_]+\s+[\s\S]+?)\s+\%endblock", + repeats=True, + str_operation=to_block, + ), ] @property def cell(self): self._results = dict() if self._results is None else self._results - if self._results.get('cell') is None: + if self._results.get("cell") is None: def resolve_unit(value): if isinstance(value[0][0], str): - if value[0][0].lower().startswith('ang'): + if value[0][0].lower().startswith("ang"): return ureg.angstrom - if value[0][0].lower().startswith('bohr'): + if value[0][0].lower().startswith("bohr"): return ureg.bohr cell = dict() - for block in self.get('block', []): - if block[0].lower() == 'lattice_cart': + for block in self.get("block", []): + if block[0].lower() == "lattice_cart": unit = resolve_unit(block[1]) - cell['lattice_vectors'] = block[1] * ureg.bohr if unit is None else block[1][1:] * unit - elif block[0].lower() == 'positions_abs': + cell["lattice_vectors"] = ( + block[1] * ureg.bohr if unit is None else block[1][1:] * unit + ) + elif block[0].lower() == "positions_abs": unit = resolve_unit(block[1]) value = block[1] if unit is None else block[1][1:] unit = ureg.bohr if unit is None else unit - cell['labels'] = [v[0] for v in value] - cell['positions'] = np.array([v[1:4] for v in value], dtype=np.dtype(np.float64)) * unit - self._results['cell'] = cell - return self._results['cell'] + cell["labels"] = [v[0] for v in value] + cell["positions"] = ( + np.array([v[1:4] for v in value], dtype=np.dtype(np.float64)) + * unit + ) + self._results["cell"] = cell + return self._results["cell"] class OutParser(TextParser): def init_quantities(self): calculation_quantities = [ Quantity( - 'iteration', - rf'\>\>\> Optimising kernel([\s\S]+?' - rf'(?:Predicted gain in energy|\-\> RMS NGWF gradient|maximum number of NGWF).+)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'energy_total', - rf'Total energy += +({re_f}) +Eh', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'band_gap', - rf'Estimated bandgap += +({re_f}) +Eh', - dtype=np.float64, unit=ureg.hartree - ), - Quantity( - 'x_onetep_rms_occupancy_error', - rf'RMS occupancy error += +({re_f})', - dtype=np.float64 - ), - Quantity( - 'x_onetep_commutator', - rf'\[H,K\] commutator += +({re_f})', - dtype=np.float64 - ), - Quantity( - 'rms_gradient', - rf'RMS gradient += +({re_f})', - dtype=np.float64 - ), - - ]) + "iteration", + rf"\>\>\> Optimising kernel([\s\S]+?" + rf"(?:Predicted gain in energy|\-\> RMS NGWF gradient|maximum number of NGWF).+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_total", + rf"Total energy += +({re_f}) +Eh", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "band_gap", + rf"Estimated bandgap += +({re_f}) +Eh", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_onetep_rms_occupancy_error", + rf"RMS occupancy error += +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_onetep_commutator", + rf"\[H,K\] commutator += +({re_f})", + dtype=np.float64, + ), + Quantity( + "rms_gradient", + rf"RMS gradient += +({re_f})", + dtype=np.float64, + ), + ] + ), ), Quantity( - 'energy_components', - r'ENERGY COMPONENTS \(Eh\)([\s\S]+?\={10})', - sub_parser=TextParser(quantities=[ - Quantity( - 'contribution', rf'\| (.+): +({re_f})', - str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)], repeats=True), - Quantity('integrated_density', rf'Integrated density +: +({re_f})', dtype=np.float64) - ]) + "energy_components", + r"ENERGY COMPONENTS \(Eh\)([\s\S]+?\={10})", + sub_parser=TextParser( + quantities=[ + Quantity( + "contribution", + rf"\| (.+): +({re_f})", + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + repeats=True, + ), + Quantity( + "integrated_density", + rf"Integrated density +: +({re_f})", + dtype=np.float64, + ), + ] + ), ), Quantity( - 'forces', - r'Forces \*+([\s\S]+?TOTAL)', - sub_parser=TextParser(quantities=[Quantity( - 'value', - rf'[A-Z][a-z]* +\d+ +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64))]) + "forces", + r"Forces \*+([\s\S]+?TOTAL)", + sub_parser=TextParser( + quantities=[ + Quantity( + "value", + rf"[A-Z][a-z]* +\d+ +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ) + ] + ), ), Quantity( - 'convergence_tolerance_energy_difference', - rf'dE\/ion +\| +({re_f}) +\| +({re_f}) +\| +Ha', - dtype=np.dtype(np.float64), unit=ureg.hartree + "convergence_tolerance_energy_difference", + rf"dE\/ion +\| +({re_f}) +\| +({re_f}) +\| +Ha", + dtype=np.dtype(np.float64), + unit=ureg.hartree, ), Quantity( - 'convergence_tolerance_force_maximum', - rf'\|F\|max +\| +({re_f}) +\| +({re_f}) +\| +Ha\/Bohr', - dtype=np.dtype(np.float64), unit=ureg.hartree / ureg.bohr + "convergence_tolerance_force_maximum", + rf"\|F\|max +\| +({re_f}) +\| +({re_f}) +\| +Ha\/Bohr", + dtype=np.dtype(np.float64), + unit=ureg.hartree / ureg.bohr, ), Quantity( - 'convergence_tolerance_displacement_maximum', - rf'\|dR\|max +\| +({re_f}) +\| +({re_f}) +\| +Bohr', - dtype=np.dtype(np.float64), unit=ureg.bohr + "convergence_tolerance_displacement_maximum", + rf"\|dR\|max +\| +({re_f}) +\| +({re_f}) +\| +Bohr", + dtype=np.dtype(np.float64), + unit=ureg.bohr, ), Quantity( - 'cell', - r'Element +Atom +Absolute co\-ordinates of atoms([\s\S]+?)x{10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'positions', - rf'({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64), repeats=True), - Quantity('labels', r'([A-Z][a-z]*) +\d+', dtype=str, repeats=True)]) + "cell", + r"Element +Atom +Absolute co\-ordinates of atoms([\s\S]+?)x{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "positions", + rf"({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + repeats=True, + ), + Quantity( + "labels", r"([A-Z][a-z]*) +\d+", dtype=str, repeats=True + ), + ] + ), ), Quantity( - 'mulliken', - r'Mulliken Atomic Populations\s+\-+\s+' - r'Species +Ion +Total +Charge \(e\)\s+\=+\s+([\s\S]+?)\={10}', - str_operation=lambda x: [v.strip().split() for v in x.strip().splitlines()] - ) + "mulliken", + r"Mulliken Atomic Populations\s+\-+\s+" + r"Species +Ion +Total +Charge \(e\)\s+\=+\s+([\s\S]+?)\={10}", + str_operation=lambda x: [ + v.strip().split() for v in x.strip().splitlines() + ], + ), ] self._quantities = [ - Quantity('program_version', r'Version (\S+)', dtype=str), - Quantity('program_name', r'(\S+) is based on developments described', dtype=str), - Quantity('x_onetep_number_of_processors', r'Default threads: (\d+)', dtype=np.dtype(np.int32)), - Quantity('input_file', r'Reading parameters from file \"(.+?)\"', dtype=str), + Quantity("program_version", r"Version (\S+)", dtype=str), Quantity( - 'input', - r'INPUT FILE \-+([\s\S]+?)\-+ END INPUT FILE', - sub_parser=TextParser(quantities=[ - Quantity('parameter', r'([a-z\_]+) +: +(\S+)', repeats=True), - ]) + "program_name", r"(\S+) is based on developments described", dtype=str ), Quantity( - 'date_start', - r'Job started: (\d\d\-\d\d\-\d\d\d\d \d\d:\d\d \(\+\d\d\d\d\))', - flatten=False, dtype=str), + "x_onetep_number_of_processors", + r"Default threads: (\d+)", + dtype=np.dtype(np.int32), + ), Quantity( - 'date_end', - r'Job completed: (\d\d\-\d\d\-\d\d\d\d \d\d:\d\d \(\+\d\d\d\d\))', - flatten=False, dtype=str), + "input_file", r"Reading parameters from file \"(.+?)\"", dtype=str + ), Quantity( - 'psinc', - r'PSINC grid sizes([\s\S]+)=+', - sub_parser=TextParser(quantities=[ - Quantity( - 'cutoff', - rf'KE cutoff=\s+({re_f})Eh', - dtype=np.float64, unit=ureg.hartree, - ), - ]) + "input", + r"INPUT FILE \-+([\s\S]+?)\-+ END INPUT FILE", + sub_parser=TextParser( + quantities=[ + Quantity("parameter", r"([a-z\_]+) +: +(\S+)", repeats=True), + ] + ), ), Quantity( - 'geometry_optimization', - r'Starting ONETEP Geometry Optimisation([\s\S]+?)(?:\- TIMING|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'single_point', - r'\>\>\> Optimising kernel for current NGWFs:([\s\S]+?\|dR\|max.+)', - sub_parser=TextParser(quantities=calculation_quantities) - ), - Quantity( - 'iteration', - r'(Starting BFGS iteration +\d+[\s\S]+?\|dR\|max.+)', - repeats=True, sub_parser=TextParser(quantities=calculation_quantities + [ - Quantity( - 'improve', - r'BFGS: improving iteration([\s\S]+?\|dR\|max.+)', - sub_parser=TextParser(quantities=calculation_quantities) - ) - ]) - ), - Quantity('converged', r'Geometry +optimization +(\S+)', str_operation=lambda x: x == 'completed'), - Quantity( - 'final_configuration', - r'(Final Configuration:[\s\S]+?Final Enthalpy.+)', - sub_parser=TextParser(quantities=[ - - ]) - ) - ]) + "date_start", + r"Job started: (\d\d\-\d\d\-\d\d\d\d \d\d:\d\d \(\+\d\d\d\d\))", + flatten=False, + dtype=str, + ), + Quantity( + "date_end", + r"Job completed: (\d\d\-\d\d\-\d\d\d\d \d\d:\d\d \(\+\d\d\d\d\))", + flatten=False, + dtype=str, ), Quantity( - 'single_point', - r'(\>\>\> Optimising kernel for current NGWFs:[\s\S]+?)(?:\- TIMING|\Z)', - sub_parser=TextParser(quantities=calculation_quantities) + "psinc", + r"PSINC grid sizes([\s\S]+)=+", + sub_parser=TextParser( + quantities=[ + Quantity( + "cutoff", + rf"KE cutoff=\s+({re_f})Eh", + dtype=np.float64, + unit=ureg.hartree, + ), + ] + ), ), Quantity( - 'tddft', - r'(LR\-TDDFT CG optimisation[\s\S]+?)(?:\- TIMING|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - r'(LR_TDDFT CG iteration +\d+ +\#+[\s\S]+?(?:\#{75}|TDDFT_grad))', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'energy_total', - rf'LR\-TDDFT energy += +({re_f})', - dtype=np.float64, unit=ureg.hartree + "geometry_optimization", + r"Starting ONETEP Geometry Optimisation([\s\S]+?)(?:\- TIMING|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "single_point", + r"\>\>\> Optimising kernel for current NGWFs:([\s\S]+?\|dR\|max.+)", + sub_parser=TextParser(quantities=calculation_quantities), + ), + Quantity( + "iteration", + r"(Starting BFGS iteration +\d+[\s\S]+?\|dR\|max.+)", + repeats=True, + sub_parser=TextParser( + quantities=calculation_quantities + + [ + Quantity( + "improve", + r"BFGS: improving iteration([\s\S]+?\|dR\|max.+)", + sub_parser=TextParser( + quantities=calculation_quantities + ), + ) + ] ), - Quantity( - 'x_onetep_tddft_omega_change', - rf'Change in omega += +({re_f})', - dtype=np.float64 + ), + Quantity( + "converged", + r"Geometry +optimization +(\S+)", + str_operation=lambda x: x == "completed", + ), + Quantity( + "final_configuration", + r"(Final Configuration:[\s\S]+?Final Enthalpy.+)", + sub_parser=TextParser(quantities=[]), + ), + ] + ), + ), + Quantity( + "single_point", + r"(\>\>\> Optimising kernel for current NGWFs:[\s\S]+?)(?:\- TIMING|\Z)", + sub_parser=TextParser(quantities=calculation_quantities), + ), + Quantity( + "tddft", + r"(LR\-TDDFT CG optimisation[\s\S]+?)(?:\- TIMING|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + r"(LR_TDDFT CG iteration +\d+ +\#+[\s\S]+?(?:\#{75}|TDDFT_grad))", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_total", + rf"LR\-TDDFT energy += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "x_onetep_tddft_omega_change", + rf"Change in omega += +({re_f})", + dtype=np.float64, + ), + Quantity( + "rms_gradient", + rf"RMS gradient += +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_onetep_tddft_number_conv_states", + r"Number of newly converged states: +(\d+)", + dtype=np.int32, + ), + ] ), - Quantity( - 'rms_gradient', - rf'RMS gradient += +({re_f})', - dtype=np.float64 + ), + Quantity( + "excitation", + r"\|Excitation\| +Energy \(in Ha\).+([\s\d\.\-\+E]+)", + str_operation=lambda x: np.array( + [v.strip().split() for v in x.strip().splitlines()], + dtype=np.dtype(np.float64), ), - Quantity( - 'x_onetep_tddft_number_conv_states', - r'Number of newly converged states: +(\d+)', - dtype=np.int32 - ) - ]) - ), - Quantity( - 'excitation', - r'\|Excitation\| +Energy \(in Ha\).+([\s\d\.\-\+E]+)', - str_operation=lambda x: np.array( - [v.strip().split() for v in x.strip().splitlines()], - dtype=np.dtype(np.float64)) - ) - ]) - ) + ), + ] + ), + ), ] @@ -287,30 +367,33 @@ def __init__(self): self.out_parser = OutParser() self.input_parser = InputParser() self._xc_map = { - 'PBE': ['GGA_C_PBE', 'GGA_X_PBE'], - 'LDA': ['LDA_C_PZ', 'LDA_X_PZ'], - 'PW91': ['GGA_C_PW91', 'GGA_X_PW91'], - 'PW92': ['GGA_C_PW92', 'GGA_X_PW92'], - 'GGA': ['GGA_X_PBE'], - 'CAPZ': ['LDA_C_PZ'], - 'VWN': ['LDA_C_VWN'], - 'PBESOL': ['GGA_X_PBE_SOL'], - 'RPBE': ['GGA_X_RPBE'], - 'REVPBE': ['GGA_X_PBE_R'], - 'BLYP': ['GGA_X_B88', 'GGA_C_LYP'], - 'XLYP': ['GGA_XC_XLYP'], - 'OPTB88': ['GGA_X_OPTB88_VDW', 'LDA_C_PZ'], - 'OPTPBE': ['GGA_X_OPTPBE_VDW', 'LDA_C_PZ'], - 'VDWDF': ['GGA_X_PBE_R_VDW', 'LDA_C_PZ'], - 'VDWDF2': ['GGA_X_RPW86', 'LDA_C_PZ'], - 'VV10': ['HYB_GGA_XC_LC_VV10'], - 'AVV10S': ['GGA_X_AM05', 'GGA_C_AM05_rVV10-sol'] + "PBE": ["GGA_C_PBE", "GGA_X_PBE"], + "LDA": ["LDA_C_PZ", "LDA_X_PZ"], + "PW91": ["GGA_C_PW91", "GGA_X_PW91"], + "PW92": ["GGA_C_PW92", "GGA_X_PW92"], + "GGA": ["GGA_X_PBE"], + "CAPZ": ["LDA_C_PZ"], + "VWN": ["LDA_C_VWN"], + "PBESOL": ["GGA_X_PBE_SOL"], + "RPBE": ["GGA_X_RPBE"], + "REVPBE": ["GGA_X_PBE_R"], + "BLYP": ["GGA_X_B88", "GGA_C_LYP"], + "XLYP": ["GGA_XC_XLYP"], + "OPTB88": ["GGA_X_OPTB88_VDW", "LDA_C_PZ"], + "OPTPBE": ["GGA_X_OPTPBE_VDW", "LDA_C_PZ"], + "VDWDF": ["GGA_X_PBE_R_VDW", "LDA_C_PZ"], + "VDWDF2": ["GGA_X_RPW86", "LDA_C_PZ"], + "VV10": ["HYB_GGA_XC_LC_VV10"], + "AVV10S": ["GGA_X_AM05", "GGA_C_AM05_rVV10-sol"], } self._metainfo_map = { - 'Kinetic': 'kinetic_electronic', 'Hartree': 'correction_hartree', - 'Pseudopotential (local)': 'x_onetep_pseudopotential_local', - 'Pseudopotential (non-local)': 'x_onetep_pseudopotential_non_local', - 'Exchange-correlation': 'xc', 'Ewald': 'ewald', 'Total': 'total' + "Kinetic": "kinetic_electronic", + "Hartree": "correction_hartree", + "Pseudopotential (local)": "x_onetep_pseudopotential_local", + "Pseudopotential (non-local)": "x_onetep_pseudopotential_non_local", + "Exchange-correlation": "xc", + "Ewald": "ewald", + "Total": "total", } def init_parser(self): @@ -319,20 +402,25 @@ def init_parser(self): self.input_parser.logger = self.logger def parse_configuration(self, source: TextParser): - '''Generate a system section from `source`. + """Generate a system section from `source`. Input: - - `source`: information block corresponding to a single point calculation''' + - `source`: information block corresponding to a single point calculation""" + def parse_system(source): - cell = source.get('cell', self.input_parser.cell) + cell = source.get("cell", self.input_parser.cell) if cell is None: return sec_system = System() self.archive.run[-1].system.append(sec_system) - positions = cell.get('positions') - positions = positions * ureg.bohr if isinstance(positions, list) else positions - sec_system.atoms = Atoms(positions=positions, labels=cell.get('labels')) - sec_system.atoms.lattice_vectors = cell.get('lattice_vectors', self.input_parser.cell.get('lattice_vectors')) + positions = cell.get("positions") + positions = ( + positions * ureg.bohr if isinstance(positions, list) else positions + ) + sec_system.atoms = Atoms(positions=positions, labels=cell.get("labels")) + sec_system.atoms.lattice_vectors = cell.get( + "lattice_vectors", self.input_parser.cell.get("lattice_vectors") + ) return sec_system def parse_scc(source): @@ -340,31 +428,44 @@ def parse_scc(source): self.archive.run[-1].calculation.append(sec_scc) # scf iteration - for iteration in source.get('iteration', []): + for iteration in source.get("iteration", []): sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) - sec_scf.energy = Energy( - total=EnergyEntry(value=iteration.energy_total)) + sec_scf.energy = Energy(total=EnergyEntry(value=iteration.energy_total)) - energies = source.get('energy_components') + energies = source.get("energy_components") if energies is not None: sec_energy = Energy() sec_scc.energy = sec_energy - for contribution in energies.get('contribution', []): + for contribution in energies.get("contribution", []): key = self._metainfo_map.get(contribution[0]) if key is not None: - setattr(sec_energy, key, EnergyEntry(value=contribution[1] * ureg.hartree)) + setattr( + sec_energy, + key, + EnergyEntry(value=contribution[1] * ureg.hartree), + ) elif len(sec_scc.scf_iteration) > 0: - sec_scc.energy = Energy(total=EnergyEntry(value=sec_scc.scf_iteration[-1].energy.total.value)) + sec_scc.energy = Energy( + total=EnergyEntry( + value=sec_scc.scf_iteration[-1].energy.total.value + ) + ) - if source.get('forces') is not None: - sec_scc.forces = Forces(total=ForcesEntry(value=source.forces.value * (ureg.hartree / ureg.bohr))) + if source.get("forces") is not None: + sec_scc.forces = Forces( + total=ForcesEntry( + value=source.forces.value * (ureg.hartree / ureg.bohr) + ) + ) - if source.get('mulliken') is not None: + if source.get("mulliken") is not None: sec_charges = Charges() sec_scc.charges.append(sec_charges) - sec_charges.analysis_method = 'Mulliken' - sec_charges.value = [v[3] for v in source.get('mulliken', [])] * ureg.elementary_charge + sec_charges.analysis_method = "Mulliken" + sec_charges.value = [ + v[3] for v in source.get("mulliken", []) + ] * ureg.elementary_charge return sec_scc @@ -382,44 +483,62 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) sec_run.program = Program( - name=self.out_parser.get('program_name'), version=self.out_parser.get('program_version')) + name=self.out_parser.get("program_name"), + version=self.out_parser.get("program_version"), + ) def get_timestamp(date): if date is None: return - return datetime.strptime(date, '%d-%m-%Y %H:%M (%z)').timestamp() + return datetime.strptime(date, "%d-%m-%Y %H:%M (%z)").timestamp() sec_run.time_run = TimeRun( date_start=get_timestamp(self.out_parser.date_start), - date_end=get_timestamp(self.out_parser.date_end)) + date_end=get_timestamp(self.out_parser.date_end), + ) - self.input_parser.mainfile = os.path.join(self.maindir, self.out_parser.get('input_file', '')) + self.input_parser.mainfile = os.path.join( + self.maindir, self.out_parser.get("input_file", "") + ) - input_parameters = {key: val for key, val in self.out_parser.get('input', {}).get('parameter', [])} + input_parameters = { + key: val + for key, val in self.out_parser.get("input", {}).get("parameter", []) + } sec_method = Method() sec_run.method.append(sec_method) sec_method.x_onetep_input_parameters = input_parameters - if input_parameters.get('xc_functional') is not None: + if input_parameters.get("xc_functional") is not None: sec_method.dft = DFT(xc_functional=XCFunctional()) - for xc_functional in self._xc_map.get(input_parameters.get('xc_functional'), []): - if '_X_' in xc_functional or xc_functional.endswith('_X'): - sec_method.dft.xc_functional.exchange.append(Functional(name=xc_functional)) - elif '_C_' in xc_functional or xc_functional.endswith('_C'): - sec_method.dft.xc_functional.correlation.append(Functional(name=xc_functional)) - elif 'HYB' in xc_functional: - sec_method.dft.xc_functional.hybrid.append(Functional(name=xc_functional)) + for xc_functional in self._xc_map.get( + input_parameters.get("xc_functional"), [] + ): + if "_X_" in xc_functional or xc_functional.endswith("_X"): + sec_method.dft.xc_functional.exchange.append( + Functional(name=xc_functional) + ) + elif "_C_" in xc_functional or xc_functional.endswith("_C"): + sec_method.dft.xc_functional.correlation.append( + Functional(name=xc_functional) + ) + elif "HYB" in xc_functional: + sec_method.dft.xc_functional.hybrid.append( + Functional(name=xc_functional) + ) else: - sec_method.dft.xc_functional.contributions.append(Functional(name=xc_functional)) + sec_method.dft.xc_functional.contributions.append( + Functional(name=xc_functional) + ) # Basis set - if cutoff := self.out_parser.get('psinc', {}).get('cutoff'): + if cutoff := self.out_parser.get("psinc", {}).get("cutoff"): sec_em = BasisSetContainer( - type='support functions', - scope=['wavefunction'], + type="support functions", + scope=["wavefunction"], basis_set=[ BasisSet( - type='psinc functions', - scope=['valence'], + type="psinc functions", + scope=["valence"], cutoff=cutoff, ), ], @@ -428,9 +547,13 @@ def get_timestamp(date): if self.out_parser.geometry_optimization is not None: if self.out_parser.geometry_optimization.single_point is not None: - self.parse_configuration(self.out_parser.geometry_optimization.single_point) - for iteration in self.out_parser.geometry_optimization.get('iteration', []): - self.parse_configuration(iteration if iteration.improve is None else iteration.improve) + self.parse_configuration( + self.out_parser.geometry_optimization.single_point + ) + for iteration in self.out_parser.geometry_optimization.get("iteration", []): + self.parse_configuration( + iteration if iteration.improve is None else iteration.improve + ) elif self.out_parser.single_point is not None: self.parse_configuration(self.out_parser.single_point) @@ -440,9 +563,13 @@ def get_timestamp(date): if self.out_parser.tddft is not None: sec_tddft = x_onetep_section_tddft() sec_run.calculation[-1].x_onetep_section_tddft.append(sec_tddft) - for excitation in self.out_parser.tddft.get('excitation', []): + for excitation in self.out_parser.tddft.get("excitation", []): sec_excitation = x_onetep_section_tddft_excitations() sec_tddft.x_onetep_section_tddft_excitations.append(sec_excitation) - sec_excitation.x_onetep_tddft_excit_energy = excitation[1] * ureg.hartree + sec_excitation.x_onetep_tddft_excit_energy = ( + excitation[1] * ureg.hartree + ) sec_excitation.x_onetep_tddft_excit_oscill_str = excitation[2] - sec_excitation.x_onetep_tddft_excit_lifetime = excitation[3] * ureg.ns + sec_excitation.x_onetep_tddft_excit_lifetime = ( + excitation[3] * ureg.ns + ) diff --git a/electronicparsers/openmx/metainfo/openmx.py b/electronicparsers/openmx/metainfo/openmx.py index b7b20daa..67b49455 100644 --- a/electronicparsers/openmx/metainfo/openmx.py +++ b/electronicparsers/openmx/metainfo/openmx.py @@ -19,8 +19,6 @@ from nomad.metainfo import Section, Quantity, Package -m_package = Package( - name='openmx_nomadmetainfo_json', - description='None') +m_package = Package(name="openmx_nomadmetainfo_json", description="None") m_package.__init_metainfo__() diff --git a/electronicparsers/openmx/parser.py b/electronicparsers/openmx/parser.py index c1b6336a..811f5200 100644 --- a/electronicparsers/openmx/parser.py +++ b/electronicparsers/openmx/parser.py @@ -660,10 +660,10 @@ def parse_method(self): sec_scf.threshold_energy_change = scf_criterion * units.hartree # vdw correction - scf_dftd = mainfile_parser.get('scf.dftD') + scf_dftd = mainfile_parser.get("scf.dftD") if scf_dftd == "on": - dftf_ver = mainfile_parser.get('version.dftD') - #TODO: review the G06/G10 nomenclature after schema migration + dftf_ver = mainfile_parser.get("version.dftD") + # TODO: review the G06/G10 nomenclature after schema migration if dftf_ver is None or dftf_ver == 2: sec_electronic.van_der_waals_method = "G06" elif dftf_ver == 3: @@ -673,7 +673,6 @@ def parse_method(self): else: sec_electronic.van_der_waals_method = "" - def parse_eigenvalues(self): eigenvalues = BandEnergies() self.archive.run[-1].calculation[-1].eigenvalues.append(eigenvalues) diff --git a/electronicparsers/orca/metainfo/orca.py b/electronicparsers/orca/metainfo/orca.py index 40e14cf5..cb10cf27 100644 --- a/electronicparsers/orca/metainfo/orca.py +++ b/electronicparsers/orca/metainfo/orca.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -33,1228 +40,1409 @@ class x_orca_atom_positions(MSection): - ''' + """ positions of an atom - ''' + """ m_def = Section(validate=False) x_orca_atom_labels = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' - ''') + unit="meter", + description=""" + """, + ) x_orca_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' - ''') + unit="meter", + description=""" + """, + ) x_orca_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' - ''') + unit="meter", + description=""" + """, + ) class x_orca_final_geometry(MSection): - ''' + """ final optimized positions of an atom - ''' + """ m_def = Section(validate=False) x_orca_atom_labels_geo_opt = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_atom_positions_x_geo_opt = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' - ''') + unit="meter", + description=""" + """, + ) x_orca_atom_positions_y_geo_opt = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' - ''') + unit="meter", + description=""" + """, + ) x_orca_atom_positions_z_geo_opt = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' - ''') + unit="meter", + description=""" + """, + ) class x_orca_section_functionals(MSection): - ''' + """ XC functional - ''' + """ m_def = Section(validate=False) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_orca_1_elect_energy_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_angular_grid = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_atomic_orbital_integral_source = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_avg_nb_grid_pts_per_atom = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_avg_nb_points_per_batch = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_basis_fn_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_beckes_beta_param = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_Brueckner_orbitals_calc_on_off = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsdt_aaa_triples_contribution = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsdt_aab_triples_contribution = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_half_s_and_s_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_iteration_nb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_convergence_check_mode = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_convergence_tol_max_residuum = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_correl_functional = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_coulomb_transformation_dimension_basis = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_coulomb_transformation_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_exchange_functional = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_f12_correction_on_off = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_frozen_core_treatment = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_gral_integ_accuracy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_grid_pruning_method = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_hf_method = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_hf_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_integr_weight_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_integral_package_used = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_integral_transformation = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_K_C_formation = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_lda_part_of_gga_corr = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_level_shift_amplitude_update = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_aux_basis_dimension = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_basis_dimension = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_initial_guess = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_multiplicity = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_alpha_pairs_included = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_beta_pairs_included = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_grid_pts_after_initial_pruning = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_grid_pts_after_weights_screening = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_internal_alpha_mol_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_internal_beta_mol_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_atomic_orbitals = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_correlated_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nelectrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nuclear_repulsion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_orbital_opt_on_off = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_pair_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_perturbative_triple_excitations_on_off = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_radial_grid_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_reference_wave_function = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_scalar_relativistic_method = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_scaling_mp2_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_single_excitations_on_off = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_single_norm_half_ss = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_speed_of_light_used = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_nb_batches = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_nb_grid_pts = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_nb_pairs_included = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_wave_function_correlation_treatment = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_weight_gener_scheme = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_xalpha_param = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_XC_functional_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_z_vector_calc_on_off = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_section_functionals = SubSection( - sub_section=SectionProxy('x_orca_section_functionals'), - repeats=True) + sub_section=SectionProxy("x_orca_section_functionals"), repeats=True + ) class Scf(runschema.method.Scf): - m_def = Section(validate=False, extends_base_section=True) x_orca_last_max_density_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_orca_angular_grid_final = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_avg_nb_grid_pts_per_atom_final = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_avg_nb_points_per_batch_final = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_basis_fn_cutoff_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_gral_integ_accuracy_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_grid_pruning_method_final = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_integr_weight_cutoff_final = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_iteration_nb = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_last_energy_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_last_rms_density_change = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_grid_pts_after_initial_pruning_final = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_grid_pts_after_weights_screening_final = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_radial_grid_type_final = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_nb_batches_final = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_nb_grid_pts_final = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_weight_gener_scheme_final = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_orca_atom_positions = SubSection( - sub_section=SectionProxy('x_orca_atom_positions'), - repeats=True) + sub_section=SectionProxy("x_orca_atom_positions"), repeats=True + ) class BasisSet(runschema.method.BasisSet): - m_def = Section(validate=False, extends_base_section=True) x_orca_auxiliary_basis_set_contracted = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_auxiliary_basis_set = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_basis_set_atom_labels = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_basis_set_contracted = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_basis_set = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_highest_angular_moment_aux = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_highest_angular_moment = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_maximum_contraction_depth_aux = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_maximum_contraction_depth = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_contracted_basis_functions_aux = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_contracted_basis_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_contracted_shells_aux = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_contracted_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_primitive_gaussian_functions_aux = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_primitive_gaussian_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_primitive_gaussian_shells_aux = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_of_primitive_gaussian_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_primitive_gaussian_shells_aux = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_primitive_gaussian_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_orca_basis_fn_evaluation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsd_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsd_final_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsd_t_final_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsd_total_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsdt_aba_triples_contribution = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsdt_bbb_triples_contribution = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsdt_final_corr_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ccsdt_total_triples_correction = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_correl_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_deltaE_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_iteration_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_residual_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_ci_total_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_coulomb_formation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_density_evaluation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_density_matrix_formation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_diagonalization = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_diis_solution = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_elec_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_exchange_correlation_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_exchange_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_final_time = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_fock_matrix_formation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_geo_opt_cycle = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_grid_generation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_initial_guess = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_kinetc_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_corr_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_energy_spin_aa = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_energy_spin_ab = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_energy_spin_bb = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_mp2_total_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_elect_alpha_channel = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_elect_beta_channel = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nb_elect_total = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_nuc_repulsion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_one_elec_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_orbital_orthonormalization = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_orbital_transformation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_population_analysis = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_potential_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_potential_evaluation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_split_rj = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_sum_individual_times = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_t1_diagnostic = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_T_and_T_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_days_time = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_hours_time = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_mins_time = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_total_secs_time = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_two_elec_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_virial_ratio = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_xc_functional_evaluation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_xc_integration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class GeometryOptimization(simulationworkflowschema.GeometryOptimization): - m_def = Section(validate=False, extends_base_section=True) x_orca_coords_choice_name = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_coords_choice = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_energy_change_tol_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_energy_change_tol = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_initial_hessian_name = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_initial_hessian = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_max_displacement_tol_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_max_displacement_tol = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_max_gradient_tol_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_max_gradient_tol = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_rms_displacement_tol_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_rms_displacement_tol = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_rms_gradient_tol_value = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_rms_gradient_tol = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_update_method_name = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_update_method = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_final_geometry = SubSection( - sub_section=SectionProxy('x_orca_final_geometry'), - repeats=True) + sub_section=SectionProxy("x_orca_final_geometry"), repeats=True + ) class Spectra(runschema.calculation.Spectra): - m_def = Section(validate=False, extends_base_section=True) x_orca_excitation_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_oscillator_strength = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_transition_dipole_moment_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_transition_dipole_moment_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_transition_dipole_moment_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_orca_program_compilation_date = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_program_compilation_time = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_orca_program_svn = Quantity( type=str, shape=[], - description=''' + description=""" svn revision of the program - ''') + """, + ) x_orca_program_version = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) diff --git a/electronicparsers/orca/parser.py b/electronicparsers/orca/parser.py index 93ea7c7d..67a52a80 100644 --- a/electronicparsers/orca/parser.py +++ b/electronicparsers/orca/parser.py @@ -25,21 +25,29 @@ from runschema.run import Run, Program from runschema.method import ( - Electronic, Method, BasisSet, DFT, XCFunctional, Functional, - BasisSetContainer, Scf, -) -from runschema.system import ( - System, Atoms + Electronic, + Method, + BasisSet, + DFT, + XCFunctional, + Functional, + BasisSetContainer, + Scf, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, ScfIteration, BandEnergies, Charges, - ChargesValue, Spectra, -) -from simulationworkflowschema import ( - GeometryOptimization, GeometryOptimizationMethod + Calculation, + Energy, + EnergyEntry, + ScfIteration, + BandEnergies, + Charges, + ChargesValue, + Spectra, ) +from simulationworkflowschema import GeometryOptimization, GeometryOptimizationMethod -re_n = r'\r*\n' +re_n = r"\r*\n" class OutParser(TextParser): @@ -47,495 +55,822 @@ def __init__(self): super().__init__() def init_quantities(self): - re_float = r'[-+]?\d+\.?\d*(?:[Ee][-+]\d+)?' + re_float = r"[-+]?\d+\.?\d*(?:[Ee][-+]\d+)?" self._energy_mapping = { - 'Total Energy': 'energy_total', 'Nuclear Repulsion': 'energy_nuclear_repulsion', - 'Electronic Energy': 'elec_energy', 'One Electron Energy': 'one_elec_energy', - 'Two Electron Energy': 'two_elec_energy', 'Potential Energy': 'potential_energy', - 'Kinetic Energy': 'energy_kinetic_electronic', r'E\(X\)': 'energy_exchange', - r'E\(C\)': 'energy_correlation', r'E\(XC\)': 'energy_XC'} + "Total Energy": "energy_total", + "Nuclear Repulsion": "energy_nuclear_repulsion", + "Electronic Energy": "elec_energy", + "One Electron Energy": "one_elec_energy", + "Two Electron Energy": "two_elec_energy", + "Potential Energy": "potential_energy", + "Kinetic Energy": "energy_kinetic_electronic", + r"E\(X\)": "energy_exchange", + r"E\(C\)": "energy_correlation", + r"E\(XC\)": "energy_XC", + } self._timing_mapping = { - 'Total time': 'final_time', 'Sum of individual times': 'sum_individual_times', - 'Fock matrix formation': 'fock_matrix_formation', 'Coulomb formation': 'coulomb_formation', - r'Split\-RI-J': 'split_rj', 'XC integration': 'xc_integration', - r'Basis function eval\.': 'basis_fn_evaluation', r'Density eval\.': 'density_evaluation', - r'XC\-Functional eval\.': 'xc_functional_evaluation', r'XC\-Potential eval\.': 'potential_evaluation', - 'Diagonalization': 'diagonalization', 'Density matrix formation': 'density_matrix_formation', - 'Population analysis': 'population_analysis', 'Initial guess': 'initial_guess', - 'Orbital Transformation': 'orbital_transformation', 'Orbital Orthonormalization': 'orbital_orthonormalization', - 'DIIS solution': 'diis_solution', 'Grid generation': 'grid_generation', - 'Total SCF gradient time': 'scf_gradient'} + "Total time": "final_time", + "Sum of individual times": "sum_individual_times", + "Fock matrix formation": "fock_matrix_formation", + "Coulomb formation": "coulomb_formation", + r"Split\-RI-J": "split_rj", + "XC integration": "xc_integration", + r"Basis function eval\.": "basis_fn_evaluation", + r"Density eval\.": "density_evaluation", + r"XC\-Functional eval\.": "xc_functional_evaluation", + r"XC\-Potential eval\.": "potential_evaluation", + "Diagonalization": "diagonalization", + "Density matrix formation": "density_matrix_formation", + "Population analysis": "population_analysis", + "Initial guess": "initial_guess", + "Orbital Transformation": "orbital_transformation", + "Orbital Orthonormalization": "orbital_orthonormalization", + "DIIS solution": "diis_solution", + "Grid generation": "grid_generation", + "Total SCF gradient time": "scf_gradient", + } def str_to_cartesian_coordinates(val_in): - val = [v.split() for v in val_in.strip().split('\n')] + val = [v.split() for v in val_in.strip().split("\n")] symbols = [v[0][:2] for v in val] coordinates = np.array([v[1:4] for v in val], dtype=float) return symbols, coordinates * ureg.angstrom basis_set_quantities = [ - Quantity('basis_set_atom_labels', r'Type\s*(\w+)', repeats=True), - Quantity('basis_set', r':\s*(\w+)\s*contracted\s*to', repeats=True), - Quantity('basis_set_contracted', r'(\w+)\s*pattern', repeats=True)] + Quantity("basis_set_atom_labels", r"Type\s*(\w+)", repeats=True), + Quantity("basis_set", r":\s*(\w+)\s*contracted\s*to", repeats=True), + Quantity("basis_set_contracted", r"(\w+)\s*pattern", repeats=True), + ] basis_set_statistics_quantities = [ Quantity( - 'nb_of_primitive_gaussian_shells', - r'# of primitive gaussian shells\s*\.+\s*(\d+)', repeats=True, dtype=int), - Quantity( - 'nb_of_primitive_gaussian_functions', - r'# of primitive gaussian functions\s*\.+\s*(\d+)', repeats=True, dtype=int), - Quantity( - 'nb_of_contracted_shells', - r'# of contracted shells\s*\.+\s*(\d+)', repeats=True, dtype=int), - Quantity( - 'nb_of_contracted_basis_functions', - r'# of contracted (?:aux-)?basis functions\s*\.+\s*(\d+)', repeats=True, dtype=int), - Quantity( - 'highest_angular_moment', - r'Highest angular momentum\s*\.+\s*(\d+)', repeats=True, dtype=int), - Quantity( - 'maximum_contraction_depth', - r'Maximum contraction depth\s*\.+\s*(\d+)', repeats=True, dtype=int)] + "nb_of_primitive_gaussian_shells", + r"# of primitive gaussian shells\s*\.+\s*(\d+)", + repeats=True, + dtype=int, + ), + Quantity( + "nb_of_primitive_gaussian_functions", + r"# of primitive gaussian functions\s*\.+\s*(\d+)", + repeats=True, + dtype=int, + ), + Quantity( + "nb_of_contracted_shells", + r"# of contracted shells\s*\.+\s*(\d+)", + repeats=True, + dtype=int, + ), + Quantity( + "nb_of_contracted_basis_functions", + r"# of contracted (?:aux-)?basis functions\s*\.+\s*(\d+)", + repeats=True, + dtype=int, + ), + Quantity( + "highest_angular_moment", + r"Highest angular momentum\s*\.+\s*(\d+)", + repeats=True, + dtype=int, + ), + Quantity( + "maximum_contraction_depth", + r"Maximum contraction depth\s*\.+\s*(\d+)", + repeats=True, + dtype=int, + ), + ] grid_quantities = [ Quantity( - 'gral_integ_accuracy', - rf'General Integration Accuracy\s*IntAcc\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'radial_grid_type', - r'Radial Grid Type\s*RadialGrid\s*\.+\s*(\S+)', convert=False), - Quantity( - 'angular_grid', - r'Angular Grid \(max\. acc\.\)\s*AngularGrid\s*\.+\s*(\S+)', convert=False), - Quantity( - 'grid_pruning_method', - r'Angular grid pruning method\s*GridPruning\s*\.+\s*(.+)', - flatten=False, convert=False), - Quantity( - 'weight_gener_scheme', - r'Weight generation scheme\s*WeightScheme\s*\.+\s*(\w+)', convert=False), - Quantity( - 'basis_fn_cutoff', - rf'Basis function cutoff\s*BFCut\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'integr_weight_cutoff', - rf'Integration weight cutoff\s*WCut\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'nb_grid_pts_after_initial_pruning', - r'# of grid points \(after initial pruning\)\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'nb_grid_pts_after_weights_screening', - r'# of grid points \(after weights\+screening\)\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'total_nb_grid_pts', - r'Total number of grid points\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'total_nb_batches', - r'Total number of batches\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'avg_nb_points_per_batch', - r'Average number of points per batch\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'avg_nb_grid_pts_per_atom', - r'Average number of grid points per atom\s*\.+\s*(\d+)', dtype=int)] + "gral_integ_accuracy", + rf"General Integration Accuracy\s*IntAcc\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "radial_grid_type", + r"Radial Grid Type\s*RadialGrid\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "angular_grid", + r"Angular Grid \(max\. acc\.\)\s*AngularGrid\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "grid_pruning_method", + r"Angular grid pruning method\s*GridPruning\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "weight_gener_scheme", + r"Weight generation scheme\s*WeightScheme\s*\.+\s*(\w+)", + convert=False, + ), + Quantity( + "basis_fn_cutoff", + rf"Basis function cutoff\s*BFCut\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "integr_weight_cutoff", + rf"Integration weight cutoff\s*WCut\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "nb_grid_pts_after_initial_pruning", + r"# of grid points \(after initial pruning\)\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "nb_grid_pts_after_weights_screening", + r"# of grid points \(after weights\+screening\)\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "total_nb_grid_pts", + r"Total number of grid points\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "total_nb_batches", r"Total number of batches\s*\.+\s*(\d+)", dtype=int + ), + Quantity( + "avg_nb_points_per_batch", + r"Average number of points per batch\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "avg_nb_grid_pts_per_atom", + r"Average number of grid points per atom\s*\.+\s*(\d+)", + dtype=int, + ), + ] scf_convergence_quantities = [ Quantity( - name.lower().replace(' ', '_').replace('-', '_'), - rf'%s\s*\.+\s*({re_float})\s* Tolerance :\s*({re_float})' % name, - dtype=float) for name in [ - 'Last Energy change', 'Last MAX-Density change', 'Last RMS-Density change']] + name.lower().replace(" ", "_").replace("-", "_"), + rf"%s\s*\.+\s*({re_float})\s* Tolerance :\s*({re_float})" % name, + dtype=float, + ) + for name in [ + "Last Energy change", + "Last MAX-Density change", + "Last RMS-Density change", + ] + ] population_quantities = [ Quantity( - 'atomic_charges', - r'[A-Z]+ ATOMIC CHARGES.*\n\-+([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=[ - Quantity('species', r'\n *\d+\s*(\w+)', repeats=True), - Quantity('charge', rf':\s*({re_float})', repeats=True, dtype=float), - Quantity( - 'total_charge', - rf'Sum of atomic charges\s*:\s*({re_float})', dtype=float)])), - Quantity( - 'orbital_charges', - rf'[A-Z]+ REDUCED ORBITAL CHARGES.*\s*\-+([\s\S]+?{re_n}{re_n})', - sub_parser=TextParser(quantities=[ - Quantity( - 'atom', - r'([A-Z][a-z]?\s*[spdf][\s\S]+?)\n *(?:\d|\Z)', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('species', r'([A-Z][a-z]?)', convert=False), - Quantity('charge', rf'([spdf]\S*)\s*:\s*({re_float})', repeats=True)]))]))] + "atomic_charges", + r"[A-Z]+ ATOMIC CHARGES.*\n\-+([\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ + Quantity("species", r"\n *\d+\s*(\w+)", repeats=True), + Quantity( + "charge", rf":\s*({re_float})", repeats=True, dtype=float + ), + Quantity( + "total_charge", + rf"Sum of atomic charges\s*:\s*({re_float})", + dtype=float, + ), + ] + ), + ), + Quantity( + "orbital_charges", + rf"[A-Z]+ REDUCED ORBITAL CHARGES.*\s*\-+([\s\S]+?{re_n}{re_n})", + sub_parser=TextParser( + quantities=[ + Quantity( + "atom", + r"([A-Z][a-z]?\s*[spdf][\s\S]+?)\n *(?:\d|\Z)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "species", r"([A-Z][a-z]?)", convert=False + ), + Quantity( + "charge", + rf"([spdf]\S*)\s*:\s*({re_float})", + repeats=True, + ), + ] + ), + ) + ] + ), + ), + ] self_consistent_quantities = [ Quantity( - 'scf_settings', - r'SCF SETTINGS\s*\-+([\s\S]+?)\-{10}', sub_parser=TextParser(quantities=[ - Quantity( - 'XC_functional_type', - r'Ab initio Hamiltonian\s*Method\s*\.+\s*(\S+)', convert=False), - Quantity( - 'XC_functional_type', - r'Density Functional\s*Method\s*\.+\s*(\S+)', convert=False), - Quantity( - 'exchange_functional', - r'Exchange Functional\s*Exchange\s*\.+\s*(\S+)', convert=False), - Quantity( - 'xalpha_param', - rf'X-Alpha parameter\s*XAlpha\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'beckes_beta_param', - rf'Becke\'s b parameter\s*XBeta\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'correl_functional', - r'Correlation Functional Correlation\s*\.+\s*(\S+)', convert=False), - Quantity( - 'lda_part_of_gga_corr', - r'LDA part of GGA corr\.\s*LDAOpt\s*\.+\s*(\S+)', convert=False), - Quantity( - 'scalar_relativistic_method', - r'Scalar relativistic method\s*\.+\s*(\w+)', convert=False), - Quantity( - 'speed_of_light_used', - rf'Speed of light used\s*Velit\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'hf_type', - r'Hartree-Fock type\s*HFTyp\s*\.+\s*(\w+)', convert=False), - Quantity( - 'total_charge', - rf'Total Charge\s*Charge\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'multiplicity', - rf'Multiplicity\s*Mult\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'nelectrons', - rf'Number of Electrons\s*NEL\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'nuclear_repulsion', - rf'Nuclear Repulsion\s*ENuc\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'convergence_check_mode', - r'Convergence Check Mode ConvCheckMode\s*\.+\s*(\S+)', convert=False), - Quantity( - 'energy_change_tolerance', - rf'Energy Change\s*TolE\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - '1_elect_energy_change', - rf'1\-El\. energy change\s*\.+\s*({re_float})', dtype=float)])), - Quantity( - 'dft_grid_generation', - r'DFT GRID GENERATION\s*\-+([\s\S]+?\-{10})', - sub_parser=TextParser(quantities=grid_quantities)), - Quantity( - 'scf_iterations', - r'SCF ITERATIONS\s*\-+([\s\S]+?)\*{10}', - sub_parser=TextParser(quantities=[Quantity( - 'energy', - rf'\n *\d+\s*({re_float})\s*{re_float}', repeats=True, dtype=float, unit=ureg.hartree)])), - Quantity( - 'final_grid', - r'Setting up the final grid:([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=grid_quantities)), - Quantity( - 'total_scf_energy', - r'TOTAL SCF ENERGY\s*\-+([\s\S]+?)\-{10}', sub_parser=TextParser(quantities=[ - Quantity( - name, - rf'%s\s*:\s*({re_float})' % key, dtype=float, unit=ureg.hartree) - for key, name in self._energy_mapping.items()] + [ + "scf_settings", + r"SCF SETTINGS\s*\-+([\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ Quantity( - 'virial_ratio', - rf'Virial Ratio\s*:\s*({re_float})', dtype=float), + "XC_functional_type", + r"Ab initio Hamiltonian\s*Method\s*\.+\s*(\S+)", + convert=False, + ), Quantity( - 'nb_elect_alpha_channel', - rf'N\(Alpha\)\s*:\s*({re_float})', dtype=float), + "XC_functional_type", + r"Density Functional\s*Method\s*\.+\s*(\S+)", + convert=False, + ), Quantity( - 'nb_elect_beta_channel', - rf'N\(Beta\)\s*:\s*({re_float})', dtype=float), + "exchange_functional", + r"Exchange Functional\s*Exchange\s*\.+\s*(\S+)", + convert=False, + ), Quantity( - 'nb_elect_total', - rf'N\(Total\)\s*:\s*({re_float})', dtype=float)])), - Quantity( - 'scf_convergence', - r'SCF CONVERGENCE\s*\-+([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=scf_convergence_quantities)), - Quantity( - 'orbital_energies', - rf'NO\s*OCC\s*E\(Eh\)\s*E\(eV\)\s*([\s\S]+?){re_n}{re_n}', - str_operation=lambda x: np.array([v.split()[:4] for v in x.split('\n')], dtype=float), - repeats=True), - Quantity( - 'mulliken', - r'MULLIKEN POPULATION ANALYSIS \*\s*\*+([\s\S]+?)\*{10}', - sub_parser=TextParser(quantities=population_quantities)), - Quantity( - 'timings', - r'\n *TIMINGS\s*\-+\s*([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=[Quantity( - name, rf'%s\s*\.+\s*({re_float})' % key, dtype=float, unit=ureg.s) - for key, name in self._timing_mapping.items()])), - Quantity( - 'time_calculation', - r'Total SCF time\: (\d+) days (\d+) hours (\d+) min (\d+) sec ', - dytpe=np.dtype(np.float64) - ) + "xalpha_param", + rf"X-Alpha parameter\s*XAlpha\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "beckes_beta_param", + rf"Becke\'s b parameter\s*XBeta\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "correl_functional", + r"Correlation Functional Correlation\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "lda_part_of_gga_corr", + r"LDA part of GGA corr\.\s*LDAOpt\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "scalar_relativistic_method", + r"Scalar relativistic method\s*\.+\s*(\w+)", + convert=False, + ), + Quantity( + "speed_of_light_used", + rf"Speed of light used\s*Velit\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "hf_type", + r"Hartree-Fock type\s*HFTyp\s*\.+\s*(\w+)", + convert=False, + ), + Quantity( + "total_charge", + rf"Total Charge\s*Charge\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "multiplicity", + rf"Multiplicity\s*Mult\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "nelectrons", + rf"Number of Electrons\s*NEL\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "nuclear_repulsion", + rf"Nuclear Repulsion\s*ENuc\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "convergence_check_mode", + r"Convergence Check Mode ConvCheckMode\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "energy_change_tolerance", + rf"Energy Change\s*TolE\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "1_elect_energy_change", + rf"1\-El\. energy change\s*\.+\s*({re_float})", + dtype=float, + ), + ] + ), + ), + Quantity( + "dft_grid_generation", + r"DFT GRID GENERATION\s*\-+([\s\S]+?\-{10})", + sub_parser=TextParser(quantities=grid_quantities), + ), + Quantity( + "scf_iterations", + r"SCF ITERATIONS\s*\-+([\s\S]+?)\*{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "energy", + rf"\n *\d+\s*({re_float})\s*{re_float}", + repeats=True, + dtype=float, + unit=ureg.hartree, + ) + ] + ), + ), + Quantity( + "final_grid", + r"Setting up the final grid:([\s\S]+?)\-{10}", + sub_parser=TextParser(quantities=grid_quantities), + ), + Quantity( + "total_scf_energy", + r"TOTAL SCF ENERGY\s*\-+([\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + name, + rf"%s\s*:\s*({re_float})" % key, + dtype=float, + unit=ureg.hartree, + ) + for key, name in self._energy_mapping.items() + ] + + [ + Quantity( + "virial_ratio", + rf"Virial Ratio\s*:\s*({re_float})", + dtype=float, + ), + Quantity( + "nb_elect_alpha_channel", + rf"N\(Alpha\)\s*:\s*({re_float})", + dtype=float, + ), + Quantity( + "nb_elect_beta_channel", + rf"N\(Beta\)\s*:\s*({re_float})", + dtype=float, + ), + Quantity( + "nb_elect_total", + rf"N\(Total\)\s*:\s*({re_float})", + dtype=float, + ), + ] + ), + ), + Quantity( + "scf_convergence", + r"SCF CONVERGENCE\s*\-+([\s\S]+?)\-{10}", + sub_parser=TextParser(quantities=scf_convergence_quantities), + ), + Quantity( + "orbital_energies", + rf"NO\s*OCC\s*E\(Eh\)\s*E\(eV\)\s*([\s\S]+?){re_n}{re_n}", + str_operation=lambda x: np.array( + [v.split()[:4] for v in x.split("\n")], dtype=float + ), + repeats=True, + ), + Quantity( + "mulliken", + r"MULLIKEN POPULATION ANALYSIS \*\s*\*+([\s\S]+?)\*{10}", + sub_parser=TextParser(quantities=population_quantities), + ), + Quantity( + "timings", + r"\n *TIMINGS\s*\-+\s*([\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + name, + rf"%s\s*\.+\s*({re_float})" % key, + dtype=float, + unit=ureg.s, + ) + for key, name in self._timing_mapping.items() + ] + ), + ), + Quantity( + "time_calculation", + r"Total SCF time\: (\d+) days (\d+) hours (\d+) min (\d+) sec ", + dytpe=np.dtype(np.float64), + ), ] # TODO parse more properties, add to metainfo tddft_quantities = [ Quantity( - 'absorption_spectrum_electric', - r'ABSORPTION SPECTRUM VIA TRANSITION ELECTRIC DIPOLE MOMENTS\s*' - r'\-+[\s\S]+?\-+\n([\s\S]+?)\-{10}', - str_operation=lambda x: [v.split() for v in x.strip().split('\n')])] + "absorption_spectrum_electric", + r"ABSORPTION SPECTRUM VIA TRANSITION ELECTRIC DIPOLE MOMENTS\s*" + r"\-+[\s\S]+?\-+\n([\s\S]+?)\-{10}", + str_operation=lambda x: [v.split() for v in x.strip().split("\n")], + ) + ] # TODO parse more properties, add to metainfo mp2_quantities = [ Quantity( - 'mp2_basis_dimension', - r'Dimension of the basis\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'scaling_mp2_energy', - rf'Overall scaling of the MP2 energy\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'mp2_aux_basis_dimension', - r'Dimension of the aux\-basis\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'energy_method_current', - rf'RI\-MP2 CORRELATION ENERGY:\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'energy_total', - rf'MP2 TOTAL ENERGY:\s*({re_float})', dtype=float, unit=ureg.hartree)] + "mp2_basis_dimension", + r"Dimension of the basis\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "scaling_mp2_energy", + rf"Overall scaling of the MP2 energy\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "mp2_aux_basis_dimension", + r"Dimension of the aux\-basis\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "energy_method_current", + rf"RI\-MP2 CORRELATION ENERGY:\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "energy_total", + rf"MP2 TOTAL ENERGY:\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + ] def str_to_iteration_energy(val_in): - val = [v.split() for v in val_in.strip().split('\n')] + val = [v.split() for v in val_in.strip().split("\n")] keys = val[0] val = np.transpose( - np.array([v for v in val[1:] if len(v) == len(keys)], dtype=float)) + np.array([v for v in val[1:] if len(v) == len(keys)], dtype=float) + ) return {keys[i]: val[i] for i in range(len(keys))} ci_quantities = [ Quantity( - 'electronic_structure_method', - r'Correlation treatment\s*\.+\s*(\S+)', convert=False), - Quantity( - 'single_excitations_on_off', - r'Single excitations\s*\.+\s*(\S+)', convert=False), - Quantity( - 'orbital_opt_on_off', - r'Orbital optimization\s*\.+\s*(\S+)', convert=False), - Quantity( - 'z_vector_calc_on_off', - r'Calculation of Z vector\s*\.+\s*(\S+)', convert=False), - Quantity( - 'Brueckner_orbitals_calc_on_off', - r'Calculation of Brueckner orbitals\s*\.+\s*(\S+)', convert=False), - Quantity( - 'perturbative_triple_excitations_on_off', - r'Perturbative triple excitations\s*\.+\s*(\S+)', convert=False), - Quantity( - 'f12_correction_on_off', - r'Calculation of F12 correction\s*\.+\s*(\S+)', convert=False), - Quantity( - 'frozen_core_treatment', - r'Frozen core treatment\s*\.+\s*(.+)', flatten=False, convert=False), - Quantity( - 'reference_wave_function', - r'Reference Wavefunction\s*\.+\s*(.+)', flatten=False, convert=False), - Quantity( - 'nb_of_atomic_orbitals', - r'Number of AO\'s\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'nb_of_electrons', - r'Number of electrons\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'nb_of_correlated_electrons', - r'Number of correlated electrons\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'integral_transformation', - r'Integral transformation\s*\.+\s*(.+)', flatten=False, convert=False), - Quantity( - 'level_shift_amplitude_update', - rf'Level shift for amplitude update\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'coulomb_transformation_type', - r'Transformation type\s*\.+\s*(.+)', flatten=False, convert=False), - Quantity( - 'coulomb_transformation_dimension_basis', - r'Dimension of the basis\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'nb_internal_alpha_mol_orbitals', - r'Number of internal alpha\-MOs\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'nb_internal_beta_mol_orbitals', - r'Number of internal beta\-MOs\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'pair_cutoff', - rf'Pair cutoff\s*\.+\s*({re_float})', dtype=float), - Quantity( - 'atomic_orbital_integral_source', - r'AO\-integral source\s*\.+\s*(.+)', flatten=False, convert=False), - Quantity( - 'integral_package_used', - r'Integral package used\s*\.+\s*(.+)', flatten=False, convert=False), - Quantity( - 'nb_alpha_pairs_included', - r'Number of Alpha\-MO pairs included\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'nb_beta_pairs_included', - r'Number of Beta\-MO pairs included\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'mp2_energy_spin_aa', - rf'EMP2\(aa\)=\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'mp2_energy_spin_bb', - rf'EMP2\(bb\)=\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'mp2_energy_spin_ab', - rf'EMP2\(ab\)=\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'mp2_initial_guess', - rf'E\(0\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'mp2_energy', - rf'E\(MP2\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'mp2_total_energy', - rf'Initial E\(tot\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'T_and_T_energy', - rf'\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'total_nb_pairs_included', - r'Number of pairs included\s*\.+\s*(\d+)', dtype=int), - Quantity( - 'iteration_energy', - r'(Iter\s*E\(tot\)[\s\S]+?)\-{3}', - str_operation=str_to_iteration_energy, convert=False), - Quantity( - 'ccsd_correlation_energy', - rf'E\(CORR\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsd_total_energy', - rf'E\(TOT\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'single_norm_half_ss', - rf'Singles Norm \*\*1/2\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 't1_diagnostic', - rf'T1 diagnostic\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsdt_total_triples_correction', - rf'Triples Correction \(T\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsdt_aaa_triples_contribution', - rf'alpha\-alpha\-alpha\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsdt_aab_triples_contribution', - rf'alpha\-alpha\-beta\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), + "electronic_structure_method", + r"Correlation treatment\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "single_excitations_on_off", + r"Single excitations\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "orbital_opt_on_off", + r"Orbital optimization\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "z_vector_calc_on_off", + r"Calculation of Z vector\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "Brueckner_orbitals_calc_on_off", + r"Calculation of Brueckner orbitals\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "perturbative_triple_excitations_on_off", + r"Perturbative triple excitations\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "f12_correction_on_off", + r"Calculation of F12 correction\s*\.+\s*(\S+)", + convert=False, + ), + Quantity( + "frozen_core_treatment", + r"Frozen core treatment\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "reference_wave_function", + r"Reference Wavefunction\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "nb_of_atomic_orbitals", r"Number of AO\'s\s*\.+\s*(\d+)", dtype=int + ), + Quantity( + "nb_of_electrons", r"Number of electrons\s*\.+\s*(\d+)", dtype=int + ), + Quantity( + "nb_of_correlated_electrons", + r"Number of correlated electrons\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "integral_transformation", + r"Integral transformation\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "level_shift_amplitude_update", + rf"Level shift for amplitude update\s*\.+\s*({re_float})", + dtype=float, + ), + Quantity( + "coulomb_transformation_type", + r"Transformation type\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "coulomb_transformation_dimension_basis", + r"Dimension of the basis\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "nb_internal_alpha_mol_orbitals", + r"Number of internal alpha\-MOs\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "nb_internal_beta_mol_orbitals", + r"Number of internal beta\-MOs\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity("pair_cutoff", rf"Pair cutoff\s*\.+\s*({re_float})", dtype=float), + Quantity( + "atomic_orbital_integral_source", + r"AO\-integral source\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "integral_package_used", + r"Integral package used\s*\.+\s*(.+)", + flatten=False, + convert=False, + ), + Quantity( + "nb_alpha_pairs_included", + r"Number of Alpha\-MO pairs included\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "nb_beta_pairs_included", + r"Number of Beta\-MO pairs included\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "mp2_energy_spin_aa", + rf"EMP2\(aa\)=\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "mp2_energy_spin_bb", + rf"EMP2\(bb\)=\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "mp2_energy_spin_ab", + rf"EMP2\(ab\)=\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "mp2_initial_guess", + rf"E\(0\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "mp2_energy", + rf"E\(MP2\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "mp2_total_energy", + rf"Initial E\(tot\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "T_and_T_energy", + rf"\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "total_nb_pairs_included", + r"Number of pairs included\s*\.+\s*(\d+)", + dtype=int, + ), + Quantity( + "iteration_energy", + r"(Iter\s*E\(tot\)[\s\S]+?)\-{3}", + str_operation=str_to_iteration_energy, + convert=False, + ), + Quantity( + "ccsd_correlation_energy", + rf"E\(CORR\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsd_total_energy", + rf"E\(TOT\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "single_norm_half_ss", + rf"Singles Norm \*\*1/2\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "t1_diagnostic", + rf"T1 diagnostic\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsdt_total_triples_correction", + rf"Triples Correction \(T\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsdt_aaa_triples_contribution", + rf"alpha\-alpha\-alpha\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsdt_aab_triples_contribution", + rf"alpha\-alpha\-beta\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), # typo in metainfo? Quantity( - 'ccsdt_aba_triples_contribution', - rf'alpha\-beta\-beta\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsdt_bbb_triples_contribution', - rf'beta\-beta\-beta\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsdt_final_corr_energy', - rf'Final correlation energy\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'ccsd_final_energy', - rf'E\(CCSD\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree), - Quantity( - 'energy_total', - rf'E\(CCSD\(T\)\)\s*\.+\s*({re_float})', dtype=float, unit=ureg.hartree)] + "ccsdt_aba_triples_contribution", + rf"alpha\-beta\-beta\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsdt_bbb_triples_contribution", + rf"beta\-beta\-beta\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsdt_final_corr_energy", + rf"Final correlation energy\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "ccsd_final_energy", + rf"E\(CCSD\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + Quantity( + "energy_total", + rf"E\(CCSD\(T\)\)\s*\.+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + ] calculation_quantities = [ Quantity( - 'cartesian_coordinates', - rf'CARTESIAN COORDINATES \(ANGSTROEM\)\s*\-+\s*([\s\S]+?){re_n}{re_n}', - str_operation=str_to_cartesian_coordinates), - Quantity( - 'basis_set', - r'\n *BASIS SET INFORMATION\s*\-+([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=basis_set_quantities)), - Quantity( - 'auxiliary_basis_set', - r'\n *AUXILIARY BASIS SET INFORMATION\s*\-+([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=basis_set_quantities)), - Quantity( - 'basis_set_statistics', - r'BASIS SET STATISTICS AND STARTUP INFO([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=basis_set_statistics_quantities)), - Quantity( - 'self_consistent', - r'((?:ORCA SCF|DFT GRID GENERATION)\s*\-+[\s\S]+?(?:\-{70}|\Z))', - sub_parser=TextParser(quantities=self_consistent_quantities)), - Quantity( - 'tddft', - r'ORCA TD\-DFT(?:/TDA)* CALCULATION\s*\-+\s*([\s\S]+?E\(tot\).*)', - sub_parser=TextParser(quantities=tddft_quantities)), - Quantity( - 'mp2', - r'ORCA MP2 CALCULATION([\s\S]+?MP2 TOTAL ENERGY:.+)', - sub_parser=TextParser(quantities=mp2_quantities)), - Quantity( - 'ci', - r'ORCA\-MATRIX DRIVEN CI([\s\S]+?E\(CCSD\(T\)\).*)', - sub_parser=TextParser(quantities=ci_quantities) - )] + "cartesian_coordinates", + rf"CARTESIAN COORDINATES \(ANGSTROEM\)\s*\-+\s*([\s\S]+?){re_n}{re_n}", + str_operation=str_to_cartesian_coordinates, + ), + Quantity( + "basis_set", + r"\n *BASIS SET INFORMATION\s*\-+([\s\S]+?)\-{10}", + sub_parser=TextParser(quantities=basis_set_quantities), + ), + Quantity( + "auxiliary_basis_set", + r"\n *AUXILIARY BASIS SET INFORMATION\s*\-+([\s\S]+?)\-{10}", + sub_parser=TextParser(quantities=basis_set_quantities), + ), + Quantity( + "basis_set_statistics", + r"BASIS SET STATISTICS AND STARTUP INFO([\s\S]+?)\-{10}", + sub_parser=TextParser(quantities=basis_set_statistics_quantities), + ), + Quantity( + "self_consistent", + r"((?:ORCA SCF|DFT GRID GENERATION)\s*\-+[\s\S]+?(?:\-{70}|\Z))", + sub_parser=TextParser(quantities=self_consistent_quantities), + ), + Quantity( + "tddft", + r"ORCA TD\-DFT(?:/TDA)* CALCULATION\s*\-+\s*([\s\S]+?E\(tot\).*)", + sub_parser=TextParser(quantities=tddft_quantities), + ), + Quantity( + "mp2", + r"ORCA MP2 CALCULATION([\s\S]+?MP2 TOTAL ENERGY:.+)", + sub_parser=TextParser(quantities=mp2_quantities), + ), + Quantity( + "ci", + r"ORCA\-MATRIX DRIVEN CI([\s\S]+?E\(CCSD\(T\)\).*)", + sub_parser=TextParser(quantities=ci_quantities), + ), + ] - geometry_optimization_quantities = [Quantity( - '%s_tol' % key.lower().replace(' ', '_').replace('.', ''), - rf'%s\s*(\w+)\s*\.+\s*({re_float})' % key, dtype=float) for key in [ - 'Energy Change', 'Max. Gradient', 'RMS Gradient', 'Max. Displacement', - 'RMS Displacement']] + geometry_optimization_quantities = [ + Quantity( + "%s_tol" % key.lower().replace(" ", "_").replace(".", ""), + rf"%s\s*(\w+)\s*\.+\s*({re_float})" % key, + dtype=float, + ) + for key in [ + "Energy Change", + "Max. Gradient", + "RMS Gradient", + "Max. Displacement", + "RMS Displacement", + ] + ] geometry_optimization_quantities += [ - Quantity( - 'update_method', r'Update method\s*(\w+)\s*\.+\s*(.+)'), - Quantity( - 'coords_choice', r'Choice of coordinates\s*(\w+)\s*\.+\s*(.+)'), - Quantity( - 'initial_hessian', r'Initial Hessian\s*(\w+)\s*\.+\s*(.+)')] + Quantity("update_method", r"Update method\s*(\w+)\s*\.+\s*(.+)"), + Quantity("coords_choice", r"Choice of coordinates\s*(\w+)\s*\.+\s*(.+)"), + Quantity("initial_hessian", r"Initial Hessian\s*(\w+)\s*\.+\s*(.+)"), + ] geometry_optimization_quantities += [ Quantity( - 'cycle', - r'OPTIMIZATION CYCLE\s*\d+\s*\*\s*\*+([\s\S]+?)(?:\*\s*GEOMETRY|OPTIMIZATION RUN DONE|\Z)', - repeats=True, sub_parser=TextParser(quantities=calculation_quantities)), + "cycle", + r"OPTIMIZATION CYCLE\s*\d+\s*\*\s*\*+([\s\S]+?)(?:\*\s*GEOMETRY|OPTIMIZATION RUN DONE|\Z)", + repeats=True, + sub_parser=TextParser(quantities=calculation_quantities), + ), Quantity( - 'final_energy_evaluation', - r'FINAL ENERGY EVALUATION AT THE STATIONARY POINT([\s\S]+?FINAL SINGLE POINT ENERGY.*)', - sub_parser=TextParser(quantities=calculation_quantities))] + "final_energy_evaluation", + r"FINAL ENERGY EVALUATION AT THE STATIONARY POINT([\s\S]+?FINAL SINGLE POINT ENERGY.*)", + sub_parser=TextParser(quantities=calculation_quantities), + ), + ] self._quantities = [ Quantity( - 'program_version', - r'Program Version\s*([\w_.].*)', convert=False, flatten=False), - Quantity( - 'program_svn', - r'\(SVN:\s*\$([^$]+)\$\)\s', convert=False, flatten=False), - Quantity( - 'program_compilation_date', - r'\(\$Date\:\s*(\w.+?)\s*\$\)', convert=False, flatten=False), - Quantity( - 'input_file', - r'INPUT FILE\s*\=+([\s\S]+?)END OF INPUT', - sub_parser=TextParser(quantities=[ - Quantity('xc_functional', r'\d+>\s*!\s*(\S+)'), - Quantity('tier', r'(\w+SCF)'), - ])), - Quantity( - 'single_point', - r'\* Single Point Calculation \*\s*\*+([\s\S]+?(?:FINAL SINGLE POINT ENERGY.*|\Z))', - sub_parser=TextParser(quantities=calculation_quantities)), - Quantity( - 'geometry_optimization', - r'\* Geometry Optimization Run \*\s*\*+([\s\S]+?(?:OPTIMIZATION RUN DONE|\Z))', - sub_parser=TextParser(quantities=geometry_optimization_quantities)) + "program_version", + r"Program Version\s*([\w_.].*)", + convert=False, + flatten=False, + ), + Quantity( + "program_svn", r"\(SVN:\s*\$([^$]+)\$\)\s", convert=False, flatten=False + ), + Quantity( + "program_compilation_date", + r"\(\$Date\:\s*(\w.+?)\s*\$\)", + convert=False, + flatten=False, + ), + Quantity( + "input_file", + r"INPUT FILE\s*\=+([\s\S]+?)END OF INPUT", + sub_parser=TextParser( + quantities=[ + Quantity("xc_functional", r"\d+>\s*!\s*(\S+)"), + Quantity("tier", r"(\w+SCF)"), + ] + ), + ), + Quantity( + "single_point", + r"\* Single Point Calculation \*\s*\*+([\s\S]+?(?:FINAL SINGLE POINT ENERGY.*|\Z))", + sub_parser=TextParser(quantities=calculation_quantities), + ), + Quantity( + "geometry_optimization", + r"\* Geometry Optimization Run \*\s*\*+([\s\S]+?(?:OPTIMIZATION RUN DONE|\Z))", + sub_parser=TextParser(quantities=geometry_optimization_quantities), + ), ] @@ -545,65 +880,81 @@ def __init__(self): # TODO list adapted from old parser, is incomplete and entries may be incorrect self._xc_functional_map = { - 'HF': ['HS_X'], - 'HFS': ['HF_X'], - 'XALPHA': ['HF_X', 'LDA_C_XALPHA'], - 'LSD': ['LDA_X', 'LDA_C_VWN_RPA', 'VWN5_RPA'], - 'LDA': ['LDA_X', 'LDA_C_VWN_RPA', 'VWN5_RPA'], - 'VWN': ['LDA_X', 'LDA_C_VWN_RPA', 'VWN5_RPA'], - 'VWN5': ['LDA_X', 'LDA_C_VWN_RPA', 'VWN5_RPA'], - 'VWN3': ['LDA_X', 'LDA_C_VWN_3'], - 'PWLDA': ['LDA_X', 'LDA_C_PW'], - 'BNULL': ['GGA_X_B88'], - 'BVWN': ['GGA_X_B88', 'LDA_C_VWN_RPA', 'VWN5_RPA'], - 'BP': ['LDA_X', 'GGA_X_B88', 'LDA_C_VWN', 'GGA_C_P86'], - 'BP86': ['LDA_X', 'GGA_X_B88', 'LDA_C_VWN', 'GGA_C_P86'], - 'PW91': ['GGA_X_PW91', 'GGA_C_PW91'], - 'PWP': ['GGA_X_PW91', 'GGA_C_P86'], - 'MPWPW': ['GGA_X_MPW91', 'GGA_C_PW91'], - 'MPWLYP': ['GGA_X_MPW91', 'GGA_C_LYP'], - 'BLYP': ['GGA_X_B88', 'GGA_C_LYP'], - 'GP': ['GGA_X_G96', 'GGA_C_P86'], - 'GLYP': ['GGA_X_G96', 'GGA_C_LYP'], - 'PBE': ['GGA_X_PBE', 'GGA_C_PBE'], - 'REVPBE': ['GGA_X_PBE_R', 'GGA_C_PBE'], - 'RPBE': ['GGA_X_RPBE', 'GGA_C_PBE'], - 'OLYP': ['GGA_X_OPTX', 'GGA_C_LYP', 'GGA_XC_OPWLYP_D'], - 'OPBE': ['GGA_XC_OPBE_D'], - 'XLYP': ['GGA_XC_XLYP'], - 'B97-D': ['GGA_XC_B97_D'], - 'B97-D3': ['GGA_XC_B97_D'], - 'TPSS': ['LDA_X', 'MGGA_X_TPSS', 'LDA_C_PW', 'MGGA_C_TPSS'], - 'TPSSh': ['HYB_MGGA_XC_TPSSH'], - 'M06L': ['MGGA_X_M06_L', 'MGGA_C_M06_L'], - 'M06': ['MGGA_X_M06', 'MGGA_C_M06'], - 'M062X': ['MGGA_X_M06_2X', 'MGGA_C_M06_2X'], - 'B1LYP': ['HYB_GGA_XC_B1LYP'], - 'B3LYP': ['HYB_GGA_XC_B3LYP'], - 'B1P': ['HYB_GGA_XC_B1PW91'], - 'B3P': ['HYB_GGA_XC_B3P86'], - 'B3PW': ['HYB_GGA_XC_B3PW91'], - 'G1LYP': ['GGA_X_G96', 'GGA_C_OP_G96'], - 'PBE0': ['HYB_GGA_XC_PBEH'], - 'PW1PW': ['HYB_GGA_XC_B1PW91'], - 'PWP91_1': ['HYB_GGA_XC_B1PW91'], - 'PWP1': ['HYB_GGA_XC_B1PW91'], - 'mPW1PW': ['HYB_GGA_XC_MPW1PW'], - 'mPW1LYP': ['HYB_GGA_XC_MPWLYP1M'], - 'O3LYP': ['HYB_GGA_XC_O3LYP'], - 'X3LYP': ['HYB_GGA_XC_X3LYP'], - 'PW6B95': ['HYB_MGGA_XC_PW6B95'], - 'B97': ['HYB_GGA_XC_B97'], - 'BHANDHLYP': ['HYB_GGA_XC_BHANDHLYP'], - 'B2PLYP': ['HYB_GGA_XC_B2PLYP'], - 'MB2PLYP': ['HYB_GGA_XC_MB2PLYP'], - 'PWPB95': ['HYB_MGGA_XC_MPW1B95']} + "HF": ["HS_X"], + "HFS": ["HF_X"], + "XALPHA": ["HF_X", "LDA_C_XALPHA"], + "LSD": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + "LDA": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + "VWN": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + "VWN5": ["LDA_X", "LDA_C_VWN_RPA", "VWN5_RPA"], + "VWN3": ["LDA_X", "LDA_C_VWN_3"], + "PWLDA": ["LDA_X", "LDA_C_PW"], + "BNULL": ["GGA_X_B88"], + "BVWN": ["GGA_X_B88", "LDA_C_VWN_RPA", "VWN5_RPA"], + "BP": ["LDA_X", "GGA_X_B88", "LDA_C_VWN", "GGA_C_P86"], + "BP86": ["LDA_X", "GGA_X_B88", "LDA_C_VWN", "GGA_C_P86"], + "PW91": ["GGA_X_PW91", "GGA_C_PW91"], + "PWP": ["GGA_X_PW91", "GGA_C_P86"], + "MPWPW": ["GGA_X_MPW91", "GGA_C_PW91"], + "MPWLYP": ["GGA_X_MPW91", "GGA_C_LYP"], + "BLYP": ["GGA_X_B88", "GGA_C_LYP"], + "GP": ["GGA_X_G96", "GGA_C_P86"], + "GLYP": ["GGA_X_G96", "GGA_C_LYP"], + "PBE": ["GGA_X_PBE", "GGA_C_PBE"], + "REVPBE": ["GGA_X_PBE_R", "GGA_C_PBE"], + "RPBE": ["GGA_X_RPBE", "GGA_C_PBE"], + "OLYP": ["GGA_X_OPTX", "GGA_C_LYP", "GGA_XC_OPWLYP_D"], + "OPBE": ["GGA_XC_OPBE_D"], + "XLYP": ["GGA_XC_XLYP"], + "B97-D": ["GGA_XC_B97_D"], + "B97-D3": ["GGA_XC_B97_D"], + "TPSS": ["LDA_X", "MGGA_X_TPSS", "LDA_C_PW", "MGGA_C_TPSS"], + "TPSSh": ["HYB_MGGA_XC_TPSSH"], + "M06L": ["MGGA_X_M06_L", "MGGA_C_M06_L"], + "M06": ["MGGA_X_M06", "MGGA_C_M06"], + "M062X": ["MGGA_X_M06_2X", "MGGA_C_M06_2X"], + "B1LYP": ["HYB_GGA_XC_B1LYP"], + "B3LYP": ["HYB_GGA_XC_B3LYP"], + "B1P": ["HYB_GGA_XC_B1PW91"], + "B3P": ["HYB_GGA_XC_B3P86"], + "B3PW": ["HYB_GGA_XC_B3PW91"], + "G1LYP": ["GGA_X_G96", "GGA_C_OP_G96"], + "PBE0": ["HYB_GGA_XC_PBEH"], + "PW1PW": ["HYB_GGA_XC_B1PW91"], + "PWP91_1": ["HYB_GGA_XC_B1PW91"], + "PWP1": ["HYB_GGA_XC_B1PW91"], + "mPW1PW": ["HYB_GGA_XC_MPW1PW"], + "mPW1LYP": ["HYB_GGA_XC_MPWLYP1M"], + "O3LYP": ["HYB_GGA_XC_O3LYP"], + "X3LYP": ["HYB_GGA_XC_X3LYP"], + "PW6B95": ["HYB_MGGA_XC_PW6B95"], + "B97": ["HYB_GGA_XC_B97"], + "BHANDHLYP": ["HYB_GGA_XC_BHANDHLYP"], + "B2PLYP": ["HYB_GGA_XC_B2PLYP"], + "MB2PLYP": ["HYB_GGA_XC_MB2PLYP"], + "PWPB95": ["HYB_MGGA_XC_MPW1B95"], + } self._functional_type = { - 'SLATER': 'LDA', 'B88': 'GGA', 'G96': 'GGA', 'PW91': 'GGA', 'MPW': 'GGA', - 'PBE': 'GGA', 'RPBE': 'GGA', 'OPTX': 'GGA', 'X': 'GGA', 'TPSS': 'MGGA', - 'B97D': 'GGA', 'B97BECKE': 'GGA', 'SCAN': 'MGGA', 'VWN5': 'LDA', 'VWN3': 'LDA', - 'PWLDA': 'LDA', 'P86': 'GGA', 'LYP': 'GGA'} + "SLATER": "LDA", + "B88": "GGA", + "G96": "GGA", + "PW91": "GGA", + "MPW": "GGA", + "PBE": "GGA", + "RPBE": "GGA", + "OPTX": "GGA", + "X": "GGA", + "TPSS": "MGGA", + "B97D": "GGA", + "B97BECKE": "GGA", + "SCAN": "MGGA", + "VWN5": "LDA", + "VWN3": "LDA", + "PWLDA": "LDA", + "P86": "GGA", + "LYP": "GGA", + } def parse_method(self, section): sec_method = Method() @@ -611,49 +962,77 @@ def parse_method(self, section): trivial = [None] * 2 _native_tier_map = { - 'SloppySCF': 3.0e-05, 'LooseSCF': 1.0e-05, 'NormalSCF': 1.0e-06, - 'StrongSCF': 3.0e-07, 'TightSCF': 1.0e-08, 'VeryTightSCF': 1.0e-09, - 'ExtremeSCF': 1.0e-14, + "SloppySCF": 3.0e-05, + "LooseSCF": 1.0e-05, + "NormalSCF": 1.0e-06, + "StrongSCF": 3.0e-07, + "TightSCF": 1.0e-08, + "VeryTightSCF": 1.0e-09, + "ExtremeSCF": 1.0e-14, } # https://sites.google.com/site/orcainputlibrary/numerical-precision _native_tier_map = {k.lower(): v for k, v in _native_tier_map.items()} sec_scf = Scf( - native_tier=self.out_parser.get('input_file', {}).get('tier'), + native_tier=self.out_parser.get("input_file", {}).get("tier"), + ) + scf_convergence = ( + self.out_parser.get("single_point", {}) + .get("self_consistent", {}) + .get("scf_convergence", {}) ) - scf_convergence = self.out_parser.get('single_point', {}).\ - get('self_consistent', {}).get('scf_convergence', {}) - if threshold_energy_change := scf_convergence.get('last_energy_change', - trivial)[-1]: - sec_scf.threshold_energy_change = threshold_energy_change * ureg.hartree # TODO: extract this from the setup, so it is present even whan a calcultion does not finish properly - sec_scf.threshold_density_change = scf_convergence.get('last_rms_density_change', - trivial)[-1] + if threshold_energy_change := scf_convergence.get( + "last_energy_change", trivial + )[-1]: + sec_scf.threshold_energy_change = ( + threshold_energy_change * ureg.hartree + ) # TODO: extract this from the setup, so it is present even whan a calcultion does not finish properly + sec_scf.threshold_density_change = scf_convergence.get( + "last_rms_density_change", trivial + )[-1] sec_scf.x_orca_last_max_density_change = scf_convergence.get( - 'last_max_density_change', trivial)[-1] + "last_max_density_change", trivial + )[-1] if sec_scf.native_tier and not sec_scf.threshold_energy_change: - sec_scf.threshold_energy_change =\ + sec_scf.threshold_energy_change = ( _native_tier_map[sec_scf.native_tier.lower()] * ureg.hartree + ) sec_method.scf = sec_scf # TODO check if the section is filled # Basis set # all values are set at the basis_set level # TODO fix metainfo so variables take lists sec_basis_sets = [] - for kind, kind_map in [('basis_set', 'wavefunction'), ('auxiliary_basis_set', 'auxiliary')]: + for kind, kind_map in [ + ("basis_set", "wavefunction"), + ("auxiliary_basis_set", "auxiliary"), + ]: basis_set = section.get(kind) if basis_set is None: continue - exctraction_keys = ['basis_set', 'basis_set_atom_labels', 'basis_set_contracted'] + exctraction_keys = [ + "basis_set", + "basis_set_atom_labels", + "basis_set_contracted", + ] for key in exctraction_keys: vals = basis_set.get(key, []) for bs_index, val in enumerate(vals): - prefix = '' if key == 'basis_set_atom_labels' else kind.split('basis_set', maxsplit=1)[0] - metainfo_name = 'x_orca_%s%s' % (prefix, key) + prefix = ( + "" + if key == "basis_set_atom_labels" + else kind.split("basis_set", maxsplit=1)[0] + ) + metainfo_name = "x_orca_%s%s" % (prefix, key) # Note: this assumes that each `extraction_key` follows the same order. Not my assumption if bs_index >= len(sec_basis_sets): - sec_basis_sets.append(BasisSet(type='gaussians',)) + sec_basis_sets.append( + BasisSet( + type="gaussians", + ) + ) setattr(sec_basis_sets[bs_index], metainfo_name, val) sec_method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', + type="atom-centered orbitals", scope=[kind_map], basis_set=sec_basis_sets, ) @@ -661,15 +1040,17 @@ def parse_method(self, section): # gaussian basis sets for em in sec_method.electrons_representation: - if 'wavefunction' in em.scope: - if basis_set := section.get('basis_set_statistics'): - sec_basis_set = BasisSet(type='gaussians',) + if "wavefunction" in em.scope: + if basis_set := section.get("basis_set_statistics"): + sec_basis_set = BasisSet( + type="gaussians", + ) for key, val in basis_set.items(): if val is None: continue for n in range(len(val)): - ext = '' if n == 0 else '_aux' - setattr(sec_basis_set, 'x_orca_%s%s' % (key, ext), val[n]) + ext = "" if n == 0 else "_aux" + setattr(sec_basis_set, "x_orca_%s%s" % (key, ext), val[n]) em.basis_set.append(sec_basis_set) sec_dft = DFT() @@ -677,76 +1058,90 @@ def parse_method(self, section): sec_electronic = Electronic() sec_method.electronic = sec_electronic # TODO identify DFT+U - sec_electronic.method = 'DFT' + sec_electronic.method = "DFT" - scf_settings = section.get('self_consistent', {}).get('scf_settings', {}) + scf_settings = section.get("self_consistent", {}).get("scf_settings", {}) for key, val in scf_settings.items(): if val is not None: - if hasattr(val, 'units'): - if val.units == 'hartree': - val = val.to('joule').magnitude - setattr(sec_method, 'x_orca_%s' % key, val) + if hasattr(val, "units"): + if val.units == "hartree": + val = val.to("joule").magnitude + setattr(sec_method, "x_orca_%s" % key, val) - dft_grid_generation = section.get('self_consistent', {}).get('dft_grid_generation', {}) + dft_grid_generation = section.get("self_consistent", {}).get( + "dft_grid_generation", {} + ) for key, val in dft_grid_generation.items(): if val is not None: - setattr(sec_method, 'x_orca_%s' % key, val) + setattr(sec_method, "x_orca_%s" % key, val) - final_grid = section.get('self_consistent', {}).get('final_grid', {}) + final_grid = section.get("self_consistent", {}).get("final_grid", {}) for key, val in final_grid.items(): if val is not None: - setattr(sec_method, 'x_orca_%s' % key, val) + setattr(sec_method, "x_orca_%s" % key, val) # xc functional # get type from input card - xc_functional = self.out_parser.get('input_file', {}).get('xc_functional', '').upper() + xc_functional = ( + self.out_parser.get("input_file", {}).get("xc_functional", "").upper() + ) xc_functionals = self._xc_functional_map.get(xc_functional, []) # if not in map, get it from explicit exchange and correlation settings if len(xc_functionals) == 0: - xc_functional_type = scf_settings.get('XC_functional_type', '') - if xc_functional_type.startswith('Hartree-Fock'): - xc_functionals = self._xc_functional_map.get('HF', []) - - elif xc_functional_type.startswith('DFT'): - exchange = scf_settings.get( - 'exchange_functional').upper().replace('-', '').split('_')[0] + xc_functional_type = scf_settings.get("XC_functional_type", "") + if xc_functional_type.startswith("Hartree-Fock"): + xc_functionals = self._xc_functional_map.get("HF", []) + + elif xc_functional_type.startswith("DFT"): + exchange = ( + scf_settings.get("exchange_functional") + .upper() + .replace("-", "") + .split("_")[0] + ) exchange_type = self._functional_type.get(exchange, None) if exchange_type is not None: - xc_functionals.append('%s_X_%s' % (exchange_type, exchange)) + xc_functionals.append("%s_X_%s" % (exchange_type, exchange)) - if scf_settings.get('xalpha_param') is not None: - xc_functionals.append('LDA_X') + if scf_settings.get("xalpha_param") is not None: + xc_functionals.append("LDA_X") - correlation = scf_settings.get( - 'correl_functional').upper().replace('-', '').split('_')[0] + correlation = ( + scf_settings.get("correl_functional") + .upper() + .replace("-", "") + .split("_")[0] + ) correlation_type = self._functional_type.get(correlation, None) if correlation_type is not None: - xc_functionals.append('%s_C_%s' % (correlation_type, correlation)) + xc_functionals.append("%s_C_%s" % (correlation_type, correlation)) - lda_correlation = scf_settings.get('lda_part_of_gga_corr') + lda_correlation = scf_settings.get("lda_part_of_gga_corr") if lda_correlation is not None: - xc_functionals.append('LDA_C_%s' % (lda_correlation)) + xc_functionals.append("LDA_C_%s" % (lda_correlation)) if len(xc_functionals) == 0: - self.logger.warning('Cannot resolve xc functional', data=dict(name=xc_functional)) + self.logger.warning( + "Cannot resolve xc functional", data=dict(name=xc_functional) + ) sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for functional in xc_functionals: - if '_X_' in functional or functional.endswith('_X'): + if "_X_" in functional or functional.endswith("_X"): sec_xc_functional.exchange.append(Functional(name=functional)) - elif '_C_' in functional or functional.endswith('_C'): + elif "_C_" in functional or functional.endswith("_C"): sec_xc_functional.correlation.append(Functional(name=functional)) - elif 'HYB' in functional: + elif "HYB" in functional: sec_xc_functional.hybrid.append(Functional(name=functional)) else: sec_xc_functional.contributions.append(Functional(name=functional)) - for calculation_type in ['tddft', 'mp2', 'ci']: + for calculation_type in ["tddft", "mp2", "ci"]: calculation = section.get(calculation_type) if calculation is None: continue - method = calculation.get('electronic_structure_method') + method = calculation.get("electronic_structure_method") method = calculation_type.upper() if method is None else method sec_method = Method() self.archive.run[-1].method.append(sec_method) @@ -754,10 +1149,10 @@ def parse_method(self, section): for key, val in calculation.items(): if val is not None: - if hasattr(val, 'units'): - if val.units == 'hartree': - val = val.to('joule').magnitude - setattr(sec_method, 'x_orca_%s' % key, val) + if hasattr(val, "units"): + if val.units == "hartree": + val = val.to("joule").magnitude + setattr(sec_method, "x_orca_%s" % key, val) sec_method.starting_method_ref = self.archive.run[-1].method[0] sec_method.methods_ref = [self.archive.run[-1].method[0]] @@ -769,8 +1164,8 @@ def parse_system(self, section): self.archive.run[-1].system.append(sec_system) sec_atoms = Atoms() sec_system.atoms = sec_atoms - if section.get('cartesian_coordinates') is not None: - symbols, coordinates = section.get('cartesian_coordinates') + if section.get("cartesian_coordinates") is not None: + symbols, coordinates = section.get("cartesian_coordinates") sec_atoms.labels = symbols sec_atoms.positions = coordinates sec_atoms.periodic = [False] * 3 @@ -778,74 +1173,82 @@ def parse_system(self, section): def parse_scc(self, section): sec_run = self.archive.run[-1] - initial_time = sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + initial_time = ( + sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + ) sec_scc = Calculation() sec_run.calculation.append(sec_scc) - self_consistent = section.get('self_consistent') + self_consistent = section.get("self_consistent") if self_consistent is None: return sec_scc sec_energy = Energy() sec_scc.energy = sec_energy - scf_energy = self_consistent.get('total_scf_energy', None) + scf_energy = self_consistent.get("total_scf_energy", None) if scf_energy is not None: - sec_energy.total = EnergyEntry(value=scf_energy.get('energy_total')) + sec_energy.total = EnergyEntry(value=scf_energy.get("energy_total")) energy_keys = list(self.out_parser._energy_mapping.values()) for key, val in scf_energy.items(): if val is not None: - if key.startswith('energy_'): - sec_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '').lower()), EnergyEntry(value=val)) + if key.startswith("energy_"): + sec_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: if key in energy_keys: - val = val.to('joule').magnitude - setattr(sec_scc, 'x_orca_%s' % key, val) + val = val.to("joule").magnitude + setattr(sec_scc, "x_orca_%s" % key, val) - scf_iterations = self_consistent.get('scf_iterations', None) + scf_iterations = self_consistent.get("scf_iterations", None) if scf_iterations is not None: - for energy in scf_iterations.get('energy', []): + for energy in scf_iterations.get("energy", []): sec_scf_iteration = ScfIteration() sec_scc.scf_iteration.append(sec_scf_iteration) sec_scf_iteration.energy = Energy(total=EnergyEntry(value=energy)) # method-specific quantities - for calculation_type in ['tddft', 'mp2', 'ci']: + for calculation_type in ["tddft", "mp2", "ci"]: calculation = section.get(calculation_type) if calculation is None: continue for key, val in calculation.items(): - if hasattr(val, 'units'): - if val.units == 'hartree': - val = val.to('joule').magnitude - setattr(sec_scc, 'x_orca_%s' % key, val) + if hasattr(val, "units"): + if val.units == "hartree": + val = val.to("joule").magnitude + setattr(sec_scc, "x_orca_%s" % key, val) # eigenvalues - orbital_energies = self_consistent.get('orbital_energies') + orbital_energies = self_consistent.get("orbital_energies") if orbital_energies is not None: sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) orbital_energies = np.transpose(orbital_energies[:2]) occupation = orbital_energies[1].T - occupation = np.reshape(occupation, (len(occupation), 1, len(occupation[0]))) + occupation = np.reshape( + occupation, (len(occupation), 1, len(occupation[0])) + ) values = orbital_energies[2].T values = np.reshape(values, (len(values), 1, len(values[0]))) * ureg.hartree sec_eigenvalues.energies = values sec_eigenvalues.occupations = occupation # mulliken - mulliken = self_consistent.get('mulliken') + mulliken = self_consistent.get("mulliken") if mulliken is not None: - atomic_charges = mulliken.get('atomic_charges') - orbital_charges = mulliken.get('orbital_charges') + atomic_charges = mulliken.get("atomic_charges") + orbital_charges = mulliken.get("orbital_charges") sec_charges = Charges() sec_scc.charges.append(sec_charges) - sec_charges.analysis_method = 'mulliken' - sec_charges.n_charges_atoms = len(atomic_charges.get('species', [])) + sec_charges.analysis_method = "mulliken" + sec_charges.n_charges_atoms = len(atomic_charges.get("species", [])) sec_charges.value = atomic_charges.charge - for atom in range(len(atomic_charges.get('species', []))): - for orbital, orbital_charge in orbital_charges.atom[atom].get('charge', []): + for atom in range(len(atomic_charges.get("species", []))): + for orbital, orbital_charge in orbital_charges.atom[atom].get( + "charge", [] + ): sec_charges_value = ChargesValue() sec_charges.orbital_projected.append(sec_charges_value) sec_charges_value.atom_index = atom @@ -856,30 +1259,33 @@ def parse_scc(self, section): sec_charges.total = atomic_charges.total_charge # excitations - spectrum = section.get('tddft', {}).get('absorption_spectrum_electric') + spectrum = section.get("tddft", {}).get("absorption_spectrum_electric") if spectrum is not None: sec_spectra = Spectra() sec_scc.spectra.append(sec_spectra) spectrum = [val for val in spectrum if len(val) == 8] spectrum = np.transpose(spectrum) - sec_spectra.excitation_energies = (spectrum[1] * ureg.c * ureg.h / ureg.cm) + sec_spectra.excitation_energies = spectrum[1] * ureg.c * ureg.h / ureg.cm sec_spectra.oscillator_strengths = spectrum[3] - sec_spectra.transition_dipole_moments = np.transpose( - spectrum[5:7]) * ureg.elementary_charge * ureg.bohr + sec_spectra.transition_dipole_moments = ( + np.transpose(spectrum[5:7]) * ureg.elementary_charge * ureg.bohr + ) # timings - time = self_consistent.get('time_calculation') + time = self_consistent.get("time_calculation") if time is not None: - sec_scc.time_calculation = time[0] * 24 * 3600 + time[1] * 3600 + time[2] * 60 + time[3] + sec_scc.time_calculation = ( + time[0] * 24 * 3600 + time[1] * 3600 + time[2] * 60 + time[3] + ) sec_scc.time_physical = initial_time + sec_scc.time_calculation - timings = self_consistent.get('timings', {}) + timings = self_consistent.get("timings", {}) for key, val in timings.items(): if val is not None: - if key == 'final_time' or key == 'scf_gradient': + if key == "final_time" or key == "scf_gradient": sec_scc.time_calculation = val sec_scc.time_physical = initial_time + sec_scc.time_calculation else: - setattr(sec_scc, 'x_orca_%s' % key, val.magnitude) + setattr(sec_scc, "x_orca_%s" % key, val.magnitude) return sec_scc @@ -893,40 +1299,48 @@ def parse_configuration(section): sec_scc.method_ref = sec_method sec_scc.system_ref = sec_system - parse_configuration(self.out_parser.get('single_point')) + parse_configuration(self.out_parser.get("single_point")) workflow = None - geometry_optimization = self.out_parser.get('geometry_optimization') + geometry_optimization = self.out_parser.get("geometry_optimization") if geometry_optimization is not None: - for cycle in geometry_optimization.get('cycle', []): + for cycle in geometry_optimization.get("cycle", []): parse_configuration(cycle) - parse_configuration(geometry_optimization.get('final_energy_evaluation')) + parse_configuration(geometry_optimization.get("final_energy_evaluation")) workflow = GeometryOptimization(method=GeometryOptimizationMethod()) for key, val in geometry_optimization.items(): - if key in ['cycle', 'final_energy_evaluation'] or val is None: + if key in ["cycle", "final_energy_evaluation"] or val is None: continue - if key.endswith('tol'): - if 'gradient' in key: - val[1] = (val[1] * ureg.hartree / ureg.bohr).to('joule/meter').magnitude - if 'max' in key: + if key.endswith("tol"): + if "gradient" in key: + val[1] = ( + (val[1] * ureg.hartree / ureg.bohr) + .to("joule/meter") + .magnitude + ) + if "max" in key: workflow.method.convergence_tolerance_force_maximum = val[1] - elif 'displacement' in key: - val[1] = (val[1] * ureg.bohr).to('meter').magnitude - if 'max' in key: - workflow.method.convergence_tolerance_displacement_maximum = val[1] + elif "displacement" in key: + val[1] = (val[1] * ureg.bohr).to("meter").magnitude + if "max" in key: + workflow.method.convergence_tolerance_displacement_maximum = val[ + 1 + ] else: - val[1] = (val[1] * ureg.hartree).to('joule').magnitude - if 'energy' in key: - workflow.method.convergence_tolerance_energy_difference = val[1] - setattr(workflow, 'x_orca_%s_value' % key, val[1]) + val[1] = (val[1] * ureg.hartree).to("joule").magnitude + if "energy" in key: + workflow.method.convergence_tolerance_energy_difference = ( + val[1] + ) + setattr(workflow, "x_orca_%s_value" % key, val[1]) val = val[0] - elif key in ['update_method', 'coords_choice', 'initial_hessian']: - setattr(workflow, 'x_orca_%s_name' % key, ' '.join(val[1:])) + elif key in ["update_method", "coords_choice", "initial_hessian"]: + setattr(workflow, "x_orca_%s_name" % key, " ".join(val[1:])) val = val[0] - setattr(workflow, 'x_orca_%s' % key, val) + setattr(workflow, "x_orca_%s" % key, val) self.archive.workflow2 = workflow @@ -942,14 +1356,16 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='ORCA') + sec_run.program = Program(name="ORCA") version = [] - for key in ['program_version', 'program_svn', 'program_compilation_date']: + for key in ["program_version", "program_svn", "program_compilation_date"]: val = self.out_parser.get(key) if val is not None: - setattr(sec_run, 'x_orca_%s' % key, val) + setattr(sec_run, "x_orca_%s" % key, val) version.append(val) - sec_run.program.version = ' '.join(version) - sec_run.program.compilation_date = self.out_parser.get('program_compilation_date') + sec_run.program.version = " ".join(version) + sec_run.program.compilation_date = self.out_parser.get( + "program_compilation_date" + ) self.parse_configurations() diff --git a/electronicparsers/psi4/metainfo/psi4.py b/electronicparsers/psi4/metainfo/psi4.py index e5aee644..168e9fc1 100644 --- a/electronicparsers/psi4/metainfo/psi4.py +++ b/electronicparsers/psi4/metainfo/psi4.py @@ -16,10 +16,17 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, Reference + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -37,39 +44,45 @@ class Run(runschema.run.Run): x_psi4_git_rev = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_process_id = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_psidatadir = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_memory = Quantity( type=np.dtype(np.float64), shape=[], # unit='MiB', - description=''' - ''') + description=""" + """, + ) x_psi4_threads = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_input_file = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class System(runschema.system.System): @@ -78,63 +91,73 @@ class System(runschema.system.System): x_psi4_molecular_point_group = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_full_point_group = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_molecular_symmetry = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_rotational_constants = Quantity( type=np.dtype(np.float64), shape=[3], # unit='1/cm', - description=''' - ''') + description=""" + """, + ) x_psi4_nuclear_repulsion = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_multiplicity = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_nalpha = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_nbeta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class Scf(runschema.method.Scf): @@ -143,32 +166,37 @@ class Scf(runschema.method.Scf): x_psi4_diis = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_mom = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_fractional_occupation = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_guess_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_integral_threshold = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class BasisSetAtomCentered(runschema.method.BasisSetAtomCentered): @@ -177,46 +205,53 @@ class BasisSetAtomCentered(runschema.method.BasisSetAtomCentered): x_psi4_blend = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_n_shells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Gives the number of shell types used. - ''') + """, + ) x_psi4_max_angular_momentum = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum angular momentum quantum number corresponding to the shells used. - ''') + """, + ) x_psi4_n_cartesian_functions = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_spherical_harmonics = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_n_ecp_primitives = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_n_ecp_core_electrons = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) class Method(runschema.method.Method): @@ -225,50 +260,58 @@ class Method(runschema.method.Method): x_psi4_scf_algorithm_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_diis = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_mom = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_fractional_occupation = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_guess_type = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_options = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_jk_matrices_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) class DFT(runschema.method.DFT): @@ -277,8 +320,9 @@ class DFT(runschema.method.DFT): x_psi4_molecular_quadrature = Quantity( type=typing.Any, shape=[], - description=''' - ''') + description=""" + """, + ) class x_psi4_root_information(MSection): @@ -287,8 +331,9 @@ class x_psi4_root_information(MSection): x_psi4_root_energy = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class Calculation(runschema.calculation.Calculation): @@ -297,25 +342,31 @@ class Calculation(runschema.calculation.Calculation): x_psi4_s2_expected = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_s2_observed = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_s_expected = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_psi4_s_observed = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) - x_psi4_root_information = SubSection(sub_section=x_psi4_root_information.m_def, repeats=True) + x_psi4_root_information = SubSection( + sub_section=x_psi4_root_information.m_def, repeats=True + ) diff --git a/electronicparsers/psi4/parser.py b/electronicparsers/psi4/parser.py index ee2a8edf..cde98b46 100644 --- a/electronicparsers/psi4/parser.py +++ b/electronicparsers/psi4/parser.py @@ -26,13 +26,33 @@ from runschema.run import Run, Program, TimeRun from runschema.system import System, Atoms from runschema.method import ( - Electronic, Method, BasisSet, BasisSetAtomCentered, Scf as ScfMethod, DFT, - XCFunctional, Functional, BasisSetContainer,) + Electronic, + Method, + BasisSet, + BasisSetAtomCentered, + Scf as ScfMethod, + DFT, + XCFunctional, + Functional, + BasisSetContainer, +) from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, ScfIteration, BandEnergies, - Multipoles, MultipolesEntry, Charges, ChargesValue) + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + ScfIteration, + BandEnergies, + Multipoles, + MultipolesEntry, + Charges, + ChargesValue, +) from simulationworkflowschema import ( - SinglePoint, GeometryOptimization, GeometryOptimizationMethod + SinglePoint, + GeometryOptimization, + GeometryOptimizationMethod, ) from .metainfo.psi4 import x_psi4_root_information from .metainfo import m_env @@ -43,12 +63,12 @@ def __init__(self): super().__init__(None) def init_quantities(self): - re_f = r'-*\d+\.\d+[Ee]*[-+]*\d*' + re_f = r"-*\d+\.\d+[Ee]*[-+]*\d*" def str_to_basis(val_in): data = dict() - for line in val_in.strip().split('\n'): - line = line.split(':') + for line in val_in.strip().split("\n"): + line = line.split(":") if len(line) == 2: data[line[0].strip()] = line[1].strip() return data @@ -61,507 +81,834 @@ def str_to_orbital_energies(val_in): def str_to_eigenvalues(val_in): orbital_energies = [] - for val in val_in.strip().split('\n'): - if 'occupied orbitals' in val: + for val in val_in.strip().split("\n"): + if "occupied orbitals" in val: orbital_energies.append([[], []]) - elif 'Active orbitals' in val: + elif "Active orbitals" in val: pass else: val = val.strip().split() if len(val) % 3 != 0: continue - orbital_energies[-1][0].extend([val[i] for i in range(2, len(val), 3)]) - orbital_energies[-1][1].extend([float(val[i]) for i in range(1, len(val), 3)]) + orbital_energies[-1][0].extend( + [val[i] for i in range(2, len(val), 3)] + ) + orbital_energies[-1][1].extend( + [float(val[i]) for i in range(1, len(val), 3)] + ) return orbital_energies def str_to_parameters(val_in): - val_in = val_in.strip().split('\n') + val_in = val_in.strip().split("\n") name = val_in[0].split()[0] parameters = dict() - separator = '=' - if '=>' in val_in[-1]: - separator = '=>' - elif ':' in val_in[-1]: - separator = ':' + separator = "=" + if "=>" in val_in[-1]: + separator = "=>" + elif ":" in val_in[-1]: + separator = ":" for val in val_in: - val = [v.rstrip('!').strip() for v in val.split(separator)] + val = [v.rstrip("!").strip() for v in val.split(separator)] if len(val) == 2: try: val[1] = float(val[1]) except Exception: pass - if val[1] in ['TRUE', 'FALSE']: - val[1] = val[1] == 'TRUE' + if val[1] in ["TRUE", "FALSE"]: + val[1] = val[1] == "TRUE" parameters[val[0]] = val[1] return name, parameters charges_quantities = [ Quantity( - 'atom', - rf'\d+ +[A-Z][a-z]* +({re_f}) +({re_f}) +({re_f}) +({re_f})', - repeats=True, dtype=np.dtype(np.float64)), + "atom", + rf"\d+ +[A-Z][a-z]* +({re_f}) +({re_f}) +({re_f}) +({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ), Quantity( - 'total', - rf'Total alpha = +({re_f}), Total beta = +({re_f}), Total charge = +({re_f})', - dtype=np.dtype(np.float64))] + "total", + rf"Total alpha = +({re_f}), Total beta = +({re_f}), Total charge = +({re_f})", + dtype=np.dtype(np.float64), + ), + ] properties_quantities = [ Quantity( - 'multipole_moments', - r'Multipole +Electric \(a\.u\.\) .+\s+\-+([\s\S]+?)\-{10}', - sub_parser=TextParser(quantities=[ - Quantity( - 'dipole', - r'Dipole [XYZ] +: +(.+)', - repeats=True, dtype=np.dtype(np.float64)), - Quantity( - 'quadrupole', - r'Quadrupole [XYZ]{2} +: +(.+)', - repeats=True, dtype=np.dtype(np.float64)), - Quantity( - 'octupole', - r'Octupole [XYZ]{3} +: +(.+)', - repeats=True, dtype=np.dtype(np.float64)), - Quantity( - 'hexadecapole', - r'Hexadecapole [XYZ]{4} +: +(.+)', - repeats=True, dtype=np.dtype(np.float64)), - Quantity( - 'npole', - r'32-pole [XYZ]{5} +: +(.+)', - repeats=True, dtype=np.dtype(np.float64)) - ]) - ), - Quantity( - 'nuclear_dipole_moment', - rf'Nuclear Dipole Moment: \(a\.u\.\)\s+X: +({re_f}) +Y: +({re_f}) +Z: +({re_f})', - dtype=np.dtype(np.float64)), - Quantity( - 'electronic_dipole_moment', - rf'Electronic Dipole Moment: \(a\.u\.\)\s+X: +({re_f}) +Y: +({re_f}) +Z: +({re_f})', - dtype=np.dtype(np.float64)), - Quantity( - 'total_dipole_moment', - rf'Dipole Moment: \(a\.u\.\)\s+X: +({re_f}) +Y: +({re_f}) +Z: +({re_f})', - dtype=np.dtype(np.float64)), - Quantity( - 'mulliken_charges', - r'Mulliken Charges: \(a\.u\.\)\s+.+([\s\S]+?Total charge.+)', - sub_parser=TextParser(quantities=charges_quantities)), - Quantity( - 'lowdin_charges', - r'Lowdin Charges: \(a\.u\.\)\s+.+([\s\S]+?Total charge.+)', - sub_parser=TextParser(quantities=charges_quantities)) + "multipole_moments", + r"Multipole +Electric \(a\.u\.\) .+\s+\-+([\s\S]+?)\-{10}", + sub_parser=TextParser( + quantities=[ + Quantity( + "dipole", + r"Dipole [XYZ] +: +(.+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "quadrupole", + r"Quadrupole [XYZ]{2} +: +(.+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "octupole", + r"Octupole [XYZ]{3} +: +(.+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "hexadecapole", + r"Hexadecapole [XYZ]{4} +: +(.+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "npole", + r"32-pole [XYZ]{5} +: +(.+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + ] + ), + ), + Quantity( + "nuclear_dipole_moment", + rf"Nuclear Dipole Moment: \(a\.u\.\)\s+X: +({re_f}) +Y: +({re_f}) +Z: +({re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "electronic_dipole_moment", + rf"Electronic Dipole Moment: \(a\.u\.\)\s+X: +({re_f}) +Y: +({re_f}) +Z: +({re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "total_dipole_moment", + rf"Dipole Moment: \(a\.u\.\)\s+X: +({re_f}) +Y: +({re_f}) +Z: +({re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "mulliken_charges", + r"Mulliken Charges: \(a\.u\.\)\s+.+([\s\S]+?Total charge.+)", + sub_parser=TextParser(quantities=charges_quantities), + ), + Quantity( + "lowdin_charges", + r"Lowdin Charges: \(a\.u\.\)\s+.+([\s\S]+?Total charge.+)", + sub_parser=TextParser(quantities=charges_quantities), + ), ] scf_quantities = [ Quantity( - 'geometry', - r'Geometry <==([\s\S]+?)==>', sub_parser=TextParser(quantities=[ - Quantity( - 'atoms', - rf'([A-Z][a-z]* +{re_f} +{re_f} +{re_f} +{re_f}\n)', - repeats=True), - Quantity('molecular_point_group', r'Molecular point group: *(\w+)', dtype=str), - Quantity('full_point_group', r'Full point group: *(\w+)', dtype=str), - Quantity('symmetry', r'Running in (\w+) symmetry\.', dtype=str), - Quantity( - 'rotational_constants', - rf'Rotational constants: *A = *({re_f}) *B = *({re_f}) *C = *({re_f}) \[cm\^-1\]', - dtype=np.dtype(np.float64)), - Quantity('nuclear_repulsion', rf'Nuclear repulsion = *({re_f})', dtype=np.float64), - Quantity('charge', r'Charge *= (\d+)', dtype=np.float64), - Quantity('multiplicity', r'Multiplicity *= (\d+)', dtype=np.float64), - Quantity('electrons', r'Electrons *= (\d+)', dtype=np.float64), - Quantity('nalpha', r'Nalpha *= (\d+)', dtype=np.float64), - Quantity('nbeta', r'Nbeta *= (\d+)', dtype=np.float64)])), - Quantity( - 'algorithm', - r'Algorithm <==([\s\S]+?)==>', sub_parser=TextParser(quantities=[ - Quantity( - 'minimization_algorithm', - r'SCF Algorithm Type is (.+)\.', dtype=str), - Quantity( - 'x_psi4_diis', - r'DIIS (.+)\.', str_operation=lambda x: x == 'enabled'), - Quantity( - 'x_psi4_mom', - r'MOM (.+)\.', str_operation=lambda x: x == 'enabled'), - Quantity( - 'x_psi4_fractional_occupation', - r'Fractional occupation (.+)\.', str_operation=lambda x: x == 'enabled'), - Quantity( - 'x_psi4_guess_type', - r'Guess Type is (.+)\.', dtype=str), - Quantity( - 'threshold_energy_change', - rf'Energy threshold += +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity( - 'threshold_densDFT Potential <==ty_change', - rf'Density threDFT Potential <==hold += +({re_f})', dtype=np.float64), - Quantity( - 'x_psi4_integral_threshold', - rf'Integral threshold += +({re_f})', dtype=np.float64)])), - Quantity( - 'basis', - r'(?:Primary )*Basis (?:Set )*<==([\s\S]+?)==>', - sub_parser=TextParser(quantities=[ - Quantity( - 'basis_set', - r'((?:Basis Set|Core potential|AO BASIS SET INFORMATION):[\s\S]+?\n\n)', - repeats=True, str_operation=str_to_basis)])), - Quantity( - 'jk_matrices', - r'(J/K Matrices <==[\s\S]+?==>)', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - r'J/K Matrices <==\s+([\s\S]+?\n *\n)', str_operation=str_to_parameters), - ]) + "geometry", + r"Geometry <==([\s\S]+?)==>", + sub_parser=TextParser( + quantities=[ + Quantity( + "atoms", + rf"([A-Z][a-z]* +{re_f} +{re_f} +{re_f} +{re_f}\n)", + repeats=True, + ), + Quantity( + "molecular_point_group", + r"Molecular point group: *(\w+)", + dtype=str, + ), + Quantity( + "full_point_group", r"Full point group: *(\w+)", dtype=str + ), + Quantity("symmetry", r"Running in (\w+) symmetry\.", dtype=str), + Quantity( + "rotational_constants", + rf"Rotational constants: *A = *({re_f}) *B = *({re_f}) *C = *({re_f}) \[cm\^-1\]", + dtype=np.dtype(np.float64), + ), + Quantity( + "nuclear_repulsion", + rf"Nuclear repulsion = *({re_f})", + dtype=np.float64, + ), + Quantity("charge", r"Charge *= (\d+)", dtype=np.float64), + Quantity( + "multiplicity", r"Multiplicity *= (\d+)", dtype=np.float64 + ), + Quantity("electrons", r"Electrons *= (\d+)", dtype=np.float64), + Quantity("nalpha", r"Nalpha *= (\d+)", dtype=np.float64), + Quantity("nbeta", r"Nbeta *= (\d+)", dtype=np.float64), + ] + ), + ), + Quantity( + "algorithm", + r"Algorithm <==([\s\S]+?)==>", + sub_parser=TextParser( + quantities=[ + Quantity( + "minimization_algorithm", + r"SCF Algorithm Type is (.+)\.", + dtype=str, + ), + Quantity( + "x_psi4_diis", + r"DIIS (.+)\.", + str_operation=lambda x: x == "enabled", + ), + Quantity( + "x_psi4_mom", + r"MOM (.+)\.", + str_operation=lambda x: x == "enabled", + ), + Quantity( + "x_psi4_fractional_occupation", + r"Fractional occupation (.+)\.", + str_operation=lambda x: x == "enabled", + ), + Quantity( + "x_psi4_guess_type", r"Guess Type is (.+)\.", dtype=str + ), + Quantity( + "threshold_energy_change", + rf"Energy threshold += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "threshold_densDFT Potential <==ty_change", + rf"Density threDFT Potential <==hold += +({re_f})", + dtype=np.float64, + ), + Quantity( + "x_psi4_integral_threshold", + rf"Integral threshold += +({re_f})", + dtype=np.float64, + ), + ] + ), + ), + Quantity( + "basis", + r"(?:Primary )*Basis (?:Set )*<==([\s\S]+?)==>", + sub_parser=TextParser( + quantities=[ + Quantity( + "basis_set", + r"((?:Basis Set|Core potential|AO BASIS SET INFORMATION):[\s\S]+?\n\n)", + repeats=True, + str_operation=str_to_basis, + ) + ] + ), + ), + Quantity( + "jk_matrices", + r"(J/K Matrices <==[\s\S]+?==>)", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"J/K Matrices <==\s+([\s\S]+?\n *\n)", + str_operation=str_to_parameters, + ), + ] + ), ), # Move auxiliary out of the parent section because I cannot cover all Quantity( - 'auxiliary_basis', - r' Auxiliary Basis (?:Set )*<=([\s\S]+?)==>', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'basis_set', - r'((?:Basis Set|Core potential|AO BASIS SET INFORMATION):[\s\S]+?\n\n)', - repeats=True, str_operation=str_to_basis)])), - Quantity( - 'dft_potential', - r'DFT Potential <==([\s\S]+?==>)', sub_parser=TextParser(quantities=[ - Quantity( - 'composite', - r'Composite Functional.+([\s\S]+?)=>', str_operation=str_to_parameters), - Quantity( - 'exact_exchange', - r'Exact \(HF\) Exchange <=([\s\S]+?)=>', - str_operation=lambda x: [v.split()[:2] for v in x.strip().split('\n')]), - Quantity( - 'exchange', - r'Exchange Functionals <=([\s\S]+?)=>', - str_operation=lambda x: [v.split()[:2] for v in x.strip().split('\n')]), - Quantity( - 'correlation', - r' Correlation Functionals <=([\s\S]+?)=>', - str_operation=lambda x: [v.split()[:2] for v in x.strip().split('\n')]), - Quantity( - 'hybrid', - r'Exchange-Correlation Functionals <=([\s\S]+?)=>', - str_operation=lambda x: [v.split()[:2] for v in x.strip().split('\n')]), - Quantity( - 'molecular_quadrature', - r'Molecular Quadrature <=([\s\S]+?)=>', - str_operation=str_to_parameters)])), - Quantity( - 'method', - r'(?:\n +(.+) Reference *\n|@(.+) Final Energy:)'), - Quantity( - 'iterations', - r'Iterations <==(\s+Total Energy[\s\S]+?)==>', - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - rf'iter +\d+\: +({re_f}) +({re_f}) +({re_f})', - repeats=True, dtype=np.float64)])), - Quantity( - 'spin_contamination_metric', - rf'@Spin Contamination Metric: +({re_f})', dtype=np.float64), - Quantity( - 's2_expected', - rf'@S\^2 Expected: +({re_f})', dtype=np.float64), - Quantity( - 's2_observed', - rf'@S\^2 Observed: +({re_f})', dtype=np.float64), - Quantity( - 's_expected', - rf'@S Expected: +({re_f})', dtype=np.float64), - Quantity( - 's_observed', - rf'@S Observed: +({re_f})', dtype=np.float64), - Quantity( - 'orbital_energies', - r'(?:Occupied:|Virtual:).+([\s\S]+?\n *\n)', - repeats=True, str_operation=str_to_orbital_energies), - Quantity( - 'energy', - r'Energetics <=([\s\S]+?Total Energy =.+)', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'(.+) Energy = *({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])), - Quantity( - 'properties', - r'(Properties will be evaluated at[\s\S]+?)(?:==>|tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=properties_quantities)), - Quantity( - 'total_gradient', - r'Total Gradient.+\s+Atom.+\s+\-.+\s+([\s\S]+?)\n *\n', - str_operation=lambda x: np.array([v.split()[1:] for v in x.strip().split('\n')]), - dtype=np.dtype(np.float64))] + "auxiliary_basis", + r" Auxiliary Basis (?:Set )*<=([\s\S]+?)==>", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "basis_set", + r"((?:Basis Set|Core potential|AO BASIS SET INFORMATION):[\s\S]+?\n\n)", + repeats=True, + str_operation=str_to_basis, + ) + ] + ), + ), + Quantity( + "dft_potential", + r"DFT Potential <==([\s\S]+?==>)", + sub_parser=TextParser( + quantities=[ + Quantity( + "composite", + r"Composite Functional.+([\s\S]+?)=>", + str_operation=str_to_parameters, + ), + Quantity( + "exact_exchange", + r"Exact \(HF\) Exchange <=([\s\S]+?)=>", + str_operation=lambda x: [ + v.split()[:2] for v in x.strip().split("\n") + ], + ), + Quantity( + "exchange", + r"Exchange Functionals <=([\s\S]+?)=>", + str_operation=lambda x: [ + v.split()[:2] for v in x.strip().split("\n") + ], + ), + Quantity( + "correlation", + r" Correlation Functionals <=([\s\S]+?)=>", + str_operation=lambda x: [ + v.split()[:2] for v in x.strip().split("\n") + ], + ), + Quantity( + "hybrid", + r"Exchange-Correlation Functionals <=([\s\S]+?)=>", + str_operation=lambda x: [ + v.split()[:2] for v in x.strip().split("\n") + ], + ), + Quantity( + "molecular_quadrature", + r"Molecular Quadrature <=([\s\S]+?)=>", + str_operation=str_to_parameters, + ), + ] + ), + ), + Quantity("method", r"(?:\n +(.+) Reference *\n|@(.+) Final Energy:)"), + Quantity( + "iterations", + r"Iterations <==(\s+Total Energy[\s\S]+?)==>", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"iter +\d+\: +({re_f}) +({re_f}) +({re_f})", + repeats=True, + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "spin_contamination_metric", + rf"@Spin Contamination Metric: +({re_f})", + dtype=np.float64, + ), + Quantity("s2_expected", rf"@S\^2 Expected: +({re_f})", dtype=np.float64), + Quantity("s2_observed", rf"@S\^2 Observed: +({re_f})", dtype=np.float64), + Quantity("s_expected", rf"@S Expected: +({re_f})", dtype=np.float64), + Quantity("s_observed", rf"@S Observed: +({re_f})", dtype=np.float64), + Quantity( + "orbital_energies", + r"(?:Occupied:|Virtual:).+([\s\S]+?\n *\n)", + repeats=True, + str_operation=str_to_orbital_energies, + ), + Quantity( + "energy", + r"Energetics <=([\s\S]+?Total Energy =.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"(.+) Energy = *({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), + Quantity( + "properties", + r"(Properties will be evaluated at[\s\S]+?)(?:==>|tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=properties_quantities), + ), + Quantity( + "total_gradient", + r"Total Gradient.+\s+Atom.+\s+\-.+\s+([\s\S]+?)\n *\n", + str_operation=lambda x: np.array( + [v.split()[1:] for v in x.strip().split("\n")] + ), + dtype=np.dtype(np.float64), + ), + ] mp_quantities = [ - Quantity('method', r'(MP[\d\.]+)\s+Program'), - Quantity( - 'energy', - r'Computing MP[\d\.]+ energy using SCF MOs([\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', rf'\s+(.+?) (?:Energy|Contribution) (Correction )*\(a\.u\.\) *: +({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])) + Quantity("method", r"(MP[\d\.]+)\s+Program"), + Quantity( + "energy", + r"Computing MP[\d\.]+ energy using SCF MOs([\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"\s+(.+?) (?:Energy|Contribution) (Correction )*\(a\.u\.\) *: +({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), ] method_quantities = [ Quantity( - 'parameters', - r'Parameters <==([\s\S]+?)==>', sub_parser=TextParser(quantities=[Quantity( - 'key_value', r'([\w ]+= +\S+)', - repeats=True, str_operation=lambda x: [v.strip() for v in x.split('=')])])), - Quantity( - 'iterations', - r'Starting .+? iterations([\s\S]+?)==>', - sub_parser=TextParser(quantities=[Quantity( - 'iteration', - rf'@.+\d+: +\d+ +({re_f}) +({re_f}) +({re_f})(.+)', - repeats=True, dtype=np.dtype(np.float64))])), - Quantity( - 'energy', - r'Energetics <==([\s\S]+?Total.+)', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'(.+) [Ee]nergy += *({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])), - Quantity( - 'root_info', - r'(root \d+ information[\s\S]+?==>)', - sub_parser=TextParser(quantities=[ - Quantity( - 'root_energy', - rf'Root \d+ energy += +({re_f})', - dtype=np.float64, unit=ureg.hartree)])), + "parameters", + r"Parameters <==([\s\S]+?)==>", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + r"([\w ]+= +\S+)", + repeats=True, + str_operation=lambda x: [v.strip() for v in x.split("=")], + ) + ] + ), + ), + Quantity( + "iterations", + r"Starting .+? iterations([\s\S]+?)==>", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"@.+\d+: +\d+ +({re_f}) +({re_f}) +({re_f})(.+)", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), + Quantity( + "energy", + r"Energetics <==([\s\S]+?Total.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"(.+) [Ee]nergy += *({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), + Quantity( + "root_info", + r"(root \d+ information[\s\S]+?==>)", + sub_parser=TextParser( + quantities=[ + Quantity( + "root_energy", + rf"Root \d+ energy += +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ) + ] + ), + ), # TODO parse other properties e.g. orbital extents, mayer bond indices Quantity( - 'properties', - r'(erties computed using the[\s\S]+?)(?:==>|\n *Prop|tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=properties_quantities)), + "properties", + r"(erties computed using the[\s\S]+?)(?:==>|\n *Prop|tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=properties_quantities), + ), ] mcscf_quantities = [ Quantity( - 'iterations', - r'(Cycle +Energy.+\s+\=+[\s\S]+?)\={5}', - sub_parser=TextParser(quantities=[Quantity( - 'iteration', - rf'@SCF +\d+ +({re_f}) +({re_f}) +({re_f})', - repeats=True, dtype=np.dtype(np.float64))])), - Quantity( - 'energy', - r'\* (SCF total energy.+)', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'(.+) energy += +({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])), - Quantity( - 'orbital_energies', - r'Eigenvalues \(Eh\)([\s\S]+?)={5}', str_operation=str_to_eigenvalues) + "iterations", + r"(Cycle +Energy.+\s+\=+[\s\S]+?)\={5}", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"@SCF +\d+ +({re_f}) +({re_f}) +({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), + Quantity( + "energy", + r"\* (SCF total energy.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"(.+) energy += +({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), + Quantity( + "orbital_energies", + r"Eigenvalues \(Eh\)([\s\S]+?)={5}", + str_operation=str_to_eigenvalues, + ), ] cc_quantities = [ Quantity( - 'parameters', - r'Wfn Parameters:\s+\-+\s+([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'key_value', - r'(.+ += +\S+)', - repeats=True, str_operation=lambda x: [v.strip() for v in x.split('=')])])), - Quantity( - 'energy', - r'(Nuclear Rep[\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'([\w\. \-]+) energy += +({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])) + "parameters", + r"Wfn Parameters:\s+\-+\s+([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + r"(.+ += +\S+)", + repeats=True, + str_operation=lambda x: [v.strip() for v in x.split("=")], + ) + ] + ), + ), + Quantity( + "energy", + r"(Nuclear Rep[\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"([\w\. \-]+) energy += +({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), ] cc_energy_quantities = [ Quantity( - 'parameters', - r'Input parameters:\s+\-+([\s\S]+?)', - sub_parser=TextParser(quantities=[Quantity( - 'key_value', - r'(.+ += +\S+)', - repeats=True, str_operation=lambda x: [v.strip() for v in x.split('=')])])), - Quantity( - 'iterations', - r'(Iter +Energy[\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'iteration', - rf'\d+ +({re_f}) +({re_f}) +({re_f})', - repeats=True, dtype=np.dtype(np.float64))])), - Quantity( - 'energy', - r'\n *\n +(SCF energy[\s\S]+?CCSD total energy.+)', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'([\w\. \-]+) energy.* += +({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])) + "parameters", + r"Input parameters:\s+\-+([\s\S]+?)", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + r"(.+ += +\S+)", + repeats=True, + str_operation=lambda x: [v.strip() for v in x.split("=")], + ) + ] + ), + ), + Quantity( + "iterations", + r"(Iter +Energy[\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"\d+ +({re_f}) +({re_f}) +({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), + Quantity( + "energy", + r"\n *\n +(SCF energy[\s\S]+?CCSD total energy.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"([\w\. \-]+) energy.* += +({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), ] cc_lambda_quantities = [ Quantity( - 'parameters', - r'Input parameters:\s+\-+([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'key_value', - r'(.+ += +\S+)', - repeats=True, str_operation=lambda x: [v.strip() for v in x.split('=')])])), - Quantity( - 'iterations', - r'(Iter +PseudoEnergy[\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'iteration', - rf'\d+ +({re_f}) +({re_f})', - repeats=True, dtype=np.dtype(np.float64))])), - Quantity( - 'energy', - r'(Nuclear Rep\. energy[\s\S]+?Total CCSD energy.+)', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'([\w\. \-]+) energy.* += +({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])) + "parameters", + r"Input parameters:\s+\-+([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + r"(.+ += +\S+)", + repeats=True, + str_operation=lambda x: [v.strip() for v in x.split("=")], + ) + ] + ), + ), + Quantity( + "iterations", + r"(Iter +PseudoEnergy[\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + rf"\d+ +({re_f}) +({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), + Quantity( + "energy", + r"(Nuclear Rep\. energy[\s\S]+?Total CCSD energy.+)", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"([\w\. \-]+) energy.* += +({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), ] cc_density_quantities = [ Quantity( - 'parameters', - r'Input parameters:\s+\-+([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[Quantity( - 'key_value', - r'(.+ += +\S+)', - repeats=True, str_operation=lambda x: [v.strip() for v in x.split('=')])])), - Quantity( - 'energy', - r'((?:Nuclear Rep\. energy|Energies re-computed from|Virial Theorem Data)[\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[Quantity( - 'key_value', - rf'([\w\. \-]+) energy(?: +\(.+\))* += +({re_f})', - repeats=True, str_operation=lambda x: [v.strip() for v in x.rsplit(' ', 1)])])), - Quantity( - 'properties', - r'(Properties will be evaluated at[\s\S]+?)(?:==>|tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=properties_quantities)), + "parameters", + r"Input parameters:\s+\-+([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + r"(.+ += +\S+)", + repeats=True, + str_operation=lambda x: [v.strip() for v in x.split("=")], + ) + ] + ), + ), + Quantity( + "energy", + r"((?:Nuclear Rep\. energy|Energies re-computed from|Virial Theorem Data)[\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "key_value", + rf"([\w\. \-]+) energy(?: +\(.+\))* += +({re_f})", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ) + ] + ), + ), + Quantity( + "properties", + r"(Properties will be evaluated at[\s\S]+?)(?:==>|tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=properties_quantities), + ), ] optking_quantities = [ Quantity( - 'geometry', - r'Geometry and Gradient-+\s+([\s\S]+?)\n *\n', - sub_parser=TextParser(quantities=[ - Quantity( - 'atoms', - rf'([A-Z][a-z]*) +({re_f}) +({re_f}) +({re_f})', repeats=True), - Quantity( - 'forces', - rf'({re_f}) +({re_f}) +({re_f})', - repeats=True, dtype=np.dtype(np.float64))])), - Quantity( - 'convergence_criteria', - rf'Convergence Criteria +({re_f}) +\* +({re_f}) +\* +\S+ +({re_f})', - dtype=np.dtype(np.float64)), - Quantity('energy', rf'~\s+\d+ +({re_f}) +({re_f})', dtype=np.float64) + "geometry", + r"Geometry and Gradient-+\s+([\s\S]+?)\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "atoms", + rf"([A-Z][a-z]*) +({re_f}) +({re_f}) +({re_f})", + repeats=True, + ), + Quantity( + "forces", + rf"({re_f}) +({re_f}) +({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ), + ] + ), + ), + Quantity( + "convergence_criteria", + rf"Convergence Criteria +({re_f}) +\* +({re_f}) +\* +\S+ +({re_f})", + dtype=np.dtype(np.float64), + ), + Quantity("energy", rf"~\s+\d+ +({re_f}) +({re_f})", dtype=np.float64), ] module_quantities = [ Quantity( - 'scf', - rf'(SCF\s+by[\s\S]+?(Computation Completed|tstop|\Z))', - repeats=True, sub_parser=TextParser(quantities=scf_quantities)), - Quantity( - 'scf_grad', - r'(SCF GRAD\s+[\s\S]+?(?:tstop|\Z))', - repeats=True, sub_parser=TextParser(quantities=scf_quantities)), - Quantity( - 'mp', - r'(MP[\d\.]+\s+Program[\s\S]+?(?:tstop|\Z))', - repeats=True, sub_parser=TextParser(quantities=mp_quantities)), - Quantity( - 'ci', - r'(Configuration Interaction\s+\(a [\s\S]+?)(?:PASSED|tstart|\Z)', - repeats=True, sub_parser=TextParser(quantities=method_quantities)), - Quantity( - 'mcscf_detci', - r'(Multi-Configurational Self-Consistent Field[\s\S]+?)(?:PASSED|tstart|\Z)', - repeats=True, sub_parser=TextParser(quantities=method_quantities)), - Quantity( - 'mcscf', - r'(MCSCF: a self-consistent field program[\s\S]+?)(?:tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=mcscf_quantities)), - Quantity( - 'cc', - r'(Wfn Parameters:\s+\-+[\s\S]+?)(?:tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=cc_quantities)), - Quantity( - 'cc_energy', - r'(CCENERGY +\*[\s\S]+?)(?:tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=cc_energy_quantities)), - Quantity( - 'cc_lambda', - r'(CCLAMBDA +\*[\s\S]+?)(?:tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=cc_lambda_quantities)), - Quantity( - 'cc_density', - r'(CCDENSITY +\*[\s\S]+?)(?:tstop|\Z)', - repeats=True, sub_parser=TextParser(quantities=cc_density_quantities)), - Quantity( - 'optking', - r'OPTKING .+?: for geometry optimizations([\s\S]+?)OPTKING Finished Execution', - sub_parser=TextParser(quantities=optking_quantities)), - Quantity( - 'options', - r'Options:\s+\-+([\s\S]+?)\n *\n', - str_operation=str_to_parameters), - Quantity( - 'salc', - r'(Cartesian Displacement SALCs[\s\S]+?)(?:tstart|\Z)', - sub_parser=TextParser(quantities=[ - Quantity( - 'total_gradient', - r'Total gradient:\s+Atom.+\s+.+\s+([\s\S]+?)\n *\n', - str_operation=lambda x: [v.split()[1:] for v in x.strip().split('\n')], - dtype=np.dtype(np.float64)), - Quantity( - 'contributions_gradient', - r'\-(.+ (?:Energy 1st Derivatives|contribution to gradient)):' - r'\s+Atom.+\s+.+([\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('name', r'(.+) (?:Energy|contribution)', flatten=False), - Quantity( - 'value', - rf'\d+ +({re_f}) +({re_f}) +({re_f})', - repeats=True, dtype=np.dtype(np.float64))]))])), + "scf", + rf"(SCF\s+by[\s\S]+?(Computation Completed|tstop|\Z))", + repeats=True, + sub_parser=TextParser(quantities=scf_quantities), + ), + Quantity( + "scf_grad", + r"(SCF GRAD\s+[\s\S]+?(?:tstop|\Z))", + repeats=True, + sub_parser=TextParser(quantities=scf_quantities), + ), + Quantity( + "mp", + r"(MP[\d\.]+\s+Program[\s\S]+?(?:tstop|\Z))", + repeats=True, + sub_parser=TextParser(quantities=mp_quantities), + ), + Quantity( + "ci", + r"(Configuration Interaction\s+\(a [\s\S]+?)(?:PASSED|tstart|\Z)", + repeats=True, + sub_parser=TextParser(quantities=method_quantities), + ), + Quantity( + "mcscf_detci", + r"(Multi-Configurational Self-Consistent Field[\s\S]+?)(?:PASSED|tstart|\Z)", + repeats=True, + sub_parser=TextParser(quantities=method_quantities), + ), + Quantity( + "mcscf", + r"(MCSCF: a self-consistent field program[\s\S]+?)(?:tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=mcscf_quantities), + ), + Quantity( + "cc", + r"(Wfn Parameters:\s+\-+[\s\S]+?)(?:tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=cc_quantities), + ), + Quantity( + "cc_energy", + r"(CCENERGY +\*[\s\S]+?)(?:tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=cc_energy_quantities), + ), + Quantity( + "cc_lambda", + r"(CCLAMBDA +\*[\s\S]+?)(?:tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=cc_lambda_quantities), + ), + Quantity( + "cc_density", + r"(CCDENSITY +\*[\s\S]+?)(?:tstop|\Z)", + repeats=True, + sub_parser=TextParser(quantities=cc_density_quantities), + ), + Quantity( + "optking", + r"OPTKING .+?: for geometry optimizations([\s\S]+?)OPTKING Finished Execution", + sub_parser=TextParser(quantities=optking_quantities), + ), + Quantity( + "options", + r"Options:\s+\-+([\s\S]+?)\n *\n", + str_operation=str_to_parameters, + ), + Quantity( + "salc", + r"(Cartesian Displacement SALCs[\s\S]+?)(?:tstart|\Z)", + sub_parser=TextParser( + quantities=[ + Quantity( + "total_gradient", + r"Total gradient:\s+Atom.+\s+.+\s+([\s\S]+?)\n *\n", + str_operation=lambda x: [ + v.split()[1:] for v in x.strip().split("\n") + ], + dtype=np.dtype(np.float64), + ), + Quantity( + "contributions_gradient", + r"\-(.+ (?:Energy 1st Derivatives|contribution to gradient)):" + r"\s+Atom.+\s+.+([\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "name", + r"(.+) (?:Energy|contribution)", + flatten=False, + ), + Quantity( + "value", + rf"\d+ +({re_f}) +({re_f}) +({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ), + ] + ), + ), + ] + ), + ), # read user time since total time seems to be imprecise Quantity( - 'module_time', - rf'Module time\:\s+user time += +({re_f}) seconds', dtype=np.float64), + "module_time", + rf"Module time\:\s+user time += +({re_f}) seconds", + dtype=np.float64, + ), Quantity( - 'total_time', - rf'Total time\:\s+user time += +({re_f}) seconds', dtype=np.float64) + "total_time", + rf"Total time\:\s+user time += +({re_f}) seconds", + dtype=np.float64, + ), ] self._quantities = [ Quantity( - 'version', - r'Psi4: An Open-Source Ab Initio Electronic Structure Package\s*' - r'Psi4 ([\w\.]+)', dtype=str), - Quantity('start_time', r'Psi4 started on: \w+, (.+)', flatten=False, dtype=str), - Quantity('process_id', r'Process ID:\s*(\d+)', dtype=np.int32), - Quantity('psidatadir', r'PSIDATADIR:\s*(.+)', dtype=str), - Quantity('memory', r'Memory:\s*(\S+) MiB', dtype=np.float64), - Quantity('threads', r'Threads:\s*(\d+)', dtype=np.int32), - Quantity('input_file', r'Input File <==\s+\-+\s*([\s\S]+?)\-{5}', flatten=False), - Quantity( - 'module', - r'(\*\*\* at [A-Z][a-z]{2} [\s\S]+?(?:\*\*\* tstart|\Z))', - repeats=True, sub_parser=TextParser(quantities=module_quantities)) + "version", + r"Psi4: An Open-Source Ab Initio Electronic Structure Package\s*" + r"Psi4 ([\w\.]+)", + dtype=str, + ), + Quantity( + "start_time", r"Psi4 started on: \w+, (.+)", flatten=False, dtype=str + ), + Quantity("process_id", r"Process ID:\s*(\d+)", dtype=np.int32), + Quantity("psidatadir", r"PSIDATADIR:\s*(.+)", dtype=str), + Quantity("memory", r"Memory:\s*(\S+) MiB", dtype=np.float64), + Quantity("threads", r"Threads:\s*(\d+)", dtype=np.int32), + Quantity( + "input_file", r"Input File <==\s+\-+\s*([\s\S]+?)\-{5}", flatten=False + ), + Quantity( + "module", + r"(\*\*\* at [A-Z][a-z]{2} [\s\S]+?(?:\*\*\* tstart|\Z))", + repeats=True, + sub_parser=TextParser(quantities=module_quantities), + ), ] @@ -570,17 +917,17 @@ def __init__(self): self.m_env = m_env self.out_parser = OutParser() self._xc_map = { - 'HF': 'LDA_X', - 'PW6B95': 'HYB_MGGA_XC_PW6B95', - 'B3LYP': 'HYB_GGA_XC_B3LYP', - 'B3LYP5': 'HYB_GGA_XC_B3LYP5', - 'wB97X-D': 'HYB_GGA_XC_WB97X_D', + "HF": "LDA_X", + "PW6B95": "HYB_MGGA_XC_PW6B95", + "B3LYP": "HYB_GGA_XC_B3LYP", + "B3LYP5": "HYB_GGA_XC_B3LYP5", + "wB97X-D": "HYB_GGA_XC_WB97X_D", } self._metainfo_map = { - 'Nuclear Repulsion': 'nuclear_repulsion', - 'Total': 'total', - 'DFT Exchange-Correlation': 'xc', - 'Nuclear Rep.': 'nuclear_repulsion', + "Nuclear Repulsion": "nuclear_repulsion", + "Total": "total", + "DFT Exchange-Correlation": "xc", + "Nuclear Rep.": "nuclear_repulsion", } def init_parser(self): @@ -593,37 +940,43 @@ def parse_system(self, source): system = System() self.archive.run[-1].system.append(system) - atoms = source.geometry.get('atoms', []) + atoms = source.geometry.get("atoms", []) # TODO determine lattice vectors system.atoms = Atoms( positions=np.array([a[1:4] for a in atoms]) * ureg.bohr, - labels=[a[0] for a in atoms], periodic=[False, False, False]) + labels=[a[0] for a in atoms], + periodic=[False, False, False], + ) for key, val in source.geometry.items(): try: - setattr(system, 'x_psi4_%s' % key, val) + setattr(system, "x_psi4_%s" % key, val) except Exception: pass def _parse_basis(self, source: TextParser) -> list[BasisSet]: - '''Produce a list of the gaussian basis sets.''' + """Produce a list of the gaussian basis sets.""" if source is None: return [] atoms: list[BasisSetAtomCentered] = [] - for entry in source.get('basis_set', []): + for entry in source.get("basis_set", []): atom = BasisSetAtomCentered() - atom.name = entry.get('Basis Set', '').strip('(').strip(')') - atom.n_basis_functions = int(entry.get('Number of basis function', 0)) - atom.x_psi4_n_shells = int(entry.get('Number of shells', 0)) - atom.x_psi4_max_angular_momentum = int(entry.get('Max angular momentum', 0)) - atom.x_psi4_n_cartesian_functions = int(entry.get('Number of Cartesian functions', 0)) - atom.x_psi4_blend = entry.get('Blend') - atom.x_psi4_spherical_harmonics = entry.get('Spherical Harmonics?') == 'false' + atom.name = entry.get("Basis Set", "").strip("(").strip(")") + atom.n_basis_functions = int(entry.get("Number of basis function", 0)) + atom.x_psi4_n_shells = int(entry.get("Number of shells", 0)) + atom.x_psi4_max_angular_momentum = int(entry.get("Max angular momentum", 0)) + atom.x_psi4_n_cartesian_functions = int( + entry.get("Number of Cartesian functions", 0) + ) + atom.x_psi4_blend = entry.get("Blend") + atom.x_psi4_spherical_harmonics = ( + entry.get("Spherical Harmonics?") == "false" + ) atoms.append(atom) return [ BasisSet( - type='gaussians', - scope=['full-electron'], + type="gaussians", + scope=["full-electron"], atom_centered=atoms, ), ] @@ -633,28 +986,31 @@ def parse_method(self, source): self.archive.run[-1].method.append(method) if self._method is not None: method.electronic = Electronic(method=self._method) - if self._method[:2] in ['MP', 'CI', 'MC', 'CC']: + if self._method[:2] in ["MP", "CI", "MC", "CC"]: method.core_method_ref = self.archive.run[-1].method[0] method.methods_ref = [self.archive.run[-1].method[0]] if source.parameters is not None: method.x_psi4_parameters = { - key: val for key, val in source.parameters.get('key_value', [])} + key: val for key, val in source.parameters.get("key_value", []) + } # Basis set basis_sets = self._parse_basis(source.basis) - for basis in source.get('auxiliary_basis', []): + for basis in source.get("auxiliary_basis", []): basis_sets += self._parse_basis(basis) if len(basis_sets) > 0: method.electrons_representation = [ BasisSetContainer( - type='atom-centered orbitals', - scope=['wavefunction'], + type="atom-centered orbitals", + scope=["wavefunction"], basis_set=basis_sets, ), ] if source.jk_matrices is not None: - method.x_psi4_jk_matrices_parameters = source.jk_matrices.get('parameters', (None, None))[1] + method.x_psi4_jk_matrices_parameters = source.jk_matrices.get( + "parameters", (None, None) + )[1] if source.algorithm is not None: scf = ScfMethod() @@ -672,17 +1028,19 @@ def parse_method(self, source): dft.xc_functional = xc_functional # get xc functional from composite first if len(xc_functional.exchange) == 0 and len(xc_functional.correlation) == 0: - name, parameters = source.dft_potential.get('composite', (None, None)) + name, parameters = source.dft_potential.get("composite", (None, None)) if name is not None: name = self._xc_map.get(name) if name is not None: - xc_functional.contributions.append(Functional(name=name, parameters=parameters)) + xc_functional.contributions.append( + Functional(name=name, parameters=parameters) + ) if len(xc_functional.contributions) == 0: # get contributions for exchange and correlation - for xc_type in ['exact_exchange', 'exchange', 'correlation', 'hybrid']: - if 'exchange' in xc_type: + for xc_type in ["exact_exchange", "exchange", "correlation", "hybrid"]: + if "exchange" in xc_type: section = xc_functional.exchange - elif xc_type == 'correlation': + elif xc_type == "correlation": section = xc_functional.correlation else: section = xc_functional.hybrid @@ -690,11 +1048,13 @@ def parse_method(self, source): # it seems that other psi4 version print out xc functionals in libxc # notation prefixed with XC_ # TODO complete mapping of XC functionals - name = self._xc_map.get(name, name).lstrip('XC_') + name = self._xc_map.get(name, name).lstrip("XC_") section.append(Functional(name=name, weight=weight)) if source.dft_potential.molecular_quadrature is not None: - dft.x_psi4_molecular_quadrature = source.dft_potential.molecular_quadrature[1] + dft.x_psi4_molecular_quadrature = ( + source.dft_potential.molecular_quadrature[1] + ) def parse_calculation(self, source): calc = Calculation() @@ -717,33 +1077,41 @@ def parse_multipole(data, multipoles): elif len(data) == 15: section = MultipolesEntry() multipoles.higher_order.append(section) - section.kind = 'hexadecapole' + section.kind = "hexadecapole" exponent = 4 else: section = MultipolesEntry() multipoles.higher_order.append(section) - section.kind = '32-pole' + section.kind = "32-pole" exponent = 5 - value = data * ureg.elementary_charge * ureg.bohr ** exponent - section.total = value.to('coulomb * m ** %d' % exponent).magnitude + value = data * ureg.elementary_charge * ureg.bohr**exponent + section.total = value.to("coulomb * m ** %d" % exponent).magnitude def parse_properties(source, calc): if source is None: return # multipoles - multipole_kinds = ['electronic', 'nuclear', 'total'] + multipole_kinds = ["electronic", "nuclear", "total"] for n, multipole in enumerate(multipole_kinds): - data = source.get('%s_dipole_moment' % multipole) + data = source.get("%s_dipole_moment" % multipole) if data is None: continue multipoles = Multipoles() - calc.multipoles.append(multipoles) if len(calc.multipoles) <= n else calc.multipoles[n] + calc.multipoles.append(multipoles) if len( + calc.multipoles + ) <= n else calc.multipoles[n] multipoles.kind = multipole_kinds[n] parse_multipole(data, multipoles) - multipole_moments = source.get('multipole_moments', {}) - for multipole in ['dipole', 'quadrupole', 'octupole', 'hexadecapole', 'npole']: + multipole_moments = source.get("multipole_moments", {}) + for multipole in [ + "dipole", + "quadrupole", + "octupole", + "hexadecapole", + "npole", + ]: data = multipole_moments.get(multipole) if data is None: continue @@ -758,14 +1126,16 @@ def parse_properties(source, calc): # TODO verify for non spin polarized # charges - for method in ['mulliken', 'lowdin']: - data = source.get('%s_charges' % method) + for method in ["mulliken", "lowdin"]: + data = source.get("%s_charges" % method) if data is not None: charges = Charges() calc.charges.append(charges) charges.analysis_method = method if data.atom is not None: - charges.value = [a[-1] for a in data.atom] * ureg.elementary_charge + charges.value = [ + a[-1] for a in data.atom + ] * ureg.elementary_charge charges.spins = [a[-2] for a in data.atom] for n, atom in enumerate(data.atom): for spin in range(2): @@ -779,41 +1149,47 @@ def parse_properties(source, calc): # scf iterations if source.iterations is not None: - for iteration in source.iterations.get('iteration', []): + for iteration in source.iterations.get("iteration", []): scf = ScfIteration() calc.scf_iteration.append(scf) scf.energy = Energy( total=EnergyEntry(value=float(iteration[0]) * ureg.hartree), - change=float(iteration[1]) * ureg.hartree) + change=float(iteration[1]) * ureg.hartree, + ) # energies # mp/ci energy, the last entry belongs to the method # create additional calc section for references e.g. mp3 have mp2 reference - for n in range(len(source.get('energy', []))): + for n in range(len(source.get("energy", []))): if source.energy[n] is None: continue ref_calc = calc # for MP calc, the last energy block corresponds to calc - n_ref = len(source.energy) - 1 if self._method[:2] == 'MP' else 0 + n_ref = len(source.energy) - 1 if self._method[:2] == "MP" else 0 if n != n_ref: ref_calc = Calculation() self.archive.run[-1].calculation.append(ref_calc) ref_calcs.append(ref_calc) ref_calc.energy = Energy() - for key, val in source.energy[n].get('key_value'): + for key, val in source.energy[n].get("key_value"): key = self._metainfo_map.get(key, key) if hasattr(ref_calc.energy, key): setattr(ref_calc.energy, key, EnergyEntry(value=val * ureg.hartree)) else: - ref_calc.energy.contributions.append(EnergyEntry(kind=key, value=val * ureg.hartree)) + ref_calc.energy.contributions.append( + EnergyEntry(kind=key, value=val * ureg.hartree) + ) # assign total energy to corresponding to method - if 'total' in key.lower(): + if "total" in key.lower(): ref_calc.energy.total = EnergyEntry(value=val * ureg.hartree) # forces if source.total_gradient is not None: - calc.forces = Forces(total=ForcesEntry( - value=source.total_gradient * ureg.hartree / ureg.bohr)) + calc.forces = Forces( + total=ForcesEntry( + value=source.total_gradient * ureg.hartree / ureg.bohr + ) + ) # spins if source.s2_observed is not None: @@ -832,14 +1208,21 @@ def parse_properties(source, calc): for n, orbital_energies in enumerate(source.orbital_energies): labels.extend(orbital_energies[0]) energies.extend(orbital_energies[1]) - occupations.extend([2 / n_spin if n % 2 == 0 else 0] * len(orbital_energies[0])) + occupations.extend( + [2 / n_spin if n % 2 == 0 else 0] * len(orbital_energies[0]) + ) eigenvalues.orbital_labels = labels - eigenvalues.energies = np.reshape(energies, (n_spin, 1, len(energies) // n_spin)) * ureg.hartree - eigenvalues.occupations = np.reshape(occupations, (n_spin, 1, len(occupations) // n_spin)) + eigenvalues.energies = ( + np.reshape(energies, (n_spin, 1, len(energies) // n_spin)) + * ureg.hartree + ) + eigenvalues.occupations = np.reshape( + occupations, (n_spin, 1, len(occupations) // n_spin) + ) # properties can be calculated using multiple density matrices e.g. for ci/mcscf # create additional calculation section - for n, properties in enumerate(source.get('properties', [])): + for n, properties in enumerate(source.get("properties", [])): if n == 0: ref_calc = calc else: @@ -876,24 +1259,39 @@ def parse(self, filepath, archive, logger): run = Run() archive.run.append(run) - run.program = Program(name='Psi4', version=self.out_parser.get('version', '')) + run.program = Program(name="Psi4", version=self.out_parser.get("version", "")) if self.out_parser.start_time is not None: - start_time = datetime.strptime(self.out_parser.start_time, '%d %B %Y %H:%M%p') - run.time_run = TimeRun(date_start=(start_time - datetime(1970, 1, 1)).total_seconds()) + start_time = datetime.strptime( + self.out_parser.start_time, "%d %B %Y %H:%M%p" + ) + run.time_run = TimeRun( + date_start=(start_time - datetime(1970, 1, 1)).total_seconds() + ) - for key in ['process_id', 'psidatadir', 'memory', 'threads', 'input_file']: + for key in ["process_id", "psidatadir", "memory", "threads", "input_file"]: val = self.out_parser.get(key) if val is not None: - setattr(run, 'x_psi4_%s' % key, val) + setattr(run, "x_psi4_%s" % key, val) opt_calculations_ref = [] module_names = [ - 'scf', 'scf_grad', 'mp', 'ci', 'mcscf', 'mcscf_detci', 'cc', 'cc_energy', - 'cc_lambda', 'cc_density'] - for module in self.out_parser.get('module', []): + "scf", + "scf_grad", + "mp", + "ci", + "mcscf", + "mcscf_detci", + "cc", + "cc_energy", + "cc_lambda", + "cc_density", + ] + for module in self.out_parser.get("module", []): for name in module_names: for submodule in module.get(name, []): - self._method = submodule.get('method', name.split('_', maxsplit=1)[0].upper()) + self._method = submodule.get( + "method", name.split("_", maxsplit=1)[0].upper() + ) self.parse_system(submodule) self.parse_method(submodule) calc = self.parse_calculation(submodule) @@ -914,10 +1312,17 @@ def parse(self, filepath, archive, logger): calc.forces = forces if module.salc.total_gradient is not None: forces.total = ForcesEntry( - value=np.array(module.salc.total_gradient) * ureg.hartree / ureg.bohr) - for contribution in module.salc.get('contributions_gradient', []): - forces.contributions.append(ForcesEntry( - kind=contribution.name, value=contribution.value * ureg.hartree / ureg.bohr)) + value=np.array(module.salc.total_gradient) + * ureg.hartree + / ureg.bohr + ) + for contribution in module.salc.get("contributions_gradient", []): + forces.contributions.append( + ForcesEntry( + kind=contribution.name, + value=contribution.value * ureg.hartree / ureg.bohr, + ) + ) # each module should can be considered as a single_point workflow # TODO implement specific workflow for mp, ci, cc, mcscf @@ -927,14 +1332,17 @@ def parse(self, filepath, archive, logger): self.parse_system(module.optking) calc = Calculation() self.archive.run[-1].calculation.append(calc) - forces = module.optking.get('geometry', {}).get('forces') + forces = module.optking.get("geometry", {}).get("forces") if forces is not None: - calc.forces = Forces(total=ForcesEntry(value=forces * ureg.hartree / ureg.bohr)) + calc.forces = Forces( + total=ForcesEntry(value=forces * ureg.hartree / ureg.bohr) + ) energy = module.optking.energy if energy is not None: calc.energy = Energy( total=EnergyEntry(value=energy[0] * ureg.hartree), - change=energy[1] * ureg.hartree) + change=energy[1] * ureg.hartree, + ) calc.system_ref = self.archive.run[-1].system[-1] calc.time_calculation = module.module_time calc.time_physical = module.total_time @@ -943,7 +1351,13 @@ def parse(self, filepath, archive, logger): convergence = module.optking.convergence_criteria if convergence is not None: workflow = GeometryOptimization(method=GeometryOptimizationMethod()) - workflow.method.convergence_tolerance_energy_difference = convergence[0] * ureg.hartree - workflow.method.convergence_tolerance_force_maximum = convergence[1] * ureg.hartree / ureg.bohr - workflow.method.convergence_tolerance_displacement_maximum = convergence[2] * ureg.bohr + workflow.method.convergence_tolerance_energy_difference = ( + convergence[0] * ureg.hartree + ) + workflow.method.convergence_tolerance_force_maximum = ( + convergence[1] * ureg.hartree / ureg.bohr + ) + workflow.method.convergence_tolerance_displacement_maximum = ( + convergence[2] * ureg.bohr + ) self.archive.workflow2 = workflow diff --git a/electronicparsers/qball/parser.py b/electronicparsers/qball/parser.py index 1a4212b9..8a21990c 100644 --- a/electronicparsers/qball/parser.py +++ b/electronicparsers/qball/parser.py @@ -39,7 +39,6 @@ def str_to_timestamp(s: str): class QBallParser: - mainfile_parser = TextParser( quantities=[ Quantity( @@ -64,7 +63,7 @@ def __init__(self): pass def parse(self, mainfile, archive, logger=None): - logger = logger if logger is not None else logging.getLogger('__name__') + logger = logger if logger is not None else logging.getLogger("__name__") if mainfile.endswith(".gz"): open_file = gzip.open @@ -81,10 +80,11 @@ def parse(self, mainfile, archive, logger=None): run = Run() archive.run.append(run) - run.program = Program(name='qball') + run.program = Program(name="qball") run.time_run = TimeRun( date_start=str_to_timestamp(self.mainfile_parser.get("start_time")), - date_end=str_to_timestamp(self.mainfile_parser.get("end_time"))) + date_end=str_to_timestamp(self.mainfile_parser.get("end_time")), + ) # method method = Method() @@ -94,13 +94,13 @@ def parse(self, mainfile, archive, logger=None): method.electrons_representation = [ BasisSetContainer( type="plane waves", - scope=['wavefunction'], + scope=["wavefunction"], basis_set=[ BasisSet( type="plane waves", - scope=['valence'], + scope=["valence"], ) - ] + ], ) ] else: @@ -112,14 +112,40 @@ def parse(self, mainfile, archive, logger=None): system = System() run.system.append(system) system.atoms = Atoms( - labels=[atom.attrib["name"] for atom in element_tree.find("run").find("iteration").find("atomset").iter("atom")], - positions=np.array([ - [float(pos) for pos in atom.find("position").text.split()] - for atom in element_tree.find("run").find("iteration").find("atomset").iter("atom")]) * ureg.bohr) + labels=[ + atom.attrib["name"] + for atom in element_tree.find("run") + .find("iteration") + .find("atomset") + .iter("atom") + ], + positions=np.array( + [ + [float(pos) for pos in atom.find("position").text.split()] + for atom in element_tree.find("run") + .find("iteration") + .find("atomset") + .iter("atom") + ] + ) + * ureg.bohr, + ) # calculation calculation = Calculation() run.calculation.append(calculation) - calculation.forces = Forces(total=ForcesEntry(value=np.array([ - [float(force) for force in atom.find("force").text.split()] - for atom in element_tree.find("run").find("iteration").find("atomset").iter("atom")]) * ureg.hartree / ureg.bohr)) + calculation.forces = Forces( + total=ForcesEntry( + value=np.array( + [ + [float(force) for force in atom.find("force").text.split()] + for atom in element_tree.find("run") + .find("iteration") + .find("atomset") + .iter("atom") + ] + ) + * ureg.hartree + / ureg.bohr + ) + ) diff --git a/electronicparsers/qbox/metainfo/qbox.py b/electronicparsers/qbox/metainfo/qbox.py index aa969e9a..585a43b6 100644 --- a/electronicparsers/qbox/metainfo/qbox.py +++ b/electronicparsers/qbox/metainfo/qbox.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,400 +40,433 @@ class x_qbox_section_dipole(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_qbox_dipole_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr * elementary_charge', - description=''' + unit="bohr * elementary_charge", + description=""" x component of dipole - ''') + """, + ) x_qbox_dipole_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr * elementary_charge', - description=''' + unit="bohr * elementary_charge", + description=""" y component of dipole - ''') + """, + ) x_qbox_dipole_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr * elementary_charge', - description=''' + unit="bohr * elementary_charge", + description=""" z component of dipole - ''') + """, + ) class x_qbox_section_efield(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) class x_qbox_section_MLWF(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_qbox_geometry_MLWF_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of atomic position in maximally localized Wannier functions(MLWF) - ''') + """, + ) x_qbox_geometry_MLWF_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of atomic position in maximally localized Wannier functions(MLWF) - ''') + """, + ) x_qbox_geometry_MLWF_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of atomic position in maximally localized Wannier functions(MLWF) - ''') + """, + ) x_qbox_geometry_MLWF_atom_positions = Quantity( type=np.dtype(np.float64), shape=[3], - unit='meter', - description=''' + unit="meter", + description=""" atomic position in maximally localized Wannier functions(MLWF) - ''') + """, + ) x_qbox_geometry_MLWF_atom_spread = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" spread of atomic position in maximally localized Wannier functions(MLWF) - ''') + """, + ) class x_qbox_section_stress_tensor(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_qbox_stress_tensor_xx = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" xx component of stress tensor - ''') + """, + ) x_qbox_stress_tensor_xy = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" xy component of stress tensor - ''') + """, + ) x_qbox_stress_tensor_xz = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" xz component of stress tensor - ''') + """, + ) x_qbox_stress_tensor_yy = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" yy component of stress tensor - ''') + """, + ) x_qbox_stress_tensor_yz = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" yz component of stress tensor - ''') + """, + ) x_qbox_stress_tensor_zz = Quantity( type=np.dtype(np.float64), shape=[], - unit='pascal', - description=''' + unit="pascal", + description=""" zz component of stress tensor - ''') + """, + ) class x_qbox_section_functionals(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_qbox_functional_name = Quantity( type=str, shape=[], - description=''' + description=""" xc function - ''') + """, + ) class x_qbox_section_xml_file(MSection): - ''' + """ - - ''' + """ m_def = Section(validate=False) x_qbox_loading_xml_file = Quantity( type=str, shape=[], - description=''' + description=""" The xml file used in this calculation - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_qbox_atom_force_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" x component of atomic force - ''') + """, + ) x_qbox_atom_force_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" y component of atomic force - ''') + """, + ) x_qbox_atom_force_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" z component of atomic force - ''') + """, + ) x_qbox_geometry_atom_labels = Quantity( type=str, shape=[], - description=''' + description=""" labels of atom - ''') + """, + ) x_qbox_geometry_atom_positions_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of atomic position - ''') + """, + ) x_qbox_geometry_atom_positions_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of atomic position - ''') + """, + ) x_qbox_geometry_atom_positions_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of atomic position - ''') + """, + ) x_qbox_geometry_lattice_vector_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" x component of vector of unit cell - ''') + """, + ) x_qbox_geometry_lattice_vector_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" y component of vector of unit cell - ''') + """, + ) x_qbox_geometry_lattice_vector_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" z component of vector of unit cell - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_qbox_atoms_dyn = Quantity( type=str, shape=[], - description=''' + description=""" atom dynamics control variable - ''') + """, + ) x_qbox_cell_dyn = Quantity( type=str, shape=[], - description=''' + description=""" cell dynamics control variable - ''') + """, + ) x_qbox_ecut = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" plane-wave basis energy cutoff, according to qbox, it must given in Rydberg units. - ''') + """, + ) x_qbox_efield_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree / bohr / elementary_charge', - description=''' + unit="hartree / bohr / elementary_charge", + description=""" x component of efield - ''') + """, + ) x_qbox_efield_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree / bohr / elementary_charge', - description=''' + unit="hartree / bohr / elementary_charge", + description=""" y component of efield - ''') + """, + ) x_qbox_efield_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='hartree / bohr / elementary_charge', - description=''' + unit="hartree / bohr / elementary_charge", + description=""" z component of efield - ''') + """, + ) x_qbox_k_point_weight = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" weight k point - ''') + """, + ) x_qbox_k_point_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" x component of vector of k point - ''') + """, + ) x_qbox_k_point_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" y component of vector of k point - ''') + """, + ) x_qbox_k_point_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" z component of vector of k point - ''') + """, + ) x_qbox_wf_dyn = Quantity( type=str, shape=[], - description=''' + description=""" wave function dynamics control variable - ''') + """, + ) x_qbox_input_parameters = Quantity( type=JSON, shape=[], - description=''' - Input parameters''' + description=""" + Input parameters""", ) x_qbox_section_functionals = SubSection( - sub_section=SectionProxy('x_qbox_section_functionals'), - repeats=True) + sub_section=SectionProxy("x_qbox_section_functionals"), repeats=True + ) x_qbox_section_xml_file = SubSection( - sub_section=SectionProxy('x_qbox_section_xml_file'), - repeats=True) + sub_section=SectionProxy("x_qbox_section_xml_file"), repeats=True + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_qbox_nodename = Quantity( type=str, shape=[], - description=''' + description=""" compute node - ''') + """, + ) x_qbox_section_dipole = SubSection( - sub_section=SectionProxy('x_qbox_section_dipole'), - repeats=True) + sub_section=SectionProxy("x_qbox_section_dipole"), repeats=True + ) x_qbox_section_efield = SubSection( - sub_section=SectionProxy('x_qbox_section_efield'), - repeats=True) + sub_section=SectionProxy("x_qbox_section_efield"), repeats=True + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_qbox_section_stress_tensor = SubSection( - sub_section=SectionProxy('x_qbox_section_stress_tensor'), - repeats=True) + sub_section=SectionProxy("x_qbox_section_stress_tensor"), repeats=True + ) x_qbox_section_MLWF = SubSection( - sub_section=SectionProxy('x_qbox_section_MLWF'), - repeats=True) + sub_section=SectionProxy("x_qbox_section_MLWF"), repeats=True + ) class Energy(runschema.calculation.Energy): - m_def = Section(validate=False, extends_base_section=True) x_qbox_conf = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def) diff --git a/electronicparsers/qbox/parser.py b/electronicparsers/qbox/parser.py index ef63970f..81bfcb8e 100644 --- a/electronicparsers/qbox/parser.py +++ b/electronicparsers/qbox/parser.py @@ -25,177 +25,321 @@ from nomad.units import ureg from nomad.parsing.file_parser import TextParser, Quantity from runschema.run import Run, Program, TimeRun -from runschema.system import ( - System, Atoms -) -from runschema.method import ( - Method, DFT, XCFunctional, Functional -) +from runschema.system import System, Atoms +from runschema.method import Method, DFT, XCFunctional, Functional from runschema.calculation import ( - Calculation, Energy, EnergyEntry, ScfIteration, Forces, ForcesEntry, Stress, - StressEntry, Multipoles, MultipolesEntry + Calculation, + Energy, + EnergyEntry, + ScfIteration, + Forces, + ForcesEntry, + Stress, + StressEntry, + Multipoles, + MultipolesEntry, ) from .metainfo.qbox import x_qbox_section_MLWF -re_n = r'[\n\r]' -re_f = r'[-+]?\d+\.\d*(?:[DdEe][-+]\d+)?' +re_n = r"[\n\r]" +re_f = r"[-+]?\d+\.\d*(?:[DdEe][-+]\d+)?" class QboxXMLParser(TextParser): def init_quantities(self): run_quantities = [ Quantity( - 'parameter', - r'\[qbox\] \set +(.+?)\<\/cmd\>', - str_operation=lambda x: x.split(' ', 1), repeats=True), + "parameter", + r"\[qbox\] \set +(.+?)\<\/cmd\>", + str_operation=lambda x: x.split(" ", 1), + repeats=True, + ), Quantity( - 'species', - r'(\', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('symbol', r'\([A-Z][a-z]*)', dtype=str), - Quantity('atomic_numer', r'\(\d+)', dtype=np.int32), - Quantity('mass', r'\(\d+)', dtype=np.float64) - ]) + "species", + r"(\", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("symbol", r"\([A-Z][a-z]*)", dtype=str), + Quantity( + "atomic_numer", r"\(\d+)", dtype=np.int32 + ), + Quantity("mass", r"\(\d+)", dtype=np.float64), + ] + ), ), Quantity( - 'iteration', - r'(\', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('charge', rf'total_electronic_charge: +({re_f})', dtype=np.float64), - Quantity('energy_kinetic_electronic', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_conf', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_ps', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_nl', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_coulomb', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_xc', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_sr', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_self', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_ts', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_exf', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_total', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_pv', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_efield', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity('energy_x_qbox_enthalpy', rf'\ +({re_f})', dtype=np.float64, unit=ureg.hartree), - Quantity( - 'stress_tensor', - r'(\', - sub_parser=TextParser(quantities=[ - Quantity( - 'contribution', - r'(\[\s\S]+?)\<\/sigma_.*\_*xz\>', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('kind', r'\ +({re_f})', dtype=np.float64, repeats=True) - ]) - ) - ]) - ), - Quantity( - 'multipole', - r'(\<[a-z]+pole\>[\s\S]+?)\<\/[a-z]+pole\>', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'dipole', - rf'\ +({re_f} +{re_f} +{re_f})', - repeats=True + "iteration", + r"(\", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "charge", + rf"total_electronic_charge: +({re_f})", + dtype=np.float64, + ), + Quantity( + "energy_kinetic_electronic", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_conf", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_ps", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_nl", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_coulomb", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_xc", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_sr", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_self", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_ts", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_exf", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_total", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_pv", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_efield", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "energy_x_qbox_enthalpy", + rf"\ +({re_f})", + dtype=np.float64, + unit=ureg.hartree, + ), + Quantity( + "stress_tensor", + r"(\", + sub_parser=TextParser( + quantities=[ + Quantity( + "contribution", + r"(\[\s\S]+?)\<\/sigma_.*\_*xz\>", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "kind", + r"\ +({re_f})", + dtype=np.float64, + repeats=True, + ), + ] + ), + ) + ] ), - Quantity( - 'quadrupole', - rf'\\s+' - rf'({re_f} +{re_f} +{re_f})\s+' - rf'({re_f} +{re_f} +{re_f})\s+' - rf'({re_f} +{re_f} +{re_f})\s+', - repeats=True - ) - ]) - ), - Quantity( - 'mlwf', - r'(\', - sub_parser=TextParser(quantities=[ - Quantity( - 'center', - rf'mlwf center=\" +({re_f} +{re_f} +{re_f}) +\"\s+spread=\" +({re_f})', - repeats=True, dtype=np.dtype(np.float64) - ) - ]) - ), - Quantity( - 'scf', - r'(total_electronic_charge:.+\s+\', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('charge', rf'total_electronic_charge: +({re_f})', dtype=np.float64), - Quantity( - 'energy_sum_eigenvalues', - rf'\ +({re_f})', - unit=ureg.hartree, dtype=np.float64), - Quantity( - 'energy_total', - rf'\ +({re_f})', - unit=ureg.hartree, dtype=np.float64), - ]) - ), - Quantity( - 'atomset', - r'(\[\s\S]+?)', - sub_parser=TextParser(quantities=[ - Quantity( - 'lattice_vectors', - rf'\[\s\S]+?)\<\/[a-z]+pole\>", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "dipole", + rf"\ +({re_f} +{re_f} +{re_f})", + repeats=True, + ), + Quantity( + "quadrupole", + rf"\\s+" + rf"({re_f} +{re_f} +{re_f})\s+" + rf"({re_f} +{re_f} +{re_f})\s+" + rf"({re_f} +{re_f} +{re_f})\s+", + repeats=True, + ), + ] ), - Quantity( - 'atom', - r'(\', - repeats=True, sub_parser=TextParser(quantities=[ + ), + Quantity( + "mlwf", + r"(\", + sub_parser=TextParser( + quantities=[ Quantity( - 'label', - r'\", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "charge", + rf"total_electronic_charge: +({re_f})", + dtype=np.float64, ), Quantity( - 'position', - rf'\ +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) + "energy_sum_eigenvalues", + rf"\ +({re_f})", + unit=ureg.hartree, + dtype=np.float64, ), Quantity( - 'velocity', - rf'\ +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) + "energy_total", + rf"\ +({re_f})", + unit=ureg.hartree, + dtype=np.float64, ), + ] + ), + ), + Quantity( + "atomset", + r"(\[\s\S]+?)", + sub_parser=TextParser( + quantities=[ Quantity( - 'force', - rf'\ +({re_f} +{re_f} +{re_f})', - dtype=np.dtype(np.float64) - ) - ]) + "lattice_vectors", + rf"\", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "label", + r"\ +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "velocity", + rf"\ +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + Quantity( + "force", + rf"\ +({re_f} +{re_f} +{re_f})", + dtype=np.dtype(np.float64), + ), + ] + ), + ), + ] ), - - ])), - Quantity( - 'time_calculation', - rf'\ (\d\d\d\d\-\d\d\-\d\dT\d\d:\d\d:\d\dZ)', dtype=str), - Quantity('end_time', r'\ (\d\d\d\d\-\d\d\-\d\dT\d\d:\d\d:\d\dZ)', dtype=str), - Quantity('x_qbox_nodename', r'\ (.+) \<\/nodename\>', dtype=str, flatten=False), - Quantity('x_qbox_loading_xml_file', r'LoadCmd: loading from (\S+)', dtype=str), + Quantity("program_version", r"I qbox (\S+)", dtype=str), Quantity( - 'run', - r'(\[qbox\] \[\s\S]+?\ (\d\d\d\d\-\d\d\-\d\dT\d\d:\d\d:\d\dZ)", + dtype=str, + ), + Quantity( + "end_time", + r"\ (\d\d\d\d\-\d\d\-\d\dT\d\d:\d\d:\d\dZ)", + dtype=str, + ), + Quantity( + "x_qbox_nodename", + r"\ (.+) \<\/nodename\>", + dtype=str, + flatten=False, + ), + Quantity( + "x_qbox_loading_xml_file", r"LoadCmd: loading from (\S+)", dtype=str + ), + Quantity( + "run", + r"(\[qbox\] \[\s\S]+?\ 0: - magmom = [self.extract_groups_datasets(magmom.get(keys)) for keys in magmom.keys()] - sec_dmft.magnetic_state = 'ferromagnetic' if all(signs == 1.0 for signs in np.sign(magmom)) else 'antiferromagnetic' + magmom = [ + self.extract_groups_datasets(magmom.get(keys)) + for keys in magmom.keys() + ] + sec_dmft.magnetic_state = ( + "ferromagnetic" + if all(signs == 1.0 for signs in np.sign(magmom)) + else "antiferromagnetic" + ) else: - self.logger.warning('The magnetic flag is set to true, but the initial magnetic moment is not resolved. ' - 'Is this really a magnetic calculation without an initial magmom seed?') + self.logger.warning( + "The magnetic flag is set to true, but the initial magnetic moment is not resolved. " + "Is this really a magnetic calculation without an initial magmom seed?" + ) else: - sec_dmft.magnetic_state = 'paramagnetic' - solver_type = self.extract_groups_datasets(dmft_general_params.get('solver_type')) + sec_dmft.magnetic_state = "paramagnetic" + solver_type = self.extract_groups_datasets( + dmft_general_params.get("solver_type") + ) if solver_type: sec_dmft.impurity_solver = self._solver_map[solver_type.decode()] # MatsFrequencyMesh - n_iw = self.extract_groups_datasets(dmft_general_params.get('n_iw')) + n_iw = self.extract_groups_datasets(dmft_general_params.get("n_iw")) if n_iw: iw = np.array([(2 * (n - n_iw) + 1) * 1j / beta for n in range(2 * n_iw)]) iw = iw.reshape((2 * n_iw, 1)) - sec_freq_mesh = FrequencyMesh(dimensionality=1, n_points=n_iw, points=iw * ureg.eV) + sec_freq_mesh = FrequencyMesh( + dimensionality=1, n_points=n_iw, points=iw * ureg.eV + ) sec_method.m_add_sub_section(Method.frequency_mesh, sec_freq_mesh) # TimeMesh - n_tau = self.extract_groups_datasets(dmft_general_params.get('n_tau')) + n_tau = self.extract_groups_datasets(dmft_general_params.get("n_tau")) if n_tau: tau = np.array([n * beta * 1j / (n_tau - 1) for n in range(n_tau)]) tau = tau.reshape((n_tau, 1)) sec_time_mesh = TimeMesh(dimensionality=1, n_points=n_tau, points=tau) sec_method.m_add_sub_section(Method.time_mesh, sec_time_mesh) # FrequencyMesh - n_w = self.extract_groups_datasets(dmft_general_params.get('n_w')) + n_w = self.extract_groups_datasets(dmft_general_params.get("n_w")) if n_w: - w_min = self.extract_groups_datasets(dmft_general_params.get('w_range', {}).get('0'), 0.0) - w_max = self.extract_groups_datasets(dmft_general_params.get('w_range', {}).get('1'), 0.0) + w_min = self.extract_groups_datasets( + dmft_general_params.get("w_range", {}).get("0"), 0.0 + ) + w_max = self.extract_groups_datasets( + dmft_general_params.get("w_range", {}).get("1"), 0.0 + ) freq = np.linspace(w_min, w_max, n_w) freq = freq.reshape((n_w, 1)) - sec_freq_mesh = FrequencyMesh(dimensionality=1, n_points=n_w, points=freq * ureg.eV) + sec_freq_mesh = FrequencyMesh( + dimensionality=1, n_points=n_w, points=freq * ureg.eV + ) sec_method.m_add_sub_section(Method.frequency_mesh, sec_freq_mesh) def parse_scc(self): @@ -308,8 +381,15 @@ def parse_scc(self): sec_scc.system_ref = sec_run.system[-1] if sec_run.system else None sec_scc.method_ref = sec_run.method[-1] # ref to DMFT - def parse_scf(filename: str, sec_scc: Calculation, i_scf: int, n_impurities: int, - convergence_obs: Dict[str, Any], observables: Dict[str, Any], farg: str = 'r+b'): + def parse_scf( + filename: str, + sec_scc: Calculation, + i_scf: int, + n_impurities: int, + convergence_obs: Dict[str, Any], + observables: Dict[str, Any], + farg: str = "r+b", + ): """Parses the scf iterations. Args: @@ -326,40 +406,54 @@ def parse_scf(filename: str, sec_scc: Calculation, i_scf: int, n_impurities: int # Convergence of the observables per scf iteration step conv_obs = {} for key, value in convergence_obs.items(): - if len(value) == 0 or key == 'iteration': + if len(value) == 0 or key == "iteration": continue - if key == 'd_mu': - val = self.extract_groups_datasets(value.get(f'{i_scf}')) + if key == "d_mu": + val = self.extract_groups_datasets(value.get(f"{i_scf}")) conv_obs[key] = numpy_type_to_json_serializable(val) else: for n in range(n_impurities): n_imp = str(n) - if key == 'd_orb_occ': - d_orb_occ = self.extract_groups_datasets(value.get(n_imp)[f'{i_scf}']) + if key == "d_orb_occ": + d_orb_occ = self.extract_groups_datasets( + value.get(n_imp)[f"{i_scf}"] + ) sec_scf.x_soliddmft_convergence_orb_occ = d_orb_occ else: - val = self.extract_groups_datasets(value.get(n_imp)[f'{i_scf}']) - conv_obs[f'{key}_imp{n_imp}'] = numpy_type_to_json_serializable(val) + val = self.extract_groups_datasets( + value.get(n_imp)[f"{i_scf}"] + ) + conv_obs[ + f"{key}_imp{n_imp}" + ] = numpy_type_to_json_serializable(val) sec_scf.x_soliddmft_convergence_obs = conv_obs # Energy per scf iteration step sec_energy = Energy() sec_scf.energy = sec_energy - total_energy = self.extract_groups_datasets(observables.get('E_tot', {}).get(f'{i_scf + 1}')) + total_energy = self.extract_groups_datasets( + observables.get("E_tot", {}).get(f"{i_scf + 1}") + ) if total_energy: total_energy = total_energy * ureg.eV sec_energy.total = EnergyEntry(value=total_energy) - chemical_potential = self.extract_groups_datasets(observables.get('mu', {}).get(f'{i_scf + 1}')) + chemical_potential = self.extract_groups_datasets( + observables.get("mu", {}).get(f"{i_scf + 1}") + ) if chemical_potential: sec_energy.chemical_potential = chemical_potential * ureg.eV dc_energy = [] for n in range(n_impurities): - dc_energy_atom = self.extract_groups_datasets(observables.get('E_DC', {}).get(f'{n}').get(f'{i_scf + 1}')) + dc_energy_atom = self.extract_groups_datasets( + observables.get("E_DC", {}).get(f"{n}").get(f"{i_scf + 1}") + ) dc_energy.append(dc_energy_atom) - sec_energy.double_counting = EnergyEntry(values_per_atom=dc_energy * ureg.eV) + sec_energy.double_counting = EnergyEntry( + values_per_atom=dc_energy * ureg.eV + ) # Observables per scf iteration step - scf_iteration = self.dmft_results.get(f'it_{i_scf + 1}') + scf_iteration = self.dmft_results.get(f"it_{i_scf + 1}") if self.archive.m_context: with self.archive.m_context.raw_file(filename, farg) as file: for n in range(n_impurities): @@ -367,27 +461,51 @@ def parse_scf(filename: str, sec_scc: Calculation, i_scf: int, n_impurities: int sec_obs_scf = x_soliddmft_observables_parameters() sec_scf.x_soliddmft_observables.append(sec_obs_scf) for gf_iteration in self.iteration_gfs: - if f'{gf_iteration}_{n_imp}' not in scf_iteration.keys(): + if f"{gf_iteration}_{n_imp}" not in scf_iteration.keys(): continue - value_per_spin_orbital = scf_iteration.get(f'{gf_iteration}_{n_imp}') + value_per_spin_orbital = scf_iteration.get( + f"{gf_iteration}_{n_imp}" + ) value_tot = [] for spin_orb in value_per_spin_orbital.keys(): - if spin_orb == 'block_names': + if spin_orb == "block_names": continue - value = value_per_spin_orbital.get(spin_orb).get('data') - value = to_hdf5(value, file, f'DMFT_results/it_{i_scf + 1}/{gf_iteration}_{n_imp}/{spin_orb}/data') + value = value_per_spin_orbital.get(spin_orb).get("data") + value = to_hdf5( + value, + file, + f"DMFT_results/it_{i_scf + 1}/{gf_iteration}_{n_imp}/{spin_orb}/data", + ) value_tot.append(value) - sec_obs_scf.m_set(sec_obs_scf.m_get_quantity_definition(f'x_soliddmft_{gf_iteration}'), value_tot) + sec_obs_scf.m_set( + sec_obs_scf.m_get_quantity_definition( + f"x_soliddmft_{gf_iteration}" + ), + value_tot, + ) for gf_observable in self.observable_gfs: if gf_observable not in observables.keys(): continue - value_per_spin_orbital = observables.get(gf_observable).get(f'{n_imp}') + value_per_spin_orbital = observables.get(gf_observable).get( + f"{n_imp}" + ) value_tot = [] for spin_orb in value_per_spin_orbital.keys(): - value = value_per_spin_orbital.get(spin_orb).get(f'{i_scf + 1}') - value = to_hdf5(value, file, f'DMFT_results/observables/{gf_observable}/{n_imp}/{spin_orb}/{i_scf + 1}') + value = value_per_spin_orbital.get(spin_orb).get( + f"{i_scf + 1}" + ) + value = to_hdf5( + value, + file, + f"DMFT_results/observables/{gf_observable}/{n_imp}/{spin_orb}/{i_scf + 1}", + ) value_tot.append(value) - sec_obs_scf.m_set(sec_obs_scf.m_get_quantity_definition(f'x_soliddmft_{gf_observable}'), value_tot) + sec_obs_scf.m_set( + sec_obs_scf.m_get_quantity_definition( + f"x_soliddmft_{gf_observable}" + ), + value_tot, + ) def parse_gfs(sec_scc: Calculation, n_impurities: int): """Parses Green's functions quantities. @@ -400,27 +518,36 @@ def parse_gfs(sec_scc: Calculation, n_impurities: int): sec_scc.greens_functions.append(sec_gfs) # First, store energies - dmft_last_iter = self.dmft_results.get('last_iter') + dmft_last_iter = self.dmft_results.get("last_iter") sec_energy = Energy() sec_scc.energy = sec_energy - if dmft_last_iter.get('DC_energ'): - dc_energy = [self.extract_groups_datasets(dmft_last_iter.get('DC_energ').get(keys)) for keys in dmft_last_iter.get('DC_energ')] - sec_energy.double_counting = EnergyEntry(values_per_atom=dc_energy * ureg.eV) - chemical_potential = self.extract_groups_datasets(dmft_last_iter.get('chemical_potential_post')) + if dmft_last_iter.get("DC_energ"): + dc_energy = [ + self.extract_groups_datasets( + dmft_last_iter.get("DC_energ").get(keys) + ) + for keys in dmft_last_iter.get("DC_energ") + ] + sec_energy.double_counting = EnergyEntry( + values_per_atom=dc_energy * ureg.eV + ) + chemical_potential = self.extract_groups_datasets( + dmft_last_iter.get("chemical_potential_post") + ) if chemical_potential: sec_energy.chemical_potential = chemical_potential * ureg.eV sec_gfs.chemical_potential = chemical_potential * ureg.eV # Read axes label - axes_label = '' + axes_label = "" for freq_mesh in sec_scc.method_ref.frequency_mesh: - points = freq_mesh.points.to('eV').magnitude + points = freq_mesh.points.to("eV").magnitude if np.isreal(points).all(): sec_gfs.frequencies = np.real(points) - axes_label = 'real' + axes_label = "real" else: sec_gfs.matsubara_freq = np.imag(points) - axes_label = 'matsubara' + axes_label = "matsubara" axes = self._gf_freq_map[axes_label] if sec_scc.method_ref.time_mesh: sec_gfs.tau = sec_scc.method_ref.time_mesh[0].points.imag @@ -435,84 +562,114 @@ def parse_gfs(sec_scc: Calculation, n_impurities: int): value_per_atom = [] for n in range(n_impurities): n_orb = n_orbitals[n] - if not dmft_last_iter.get(f'{gf_quantity}_{n}'): + if not dmft_last_iter.get(f"{gf_quantity}_{n}"): continue - value = dmft_last_iter.get(f'{gf_quantity}_{n}') + value = dmft_last_iter.get(f"{gf_quantity}_{n}") value_per_atom_per_spin = [] - for spin in ['down', 'up']: + for spin in ["down", "up"]: value_per_atom_per_spin_per_orbital = [] for i_orb in range(n_orb): - val = value.get(f'{spin}_{i_orb}').get('data') + val = value.get(f"{spin}_{i_orb}").get("data") val = val[:, 0, 0, 0] + 1j * val[:, 0, 0, 1] value_per_atom_per_spin_per_orbital.append(val) - value_per_atom_per_spin.append(value_per_atom_per_spin_per_orbital) + value_per_atom_per_spin.append( + value_per_atom_per_spin_per_orbital + ) value_per_atom.append(value_per_atom_per_spin) gf = np.array(value_per_atom) - if gf_quantity == 'Gimp_time': # setting G(tau) to positive values as in other codes - gf = - gf + if ( + gf_quantity == "Gimp_time" + ): # setting G(tau) to positive values as in other codes + gf = -gf sec_gfs.m_set(sec_gfs.m_get_quantity_definition(quantity_name), gf) # In case axes_label = real, we parse the DOS as -Im G(w) / np.pi - if axes_label == 'real': + if axes_label == "real": magnetic_state = sec_scc.method_ref.dmft.magnetic_state - n_spin_channels = 1 if magnetic_state == 'paramagnetic' else 2 + n_spin_channels = 1 if magnetic_state == "paramagnetic" else 2 im_greens_functions_freq = sec_gfs.greens_function_freq.imag for spin_channel in range(n_spin_channels): sec_dos = Dos() sec_scc.dos_electronic.append(sec_dos) - sec_dos.spin_channel = spin_channel if n_spin_channels == 2 else None - sec_dos.kind = 'spectral' + sec_dos.spin_channel = ( + spin_channel if n_spin_channels == 2 else None + ) + sec_dos.kind = "spectral" sec_dos.energy_fermi = chemical_potential * ureg.eV energies = sec_gfs.frequencies[:, 0] sec_dos.n_energies = len(energies) sec_dos.energies = energies * ureg.eV # Total values imgf_per_spin = im_greens_functions_freq[:, spin_channel, :, :] - value = - imgf_per_spin / np.pi + value = -imgf_per_spin / np.pi value_total = 0.0 for i_at in range(value.shape[0]): for i_orb in range(value.shape[1]): value_total += value[i_at][i_orb] - value_total = 2 * value_total if n_spin_channels == 2 else value_total + value_total = ( + 2 * value_total if n_spin_channels == 2 else value_total + ) sec_dos_total = DosValues() sec_dos.total.append(sec_dos_total) sec_dos_total.value = value_total / ureg.eV return sec_gfs # SCF steps - scf_keys = [int(key.lstrip('it_')) for key in self.dmft_results.keys() if key.startswith('it_')] + scf_keys = [ + int(key.lstrip("it_")) + for key in self.dmft_results.keys() + if key.startswith("it_") + ] scf_keys.sort() - n_iter_scf = self.dmft_results.get('iteration_count')[()] if self.dmft_results.get('iteration_count') else 1 + n_iter_scf = ( + self.dmft_results.get("iteration_count")[()] + if self.dmft_results.get("iteration_count") + else 1 + ) if len(scf_keys) != n_iter_scf: - self.logger.warning('Number of it_n steps for DMFT results is different from the iteration ' - 'count stored in the h5 file.') - - n_impurities = self.dft_input.get('n_inequiv_shells')[()] - convergence_obs = self.dmft_results.get('convergence_obs', {}) - observables = self.dmft_results.get('observables', {}) + self.logger.warning( + "Number of it_n steps for DMFT results is different from the iteration " + "count stored in the h5 file." + ) + + n_impurities = self.dft_input.get("n_inequiv_shells")[()] + convergence_obs = self.dmft_results.get("convergence_obs", {}) + observables = self.dmft_results.get("observables", {}) # Resolving h5 path for to_hdf5 method - filename = os.path.join(os.path.dirname(self.filepath.split("/raw/")[-1]), self.mainfile) + filename = os.path.join( + os.path.dirname(self.filepath.split("/raw/")[-1]), self.mainfile + ) for i_scf in range(len(scf_keys)): - parse_scf(filename, sec_scc, i_scf, n_impurities, convergence_obs, observables) + parse_scf( + filename, sec_scc, i_scf, n_impurities, convergence_obs, observables + ) # Greens functions quantities sec_gfs = parse_gfs(sec_scc, n_impurities) # and related quantities quasiparticle_weights = [] orbital_occupations = [] - orb_Z = observables.get('orb_Z') - orb_occ = observables.get('orb_occ') + orb_Z = observables.get("orb_Z") + orb_occ = observables.get("orb_occ") for n in range(n_impurities): n_imp = str(n) orb_Z_per_impurity = orb_Z.get(n_imp) quasiparticle_weights_per_impurity = [] orb_occ_per_impurity = orb_occ.get(n_imp) orbital_occupations_per_impurity = [] - for spin in ['down', 'up']: - quasiparticle_weights_per_impurity.append(self.extract_groups_datasets(orb_Z_per_impurity.get(spin).get(f'{n_iter_scf}'))) - orbital_occupations_per_impurity.append(self.extract_groups_datasets(orb_occ_per_impurity.get(spin).get(f'{n_iter_scf}'))) + for spin in ["down", "up"]: + quasiparticle_weights_per_impurity.append( + self.extract_groups_datasets( + orb_Z_per_impurity.get(spin).get(f"{n_iter_scf}") + ) + ) + orbital_occupations_per_impurity.append( + self.extract_groups_datasets( + orb_occ_per_impurity.get(spin).get(f"{n_iter_scf}") + ) + ) quasiparticle_weights.append(quasiparticle_weights_per_impurity) orbital_occupations.append(orbital_occupations_per_impurity) sec_gfs.quasiparticle_weights = quasiparticle_weights @@ -528,12 +685,12 @@ def parse(self, filepath, archive, logger): try: data = h5py.File(self.filepath) except Exception: - self.logger.error('Error opening h5 file.') + self.logger.error("Error opening h5 file.") data = None return - self.dft_input = data.get('dft_input') - self.dmft_input = data.get('DMFT_input') - self.dmft_results = data.get('DMFT_results') + self.dft_input = data.get("dft_input") + self.dmft_input = data.get("DMFT_input") + self.dmft_results = data.get("DMFT_results") sec_run = Run() archive.run.append(sec_run) @@ -541,21 +698,27 @@ def parse(self, filepath, archive, logger): # Program section sec_program = Program() sec_run.program = sec_program - sec_program.name = 'solid_dmft' - if self.dmft_input['version'] is not None: + sec_program.name = "solid_dmft" + if self.dmft_input["version"] is not None: for name in self.code_keys: - hash = self.extract_groups_datasets(self.dmft_input['version'].get(f'{name}_hash')) + hash = self.extract_groups_datasets( + self.dmft_input["version"].get(f"{name}_hash") + ) if hash: - if name == 'solid_dmft': + if name == "solid_dmft": sec_program.x_soliddmft_hash = hash.decode() else: - setattr(sec_program, f'x_soliddmft_{name}_hash', hash.decode()) - version = self.extract_groups_datasets(self.dmft_input['version'].get(f'{name}_version')) + setattr(sec_program, f"x_soliddmft_{name}_hash", hash.decode()) + version = self.extract_groups_datasets( + self.dmft_input["version"].get(f"{name}_version") + ) if version: - if name == 'solid_dmft': + if name == "solid_dmft": sec_program.version = version.decode() else: - setattr(sec_program, f'x_soliddmft_{name}_version', version.decode()) + setattr( + sec_program, f"x_soliddmft_{name}_version", version.decode() + ) # System section self.parse_system() diff --git a/electronicparsers/tbstudio/metainfo/tbstudio.py b/electronicparsers/tbstudio/metainfo/tbstudio.py index 4f1d8c64..16ce9d32 100644 --- a/electronicparsers/tbstudio/metainfo/tbstudio.py +++ b/electronicparsers/tbstudio/metainfo/tbstudio.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) diff --git a/electronicparsers/tbstudio/parser.py b/electronicparsers/tbstudio/parser.py index 1d7b463a..9549bd10 100644 --- a/electronicparsers/tbstudio/parser.py +++ b/electronicparsers/tbstudio/parser.py @@ -23,15 +23,16 @@ from nomad.units import ureg from runschema.run import Run, Program -from runschema.system import ( - System, Atoms -) +from runschema.system import System, Atoms from runschema.method import ( - Method, TB, SlaterKoster, TightBindingOrbital, SlaterKosterBond, TwoCenterBond -) -from runschema.calculation import ( - Calculation, BandStructure, BandEnergies, Energy + Method, + TB, + SlaterKoster, + TightBindingOrbital, + SlaterKosterBond, + TwoCenterBond, ) +from runschema.calculation import Calculation, BandStructure, BandEnergies, Energy from simulationworkflowschema import SinglePoint import json import re @@ -43,11 +44,10 @@ class TBStudioParser(BeyondDFTWorkflowsParser): level = 1 def __init__(self): - self._calculation_type = 'tight binding' + self._calculation_type = "tight binding" def parse_system(self): - """Populates run.system with the input structural parameters. - """ + """Populates run.system with the input structural parameters.""" sec_run = self.archive.run[-1] sec_system = System() sec_run.system.append(sec_system) @@ -55,19 +55,22 @@ def parse_system(self): sec_system.atoms = sec_atoms # Load lattice vectors - if self.tbm.get('vars') is None: - self.logger.warning('Could not find the .tbm file vars parameters.') + if self.tbm.get("vars") is None: + self.logger.warning("Could not find the .tbm file vars parameters.") return - self.a = [np.float64(self.tbm['vars'].get(f'a[{i}]', '0')) for i in range(3)] - self.b = [np.float64(self.tbm['vars'].get(f'b[{i}]', '0')) for i in range(3)] - self.c = [np.float64(self.tbm['vars'].get(f'c[{i}]', '0')) for i in range(3)] + self.a = [np.float64(self.tbm["vars"].get(f"a[{i}]", "0")) for i in range(3)] + self.b = [np.float64(self.tbm["vars"].get(f"b[{i}]", "0")) for i in range(3)] + self.c = [np.float64(self.tbm["vars"].get(f"c[{i}]", "0")) for i in range(3)] sec_atoms.lattice_vectors = [self.a, self.b, self.c] * ureg.angstrom xyz_coords = [] atomic_labels = [] - for r, atomic_number in zip(self.tbm['grids']['XYZ_Coords'].get('value', []), self.tbm['grids']['KABC_Coords'].get('value', [])): + for r, atomic_number in zip( + self.tbm["grids"]["XYZ_Coords"].get("value", []), + self.tbm["grids"]["KABC_Coords"].get("value", []), + ): # Check if x, y, and z are provided then accept it otherwise it is taken as the end of table # This is the same behaviour that tbstudio does to accept or ignore a row try: @@ -83,16 +86,15 @@ def parse_system(self): sec_atoms.positions = xyz_coords * ureg.angstrom sec_atoms.labels = atomic_labels - tb_l = np.int64(self.tbm['vars'].get('TBl[0]', '0')) - tb_m = np.int64(self.tbm['vars'].get('TBm[0]', '0')) - tb_n = np.int64(self.tbm['vars'].get('TBn[0]', '0')) + tb_l = np.int64(self.tbm["vars"].get("TBl[0]", "0")) + tb_m = np.int64(self.tbm["vars"].get("TBm[0]", "0")) + tb_n = np.int64(self.tbm["vars"].get("TBn[0]", "0")) pbc = [bool(dim != 0) for dim in [tb_l, tb_m, tb_n]] sec_atoms.periodic = pbc def parse_method(self): - """Populates run.method with the input methodological parameters. - """ + """Populates run.method with the input methodological parameters.""" sec_run = self.archive.run[-1] sec_method = Method() @@ -105,30 +107,32 @@ def parse_method(self): orbitals = [] lastInd = 0 for i in range(1, 100): - varName = 'AtomInd{}'.format(i) - orbital = self.tbm['combos'][varName] - if orbital['selected'] != 0: + varName = "AtomInd{}".format(i) + orbital = self.tbm["combos"][varName] + if orbital["selected"] != 0: lastInd = i for i in range(1, lastInd + 1): - varName = 'AtomInd{}'.format(i) - orbital = self.tbm['combos'][varName] + varName = "AtomInd{}".format(i) + orbital = self.tbm["combos"][varName] items = orbital["items"] - selected = orbital['selected'] + selected = orbital["selected"] if selected == 0: orbitals.append(None) else: orbitals.append(items[selected]) final_os = {} - tbAtom = '' - shell = '' - for state, row in zip(self.tbm['grids']['OS']['isReadOnly'], self.tbm['grids']['OS']['value']): + tbAtom = "" + shell = "" + for state, row in zip( + self.tbm["grids"]["OS"]["isReadOnly"], self.tbm["grids"]["OS"]["value"] + ): if state[0] and state[1] and state[2]: - if row[0] == '' and row[1] == '' and row[2] == '': + if row[0] == "" and row[1] == "" and row[2] == "": break else: os_name = row[0] - orbital_info = re.search(r'^(.*) \((.*)\)$', os_name) + orbital_info = re.search(r"^(.*) \((.*)\)$", os_name) tbAtom = orbital_info[1] shell = orbital_info[2] if tbAtom not in final_os: @@ -158,10 +162,12 @@ def parse_method(self): sec_orbitals.onsite_energy = onSite final_sk = {} - tb_bond = '' - for state, row in zip(self.tbm['grids']['SK']['isReadOnly'], self.tbm['grids']['SK']['value']): + tb_bond = "" + for state, row in zip( + self.tbm["grids"]["SK"]["isReadOnly"], self.tbm["grids"]["SK"]["value"] + ): if state[0] and state[1] and state[2]: - if row[0] == '' and row[1] == '' and row[2] == '': + if row[0] == "" and row[1] == "" and row[2] == "": break else: tb_bond = row[0] @@ -174,10 +180,12 @@ def parse_method(self): final_sk[tb_bond][sk_integral] = 0 final_overlap = {} - tb_bond = '' - for state, row in zip(self.tbm['grids']['OL']['isReadOnly'], self.tbm['grids']['OL']['value']): + tb_bond = "" + for state, row in zip( + self.tbm["grids"]["OL"]["isReadOnly"], self.tbm["grids"]["OL"]["value"] + ): if state[0] and state[1] and state[2]: - if row[0] == '' and row[1] == '' and row[2] == '': + if row[0] == "" and row[1] == "" and row[2] == "": break else: tb_bond = row[0] @@ -190,39 +198,49 @@ def parse_method(self): final_overlap[tb_bond][sk_integral] = 0 bonds = [] - if 'TB Model' in self.tbm['trees']['Bonds']: - if 'children' in self.tbm['trees']['Bonds']['TB Model']: - allBonds = self.tbm['trees']['Bonds']['TB Model']['children'] + if "TB Model" in self.tbm["trees"]["Bonds"]: + if "children" in self.tbm["trees"]["Bonds"]["TB Model"]: + allBonds = self.tbm["trees"]["Bonds"]["TB Model"]["children"] allCells = allBonds.keys() for cells in allCells: cellBonds = allBonds[cells] - cells_info = re.search(r'^(\(.*\))-(\(.*\))$', cells) + cells_info = re.search(r"^(\(.*\))-(\(.*\))$", cells) cell1 = cells_info[1] cell2 = cells_info[2] - is_active = cellBonds['state'] == 4 + is_active = cellBonds["state"] == 4 if is_active: - allAtoms = cellBonds['children'] + allAtoms = cellBonds["children"] for atoms in allAtoms.keys(): - is_bond_active = allAtoms[atoms]['state'] == 4 + is_bond_active = allAtoms[atoms]["state"] == 4 if is_bond_active: atoms_info = re.search( - r'^\[ \(i,n\)=\((\d+),(\d+)\) , \(j,m\)=\((\d+),(\d+)\) , (.*) ]$', atoms) + r"^\[ \(i,n\)=\((\d+),(\d+)\) , \(j,m\)=\((\d+),(\d+)\) , (.*) ]$", + atoms, + ) index1 = atoms_info[1] shell1 = atoms_info[2] index2 = atoms_info[3] shell2 = atoms_info[4] bond_type = atoms_info[5] bond = { - "atom1": {"index": index1, "shell": shell1, "cell": cell1}, - "atom2": {"index": index2, "shell": shell2, "cell": cell2}, - "type": bond_type + "atom1": { + "index": index1, + "shell": shell1, + "cell": cell1, + }, + "atom2": { + "index": index2, + "shell": shell2, + "cell": cell2, + }, + "type": bond_type, } bonds.append(bond) for bond in bonds: - atom1 = bond['atom1'] - atom2 = bond['atom2'] - bond_type = bond['type'] + atom1 = bond["atom1"] + atom2 = bond["atom2"] + bond_type = bond["type"] h_sk = None s_sk = None if final_sk: @@ -237,16 +255,16 @@ def parse_method(self): center1 = TightBindingOrbital() sec_bonds.center1 = center1 - center1.atom_index = atom1['index'] - center1.shell = atom1['shell'] - indices = re.findall(r'-?\d+', atom1['cell']) + center1.atom_index = atom1["index"] + center1.shell = atom1["shell"] + indices = re.findall(r"-?\d+", atom1["cell"]) center1.cell_index = [int(index) for index in indices] center2 = TightBindingOrbital() sec_bonds.center2 = center2 - center2.atom_index = atom2['index'] - center2.shell = atom2['shell'] - indices = re.findall(r'-?\d+', atom2['cell']) + center2.atom_index = atom2["index"] + center2.shell = atom2["shell"] + indices = re.findall(r"-?\d+", atom2["cell"]) center2.cell_index = [int(index) for index in indices] for sk_label, sk_integral in h_sk.items(): setattr(sec_bonds, sk_label, sk_integral) @@ -258,28 +276,27 @@ def parse_method(self): center1 = TightBindingOrbital() sec_overlaps.center1 = center1 - center1.atom_index = atom1['index'] - center1.shell = atom1['shell'] - indices = re.findall(r'-?\d+', atom1['cell']) + center1.atom_index = atom1["index"] + center1.shell = atom1["shell"] + indices = re.findall(r"-?\d+", atom1["cell"]) center1.cell_index = [int(index) for index in indices] center2 = TightBindingOrbital() sec_overlaps.center2 = center2 - center2.atom_index = atom2['index'] - center2.shell = atom2['shell'] - indices = re.findall(r'-?\d+', atom2['cell']) + center2.atom_index = atom2["index"] + center2.shell = atom2["shell"] + indices = re.findall(r"-?\d+", atom2["cell"]) center2.cell_index = [int(index) for index in indices] for sk_label, sk_integral in s_sk.items(): setattr(sec_overlaps, sk_label, sk_integral) def parse_scc(self): - """Populates run.calculation with the output of the calculation. - """ + """Populates run.calculation with the output of the calculation.""" sec_run = self.archive.run[-1] sec_scc = Calculation() sec_run.calculation.append(sec_scc) - _k_points = self.tbm['variables']['KPoints'] + _k_points = self.tbm["variables"]["KPoints"] frac_k_points = [] k_points = [] k_length = [] @@ -288,14 +305,16 @@ def parse_scc(self): k_points.append([row[3], row[4], row[5]]) k_length.append(row[6]) - tb_bands = self.tbm['variables']['fTBEigVal'] - band_segments_points = self.tbm['variables']['bandSections']['index'] + tb_bands = self.tbm["variables"]["fTBEigVal"] + band_segments_points = self.tbm["variables"]["bandSections"]["index"] if band_segments_points is None or len(tb_bands) < 1 or len(frac_k_points) < 1: return - fermi_level = self.tbm['variables'].get('ChemP') + fermi_level = self.tbm["variables"].get("ChemP") if not fermi_level: - self.logger.warning('Could not extract the Fermi level, so that the BandStructure is not resolved') + self.logger.warning( + "Could not extract the Fermi level, so that the BandStructure is not resolved" + ) return sec_energy = Energy() @@ -307,13 +326,15 @@ def parse_scc(self): for n1, n2 in band_segments_points: sec_k_band_segment = BandEnergies() sec_k_band.segment.append(sec_k_band_segment) - sec_k_band_segment.kpoints = frac_k_points[n1: n2 + 1] - sec_k_band_segment.energies = (np.array([tb_bands[n1: n2 + 1]]) + fermi_level) * ureg.eV + sec_k_band_segment.kpoints = frac_k_points[n1 : n2 + 1] + sec_k_band_segment.energies = ( + np.array([tb_bands[n1 : n2 + 1]]) + fermi_level + ) * ureg.eV sec_scc.band_structure_electronic.append(sec_k_band) def get_mainfile_keys(self, **kwargs): - filepath = kwargs.get('filename') + filepath = kwargs.get("filename") f = open(filepath) tbm = json.load(f) @@ -321,12 +342,17 @@ def get_mainfile_keys(self, **kwargs): dft_nomad_entry_id = None dft_nomad_upload_id = None - if 'type' in tbm['DFTSource'] and tbm['DFTSource']['type'].lower() == 'nomad': - dft_nomad_entry_id = tbm['DFTSource']['source']['entry_id'] - dft_nomad_upload_id = tbm['DFTSource']['source']['upload_id'] - - if dft_nomad_entry_id is not None and dft_nomad_entry_id != '' and dft_nomad_upload_id is not None and dft_nomad_upload_id != '': - return ['TB_workflow'] + if "type" in tbm["DFTSource"] and tbm["DFTSource"]["type"].lower() == "nomad": + dft_nomad_entry_id = tbm["DFTSource"]["source"]["entry_id"] + dft_nomad_upload_id = tbm["DFTSource"]["source"]["upload_id"] + + if ( + dft_nomad_entry_id is not None + and dft_nomad_entry_id != "" + and dft_nomad_upload_id is not None + and dft_nomad_upload_id != "" + ): + return ["TB_workflow"] else: return True @@ -344,17 +370,22 @@ def parse(self, filepath, archive, logger): tbm = json.load(f) f.close() except Exception: - self.logger.error('Error opening json output file.') + self.logger.error("Error opening json output file.") return self.tbm = tbm - sec_run.program = Program(name='TBStudio', version=self.tbm.get('ReleaseVersion', '')) + sec_run.program = Program( + name="TBStudio", version=self.tbm.get("ReleaseVersion", "") + ) dft_nomad_entry_id = None dft_nomad_upload_id = None - if 'type' in self.tbm['DFTSource'] and self.tbm['DFTSource']['type'].lower() == 'nomad': - dft_nomad_entry_id = self.tbm['DFTSource']['source']['entry_id'] - dft_nomad_upload_id = self.tbm['DFTSource']['source']['upload_id'] + if ( + "type" in self.tbm["DFTSource"] + and self.tbm["DFTSource"]["type"].lower() == "nomad" + ): + dft_nomad_entry_id = self.tbm["DFTSource"]["source"]["entry_id"] + dft_nomad_upload_id = self.tbm["DFTSource"]["source"]["upload_id"] self.parse_system() self.parse_method() @@ -363,12 +394,21 @@ def parse(self, filepath, archive, logger): workflow = SinglePoint() self.archive.workflow2 = workflow - if dft_nomad_entry_id is not None and dft_nomad_entry_id != '' and dft_nomad_upload_id is not None and dft_nomad_upload_id != '': + if ( + dft_nomad_entry_id is not None + and dft_nomad_entry_id != "" + and dft_nomad_upload_id is not None + and dft_nomad_upload_id != "" + ): first_principles_calculation_archive = None try: - first_principles_calculation_archive = archive.m_context.load_archive(dft_nomad_entry_id, dft_nomad_upload_id, None) + first_principles_calculation_archive = archive.m_context.load_archive( + dft_nomad_entry_id, dft_nomad_upload_id, None + ) except Exception: - self.logger.warning('TBStudio Workflow was not found.') + self.logger.warning("TBStudio Workflow was not found.") if first_principles_calculation_archive and self._child_archives: - tb_workflow_archive = self._child_archives.get('TB_workflow') - self.parse_tb_workflow(archive, first_principles_calculation_archive, tb_workflow_archive) + tb_workflow_archive = self._child_archives.get("TB_workflow") + self.parse_tb_workflow( + archive, first_principles_calculation_archive, tb_workflow_archive + ) diff --git a/electronicparsers/turbomole/metainfo/turbomole.py b/electronicparsers/turbomole/metainfo/turbomole.py index dc70a921..992c7c95 100644 --- a/electronicparsers/turbomole/metainfo/turbomole.py +++ b/electronicparsers/turbomole/metainfo/turbomole.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -33,615 +40,688 @@ class x_turbomole_section_eigenvalues_GW(MSection): - ''' + """ section for the eigenvalues of a GW calculation (at present only pertubative G0W0) - ''' + """ m_def = Section(validate=False) x_turbomole_eigenvalue_correlation_perturbativeGW = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Correlation energy at a given eigenstate from perturbative GW - ''') + """, + ) x_turbomole_eigenvalue_ExactExchange_perturbativeGW = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Exact exchange energy at given eigenstate from perturbative GW - ''') + """, + ) x_turbomole_eigenvalue_ExchangeCorrelation_perturbativeGW = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Self-energy at a given eigenstate from perturbative GW - ''') + """, + ) x_turbomole_eigenvalue_ks_ExchangeCorrelation = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" KS exchange correlation energy at a given eigenstate needed to calculate the quasi-particle energy in perturbative GW - ''') + """, + ) x_turbomole_eigenvalue_ks_GroundState = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" KS ground state energy at a given eigenstate needed in perturbative GW - ''') + """, + ) x_turbomole_eigenvalue_quasiParticle_energy = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Quasiparticle energy at a given eigenstate from perturbative GW - ''') + """, + ) x_turbomole_ExchangeCorrelation_perturbativeGW_derivation = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TODO: - ''') + """, + ) x_turbomole_Z_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TODO: - ''') + """, + ) class x_turbomole_section_functionals(MSection): - ''' + """ section for one list of XC functionals - ''' + """ m_def = Section(validate=False) x_turbomole_controlInOut_grid_integration_cells = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The integration cells - ''') + """, + ) x_turbomole_controlInOut_grid_integration = Quantity( type=str, shape=[], - description=''' + description=""" type of the used grid integration - ''') + """, + ) x_turbomole_controlInOut_grid_partition_func = Quantity( type=str, shape=[], - description=''' + description=""" Type of the partition function used - ''') + """, + ) x_turbomole_controlInOut_grid_partition_sharpness = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Sharpness of the partition function - ''') + """, + ) x_turbomole_controlInOut_grid_points_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Grid points number - ''') + """, + ) x_turbomole_controlInOut_grid_radial_grid_size = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The size of the radial grid - ''') + """, + ) x_turbomole_controlInOut_grid_radial_integration = Quantity( type=str, shape=[], - description=''' + description=""" The radial integration type - ''') + """, + ) x_turbomole_controlInOut_grid_size = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The size of the used grid - ''') + """, + ) x_turbomole_XC_functional_type = Quantity( type=str, shape=[], - description=''' + description=""" XC functional type - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_controlIn_atom_label = Quantity( type=str, shape=[], - description=''' + description=""" The label of the atoms in the system - ''') + """, + ) x_turbomole_controlIn_atom_number = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The number of atoms in the system - ''') + """, + ) x_turbomole_controlIn_basis_status = Quantity( type=str, shape=[], - description=''' + description=""" Status mean here ON or OFF - ''') + """, + ) x_turbomole_controlIn_cartesian_status = Quantity( type=str, shape=[], - description=''' + description=""" Status mean here ON or OFF - ''') + """, + ) x_turbomole_controlIn_damping_parameter_min = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_damping_parameter_start = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_damping_parameter_step = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_dipole_status = Quantity( type=str, shape=[], - description=''' + description=""" Status mean here ON or OFF - ''') + """, + ) x_turbomole_controlIn_global_status = Quantity( type=str, shape=[], - description=''' + description=""" Status mean here ON or OFF - ''') + """, + ) x_turbomole_controlIn_hessian_status = Quantity( type=str, shape=[], - description=''' + description=""" Status mean here ON or OFF - ''') + """, + ) x_turbomole_controlIn_interconversion_status = Quantity( type=str, shape=[], - description=''' + description=""" Status mean here ON or OFF - ''') + """, + ) x_turbomole_controlIn_number_of_integral_stored = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_operating_system = Quantity( type=str, shape=[], - description=''' + description=""" The kind of operating system - ''') + """, + ) x_turbomole_controlIn_pople_kind = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_scf_conv = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_scf_iter_limit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_scfintunit_file = Quantity( type=str, shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_scfintunit_size = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_scfintunit_unit = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_controlIn_symmetry = Quantity( type=str, shape=[], - description=''' + description=""" The given symmetry of the system - ''') + """, + ) x_turbomole_controlIn_time_for_integral_calc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" - - ''') + """, + ) x_turbomole_dft_d3_version = Quantity( type=str, shape=[], - description=''' + description=""" version of the DFT-D3 van-der-Waals correction that is used - ''') + """, + ) x_turbomole_functional_type_correlation = Quantity( type=str, shape=[], - description=''' + description=""" type of the used correlation functional - ''') + """, + ) x_turbomole_functional_type_exchange = Quantity( type=str, shape=[], - description=''' + description=""" type of the used exchange functional - ''') + """, + ) x_turbomole_geometry_optimization_cycle_index = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" By default Turbomole only keeps the output of the final iteration once the geometry has been converged, thus the entire optimization trajectory cannot be rebuild in most cases. Instead, this value contains the optimization cycle index to indicate how many iterations have preceded this one. - ''') + """, + ) x_turbomole_gw_approximation = Quantity( type=str, shape=[], - description=''' + description=""" The employed GW approximation. - ''') + """, + ) x_turbomole_gw_eta_factor = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" [TO BE VERIFIED]Infinitesimal complex energy shift. Negative value switches to calculating at that value but extrapolating to 0 in linear approximation. - ''') + """, + ) x_turbomole_gw_use_rpa_response = Quantity( type=bool, shape=[], - description=''' + description=""" If true, the pure RPA response function is calculated. Otherwise, the TDDFT response function is calculated and used to screen the coulomb interaction. - ''') + """, + ) x_turbomole_uhfmo_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of UHF molecular orbital - ''') + """, + ) x_turbomole_section_functionals = SubSection( - sub_section=SectionProxy('x_turbomole_section_functionals'), - repeats=True) + sub_section=SectionProxy("x_turbomole_section_functionals"), repeats=True + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_damping_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Damping of the two-electron contributions to Fock matrix in the present SCF iteration - ''') + """, + ) x_turbomole_delta_eigenvalues = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" change of the eigenvalues in the current SCF iteration - ''') + """, + ) x_turbomole_energy_1electron_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Total energy contribution from one-electron integrals - ''') + """, + ) x_turbomole_energy_2electron_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Total energy contribution from two-electron integrals - ''') + """, + ) x_turbomole_norm_diis_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Norm of the DIIS error in an SCF-iteration - ''') + """, + ) x_turbomole_norm_fia_orbital_scf_iteration = Quantity( type=str, shape=[], - description=''' + description=""" orbital with the largest residual norm for the Fia block in this iteration - ''') + """, + ) x_turbomole_norm_fia_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Maximal resid. norm for Fia-block in an SCF-iteration - ''') + """, + ) x_turbomole_norm_fock_orbital_scf_iteration = Quantity( type=str, shape=[], - description=''' + description=""" orbital with the largest residual Fock norm in this iteration - ''') + """, + ) x_turbomole_norm_fock_scf_iteration = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Maximal resid. fock norm in an SCF-iteration - ''') + """, + ) class BandEnergies(runschema.calculation.BandEnergies): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_eigenvalues_irreducible_representation = Quantity( type=np.dtype(np.int32), - shape=['number_of_spin_channels', 'number_of_eigenvalues_kpoints', 'number_of_eigenvalues'], - description=''' + shape=[ + "number_of_spin_channels", + "number_of_eigenvalues_kpoints", + "number_of_eigenvalues", + ], + description=""" Irreducible representation the eigenstates belong to. - ''') + """, + ) x_turbomole_section_eigenvalues_GW = SubSection( - sub_section=SectionProxy('x_turbomole_section_eigenvalues_GW'), - repeats=True) + sub_section=SectionProxy("x_turbomole_section_eigenvalues_GW"), repeats=True + ) class GeometryOptimizationMethod(simulationworkflowschema.GeometryOptimizationMethod): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_geometry_optimization_geometry_change_rms = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" geometry optimization convergence criterion - Root Mean Square of displacements - ''') + """, + ) x_turbomole_geometry_optimization_threshold_force_rms = Quantity( type=np.dtype(np.float64), shape=[], - unit='newton', - description=''' + unit="newton", + description=""" geometry optimization convergence criterion - Root Mean Square of forces - ''') + """, + ) x_turbomole_geometry_optimization_trustregion_initial = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" geometry optimization trust region - initial radius - ''') + """, + ) x_turbomole_geometry_optimization_trustregion_max = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" geometry optimization trust region - maximum radius - ''') + """, + ) x_turbomole_geometry_optimization_trustregion_min = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" geometry optimization trust region - minimum radius - ''') + """, + ) class Calculation(runschema.calculation.Calculation): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_module = Quantity( type=str, shape=[], - description=''' + description=""" The name of the Turbomole module used for this single configuration calculation. - ''') + """, + ) x_turbomole_potential_energy_final = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" Final potential energy - ''') + """, + ) x_turbomole_vibrations_infrared_activity = Quantity( type=bool, - shape=['x_turbomole_vibrations_num_modes'], - description=''' + shape=["x_turbomole_vibrations_num_modes"], + description=""" IR activicity for vibration modes - ''') + """, + ) x_turbomole_vibrations_raman_activity = Quantity( type=bool, - shape=['x_turbomole_vibrations_num_modes'], - description=''' + shape=["x_turbomole_vibrations_num_modes"], + description=""" Raman activicity for vibration modes - ''') + """, + ) x_turbomole_vibrations_intensities = Quantity( type=np.dtype(np.float64), - shape=['x_turbomole_vibrations_num_modes'], - description=''' + shape=["x_turbomole_vibrations_num_modes"], + description=""" IR Intensity for each vibrational normal mode - ''') + """, + ) x_turbomole_vibrations_mode_energies = Quantity( type=np.dtype(np.float64), - shape=['x_turbomole_vibrations_num_modes'], - description=''' + shape=["x_turbomole_vibrations_num_modes"], + description=""" Excitation energy associated with the vibrational normal modes. - ''') + """, + ) x_turbomole_vibrations_normal_modes = Quantity( type=np.dtype(np.float64), - shape=['x_turbomole_vibrations_num_modes', 'number_of_atoms', 3], - description=''' + shape=["x_turbomole_vibrations_num_modes", "number_of_atoms", 3], + description=""" Nuclear displacements for each vibrational normal mode - ''') + """, + ) x_turbomole_vibrations_num_modes = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Number of vibrational normal modes - ''') + """, + ) x_turbomole_virial_theorem = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Final value from the virial theorem - ''') + """, + ) x_turbomole_wave_func_norm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Final Wave Function Norm - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_nodename = Quantity( type=str, shape=[], - description=''' + description=""" compute node - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_turbomole_pceem_charges = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Charges of the point charges in the unit cell used by the PCEEM embedding model - ''') + """, + ) x_turbomole_pceem_max_multipole = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Maximum multipole moment used in the PCEEM embedding - ''') + """, + ) x_turbomole_pceem_min_separation_cells = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Minimum separation between cells in PCEEM embedding for periodic fast multipole treatment - ''') + """, + ) x_turbomole_pceem_multipole_precision = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Multipole precision parameter for PCEEM embedding - ''') + """, + ) diff --git a/electronicparsers/turbomole/parser.py b/electronicparsers/turbomole/parser.py index ee341087..28b6ddec 100644 --- a/electronicparsers/turbomole/parser.py +++ b/electronicparsers/turbomole/parser.py @@ -27,24 +27,34 @@ from nomad.parsing.file_parser import TextParser, Quantity, FileParser from runschema.run import Run, Program, TimeRun from runschema.method import ( - AtomParameters, Functional, Method, Electronic, BasisSet, - BasisSetAtomCentered, Smearing, XCFunctional, DFT, BasisSetContainer, -) -from runschema.system import ( - System, Atoms + AtomParameters, + Functional, + Method, + Electronic, + BasisSet, + BasisSetAtomCentered, + Smearing, + XCFunctional, + DFT, + BasisSetContainer, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Energy, EnergyEntry, Forces, ForcesEntry, - Thermodynamics, BandEnergies, ScfIteration -) -from simulationworkflowschema import ( - GeometryOptimization, GeometryOptimizationMethod + Calculation, + Energy, + EnergyEntry, + Forces, + ForcesEntry, + Thermodynamics, + BandEnergies, + ScfIteration, ) +from simulationworkflowschema import GeometryOptimization, GeometryOptimizationMethod from .metainfo import turbomole # pylint: disable=unused-import -MOL = 6.02214076E23 +MOL = 6.02214076e23 class AuxiliaryOutParser(FileParser): @@ -68,7 +78,7 @@ def matrix(self): value = line.group(1).split() if int(value[0]) > len(self._file_handler): self._file_handler.append([]) - self._file_handler[-1].extend(value[self._start:]) + self._file_handler[-1].extend(value[self._start :]) return self._file_handler def parse(self, key=None): @@ -81,18 +91,18 @@ def __init__(self): def init_quantities(self): self._quantities = [ + Quantity("irrep", r"irrep\s*([\w ]+\n)"), Quantity( - 'irrep', - r'irrep\s*([\w ]+\n)' + "eigenvalues", + r"eigenvalues H\s*([\d\.\-\+EeDd ]+)\n", + dtype=float, + repeats=True, + str_operation=lambda x: x.replace("D", "E").replace("E", "e").split(), ), Quantity( - 'eigenvalues', - r'eigenvalues H\s*([\d\.\-\+EeDd ]+)\n', - dtype=float, repeats=True, - str_operation=lambda x: x.replace('D', 'E').replace('E', 'e').split()), - Quantity( - 'occupation', - r'occupation\s*([\d\.\- ]*\n)', dtype=float, repeats=True)] + "occupation", r"occupation\s*([\d\.\- ]*\n)", dtype=float, repeats=True + ), + ] class ControlParser(TextParser): @@ -101,20 +111,26 @@ def __init__(self): def init_quantities(self): def str_to_drvopt(val_in): - val = [v.split() for v in val_in.strip().split('\n')] + val = [v.split() for v in val_in.strip().split("\n")] return {v[0].strip(): v[1] for v in val} # TODO add more quantities self._quantities = [ - Quantity('operating_system', r'operating system\s*(\S+)'), - Quantity('scf_iter_limit', r'scfiterlimit\s*(\S+)'), - Quantity('scf_conv', r'scfconv\s*(\S+)'), - Quantity('time_for_integral_calc', r'thime\s*(\S+)'), - Quantity('pople_kind', r'pople\s*(\S+)'), - Quantity('damping_parameter', r'scfdamp\s*start=\s*(\S+)\s*step=\s*(\S+)\s*min=\s*(\S+)'), - Quantity('scfint', r'unit=\s*(\S+)\s*size=\s*(\S+)\s*file=\s*(\S+)\s*'), - Quantity('interconversion_status', r'interconversion\s*(\S+)'), - Quantity('drvopt', r'drvopt\s*([\s\S]+?)\n *\$', str_operation=str_to_drvopt)] + Quantity("operating_system", r"operating system\s*(\S+)"), + Quantity("scf_iter_limit", r"scfiterlimit\s*(\S+)"), + Quantity("scf_conv", r"scfconv\s*(\S+)"), + Quantity("time_for_integral_calc", r"thime\s*(\S+)"), + Quantity("pople_kind", r"pople\s*(\S+)"), + Quantity( + "damping_parameter", + r"scfdamp\s*start=\s*(\S+)\s*step=\s*(\S+)\s*min=\s*(\S+)", + ), + Quantity("scfint", r"unit=\s*(\S+)\s*size=\s*(\S+)\s*file=\s*(\S+)\s*"), + Quantity("interconversion_status", r"interconversion\s*(\S+)"), + Quantity( + "drvopt", r"drvopt\s*([\s\S]+?)\n *\$", str_operation=str_to_drvopt + ), + ] class OutParser(TextParser): @@ -122,29 +138,31 @@ def __init__(self): super().__init__() def init_quantities(self): - re_float = r'[\d\.\-\+eEDd]+' + re_float = r"[\d\.\-\+eEDd]+" def str_to_atomic_info(val_in): - vals = [v.split() for v in val_in.strip().split('\n')] + vals = [v.split() for v in val_in.strip().split("\n")] # first two are 'atomic', 'coordinates' - if vals[0][0] == '1': + if vals[0][0] == "1": vals = np.transpose(vals) info = dict( - coordinates=np.array(vals[-3:].T, dtype=float) * ureg.bohr, atom=vals[1]) + coordinates=np.array(vals[-3:].T, dtype=float) * ureg.bohr, + atom=vals[1], + ) else: keys = vals[0][2:] vals = np.transpose(vals[1:]) info = dict(coordinates=np.array(vals[:3].T, dtype=float) * ureg.bohr) for n, key in enumerate(keys): info[key] = vals[n + 3] - info['atom'] = [v.title() for v in info.get('atom', [])] + info["atom"] = [v.title() for v in info.get("atom", [])] return info def str_to_time(val_in): - time = 0. - multipliers = {'d': 24 * 3600, 'h': 3600, 'm': 60, 's': 1} + time = 0.0 + multipliers = {"d": 24 * 3600, "h": 3600, "m": 60, "s": 1} for unit, multiplier in multipliers.items(): - match = re.search(rf'([\d\.]+) {unit}', val_in) + match = re.search(rf"([\d\.]+) {unit}", val_in) if match: time += float(match.group(1)) * multiplier if not time: @@ -155,13 +173,13 @@ def str_to_time(val_in): return time def str_to_hessian(val_in): - re_row = re.compile(r'(\d*)\s*\w*\s*d(?:x|y|z) +([\d\.\- ]+\d)') - re_value = re.compile(r'\-*\d+\.\d+') + re_row = re.compile(r"(\d*)\s*\w*\s*d(?:x|y|z) +([\d\.\- ]+\d)") + re_value = re.compile(r"\-*\d+\.\d+") n_axis = 3 hessian = [] row_n = -1 - for val in val_in.strip().split('\n'): + for val in val_in.strip().split("\n"): row = re.search(re_row, val) if not row: continue @@ -182,17 +200,19 @@ def str_to_hessian(val_in): hessian = hessian + hessian.T - np.diag(hessian.diagonal()) n_atoms = len(hessian) // n_axis hessian = np.reshape(hessian, (n_atoms, n_axis, n_atoms, n_axis)) - return np.transpose(hessian, axes=(0, 2, 1, 3)) * ureg.hartree / ureg.bohr**2 + return ( + np.transpose(hessian, axes=(0, 2, 1, 3)) * ureg.hartree / ureg.bohr**2 + ) # TODO integrate with hessian def str_to_normal_modes_vibrational_frequencies(val_in): - re_row = re.compile(r'(\d*)\s*\w*\s+(?:x|y|z) +([\d\.\- ]+\d)') - re_value = re.compile(r'\-*\d+\.\d+') + re_row = re.compile(r"(\d*)\s*\w*\s+(?:x|y|z) +([\d\.\- ]+\d)") + re_value = re.compile(r"\-*\d+\.\d+") n_axis = 3 row_n = -1 normal_modes = [] - for val in val_in.strip().split('\n'): + for val in val_in.strip().split("\n"): row = re.search(re_row, val) if not row: continue @@ -209,7 +229,8 @@ def str_to_normal_modes_vibrational_frequencies(val_in): normal_modes = np.array(normal_modes, dtype=float) n_modes = np.size(normal_modes) // (n_atoms * n_axis) normal_modes = np.transpose( - np.reshape(normal_modes, (n_atoms, n_axis, n_modes)), axes=(2, 0, 1)) + np.reshape(normal_modes, (n_atoms, n_axis, n_modes)), axes=(2, 0, 1) + ) def get_values(pattern, dtype=str): values_str = re.findall(pattern, val_in) @@ -221,552 +242,790 @@ def get_values(pattern, dtype=str): values.extend(value.split()) return np.array(values, dtype=dtype) - frequencies = get_values(r'frequency\s+([\d\.\- ]+\d)', float) + frequencies = get_values(r"frequency\s+([\d\.\- ]+\d)", float) - infrared = [v == 'YES' for v in get_values(r'IR\s+([YES\- ]+)')] + infrared = [v == "YES" for v in get_values(r"IR\s+([YES\- ]+)")] - raman = [v == 'YES' for v in get_values(r'RAMAN\s+([YES\- ]+)')] + raman = [v == "YES" for v in get_values(r"RAMAN\s+([YES\- ]+)")] - intensity = get_values(r'intensity \(km/mol\)\s+([\d\.\- ]+\d)', float) + intensity = get_values(r"intensity \(km/mol\)\s+([\d\.\- ]+\d)", float) return dict( - normal_modes=normal_modes, mode_energies=frequencies, infrared_activity=infrared, - raman_activity=raman, intensities=intensity) + normal_modes=normal_modes, + mode_energies=frequencies, + infrared_activity=infrared, + raman_activity=raman, + intensities=intensity, + ) def str_to_energy_gradient(val_in): - re_row = re.compile(r'dE/d((?:x|y|z)) +([\d\.\-\+ Dd]+\d)') - re_value = re.compile(r'\-*\d+\.\d+D*d*\-*\+*\d*') + re_row = re.compile(r"dE/d((?:x|y|z)) +([\d\.\-\+ Dd]+\d)") + re_value = re.compile(r"\-*\d+\.\d+D*d*\-*\+*\d*") gradients = [] - for val in val_in.strip().split('\n'): + for val in val_in.strip().split("\n"): row = re.search(re_row, val) if not row: continue - row_n = ['x', 'y', 'z'].index(row.group(1)) + row_n = ["x", "y", "z"].index(row.group(1)) if len(gradients) < row_n + 1: gradients.append([]) - gradients[row_n].extend([ - v.replace('D', 'E').replace('d', 'e') for v in re_value.findall(row.group(2))]) + gradients[row_n].extend( + [ + v.replace("D", "E").replace("d", "e") + for v in re_value.findall(row.group(2)) + ] + ) gradients = np.array(gradients, dtype=float) return np.transpose(gradients) * (ureg.hartree / ureg.bohr) def str_to_iteration(val_in): - val = val_in.split('\n') - keys = [v.strip() for v in val[0].split(' ') if v] + val = val_in.split("\n") + keys = [v.strip() for v in val[0].split(" ") if v] # replace key with metainfo name - units = {'energy_total': ureg.hartree} + units = {"energy_total": ureg.hartree} for n in range(len(keys)): - if keys[n] == 'CCSD energy': - keys[n] = 'energy_total' - elif keys[n] == 'wall': - keys[n] = 'time' + if keys[n] == "CCSD energy": + keys[n] = "energy_total" + elif keys[n] == "wall": + keys[n] = "time" val = [v.split() for v in val[1:]] - val = np.transpose(np.array([v for v in val if len(v) == len(keys)], dtype=float)) - return [{key: val[n][i] * units.get( - key, 1.0) for n, key in enumerate(keys)} for i in range(len(val[0]))] + val = np.transpose( + np.array([v for v in val if len(v) == len(keys)], dtype=float) + ) + return [ + {key: val[n][i] * units.get(key, 1.0) for n, key in enumerate(keys)} + for i in range(len(val[0])) + ] def str_to_embedding_coordinates(val_in): - val = [v.split() for v in val_in.strip().split('\n')] + val = [v.split() for v in val_in.strip().split("\n")] val = np.transpose([v for v in val if len(v) >= 4]) label = [v.title() for v in val[0]] charge = val[4] if len(val) > 4 else [0] * len(label) return dict( - label=label, coordinates=np.array(val[1:4].T, dtype=float) * ureg.bohr, - charge=np.array(charge, dtype=float) * ureg.elementary_charge) + label=label, + coordinates=np.array(val[1:4].T, dtype=float) * ureg.bohr, + charge=np.array(charge, dtype=float) * ureg.elementary_charge, + ) def str_to_scf_energies(val_in): - val = [float(v) for v in val_in.strip().replace('D', 'E').split()] + val = [float(v) for v in val_in.strip().replace("D", "E").split()] return dict( energy_total=val[1] * ureg.hartree, x_turbomole_energy_1electron_scf_iteration=val[2] * ureg.hartree, - x_turbomole_energy_2electron_scf_iteration=val[3] * ureg.hartree) + x_turbomole_energy_2electron_scf_iteration=val[3] * ureg.hartree, + ) def str_to_norm(val_in): - name, val = val_in.split('=') + name, val = val_in.split("=") val = val.split() - name = 'norm_fia' if 'Fia' in name else 'norm_fock' - return {name: float(val[0].replace('D', 'E')), '%s_orbital' % name: val[1]} + name = "norm_fia" if "Fia" in name else "norm_fock" + return {name: float(val[0].replace("D", "E")), "%s_orbital" % name: val[1]} def str_to_fon(val_in): - val = [v.split('=') for v in val_in.split('\n')] + val = [v.split("=") for v in val_in.split("\n")] return {v[0].strip(): float(v[1]) for v in val if len(v) == 2} def str_to_energies(val_in): - re_energy = re.compile(rf'([\w\(\) ]+)\s*(?:=|:)\s*({re_float})') + re_energy = re.compile(rf"([\w\(\) ]+)\s*(?:=|:)\s*({re_float})") energies = dict() - for val in val_in.strip().split('\n'): + for val in val_in.strip().split("\n"): val = re_energy.search(val) if val: key = val.group(1).strip() - energies[key] = float(val.group(2)) * ureg.hartree if 'energy' in key else float(val.group(2)) + energies[key] = ( + float(val.group(2)) * ureg.hartree + if "energy" in key + else float(val.group(2)) + ) return energies def str_to_gw_parameters(val_in): - val = [v.rsplit(' ', 1) for v in val_in.strip().split('\n')] + val = [v.rsplit(" ", 1) for v in val_in.strip().split("\n")] parameters = dict() for v in val: - if v[1] in ['T', 'F']: - v[1] = v[1] == 'T' + if v[1] in ["T", "F"]: + v[1] = v[1] == "T" parameters[v[0].strip()] = v[1] return parameters def str_to_qp_states(val_in): - val = [v.split() for v in val_in.strip().split('\n')] - val = np.transpose(np.array([v[1:] for v in val if len(v) == 9], dtype=float)) + val = [v.split() for v in val_in.strip().split("\n")] + val = np.transpose( + np.array([v[1:] for v in val if len(v) == 9], dtype=float) + ) keys = [ - 'eigenvalue_ks_GroundState', 'eigenvalue_quasiParticle_energy', - 'eigenvalue_ExchangeCorrelation_perturbativeGW', 'eigenvalue_ExactExchange_perturbativeGW', - 'eigenvalue_correlation_perturbativeGW', 'eigenvalue_ks_ExchangeCorrelation', - 'Z_factor', 'ExchangeCorrelation_perturbativeGW_derivation'] + "eigenvalue_ks_GroundState", + "eigenvalue_quasiParticle_energy", + "eigenvalue_ExchangeCorrelation_perturbativeGW", + "eigenvalue_ExactExchange_perturbativeGW", + "eigenvalue_correlation_perturbativeGW", + "eigenvalue_ks_ExchangeCorrelation", + "Z_factor", + "ExchangeCorrelation_perturbativeGW_derivation", + ] states = dict() for n, key in enumerate(keys): states[key] = val[n] return states def str_to_options(val_in): - val = [v.split(':', 1) for v in val_in.strip().split('\n')] + val = [v.split(":", 1) for v in val_in.strip().split("\n")] return {v[0].strip(): v[1].strip() for v in val if len(v) == 2} def str_to_convergence(val_in): - re_value = re.compile(r'([\w ]+)\s*(yes|no)\s*') + re_value = re.compile(r"([\w ]+)\s*(yes|no)\s*") convergence = dict() - for val in val_in.split('\n'): + for val in val_in.split("\n"): val = re_value.search(val) if val: - convergence[val.group(1).strip()] = val.group(2) == 'yes' + convergence[val.group(1).strip()] = val.group(2) == "yes" return convergence def str_to_thermodynamics(val_in): - keys, vals = val_in.strip().split('\n') + keys, vals = val_in.strip().split("\n") # we could have taken units from prinout but some quantities do not have units keys = [k.strip().lower() for k in keys.split()] vals = [float(v) for v in vals.split()] units = { - 't': ureg.K, 'p': ureg.MPa, 'chem.pot.': ureg.kJ / MOL, 'energy': ureg.kJ / MOL, - 'entropy': ureg.kJ / MOL, 'cv': ureg.kJ / ureg.K / MOL, 'cp': ureg.kJ / ureg.K / MOL, - 'enthalpy': ureg.kJ / MOL} + "t": ureg.K, + "p": ureg.MPa, + "chem.pot.": ureg.kJ / MOL, + "energy": ureg.kJ / MOL, + "entropy": ureg.kJ / MOL, + "cv": ureg.kJ / ureg.K / MOL, + "cp": ureg.kJ / ureg.K / MOL, + "enthalpy": ureg.kJ / MOL, + } vals = {key: vals[n] * units.get(key, 1.0) for n, key in enumerate(keys)} # we calculate entropy energy correction - if 'entropy' in vals and 't' in vals: - vals['entropy'] *= vals['t'].magnitude + if "entropy" in vals and "t" in vals: + vals["entropy"] *= vals["t"].magnitude return vals iteration_quantities = [ Quantity( - 'damping_scf_iteration', - rf'current damping\s*:*=*\s*({re_float})', - str_operation=lambda x: 1.0 / (1.0 + float(x)), convert=False), + "damping_scf_iteration", + rf"current damping\s*:*=*\s*({re_float})", + str_operation=lambda x: 1.0 / (1.0 + float(x)), + convert=False, + ), Quantity( - 'energies', - r'ATION\s*ENERGY.+\s*(\d*\s*.+)', - str_operation=str_to_scf_energies, convert=False), + "energies", + r"ATION\s*ENERGY.+\s*(\d*\s*.+)", + str_operation=str_to_scf_energies, + convert=False, + ), Quantity( - 'energy_XC', - rf'Exc\s*=\s*({re_float})', - dtype=float, unit=ureg.hartree), + "energy_XC", rf"Exc\s*=\s*({re_float})", dtype=float, unit=ureg.hartree + ), Quantity( - 'norm_diis_scf_iteration', - rf'Norm of current diis error\s*:\s*({re_float})', dtype=float), + "norm_diis_scf_iteration", + rf"Norm of current diis error\s*:\s*({re_float})", + dtype=float, + ), Quantity( - 'norm_fia', - rf'max\. resid\. (norm for Fia\-block=\s*{re_float})\s*for orbital\s*(\w+)', - str_operation=str_to_norm, convert=False), + "norm_fia", + rf"max\. resid\. (norm for Fia\-block=\s*{re_float})\s*for orbital\s*(\w+)", + str_operation=str_to_norm, + convert=False, + ), Quantity( - 'norm_fock', - rf'max\. resid\. (fock norm\s*=\s*{re_float})\s*for orbital\s*(\w+)', - str_operation=str_to_norm, convert=False), + "norm_fock", + rf"max\. resid\. (fock norm\s*=\s*{re_float})\s*for orbital\s*(\w+)", + str_operation=str_to_norm, + convert=False, + ), Quantity( - 'delta_eigenvalues', - rf'Delta Eig\.\s*=\s*({re_float})', dtype=float, unit=ureg.eV), + "delta_eigenvalues", + rf"Delta Eig\.\s*=\s*({re_float})", + dtype=float, + unit=ureg.eV, + ), Quantity( - 'fon', - r'FON Calculation\s*\-+\s*([\s\S]+?\-{50})', - str_operation=str_to_fon, convert=False)] + "fon", + r"FON Calculation\s*\-+\s*([\s\S]+?\-{50})", + str_operation=str_to_fon, + convert=False, + ), + ] scf_quantities = [ Quantity( - 'iteration', - rf'(current damping\s*:\s*{re_float}\s*ITERATION[\s\S]+?)\n\s*\n', - repeats=True, sub_parser=TextParser(quantities=iteration_quantities)), + "iteration", + rf"(current damping\s*:\s*{re_float}\s*ITERATION[\s\S]+?)\n\s*\n", + repeats=True, + sub_parser=TextParser(quantities=iteration_quantities), + ), # alternative format Quantity( - 'iteration', - r'(ATION\s*ENERGY[\s\S]+?)(?:\n *\n *ITER|End of SCF iterations)', - repeats=True, sub_parser=TextParser(quantities=iteration_quantities)), + "iteration", + r"(ATION\s*ENERGY[\s\S]+?)(?:\n *\n *ITER|End of SCF iterations)", + repeats=True, + sub_parser=TextParser(quantities=iteration_quantities), + ), Quantity( - 'number_of_scf_iterations', - r'convergence criteria satisfied after\s*(\d+)\s*iterations', - dtype=int)] + "number_of_scf_iterations", + r"convergence criteria satisfied after\s*(\d+)\s*iterations", + dtype=int, + ), + ] module_quantities = [ Quantity( - 'atomic_info', - r'Atomic coordinate, charge and isotope? information\s*\|\s*\+\-+\+\s*' - r'([\s\S]+?center of nuclear charge.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'info', - r'(atomic\s+coordinates\s+atom(?:\s+shells)?\s+charge(?:\s+pseudo)?\s+isotop\s*)' - r'([\s\S]+?)\n\s*\n', str_operation=str_to_atomic_info), - Quantity( - 'center_of_nuclear_mass', - rf'center of nuclear mass\s*:\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float), - Quantity( - 'center_of_nuclear_charge', - rf'center of nuclear charge\s*:\s*({re_float})\s*({re_float})\s*({re_float})', - dtype=float)])), - Quantity( - 'basis_set_info', - r'(\w* (?:basis set|BASIS SET) information\s*[\s\S]+?)\n\s*\n *\n', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'auxiliary', - r'(\w*) (?:basis|BASIS)', - str_operation=lambda x: 'auxiliary' in x.lower(), convert=False), - Quantity( - 'spherical', - r'(with spherical basis functions)', - str_operation=lambda x: True, convert=False), - Quantity( - 'atom', - r'(\w*)\s*(\d+)\s*(\d+)\s*(\d+)\s*([\w\-]+)\s*\[([\w\|]+)\]', - repeats=True), - Quantity( - 'total', - r'total number of (.+?):\s*(\d+)', - repeats=True, str_operation=lambda x: x.rsplit(' ', 1))])), - Quantity( - 'mo_occupation', - r'mo occupation\s*:\s*irrep\s*mo\'s\s*occupied\s*([\s\S]+?)\n\s*\n', - str_operation=lambda x: [v.split() for v in x.strip().split('\n')]), - Quantity( - 'wavefunction_model', - r'([w ]+)closed shell calculation for the wavefunction models:\s*(\S+)'), - Quantity( - 'dft_functional', - r'density functional\s*\-+(\s*[\s\S]+?)\n\s*\n *\n', sub_parser=TextParser(quantities=[ - Quantity( - 'functional', - r'(?:functional\s*:\s*(.+)|\n *(\S+)\s*(?:meta-GGA |hybrid )*functional\n)'), - Quantity('exchange', r'exchange:\s*(.+)', flatten=False), - Quantity('correlation', r'correlation:\s*(.+)', flatten=False)])), - Quantity( - 'embedding_point_charges', - r'EMBEDDING IN PERIODIC POINT CHARGES\s*\|\s*.+\s*.+\s*' - r'([\s\S]+?)\n\s*\n *\n', sub_parser=TextParser(quantities=[ - Quantity( - 'pceem_max_multipole', - r'Maximum multipole moment used\s*:\s*(\d+)', dtype=int), - Quantity( - 'pceem_multipole_precision', - rf'Multipole precision parameter\s*:\s*({re_float})', dtype=float), - Quantity( - 'pceem_min_separation_cells', - rf'Minimum separation between cells\s*:\s*({re_float})', dtype=float), - Quantity( - 'lattice_vectors', - r'Cell vectors \(au\):\s*(.+)\s*(.+)\s*(.+)', dtype=float, unit=ureg.bohr), - Quantity( - 'redefined', - r'Redefined unit cell content \(au\):\s*.+\s*([\s\S]+?)\n\s*\n', - str_operation=str_to_embedding_coordinates, convert=False), - Quantity( - 'pc_cluster', - r'PC cluster transformed to the center of cell 0 \(au\):\s*.+\s*([\s\S]+?)\n\s*\n', - str_operation=str_to_embedding_coordinates, convert=False), - Quantity( - 'qm_cluster', - r'QM cluster transformed to the center of cell 0 \(au\):\s*.+\s*([\s\S]+?)\n\s*\n', - str_operation=str_to_embedding_coordinates, convert=False)])), - Quantity( - 'dft_d3', - r'(DFTD3 V[\d\.]+ Rev \d+[\s\S]+?)\n\s*\n *\n', - sub_parser=TextParser(quantities=[ - Quantity('version', r'DFTD3 V([\d\.]+ Rev \d+)', flatten=False), - Quantity( - 'energy_van_der_Waals', - rf'Edisp /kcal,au:\s*\S+\s*({re_float})', dtype=float, unit=ureg.hartree)])), - Quantity( - 'uhf', - r'UHF mod.+? switched (on) !', - str_operation=lambda x: x == 'on', convert=False), - Quantity( - 'smearing', - r'(\w+ smearing switched on[\s\S]+?)\n\s*\n', - sub_parser=TextParser(quantities=[ - Quantity('kind', r'(\w+) smearing', str_operation=lambda x: x.lower()), - Quantity( - 'width', - rf'Final electron temperature:\s*({re_float})', dtype=float)])), - Quantity( - 'energy_reference_wavefunction', - rf'Energy of reference wave function is\s*({re_float})', dtype=float), - Quantity( - 'energies', - r'(total energy\s*=[\s\S]+?)\n\s*\n', - str_operation=str_to_energies, convert=False), - Quantity( - 'self_consistency', - r'OPTIMIZATION OF THE GROUND STATE CLUSTER AMPLITUDES\s*\*\s*\*\s*\*\s*\*+' - r'([\s\S]+?)\*{50}', - sub_parser=TextParser(quantities=[ - Quantity( - 'iteration', - r'(Iter\.\s+CCSD energy[\s\S]+?)(?:CC equations|\n *\n)', - str_operation=str_to_iteration), - Quantity( - 'convergence', - r'(?:converged in (\d+) iterations|within (\d+) cycles)', dtype=int)])), - Quantity( - 'energies_MP2', - r'(RHF\s*energy[\s\S]+?SOS\-MP2 energy.+)', str_operation=str_to_energies), - Quantity( - 'energies_CCSD', - r'(RHF\s*energy[\s\S]+?Final CCSD energy.*)', str_operation=str_to_energies), - Quantity( - 'energies_CCSD(T0)', - r'(RHF\s*energy[\s\S]+?Final CCSD\(T0\) energy.+)', str_operation=str_to_energies), - Quantity( - 'energy_gradient', - r'cartesian gradient of the energy \(hartree/bohr\)\s*\-+\s*([\s\S]+?)' - r'calculation of the energy gradient finished', - str_operation=str_to_energy_gradient, convert=False), - Quantity( - 'eigenvalue_file', - r'orbitals \$\S+\s*will be written to file (\w+)', repeats=True), - Quantity( - 'wall_time', - rf'total\s*wall\-time\s*:(.+)', - str_operation=str_to_time, convert=False)] + "atomic_info", + r"Atomic coordinate, charge and isotope? information\s*\|\s*\+\-+\+\s*" + r"([\s\S]+?center of nuclear charge.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "info", + r"(atomic\s+coordinates\s+atom(?:\s+shells)?\s+charge(?:\s+pseudo)?\s+isotop\s*)" + r"([\s\S]+?)\n\s*\n", + str_operation=str_to_atomic_info, + ), + Quantity( + "center_of_nuclear_mass", + rf"center of nuclear mass\s*:\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + ), + Quantity( + "center_of_nuclear_charge", + rf"center of nuclear charge\s*:\s*({re_float})\s*({re_float})\s*({re_float})", + dtype=float, + ), + ] + ), + ), + Quantity( + "basis_set_info", + r"(\w* (?:basis set|BASIS SET) information\s*[\s\S]+?)\n\s*\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "auxiliary", + r"(\w*) (?:basis|BASIS)", + str_operation=lambda x: "auxiliary" in x.lower(), + convert=False, + ), + Quantity( + "spherical", + r"(with spherical basis functions)", + str_operation=lambda x: True, + convert=False, + ), + Quantity( + "atom", + r"(\w*)\s*(\d+)\s*(\d+)\s*(\d+)\s*([\w\-]+)\s*\[([\w\|]+)\]", + repeats=True, + ), + Quantity( + "total", + r"total number of (.+?):\s*(\d+)", + repeats=True, + str_operation=lambda x: x.rsplit(" ", 1), + ), + ] + ), + ), + Quantity( + "mo_occupation", + r"mo occupation\s*:\s*irrep\s*mo\'s\s*occupied\s*([\s\S]+?)\n\s*\n", + str_operation=lambda x: [v.split() for v in x.strip().split("\n")], + ), + Quantity( + "wavefunction_model", + r"([w ]+)closed shell calculation for the wavefunction models:\s*(\S+)", + ), + Quantity( + "dft_functional", + r"density functional\s*\-+(\s*[\s\S]+?)\n\s*\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "functional", + r"(?:functional\s*:\s*(.+)|\n *(\S+)\s*(?:meta-GGA |hybrid )*functional\n)", + ), + Quantity("exchange", r"exchange:\s*(.+)", flatten=False), + Quantity("correlation", r"correlation:\s*(.+)", flatten=False), + ] + ), + ), + Quantity( + "embedding_point_charges", + r"EMBEDDING IN PERIODIC POINT CHARGES\s*\|\s*.+\s*.+\s*" + r"([\s\S]+?)\n\s*\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "pceem_max_multipole", + r"Maximum multipole moment used\s*:\s*(\d+)", + dtype=int, + ), + Quantity( + "pceem_multipole_precision", + rf"Multipole precision parameter\s*:\s*({re_float})", + dtype=float, + ), + Quantity( + "pceem_min_separation_cells", + rf"Minimum separation between cells\s*:\s*({re_float})", + dtype=float, + ), + Quantity( + "lattice_vectors", + r"Cell vectors \(au\):\s*(.+)\s*(.+)\s*(.+)", + dtype=float, + unit=ureg.bohr, + ), + Quantity( + "redefined", + r"Redefined unit cell content \(au\):\s*.+\s*([\s\S]+?)\n\s*\n", + str_operation=str_to_embedding_coordinates, + convert=False, + ), + Quantity( + "pc_cluster", + r"PC cluster transformed to the center of cell 0 \(au\):\s*.+\s*([\s\S]+?)\n\s*\n", + str_operation=str_to_embedding_coordinates, + convert=False, + ), + Quantity( + "qm_cluster", + r"QM cluster transformed to the center of cell 0 \(au\):\s*.+\s*([\s\S]+?)\n\s*\n", + str_operation=str_to_embedding_coordinates, + convert=False, + ), + ] + ), + ), + Quantity( + "dft_d3", + r"(DFTD3 V[\d\.]+ Rev \d+[\s\S]+?)\n\s*\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity("version", r"DFTD3 V([\d\.]+ Rev \d+)", flatten=False), + Quantity( + "energy_van_der_Waals", + rf"Edisp /kcal,au:\s*\S+\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + ] + ), + ), + Quantity( + "uhf", + r"UHF mod.+? switched (on) !", + str_operation=lambda x: x == "on", + convert=False, + ), + Quantity( + "smearing", + r"(\w+ smearing switched on[\s\S]+?)\n\s*\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "kind", r"(\w+) smearing", str_operation=lambda x: x.lower() + ), + Quantity( + "width", + rf"Final electron temperature:\s*({re_float})", + dtype=float, + ), + ] + ), + ), + Quantity( + "energy_reference_wavefunction", + rf"Energy of reference wave function is\s*({re_float})", + dtype=float, + ), + Quantity( + "energies", + r"(total energy\s*=[\s\S]+?)\n\s*\n", + str_operation=str_to_energies, + convert=False, + ), + Quantity( + "self_consistency", + r"OPTIMIZATION OF THE GROUND STATE CLUSTER AMPLITUDES\s*\*\s*\*\s*\*\s*\*+" + r"([\s\S]+?)\*{50}", + sub_parser=TextParser( + quantities=[ + Quantity( + "iteration", + r"(Iter\.\s+CCSD energy[\s\S]+?)(?:CC equations|\n *\n)", + str_operation=str_to_iteration, + ), + Quantity( + "convergence", + r"(?:converged in (\d+) iterations|within (\d+) cycles)", + dtype=int, + ), + ] + ), + ), + Quantity( + "energies_MP2", + r"(RHF\s*energy[\s\S]+?SOS\-MP2 energy.+)", + str_operation=str_to_energies, + ), + Quantity( + "energies_CCSD", + r"(RHF\s*energy[\s\S]+?Final CCSD energy.*)", + str_operation=str_to_energies, + ), + Quantity( + "energies_CCSD(T0)", + r"(RHF\s*energy[\s\S]+?Final CCSD\(T0\) energy.+)", + str_operation=str_to_energies, + ), + Quantity( + "energy_gradient", + r"cartesian gradient of the energy \(hartree/bohr\)\s*\-+\s*([\s\S]+?)" + r"calculation of the energy gradient finished", + str_operation=str_to_energy_gradient, + convert=False, + ), + Quantity( + "eigenvalue_file", + r"orbitals \$\S+\s*will be written to file (\w+)", + repeats=True, + ), + Quantity( + "wall_time", + rf"total\s*wall\-time\s*:(.+)", + str_operation=str_to_time, + convert=False, + ), + ] aoforce_quantities = module_quantities + [ Quantity( - 'hessian', - r'CARTESIAN FORCE CONSTANT MATRIX \(hartree/bohr\*\*2\)\s*' - r'.+\s*\-+([\s\S]+?)\n\s*\n *\n', - str_operation=str_to_hessian, convert=False), + "hessian", + r"CARTESIAN FORCE CONSTANT MATRIX \(hartree/bohr\*\*2\)\s*" + r".+\s*\-+([\s\S]+?)\n\s*\n *\n", + str_operation=str_to_hessian, + convert=False, + ), Quantity( - 'hessian_file', - r'\*\*\*\s*projected\s+hessian\s+written\s+onto\s+\$hessian\s+\(projected\),\s+file=\<(.+)\>'), + "hessian_file", + r"\*\*\*\s*projected\s+hessian\s+written\s+onto\s+\$hessian\s+\(projected\),\s+file=\<(.+)\>", + ), Quantity( - 'normal_modes_vibrational_frequencies', - r'(NORMAL MODES and VIBRATIONAL FREQUENCIES \(cm\*\*\(-1\)\)\s*\-+[\s\S]+?)(?:\*{50}|\Z)', - str_operation=str_to_normal_modes_vibrational_frequencies, convert=False), + "normal_modes_vibrational_frequencies", + r"(NORMAL MODES and VIBRATIONAL FREQUENCIES \(cm\*\*\(-1\)\)\s*\-+[\s\S]+?)(?:\*{50}|\Z)", + str_operation=str_to_normal_modes_vibrational_frequencies, + convert=False, + ), Quantity( - 'normal_modes_file', - r'\*\*\*\s*normal\s+modes\s+written\s+onto\s+\$vibrational\s+normal\s+modes,\s+file=\<(.+?)\>'), + "normal_modes_file", + r"\*\*\*\s*normal\s+modes\s+written\s+onto\s+\$vibrational\s+normal\s+modes,\s+file=\<(.+?)\>", + ), Quantity( - 'vibrational_spectrum_file', - r'\*\*\*\s+vibrational\s+spectroscopic\s+data\s+written\s+onto\$vibrational\s+spectrum\s+file=\<(.+?)\>'), + "vibrational_spectrum_file", + r"\*\*\*\s+vibrational\s+spectroscopic\s+data\s+written\s+onto\$vibrational\s+spectrum\s+file=\<(.+?)\>", + ), Quantity( - 'energy_zero_point', - rf'\*\s*zero point VIBRATIONAL energy\s*:\s*({re_float})', dtype=float, unit=ureg.hartree), + "energy_zero_point", + rf"\*\s*zero point VIBRATIONAL energy\s*:\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), Quantity( - 'energy_total', - rf'\*\s*SCF\-energy\s*:\s*({re_float})', drype=float, unit=ureg.hartree), + "energy_total", + rf"\*\s*SCF\-energy\s*:\s*({re_float})", + drype=float, + unit=ureg.hartree, + ), Quantity( - 'energy_current', - rf'\*\s*SCF \+ E\(vib0\)\s*:\s*({re_float})', dtype=float, unit=ureg.hartree)] + "energy_current", + rf"\*\s*SCF \+ E\(vib0\)\s*:\s*({re_float})", + dtype=float, + unit=ureg.hartree, + ), + ] ccsdf12_quantities = module_quantities + [ Quantity( - 'energies', - r'time in triples corr.+\s*\*+([\s\S]+?)\*{50}', - str_operation=str_to_energies, convert=False)] + "energies", + r"time in triples corr.+\s*\*+([\s\S]+?)\*{50}", + str_operation=str_to_energies, + convert=False, + ) + ] dscf_quantities = module_quantities + [ Quantity( - 'self_consistency', - r'(scf convergence criterion : increment of total energy[\s\S]+?iterations)', - sub_parser=TextParser(quantities=scf_quantities))] + "self_consistency", + r"(scf convergence criterion : increment of total energy[\s\S]+?iterations)", + sub_parser=TextParser(quantities=scf_quantities), + ) + ] escf_quantities = module_quantities + [ Quantity( - 'gw', - r'(GW version\s*\d+[\s\S]+?)\n\s*\n *\n', sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - r'par[ae]meters:\s*\-+([\s\S]+?)\-{20}', - str_operation=str_to_gw_parameters), - Quantity( - 'qp_states', - r'orb\s*eps\s*QP\-eps\s*Sigma\s*Sigma_x\s*Sigma_c\s*Vxc\s*Z\s*dS/de' - r'([\s\S]+?)\n\s*\n', - repeats=True, str_operation=str_to_qp_states, convert=False)]))] + "gw", + r"(GW version\s*\d+[\s\S]+?)\n\s*\n *\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"par[ae]meters:\s*\-+([\s\S]+?)\-{20}", + str_operation=str_to_gw_parameters, + ), + Quantity( + "qp_states", + r"orb\s*eps\s*QP\-eps\s*Sigma\s*Sigma_x\s*Sigma_c\s*Vxc\s*Z\s*dS/de" + r"([\s\S]+?)\n\s*\n", + repeats=True, + str_operation=str_to_qp_states, + convert=False, + ), + ] + ), + ) + ] freeh_quantities = module_quantities + [ Quantity( - 'thermodynamics', - r'(T\s*[Pp]\s*.+\n)[\s\S]+?(\d[\d\.\- ]+)', - repeats=True, str_operation=str_to_thermodynamics, convert=False), + "thermodynamics", + r"(T\s*[Pp]\s*.+\n)[\s\S]+?(\d[\d\.\- ]+)", + repeats=True, + str_operation=str_to_thermodynamics, + convert=False, + ), Quantity( - 'energy_zero_point', - rf'zero point vibrational energy\s*\-+\s*zpe=\s*({re_float})\s*kJ/mol', - dtype=float, unit=ureg.kJ / MOL) + "energy_zero_point", + rf"zero point vibrational energy\s*\-+\s*zpe=\s*({re_float})\s*kJ/mol", + dtype=float, + unit=ureg.kJ / MOL, + ), ] grad_quantities = module_quantities pnoccsd_quantities = module_quantities + [ - Quantity('methods', r' Method \d+:\s*(\S+)', repeats=True), + Quantity("methods", r" Method \d+:\s*(\S+)", repeats=True), Quantity( - 'energies', - r'(RHF\s*energy[\s\S]+?Final CCSD\(T\) energy.+)', str_operation=str_to_energies)] + "energies", + r"(RHF\s*energy[\s\S]+?Final CCSD\(T\) energy.+)", + str_operation=str_to_energies, + ), + ] # TODO verify this # the only example I found shows ricc2 quantities are same with ccsdf12 ricc2_quantities = ccsdf12_quantities + [ Quantity( - 'energy_total', - rf'Total\s+Energy\s*:\s*({re_float})', dtype=float, unit=ureg.eV)] + "energy_total", + rf"Total\s+Energy\s*:\s*({re_float})", + dtype=float, + unit=ureg.eV, + ) + ] ridft_quantities = module_quantities + [ Quantity( - 'self_consistency', - r'Starting SCF iterations([\s\S]+?)\-{40}', - sub_parser=TextParser(quantities=scf_quantities))] + "self_consistency", + r"Starting SCF iterations([\s\S]+?)\-{40}", + sub_parser=TextParser(quantities=scf_quantities), + ) + ] rirpa_quantities = module_quantities + [ # TODO verify this I cannot find an example file Quantity( - 'energies_RPA', - r'(HXX\+RIRPA\s+total\s+energy\s*=[\s\S]+?HXX\s+total\s+energy\s*=.+)', - str_operation=str_to_energies)] + "energies_RPA", + r"(HXX\+RIRPA\s+total\s+energy\s*=[\s\S]+?HXX\s+total\s+energy\s*=.+)", + str_operation=str_to_energies, + ) + ] statpt_quantities = module_quantities + [ Quantity( - 'atomic_info', - r'ATOM\s*CARTESIAN COORDINATES\s*([\s\S]+?)\*{50}', - sub_parser=TextParser(quantities=[Quantity( - 'info', - r'([\s\S]+)', str_operation=str_to_atomic_info)])), + "atomic_info", + r"ATOM\s*CARTESIAN COORDINATES\s*([\s\S]+?)\*{50}", + sub_parser=TextParser( + quantities=[ + Quantity("info", r"([\s\S]+)", str_operation=str_to_atomic_info) + ] + ), + ), Quantity( - 'options', - r'Stationary point options\s*\*+\s*\*+\s*([\s\S]+?)\*{40}', - str_operation=str_to_options), + "options", + r"Stationary point options\s*\*+\s*\*+\s*([\s\S]+?)\*{40}", + str_operation=str_to_options, + ), Quantity( - 'convergence', - r'CONVERGENCE INFORMATION\s*Converged\?\s*Value\s*Criterion\s*([\s\S]+?)\*{50}', - str_operation=str_to_convergence)] + "convergence", + r"CONVERGENCE INFORMATION\s*Converged\?\s*Value\s*Criterion\s*([\s\S]+?)\*{50}", + str_operation=str_to_convergence, + ), + ] run_quantities = [ Quantity( - 'x_turbomole_nodename', - r'\w+\s*\((.+)\)\s*:\s*TURBO', flatten=False), + "x_turbomole_nodename", r"\w+\s*\((.+)\)\s*:\s*TURBO", flatten=False + ), Quantity( - 'program_version', - r'MOLE (?:V|rev\.)( *[\d\.]+\s*\([\d ]+\))', flatten=False), + "program_version", + r"MOLE (?:V|rev\.)( *[\d\.]+\s*\([\d ]+\))", + flatten=False, + ), Quantity( - 'time', r'(\d\d\d\d-\d\d-\d\d\s*\d\d:\d\d:\d\d\.\d\d\d)', - flatten=False, repeats=True), + "time", + r"(\d\d\d\d-\d\d-\d\d\s*\d\d:\d\d:\d\d\.\d\d\d)", + flatten=False, + repeats=True, + ), Quantity( - 'module_aoforce', - r'(a o f o r c e \- program[\s\S]+?(?:force : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=aoforce_quantities)), + "module_aoforce", + r"(a o f o r c e \- program[\s\S]+?(?:force : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=aoforce_quantities), + ), Quantity( - 'module_ccsdf12', - r'(C C S D F 1 2\s*P R O G R A M[\s\S]+?(?:ccsdf12 : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=ccsdf12_quantities)), + "module_ccsdf12", + r"(C C S D F 1 2\s*P R O G R A M[\s\S]+?(?:ccsdf12 : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=ccsdf12_quantities), + ), Quantity( - 'module_dscf', - r'(d s c f \- program[\s\S]+?(?:dscf : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=dscf_quantities)), + "module_dscf", + r"(d s c f \- program[\s\S]+?(?:dscf : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=dscf_quantities), + ), Quantity( - 'module_escf', - r'(e s c f[\s\S]+?(?:escf : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=escf_quantities)), + "module_escf", + r"(e s c f[\s\S]+?(?:escf : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=escf_quantities), + ), Quantity( - 'module_freeh', - r'(f r e e e n t h a l p y - program[\s\S]+?(?:freeh : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=freeh_quantities)), + "module_freeh", + r"(f r e e e n t h a l p y - program[\s\S]+?(?:freeh : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=freeh_quantities), + ), Quantity( - 'module_grad', - r'(g r a d \- program[\s\S]+?(?:grad : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=grad_quantities)), + "module_grad", + r"(g r a d \- program[\s\S]+?(?:grad : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=grad_quantities), + ), Quantity( - 'module_pnoccsd', - r'(P N O C C S D - P R O G R A M[\s\S]+(?:pnoccsd : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=pnoccsd_quantities)), + "module_pnoccsd", + r"(P N O C C S D - P R O G R A M[\s\S]+(?:pnoccsd : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=pnoccsd_quantities), + ), Quantity( - 'module_ricc2', - r'(R I C C 2 \- PROGRAM[\s\S]+?(?:ricc2 : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=ricc2_quantities)), + "module_ricc2", + r"(R I C C 2 \- PROGRAM[\s\S]+?(?:ricc2 : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=ricc2_quantities), + ), Quantity( - 'module_ridft', - r'(r i d f t\s*DFT program[\s\S]+?(?:ridft : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=ridft_quantities)), + "module_ridft", + r"(r i d f t\s*DFT program[\s\S]+?(?:ridft : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=ridft_quantities), + ), # TODO implement RIRPA, pnoccsd, freeh Quantity( - 'module_rirpa', - r'(PROGRAM\s+RIRPA[\s\s]+?(?:rirpa : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=rirpa_quantities)), + "module_rirpa", + r"(PROGRAM\s+RIRPA[\s\s]+?(?:rirpa : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=rirpa_quantities), + ), Quantity( - 'module_statpt', - r'(this is S T A T P T[\s\S]+?(?:statpt : all done\s*\*\*\*\*|\Z))', - sub_parser=TextParser(quantities=statpt_quantities))] + "module_statpt", + r"(this is S T A T P T[\s\S]+?(?:statpt : all done\s*\*\*\*\*|\Z))", + sub_parser=TextParser(quantities=statpt_quantities), + ), + ] # necessary to wrap it around a module so we keep the order - self._quantities = [Quantity( - 'module_run', - r'(TURBOMOLE (?:V|rev)[\s\S]+?(?:all done\s*\*\*\*\*\s*[\d\.\-: ]+|\Z))', - repeats=True, sub_parser=TextParser(quantities=run_quantities))] + self._quantities = [ + Quantity( + "module_run", + r"(TURBOMOLE (?:V|rev)[\s\S]+?(?:all done\s*\*\*\*\*\s*[\d\.\-: ]+|\Z))", + repeats=True, + sub_parser=TextParser(quantities=run_quantities), + ) + ] class TurbomoleParser: def __init__(self): self.out_parser = OutParser() - self.matrix_parser = AuxiliaryOutParser(r' *(\d+\s+\d+\s+[\d\.\- ]+)\n', 2) + self.matrix_parser = AuxiliaryOutParser(r" *(\d+\s+\d+\s+[\d\.\- ]+)\n", 2) self.vibrational_parser = AuxiliaryOutParser( - r' *(\d+\s+\w*\s+[\d\.\-]+\s+[\d\.\-]+\s+[YES\-]+\s+[YES\-]+)', 0) + r" *(\d+\s+\w*\s+[\d\.\-]+\s+[\d\.\-]+\s+[YES\-]+\s+[YES\-]+)", 0 + ) self.eigenvalues_parser = EigenvaluesParser() self.control_parser = ControlParser() self.xc_functional_map = { - 'S-VWN': ['LDA_X', 'LDA_C_VWN_3'], - 'PWLDA': ['LDA_X', 'LDA_C_PW'], - 'B-VWN': ['GGA_X_B88', 'LDA_C_VWN'], - 'B-LYP': ['GGA_X_B88', 'GGA_C_LYP'], - 'B-P': ['GGA_X_B88', 'GGA_C_P86'], - 'B-P86': ['GGA_X_B88', 'GGA_C_P86'], - 'PBE': ['GGA_X_PBE', 'GGA_C_PBE'], - 'TPSS': ['MGGA_X_TPSS', 'MGGA_C_TPSS'], - 'M06': ['MGGA_X_M06', 'MGGA_C_M06'], - 'BH-LYP': ['HYB_GGA_XC_BHANDHLYP'], - 'B3-LYP': ['HYB_GGA_XC_B3LYP'], - 'PBE0': ['HYB_GGA_XC_PBEH'], - 'TPSSh': ['HYB_MGGA_XC_TPSSH'], - 'M06-2X': ['MGGA_X_M06_2X', 'MGGA_C_M06_2X'], - 'B2-PLYP': ['HYB_GGA_XC_B2PLYP']} + "S-VWN": ["LDA_X", "LDA_C_VWN_3"], + "PWLDA": ["LDA_X", "LDA_C_PW"], + "B-VWN": ["GGA_X_B88", "LDA_C_VWN"], + "B-LYP": ["GGA_X_B88", "GGA_C_LYP"], + "B-P": ["GGA_X_B88", "GGA_C_P86"], + "B-P86": ["GGA_X_B88", "GGA_C_P86"], + "PBE": ["GGA_X_PBE", "GGA_C_PBE"], + "TPSS": ["MGGA_X_TPSS", "MGGA_C_TPSS"], + "M06": ["MGGA_X_M06", "MGGA_C_M06"], + "BH-LYP": ["HYB_GGA_XC_BHANDHLYP"], + "B3-LYP": ["HYB_GGA_XC_B3LYP"], + "PBE0": ["HYB_GGA_XC_PBEH"], + "TPSSh": ["HYB_MGGA_XC_TPSSH"], + "M06-2X": ["MGGA_X_M06_2X", "MGGA_C_M06_2X"], + "B2-PLYP": ["HYB_GGA_XC_B2PLYP"], + } self.models_map = { - 'MP2': 'MP2', 'CCS': 'CCS', 'CIS': 'CIS', 'CIS(D)': 'CISD', 'CIS(Dinf)': 'CISD', - 'ADC(2)': 'MP2', # TODO: check paper to verify this mapping - 'CC2': 'CCSD', 'CCSD': 'CCSD', 'CCSD(T)': 'CCSD(T)'} + "MP2": "MP2", + "CCS": "CCS", + "CIS": "CIS", + "CIS(D)": "CISD", + "CIS(Dinf)": "CISD", + "ADC(2)": "MP2", # TODO: check paper to verify this mapping + "CC2": "CCSD", + "CCSD": "CCSD", + "CCSD(T)": "CCSD(T)", + } self.metainfo_map = { - 'total energy': 'energy_total', 'kinetic energy': 'energy_kinetic_electronic', - 'potential energy': 'x_turbomole_potential_energy_final', - 'virial theorem': 'x_turbomole_virial_theorem', 'wavefunction norm': 'x_turbomole_wave_func_norm', - 'Final CCSD(T) energy': 'energy_total', 'CCSD correlation energy': 'energy_current', - 'Final CCSD(T0) energy': 'energy_total', - 'Final CCSD energy': 'energy_total', 'correlation energy': 'energy_current', - 'Final MP2 energy': 'energy_total', 'MP2 correlation energy (doubles)': 'energy_current', - r'HXX\+RIRPA total energy': 'energy_total', 'RIRPA correlation energy': 'energy_current', - 'HXX total energy': 'energy_total', 'rpa response function': 'x_turbomole_gw_use_rpa_response', - 'eta (Hartree)': 'x_turbomole_gw_eta_factor', - 'Maximum allowed trust radius': 'x_turbomole_geometry_optimization_trustregion_max', - 'Minimum allowed trust radius': 'x_turbomole_geometry_optimization_trustregion_min', - 'Initial trust radius': 'x_turbomole_geometry_optimization_trustregion_initial', - 'Hessian update method': 'method', - 'Threshold for energy change': 'convergence_tolerance_energy_difference', - 'Threshold for max displacement element': 'convergence_tolerance_displacement_maximum', - 'Threshold for max gradient element': 'convergence_tolerance_force_maximum', - 'Threshold for RMS of displacement': 'x_turbomole_geometry_optimization_geometry_change_rms', - 'Threshold for RMS of gradient': 'x_turbomole_geometry_optimization_threshold_force_rms', - 't': 'temperature', 'p': 'pressure', 'entropy': 'energy_correction_entropy', - 'energy': 'energy_total', 'cv': 'heat_capacity_c_v', 'cp': 'heat_capacity_c_p'} + "total energy": "energy_total", + "kinetic energy": "energy_kinetic_electronic", + "potential energy": "x_turbomole_potential_energy_final", + "virial theorem": "x_turbomole_virial_theorem", + "wavefunction norm": "x_turbomole_wave_func_norm", + "Final CCSD(T) energy": "energy_total", + "CCSD correlation energy": "energy_current", + "Final CCSD(T0) energy": "energy_total", + "Final CCSD energy": "energy_total", + "correlation energy": "energy_current", + "Final MP2 energy": "energy_total", + "MP2 correlation energy (doubles)": "energy_current", + r"HXX\+RIRPA total energy": "energy_total", + "RIRPA correlation energy": "energy_current", + "HXX total energy": "energy_total", + "rpa response function": "x_turbomole_gw_use_rpa_response", + "eta (Hartree)": "x_turbomole_gw_eta_factor", + "Maximum allowed trust radius": "x_turbomole_geometry_optimization_trustregion_max", + "Minimum allowed trust radius": "x_turbomole_geometry_optimization_trustregion_min", + "Initial trust radius": "x_turbomole_geometry_optimization_trustregion_initial", + "Hessian update method": "method", + "Threshold for energy change": "convergence_tolerance_energy_difference", + "Threshold for max displacement element": "convergence_tolerance_displacement_maximum", + "Threshold for max gradient element": "convergence_tolerance_force_maximum", + "Threshold for RMS of displacement": "x_turbomole_geometry_optimization_geometry_change_rms", + "Threshold for RMS of gradient": "x_turbomole_geometry_optimization_threshold_force_rms", + "t": "temperature", + "p": "pressure", + "entropy": "energy_correction_entropy", + "energy": "energy_total", + "cv": "heat_capacity_c_v", + "cp": "heat_capacity_c_p", + } def init_parser(self): self.out_parser.mainfile = self.filepath @@ -774,27 +1033,27 @@ def init_parser(self): self.module = None def get_number_of_atoms(self): - return len(self.module.get('atomic_info', {}).get('info', {}).get('atom', [])) + return len(self.module.get("atomic_info", {}).get("info", {}).get("atom", [])) def get_number_of_spin_channels(self): nspin = 1 - if self.module.get('uhf'): + if self.module.get("uhf"): nspin = 2 - gw_parameters = self.module.get('gw', {}).get('parameters', None) + gw_parameters = self.module.get("gw", {}).get("parameters", None) if gw_parameters is not None: - nspin = gw_parameters.get('number of spin channels', 1) + nspin = gw_parameters.get("number of spin channels", 1) # TODO add other conditions return nspin def get_electronic_structure_method(self): - if self.module.get('wavefunction_model') is not None: - return self.models_map.get(self.module.get('wavefunction_model'), None) - if self.module.get('methods') is not None: - return self.models_map.get(self.module.get('methods')[-1], None) - if self.module.get('dft_functional') is not None: - return 'DFT' - if self.module.get('gw') is not None: - return 'G0W0' + if self.module.get("wavefunction_model") is not None: + return self.models_map.get(self.module.get("wavefunction_model"), None) + if self.module.get("methods") is not None: + return self.models_map.get(self.module.get("methods")[-1], None) + if self.module.get("dft_functional") is not None: + return "DFT" + if self.module.get("gw") is not None: + return "G0W0" def parse_system(self): sec_run = self.archive.run[0] @@ -803,18 +1062,20 @@ def parse_system(self): sec_atoms = Atoms() sec_system.atoms = sec_atoms - info = self.module.get('atomic_info', {}).get('info', {}) - if info.get('coordinates') is not None: - sec_atoms.positions = info.get('coordinates', []) - if info.get('atom') is not None: - sec_atoms.labels = info.get('atom', []) + info = self.module.get("atomic_info", {}).get("info", {}) + if info.get("coordinates") is not None: + sec_atoms.positions = info.get("coordinates", []) + if info.get("atom") is not None: + sec_atoms.labels = info.get("atom", []) sec_atoms.periodic = [False, False, False] # TODO is it always non-periodic? - point_charges = self.module.get('embedding_point_charges', {}) + point_charges = self.module.get("embedding_point_charges", {}) cluster_description = { - 'redefined': 'periodic point charges for embedding', - 'pc_cluster': 'removed point charge cluster', 'qm_cluster': 'shifted embedded QM cluster'} + "redefined": "periodic point charges for embedding", + "pc_cluster": "removed point charge cluster", + "qm_cluster": "shifted embedded QM cluster", + } sec_system.systems_ref = [] for name in cluster_description.keys(): cluster = point_charges.get(name, None) @@ -824,24 +1085,26 @@ def parse_system(self): sec_run.system.append(sec_system_cluster) sec_atoms = Atoms() sec_system_cluster.atoms = sec_atoms - sec_atoms.positions = cluster.get('coordinates') - sec_atoms.labels = cluster.get('labels') - if name == 'redefined': - sec_system_cluster.x_turbomole_pceem_charges = cluster.get('charges') - sec_atoms.lattice_vectors = point_charges.get('lattice_vectors') + sec_atoms.positions = cluster.get("coordinates") + sec_atoms.labels = cluster.get("labels") + if name == "redefined": + sec_system_cluster.x_turbomole_pceem_charges = cluster.get("charges") + sec_atoms.lattice_vectors = point_charges.get("lattice_vectors") sec_atoms.periodic = [True, True, True] # TODO is the reference correct or the other way around? sec_system.systems_ref.append(sec_system_cluster) for key, val in point_charges.items(): - if key.startswith('pceem_') and val is not None: - setattr(sec_system, 'x_turbomole_%s' % key, val) + if key.startswith("pceem_") and val is not None: + setattr(sec_system, "x_turbomole_%s" % key, val) return sec_system def parse_scc(self): sec_run = self.archive.run[0] - time_initial = sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + time_initial = ( + sec_run.calculation[-1].time_physical if sec_run.calculation else 0 * ureg.s + ) sec_scc = Calculation() sec_run.calculation.append(sec_scc) @@ -850,24 +1113,28 @@ def parse_scc(self): # energies sec_energy = Energy() sec_scc.energy = sec_energy - for key, val in self.module.get('energies', {}).items(): + for key, val in self.module.get("energies", {}).items(): key = self.metainfo_map.get(key, None) if key is None: continue - if key.startswith('energy_'): - sec_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '').lower()), EnergyEntry(value=val)) + if key.startswith("energy_"): + sec_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: setattr(sec_scc, key, val) - for key in ['zero_point', 'current', 'total']: - val = self.module.get('energy_%s' % key) + for key in ["zero_point", "current", "total"]: + val = self.module.get("energy_%s" % key) if val is not None: - sec_energy.m_add_sub_section(getattr(Energy, key), EnergyEntry(value=val)) + sec_energy.m_add_sub_section( + getattr(Energy, key), EnergyEntry(value=val) + ) # module-specific energies (will create additional scc, method) for name, energies in self.module.items(): - if not name.startswith('energies_') or energies is None: + if not name.startswith("energies_") or energies is None: continue sec_scc_module = Calculation() sec_run.calculation.append(sec_scc_module) @@ -877,31 +1144,35 @@ def parse_scc(self): key = self.metainfo_map.get(key, None) if key is None: continue - if key.startswith('energy_'): - sec_scc_module_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '').lower()), EnergyEntry(value=val)) + if key.startswith("energy_"): + sec_scc_module_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: setattr(sec_scc_module, key, val) sec_method_module = Method() sec_run.method.append(sec_method_module) - sec_method_module.electronic = Electronic(method=name.lstrip('energies_')) + sec_method_module.electronic = Electronic(method=name.lstrip("energies_")) sec_scc_module.method_ref = sec_method_module # add reference to main sec_scc sec_scc_module.starting_calculation_ref = sec_scc sec_scc_module.calculations_ref = [sec_scc] # forces - energy_gradient = self.module.get('energy_gradient') + energy_gradient = self.module.get("energy_gradient") if energy_gradient is not None: sec_scc.forces = Forces(total=ForcesEntry(value_raw=energy_gradient)) # thermodynamics - thermodynamics = self.module.get('thermodynamics') + thermodynamics = self.module.get("thermodynamics") if thermodynamics is not None: - current_t, current_p = 0., 0. + current_t, current_p = 0.0, 0.0 # sec_scc_thermo = None for thermo in thermodynamics: - if current_t != thermo.get('t', 0.) or current_p != thermo.get('p', 0.): + if current_t != thermo.get("t", 0.0) or current_p != thermo.get( + "p", 0.0 + ): sec_scc_thermo = Calculation() sec_run.calculation.append(sec_scc_thermo) sec_scc_thermo.starting_calculation_ref = sec_scc @@ -910,163 +1181,217 @@ def parse_scc(self): sec_scc_thermo.thermodynamics.append(sec_thermo) sec_scc_thermo_energy = Energy() sec_scc_thermo.energy = sec_scc_thermo_energy - current_t, current_p = thermo.get('t', 0.), thermo.get('p', 0.) + current_t, current_p = thermo.get("t", 0.0), thermo.get("p", 0.0) if sec_scc_thermo is not None: for key, val in thermo.items(): key = self.metainfo_map.get(key, key) - if key.startswith('energy_'): - sec_scc_thermo_energy.m_add_sub_section(getattr( - Energy, key.replace('energy_', '').lower()), EnergyEntry(value=val)) + if key.startswith("energy_"): + sec_scc_thermo_energy.m_add_sub_section( + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: setattr(sec_thermo, key, val) # hessian - if self.module.get('hessian') is not None: - sec_scc.hessian_matrix = self.module.get('hessian').to('J/m**2').magnitude - elif self.module.get('hessian_file') is not None: + if self.module.get("hessian") is not None: + sec_scc.hessian_matrix = self.module.get("hessian").to("J/m**2").magnitude + elif self.module.get("hessian_file") is not None: # read if from file - self.matrix_parser.mainfile = os.path.join(self.maindir, self.module.get( - 'hessian_file')) + self.matrix_parser.mainfile = os.path.join( + self.maindir, self.module.get("hessian_file") + ) try: - hessian = np.reshape(np.array( - self.matrix_parser.matrix, dtype=float), (n_atoms, 3, n_atoms, 3)) - hessian = np.transpose(hessian, axes=( - 0, 2, 1, 3)) * ureg.hartree / ureg.bohr**2 - sec_scc.hessian_matrix = hessian.to('J/m**2').magnitude + hessian = np.reshape( + np.array(self.matrix_parser.matrix, dtype=float), + (n_atoms, 3, n_atoms, 3), + ) + hessian = ( + np.transpose(hessian, axes=(0, 2, 1, 3)) + * ureg.hartree + / ureg.bohr**2 + ) + sec_scc.hessian_matrix = hessian.to("J/m**2").magnitude except Exception: - self.logger.warning('Cannot read hessian file.') + self.logger.warning("Cannot read hessian file.") # vibrational frequencies - vibration = self.module.get('normal_modes_vibrational_frequencies') + vibration = self.module.get("normal_modes_vibrational_frequencies") if vibration is not None: for key, val in vibration.items(): - setattr(sec_scc, 'x_turbomole_vibrations_%s' % key, val) + setattr(sec_scc, "x_turbomole_vibrations_%s" % key, val) else: - if self.module.get('normal_modes_file') is not None: + if self.module.get("normal_modes_file") is not None: # read from file - self.matrix_parser.mainfile = os.path.join(self.maindir, self.module.get( - 'normal_modes_file')) + self.matrix_parser.mainfile = os.path.join( + self.maindir, self.module.get("normal_modes_file") + ) try: normal_modes = np.array(self.matrix_parser.matrix, dtype=float) - sec_scc.x_turbomole_vibrations_normal_modes = np.transpose(np.reshape( - normal_modes, (n_atoms, 3, len(normal_modes[0]))), axes=(2, 0, 1)) + sec_scc.x_turbomole_vibrations_normal_modes = np.transpose( + np.reshape(normal_modes, (n_atoms, 3, len(normal_modes[0]))), + axes=(2, 0, 1), + ) except Exception: - self.logger.warning('Cannot read normal modes file.') + self.logger.warning("Cannot read normal modes file.") - if self.module.get('vibrational_spectrum_file') is not None: - self.vibrational_parser.mainfile = os.path.join(self.maindir, self.module.get( - 'vibrational_spectrum_file', '')) + if self.module.get("vibrational_spectrum_file") is not None: + self.vibrational_parser.mainfile = os.path.join( + self.maindir, self.module.get("vibrational_spectrum_file", "") + ) try: spectrum = self.vibrational_parser.matrix sec_scc.x_turbomole_vibrations_mode_energies = np.array( - [s[-4] for s in spectrum], dtype=float) + [s[-4] for s in spectrum], dtype=float + ) sec_scc.x_turbomole_vibrations_intensities = np.array( - [s[-3] for s in spectrum], dtype=float) - sec_scc.x_turbomole_vibrations_infrared_activity = [s[-2] == 'YES' for s in spectrum] - sec_scc.x_turbomole_vibrations_raman_activity = [s[-1] == 'YES' for s in spectrum] + [s[-3] for s in spectrum], dtype=float + ) + sec_scc.x_turbomole_vibrations_infrared_activity = [ + s[-2] == "YES" for s in spectrum + ] + sec_scc.x_turbomole_vibrations_raman_activity = [ + s[-1] == "YES" for s in spectrum + ] except Exception: - self.logger.warning('Cannot read vibrational spectrum file.') + self.logger.warning("Cannot read vibrational spectrum file.") # eigenvalues - eigenvalue_files = self.module.get('eigenvalue_file') + eigenvalue_files = self.module.get("eigenvalue_file") if eigenvalue_files is not None: eigenvalues = [] occupation = [] irrep = [] try: for eigenvalue_file in eigenvalue_files: - self.eigenvalues_parser.mainfile = os.path.join(self.maindir, eigenvalue_file) - eigenvalues.append(np.hstack(self.eigenvalues_parser.get('eigenvalues', []))) - occupation.append(np.hstack(self.eigenvalues_parser.get('occupation', []))) - irrep.append(np.hstack(self.eigenvalues_parser.get('irrep', []))) + self.eigenvalues_parser.mainfile = os.path.join( + self.maindir, eigenvalue_file + ) + eigenvalues.append( + np.hstack(self.eigenvalues_parser.get("eigenvalues", [])) + ) + occupation.append( + np.hstack(self.eigenvalues_parser.get("occupation", [])) + ) + irrep.append(np.hstack(self.eigenvalues_parser.get("irrep", []))) sec_eigenvalues = BandEnergies() sec_scc.eigenvalues.append(sec_eigenvalues) - values = np.reshape(np.array( - eigenvalues, dtype=float), (len(eigenvalue_files), 1, len(eigenvalues[0]))) * ureg.hartree - occupations = np.reshape(np.array( - occupation, dtype=float), (len(eigenvalue_files), 1, len(occupation[0]))) - irrep = np.reshape(np.array( - irrep, dtype=np.dtype(np.int32)), (len(eigenvalue_files), 1, len(irrep[0]))) + values = ( + np.reshape( + np.array(eigenvalues, dtype=float), + (len(eigenvalue_files), 1, len(eigenvalues[0])), + ) + * ureg.hartree + ) + occupations = np.reshape( + np.array(occupation, dtype=float), + (len(eigenvalue_files), 1, len(occupation[0])), + ) + irrep = np.reshape( + np.array(irrep, dtype=np.dtype(np.int32)), + (len(eigenvalue_files), 1, len(irrep[0])), + ) sec_eigenvalues.energies = values sec_eigenvalues.occupations = occupations sec_eigenvalues.x_turbomole_eigenvalues_irreducible_representation = irrep sec_eigenvalues.kpoints = [np.zeros(3)] except Exception: - self.logger.warning('Cannot read eigenvalues.') + self.logger.warning("Cannot read eigenvalues.") # self consistency - self_consistency = self.module.get('self_consistency', {}) + self_consistency = self.module.get("self_consistency", {}) # total energies for calculation of energy change - energies = [0.] + [iteration.get('energies', {}).get( - 'energy_total_scf_iteration') for iteration in self_consistency.get('iteration', [])] - for n, iteration in enumerate(self_consistency.get('iteration', [])): - time_initial_scf = sec_scc.scf_iteration[-1].time_physical if sec_scc.scf_iteration else time_initial + energies = [0.0] + [ + iteration.get("energies", {}).get("energy_total_scf_iteration") + for iteration in self_consistency.get("iteration", []) + ] + for n, iteration in enumerate(self_consistency.get("iteration", [])): + time_initial_scf = ( + sec_scc.scf_iteration[-1].time_physical + if sec_scc.scf_iteration + else time_initial + ) sec_iteration = ScfIteration() sec_scc.scf_iteration.append(sec_iteration) sec_iteration_energy = Energy() sec_iteration.energy = sec_iteration_energy - for key, val in iteration.get('energies', {}).items(): - if key.startswith('energy_'): + for key, val in iteration.get("energies", {}).items(): + if key.startswith("energy_"): sec_iteration_energy.m_add_sub_section( - getattr(Energy, key.replace('energy_', '').lower()), EnergyEntry(value=val)) + getattr(Energy, key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: setattr(sec_iteration, key, val) # energy change sec_iteration.energy_change = energies[n] # scf quantities - for key in ['total', 'XC']: - val = iteration.get('energy_%s' % key, None) + for key in ["total", "XC"]: + val = iteration.get("energy_%s" % key, None) if val is None: continue sec_iteration_energy.m_add_sub_section( - getattr(Energy, key.lower()), EnergyEntry(value=val)) - if iteration.get('time'): - sec_iteration.time_calculation = iteration.get('time') - sec_iteration.time_physical = time_initial_scf + sec_iteration.time_calculation + getattr(Energy, key.lower()), EnergyEntry(value=val) + ) + if iteration.get("time"): + sec_iteration.time_calculation = iteration.get("time") + sec_iteration.time_physical = ( + time_initial_scf + sec_iteration.time_calculation + ) # miscellaneous scf quantities scf_keys = [ - 'damping_scf_iteration', 'norm_diis_scf_iteration', 'delta_eigenvalues', - 'norm_fia', 'norm_fock'] + "damping_scf_iteration", + "norm_diis_scf_iteration", + "delta_eigenvalues", + "norm_fia", + "norm_fock", + ] for key in scf_keys: val = iteration.get(key, None) if val is None: continue - if key == 'norm_fia' or key == 'norm_fock': - setattr(sec_iteration, 'x_turbomole_%s_orbital_scf_iteration' % key, val.get('%s_orbital' % key)) + if key == "norm_fia" or key == "norm_fock": + setattr( + sec_iteration, + "x_turbomole_%s_orbital_scf_iteration" % key, + val.get("%s_orbital" % key), + ) val = val.get(key) - key = '%s_scf_iteration' % key - setattr(sec_iteration, 'x_turbomole_%s' % key, val) - n_scf = self_consistency.get('number_of_scf_iterations', None) + key = "%s_scf_iteration" % key + setattr(sec_iteration, "x_turbomole_%s" % key, val) + n_scf = self_consistency.get("number_of_scf_iterations", None) if n_scf is not None: sec_scc.n_scf_iterations = n_scf # gw - if self.module.get('gw') is not None: + if self.module.get("gw") is not None: gw_metainfo_map = { - 'Z_factor': 'qp_linearization_prefactor', - 'eigenvalue_ks_GroundState': 'value_ks', - 'eigenvalue_quasiParticle_energy': 'value_qp', - 'eigenvalue_ExchangeCorrelation_perturbativeGW': 'value_xc', - 'eigenvalue_ExactExchange_perturbativeGW': 'value_exchange', - 'eigenvalue_correlation_perturbativeGW': 'value_correlation', - 'eigenvalue_ks_ExchangeCorrelation': 'value_ks_xc', - 'ExchangeCorrelation_perturbativeGW_derivation': 'x_turbomole_ExchangeCorrelation_perturbativeGW_derivation' + "Z_factor": "qp_linearization_prefactor", + "eigenvalue_ks_GroundState": "value_ks", + "eigenvalue_quasiParticle_energy": "value_qp", + "eigenvalue_ExchangeCorrelation_perturbativeGW": "value_xc", + "eigenvalue_ExactExchange_perturbativeGW": "value_exchange", + "eigenvalue_correlation_perturbativeGW": "value_correlation", + "eigenvalue_ks_ExchangeCorrelation": "value_ks_xc", + "ExchangeCorrelation_perturbativeGW_derivation": "x_turbomole_ExchangeCorrelation_perturbativeGW_derivation", } sec_eigs_gw = BandEnergies() sec_scc.eigenvalues.append(sec_eigs_gw) for key, name in gw_metainfo_map.items(): - val = [q.get(key) for q in self.module.gw.get('qp_states', [])] + val = [q.get(key) for q in self.module.gw.get("qp_states", [])] # TODO verify shape for spin polarized - val = np.reshape(val, (1, len(self.module.gw.get('qp_states', [])), len(val[0]))) - val = val * ureg.eV if name.startswith('value_') else val + val = np.reshape( + val, (1, len(self.module.gw.get("qp_states", [])), len(val[0])) + ) + val = val * ureg.eV if name.startswith("value_") else val setattr(sec_eigs_gw, name, val) # vdW - energy_vdW = self.module.get('dft_d3', {}).get('energy_van_der_Waals') + energy_vdW = self.module.get("dft_d3", {}).get("energy_van_der_Waals") if energy_vdW is not None: - sec_scc.energy.van_der_waals = EnergyEntry(value=energy_vdW, kind='DFTD3') + sec_scc.energy.van_der_waals = EnergyEntry(value=energy_vdW, kind="DFTD3") if self.module.wall_time is not None: sec_scc.time_calculation = self.module.wall_time * ureg.s @@ -1087,13 +1412,13 @@ def parse_method(self): sec_electronic.n_spin_channels = self.get_number_of_spin_channels() sec_smearing = Smearing() sec_electronic.smearing = sec_smearing - for key, val in self.module.get('smearing', {}).items(): + for key, val in self.module.get("smearing", {}).items(): setattr(sec_smearing, key, val) - atomic_info = self.module.get('atomic_info') + atomic_info = self.module.get("atomic_info") if atomic_info is not None: - info = atomic_info.get('info', {}) - atom_kind = list(set(info.get('atom', []))) + info = atomic_info.get("info", {}) + atom_kind = list(set(info.get("atom", []))) for atom in atom_kind: sec_atom_kind = AtomParameters() sec_method.atom_parameters.append(sec_atom_kind) @@ -1102,13 +1427,13 @@ def parse_method(self): # Basis set # TODO: add ECP and MO support - for basis_set in self.module.get('basis_set_info', []): - atom = basis_set.get('atom', []) - scope = 'density' if basis_set.auxiliary else 'wavefunction' + for basis_set in self.module.get("basis_set_info", []): + atom = basis_set.get("atom", []) + scope = "density" if basis_set.auxiliary else "wavefunction" bs = BasisSet( - type='gaussians', + type="gaussians", ) - for atom in basis_set.get('atom', []): + for atom in basis_set.get("atom", []): ac = BasisSetAtomCentered() symbol = atom[0].title() ac.name = atom[4] @@ -1117,7 +1442,7 @@ def parse_method(self): ac.n_basis_functions = atom[3] bs.atom_centered.append(ac) em = BasisSetContainer( - type='atom-centered orbitals', + type="atom-centered orbitals", scope=[scope], basis_set=[bs], ) @@ -1126,67 +1451,77 @@ def parse_method(self): # XC Functionals sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional - dft_functional = self.module.get('dft_functional') + dft_functional = self.module.get("dft_functional") if dft_functional is not None: - for functional in self.xc_functional_map.get(dft_functional.get('functional'), ['HF_X']): - if '_X_' in functional or functional.endswith('_X'): + for functional in self.xc_functional_map.get( + dft_functional.get("functional"), ["HF_X"] + ): + if "_X_" in functional or functional.endswith("_X"): sec_xc_functional.exchange.append(Functional(name=functional)) - elif '_C_' in functional or functional.endswith('_C'): + elif "_C_" in functional or functional.endswith("_C"): sec_xc_functional.correlation.append(Functional(name=functional)) - elif 'HYB' in functional: + elif "HYB" in functional: sec_xc_functional.hybrid.append(Functional(name=functional)) else: sec_xc_functional.contributions.append(Functional(name=functional)) if dft_functional.exchange is not None: - sec_method.x_turbomole_functional_type_exchange = dft_functional.exchange + sec_method.x_turbomole_functional_type_exchange = ( + dft_functional.exchange + ) if dft_functional.correlation is not None: - sec_method.x_turbomole_functional_type_correlation = dft_functional.correlation + sec_method.x_turbomole_functional_type_correlation = ( + dft_functional.correlation + ) # vdW method - dftd3_version = self.module.get('dft_d3', {}).get('version', None) + dftd3_version = self.module.get("dft_d3", {}).get("version", None) if dftd3_version is not None: - sec_method.electronic.van_der_waals_method = 'DFT-D3' + sec_method.electronic.van_der_waals_method = "DFT-D3" sec_method.x_turbomole_dft_d3_version = dftd3_version - if self.module.get('gw') is not None: - sec_method.calculation_method_kind = 'perturbative' - parameters = self.module.gw.get('parameters', {}) + if self.module.get("gw") is not None: + sec_method.calculation_method_kind = "perturbative" + parameters = self.module.gw.get("parameters", {}) for key, val in parameters.items(): - val = val * ureg.hartree if 'Hartree' in key else val + val = val * ureg.hartree if "Hartree" in key else val key = self.metainfo_map.get(key, None) if key is None: continue setattr(sec_method, key, val) - gw_type = parameters.get('type of gw 0:G0W0 1: GW0', 0) - sec_method.x_turbomole_gw_approximation = ['G0W0', 'GW0'][gw_type] + gw_type = parameters.get("type of gw 0:G0W0 1: GW0", 0) + sec_method.x_turbomole_gw_approximation = ["G0W0", "GW0"][gw_type] # control - self.control_parser.mainfile = os.path.join(self.maindir, 'control') + self.control_parser.mainfile = os.path.join(self.maindir, "control") for key, val in self.control_parser.items(): if val is None: continue - if key == 'drvopt': + if key == "drvopt": for drvopt_key, drvopt_val in val.items(): - setattr(sec_method, 'x_turbomole_controlIn_%s_status' % drvopt_key, drvopt_val) + setattr( + sec_method, + "x_turbomole_controlIn_%s_status" % drvopt_key, + drvopt_val, + ) else: - setattr(sec_method, 'x_turbomole_controlIn_%s' % key, val) + setattr(sec_method, "x_turbomole_controlIn_%s" % key, val) return sec_method def parse_workflow(self): - options = self.module.get('options') + options = self.module.get("options") if options is None: return workflow = GeometryOptimization(method=GeometryOptimizationMethod()) for key, val in options.items(): - if 'radius' in key or 'displacement' in key: + if "radius" in key or "displacement" in key: val = val * ureg.bohr - elif 'energy' in key: + elif "energy" in key: val = val * ureg.hartree - elif 'gradient' in key or 'force' in key: + elif "gradient" in key or "force" in key: val = val * ureg.hartree / ureg.bohr key = self.metainfo_map.get(key, None) if key is None: @@ -1205,28 +1540,40 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='turbomole') + sec_run.program = Program(name="turbomole") - for header in ['program_version', 'x_turbomole_nodename']: - value = [module_run.get(header) for module_run in self.out_parser.get('module_run', [])] + for header in ["program_version", "x_turbomole_nodename"]: + value = [ + module_run.get(header) + for module_run in self.out_parser.get("module_run", []) + ] if len(set(value)) > 1: - self.logger.warning('Multiple values found for header.') + self.logger.warning("Multiple values found for header.") if value: - if header == 'program_version': + if header == "program_version": sec_run.program.version = value[0] else: setattr(sec_run, header, value[0]) - time = [module_run.get('time') for module_run in self.out_parser.get('module_run', [])] + time = [ + module_run.get("time") + for module_run in self.out_parser.get("module_run", []) + ] time = [t for t in time if len(t) == 2] if len(time) > 0: - start = datetime.strptime(time[0][0], '%Y-%m-%d %H:%M:%S.%f') - datetime.utcfromtimestamp(0) - end = datetime.strptime(time[-1][1], '%Y-%m-%d %H:%M:%S.%f') - datetime.utcfromtimestamp(0) - sec_run.time_run = TimeRun(date_start=start.total_seconds(), date_end=end.total_seconds()) - - for module_run in self.out_parser.get('module_run', []): + start = datetime.strptime( + time[0][0], "%Y-%m-%d %H:%M:%S.%f" + ) - datetime.utcfromtimestamp(0) + end = datetime.strptime( + time[-1][1], "%Y-%m-%d %H:%M:%S.%f" + ) - datetime.utcfromtimestamp(0) + sec_run.time_run = TimeRun( + date_start=start.total_seconds(), date_end=end.total_seconds() + ) + + for module_run in self.out_parser.get("module_run", []): for name, module in module_run.items(): - if name.startswith('module_') and module is not None: + if name.startswith("module_") and module is not None: self.module = module sec_method = self.parse_method() diff --git a/electronicparsers/vasp/metainfo/vasp.py b/electronicparsers/vasp/metainfo/vasp.py index 46fe6b02..7d0baee6 100644 --- a/electronicparsers/vasp/metainfo/vasp.py +++ b/electronicparsers/vasp/metainfo/vasp.py @@ -16,11 +16,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,123 +40,130 @@ class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) vasp_build_date = Quantity( type=str, shape=[], - description=''' + description=""" build date as string - ''') + """, + ) vasp_src_date = Quantity( type=str, shape=[], - description=''' + description=""" date of last modification of the source as string - ''') + """, + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_vasp_incar_in = Quantity( type=JSON, shape=[], - description=''' + description=""" contains all the user-input INCAR parameters - ''') + """, + ) x_vasp_incar_out = Quantity( type=JSON, shape=[], - description=''' + description=""" contains the actual INCAR parameters used by VASP at runtime - ''') + """, + ) x_vasp_unknown_incars = Quantity( type=JSON, shape=[], - description=''' + description=""" INCAR variables uknown wrt to Vasp Wiki - ''') + """, + ) x_vasp_atom_kind_refs = Quantity( type=runschema.method.AtomParameters, - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" reference to the atom kinds of each atom - ''') + """, + ) x_vasp_numer_of_magmom = Quantity( type=int, shape=[], - description=''' + description=""" number of magnetic moments, number_of_atoms for ISPIN = 2, 3*number of atoms for non-collinear magnetic systems - ''') + """, + ) x_vasp_nose_thermostat = Quantity( type=np.dtype(np.float64), shape=[4], - description=''' + description=""" Nose thermostat output - ''') + """, + ) class KMesh(runschema.method.KMesh): - m_def = Section(validate=False, extends_base_section=True) x_vasp_tetrahedrons_list = Quantity( type=np.dtype(np.int32), - shape=['N', 5], - description=''' + shape=["N", 5], + description=""" Rows of 5 data points. First the weight (symmetry degeneration), then the four corner points of each tetrahedron. - ''') + """, + ) x_vasp_tetrahedron_volume = Quantity( type=np.dtype(np.float64), shape=[1], - description=''' + description=""" Volume weight of a single tetrahedron (all tetra's must have the same volume) - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_vasp_selective_dynamics = Quantity( type=np.dtype(bool), - shape=['number_of_atoms', 3], - description=''' + shape=["number_of_atoms", 3], + description=""" Boolean array to eiter allow or forbid coordinate modifications during relaxation - ''') + """, + ) class HubbardKanamoriModel(runschema.method.HubbardKanamoriModel): - m_def = Section(validate=False, extends_base_section=True) x_vasp_projection_type = Quantity( type=str, shape=[], - description=''' + description=""" Type of orbitals used for projection in order to calculate occupation numbers. - ''') + """, + ) class GW(runschema.method.GW): - m_def = Section(validate=False, extends_base_section=True) x_vasp_response_functions_incar = Quantity( type=JSON, shape=[], - description=''' + description=""" Input parameters used in the "response functions". - ''') + """, + ) diff --git a/electronicparsers/vasp/metainfo/vasp_incars.py b/electronicparsers/vasp/metainfo/vasp_incars.py index d49fdfa2..6f1c4531 100644 --- a/electronicparsers/vasp/metainfo/vasp_incars.py +++ b/electronicparsers/vasp/metainfo/vasp_incars.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,3048 +39,3390 @@ class x_vasp_incar_param(MCategory): - ''' + """ Incar parameters. Value stored in incar. - ''' + """ m_def = Category() class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_vasp_incar_ADDGRID = Quantity( type=bool, shape=[], - description=''' + description=""" ADDGRID determines whether an additional support grid is used for the evaluation of the augmentation charges. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_AEXX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AEXX specifies the fraction of exact exchange in a Hartree-Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_AGGAC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AGGAC specifies the fraction of gradient corrections to the correlation in a Hartree-Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_AGGAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AGGAX specifies the fraction of gradient corrections to the exchange in a Hartree- Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ALDAC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ALDAC specifies the fraction of LDA correlation in a Hartree-Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ALGO = Quantity( type=str, shape=[], - description=''' + description=""" Option to specify the electronic minimisation algorithm (as of VASP.4.5) and/or to select the type of GW calculations. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_AMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AMIN specifies the minimal mixing parameter in Kerker's initial approximation to the charge dielectric function used in the Broyden / Pulay mixing scheme (IMIX=4, INIMIX=1). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_AMIX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AMIX specifies the linear mixing parameter. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_AMIX_MAG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AMIX_MAG linear mixing parameter for the magnetization density. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ANDERSEN_PROB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ANDERSEN_PROB sets the collision probability for the Anderson thermostat (in case VASP was compiled with the flag -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ANTIRES = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag ANTIRES determines whether the Tamm-Dancoff approximation is used or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_APACO = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" APACO sets the maximum distance in the evaluation of the pair-correlation function (in Angstroms). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_BMIX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" BMIX sets the cutoff wave vector for Kerker mixing scheme (IMIX = 1 and / or INIMIX = 1). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_BMIX_MAG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" BMIX_MAG sets the cutoff wave vector for Kerker mixing scheme (IMIX=1 and/or INIMIX=1) for the magnetization density. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CH_LSPEC = Quantity( type=bool, shape=[], - description=''' + description=""" This flag controls whether the imaginary part of the dielectric function for a selected core electron is calculated and written to the OUTCAR file or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CH_NEDOS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the number of frequency (energy) grid points on the x-axis in the calculation of the dielectric function for XAS spectra. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CH_SIGMA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the broadening in eV of the imaginary dielectric function for a core electron. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CLL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CLL selects the angular (l) quantum number of the excited electron when using ICORELEVEL=2. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CLN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CLN selects the main quantum number of the excited electron when using ICORELEVEL=2. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CLNT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CLNT selects for which species the core levels are calculated using the tag ICORELEVEL. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CLZ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CLZ selects the electron count of the excited electron when using ICORELEVEL=2. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CMBJ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" defines the _c_ parameter in the modified Becke-Johnson meta-GGA potential. NOTE: Either specify a single value, or one value per atomic type (FIXME) - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CMBJA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" sets the $\\alpha$ parameter in the modified Becke-Johnson meta-GGA potential. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CMBJB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" sets the $\\eta$ parameter in the modified Becke-Johnson meta-GGA potential. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_CSHIFT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CSHIFT sets the (small) complex shift $\\eta$ in the Kramers-Kronig transformation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_DEPER = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" DEPER specifies a relative stopping criterion for the optimization of an eigenvalue. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_DIMER_DIST = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag DIMER_DIST defines the step size for the numerical differentiation (in Angstrongs) for the Improved Dimer Method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_DIPOL = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Specifies the center of the cell in direct lattice coordinates with respect to which the total dipole-moment in the cell is calculated. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_DQ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Step size for the finite difference _k_-space derivative in the linear response calculation of chemical shifts. Typical values for DQ are in the range [0.001 - 0.003]. The default is often sufficient - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EBREAK = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EBREAK specifies an absolute stopping criterion for the optimization of an eigenvalue. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EDIFF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EDIFF specifies the global break condition for the electronic SC-loop. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EDIFFG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EDIFFG defines the break condition for the ionic relaxation loop. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EFIELD = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EFIELD controls the magnitude of the applied electric force field. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EFIELD_PEAD = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" EFIELD_PEAD specifies the homogeneous electric field in the electric enthalpy functional used to compute the self-consistent response to finite electric fields. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EINT = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" Specifies the energy range of the bands that are used for the evaluation of the partial charge density needed in Band decomposed charge densities. Check also NBMOD and IBAND. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EMAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EMAX specifies the upper boundary of the energy range for the evaluation of the DOS. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" specifies the lower boundary of the energy range for the evaluation of the DOS. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ENAUG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ENAUG specifies the cut-off energy of the plane wave representation of the augmentation charges in eV. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ENCUT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ENCUT specifies the cutoff energy for the planewave basis set in eV. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ENCUTFOCK = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The ENCUTFOCK tag sets the energy cutoff that determines the FFT grids used by the Hartree-Fock routines. WARNING: The flag ENCUTFOCK is no longer supported in VASP.5.2.4 and newer versions. Please use PRECFOCK instead. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ENCUTGW = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The tag ENCUTGW sets the energy cutoff for response function. It controls the basis set for the response functions in exactly the same manner as ENCUT does for the orbitals. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ENCUTGWSOFT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag ENCUTGWSOFT sets the energy cutoff for response function, such that it allows to truncate the Coulomb kernel slowly between the energy specified by ENCUTGWSOFT and ENCUTGW. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ENINI = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ENINI controls the cutoff during the initial (steepest descent) phase for IALGO=48. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EPSILON = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EPSILON sets the dielectric constant of the medium. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EVENONLY = Quantity( type=bool, shape=[], - description=''' + description=""" EVENONLY=.TRUE. selects a subset of k-points for the representation of the Fock exchange potential, with $C_1=C_2=C_3=1$, and $n_1+n_2+n_3$ even. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_EVENONLYGW = Quantity( type=bool, shape=[], - description=''' + description=""" EVENONLYGW allows to restrict the k-points in the evaluation of response functions (in GW calculations) to even values. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_FERDO = Quantity( type=np.dtype(np.float64), - shape=['x_vasp_incar_NBANDS * x_vasp_number_of_k_points'], - description=''' + shape=["x_vasp_incar_NBANDS * x_vasp_number_of_k_points"], + description=""" FERDO sets the occupancies of the states in the down-spin channel for ISMEAR=-2 and ISPIN=2. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_FERWE = Quantity( type=np.dtype(np.float64), - shape=['x_vasp_incar_NBANDS * x_vasp_number_of_k_points'], - description=''' + shape=["x_vasp_incar_NBANDS * x_vasp_number_of_k_points"], + description=""" FERWE sets the occupancies of the states for ISMEAR=-2. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_FINDIFF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag DIMER_DIST defines whether a forward (FINDIFF=1) or a central (FINDIFF=2) difference formula for the numerical differentiation to compute the curvature along the dimer direction is used in the Improved Dimer Method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_GGA = Quantity( type=str, shape=[], - description=''' + description=""" GGA specifies the type of generalized-gradient-approximation one wishes to use. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_GGA_COMPAT = Quantity( type=bool, shape=[], - description=''' + description=""" This flag restores the full lattice symmetry for gradient corrected functionals. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HFLMAX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" To be compatible w.r.t. old releases, VASP also reads the flag HFLMAX to the same effect as LMAXFOCK. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HFRCUT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HFRCUT specifies the spherical cutoff radius for the potential kernel in hybrid functionals. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HFSCREEN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HFSCREEN specifies the range-separation parameter in range separated hybrid functionals. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HILLS_BIN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" HILLS_BIN sets the number of steps after which the bias potential is updated in a metadynamics run (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HILLS_H = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HILLS_H specifies the height of the Gaussian hill (in eV) used in metadynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HILLS_W = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HILLS_W specifies the width of the Gaussian hill (in units of the corresponding collective variable) used in metadynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_HITOLER = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HITOLER specifies the convergence parameter for iterative Hirschfeld partitioning (DFT-TS/HI). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_I_CONSTRAINED_M = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" I_CONSTRAINED_M switches on the constrained local moments approach. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IALGO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IALGO selects the algorithm used to optimize the orbitals. WARNING - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IBAND = Quantity( type=np.dtype(np.uint32), - shape=['1..x_vasp_incar_NBANDS'], - description=''' + shape=["1..x_vasp_incar_NBANDS"], + description=""" Controls which bands are used in the calculation of Band decomposed charge densities. Check also NBMOD and EINT. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IBRION = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IBRION determines how the ions are updated and moved. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ICHARG = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ICHARG determines how VASP constructs the initial charge density. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ICHIBARE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" determines the order of the finite difference stencil used to calculate the magnetic susceptibility. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ICORELEVEL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ICORELEVEL controls whether the core energies are explicitely calculated or not and how they are calculated. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IDIPOL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IDIPOL switches on monopole/dipole and quadrupole corrections to the total energy. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IEPSILON = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag IEPSILON determines along which Cartesien the E field is applied. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IGPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the socalled parallel or $G_{||}$ direction in the integration over the reciprocal space unit cell needed for LCALCPOL. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IMAGES = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IMAGES defines the number of interpolated geometries between the initial and final state in Elastic Band calculations - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IMIX specifies the type of mixing. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_INCREM = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" INCREM controls the transformation velocity in the slow-growth approach (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_INIMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" INIMIX determines the functional form of the initial mixing matrix in the Broyden scheme (IMIX=4). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_INIWAV = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" INIWAV specifies how to set up the initial orbitals in case ISTART=0. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IPEAD = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IPEAD specifies the order of the finite difference stencil used to compute the derivative of the cell-periodic part of the orbitals w.r.t. **k** (LPEAD=.TRUE.), and the derivative of the polarization w.r.t. the orbitals, for (LCALCEPS=.TRUE., or EFIELD_PEAD$\\not=$0). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ISIF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISIF determines whether the stress tensor is calculated and which principal degrees-of-freedom are allowed to change in relaxation and molecular dynamics runs. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ISMEAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISMEAR determines how the partial occupancies $f_{n\\mathbf{k}}$ are set for each orbital. SIGMA determines the width of the smearing in eV. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ISPIN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISPIN specifies spin polarization. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ISTART = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISTART determines whether or not to read the WAVECAR file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ISYM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISYM determines the way VASP treats symmetry. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IVDW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag controls whether vdW corrections are calculated or not. If they are calculated IVDW controls how they are calculated. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_IWAVPR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IWAVPR determines how orbitals and/or charge densities are extrapolated from one ionic configuration to the next configuration. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_KBLOCK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" After KBLOCK*NBLOCK ionic steps the averaged pair correlation function and DOS are written to the files PCDAT and DOSCAR. More details can be found on the page describing the tag NBLOCK. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_KGAMMA = Quantity( type=bool, shape=[], - description=''' + description=""" Determines whether the _k_-points (determined by the tag KSPACING if KPOINTS file is not present) are center around (KGAMMA=.TRUE.), or shifted away (KGAMMA=.FALSE.) from the $\\Gamma$ point. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_KPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" KPAR determines the number of **k**-points that are to be treated in parallel (available as of VASP.5.3.2). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_KPOINT_BSE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag KPOINT_BSE allows to calculate the dielectric matrix at one of the kpoints used to sample the Brillouin zone. NOTE: Either specify one or three integers (FIXME) - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_KPUSE = Quantity( type=np.dtype(np.int32), - shape=['1..x_vasp_number_of_k_points'], - description=''' + shape=["1..x_vasp_number_of_k_points"], + description=""" Specifies which k-points are used in the evaluation of the partial dos (Band decomposed charge densities). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_KSPACING = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The tag KSPACING determines the number of k-points if the KPOINTS file is not present. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LADDER = Quantity( type=bool, shape=[], - description=''' + description=""" Controls whether the ladder diagrams are included in the BSE calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LAECHG = Quantity( type=bool, shape=[], - description=''' + description=""" When LAECHG=.TRUE. the all-electron charge density will be reconstructed explicitly and written out to file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LAMBDA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" LAMBDA sets the weight with which the penalty terms of the constrained local moment approach enter into the total energy expression and the Hamiltonian. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LANGEVIN_GAMMA = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LANGEVIN_GAMMA specifies the friction coefficients (in ps$^{-1}$) for atomic degrees-of-freedom when using a Langevin thermostat (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LANGEVIN_GAMMA_L = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" LANGEVIN_GAMMA_L specifies the friction coefficient (in ps$^{-1}$) for lattice degrees-of-freedom in case of Parrinello-Rahman dynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LASPH = Quantity( type=bool, shape=[], - description=''' + description=""" include non-spherical contributions related to the gradient of the density in the PAW spheres. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LASYNC = Quantity( type=bool, shape=[], - description=''' + description=""" This tag controls the overlap in communication. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LATTICE_CONSTRAINTS = Quantity( type=bool, shape=[3], - description=''' + description=""" The tag LATTICE_CONSTRAINTS determines whether the lattice dynamics are released (LATTICE_CONSTRAINTS=.TRUE.) in the given directions or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LBERRY = Quantity( type=bool, shape=[], - description=''' + description=""" This tag is used in the the evaluation of the Berry phase expression for the electronic polarization of an insulating system. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LBLUEOUT = Quantity( type=bool, shape=[], - description=''' + description=""" for LBLUEOUT=.TRUE., VASP writes output for the free-energy gradient calculation to the REPORT-file (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LBONE = Quantity( type=bool, shape=[], - description=''' + description=""" LBONE adds the small B-component to the chemical shift tensor. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LCALCEPS = Quantity( type=bool, shape=[], - description=''' + description=""" for LCALCEPS=.TRUE. the macroscopic ion-clamped static dielectric tensor, Born effective charge tensors, and the ion-clamped piezoelectric tensor of the system are determined from the response to finite electric fields. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LCALCPOL = Quantity( type=bool, shape=[], - description=''' + description=""" LCALCPOL=.TRUE. switches on the evaluation of the Berry phase expressions for the macroscopic electronic polarization in accordance with the so-called Modern Theory of Polarization. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LCHARG = Quantity( type=bool, shape=[], - description=''' + description=""" LCHARG determines whether the charge densities (files CHGCAR and CHG) are written. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LCHIMAG = Quantity( type=bool, shape=[], - description=''' + description=""" calculate the chemical shifts by means of linear response. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LCORR = Quantity( type=bool, shape=[], - description=''' + description=""" Controls whether Harris corrections are calculated or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDAU = Quantity( type=bool, shape=[], - description=''' + description=""" LDAU=.TRUE. switches on the L(S)DA+U. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDAUJ = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LDAUJ specifies the strength of the effective on-site exchange interactions. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDAUL = Quantity( type=np.dtype(np.int32), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LDAUL specifies the _l_-quantum number for which the on-site interaction is added. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDAUPRINT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LDAUPRINT controls the verbosity of the L(S)DA+U routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDAUTYPE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LDAUTYPE specifies which type of L(S)DA+U approach will be used. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDAUU = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LDAUU specifies the strength of the effective on-site Coulomb interactions. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDIAG = Quantity( type=bool, shape=[], - description=''' + description=""" This tag determines whether a subspace diagonalization is performed or not within the main algorithm selected by IALGO. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LDIPOL = Quantity( type=bool, shape=[], - description=''' + description=""" LDIPOL switches on corrections to the potential and forces in VASP. Can be applied for charged molecules and molecules and slabs with a net dipole moment. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LEFG = Quantity( type=bool, shape=[], - description=''' + description=""" The LEFG Computes the Electric Field Gradient at positions of the atomic nuclei. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LELF = Quantity( type=bool, shape=[], - description=''' + description=""" LELF determines whether to create an ELFCAR file or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LEPSILON = Quantity( type=bool, shape=[], - description=''' + description=""" LEPSILON=.TRUE. determines the static dielectric matrix, ion-clamped piezoelectric tensor and the Born effective charges using density functional perturbation theory. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LFOCKAEDFT = Quantity( type=bool, shape=[], - description=''' + description=""" LFOCKAEDFT forces VASP to use the same charge augmentation for the Hartree and DFT exchange correlation part as is used in the Fock exchange and the many body beyond DFT methods, such as RPA, MP2 etc. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LHARTREE = Quantity( type=bool, shape=[], - description=''' + description=""" Controls whether the bubble diagrams are included in the BSE calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LHFCALC = Quantity( type=bool, shape=[], - description=''' + description=""" LHFCALC specifies whether Hartree-Fock/DFT hybrid functional type calculations are performed. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LHYPERFINE = Quantity( type=bool, shape=[], - description=''' + description=""" compute the hyperfine tensors at the atomic sites (available as of vasp.5.3.2). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LKPROJ = Quantity( type=bool, shape=[], - description=''' + description=""" switches on the **k**-point projection scheme. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LLRAUG = Quantity( type=bool, shape=[], - description=''' + description=""" LLRAUG calculates the two-center contributions to the chemical shift tensor. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMAXFOCK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXFOCK sets the maximum angular momentum quantum number _L_ for the augmentation of charge densities in Hartree-Fock type routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMAXFOCKAE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NMAXFOCKAE and LMAXFOCKAE determine whether the overlap densities in the Fock exchange and correlated wave function methods are accurately reconstructed on the plane wave grid. This flag generally only applies to the Fock-exchange part as well as many-body post DFT methods (GW, RPA, MP2, etc.). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMAXMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXMIX controls up to which l-quantum number the one-center PAW charge densities are passed through the charge density mixer and written to the CHGCAR file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMAXPAW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXPAW sets the maximum _l_-quantum number for the evaluation of the one-center terms on the radial support grids in the PAW method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMAXTAU = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXTAU is the maximum _l_-quantum number included in the PAW one-center expansion of the kinetic energy density. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMIXTAU = Quantity( type=bool, shape=[], - description=''' + description=""" send the kinetic energy density through the density mixer as well. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LMONO = Quantity( type=bool, shape=[], - description=''' + description=""" LMONO switches on monopole-monopole corrections for the total energy. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LNABLA = Quantity( type=bool, shape=[], - description=''' + description=""" LNABLA=.TRUE. evaluates the transversal expression for the frequency dependent dielectric matrix. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LNMR_SYM_RED = Quantity( type=bool, shape=[], - description=''' + description=""" discard symmetry operations that are not consistent with the way _k_-space derivative are calculated in the linear response calculations of chemical shifts. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LNONCOLLINEAR = Quantity( type=bool, shape=[], - description=''' + description=""" LNONCOLLINEAR specifies whether fully non-collinear magnetic calculations are performed. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LOCPROJ = Quantity( type=str, shape=[], - description=''' + description=""" by means of the LOCPROJ-tag one may specify a (set of) local function(s) on which the orbitals are to be projected. These projections are written to the PROJCAR, LOCPROJ, and vasprun.xml files. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LOPTICS = Quantity( type=bool, shape=[], - description=''' + description=""" LOPTICS=.TRUE. calculates the frequency dependent dielectric matrix after the electronic ground state has been determined. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LORBIT = Quantity( type=str, shape=[], - description=''' + description=""" LORBIT, together with an appropriate RWIGS, determines whether the PROCAR or PROOUT files are written. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LORBMOM = Quantity( type=bool, shape=[], - description=''' + description=""" LORBMOM specifies whether the orbital moments are written out or not (in a calculation using LSORBIT=.TRUE.). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LPARD = Quantity( type=bool, shape=[], - description=''' + description=""" Determines whether partial (band or k-point decomposed) charge densities are evaluated. See also 'Band-decomposed charge densities' . - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LPEAD = Quantity( type=bool, shape=[], - description=''' + description=""" for LPEAD=.TRUE., the derivative of the cell-periodic part of the orbitals w.r.t. **k** is calculated using finite differences. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LPLANE = Quantity( type=bool, shape=[], - description=''' + description=""" LPLANE switches on the plane-wise data distribution in real space. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LREAL = Quantity( type=bool, shape=[], - description=''' + description=""" LREAL determines whether the projection operators are evaluated in real-space or in reciprocal space. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LRPA = Quantity( type=bool, shape=[], - description=''' + description=""" LRPA=.TRUE. includes local field effect on the Hartree level only. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSCAAWARE = Quantity( type=bool, shape=[], - description=''' + description=""" LSCAAWARE controls the distribution of the Hamilton matrix. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSCALAPACK = Quantity( type=bool, shape=[], - description=''' + description=""" LSCALAPACK controls the use of scaLAPACK. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSCALU = Quantity( type=bool, shape=[], - description=''' + description=""" LSCALU switches on the parallel LU decomposition (using scaLAPACK) in the orthonormalization of the wave functions. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSCSGRAD = Quantity( type=bool, shape=[], - description=''' + description=""" LSCSGRAD decides whether to compute gradients in the calculation of the MBD dispersion energy. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSELFENERGY = Quantity( type=bool, shape=[], - description=''' + description=""" This tag controls whether the frequency dependent self-energy is calculated or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSEPB = Quantity( type=bool, shape=[], - description=''' + description=""" Specifies whether the charge density is calculated for every band separately and written to a file PARCHG.nb.* (LSEPB=.TRUE.) or whether charge density is merged for all selected bands and written to the files PARCHG.ALLB.* or PARCHG. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSEPK = Quantity( type=bool, shape=[], - description=''' + description=""" Specifies whether the charge density of every k-point is write to the files PARCHG.*.nk (LSEPK=.TRUE.) or whether it is merged to a single file. If the merged file is written, then the weight of each k-point is determined from the KPOINTS file, otherwise the k-point weights of one are chosen. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSORBIT = Quantity( type=bool, shape=[], - description=''' + description=""" LSORBIT specifies whether spin-orbit coupling is taken into account. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSPECTRAL = Quantity( type=bool, shape=[], - description=''' + description=""" LSPECTRAL specifies to use the spectral method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSPECTRALGW = Quantity( type=bool, shape=[], - description=''' + description=""" LSPECTRALGW specifies to use the spectral method for calculating the self-energy. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSPIRAL = Quantity( type=bool, shape=[], - description=''' + description=""" set LSPIRAL=.TRUE. to represent spin spirals by means of a generalized Bloch condition. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LSUBROT = Quantity( type=bool, shape=[], - description=''' + description=""" LSUBROT determines whether an optimal rotation matrix between the occupied and unoccupied block is sought, when a direct optimization of the energy functional is performed (i.e. ALGO = All | Damped). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LTHOMAS = Quantity( type=bool, shape=[], - description=''' + description=""" LTHOMAS selects a decomposition of the exchange functional based on Thomas-Fermi screening. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LUSE_VDW = Quantity( type=bool, shape=[], - description=''' + description=""" The flag LUSE_VDW determines whether the VdW-DF functional of Langreth and Lundqvist et al. is used or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LVDW_EWALD = Quantity( type=bool, shape=[], - description=''' + description=""" LVDW_EWALD decides whether lattice summation in $E_{disp}$ expression by means of Ewald's summation is computed in the DFT-D2 method (available in VASP.5.3.4 and later). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LVDW_ONECELL = Quantity( type=bool, shape=[3], - description=''' + description=""" LVDW_ONECELL can be used to disable vdW interaction with mirror image in X Y Z direction. This is advisable for molecular calculations in the gas phase. In all other cases, use the default. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LVDWEXPANSION = Quantity( type=bool, shape=[], - description=''' + description=""" LVDWEXPANSION decides whether to write the two- to six- body contributions to MBD dispersion energy in the OUTCAR file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LVHAR = Quantity( type=bool, shape=[], - description=''' + description=""" This tag determines whether the total local potential (saved in the file LOCPOT) contains the entire local potential (ionic + Hartree + exchange correlation) or the electrostatic contributions only (ionic + Hartree). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LVTOT = Quantity( type=bool, shape=[], - description=''' + description=""" LVTOT determines whether the total local potential is written to the LOCPOT file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LWANNIER90 = Quantity( type=bool, shape=[], - description=''' + description=""" LWANNIER90=.TRUE. switches on the interface between VASP and WANNIER90. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LWANNIER90_RUN = Quantity( type=bool, shape=[], - description=''' + description=""" LWANNIER90_RUN executes wannier_setup (see LWANNIER90=.TRUE.) and subsequently runs WANNIER90 in library mode (wannier_run). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LWAVE = Quantity( type=bool, shape=[], - description=''' + description=""" LWAVE determines whether the wavefunctions are written to the WAVECAR file at the end of a run. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LWRITE_MMN_AMN = Quantity( type=bool, shape=[], - description=''' + description=""" LWRITE_MMN_AMN=.TRUE. tells the VASP2WANNIER90 interface to write the wannier90.mmn and wannier90.amn files. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LWRITE_UNK = Quantity( type=bool, shape=[], - description=''' + description=""" LWRITE_UNK decides whether the cell-periodic part of the relevant Bloch functions is written. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LWRITE_WANPROJ = Quantity( type=bool, shape=[], - description=''' + description=""" LWRITE_WANPROJ determines whether the Wannier projection fille WANPROJ is written. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_LZEROZ = Quantity( type=bool, shape=[], - description=''' + description=""" for LZEROZ=.TRUE. the _z_-component of the spin-spiral magnetisation density will be forced to be and to remain zero. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_M_CONSTR = Quantity( type=np.dtype(np.float64), - shape=['3*number_of_atoms'], - description=''' + shape=["3*number_of_atoms"], + description=""" M_CONSTR specifies the desired local magnetic moment (size and/or direction) for the constrained local moments approach. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_MAGMOM = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" MAGMOM Specifies the initial magnetic moment for each atom, if and only if ICHARG=2, or if ICHARG=1 and the CHGCAR file contains no magnetisation density - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_MAXMEM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MAXMEM specifies the maximum memory one MPI rank will attempt to allocate (in MByte). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_MAXMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MAXMIX specifies the maximum number steps stored in Broyden mixer IMIX=4). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_MDALGO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MDALGO specifies the molecular dynamics simulation protocol (in case IBRION=0 and VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_METAGGA = Quantity( type=str, shape=[], - description=''' + description=""" selects one of various meta-GGA functionals. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_MINROT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag MINROT defines the value for which the dimer is rotated only if the predicted rotation angle is greater than MINROT (rad.) in the Improved Dimer Method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_MIXPRE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MIXPRE specifies the metric in the Broyden mixing scheme(IMIX=4). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_AFILT2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the filtering parameter for the angular filtering for ML_FF_IAFILT2_MB in the machine learning force-field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_CDOUB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag controls the necessity of DFT calculations in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_CSF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the threshold for the spilling factor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_CSIG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter used in the automatic determination of threshold for Bayesian error estimation in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_CSLOPE = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter used in the automatic determination of threshold for Bayesian error estimation in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_CTIFOR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the threshold for the Bayesian error estimation on the force in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_EATOM = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Reference total energies of isolated atoms used in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_IAFILT2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the type of angular filtering used in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_IBROAD1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines how the atomic distribution is broadened for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_IBROAD2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines how the atomic distribution is broadened for the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ICOUPLE_MB = Quantity( type=np.dtype(np.int32), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" This tag specifies the atoms where the coupling parameter is introduced to calculate the chemical potential within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ICUT1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the type of cutoff function used for the radial descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ICUT2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the type of cutoff function used for the angular descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_IERR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag selects the error estimation method used in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_IREG_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies whether the regularization parameters are kept constant or not in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ISAMPLE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag controls the sampling in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ISCALE_TOTEN_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies how to scale the energy data for the many-body term in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ISOAP1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag defines the type of the SOAP kernel for the radial descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ISOAP2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag defines the type of the SOAP kernel for the angular descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_ISTART = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag decides if and how calculations are continued from existing data in machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_IWEIGHT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Flag to control the weighting of training data in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LAFILT2_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether angular filtering is applied or not within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LBASIS_DISCARD = Quantity( type=bool, shape=[], - description=''' + description=""" This variable specifies whether the basis sets are thrown away when its number exceeds ML_FF_MB_MB in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LCONF_DISCARD = Quantity( type=bool, shape=[], - description=''' + description=""" This flag decides whether configurations that do not provide local reference configurations are discarded or not in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LCOUPLE_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether coupling parameters are used for the calculation of chemical potentials is used or not within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LCRITERIA = Quantity( type=bool, shape=[], - description=''' + description=""" Decides whether the threshold in the learning decision step for the Bayesian error estimation is renewed or not in the machine learning force field methods. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LEATOM_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This term specifies whether the total atomic energy is written out or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LHEAT_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This flag specifies whether the heat flux is calculated or not in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LMAX2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the maximum angular momentum quantum number of spherical harmonics used to expand atomic distributions within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LMLFF = Quantity( type=bool, shape=[], - description=''' + description=""" Main control tag whether to use machine learned force fields or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LMLMB = Quantity( type=bool, shape=[], - description=''' + description=""" This controls whether the many-body interaction term is included in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LNORM1_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether the radial descriptor is normalized (by dividing through it's norm) or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_LNORM2_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether the angular descriptor is normalized (by dividing through it's norm) or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MB_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the maximum number of basis sets describing the many-body interactions in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MCONF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the maximum number of configurations used for training in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MCONF_NEW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number of configurations that are stored temporally as candidates for the training data in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MHIS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number of estimated errors stored in memory to determine the threshold for the Bayesian error in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MRB1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of radial basis sets used to expand the atomic distribution for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MRB2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of radial basis sets used to expand the atomic distribution for the angular descriptor withtin the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MSPL1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of points for the radial grid used in the spline interpolation for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_MSPL2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of points for the radial grid used in the spline interpolation of the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NATOM_COUPLED_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the number of atoms for which a coupling parameter is introduced to calculate the chemical potential within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NDIM_SCALAPACK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the dimension of the ScaLAPACK grids used in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NHYP1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Polynomial power of the radial kernel. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NHYP2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Polynomial parameter (power) of the SOAP kernel. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NMDINT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Tag to control the minimum interval to get training samples in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NR1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines the number of grid points used to execute radial integrations to compute the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NR2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines the number of grid points used to execute radial integrations to compute the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_NWRITE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag controls part of the output within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_RCOUPLE_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the value of the coupling parameter for the calculation of the chemical potential within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_RCUT1_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the cutoff radius for the radial descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_RCUT2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the cutoff radius for the angular descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_SIGV0_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the initial noise parameter in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_SIGW0_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the initial precision parameter in the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_SION1_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the width of the Gaussian functions used for broadening the atomic distributions for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_SION2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the width of the Gaussian functions used for broadening the atomic distributions of the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_W1_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag defines the weight for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_W2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag defines the weight for the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_WTIFOR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the weight for the scaling of the forces in the training data within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_WTOTEN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the weight for the scaling of the total energy in the training data within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ML_FF_WTSIF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the weight for the scaling of the total energy in the training data within the machine learning force field method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBANDS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBANDS determines the actual number of bands in the calculation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBANDSGW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag determines how many QP energies are calculated and updated in GW type calculations. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBANDSO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBANDSO determines how many occupied orbitals are included in the Casida/BSE calculations or time-propagation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBANDSV = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBANDSV determines how many unoccupied orbitals are included in the Casida/BSE calculations or timepropagation. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBLK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBLK determines the blocking factor in many BLAS level 3 routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBLOCK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" After NBLOCK ionic steps the pair correlation function and the DOS are calculated and the ionic configuration is written to the XDATCAR-file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBMOD = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Controls which bands are used in the calculation of Band decomposed charge densities. Check also IBAND and EINT. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NBSEEIG = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBSEEIG sets the number number of BSE eigenvectors written to the BSEFATBAND output file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NCORE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NCORE determines the number of compute cores that work on an individual orbital (available as of VASP.5.2.13). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NCRPA_BANDS = Quantity( type=np.dtype(np.int32), - shape=['1..x_vasp_incar_NBANDS'], - description=''' + shape=["1..x_vasp_incar_NBANDS"], + description=""" Controls which bands are excluded in CRPA. Check also NTARGET_STATES. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NDAV = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NDAV sets the maximum number of iterative steps per bands per RMM-DIIS step (IALGO=4X). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NEDOS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NEDOS specifies number of gridpoints on which the DOS is evaluated - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NELECT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" NELECT sets the number of electrons. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NELM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NELM sets the maximum number of electronic SC (selfconsistency) steps which may be performed. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NELMDL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NELMDL specifies the number of non-selfconsistent steps at the beginning. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NELMIN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NELMIN specifies the minimum number of electronic SCF steps. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NFREE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" depending on IBRION, NFREE specifies the number of remembered steps in the history of ionic convergence runs, or the number of ionic displacements in frozen phonon calculations. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGX sets the number of grid points in the FFT-grid along the first lattice vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGXF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGXF sets the number of grid points in the fine FFT-grid along the first lattice vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGY = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGY sets the number of grid points in the FFT-grid along the second lattice vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGYF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGYF sets the number of grid points in the fine FFT-grid along the second lattice vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGYROMAG = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" NGYROMAG specifies the nuclear gyromagnetic ratios (in MHz, for H0 = 1 T) for the atomic types on the POTCAR file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGZ = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGZ sets the number of grid points in the FFT-grid along the third lattice vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NGZF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGZF sets the number of grid points in the fine FFT-grid along the first lattice vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NKRED = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKRED specifies an uniform reduction factor for the **q**-point grid representation of the exact exchange potential and the correlation part in GW calculations. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NKREDX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKREDX specifies a reduction factor for the **q**-point grid representation of the exact exchange potential along reciprocal space direction **b**1. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NKREDY = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKREDY specifies a reduction factor for the **q**-point grid representation of the exact exchange potential along reciprocal space direction **b**2. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NKREDZ = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKREDZ specifies a reduction factor for the **q**-point grid representation of the exact exchange potential along reciprocal space direction **b**3. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NLSPLINE = Quantity( type=bool, shape=[], - description=''' + description=""" construct the PAW projectors in reciprocal space using spline interpolation so that they are _k_-differentiable. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NMAXFOCKAE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NMAXFOCKAE and LMAXFOCKAE determine whether the overlap densities in the Fock exchange and correlated wave function methods are accurately reconstructed on the plane wave grid. This flag generally only applies to the Fock-exchange part as well as many-body post DFT methods (GW, RPA, MP2, etc.). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NOMEGA = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NOMEGA specifies the number of (imaginary) frequency and imaginary time grid points. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NOMEGAPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NOMEGAPAR available as of VASP.6, specifies the number of processor groups sharing the same imaginary frequency grid points.. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NOMEGAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NOMEGAR specifies the number of frequency grid points along the real axis. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NPACO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NPACO sets the number of slots in the pair-correlation function written to PCDAT. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NPAR determines the number of bands that are treated in parallel. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NPPSTR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NPPSTR specifies the number of k-points on the strings in the IGPAR direction. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NSIM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NSIM sets the number of bands that are optimized simultaneously by the RMM-DIIS algorithm. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NSUBSYS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NSUBSYS defines the atomic subsystems in calculations with multiple Anderson thermostats (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NSW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NSW sets the maximum number of ionic steps. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NTARGET_STATES = Quantity( type=np.dtype(np.int32), - shape=['x_vasp_incar_NBANDS'], - description=''' + shape=["x_vasp_incar_NBANDS"], + description=""" Controls which Wannier states are excluded in CRPA. Check also NCRPA_BANDS. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NTAUPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NTAUPAR available as of VASP.6, specifies the number of MPI groups sharing same imaginary time grid points. The default value of NTAUPAR is set automatically and depends on MAXMEM, the available memory for each rank on one node. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NUPDOWN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Sets the difference between the number of electrons in the up and down spin components. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_NWRITE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag determines how much will be written to the file OUTCAR ('verbosity flag'). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ODDONLY = Quantity( type=bool, shape=[], - description=''' + description=""" ODDONLY=.TRUE. selects a subset of **k**-points for the representation of the Fock exchange potential, with _C_1=_C_2=_C_3=1, and _n_1+_n_2+_n_3 odd. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ODDONLYGW = Quantity( type=bool, shape=[], - description=''' + description=""" ODDONLYGW allows to avoid the inclusion of the point in the evaluation of response functions (in GW calculations). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OFIELD_A = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_A sets the desired order parameter *Q*6 in the Interface pinning method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OFIELD_KAPPA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_KAPPA sets the strength of bias potential in units of 'eV/(unit of Q)$^2$' in the Interface pinning method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OFIELD_Q6_FAR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_Q6_FAR sets the far fading distance (in Angstroms) for the computation of a continuous to *Q*6 parameter in the Interface pinning method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OFIELD_Q6_NEAR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_Q6_NEAR sets the near fading distance (in Angstroms) for the computation of a continuous *Q*6 parameter in the Interface pinning method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OMEGAMAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" OMEGAMAX specifies the maximum frequency for dense part of the frequency grid. For CRPA calculations, OMEGAMAX is the frequency point of the interaction. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OMEGAMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" minimum frequency in the frequency grid. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_OMEGATL = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" OMEGATL specifies the maximum frequency for coarse part of the frequency grid. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PARAM1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag PARAM1 determines the first parameter used in the enhancement factor of the optPBE-vdW and optB88-vdW functional. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PARAM2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag PARAM2 determines the second parameter used in the enhancement factor of the optPBE-vdW and optB88-vdW functional. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PFLAT = Quantity( type=bool, shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PHON_LBOSE = Quantity( type=bool, shape=[], - description=''' + description=""" This flag determines whether random structures in the Monte-Carlo (MC) sampling are created according to Bose-Einstein or Maxwell-Boltzmann statistics. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PHON_LMC = Quantity( type=bool, shape=[], - description=''' + description=""" This flag controls whether electron-phonon interactions from Monte-Carlo sampling are calculated or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PHON_NSTRUCT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number of structures for electron-phonon interactions from Monte-Carlo (MC) sampling. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PHON_NTLIST = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number temperatures for that the electron-phonon interactions using the ZG configuration is evaluated. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PHON_TLIST = Quantity( type=np.dtype(np.int32), - shape=['x_vasp_incar_PHON_NTLIST'], - description=''' + shape=["x_vasp_incar_PHON_NTLIST"], + description=""" This flag provides the list of temperatures for that the electron-phonon interactions using the ZG configuration is evaluated. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PLEVEL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PMASS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" PMASS assigns a fictitious mass (in amu) to the lattice degrees-of-freedom in case of Parrinello-Rahman dynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_POMASS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" POMASS describes the mass of each atomic sphere in atomic units. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_POTIM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" POTIM sets the time step (MD) or step width scaling (ionic relaxations). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PREC = Quantity( type=str, shape=[], - description=''' + description=""" PREC specifies the precision mode. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PRECFOCK = Quantity( type=str, shape=[], - description=''' + description=""" PRECFOCK controls the FFT grids used in the exact exchange routines (Hartree-Fock and hybrid functionals). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PROUTINE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PSTRESS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag controls whether Pulay corrections are added to the stress tensor or not. In molecular dynamics calculations it controls the pressure. The unit of PSTRESS is in kB. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PSUBSYS = Quantity( type=np.dtype(np.float64), - shape=['1..3'], - description=''' + shape=["1..3"], + description=""" PSUBSYS sets the collision probabilities for the atoms in each atomic subsystem in calculations with multiple Anderson thermostats (in case VASP was compiled with -Dtbdyn). Note: 0 ≤ PSUBSYS ≤ 1 - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_PTHRESHOLD = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_QMAXFOCKAE = Quantity( type=np.dtype(np.float64), - shape=['1..x_vasp_number_of_k_points'], - description=''' + shape=["1..x_vasp_number_of_k_points"], + description=""" The parameter QMAXFOCKAE controls at which wave vectors the local augmentation charges are fitted to obtain an accurate charge augmentation on the plane wave grid. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_QSPIRAL = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" the QSPIRAL-tag specifies the spin spiral propagation vector. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_QUAD_EFG = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" nuclear quadrupole moment (in millbarn) for the atomic types on the POTCAR file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_RANDOM_SEED = Quantity( type=np.dtype(np.int32), - shape=['x'], - description=''' + shape=["x"], + description=""" RANDOM_SEED specifies the seed of the random-number-generator (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ROPT = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" ROPT determines how precise the projectors are represented in real space. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_RWIGS = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" RWIGS specifies the Wigner-Seitz radius for each atom type. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SAXIS = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" SAXIS specifies the quantisation axis for noncollinear spins. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SCSRAD = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCSRAD defines the cutoff radius (in Angs ) used in the calculation of $\\tau_{ij}$ within the Tkatchenko-Scheffler method. Self-consistent screening in Tkatchenko-Scheffler method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SHAKEMAXITER = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" SHAKEMAXITER specifies the maximum number of iterations in the SHAKE algorithm (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SHAKETOL = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SHAKETOL specifies the tolerance for the SHAKE algorithm (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SIGMA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SIGMA specifies the width of the smearing in eV. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SMASS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SMASS controls the velocities during an ab-initio molecular dynamics run. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SMEARINGS = Quantity( type=np.dtype(np.int32), - shape=['x_vasp_incar_NSW'], - description=''' + shape=["x_vasp_incar_NSW"], + description=""" SMEARINGS defines the smearing parameters for ISMEAR=-3 in the calculation of the partial occupancies. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SPRING = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" SPRING gives the spring constant between the images as used in the elastic band method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_STEP_MAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag STEP_MAX defines the trust radius (upper limit) for the optimization step (in Angs ) in the Improved Dimer Method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_STEP_SIZE = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag STEP_SIZE defines the trial step size for the optimization step (in Angs ) in the Improved Dimer Method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SYMPREC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SYMPREC determines to which accuracy the positions in the POSCAR file must be specified (as of VASP.4.4.4). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_SYSTEM = Quantity( type=str, shape=[], - description=''' + description=""" The 'title string' defined by SYSTEM is for the user only and should help the user to identify what he wants to do with this specific input file. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_TEBEG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TEBEG sets the start temperature for an ab-initio molecular dynamics run (IBRION=0) and other routines (e.g. Electron-phonon interactions from Monte-Carlo sampling). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_TEEND = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TEEND sets the final temperature for an ab-initio molecular dynamics run (IBRION=0; SMASS=−1). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_TIME = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TIME controls the time step for IALGO=5X and for the initial (steepest descent) phase of IALGO=4X. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_TSUBSYS = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" TSUBSYS sets the temperatures for the atomic subsystems in calculations with multiple Anderson thermostats (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VALUE_MAX = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" VALUE_MAX sets the upper limits for the monitoring of geometric parameters (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VALUE_MIN = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" VALUE_MIN sets the lower limits for the monitoring of geometric parameters (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VCUTOFF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The parameter VCUTOFF sets the energy cutoff for bare Coulomb matrix elements and controls the basis set for the bare Coulomb interaction. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_A1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_A1 defines the damping function parameter in the DFT-D3 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_A2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_A2 defines the damping function parameter in the DFT-D3 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_C6 = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" VDW_C6 defines the $C_6$ parameters (units: J.nm$^6$mol$^{-1}$ ) for each species defined in the POSCAR file within the DFT-D2 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_CNRADIUS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_CNRADIUS defines the cutoff radius (in Angs ) for the calculation of the coordination numbers used in the DFT-D3 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_D = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_D defines the damping parameter _d_ in the DFT-D2method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_R0 = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" VDW_R0 defines the $R_0$ parameters (units: Angs ) for each species defined in the POSCAR file within the DFT-D2 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_RADIUS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_RADIUS defines the cutoff radius (in Angs) for the pair interactions used in the DFT-D2 and DFT-D3 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_S6 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_S6 defines the global scaling factor _S_6_ in the DFT-D2 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_S8 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_S8 defines the damping function parameter $s_8$ in the DFT-D3 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VDW_SR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_SR defines the damping function parameter $S_R$ (or scaling factor) in the DFT-D2 and DFT-D3 method. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_VOSKOWN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Determines whether Vosko-Wilk-Nusair interpolation is used or not. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_WC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" WC specifies the weight factor for each step in Broyden mixing scheme (IMIX=4). - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_WEIMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" WEIMIN specifies the maximum weight for a band to be considered empty. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) x_vasp_incar_ZVAL = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ZVAL describes the valency of each atomic sphere. - ''', - categories=[x_vasp_incar_param]) + """, + categories=[x_vasp_incar_param], + ) diff --git a/electronicparsers/vasp/metainfo/vasp_incarsOut.py b/electronicparsers/vasp/metainfo/vasp_incarsOut.py index 4e593bfa..a2eaee61 100644 --- a/electronicparsers/vasp/metainfo/vasp_incarsOut.py +++ b/electronicparsers/vasp/metainfo/vasp_incarsOut.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,3048 +39,3390 @@ class x_vasp_incarOut_param(MCategory): - ''' + """ Incar parameters. Value stored in incar. - ''' + """ m_def = Category() class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_vasp_incarOut_ADDGRID = Quantity( type=bool, shape=[], - description=''' + description=""" ADDGRID determines whether an additional support grid is used for the evaluation of the augmentation charges. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_AEXX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AEXX specifies the fraction of exact exchange in a Hartree-Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_AGGAC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AGGAC specifies the fraction of gradient corrections to the correlation in a Hartree-Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_AGGAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AGGAX specifies the fraction of gradient corrections to the exchange in a Hartree- Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ALDAC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ALDAC specifies the fraction of LDA correlation in a Hartree-Fock/DFT hybrid functional type calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ALGO = Quantity( type=str, shape=[], - description=''' + description=""" Option to specify the electronic minimisation algorithm (as of VASP.4.5) and/or to select the type of GW calculations. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_AMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AMIN specifies the minimal mixing parameter in Kerker's initial approximation to the charge dielectric function used in the Broyden / Pulay mixing scheme (IMIX=4, INIMIX=1). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_AMIX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AMIX specifies the linear mixing parameter. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_AMIX_MAG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" AMIX_MAG linear mixing parameter for the magnetization density. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ANDERSEN_PROB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ANDERSEN_PROB sets the collision probability for the Anderson thermostat (in case VASP was compiled with the flag -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ANTIRES = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag ANTIRES determines whether the Tamm-Dancoff approximation is used or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_APACO = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" APACO sets the maximum distance in the evaluation of the pair-correlation function (in Angstroms). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_BMIX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" BMIX sets the cutoff wave vector for Kerker mixing scheme (IMIX = 1 and / or INIMIX = 1). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_BMIX_MAG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" BMIX_MAG sets the cutoff wave vector for Kerker mixing scheme (IMIX=1 and/or INIMIX=1) for the magnetization density. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CH_LSPEC = Quantity( type=bool, shape=[], - description=''' + description=""" This flag controls whether the imaginary part of the dielectric function for a selected core electron is calculated and written to the OUTCAR file or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CH_NEDOS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the number of frequency (energy) grid points on the x-axis in the calculation of the dielectric function for XAS spectra. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CH_SIGMA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the broadening in eV of the imaginary dielectric function for a core electron. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CLL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CLL selects the angular (l) quantum number of the excited electron when using ICORELEVEL=2. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CLN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CLN selects the main quantum number of the excited electron when using ICORELEVEL=2. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CLNT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" CLNT selects for which species the core levels are calculated using the tag ICORELEVEL. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CLZ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CLZ selects the electron count of the excited electron when using ICORELEVEL=2. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CMBJ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" defines the _c_ parameter in the modified Becke-Johnson meta-GGA potential. NOTE: Either specify a single value, or one value per atomic type (FIXME) - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CMBJA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" sets the $\\alpha$ parameter in the modified Becke-Johnson meta-GGA potential. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CMBJB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" sets the $\\eta$ parameter in the modified Becke-Johnson meta-GGA potential. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_CSHIFT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" CSHIFT sets the (small) complex shift $\\eta$ in the Kramers-Kronig transformation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_DEPER = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" DEPER specifies a relative stopping criterion for the optimization of an eigenvalue. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_DIMER_DIST = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag DIMER_DIST defines the step size for the numerical differentiation (in Angstrongs) for the Improved Dimer Method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_DIPOL = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" Specifies the center of the cell in direct lattice coordinates with respect to which the total dipole-moment in the cell is calculated. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_DQ = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Step size for the finite difference _k_-space derivative in the linear response calculation of chemical shifts. Typical values for DQ are in the range [0.001 - 0.003]. The default is often sufficient - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EBREAK = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EBREAK specifies an absolute stopping criterion for the optimization of an eigenvalue. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EDIFF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EDIFF specifies the global break condition for the electronic SC-loop. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EDIFFG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EDIFFG defines the break condition for the ionic relaxation loop. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EFIELD = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EFIELD controls the magnitude of the applied electric force field. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EFIELD_PEAD = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" EFIELD_PEAD specifies the homogeneous electric field in the electric enthalpy functional used to compute the self-consistent response to finite electric fields. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EINT = Quantity( type=np.dtype(np.float64), shape=[2], - description=''' + description=""" Specifies the energy range of the bands that are used for the evaluation of the partial charge density needed in Band decomposed charge densities. Check also NBMOD and IBAND. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EMAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EMAX specifies the upper boundary of the energy range for the evaluation of the DOS. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" specifies the lower boundary of the energy range for the evaluation of the DOS. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ENAUG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ENAUG specifies the cut-off energy of the plane wave representation of the augmentation charges in eV. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ENCUT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ENCUT specifies the cutoff energy for the planewave basis set in eV. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ENCUTFOCK = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The ENCUTFOCK tag sets the energy cutoff that determines the FFT grids used by the Hartree-Fock routines. WARNING: The flag ENCUTFOCK is no longer supported in VASP.5.2.4 and newer versions. Please use PRECFOCK instead. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ENCUTGW = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The tag ENCUTGW sets the energy cutoff for response function. It controls the basis set for the response functions in exactly the same manner as ENCUT does for the orbitals. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ENCUTGWSOFT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag ENCUTGWSOFT sets the energy cutoff for response function, such that it allows to truncate the Coulomb kernel slowly between the energy specified by ENCUTGWSOFT and ENCUTGW. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ENINI = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ENINI controls the cutoff during the initial (steepest descent) phase for IALGO=48. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EPSILON = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" EPSILON sets the dielectric constant of the medium. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EVENONLY = Quantity( type=bool, shape=[], - description=''' + description=""" EVENONLY=.TRUE. selects a subset of k-points for the representation of the Fock exchange potential, with $C_1=C_2=C_3=1$, and $n_1+n_2+n_3$ even. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_EVENONLYGW = Quantity( type=bool, shape=[], - description=''' + description=""" EVENONLYGW allows to restrict the k-points in the evaluation of response functions (in GW calculations) to even values. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_FERDO = Quantity( type=np.dtype(np.float64), - shape=['x_vasp_incar_NBANDS * x_vasp_number_of_k_points'], - description=''' + shape=["x_vasp_incar_NBANDS * x_vasp_number_of_k_points"], + description=""" FERDO sets the occupancies of the states in the down-spin channel for ISMEAR=-2 and ISPIN=2. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_FERWE = Quantity( type=np.dtype(np.float64), - shape=['x_vasp_incar_NBANDS * x_vasp_number_of_k_points'], - description=''' + shape=["x_vasp_incar_NBANDS * x_vasp_number_of_k_points"], + description=""" FERWE sets the occupancies of the states for ISMEAR=-2. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_FINDIFF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag DIMER_DIST defines whether a forward (FINDIFF=1) or a central (FINDIFF=2) difference formula for the numerical differentiation to compute the curvature along the dimer direction is used in the Improved Dimer Method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_GGA = Quantity( type=str, shape=[], - description=''' + description=""" GGA specifies the type of generalized-gradient-approximation one wishes to use. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_GGA_COMPAT = Quantity( type=bool, shape=[], - description=''' + description=""" This flag restores the full lattice symmetry for gradient corrected functionals. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HFLMAX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" To be compatible w.r.t. old releases, VASP also reads the flag HFLMAX to the same effect as LMAXFOCK. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HFRCUT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HFRCUT specifies the spherical cutoff radius for the potential kernel in hybrid functionals. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HFSCREEN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HFSCREEN specifies the range-separation parameter in range separated hybrid functionals. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HILLS_BIN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" HILLS_BIN sets the number of steps after which the bias potential is updated in a metadynamics run (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HILLS_H = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HILLS_H specifies the height of the Gaussian hill (in eV) used in metadynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HILLS_W = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HILLS_W specifies the width of the Gaussian hill (in units of the corresponding collective variable) used in metadynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_HITOLER = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" HITOLER specifies the convergence parameter for iterative Hirschfeld partitioning (DFT-TS/HI). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_I_CONSTRAINED_M = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" I_CONSTRAINED_M switches on the constrained local moments approach. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IALGO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IALGO selects the algorithm used to optimize the orbitals. WARNING - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IBAND = Quantity( type=np.dtype(np.uint32), - shape=['1..x_vasp_incar_NBANDS'], - description=''' + shape=["1..x_vasp_incar_NBANDS"], + description=""" Controls which bands are used in the calculation of Band decomposed charge densities. Check also NBMOD and EINT. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IBRION = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IBRION determines how the ions are updated and moved. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ICHARG = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ICHARG determines how VASP constructs the initial charge density. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ICHIBARE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" determines the order of the finite difference stencil used to calculate the magnetic susceptibility. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ICORELEVEL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ICORELEVEL controls whether the core energies are explicitely calculated or not and how they are calculated. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IDIPOL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IDIPOL switches on monopole/dipole and quadrupole corrections to the total energy. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IEPSILON = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag IEPSILON determines along which Cartesien the E field is applied. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IGPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the socalled parallel or $G_{||}$ direction in the integration over the reciprocal space unit cell needed for LCALCPOL. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IMAGES = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IMAGES defines the number of interpolated geometries between the initial and final state in Elastic Band calculations - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IMIX specifies the type of mixing. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_INCREM = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" INCREM controls the transformation velocity in the slow-growth approach (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_INIMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" INIMIX determines the functional form of the initial mixing matrix in the Broyden scheme (IMIX=4). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_INIWAV = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" INIWAV specifies how to set up the initial orbitals in case ISTART=0. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IPEAD = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IPEAD specifies the order of the finite difference stencil used to compute the derivative of the cell-periodic part of the orbitals w.r.t. **k** (LPEAD=.TRUE.), and the derivative of the polarization w.r.t. the orbitals, for (LCALCEPS=.TRUE., or EFIELD_PEAD$\\not=$0). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ISIF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISIF determines whether the stress tensor is calculated and which principal degrees-of-freedom are allowed to change in relaxation and molecular dynamics runs. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ISMEAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISMEAR determines how the partial occupancies $f_{n\\mathbf{k}}$ are set for each orbital. SIGMA determines the width of the smearing in eV. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ISPIN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISPIN specifies spin polarization. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ISTART = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISTART determines whether or not to read the WAVECAR file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ISYM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" ISYM determines the way VASP treats symmetry. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IVDW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag controls whether vdW corrections are calculated or not. If they are calculated IVDW controls how they are calculated. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_IWAVPR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" IWAVPR determines how orbitals and/or charge densities are extrapolated from one ionic configuration to the next configuration. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_KBLOCK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" After KBLOCK*NBLOCK ionic steps the averaged pair correlation function and DOS are written to the files PCDAT and DOSCAR. More details can be found on the page describing the tag NBLOCK. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_KGAMMA = Quantity( type=bool, shape=[], - description=''' + description=""" Determines whether the _k_-points (determined by the tag KSPACING if KPOINTS file is not present) are center around (KGAMMA=.TRUE.), or shifted away (KGAMMA=.FALSE.) from the $\\Gamma$ point. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_KPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" KPAR determines the number of **k**-points that are to be treated in parallel (available as of VASP.5.3.2). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_KPOINT_BSE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag KPOINT_BSE allows to calculate the dielectric matrix at one of the kpoints used to sample the Brillouin zone. NOTE: Either specify one or three integers (FIXME) - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_KPUSE = Quantity( type=np.dtype(np.int32), - shape=['1..x_vasp_number_of_k_points'], - description=''' + shape=["1..x_vasp_number_of_k_points"], + description=""" Specifies which k-points are used in the evaluation of the partial dos (Band decomposed charge densities). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_KSPACING = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The tag KSPACING determines the number of k-points if the KPOINTS file is not present. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LADDER = Quantity( type=bool, shape=[], - description=''' + description=""" Controls whether the ladder diagrams are included in the BSE calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LAECHG = Quantity( type=bool, shape=[], - description=''' + description=""" When LAECHG=.TRUE. the all-electron charge density will be reconstructed explicitly and written out to file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LAMBDA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" LAMBDA sets the weight with which the penalty terms of the constrained local moment approach enter into the total energy expression and the Hamiltonian. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LANGEVIN_GAMMA = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LANGEVIN_GAMMA specifies the friction coefficients (in ps$^{-1}$) for atomic degrees-of-freedom when using a Langevin thermostat (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LANGEVIN_GAMMA_L = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" LANGEVIN_GAMMA_L specifies the friction coefficient (in ps$^{-1}$) for lattice degrees-of-freedom in case of Parrinello-Rahman dynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LASPH = Quantity( type=bool, shape=[], - description=''' + description=""" include non-spherical contributions related to the gradient of the density in the PAW spheres. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LASYNC = Quantity( type=bool, shape=[], - description=''' + description=""" This tag controls the overlap in communication. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LATTICE_CONSTRAINTS = Quantity( type=bool, shape=[3], - description=''' + description=""" The tag LATTICE_CONSTRAINTS determines whether the lattice dynamics are released (LATTICE_CONSTRAINTS=.TRUE.) in the given directions or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LBERRY = Quantity( type=bool, shape=[], - description=''' + description=""" This tag is used in the the evaluation of the Berry phase expression for the electronic polarization of an insulating system. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LBLUEOUT = Quantity( type=bool, shape=[], - description=''' + description=""" for LBLUEOUT=.TRUE., VASP writes output for the free-energy gradient calculation to the REPORT-file (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LBONE = Quantity( type=bool, shape=[], - description=''' + description=""" LBONE adds the small B-component to the chemical shift tensor. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LCALCEPS = Quantity( type=bool, shape=[], - description=''' + description=""" for LCALCEPS=.TRUE. the macroscopic ion-clamped static dielectric tensor, Born effective charge tensors, and the ion-clamped piezoelectric tensor of the system are determined from the response to finite electric fields. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LCALCPOL = Quantity( type=bool, shape=[], - description=''' + description=""" LCALCPOL=.TRUE. switches on the evaluation of the Berry phase expressions for the macroscopic electronic polarization in accordance with the so-called Modern Theory of Polarization. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LCHARG = Quantity( type=bool, shape=[], - description=''' + description=""" LCHARG determines whether the charge densities (files CHGCAR and CHG) are written. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LCHIMAG = Quantity( type=bool, shape=[], - description=''' + description=""" calculate the chemical shifts by means of linear response. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LCORR = Quantity( type=bool, shape=[], - description=''' + description=""" Controls whether Harris corrections are calculated or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDAU = Quantity( type=bool, shape=[], - description=''' + description=""" LDAU=.TRUE. switches on the L(S)DA+U. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDAUJ = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LDAUJ specifies the strength of the effective on-site exchange interactions. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDAUL = Quantity( type=np.dtype(np.int32), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LDAUL specifies the _l_-quantum number for which the on-site interaction is added. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDAUPRINT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LDAUPRINT controls the verbosity of the L(S)DA+U routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDAUTYPE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LDAUTYPE specifies which type of L(S)DA+U approach will be used. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDAUU = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" LDAUU specifies the strength of the effective on-site Coulomb interactions. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDIAG = Quantity( type=bool, shape=[], - description=''' + description=""" This tag determines whether a subspace diagonalization is performed or not within the main algorithm selected by IALGO. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LDIPOL = Quantity( type=bool, shape=[], - description=''' + description=""" LDIPOL switches on corrections to the potential and forces in VASP. Can be applied for charged molecules and molecules and slabs with a net dipole moment. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LEFG = Quantity( type=bool, shape=[], - description=''' + description=""" The LEFG Computes the Electric Field Gradient at positions of the atomic nuclei. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LELF = Quantity( type=bool, shape=[], - description=''' + description=""" LELF determines whether to create an ELFCAR file or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LEPSILON = Quantity( type=bool, shape=[], - description=''' + description=""" LEPSILON=.TRUE. determines the static dielectric matrix, ion-clamped piezoelectric tensor and the Born effective charges using density functional perturbation theory. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LFOCKAEDFT = Quantity( type=bool, shape=[], - description=''' + description=""" LFOCKAEDFT forces VASP to use the same charge augmentation for the Hartree and DFT exchange correlation part as is used in the Fock exchange and the many body beyond DFT methods, such as RPA, MP2 etc. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LHARTREE = Quantity( type=bool, shape=[], - description=''' + description=""" Controls whether the bubble diagrams are included in the BSE calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LHFCALC = Quantity( type=bool, shape=[], - description=''' + description=""" LHFCALC specifies whether Hartree-Fock/DFT hybrid functional type calculations are performed. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LHYPERFINE = Quantity( type=bool, shape=[], - description=''' + description=""" compute the hyperfine tensors at the atomic sites (available as of vasp.5.3.2). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LKPROJ = Quantity( type=bool, shape=[], - description=''' + description=""" switches on the **k**-point projection scheme. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LLRAUG = Quantity( type=bool, shape=[], - description=''' + description=""" LLRAUG calculates the two-center contributions to the chemical shift tensor. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMAXFOCK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXFOCK sets the maximum angular momentum quantum number _L_ for the augmentation of charge densities in Hartree-Fock type routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMAXFOCKAE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NMAXFOCKAE and LMAXFOCKAE determine whether the overlap densities in the Fock exchange and correlated wave function methods are accurately reconstructed on the plane wave grid. This flag generally only applies to the Fock-exchange part as well as many-body post DFT methods (GW, RPA, MP2, etc.). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMAXMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXMIX controls up to which l-quantum number the one-center PAW charge densities are passed through the charge density mixer and written to the CHGCAR file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMAXPAW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXPAW sets the maximum _l_-quantum number for the evaluation of the one-center terms on the radial support grids in the PAW method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMAXTAU = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LMAXTAU is the maximum _l_-quantum number included in the PAW one-center expansion of the kinetic energy density. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMIXTAU = Quantity( type=bool, shape=[], - description=''' + description=""" send the kinetic energy density through the density mixer as well. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LMONO = Quantity( type=bool, shape=[], - description=''' + description=""" LMONO switches on monopole-monopole corrections for the total energy. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LNABLA = Quantity( type=bool, shape=[], - description=''' + description=""" LNABLA=.TRUE. evaluates the transversal expression for the frequency dependent dielectric matrix. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LNMR_SYM_RED = Quantity( type=bool, shape=[], - description=''' + description=""" discard symmetry operations that are not consistent with the way _k_-space derivative are calculated in the linear response calculations of chemical shifts. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LNONCOLLINEAR = Quantity( type=bool, shape=[], - description=''' + description=""" LNONCOLLINEAR specifies whether fully non-collinear magnetic calculations are performed. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LOCPROJ = Quantity( type=str, shape=[], - description=''' + description=""" by means of the LOCPROJ-tag one may specify a (set of) local function(s) on which the orbitals are to be projected. These projections are written to the PROJCAR, LOCPROJ, and vasprun.xml files. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LOPTICS = Quantity( type=bool, shape=[], - description=''' + description=""" LOPTICS=.TRUE. calculates the frequency dependent dielectric matrix after the electronic ground state has been determined. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LORBIT = Quantity( type=str, shape=[], - description=''' + description=""" LORBIT, together with an appropriate RWIGS, determines whether the PROCAR or PROOUT files are written. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LORBMOM = Quantity( type=bool, shape=[], - description=''' + description=""" LORBMOM specifies whether the orbital moments are written out or not (in a calculation using LSORBIT=.TRUE.). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LPARD = Quantity( type=bool, shape=[], - description=''' + description=""" Determines whether partial (band or k-point decomposed) charge densities are evaluated. See also 'Band-decomposed charge densities' . - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LPEAD = Quantity( type=bool, shape=[], - description=''' + description=""" for LPEAD=.TRUE., the derivative of the cell-periodic part of the orbitals w.r.t. **k** is calculated using finite differences. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LPLANE = Quantity( type=bool, shape=[], - description=''' + description=""" LPLANE switches on the plane-wise data distribution in real space. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LREAL = Quantity( type=bool, shape=[], - description=''' + description=""" LREAL determines whether the projection operators are evaluated in real-space or in reciprocal space. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LRPA = Quantity( type=bool, shape=[], - description=''' + description=""" LRPA=.TRUE. includes local field effect on the Hartree level only. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSCAAWARE = Quantity( type=bool, shape=[], - description=''' + description=""" LSCAAWARE controls the distribution of the Hamilton matrix. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSCALAPACK = Quantity( type=bool, shape=[], - description=''' + description=""" LSCALAPACK controls the use of scaLAPACK. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSCALU = Quantity( type=bool, shape=[], - description=''' + description=""" LSCALU switches on the parallel LU decomposition (using scaLAPACK) in the orthonormalization of the wave functions. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSCSGRAD = Quantity( type=bool, shape=[], - description=''' + description=""" LSCSGRAD decides whether to compute gradients in the calculation of the MBD dispersion energy. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSELFENERGY = Quantity( type=bool, shape=[], - description=''' + description=""" This tag controls whether the frequency dependent self-energy is calculated or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSEPB = Quantity( type=bool, shape=[], - description=''' + description=""" Specifies whether the charge density is calculated for every band separately and written to a file PARCHG.nb.* (LSEPB=.TRUE.) or whether charge density is merged for all selected bands and written to the files PARCHG.ALLB.* or PARCHG. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSEPK = Quantity( type=bool, shape=[], - description=''' + description=""" Specifies whether the charge density of every k-point is write to the files PARCHG.*.nk (LSEPK=.TRUE.) or whether it is merged to a single file. If the merged file is written, then the weight of each k-point is determined from the KPOINTS file, otherwise the k-point weights of one are chosen. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSORBIT = Quantity( type=bool, shape=[], - description=''' + description=""" LSORBIT specifies whether spin-orbit coupling is taken into account. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSPECTRAL = Quantity( type=bool, shape=[], - description=''' + description=""" LSPECTRAL specifies to use the spectral method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSPECTRALGW = Quantity( type=bool, shape=[], - description=''' + description=""" LSPECTRALGW specifies to use the spectral method for calculating the self-energy. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSPIRAL = Quantity( type=bool, shape=[], - description=''' + description=""" set LSPIRAL=.TRUE. to represent spin spirals by means of a generalized Bloch condition. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LSUBROT = Quantity( type=bool, shape=[], - description=''' + description=""" LSUBROT determines whether an optimal rotation matrix between the occupied and unoccupied block is sought, when a direct optimization of the energy functional is performed (i.e. ALGO = All | Damped). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LTHOMAS = Quantity( type=bool, shape=[], - description=''' + description=""" LTHOMAS selects a decomposition of the exchange functional based on Thomas-Fermi screening. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LUSE_VDW = Quantity( type=bool, shape=[], - description=''' + description=""" The flag LUSE_VDW determines whether the VdW-DF functional of Langreth and Lundqvist et al. is used or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LVDW_EWALD = Quantity( type=bool, shape=[], - description=''' + description=""" LVDW_EWALD decides whether lattice summation in $E_{disp}$ expression by means of Ewald's summation is computed in the DFT-D2 method (available in VASP.5.3.4 and later). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LVDW_ONECELL = Quantity( type=bool, shape=[3], - description=''' + description=""" LVDW_ONECELL can be used to disable vdW interaction with mirror image in X Y Z direction. This is advisable for molecular calculations in the gas phase. In all other cases, use the default. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LVDWEXPANSION = Quantity( type=bool, shape=[], - description=''' + description=""" LVDWEXPANSION decides whether to write the two- to six- body contributions to MBD dispersion energy in the OUTCAR file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LVHAR = Quantity( type=bool, shape=[], - description=''' + description=""" This tag determines whether the total local potential (saved in the file LOCPOT) contains the entire local potential (ionic + Hartree + exchange correlation) or the electrostatic contributions only (ionic + Hartree). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LVTOT = Quantity( type=bool, shape=[], - description=''' + description=""" LVTOT determines whether the total local potential is written to the LOCPOT file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LWANNIER90 = Quantity( type=bool, shape=[], - description=''' + description=""" LWANNIER90=.TRUE. switches on the interface between VASP and WANNIER90. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LWANNIER90_RUN = Quantity( type=bool, shape=[], - description=''' + description=""" LWANNIER90_RUN executes wannier_setup (see LWANNIER90=.TRUE.) and subsequently runs WANNIER90 in library mode (wannier_run). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LWAVE = Quantity( type=bool, shape=[], - description=''' + description=""" LWAVE determines whether the wavefunctions are written to the WAVECAR file at the end of a run. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LWRITE_MMN_AMN = Quantity( type=bool, shape=[], - description=''' + description=""" LWRITE_MMN_AMN=.TRUE. tells the VASP2WANNIER90 interface to write the wannier90.mmn and wannier90.amn files. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LWRITE_UNK = Quantity( type=bool, shape=[], - description=''' + description=""" LWRITE_UNK decides whether the cell-periodic part of the relevant Bloch functions is written. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LWRITE_WANPROJ = Quantity( type=bool, shape=[], - description=''' + description=""" LWRITE_WANPROJ determines whether the Wannier projection fille WANPROJ is written. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_LZEROZ = Quantity( type=bool, shape=[], - description=''' + description=""" for LZEROZ=.TRUE. the _z_-component of the spin-spiral magnetisation density will be forced to be and to remain zero. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_M_CONSTR = Quantity( type=np.dtype(np.float64), - shape=['3*number_of_atoms'], - description=''' + shape=["3*number_of_atoms"], + description=""" M_CONSTR specifies the desired local magnetic moment (size and/or direction) for the constrained local moments approach. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_MAGMOM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" MAGMOM Specifies the initial magnetic moment for each atom, if and only if ICHARG=2, or if ICHARG=1 and the CHGCAR file contains no magnetisation density - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_MAXMEM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MAXMEM specifies the maximum memory one MPI rank will attempt to allocate (in MByte). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_MAXMIX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MAXMIX specifies the maximum number steps stored in Broyden mixer IMIX=4). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_MDALGO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MDALGO specifies the molecular dynamics simulation protocol (in case IBRION=0 and VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_METAGGA = Quantity( type=str, shape=[], - description=''' + description=""" selects one of various meta-GGA functionals. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_MINROT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag MINROT defines the value for which the dimer is rotated only if the predicted rotation angle is greater than MINROT (rad.) in the Improved Dimer Method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_MIXPRE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" MIXPRE specifies the metric in the Broyden mixing scheme(IMIX=4). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_AFILT2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the filtering parameter for the angular filtering for ML_FF_IAFILT2_MB in the machine learning force-field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_CDOUB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag controls the necessity of DFT calculations in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_CSF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the threshold for the spilling factor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_CSIG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter used in the automatic determination of threshold for Bayesian error estimation in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_CSLOPE = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Parameter used in the automatic determination of threshold for Bayesian error estimation in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_CTIFOR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the threshold for the Bayesian error estimation on the force in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_EATOM = Quantity( type=np.dtype(np.float64), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" Reference total energies of isolated atoms used in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_IAFILT2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the type of angular filtering used in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_IBROAD1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines how the atomic distribution is broadened for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_IBROAD2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines how the atomic distribution is broadened for the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ICOUPLE_MB = Quantity( type=np.dtype(np.int32), - shape=['number_of_atoms'], - description=''' + shape=["number_of_atoms"], + description=""" This tag specifies the atoms where the coupling parameter is introduced to calculate the chemical potential within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ICUT1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the type of cutoff function used for the radial descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ICUT2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the type of cutoff function used for the angular descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_IERR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag selects the error estimation method used in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_IREG_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies whether the regularization parameters are kept constant or not in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ISAMPLE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag controls the sampling in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ISCALE_TOTEN_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies how to scale the energy data for the many-body term in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ISOAP1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag defines the type of the SOAP kernel for the radial descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ISOAP2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag defines the type of the SOAP kernel for the angular descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_ISTART = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag decides if and how calculations are continued from existing data in machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_IWEIGHT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Flag to control the weighting of training data in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LAFILT2_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether angular filtering is applied or not within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LBASIS_DISCARD = Quantity( type=bool, shape=[], - description=''' + description=""" This variable specifies whether the basis sets are thrown away when its number exceeds ML_FF_MB_MB in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LCONF_DISCARD = Quantity( type=bool, shape=[], - description=''' + description=""" This flag decides whether configurations that do not provide local reference configurations are discarded or not in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LCOUPLE_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether coupling parameters are used for the calculation of chemical potentials is used or not within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LCRITERIA = Quantity( type=bool, shape=[], - description=''' + description=""" Decides whether the threshold in the learning decision step for the Bayesian error estimation is renewed or not in the machine learning force field methods. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LEATOM_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This term specifies whether the total atomic energy is written out or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LHEAT_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This flag specifies whether the heat flux is calculated or not in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LMAX2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the maximum angular momentum quantum number of spherical harmonics used to expand atomic distributions within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LMLFF = Quantity( type=bool, shape=[], - description=''' + description=""" Main control tag whether to use machine learned force fields or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LMLMB = Quantity( type=bool, shape=[], - description=''' + description=""" This controls whether the many-body interaction term is included in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LNORM1_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether the radial descriptor is normalized (by dividing through it's norm) or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_LNORM2_MB = Quantity( type=bool, shape=[], - description=''' + description=""" This tag specifies whether the angular descriptor is normalized (by dividing through it's norm) or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MB_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the maximum number of basis sets describing the many-body interactions in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MCONF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the maximum number of configurations used for training in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MCONF_NEW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number of configurations that are stored temporally as candidates for the training data in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MHIS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number of estimated errors stored in memory to determine the threshold for the Bayesian error in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MRB1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of radial basis sets used to expand the atomic distribution for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MRB2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of radial basis sets used to expand the atomic distribution for the angular descriptor withtin the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MSPL1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of points for the radial grid used in the spline interpolation for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_MSPL2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag sets the number of points for the radial grid used in the spline interpolation of the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NATOM_COUPLED_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag specifies the number of atoms for which a coupling parameter is introduced to calculate the chemical potential within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NDIM_SCALAPACK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the dimension of the ScaLAPACK grids used in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NHYP1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Polynomial power of the radial kernel. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NHYP2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Polynomial parameter (power) of the SOAP kernel. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NMDINT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Tag to control the minimum interval to get training samples in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NR1_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines the number of grid points used to execute radial integrations to compute the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NR2_MB = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag determines the number of grid points used to execute radial integrations to compute the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_NWRITE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This tag controls part of the output within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_RCOUPLE_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the value of the coupling parameter for the calculation of the chemical potential within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_RCUT1_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the cutoff radius for the radial descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_RCUT2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the cutoff radius for the angular descriptor in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_SIGV0_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the initial noise parameter in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_SIGW0_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag sets the initial precision parameter in the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_SION1_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the width of the Gaussian functions used for broadening the atomic distributions for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_SION2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag specifies the width of the Gaussian functions used for broadening the atomic distributions of the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_W1_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag defines the weight for the radial descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_W2_MB = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag defines the weight for the angular descriptor within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_WTIFOR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the weight for the scaling of the forces in the training data within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_WTOTEN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the weight for the scaling of the total energy in the training data within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ML_FF_WTSIF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This tag sets the weight for the scaling of the total energy in the training data within the machine learning force field method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBANDS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBANDS determines the actual number of bands in the calculation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBANDSGW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" The flag determines how many QP energies are calculated and updated in GW type calculations. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBANDSO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBANDSO determines how many occupied orbitals are included in the Casida/BSE calculations or time-propagation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBANDSV = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBANDSV determines how many unoccupied orbitals are included in the Casida/BSE calculations or timepropagation. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBLK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBLK determines the blocking factor in many BLAS level 3 routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBLOCK = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" After NBLOCK ionic steps the pair correlation function and the DOS are calculated and the ionic configuration is written to the XDATCAR-file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBMOD = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Controls which bands are used in the calculation of Band decomposed charge densities. Check also IBAND and EINT. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NBSEEIG = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NBSEEIG sets the number number of BSE eigenvectors written to the BSEFATBAND output file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NCORE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NCORE determines the number of compute cores that work on an individual orbital (available as of VASP.5.2.13). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NCRPA_BANDS = Quantity( type=np.dtype(np.int32), - shape=['1..x_vasp_incar_NBANDS'], - description=''' + shape=["1..x_vasp_incar_NBANDS"], + description=""" Controls which bands are excluded in CRPA. Check also NTARGET_STATES. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NDAV = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NDAV sets the maximum number of iterative steps per bands per RMM-DIIS step (IALGO=4X). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NEDOS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NEDOS specifies number of gridpoints on which the DOS is evaluated - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NELECT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" NELECT sets the number of electrons. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NELM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NELM sets the maximum number of electronic SC (selfconsistency) steps which may be performed. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NELMDL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NELMDL specifies the number of non-selfconsistent steps at the beginning. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NELMIN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NELMIN specifies the minimum number of electronic SCF steps. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NFREE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" depending on IBRION, NFREE specifies the number of remembered steps in the history of ionic convergence runs, or the number of ionic displacements in frozen phonon calculations. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGX sets the number of grid points in the FFT-grid along the first lattice vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGXF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGXF sets the number of grid points in the fine FFT-grid along the first lattice vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGY = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGY sets the number of grid points in the FFT-grid along the second lattice vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGYF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGYF sets the number of grid points in the fine FFT-grid along the second lattice vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGYROMAG = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" NGYROMAG specifies the nuclear gyromagnetic ratios (in MHz, for H0 = 1 T) for the atomic types on the POTCAR file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGZ = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGZ sets the number of grid points in the FFT-grid along the third lattice vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NGZF = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NGZF sets the number of grid points in the fine FFT-grid along the first lattice vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NKRED = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKRED specifies an uniform reduction factor for the **q**-point grid representation of the exact exchange potential and the correlation part in GW calculations. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NKREDX = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKREDX specifies a reduction factor for the **q**-point grid representation of the exact exchange potential along reciprocal space direction **b**1. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NKREDY = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKREDY specifies a reduction factor for the **q**-point grid representation of the exact exchange potential along reciprocal space direction **b**2. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NKREDZ = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NKREDZ specifies a reduction factor for the **q**-point grid representation of the exact exchange potential along reciprocal space direction **b**3. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NLSPLINE = Quantity( type=bool, shape=[], - description=''' + description=""" construct the PAW projectors in reciprocal space using spline interpolation so that they are _k_-differentiable. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NMAXFOCKAE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NMAXFOCKAE and LMAXFOCKAE determine whether the overlap densities in the Fock exchange and correlated wave function methods are accurately reconstructed on the plane wave grid. This flag generally only applies to the Fock-exchange part as well as many-body post DFT methods (GW, RPA, MP2, etc.). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NOMEGA = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NOMEGA specifies the number of (imaginary) frequency and imaginary time grid points. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NOMEGAPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NOMEGAPAR available as of VASP.6, specifies the number of processor groups sharing the same imaginary frequency grid points.. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NOMEGAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NOMEGAR specifies the number of frequency grid points along the real axis. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NPACO = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NPACO sets the number of slots in the pair-correlation function written to PCDAT. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NPAR determines the number of bands that are treated in parallel. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NPPSTR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NPPSTR specifies the number of k-points on the strings in the IGPAR direction. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NSIM = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NSIM sets the number of bands that are optimized simultaneously by the RMM-DIIS algorithm. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NSUBSYS = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NSUBSYS defines the atomic subsystems in calculations with multiple Anderson thermostats (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NSW = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NSW sets the maximum number of ionic steps. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NTARGET_STATES = Quantity( type=np.dtype(np.int32), - shape=['x_vasp_incar_NBANDS'], - description=''' + shape=["x_vasp_incar_NBANDS"], + description=""" Controls which Wannier states are excluded in CRPA. Check also NCRPA_BANDS. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NTAUPAR = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" NTAUPAR available as of VASP.6, specifies the number of MPI groups sharing same imaginary time grid points. The default value of NTAUPAR is set automatically and depends on MAXMEM, the available memory for each rank on one node. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NUPDOWN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Sets the difference between the number of electrons in the up and down spin components. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_NWRITE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag determines how much will be written to the file OUTCAR ('verbosity flag'). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ODDONLY = Quantity( type=bool, shape=[], - description=''' + description=""" ODDONLY=.TRUE. selects a subset of **k**-points for the representation of the Fock exchange potential, with _C_1=_C_2=_C_3=1, and _n_1+_n_2+_n_3 odd. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ODDONLYGW = Quantity( type=bool, shape=[], - description=''' + description=""" ODDONLYGW allows to avoid the inclusion of the point in the evaluation of response functions (in GW calculations). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OFIELD_A = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_A sets the desired order parameter *Q*6 in the Interface pinning method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OFIELD_KAPPA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_KAPPA sets the strength of bias potential in units of 'eV/(unit of Q)$^2$' in the Interface pinning method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OFIELD_Q6_FAR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_Q6_FAR sets the far fading distance (in Angstroms) for the computation of a continuous to *Q*6 parameter in the Interface pinning method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OFIELD_Q6_NEAR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag OFIELD_Q6_NEAR sets the near fading distance (in Angstroms) for the computation of a continuous *Q*6 parameter in the Interface pinning method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OMEGAMAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" OMEGAMAX specifies the maximum frequency for dense part of the frequency grid. For CRPA calculations, OMEGAMAX is the frequency point of the interaction. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OMEGAMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" minimum frequency in the frequency grid. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_OMEGATL = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" OMEGATL specifies the maximum frequency for coarse part of the frequency grid. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PARAM1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag PARAM1 determines the first parameter used in the enhancement factor of the optPBE-vdW and optB88-vdW functional. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PARAM2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag PARAM2 determines the second parameter used in the enhancement factor of the optPBE-vdW and optB88-vdW functional. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PFLAT = Quantity( type=bool, shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PHON_LBOSE = Quantity( type=bool, shape=[], - description=''' + description=""" This flag determines whether random structures in the Monte-Carlo (MC) sampling are created according to Bose-Einstein or Maxwell-Boltzmann statistics. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PHON_LMC = Quantity( type=bool, shape=[], - description=''' + description=""" This flag controls whether electron-phonon interactions from Monte-Carlo sampling are calculated or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PHON_NSTRUCT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number of structures for electron-phonon interactions from Monte-Carlo (MC) sampling. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PHON_NTLIST = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" This flag sets the number temperatures for that the electron-phonon interactions using the ZG configuration is evaluated. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PHON_TLIST = Quantity( type=np.dtype(np.int32), - shape=['x_vasp_incarOut_PHON_NTLIST'], - description=''' + shape=["x_vasp_incarOut_PHON_NTLIST"], + description=""" This flag provides the list of temperatures for that the electron-phonon interactions using the ZG configuration is evaluated. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PLEVEL = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PMASS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" PMASS assigns a fictitious mass (in amu) to the lattice degrees-of-freedom in case of Parrinello-Rahman dynamics (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_POMASS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" POMASS describes the mass of each atomic sphere in atomic units. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_POTIM = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" POTIM sets the time step (MD) or step width scaling (ionic relaxations). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PREC = Quantity( type=str, shape=[], - description=''' + description=""" PREC specifies the precision mode. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PRECFOCK = Quantity( type=str, shape=[], - description=''' + description=""" PRECFOCK controls the FFT grids used in the exact exchange routines (Hartree-Fock and hybrid functionals). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PROUTINE = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PSTRESS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" This flag controls whether Pulay corrections are added to the stress tensor or not. In molecular dynamics calculations it controls the pressure. The unit of PSTRESS is in kB. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PSUBSYS = Quantity( type=np.dtype(np.float64), - shape=['1..3'], - description=''' + shape=["1..3"], + description=""" PSUBSYS sets the collision probabilities for the atoms in each atomic subsystem in calculations with multiple Anderson thermostats (in case VASP was compiled with -Dtbdyn). Note: 0 ≤ PSUBSYS ≤ 1 - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_PTHRESHOLD = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Control flag for the output of the profiling routines. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_QMAXFOCKAE = Quantity( type=np.dtype(np.float64), - shape=['1..x_vasp_number_of_k_points'], - description=''' + shape=["1..x_vasp_number_of_k_points"], + description=""" The parameter QMAXFOCKAE controls at which wave vectors the local augmentation charges are fitted to obtain an accurate charge augmentation on the plane wave grid. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_QSPIRAL = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" the QSPIRAL-tag specifies the spin spiral propagation vector. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_QUAD_EFG = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" nuclear quadrupole moment (in millbarn) for the atomic types on the POTCAR file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_RANDOM_SEED = Quantity( type=np.dtype(np.int32), - shape=['x'], - description=''' + shape=["x"], + description=""" RANDOM_SEED specifies the seed of the random-number-generator (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ROPT = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" ROPT determines how precise the projectors are represented in real space. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_RWIGS = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" RWIGS specifies the Wigner-Seitz radius for each atom type. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SAXIS = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" SAXIS specifies the quantisation axis for noncollinear spins. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SCSRAD = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SCSRAD defines the cutoff radius (in Angs ) used in the calculation of $\\tau_{ij}$ within the Tkatchenko-Scheffler method. Self-consistent screening in Tkatchenko-Scheffler method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SHAKEMAXITER = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" SHAKEMAXITER specifies the maximum number of iterations in the SHAKE algorithm (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SHAKETOL = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SHAKETOL specifies the tolerance for the SHAKE algorithm (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SIGMA = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SIGMA specifies the width of the smearing in eV. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SMASS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SMASS controls the velocities during an ab-initio molecular dynamics run. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SMEARINGS = Quantity( type=np.dtype(np.int32), - shape=['x_vasp_incarOut_NSW'], - description=''' + shape=["x_vasp_incarOut_NSW"], + description=""" SMEARINGS defines the smearing parameters for ISMEAR=-3 in the calculation of the partial occupancies. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SPRING = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" SPRING gives the spring constant between the images as used in the elastic band method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_STEP_MAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag STEP_MAX defines the trust radius (upper limit) for the optimization step (in Angs ) in the Improved Dimer Method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_STEP_SIZE = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The flag STEP_SIZE defines the trial step size for the optimization step (in Angs ) in the Improved Dimer Method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SYMPREC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" SYMPREC determines to which accuracy the positions in the POSCAR file must be specified (as of VASP.4.4.4). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_SYSTEM = Quantity( type=str, shape=[], - description=''' + description=""" The 'title string' defined by SYSTEM is for the user only and should help the user to identify what he wants to do with this specific input file. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_TEBEG = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TEBEG sets the start temperature for an ab-initio molecular dynamics run (IBRION=0) and other routines (e.g. Electron-phonon interactions from Monte-Carlo sampling). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_TEEND = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TEEND sets the final temperature for an ab-initio molecular dynamics run (IBRION=0; SMASS=−1). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_TIME = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" TIME controls the time step for IALGO=5X and for the initial (steepest descent) phase of IALGO=4X. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_TSUBSYS = Quantity( type=np.dtype(np.float64), shape=[3], - description=''' + description=""" TSUBSYS sets the temperatures for the atomic subsystems in calculations with multiple Anderson thermostats (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VALUE_MAX = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" VALUE_MAX sets the upper limits for the monitoring of geometric parameters (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VALUE_MIN = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" VALUE_MIN sets the lower limits for the monitoring of geometric parameters (in case VASP was compiled with -Dtbdyn). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VCUTOFF = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" The parameter VCUTOFF sets the energy cutoff for bare Coulomb matrix elements and controls the basis set for the bare Coulomb interaction. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_A1 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_A1 defines the damping function parameter in the DFT-D3 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_A2 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_A2 defines the damping function parameter in the DFT-D3 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_C6 = Quantity( type=np.dtype(np.float64), - shape=['x'], - description=''' + shape=["x"], + description=""" VDW_C6 defines the $C_6$ parameters (units: J.nm$^6$mol$^{-1}$ ) for each species defined in the POSCAR file within the DFT-D2 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_CNRADIUS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_CNRADIUS defines the cutoff radius (in Angs ) for the calculation of the coordination numbers used in the DFT-D3 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_D = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_D defines the damping parameter _d_ in the DFT-D2method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_R0 = Quantity( type=np.dtype(np.float64), - shape=['number_of_atomic_species'], - description=''' + shape=["number_of_atomic_species"], + description=""" VDW_R0 defines the $R_0$ parameters (units: Angs ) for each species defined in the POSCAR file within the DFT-D2 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_RADIUS = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_RADIUS defines the cutoff radius (in Angs) for the pair interactions used in the DFT-D2 and DFT-D3 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_S6 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_S6 defines the global scaling factor _S_6_ in the DFT-D2 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_S8 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_S8 defines the damping function parameter $s_8$ in the DFT-D3 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VDW_SR = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" VDW_SR defines the damping function parameter $S_R$ (or scaling factor) in the DFT-D2 and DFT-D3 method. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_VOSKOWN = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" Determines whether Vosko-Wilk-Nusair interpolation is used or not. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_WC = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" WC specifies the weight factor for each step in Broyden mixing scheme (IMIX=4). - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_WEIMIN = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" WEIMIN specifies the maximum weight for a band to be considered empty. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) x_vasp_incarOut_ZVAL = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" ZVAL describes the valency of each atomic sphere. - ''', - categories=[x_vasp_incarOut_param]) + """, + categories=[x_vasp_incarOut_param], + ) diff --git a/electronicparsers/vasp/metainfo/vasp_incarsUnknown.py b/electronicparsers/vasp/metainfo/vasp_incarsUnknown.py index f36ed254..da4a8772 100644 --- a/electronicparsers/vasp/metainfo/vasp_incarsUnknown.py +++ b/electronicparsers/vasp/metainfo/vasp_incarsUnknown.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) from . import vasp_incars from . import vasp_incarsOut @@ -34,44 +41,46 @@ class x_vasp_incarUnknown_param(MCategory): - ''' + """ Unknown incar parameters. By 'unknown' we refer to incar parameters in the OLD (predated Sept.2019) 'vasp.nomadmetainfo.json' that are **not** listed in the current (Oct.2019) VaspWiki - ''' + """ m_def = Category() class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_vasp_incarOut_ENMAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Maximum cutoff (normally specified only in POTCAR). Value prinded out after evaluating the input. - ''', - categories=[vasp_incarsOut.x_vasp_incarOut_param]) + """, + categories=[vasp_incarsOut.x_vasp_incarOut_param], + ) x_vasp_incar_ENMAX = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Maximum cutoff (normally specified only in POTCAR). Value prinded out after evaluating the input. - ''', - categories=[vasp_incars.x_vasp_incar_param]) + """, + categories=[vasp_incars.x_vasp_incar_param], + ) x_vasp_incarOut_LCOMPAT = Quantity( type=bool, shape=[], - description=''' + description=""" In vasp.4.2 the augmentation charges are forced to be zero at the boundary of the augmentation sphere, therefore results are slightly different from vasp.3.2 (usually differences are smaller than 0.01 meV). The old behavior can be restored by setting LCOMPAT = .TRUE. in the INCAR file. - ''', - categories=[vasp_incarsOut.x_vasp_incarOut_param]) + """, + categories=[vasp_incarsOut.x_vasp_incarOut_param], + ) diff --git a/electronicparsers/w2dynamics/metainfo/w2dynamics.py b/electronicparsers/w2dynamics/metainfo/w2dynamics.py index 3c321321..c5a5eaae 100644 --- a/electronicparsers/w2dynamics/metainfo/w2dynamics.py +++ b/electronicparsers/w2dynamics/metainfo/w2dynamics.py @@ -19,7 +19,13 @@ import numpy as np from nomad.metainfo import ( # pylint: disable=unused-import - MSection, Package, Quantity, Section, SubSection, JSON, HDF5Reference + MSection, + Package, + Quantity, + Section, + SubSection, + JSON, + HDF5Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -31,1064 +37,1232 @@ class x_w2dynamics_axes(MSection): - ''' + """ Section containing data in .axes of the hdf5 mainfile. - ''' + """ m_def = Section(validate=False) x_w2dynamics_iwb_g4 = Quantity( type=np.float64, - shape=['N4iwb'], - description=''' + shape=["N4iwb"], + description=""" Number of bosonic Matsubaras for 4-point GF. - ''') + """, + ) x_w2dynamics_iwb_p2 = Quantity( type=np.float64, shape=[], - description=''' - ''') + description=""" + """, + ) x_w2dynamics_iwb_p3 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_iwf_g2 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_iwf_g4 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_iwf_p3 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_iwb_g4 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_iwb_p3 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_pos_iw = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_tau_g4 = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_taubin = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_tauf = Quantity( type=np.float64, - shape=['Nftau'], - description=''' - ''') + shape=["Nftau"], + description=""" + """, + ) x_w2dynamics_tausus = Quantity( type=np.float64, - shape=['0..*'], - description=''' - ''') + shape=["0..*"], + description=""" + """, + ) x_w2dynamics_w_dos = Quantity( type=np.float64, - shape=['0..*'], - description=''' + shape=["0..*"], + description=""" Energies for the DOS. - ''') + """, + ) class x_w2dynamics_quantities(MSection): - ''' + """ Section containing data in .quantities of the hdf5 mainfile. - ''' + """ m_def = Section(validate=False) x_w2dynamics_accept_flavourchange = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for flavourchange moves - ''') + """, + ) x_w2dynamics_accept_glob = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for global symmetry moves - ''') + """, + ) x_w2dynamics_accept_ins = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for insertions into local trace - ''') + """, + ) x_w2dynamics_accept_ins4 = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for insertions of 4 operators into local trace - ''') + """, + ) x_w2dynamics_accept_pair_tau = Quantity( type=HDF5Reference, - description=''' + description=""" Total number of accepted pair insertions and removals in tau bins - ''') + """, + ) x_w2dynamics_accept_rem = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for removals of local trace operators - ''') + """, + ) x_w2dynamics_accept_rem4 = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for removal of 4 operators in the local trace - ''') + """, + ) x_w2dynamics_accept_shift = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for tau-shift moves - ''') + """, + ) x_w2dynamics_accept_worm_ins = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for worm insertions into local trace - ''') + """, + ) x_w2dynamics_accept_worm_rem = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for worm removals from local trace - ''') + """, + ) x_w2dynamics_accept_worm_rep = Quantity( type=HDF5Reference, - description=''' + description=""" Acceptance rate for worm replacement moves - ''') + """, + ) x_w2dynamics_at2neq = Quantity( type=HDF5Reference, - description=''' + description=""" corresponding inequivalent index to atom index - ''') + """, + ) x_w2dynamics_contrib_sst = Quantity( type=HDF5Reference, - description=''' + description=""" Trace contribution per outer superstate - ''') + """, + ) x_w2dynamics_contrib_state = Quantity( type=HDF5Reference, - description=''' + description=""" Trace contribution per outer state - ''') + """, + ) x_w2dynamics_dc = Quantity( type=HDF5Reference, - description=''' + description=""" double counting correction - ''') + """, + ) x_w2dynamics_dc_latt = Quantity( type=HDF5Reference, - description=''' + description=""" double counting correction on the lattice - ''') + """, + ) x_w2dynamics_densitymatrix = Quantity( type=HDF5Reference, - description=''' + description=""" Density matrix in occupation number basis measured at beta/2 - ''') + """, + ) x_w2dynamics_double_occ = Quantity( type=HDF5Reference, - description=''' + description=""" Double occupancies - ''') + """, + ) x_w2dynamics_energies_eigenstates = Quantity( type=HDF5Reference, - description=''' + description=""" Energies of eigenstates by state index - ''') + """, + ) x_w2dynamics_expresdensitymatrix = Quantity( type=HDF5Reference, - description=''' + description=""" density matrix resolved by expansion order - ''') + """, + ) x_w2dynamics_fiw = Quantity( type=HDF5Reference, - description=''' + description=""" hybridisation function in Matsubara frequencies - ''') + """, + ) x_w2dynamics_fmom = Quantity( type=HDF5Reference, - description=''' + description=""" moments of the Hybridisation function in iw - ''') + """, + ) x_w2dynamics_ftau = Quantity( type=HDF5Reference, - description=''' + description=""" hybridisation function in imaginary time - ''') + """, + ) x_w2dynamics_ftau_full = Quantity( type=HDF5Reference, - description=''' + description=""" hybridisation function in imaginary time - ''') + """, + ) x_w2dynamics_g0iw = Quantity( type=HDF5Reference, - description=''' + description=""" Weiss field - ''') + """, + ) x_w2dynamics_g0iw_full = Quantity( type=HDF5Reference, - description=''' + description=""" Weiss field including spin/orbital off-diagonal terms - ''') + """, + ) x_w2dynamics_g2iw = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in Matsubara basis - ''') + """, + ) x_w2dynamics_g4iw = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in Matsubara basis (particle-hole channel) - ''') + """, + ) x_w2dynamics_g4iw_pp = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in Matsubara basis (particle-particle channel) - ''') + """, + ) x_w2dynamics_g4iw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in particle-hole Matsubara frequencies from worm sampling There are two conventions: 0: (v+w) tau_1 - v tau_2 + v' tau_3 - (v'+w) tau_4 1: v tau_1 - (v-w) tau_2 + (v'-w) tau_3 - v' tau_4 - ''') + """, + ) x_w2dynamics_g4iwpp_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in particle-particle Matsubara frequencies from worm sampling Convention: v tau_1 - (w-v') tau_2 + (w-v) tau_3 - v' tau_4 - ''') + """, + ) x_w2dynamics_g4leg = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in Legendre/Matsubara basis - ''') + """, + ) x_w2dynamics_g4tau = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle Green's function in tau12, tau34, tau14 - ''') + """, + ) x_w2dynamics_gdensnew = Quantity( type=HDF5Reference, - description=''' + description=""" densities with new self-energy after adjustment of mu - ''') + """, + ) x_w2dynamics_gdensold = Quantity( type=HDF5Reference, - description=''' + description=""" densities with old self-energy before adjustment of mu - ''') + """, + ) x_w2dynamics_giw = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function used as input for Dyson equation - ''') + """, + ) x_w2dynamics_giw_cov = Quantity( type=HDF5Reference, - description=''' + description=""" covariance of diagonal impurity Green's function - ''') + """, + ) x_w2dynamics_giw_full = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function used as input for Dyson equation - ''') + """, + ) x_w2dynamics_giw_meas = Quantity( type=HDF5Reference, - description=''' + description=""" Impurity Green's function in Matsubara - ''') + """, + ) x_w2dynamics_giw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Impurity Green's function in Matsubara from worm sampling - ''') + """, + ) x_w2dynamics_gleg = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function in Legendre expansion - ''') + """, + ) x_w2dynamics_gleg_full = Quantity( type=HDF5Reference, - description=''' + description=""" full impurity Green's function in Legendre expansion - ''') + """, + ) x_w2dynamics_glocnew = Quantity( type=HDF5Reference, - description=''' + description=""" local Green's function in Matsubara (new self-energy) - ''') + """, + ) x_w2dynamics_glocnew_lattice = Quantity( type=HDF5Reference, - description=''' + description=""" local Green's function in Matsubara (old self-energy), diagonal part for all lda-bands - ''') + """, + ) x_w2dynamics_glocold = Quantity( type=HDF5Reference, - description=''' + description=""" local Green's function in Matsubara (old self-energy) - ''') + """, + ) x_w2dynamics_glocold_lattice = Quantity( type=HDF5Reference, - description=''' + description=""" local Green's function in Matsubara (old self-energy), diagonal part for all lda-bands - ''') + """, + ) x_w2dynamics_gsigmaiw = Quantity( type=HDF5Reference, - description=''' + description=""" Improved estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_gsigmaiw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Improved estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_gtau = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function on the imaginary time axis - ''') + """, + ) x_w2dynamics_gtau_blocks = Quantity( type=HDF5Reference, - description=''' + description=""" blocking analysis for the impurity Green's function - ''') + """, + ) x_w2dynamics_gtau_full = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function on the imaginary time axis, full offdiagonal - ''') + """, + ) x_w2dynamics_gtau_mean_step = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function averaged over tau, resolved in time (= Monte carlo steps) - ''') + """, + ) x_w2dynamics_gtau_mid_step = Quantity( type=HDF5Reference, - description=''' + description=""" impurity Green's function averaged over tau between 0.4 * beta and 0.6 * beta, resolved in time (= Monte carlo steps) - ''') + """, + ) x_w2dynamics_gtau_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Impurity Green's function in imaginary time from worm sampling - ''') + """, + ) x_w2dynamics_h_mean = Quantity( type=HDF5Reference, - description=''' + description=""" Mean over k-points of Hamiltonian H(k) - ''') + """, + ) x_w2dynamics_h_mom2 = Quantity( type=HDF5Reference, - description=''' + description=""" Second moment of the density of states - ''') + """, + ) x_w2dynamics_h4iw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two-particle improved estimator in Matsubara basis from worm sampling - ''') + """, + ) x_w2dynamics_hist = Quantity( type=HDF5Reference, - description=''' + description=""" Histogram for expansion orders - ''') + """, + ) x_w2dynamics_hist_seg = Quantity( type=HDF5Reference, - description=''' + description=""" number of empty flavours in trace - ''') + """, + ) x_w2dynamics_hist_sst = Quantity( type=HDF5Reference, - description=''' + description=""" Histogram for outer superstates - ''') + """, + ) x_w2dynamics_hist_state = Quantity( type=HDF5Reference, - description=''' + description=""" Histogram for outer states - ''') + """, + ) x_w2dynamics_hk = Quantity( type=HDF5Reference, - description=''' + description=""" Full Hamiltonian H(k) - ''') + """, + ) x_w2dynamics_hk_mean = Quantity( type=HDF5Reference, - description=''' + description=""" Mean of diagonals of Hamiltonian H(k) - ''') + """, + ) x_w2dynamics_jbar = Quantity( type=HDF5Reference, - description=''' + description=""" shell-averaged J values - ''') + """, + ) x_w2dynamics_lda_dens = Quantity( type=HDF5Reference, - description=''' + description=""" LDA orbital-resolved densities - ''') + """, + ) x_w2dynamics_lda_dos = Quantity( type=HDF5Reference, - description=''' + description=""" LDA density of states - ''') + """, + ) x_w2dynamics_lda_mu = Quantity( type=HDF5Reference, - description=''' + description=""" chemical potential (non-interacting) - ''') + """, + ) x_w2dynamics_leadsiw_full = Quantity( type=HDF5Reference, - description=''' + description=""" Weiss field including spin/orbital off-diagonal terms - ''') + """, + ) x_w2dynamics_lhist = Quantity( type=HDF5Reference, - description=''' + description=""" Histogram for Lanczos steps in the time evolution - ''') + """, + ) x_w2dynamics_mu = Quantity( type=HDF5Reference, - description=''' + description=""" chemical potential (lattice model) - ''') + """, + ) x_w2dynamics_muimp = Quantity( type=HDF5Reference, - description=''' + description=""" impurity chemical potential - ''') + """, + ) x_w2dynamics_muimp_full = Quantity( type=HDF5Reference, - description=''' + description=""" impurity chemical potential - ''') + """, + ) x_w2dynamics_neq2at = Quantity( type=HDF5Reference, - description=''' + description=""" atom index first occurrence of inequivalent atom - ''') + """, + ) x_w2dynamics_nneq = Quantity( type=HDF5Reference, - description=''' + description=""" number of non-equivalent atoms in unit cell - ''') + """, + ) x_w2dynamics_nqqdag_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Part of Symmetric Improved 2P estimator in Matsubara frequencies - ''') + """, + ) x_w2dynamics_ntau_n0 = Quantity( type=HDF5Reference, - description=''' + description=""" density-density correlation function in tau bins - ''') + """, + ) x_w2dynamics_occ = Quantity( type=HDF5Reference, - description=''' + description=""" Occupancies - ''') + """, + ) x_w2dynamics_occbasis_mapping = Quantity( type=HDF5Reference, - description=''' + description=""" Occupation number eigenvalues by state index as used in densitymatrix - ''') + """, + ) x_w2dynamics_p2iw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two legged two-particle Green's function ph-convention (1 bosonic) - ''') + """, + ) x_w2dynamics_p2iwpp_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two legged two-particle Green's function pp-convention (1 bosonic) - ''') + """, + ) x_w2dynamics_p2tau_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two legged two-particle Green's function in imaginary time - ''') + """, + ) x_w2dynamics_p2taupp_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Two legged two-particle Green's function pp in imaginary time - ''') + """, + ) x_w2dynamics_p3iw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Three legged two-particle Green's function ph-convention (1 fermionic, 1 bosonic) - ''') + """, + ) x_w2dynamics_p3iwpp_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Three legged two-particle Green's function pp-convention (1 fermionic, 1 bosonic) - ''') + """, + ) x_w2dynamics_qqdd_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Part of Symmetric Improved 2P estimator in Matsubara frequencies - ''') + """, + ) x_w2dynamics_qqiw_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 1P estimator in Matsubara basis - ''') + """, + ) x_w2dynamics_qqqq_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 2P estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_qqtau_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 1P estimator in imaginary time - ''') + """, + ) x_w2dynamics_quddag_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Improved estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_rhist = Quantity( type=HDF5Reference, - description=''' + description=""" Histogram for additional Lanczos steps needed for reversible trace - ''') + """, + ) x_w2dynamics_rho1 = Quantity( type=HDF5Reference, - description=''' + description=""" < c^+ c > - ''') + """, + ) x_w2dynamics_rho2 = Quantity( type=HDF5Reference, - description=''' + description=""" < c^+ c^+ c c > - ''') + """, + ) x_w2dynamics_sigma_hartree = Quantity( type=HDF5Reference, - description=''' + description=""" Hartree self-energy - ''') + """, + ) x_w2dynamics_sign = Quantity( type=HDF5Reference, - description=''' + description=""" Mean sign - ''') + """, + ) x_w2dynamics_sign_sst = Quantity( type=HDF5Reference, - description=''' + description=""" Summed total sign per outer superstate - ''') + """, + ) x_w2dynamics_sign_state = Quantity( type=HDF5Reference, - description=''' + description=""" Summed total sign per outer state - ''') + """, + ) x_w2dynamics_sign_step = Quantity( type=HDF5Reference, - description=''' + description=""" Sign of a configuration's total weight, resolved in time (= Monte carlo steps) - ''') + """, + ) x_w2dynamics_single_occ = Quantity( type=HDF5Reference, - description=''' + description=""" Single occupancies - ''') + """, + ) x_w2dynamics_siw = Quantity( type=HDF5Reference, - description=''' + description=""" Band-spin-diagonal self-energy in matsubara expansion - ''') + """, + ) x_w2dynamics_siw_cov = Quantity( type=HDF5Reference, - description=''' + description=""" covariance of diagonal self-energy in matsubara expansion - ''') + """, + ) x_w2dynamics_siw_full = Quantity( type=HDF5Reference, - description=''' + description=""" Full self-energy in matsubara expansion (with jackknife error) - ''') + """, + ) x_w2dynamics_siw_trial = Quantity( type=HDF5Reference, - description=''' + description=""" Full trial self-energy in matsubara expansion - ''') + """, + ) x_w2dynamics_smom = Quantity( type=HDF5Reference, - description=''' + description=""" Moments of the self-energy (in Matsubara) - ''') + """, + ) x_w2dynamics_smom_full = Quantity( type=HDF5Reference, - description=''' + description=""" Moments of the self-energy including all terms - ''') + """, + ) x_w2dynamics_ssts_states = Quantity( type=HDF5Reference, - description=''' + description=""" Assignment of states to superstates by state index - ''') + """, + ) x_w2dynamics_steps_worm_partition = Quantity( type=HDF5Reference, - description=''' + description=""" Time spent in worm space and partition space - ''') + """, + ) x_w2dynamics_time = Quantity( type=HDF5Reference, - description=''' + description=""" Total elapsed walltime of the run - ''') + """, + ) x_w2dynamics_time_g4iw_add = Quantity( type=HDF5Reference, - description=''' + description=""" Time spent on constructing and adding G4(iw,iw,iW) - ''') + """, + ) x_w2dynamics_time_g4iw_ft = Quantity( type=HDF5Reference, - description=''' + description=""" Time spent on fourier-transforming G4(iw,iw,iW) - ''') + """, + ) x_w2dynamics_time_giw = Quantity( type=HDF5Reference, - description=''' + description=""" Time spent on measuring G(iw) - ''') + """, + ) x_w2dynamics_time_qmc = Quantity( type=HDF5Reference, - description=''' + description=""" Mean CPU seconds spent in CT-QMC per process - ''') + """, + ) x_w2dynamics_time_sampling = Quantity( type=HDF5Reference, - description=''' + description=""" CPU time used for the QMC simulation excluding measurements - ''') + """, + ) x_w2dynamics_time_simulation = Quantity( type=HDF5Reference, - description=''' + description=""" CPU time used for the QMC simulation - ''') + """, + ) x_w2dynamics_time_warmup = Quantity( type=HDF5Reference, - description=''' + description=""" CPU time used for the QMC warmup - ''') + """, + ) x_w2dynamics_ubar = Quantity( type=HDF5Reference, - description=''' + description=""" shell-averaged U values - ''') + """, + ) x_w2dynamics_ucaca_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 2P estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_ucacatau_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 2P estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_uccaa_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 2P estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_uccaatau_worm = Quantity( type=HDF5Reference, - description=''' + description=""" Worm Symmetric Improved 2P estimators in Matsubara basis - ''') + """, + ) x_w2dynamics_worm_eta = Quantity( type=HDF5Reference, - description=''' + description=""" Worm balancing factor - ''') + """, + ) class x_w2dynamics_config_atoms_parameters(MSection): - ''' + """ Input quantities contained in .config:atom.{x}.{name} of the hdf5 mainfile. - ''' + """ m_def = Section(validate=False) x_w2dynamics_hamiltonian = Quantity( type=str, - description=''' + description=""" Type of interacting hamiltonian. - ''') + """, + ) x_w2dynamics_jdd = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" Hunds coupling. - ''') + """, + ) x_w2dynamics_jdp = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" J interaction between d-p orbitals. - ''') + """, + ) x_w2dynamics_jpp = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" J interaction between p-p orbitals. - ''') + """, + ) x_w2dynamics_jppod = Quantity( type=np.float64, - units='electron_volt', - description=''' - ''') + units="electron_volt", + description=""" + """, + ) x_w2dynamics_nd = Quantity( type=np.int32, - description=''' + description=""" Number of d bands. - ''') + """, + ) x_w2dynamics_nlig = Quantity( type=np.int32, - description=''' - ''') + description=""" + """, + ) x_w2dynamics_np = Quantity( type=np.int32, - description=''' - ''') + description=""" + """, + ) x_w2dynamics_nsymmove = Quantity( type=np.int32, - description=''' + description=""" Number of symmetry moves. - ''') + """, + ) x_w2dynamics_phonon = Quantity( type=np.int32, - description=''' + description=""" Switch for phonon interaction. - ''') + """, + ) x_w2dynamics_quantumnumbers = Quantity( type=str, - description=''' + description=""" Good quantum numbers. Separated entries: "Nt" for total occupation, "Szt" for spin component, "Qzt" for singly-occupiedness per orbital, "Azt" for occupation per spin-orbital, "Lzt" for orbital angular momentum component assuming uniformly spaced ascending values symmetric around zero for the impurity orbitals, "Jzt" for total angular momentum component, and "All" for automatic partitioning of the Hamiltonian into blocks. - ''') + """, + ) x_w2dynamics_screening = Quantity( type=np.int32, - description=''' + description=""" Switch for dynamical screening. - ''') + """, + ) x_w2dynamics_se_shift = Quantity( type=np.float64, - description=''' - ''') + description=""" + """, + ) x_w2dynamics_udd = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" Hubbard intra-orbital interaction. - ''') + """, + ) x_w2dynamics_udp = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" U\' interaction between d-p orbitals. - ''') + """, + ) x_w2dynamics_umatrix = Quantity( type=str, - description=''' + description=""" String containing the .dat file with the U-interactions matrix. - ''') + """, + ) x_w2dynamics_upp = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" U interaction between p-p orbitals. - ''') + """, + ) x_w2dynamics_uppod = Quantity( type=np.float64, - units='electron_volt', - description=''' - ''') + units="electron_volt", + description=""" + """, + ) x_w2dynamics_vdd = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" Hubbard inter-orbital interaction. - ''') + """, + ) x_w2dynamics_vpp = Quantity( type=np.float64, - units='electron_volt', - description=''' + units="electron_volt", + description=""" U\' interaction between p-p orbitals. - ''') + """, + ) class x_w2dynamics_config_parameters(MSection): - ''' + """ Section grouping the different input configuration parameters. - ''' + """ m_def = Section(validate=False) - x_w2dynamics_config_atoms = SubSection(sub_section=x_w2dynamics_config_atoms_parameters.m_def, repeats=True) + x_w2dynamics_config_atoms = SubSection( + sub_section=x_w2dynamics_config_atoms_parameters.m_def, repeats=True + ) x_w2dynamics_config_general = Quantity( type=JSON, - description=''' + description=""" General config parameters. - ''') + """, + ) x_w2dynamics_config_qmc = Quantity( type=JSON, - description=''' + description=""" QMC config parameters. - ''') + """, + ) class Method(runschema.method.Method): - ''' + """ Section containing the various parameters that define the theory and the approximations (convergence, thresholds, etc.) behind the calculation. - ''' + """ m_def = Section(validate=False, extends_base_section=True) - x_w2dynamics_config = SubSection(sub_section=x_w2dynamics_config_parameters.m_def, repeats=False) + x_w2dynamics_config = SubSection( + sub_section=x_w2dynamics_config_parameters.m_def, repeats=False + ) class ScfIteration(runschema.calculation.ScfIteration): - ''' + """ Every scf_iteration section represents a self-consistent field (SCF) iteration, and gives detailed information on the SCF procedure of the specified quantities. - ''' + """ m_def = Section(validate=False, extends_base_section=True) x_w2dynamics_dc_latt = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Double counting correction on the lattice. - ''') + """, + ) x_w2dynamics_gdensnew = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Densities with new self-energy after adjustment of mu. - ''') + """, + ) x_w2dynamics_gdensold = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Densities with old self-energy before adjustment of mu. - ''') + """, + ) x_w2dynamics_glocnew_lattice = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Local Green's function in Matsubara (old self-energy), diagonal part for all lda-bands. - ''') + """, + ) x_w2dynamics_glocold_lattice = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Local Green's function in Matsubara (old self-energy), diagonal part for all lda-bands. - ''') + """, + ) x_w2dynamics_ubar = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Shell-averaged U values over the ineq sites. - ''') + """, + ) x_w2dynamics_jbar = Quantity( type=HDF5Reference, shape=[], - description=''' + description=""" Shell-averaged J values over the ineq sites. - ''') + """, + ) - x_w2dynamics_ineq = SubSection(sub_section=x_w2dynamics_quantities.m_def, repeats=True) + x_w2dynamics_ineq = SubSection( + sub_section=x_w2dynamics_quantities.m_def, repeats=True + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_w2dynamics_axes = SubSection(sub_section=x_w2dynamics_axes.m_def, repeats=False) diff --git a/electronicparsers/w2dynamics/parser.py b/electronicparsers/w2dynamics/parser.py index b8656983..4fadfe51 100644 --- a/electronicparsers/w2dynamics/parser.py +++ b/electronicparsers/w2dynamics/parser.py @@ -26,27 +26,33 @@ from nomad.parsing.file_parser import TextParser, Quantity from simulationworkflowschema import SinglePoint from runschema.run import Run, Program -from runschema.calculation import ( - Calculation, ScfIteration, Energy, GreensFunctions -) +from runschema.calculation import Calculation, ScfIteration, Energy, GreensFunctions from runschema.method import ( - Method, HoppingMatrix, HubbardKanamoriModel, LatticeModelHamiltonian, FrequencyMesh, - TimeMesh, DMFT + Method, + HoppingMatrix, + HubbardKanamoriModel, + LatticeModelHamiltonian, + FrequencyMesh, + TimeMesh, + DMFT, ) from runschema.system import System, Atoms from .metainfo.w2dynamics import ( - x_w2dynamics_axes, x_w2dynamics_quantities, x_w2dynamics_config_parameters, - x_w2dynamics_config_atoms_parameters + x_w2dynamics_axes, + x_w2dynamics_quantities, + x_w2dynamics_config_parameters, + x_w2dynamics_config_atoms_parameters, ) from ..wannier90.parser import WOutParser, HrParser from nomad.parsing.parser import to_hdf5 + # For automatic workflows from ..utils import get_files, BeyondDFTWorkflowsParser from nomad.search import search from nomad.app.v1.models import MetadataRequired -re_n = r'[\n\r]' +re_n = r"[\n\r]" class LogParser(TextParser): @@ -56,8 +62,7 @@ def __init__(self): def init_quantities(self): self._quantities = [ Quantity( - 'program_version', r'Version\s*([0-9.]+)', - dtype=str, flatten=False + "program_version", r"Version\s*([0-9.]+)", dtype=str, flatten=False ) ] @@ -66,34 +71,27 @@ class W2DynamicsParser(BeyondDFTWorkflowsParser): level = 2 def __init__(self): - self._re_namesafe = re.compile(r'[^\w]') + self._re_namesafe = re.compile(r"[^\w]") self.log_parser = LogParser() - self._calculation_type = 'dmft' + self._calculation_type = "dmft" self.wout_parser = WOutParser() self.hr_parser = HrParser() self.data = None self._child_archives = {} - self._hubbard_kanamori_map = { - 'u': 'u', - 'j': 'jh', - 'v': 'up' - } + self._hubbard_kanamori_map = {"u": "u", "j": "jh", "v": "up"} - self._dmft_qmc_map = { - 'ntau': 'n_tau', - 'niw': 'n_matsubara_freq' - } + self._dmft_qmc_map = {"ntau": "n_tau", "niw": "n_matsubara_freq"} self._dataset_run_mapping = { - '.axes': x_w2dynamics_axes, - '.quantities': x_w2dynamics_quantities + ".axes": x_w2dynamics_axes, + ".quantities": x_w2dynamics_quantities, } self._inequivalent_atom_map = { - 'self_energy_iw': 'siw', - 'greens_function_iw': 'giw', - 'greens_function_tau': 'gtau' + "self_energy_iw": "siw", + "greens_function_iw": "giw", + "greens_function_tau": "gtau", } def parse_program_version(self): @@ -102,13 +100,16 @@ def parse_program_version(self): Returns: str: program version label """ - log_files = get_files('*.log', self.filepath, self.mainfile) + log_files = get_files("*.log", self.filepath, self.mainfile) if log_files: if len(log_files) > 1: - self.logger.warning('Multiple logging files found, the last one will be parsed.', data={'files': log_files}) + self.logger.warning( + "Multiple logging files found, the last one will be parsed.", + data={"files": log_files}, + ) self.log_parser.mainfile = log_files[-1] - return self.log_parser.get('program_version', None) + return self.log_parser.get("program_version", None) def parse_axes(self, source, target): """Parses the key `.axes` from the hdf5 mainfile @@ -118,17 +119,17 @@ def parse_axes(self, source, target): target (MSection): EntryArchive.Run[-1].x_w2dynamics_axes code-specific section """ for key in source.keys(): - if key in ['iw', 'tau']: + if key in ["iw", "tau"]: continue # resolve value from 'value' value = source[key] - if isinstance(value, h5py.Group) and 'value' in value.keys(): - value = value['value'] + if isinstance(value, h5py.Group) and "value" in value.keys(): + value = value["value"] if not isinstance(value, h5py.Dataset): continue - name = self._re_namesafe.sub('_', key) + name = self._re_namesafe.sub("_", key) if value.shape: - setattr(target, f'x_w2dynamics_{name}', value[:]) + setattr(target, f"x_w2dynamics_{name}", value[:]) def parse_system(self, wannier90_name: str): """Parses System from the Wannier90 output file (*.wout) if present in the upload. @@ -139,15 +140,24 @@ def parse_system(self, wannier90_name: str): """ sec_run = self.archive.run[-1] - wannier90_mainfiles = get_files('*.wout', self.filepath, self.mainfile, deep=False) + wannier90_mainfiles = get_files( + "*.wout", self.filepath, self.mainfile, deep=False + ) if wannier90_mainfiles: # parse crystal from Wannier90 # We scan for the proper Wannier90 file that matches the HDF5 group '.config' content if len(wannier90_mainfiles) > 1: - self.logger.warning('Multiple Wannier90 *.wout files found, we will scan these files ' - 'and match them with .config/general.hkfile. If this is not ' - 'found, we will consider the last Wannier90 *.wout file.', data={'files': wannier90_mainfiles}) + self.logger.warning( + "Multiple Wannier90 *.wout files found, we will scan these files " + "and match them with .config/general.hkfile. If this is not " + "found, we will consider the last Wannier90 *.wout file.", + data={"files": wannier90_mainfiles}, + ) if wannier90_name: - matched_wannier90_mainfile = [filename for filename in wannier90_mainfiles if wannier90_name in filename] + matched_wannier90_mainfile = [ + filename + for filename in wannier90_mainfiles + if wannier90_name in filename + ] if matched_wannier90_mainfile: wannier90_mainfiles = matched_wannier90_mainfile wannier90_mainfile = wannier90_mainfiles[-1] @@ -156,26 +166,37 @@ def parse_system(self, wannier90_name: str): sec_system = System() sec_run.system.append(sec_system) - structure = self.wout_parser.get('structure') + structure = self.wout_parser.get("structure") if structure is None: - self.logger.error('Error parsing the structure from .wout') + self.logger.error("Error parsing the structure from .wout") return sec_atoms = Atoms() sec_system.atoms = sec_atoms - if self.wout_parser.get('lattice_vectors', []): - lattice_vectors = np.vstack(self.wout_parser.get('lattice_vectors', [])[-3:]) + if self.wout_parser.get("lattice_vectors", []): + lattice_vectors = np.vstack( + self.wout_parser.get("lattice_vectors", [])[-3:] + ) sec_atoms.lattice_vectors = lattice_vectors * ureg.angstrom - if self.wout_parser.get('reciprocal_lattice_vectors') is not None: - sec_atoms.lattice_vectors_reciprocal = np.vstack(self.wout_parser.get('reciprocal_lattice_vectors')[-3:]) / ureg.angstrom - - pbc = [True, True, True] if lattice_vectors is not None else [False, False, False] + if self.wout_parser.get("reciprocal_lattice_vectors") is not None: + sec_atoms.lattice_vectors_reciprocal = ( + np.vstack(self.wout_parser.get("reciprocal_lattice_vectors")[-3:]) + / ureg.angstrom + ) + + pbc = ( + [True, True, True] + if lattice_vectors is not None + else [False, False, False] + ) sec_atoms.periodic = pbc - sec_atoms.labels = structure.get('labels') - if structure.get('positions') is not None: - sec_atoms.positions = structure.get('positions') * ureg.angstrom + sec_atoms.labels = structure.get("labels") + if structure.get("positions") is not None: + sec_atoms.positions = structure.get("positions") * ureg.angstrom else: # TODO parse specific lattice model: discuss it Jonas Schwab - self.logger.warning('Wannier90 output files not found in the same folder, cannot resolve the system metainfo.') + self.logger.warning( + "Wannier90 output files not found in the same folder, cannot resolve the system metainfo." + ) def parse_input_model(self, data: h5py.Group, wannier90_name: str): """Parses input model into Run.Method.LatticeModelHamiltonian in two differentiated @@ -192,15 +213,24 @@ def parse_input_model(self, data: h5py.Group, wannier90_name: str): sec_run.method.append(Method(lattice_model_hamiltonian=[sec_hamiltonian])) # HoppingMatrix - wannier90_hr_files = get_files('*hr.dat', self.filepath, self.mainfile, deep=False) + wannier90_hr_files = get_files( + "*hr.dat", self.filepath, self.mainfile, deep=False + ) if wannier90_hr_files: # parse tight-binding model from Wannier90 # We scan for the proper Wannier90 file that matches the HDF5 group '.config' content if len(wannier90_hr_files) > 1: - self.logger.warning('Multiple Wannier90 *_hr.dat files found, we will scan these files ' - 'and match them with .config/general.hkfile. If this is not ' - 'found, we will consider the last Wannier90 *_hr.dat file.', data={'files': wannier90_hr_files}) + self.logger.warning( + "Multiple Wannier90 *_hr.dat files found, we will scan these files " + "and match them with .config/general.hkfile. If this is not " + "found, we will consider the last Wannier90 *_hr.dat file.", + data={"files": wannier90_hr_files}, + ) if wannier90_name: - matched_wannier90_hr_file = [filename for filename in wannier90_hr_files if wannier90_name in filename] + matched_wannier90_hr_file = [ + filename + for filename in wannier90_hr_files + if wannier90_name in filename + ] if matched_wannier90_hr_file: wannier90_hr_files = matched_wannier90_hr_file wannier90_hr_file = wannier90_hr_files[-1] @@ -208,38 +238,60 @@ def parse_input_model(self, data: h5py.Group, wannier90_name: str): self.hr_parser.mainfile = wannier90_hr_file sec_hopping_matrix = HoppingMatrix() sec_hamiltonian.hopping_matrix = sec_hopping_matrix - sec_hopping_matrix.n_orbitals = self.wout_parser.get('Nwannier') - deg_factors = self.hr_parser.get('degeneracy_factors', []) + sec_hopping_matrix.n_orbitals = self.wout_parser.get("Nwannier") + deg_factors = self.hr_parser.get("degeneracy_factors", []) if deg_factors is not None: sec_hopping_matrix.n_wigner_seitz_points = deg_factors[1] sec_hopping_matrix.degeneracy_factors = deg_factors[2:] - full_hoppings = self.hr_parser.get('hoppings', []) + full_hoppings = self.hr_parser.get("hoppings", []) try: sec_hopping_matrix.value = np.reshape( - full_hoppings, (sec_hopping_matrix.n_wigner_seitz_points, sec_hopping_matrix.n_orbitals * sec_hopping_matrix.n_orbitals, 7)) + full_hoppings, + ( + sec_hopping_matrix.n_wigner_seitz_points, + sec_hopping_matrix.n_orbitals + * sec_hopping_matrix.n_orbitals, + 7, + ), + ) except Exception: - self.logger.warning('Could not parse the hopping matrix values. Please, revise your output files.') + self.logger.warning( + "Could not parse the hopping matrix values. Please, revise your output files." + ) else: # TODO parse specific lattice model - self.logger.warning('Wannier90 _hr.dat files not found in the same folder, cannot resolve the initial model metainfo.') + self.logger.warning( + "Wannier90 _hr.dat files not found in the same folder, cannot resolve the initial model metainfo." + ) # HubbardKanamoriModel # TODO add parse of slater integrals # TODO add parse of the u_matrix.dat file - for n in range(data.attrs.get('general.nat', 1)): + for n in range(data.attrs.get("general.nat", 1)): sec_hubbard_kanamori_model = HubbardKanamoriModel() sec_hamiltonian.hubbard_kanamori_model.append(sec_hubbard_kanamori_model) - angular_momentum = 'd' + angular_momentum = "d" sec_hubbard_kanamori_model.orbital = angular_momentum - sec_hubbard_kanamori_model.double_counting_correction = data.attrs.get('general.dc', None) + sec_hubbard_kanamori_model.double_counting_correction = data.attrs.get( + "general.dc", None + ) # w2dynamics keeps spin-rotational invariance for key in self._hubbard_kanamori_map.keys(): - parameters = data.attrs.get(f'atoms.{n+1}.{key}{angular_momentum}{angular_momentum}', None) * ureg.eV - setattr(sec_hubbard_kanamori_model, self._hubbard_kanamori_map.get(key), parameters) - - if data.attrs.get(f'atoms.{n+1}.hamiltonian') == 'Density': + parameters = ( + data.attrs.get( + f"atoms.{n+1}.{key}{angular_momentum}{angular_momentum}", None + ) + * ureg.eV + ) + setattr( + sec_hubbard_kanamori_model, + self._hubbard_kanamori_map.get(key), + parameters, + ) + + if data.attrs.get(f"atoms.{n+1}.hamiltonian") == "Density": sec_hubbard_kanamori_model.j = 0.0 - elif data.attrs.get(f'atoms.{n+1}.hamiltonian') == 'Kanamori': + elif data.attrs.get(f"atoms.{n+1}.hamiltonian") == "Kanamori": sec_hubbard_kanamori_model.j = sec_hubbard_kanamori_model.jh def parse_method(self, data: h5py.Group): @@ -256,7 +308,7 @@ def parse_method(self, data: h5py.Group): sec_method.starting_method_ref = sec_run.method[0] def parse_config(keys): - key = keys.split('.')[-1] + key = keys.split(".")[-1] if isinstance(data.attrs.get(keys), str): value = data.attrs.get(keys) else: @@ -269,54 +321,66 @@ def parse_config(keys): config_general = {} config_qmc = {} for keys in data.attrs.keys(): - if keys.startswith('general'): + if keys.startswith("general"): key, value = parse_config(keys) config_general[key] = value - elif keys.startswith('qmc'): + elif keys.startswith("qmc"): key, value = parse_config(keys) config_qmc[key] = value sec_config.x_w2dynamics_config_general = config_general sec_config.x_w2dynamics_config_qmc = config_qmc # Parse Method.x_w2dynamics_config atoms quantities - for i in range(data.attrs.get(f'general.nat', 0)): + for i in range(data.attrs.get(f"general.nat", 0)): sec_config_subsection = x_w2dynamics_config_atoms_parameters() sec_config.x_w2dynamics_config_atoms.append(sec_config_subsection) for key in data.attrs.keys(): - if key.startswith(f'atoms.{i+1}'): - keys_mod = (key.replace('-', '_')).split('.') + if key.startswith(f"atoms.{i+1}"): + keys_mod = (key.replace("-", "_")).split(".") parameters = data.attrs.get(key) - setattr(sec_config_subsection, f'x_w2dynamics_{keys_mod[-1]}', parameters) + setattr( + sec_config_subsection, + f"x_w2dynamics_{keys_mod[-1]}", + parameters, + ) # DMFT section sec_dmft = DMFT() sec_method.dmft = sec_dmft - sec_dmft.n_impurities = data.attrs.get(f'general.nat', 0) - if data.attrs.get(f'general.beta'): - sec_dmft.inverse_temperature = data.attrs.get(f'general.beta') / ureg.eV - if data.attrs.get(f'general.magnetism'): - sec_dmft.magnetic_state = data.attrs.get(f'general.magnetism') + 'magnetic' + sec_dmft.n_impurities = data.attrs.get(f"general.nat", 0) + if data.attrs.get(f"general.beta"): + sec_dmft.inverse_temperature = data.attrs.get(f"general.beta") / ureg.eV + if data.attrs.get(f"general.magnetism"): + sec_dmft.magnetic_state = data.attrs.get(f"general.magnetism") + "magnetic" corr_orbs_per_atoms = [] occ_per_atoms = [] for i in range(sec_dmft.n_impurities): - nd = sec_method.x_w2dynamics_config.x_w2dynamics_config_atoms[i].x_w2dynamics_nd - np = sec_method.x_w2dynamics_config.x_w2dynamics_config_atoms[i].x_w2dynamics_np + nd = sec_method.x_w2dynamics_config.x_w2dynamics_config_atoms[ + i + ].x_w2dynamics_nd + np = sec_method.x_w2dynamics_config.x_w2dynamics_config_atoms[ + i + ].x_w2dynamics_np corr_orbs_per_atoms.append(nd + np) - if data.attrs.get(f'general.totdens'): - occ_per_atoms.append(data.attrs.get(f'general.totdens')) + if data.attrs.get(f"general.totdens"): + occ_per_atoms.append(data.attrs.get(f"general.totdens")) sec_dmft.n_correlated_orbitals = corr_orbs_per_atoms sec_dmft.n_electrons = occ_per_atoms - sec_dmft.impurity_solver = 'CT-HYB' + sec_dmft.impurity_solver = "CT-HYB" # FrequencyMesh - iw = self.data.get('.axes').get('iw') + iw = self.data.get(".axes").get("iw") if iw is not None: iw = iw[:].reshape((len(iw), 1)) - sec_freq_mesh = FrequencyMesh(dimensionality=1, n_points=len(iw), points=iw * 1j * ureg.eV) + sec_freq_mesh = FrequencyMesh( + dimensionality=1, n_points=len(iw), points=iw * 1j * ureg.eV + ) sec_method.m_add_sub_section(Method.frequency_mesh, sec_freq_mesh) # TimeMesh - tau = self.data.get('.axes').get('tau') + tau = self.data.get(".axes").get("tau") if tau is not None: tau = tau[:].reshape((len(tau), 1)) - sec_tau_mesh = TimeMesh(dimensionality=1, n_points=len(tau), points=tau * 1j) + sec_tau_mesh = TimeMesh( + dimensionality=1, n_points=len(tau), points=tau * 1j + ) sec_method.m_add_sub_section(Method.time_mesh, sec_tau_mesh) def parse_scc(self): @@ -328,25 +392,33 @@ def parse_scc(self): sec_run = self.archive.run[0] sec_scc = Calculation() sec_run.calculation.append(sec_scc) - if sec_run.m_xpath('system'): + if sec_run.m_xpath("system"): sec_scc.system_ref = sec_run.system[-1] sec_scc.method_ref = sec_run.method[-1] # ref DMFT # order calculations - calc_keys = [key for key in self.data.keys() if key.startswith('dmft-') or key.startswith('stat-')] + calc_keys = [ + key + for key in self.data.keys() + if key.startswith("dmft-") or key.startswith("stat-") + ] calc_keys.sort() - ineq_keys = [key for key in self.data.get(calc_keys[0]).keys() if key.startswith('ineq-')] + ineq_keys = [ + key for key in self.data.get(calc_keys[0]).keys() if key.startswith("ineq-") + ] ineq_keys.sort() # calculating how many inequivalent atoms are per unit cell n_ineq = 0 for keys in self.data[calc_keys[0]]: - if keys.startswith('ineq'): + if keys.startswith("ineq"): n_ineq += 1 n_atoms = sec_run.method[-1].dmft.n_impurities - filename = os.path.join(os.path.dirname(self.filepath.split("/raw/")[-1]), self.mainfile) - farg = 'r+b' # Always reading the hdf5 mainfile + filename = os.path.join( + os.path.dirname(self.filepath.split("/raw/")[-1]), self.mainfile + ) + farg = "r+b" # Always reading the hdf5 mainfile for key in calc_keys: if key not in self.data.keys(): continue @@ -356,97 +428,157 @@ def parse_scc(self): with self.archive.m_context.raw_file(filename, farg) as f: for subkey in self.data.get(key).keys(): parameter = self.data.get(key).get(subkey) - if subkey == 'mu': - value = parameter.get('value') + if subkey == "mu": + value = parameter.get("value") sec_energy = Energy() sec_scf_iteration.energy = sec_energy sec_energy.fermi = np.float64(value) * ureg.eV elif subkey not in ineq_keys: - value = parameter.get('value')[:] - value = to_hdf5(value, f, f'{key}/{subkey}/value') - name = self._re_namesafe.sub('_', subkey) - setattr(sec_scf_iteration, f'x_w2dynamics_{name}', value) + value = parameter.get("value")[:] + value = to_hdf5(value, f, f"{key}/{subkey}/value") + name = self._re_namesafe.sub("_", subkey) + setattr(sec_scf_iteration, f"x_w2dynamics_{name}", value) else: sec_ineq = x_w2dynamics_quantities() sec_scf_iteration.x_w2dynamics_ineq.append(sec_ineq) for name in parameter.keys(): # resolve value from 'value' value = parameter.get(name) - if isinstance(value, h5py.Group) and 'value' in value.keys(): - value = value.get('value') + if ( + isinstance(value, h5py.Group) + and "value" in value.keys() + ): + value = value.get("value") if not isinstance(value, h5py.Dataset): continue - value = to_hdf5(value, f, f'{key}/{subkey}/{name}/value') - name = self._re_namesafe.sub('_', name) - setattr(sec_ineq, f'x_w2dynamics_{name}', value) + value = to_hdf5( + value, f, f"{key}/{subkey}/{name}/value" + ) + name = self._re_namesafe.sub("_", name) + setattr(sec_ineq, f"x_w2dynamics_{name}", value) # Storing converged quantities from dmft-last or stat-last - if key.endswith('last'): + if key.endswith("last"): sec_gf = GreensFunctions() sec_scc.greens_functions.append(sec_gf) - if sec_run.method[-1].m_xpath('frequency_mesh'): - sec_gf.matsubara_freq = sec_run.method[-1].frequency_mesh[0].points.to('eV').magnitude.imag - if sec_run.method[-1].m_xpath('time_mesh'): + if sec_run.method[-1].m_xpath("frequency_mesh"): + sec_gf.matsubara_freq = ( + sec_run.method[-1] + .frequency_mesh[0] + .points.to("eV") + .magnitude.imag + ) + if sec_run.method[-1].m_xpath("time_mesh"): sec_gf.tau = sec_run.method[-1].time_mesh[0].points.imag - if self.data.get(key).get('mu') is not None: - sec_gf.chemical_potential = np.float64(self.data.get(key).get('mu').get('value')) * ureg.eV - norb = self.data.get('.config').attrs.get('atoms.1.nd') + if self.data.get(key).get("mu") is not None: + sec_gf.chemical_potential = ( + np.float64(self.data.get(key).get("mu").get("value")) * ureg.eV + ) + norb = self.data.get(".config").attrs.get("atoms.1.nd") for subkey in self._inequivalent_atom_map.keys(): parameters = [] if n_ineq == n_atoms: for i in range(n_ineq): - value = self.data.get(key).get(f'ineq-00{i + 1}').get(self._inequivalent_atom_map.get(subkey, [])).get('value')[:] + value = ( + self.data.get(key) + .get(f"ineq-00{i + 1}") + .get(self._inequivalent_atom_map.get(subkey, [])) + .get("value")[:] + ) parameters.append(value) elif n_atoms % n_ineq == 0 and n_ineq > 1: for i in range(n_atoms): - value = self.data.get(key).get(f'ineq-00{(i % n_ineq) + 1}').get(self._inequivalent_atom_map.get(subkey, [])).get('value')[:] + value = ( + self.data.get(key) + .get(f"ineq-00{(i % n_ineq) + 1}") + .get(self._inequivalent_atom_map.get(subkey, [])) + .get("value")[:] + ) parameters.append(value) elif n_ineq == 1: for i in range(n_atoms): - value = self.data.get(key).get('ineq-001').get(self._inequivalent_atom_map.get(subkey, [])).get('value')[:] + value = ( + self.data.get(key) + .get("ineq-001") + .get(self._inequivalent_atom_map.get(subkey, [])) + .get("value")[:] + ) parameters.append(value) else: - self.logger.warning('Number of inequivalent atoms and number of atoms per unit cell ' - 'is neither equal nor multiples. Please, revise the output.') + self.logger.warning( + "Number of inequivalent atoms and number of atoms per unit cell " + "is neither equal nor multiples. Please, revise the output." + ) break parameters = np.array(parameters) # reordering calculation matrices to standarize w2dynamics and solid_dmft # (and potentially, other DMFT codes) - parameters_reorder = np.array([[[ - parameters[i, no, ns, :] for no in range(norb)] for ns in range(2)] for i in range(n_atoms)]) + parameters_reorder = np.array( + [ + [ + [parameters[i, no, ns, :] for no in range(norb)] + for ns in range(2) + ] + for i in range(n_atoms) + ] + ) setattr(sec_gf, subkey, parameters_reorder) # summing over atoms per unit cell to keep same array dimensions parameters = [] if n_ineq == n_atoms: for i in range(n_ineq): - value = self.data.get(key).get(f'ineq-00{i + 1}').get('occ').get('value')[:] - parameters.append([[ - value[no, ns, no, ns] - for no in range(norb)] for ns in range(2)]) + value = ( + self.data.get(key) + .get(f"ineq-00{i + 1}") + .get("occ") + .get("value")[:] + ) + parameters.append( + [ + [value[no, ns, no, ns] for no in range(norb)] + for ns in range(2) + ] + ) elif n_atoms % n_ineq == 0 and n_ineq > 1: for i in range(n_atoms): - value = self.data.get(key).get(f'ineq-00{(i % n_ineq) + 1}').get('occ').get('value')[:] - parameters.append([[ - value[no, ns, no, ns] - for no in range(norb)] for ns in range(2)]) + value = ( + self.data.get(key) + .get(f"ineq-00{(i % n_ineq) + 1}") + .get("occ") + .get("value")[:] + ) + parameters.append( + [ + [value[no, ns, no, ns] for no in range(norb)] + for ns in range(2) + ] + ) elif n_ineq == 1: for i in range(n_atoms): - value = self.data.get(key).get(f'ineq-001').get('occ').get('value')[:] - parameters.append([[ - value[no, ns, no, ns] - for no in range(norb)] for ns in range(2)]) + value = ( + self.data.get(key) + .get(f"ineq-001") + .get("occ") + .get("value")[:] + ) + parameters.append( + [ + [value[no, ns, no, ns] for no in range(norb)] + for ns in range(2) + ] + ) sec_gf.orbital_occupations = np.array(parameters) def init_parser(self): self.data = None def get_mainfile_keys(self, **kwargs): - filepath = kwargs.get('filename') + filepath = kwargs.get("filename") mainfile = os.path.basename(filepath) - wannier90_files = get_files('*.wout', filepath, mainfile, deep=False) + wannier90_files = get_files("*.wout", filepath, mainfile, deep=False) if len(wannier90_files) == 1: - return ['DMFT_workflow'] + return ["DMFT_workflow"] return True def parse(self, filepath, archive, logger): @@ -460,7 +592,7 @@ def parse(self, filepath, archive, logger): data = h5py.File(self.filepath) self.data = data except Exception: - self.logger.error('Error opening hdf5 file.') + self.logger.error("Error opening hdf5 file.") data = None return @@ -469,25 +601,28 @@ def parse(self, filepath, archive, logger): # Program section sec_run.program = Program( - name='w2dynamics', version=self.parse_program_version()) + name="w2dynamics", version=self.parse_program_version() + ) # run.x_w2dynamics_axes section sec_axes = x_w2dynamics_axes() sec_run.x_w2dynamics_axes = sec_axes - self.parse_axes(self.data.get('.axes'), sec_axes) + self.parse_axes(self.data.get(".axes"), sec_axes) # System section - if self.data.get('.config'): - wannier90_name = self.data.get('.config').attrs.get('general.hkfile') + if self.data.get(".config"): + wannier90_name = self.data.get(".config").attrs.get("general.hkfile") if wannier90_name: - wannier90_name = wannier90_name.split('_')[0] + wannier90_name = wannier90_name.split("_")[0] else: - self.logger.warning('HDF5 attribute .config/general.hkfile not found. We will ' - 'scan the folder to find the Wannier90 input model.') + self.logger.warning( + "HDF5 attribute .config/general.hkfile not found. We will " + "scan the folder to find the Wannier90 input model." + ) self.parse_system(wannier90_name) - # Method.DMFT section with inputs (HoppingMatrix + InteractionModel) - self.parse_input_model(self.data.get('.config'), wannier90_name) - self.parse_method(self.data.get('.config')) + # Method.DMFT section with inputs (HoppingMatrix + InteractionModel) + self.parse_input_model(self.data.get(".config"), wannier90_name) + self.parse_method(self.data.get(".config")) # Calculation section self.parse_scc() @@ -498,31 +633,43 @@ def parse(self, filepath, archive, logger): # Checking if other mainfiles are present, if the closest is a Wannier90, tries to # link it with the corresponding w2dynamics data - wannier90_files = get_files('*.wout', self.filepath, self.mainfile, deep=False) + wannier90_files = get_files("*.wout", self.filepath, self.mainfile, deep=False) if len(wannier90_files) == 1: - wannier90_path = wannier90_files[-1].split('raw/')[-1] - filepath_stripped = self.filepath.split('raw/')[-1] + wannier90_path = wannier90_files[-1].split("raw/")[-1] + filepath_stripped = self.filepath.split("raw/")[-1] try: upload_id = self.archive.metadata.upload_id search_ids = search( - owner='visible', + owner="visible", user_id=self.archive.metadata.main_author.user_id, - query={'upload_id': upload_id}, - required=MetadataRequired(include=['entry_id', 'mainfile']) + query={"upload_id": upload_id}, + required=MetadataRequired(include=["entry_id", "mainfile"]), ).data - metadata = [[sid['entry_id'], sid['mainfile']] for sid in search_ids] + metadata = [[sid["entry_id"], sid["mainfile"]] for sid in search_ids] if len(metadata) > 1: for entry_id, mainfile in metadata: - if mainfile == filepath_stripped: # we skipped the current parsed mainfile + if ( + mainfile == filepath_stripped + ): # we skipped the current parsed mainfile continue - entry_archive = archive.m_context.load_archive(entry_id, upload_id, None) - if wannier90_path == mainfile: # TODO add condition on system section or is this enough? System is resolved anyways from wannier90_path + entry_archive = archive.m_context.load_archive( + entry_id, upload_id, None + ) + if ( + wannier90_path == mainfile + ): # TODO add condition on system section or is this enough? System is resolved anyways from wannier90_path wannier90_archive = entry_archive - dmft_workflow_archive = self._child_archives.get('DMFT_workflow') - self.parse_dmft_workflow(wannier90_archive, dmft_workflow_archive) + dmft_workflow_archive = self._child_archives.get( + "DMFT_workflow" + ) + self.parse_dmft_workflow( + wannier90_archive, dmft_workflow_archive + ) break except Exception: - self.logger.warning('Could not resolve the automatic workflow for w2dynamics. ' - 'You can try reorganizing the data in the folders: ' - 'DFT data in the top-most folder. Wannier90 data in the top-most folder ' - 'or one folder below DFT. w2dynamics data one folder below DFT and Wannier90.') + self.logger.warning( + "Could not resolve the automatic workflow for w2dynamics. " + "You can try reorganizing the data in the folders: " + "DFT data in the top-most folder. Wannier90 data in the top-most folder " + "or one folder below DFT. w2dynamics data one folder below DFT and Wannier90." + ) diff --git a/electronicparsers/wannier90/metainfo/wannier90.py b/electronicparsers/wannier90/metainfo/wannier90.py index 8069e2ae..6c0285ae 100644 --- a/electronicparsers/wannier90/metainfo/wannier90.py +++ b/electronicparsers/wannier90/metainfo/wannier90.py @@ -19,7 +19,11 @@ import numpy as np from nomad.metainfo import ( # pylint: disable=unused-import - MSection, Package, Quantity, Section, SubSection + MSection, + Package, + Quantity, + Section, + SubSection, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -31,21 +35,22 @@ class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_wannier90_n_atoms_proj = Quantity( type=np.int32, shape=[], - description=''' + description=""" Number of atoms used in the Wannier90 projection. - ''') + """, + ) x_wannier90_units = Quantity( type=str, shape=[], - description=''' + description=""" Optional. Either Ang or Bohr to specify whether the projection centres specified in this block (if given in Cartesian co-ordinates) are in units of Angstrom or Bohr, respectively. The default value is Ang. - ''') + """, + ) diff --git a/electronicparsers/wien2k/metainfo/wien2k.py b/electronicparsers/wien2k/metainfo/wien2k.py index c6c3825b..11d6a7ca 100644 --- a/electronicparsers/wien2k/metainfo/wien2k.py +++ b/electronicparsers/wien2k/metainfo/wien2k.py @@ -16,11 +16,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import -import typing # pylint: disable=unused-import +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 + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + SectionProxy, + Reference, ) import runschema.run # pylint: disable=unused-import import runschema.calculation # pylint: disable=unused-import @@ -32,666 +39,745 @@ class x_wien2k_header(MSection): - ''' + """ header (labels) of wien2k. - ''' + """ m_def = Section(validate=False) x_wien2k_release_date = Quantity( type=str, shape=[], - description=''' + description=""" Release date of wien2k. - ''') + """, + ) x_wien2k_version = Quantity( type=str, shape=[], - description=''' + description=""" Version of WIEN2k. - ''') + """, + ) class x_wien2k_section_XC(MSection): - ''' + """ exchange-correlation potential, in in0 - ''' + """ m_def = Section(validate=False) x_wien2k_indxc = Quantity( type=str, shape=[], - description=''' + description=""" exchange-correlation potential, in in0 - ''') + """, + ) class x_wien2k_section_equiv_atoms(MSection): - ''' + """ section containing a class of equivalent atoms - ''' + """ m_def = Section(validate=False) x_wien2k_atom_pos_x = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" position of atom x in internal units - ''') + """, + ) x_wien2k_atom_pos_y = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" position of atom y in internal units - ''') + """, + ) x_wien2k_atom_pos_z = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" position of atom z in internal units - ''') + """, + ) x_wien2k_atom_name = Quantity( type=str, shape=[], - description=''' + description=""" name of atom, labelling non-equvalent atoms - ''') + """, + ) x_wien2k_NPT = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of radial mesh points - ''') + """, + ) x_wien2k_RMT = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" atomic sphere radius (muffin-tin radius) - ''') + """, + ) x_wien2k_R0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" first radial mesh point - ''') + """, + ) x_wien2k_atomic_number_Z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" atomic number Z - ''') + """, + ) class Run(runschema.run.Run): - m_def = Section(validate=False, extends_base_section=True) x_wien2k_header = SubSection( - sub_section=SectionProxy('x_wien2k_header'), - repeats=True) + sub_section=SectionProxy("x_wien2k_header"), repeats=True + ) class ScfIteration(runschema.calculation.ScfIteration): - m_def = Section(validate=False, extends_base_section=True) x_wien2k_iteration_number = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" scf iteration number - ''') + """, + ) x_wien2k_nr_of_independent_atoms = Quantity( type=int, - description=''' + description=""" number of independent atoms in the cell - ''') + """, + ) x_wien2k_potential_option = Quantity( type=str, shape=[], - description=''' + description=""" exchange correlation potential option - ''') + """, + ) x_wien2k_system_name = Quantity( type=str, shape=[], - description=''' + description=""" user given name for this system - ''') + """, + ) x_wien2k_total_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" total number of atoms in the cell - ''') + """, + ) x_wien2k_lattice_const_a = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lattice parameter a in this calculation - ''') + """, + ) x_wien2k_lattice_const_b = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lattice parameter b in this calculation - ''') + """, + ) x_wien2k_lattice_const_c = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lattice parameter c in this calculation - ''') + """, + ) x_wien2k_unit_cell_volume_bohr3 = Quantity( type=np.dtype(np.float64), shape=[], - unit='bohr ** 3', - description=''' + unit="bohr ** 3", + description=""" unit cell volume - ''') + """, + ) x_wien2k_spinpolarization = Quantity( type=str, - description=''' + description=""" spinpolarization treatment - ''') + """, + ) x_wien2k_noe = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" number of electrons - ''') + """, + ) x_wien2k_nr_kpts = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" number of k-points - ''') + """, + ) x_wien2k_cutoff = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Potential and charge cut-off, Ry**.5 - ''') + """, + ) x_wien2k_ene_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' + unit="joule", + description=""" energy gap in Ry - ''') + """, + ) x_wien2k_ene_gap_eV = Quantity( type=np.dtype(np.float64), shape=[], - unit='electron_volt', - description=''' + unit="electron_volt", + description=""" energy gap in eV - ''') + """, + ) x_wien2k_matrix_size = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" matrix size - ''') + """, + ) x_wien2k_rkm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" rkm - ''') + """, + ) x_wien2k_LOs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" LOs - ''') + """, + ) x_wien2k_mmtot = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total magnetic moment in cell - ''') + """, + ) x_wien2k_mmint = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" magnetic moment in the interstital region - ''') + """, + ) x_wien2k_mmi = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" magnetic moment inside the sphere - ''') + """, + ) x_wien2k_mmi001 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" magnetic moment inside the sphere - ''') + """, + ) x_wien2k_charge_distance = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" charge distance between last 2 iterations - ''') + """, + ) x_wien2k_for_abs = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" force on atom xx in mRy/bohr (in the local (for each atom) cartesian coordinate system): |F| - ''') + """, + ) x_wien2k_for = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms', 3], - description=''' + shape=["x_wien2k_nr_of_independent_atoms", 3], + description=""" forces on inequivalent atoms in mRy/bohr (in the local (for each atom) cartesian coordinate system) - ''') + """, + ) x_wien2k_for_x = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" force on atom xx in mRy/bohr (in the local (for each atom) cartesian coordinate system): Fx - ''') + """, + ) x_wien2k_for_y = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" force on atom xx in mRy/bohr (in the local (for each atom) cartesian coordinate system): Fy - ''') + """, + ) x_wien2k_for_z = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" force on atom xx in mRy/bohr (in the local (for each atom) cartesian coordinate system): Fz - ''') + """, + ) x_wien2k_for_gl = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms', 3], - description=''' + shape=["x_wien2k_nr_of_independent_atoms", 3], + description=""" force on inequivalent atoms (in the global coordinate system of the unit cell (in the same way as the atomic positions are specified)) - ''') + """, + ) x_wien2k_for_x_gl = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" force on inequivalent atom xx (in the global coordinate system of the unit cell (in the same way as the atomic positions are specified)): Fx - ''') + """, + ) x_wien2k_for_y_gl = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" force on inequivalent atom xx in (in the global coordinate system of the unit cell (in the same way as the atomic positions are specified)): Fy - ''') + """, + ) x_wien2k_for_z_gl = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" force on inequivalent atom xx in (in the global coordinate system of the unit cell (in the same way as the atomic positions are specified)): Fz - ''') + """, + ) x_wien2k_atom_nr = Quantity( type=str, shape=[], - description=''' + description=""" number of atom, labelling atoms - ''') + """, + ) x_wien2k_atom_mult = Quantity( type=np.dtype(np.int32), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" atom multiplicity - ''') + """, + ) x_wien2k_sphere_nr = Quantity( type=str, shape=[], - description=''' + description=""" number of sphere, labelling spheres - ''') + """, + ) x_wien2k_tot_diff_charge = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" total difference charge density for atom xx between last 2 iterations - ''') + """, + ) x_wien2k_tot_int_charge = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total interstitial charge (mixed after MIXER) - ''') + """, + ) x_wien2k_tot_charge_in_sphere = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" total charge in sphere xx (mixed after MIXER) - ''') + """, + ) x_wien2k_tot_int_charge_nm = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total interstitial charge (new (not mixed) from LAPW2+LCORE - ''') + """, + ) x_wien2k_tot_charge_in_sphere_nm = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" total charge in sphere xx (new (not mixed) from LAPW2+LCORE - ''') + """, + ) x_wien2k_tot_val_charge_cell = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total valence charge inside unit cell - ''') + """, + ) x_wien2k_tot_val_charge_sphere = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" total valence charge in sphere xx - ''') + """, + ) x_wien2k_density_at_nucleus_valence = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" density for atom xx at the nucleus (first radial mesh point); valence - ''') + """, + ) x_wien2k_density_at_nucleus_semicore = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" density for atom xx at the nucleus (first radial mesh point); semi-core - ''') + """, + ) x_wien2k_density_at_nucleus_core = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" density for atom xx at the nucleus (first radial mesh point); core - ''') + """, + ) x_wien2k_density_at_nucleus_tot = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" density for atom xx at the nucleus (first radial mesh point); total - ''') + """, + ) x_wien2k_nuclear_charge = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" nuclear and electronic charge; normalization check of electronic charge densities. If a significant amount of electrons is missing, one might have core states, whose charge density is not completely confined within the respective atomic sphere. In such a case the corresponding states should be treated as band states (using LOs). - ''') + """, + ) x_wien2k_electronic_charge = Quantity( type=np.dtype(np.float64), - shape=['x_wien2k_nr_of_independent_atoms'], - description=''' + shape=["x_wien2k_nr_of_independent_atoms"], + description=""" nuclear and electronic charge; normalization check of electronic charge densities. If a significant amount of electrons is missing, one might have core states, whose charge density is not completely confined within the respective atomic sphere. In such a case the corresponding states should be treated as band states (using LOs). - ''') + """, + ) x_wien2k_necnr = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of the nec test, labelling nec - ''') + """, + ) class System(runschema.system.System): - m_def = Section(validate=False, extends_base_section=True) x_wien2k_nonequiv_atoms = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" number of inequivalent atoms in the unit cell - ''') + """, + ) x_wien2k_system_nameIn = Quantity( type=str, shape=[], - description=''' + description=""" user given name for this system given in the struct file - ''') + """, + ) x_wien2k_calc_mode = Quantity( type=str, shape=[], - description=''' + description=""" relativistic or nonrelativistic calculation mode - ''') + """, + ) x_wien2k_unit_cell_param_a = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" unit cell parameters - a - ''') + """, + ) x_wien2k_unit_cell_param_b = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" unit cell parameters - b - ''') + """, + ) x_wien2k_unit_cell_param_c = Quantity( type=np.dtype(np.float64), shape=[], - unit='meter', - description=''' + unit="meter", + description=""" unit cell parameters - c - ''') + """, + ) x_wien2k_angle_between_unit_axis_alfa = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" unit cell parameters - alfa - ''') + """, + ) x_wien2k_angle_between_unit_axis_beta = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" unit cell parameters - beta - ''') + """, + ) x_wien2k_angle_between_unit_axis_gamma = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" unit cell parameters - gamma - ''') + """, + ) x_wien2k_section_equiv_atoms = SubSection( - sub_section=SectionProxy('x_wien2k_section_equiv_atoms'), - repeats=True) + sub_section=SectionProxy("x_wien2k_section_equiv_atoms"), repeats=True + ) class Method(runschema.method.Method): - m_def = Section(validate=False, extends_base_section=True) x_wien2k_switch = Quantity( type=str, shape=[], - description=''' + description=""" switch in in0 between TOT, KXC, POT, MULT, COUL, EXCH - ''') + """, + ) x_wien2k_ifft = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' + description=""" FFT-mesh parameters in x direction for the calculation of the XC-potential in the interstitial region, in in0 - ''') + """, + ) x_wien2k_ifft_x = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FFT-mesh parameters in x direction for the calculation of the XC-potential in the interstitial region, in in0 - ''') + """, + ) x_wien2k_ifft_y = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FFT-mesh parameters in y direction for the calculation of the XC-potential in the interstitial region, in in0 - ''') + """, + ) x_wien2k_ifft_z = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" FFT-mesh parameters in z direction for the calculation of the XC-potential in the interstitial region, in in0 - ''') + """, + ) x_wien2k_ifft_factor = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" Multiplicative factor to the IFFT grid, in in0 - ''') + """, + ) x_wien2k_iprint = Quantity( type=np.dtype(np.int32), shape=[], - description=''' + description=""" optional print switch, in in0 - ''') + """, + ) x_wien2k_in2_switch = Quantity( type=str, shape=[], - description=''' + description=""" switch, in in2 between (TOT,FOR,QTL,EFG,ALM,CLM,FERMI) - ''') + """, + ) x_wien2k_in2_emin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" lower energy cut-off for defining the range of occupied states; in in2 - ''') + """, + ) x_wien2k_in2_ne = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" number of electrons (per unit cell) in given energy range in in2 - ''') + """, + ) x_wien2k_in2_espermin = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" LAPW2 tries to find the .mean. energies for each l channel, for both the valence and the semicore states. To define .valence. and .semicore. it starts at (EF - .esepermin.) and searches for a .gap. with a width of at least .eseper0. and defines this as separation energy of valence and semicore; in in2 - ''') + """, + ) x_wien2k_in2_esper0 = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" minimum gap width; in in2 - ''') + """, + ) x_wien2k_smearing_kind = Quantity( type=str, shape=[], - description=''' + description=""" determines how EF is determined; in in2 - ''') + """, + ) x_wien2k_in2_gmax = Quantity( type=np.dtype(np.float64), shape=[], - description=''' + description=""" max. G (magnitude of largest vector) in charge density Fourier expansion; in in2 - ''') + """, + ) x_wien2k_section_XC = SubSection( - sub_section=SectionProxy('x_wien2k_section_XC'), - repeats=True) + sub_section=SectionProxy("x_wien2k_section_XC"), repeats=True + ) diff --git a/electronicparsers/wien2k/parser.py b/electronicparsers/wien2k/parser.py index f3394fe8..a3c7c876 100644 --- a/electronicparsers/wien2k/parser.py +++ b/electronicparsers/wien2k/parser.py @@ -29,15 +29,28 @@ from nomad.parsing.file_parser import TextParser, Quantity from runschema.run import Run, Program, TimeRun from runschema.method import ( - Electronic, Method, DFT, Smearing, XCFunctional, Functional, KMesh, BasisSet, - BasisSetContainer, OrbitalAPW -) -from runschema.system import ( - System, Atoms + Electronic, + Method, + DFT, + Smearing, + XCFunctional, + Functional, + KMesh, + BasisSet, + BasisSetContainer, + OrbitalAPW, ) +from runschema.system import System, Atoms from runschema.calculation import ( - Calculation, Forces, ForcesEntry, ScfIteration, Energy, EnergyEntry, BandEnergies, Dos, - DosValues + Calculation, + Forces, + ForcesEntry, + ScfIteration, + Energy, + EnergyEntry, + BandEnergies, + Dos, + DosValues, ) from simulationworkflowschema import SinglePoint from .metainfo.wien2k import x_wien2k_section_equiv_atoms @@ -50,9 +63,10 @@ def __init__(self): def init_quantities(self): self._quantities = [ Quantity( - 'xc_functional', - r'(?:TOT|KXC|POT|MULT|COUL|EXCH)\s*([\w ]+)', dtype=str), - Quantity('fft', r'FFT[\s\S]+?(\d+\s+\d+\s+\d+\s+[\d\.]+)')] + "xc_functional", r"(?:TOT|KXC|POT|MULT|COUL|EXCH)\s*([\w ]+)", dtype=str + ), + Quantity("fft", r"FFT[\s\S]+?(\d+\s+\d+\s+\d+\s+[\d\.]+)"), + ] class In1Parser(FileParser): @@ -60,112 +74,135 @@ def __init__(self, mainfile=None, logger=None, open=None): super().__init__(mainfile, logger=logger, open=open) def parse(self): - self._results = {'species': []} + self._results = {"species": []} num_orbitals = 0 with self.mainfile_obj as f: for line_id, line in enumerate(f): if line_id == 0: line = line.strip().split() - self._results['calc_mode'] = line[0] - if re.match(r'EF', line[1]): - self._results['e_ref'] = float(line[1].split('=')[1]) + self._results["calc_mode"] = line[0] + if re.match(r"EF", line[1]): + self._results["e_ref"] = float(line[1].split("=")[1]) elif line_id == 1: line = line.strip().split() - for tag, val in zip(['rkmax', 'lmax', 'lvnsmax'], line): + for tag, val in zip(["rkmax", "lmax", "lvnsmax"], line): try: self._results[tag] = int(val) except ValueError: self._results[tag] = float(val) - elif re.search(r'K-VECTORS', line): + elif re.search(r"K-VECTORS", line): continue # further specify the species setup elif num_orbitals > 0: line = line.strip().split() orbital_settings = {} - for tag, val in zip(['l', 'e_param', 'e_diff', 'diff_search', 'type'], line[:5]): + for tag, val in zip( + ["l", "e_param", "e_diff", "diff_search", "type"], line[:5] + ): for converter in (int, float, lambda x: x): try: orbital_settings[tag] = converter(val) break except ValueError: pass - self._results['species'][-1]['orbital'].append(orbital_settings) + self._results["species"][-1]["orbital"].append(orbital_settings) num_orbitals -= 1 # add a new species setup elif num_orbitals == 0: - species_settings = {'orbital': []} + species_settings = {"orbital": []} line = line.strip().split() - species_settings['e_param'] = float(line[0]) - species_settings['type'] = int(line[2]) - self._results['species'].append(species_settings) + species_settings["e_param"] = float(line[0]) + species_settings["type"] = int(line[2]) + self._results["species"].append(species_settings) num_orbitals = int(line[1]) class StructParser(TextParser): def __init__(self): super().__init__() - self._units_map = { - 'b': ureg.bohr, 'a': ureg.angstrom} + self._units_map = {"b": ureg.bohr, "a": ureg.angstrom} def init_quantities(self): - re_float = r'[\d\.\-]+' - re_lat = r'\d+\.\d{6}' + re_float = r"[\d\.\-]+" + re_lat = r"\d+\.\d{6}" self._quantities = [ Quantity( - 'lattice', - r'([\s\S]+?)\n *AT', - sub_parser=TextParser(quantities=[ - Quantity('nonequiv_atoms', r'NONEQUIV\.ATOMS\:\s*(\d+)', dtype=int), - Quantity('lattice', r'(\w+)\s*LATTICE'), - Quantity('calc_mode', r'(N*REL\S*)'), - Quantity( - 'lattice_constants', - # fixed precision, sometimes no spaces - rf'({re_lat})\s*({re_lat})\s*({re_lat})\s*({re_lat})\s*({re_lat})\s*({re_lat})', - dtype=np.dtype(np.float64)), - Quantity( - 'unit', - r'unit=(\w)', - str_operation=lambda x: self._units_map.get(x, ureg.bohr))])), - Quantity( - 'atom', - r'OM\s+\-*\d+\:\s*(X\=[\s\S]+?)LOCAL', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'positions', - rf'X\=({re_float})\s*Y=({re_float})\s*Z=({re_float})', - repeats=True, dtype=np.dtype(np.float64)), - Quantity('atom_name', r'(\n *[A-Z][a-z]*\d* +)'), - Quantity('NPT', r'NPT\s*\=\s*(\d+)', dtype=int), - Quantity('R0', r'R0\s*\=\s*(\d+)', dtype=int), - Quantity('Z', r'Z\:\s*([\d\.]+)', dtype=np.float64)]))] + "lattice", + r"([\s\S]+?)\n *AT", + sub_parser=TextParser( + quantities=[ + Quantity( + "nonequiv_atoms", r"NONEQUIV\.ATOMS\:\s*(\d+)", dtype=int + ), + Quantity("lattice", r"(\w+)\s*LATTICE"), + Quantity("calc_mode", r"(N*REL\S*)"), + Quantity( + "lattice_constants", + # fixed precision, sometimes no spaces + rf"({re_lat})\s*({re_lat})\s*({re_lat})\s*({re_lat})\s*({re_lat})\s*({re_lat})", + dtype=np.dtype(np.float64), + ), + Quantity( + "unit", + r"unit=(\w)", + str_operation=lambda x: self._units_map.get(x, ureg.bohr), + ), + ] + ), + ), + Quantity( + "atom", + r"OM\s+\-*\d+\:\s*(X\=[\s\S]+?)LOCAL", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "positions", + rf"X\=({re_float})\s*Y=({re_float})\s*Z=({re_float})", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity("atom_name", r"(\n *[A-Z][a-z]*\d* +)"), + Quantity("NPT", r"NPT\s*\=\s*(\d+)", dtype=int), + Quantity("R0", r"R0\s*\=\s*(\d+)", dtype=int), + Quantity("Z", r"Z\:\s*([\d\.]+)", dtype=np.float64), + ] + ), + ), + ] def get_atoms(self): - ''' + """ Returns an ASE atoms representation of the structure. - ''' + """ if self.mainfile is None: return try: - return ioread(self.mainfile, format='struct') + return ioread(self.mainfile, format="struct") except Exception: # read it from parsed info - if self.get('lattice') is None: + if self.get("lattice") is None: return - lattice_constants = self.get('lattice').get('lattice_constants') - unit = self.get('lattice').get('unit', ureg.bohr) - lattice_constants[:3] = (lattice_constants[:3] * unit).to('angstrom').magnitude + lattice_constants = self.get("lattice").get("lattice_constants") + unit = self.get("lattice").get("unit", ureg.bohr) + lattice_constants[:3] = ( + (lattice_constants[:3] * unit).to("angstrom").magnitude + ) scaled_positions = [] numbers = [] - for atom in self.get('atom', []): - positions = atom.get('positions', []) + for atom in self.get("atom", []): + positions = atom.get("positions", []) scaled_positions.extend(positions) - numbers.extend([int(atom.get('Z', 0))] * len(positions)) + numbers.extend([int(atom.get("Z", 0))] * len(positions)) return Atoms( - cell=lattice_constants, scaled_positions=scaled_positions, numbers=numbers, pbc=True) + cell=lattice_constants, + scaled_positions=scaled_positions, + numbers=numbers, + pbc=True, + ) class In2Parser(TextParser): @@ -174,10 +211,11 @@ def __init__(self): def init_quantities(self): self._quantities = [ - Quantity('switch', r'(TOT|FOR|QTL|EFG|FERMI)'), - Quantity('emin', r'([\d\.\- ]+)\s*EMIN'), - Quantity('smearing', r'(GAUSS|ROOT|TEMP|TETRA|ALL)\s*([\d\.]+)'), - Quantity('gmax', r'([\d\.\-]+)\s*GMAX')] + Quantity("switch", r"(TOT|FOR|QTL|EFG|FERMI)"), + Quantity("emin", r"([\d\.\- ]+)\s*EMIN"), + Quantity("smearing", r"(GAUSS|ROOT|TEMP|TETRA|ALL)\s*([\d\.]+)"), + Quantity("gmax", r"([\d\.\-]+)\s*GMAX"), + ] class DosParser(TextParser): @@ -185,10 +223,13 @@ def __init__(self): super().__init__() def init_quantities(self): - re_f = r'\-*\d+\.\d+' + re_f = r"\-*\d+\.\d+" self._quantities = [ - Quantity('labels', r'# ENERGY +(.+)', flatten=False), - Quantity('data', rf'({re_f} +{re_f}.*)', repeats=True, dtype=np.dtype(np.float64))] + Quantity("labels", r"# ENERGY +(.+)", flatten=False), + Quantity( + "data", rf"({re_f} +{re_f}.*)", repeats=True, dtype=np.dtype(np.float64) + ), + ] class OutParser(TextParser): @@ -196,208 +237,362 @@ def __init__(self): super().__init__() def init_quantities(self): - re_float = r'[\d\.Ee\-\+]+' + re_float = r"[\d\.Ee\-\+]+" iteration_quantities = [ Quantity( - 'NATO', - r'(NATO\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'nr_of_independent_atoms', - r'(\d+)\s*INDEPENDENT', dtype=int), - Quantity( - 'total_atoms', - r'(\d+)\s*TOTAL ATOMS IN UNITCELL', dtype=int), - Quantity('system_name', r'SUBSTANCE:\s*(.+)', flatten=False)])), - Quantity( - 'POT', - r'(POT\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'potential_option', - r'POTENTIAL OPTION\s*(.+)', dtype=str, flatten=False)])), - Quantity( - 'LAT', - r'(LAT\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity('lattice_const', r'LATTICE CONSTANTS=\s*([\d\. ]+)')])), - Quantity( - 'VOL', - r'(VOL\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'unit_cell_volume_bohr3', - rf'UNIT CELL VOLUME\s*\=\s*({re_float})', - dtype=np.float64), - Quantity('spinpolarization', r'((?:NON-)*SPINPOLARIZED) CALCULATION')])), - Quantity( - 'RKM', - r'(RKM\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity('matrix_size', r'MATRIX SIZE\s*(\d+)', dtype=int), - Quantity('LOs', r'LOs:\s*(\d+)', dtype=int), - Quantity('rkm', r'RKM\=\s*([\d\.]+)', dtype=np.float64)])), - Quantity( - 'KPT', - r'(KPT\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[Quantity( - 'nr_kpts', r'NUMBER OF K-POINTS:\s*(\d+)', dtype=int)])), - Quantity( - 'GAP', - r'(GAP\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[Quantity( - 'ene_gap', rf'({re_float})\s*Ry', dtype=np.float64, unit=ureg.rydberg)])), - Quantity( - 'NOE', - r'(NOE\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'noe', - rf'NUMBER OF ELECTRONS\s*\=\s*({re_float})', - dtype=np.float64)])), - Quantity( - 'FER', - r'(FER\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'energy_reference_fermi', - r'F E R M I \- ENERGY.+?\=\s*([\d\.\-\+Ee ]+)', - str_operation=lambda x: [float(v) for v in x.strip().split()] * ureg.rydberg, - convert=False)])), - Quantity( - 'GMA', - r'(GMA\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'cutoff', - rf'POTENTIAL AND CHARGE CUT\-OFF\s*({re_float})', - dtype=np.float64)])), - Quantity( - 'POSi', - r'(POS\d+\:[\s\S]+?)\n *\:', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity('atom_mult', r'MULT.*?\s*\=\s*(\d+)', dtype=int), - Quantity( - 'position', - rf'POSITION\s*\=\s*({re_float}\s*{re_float}\s*{re_float})', - dtype=np.float64)])), - Quantity( - 'CHAi', - r'(CHA\d+\:[\s\S]+?)\n *\:', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'tot_val_charge_cell', - rf'TOTAL .+?CHARGE INSIDE.+?\=\s*({re_float})', - dtype=np.float64)])), - Quantity( - 'SUM', - r'(SUM\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'energy_sum_eigenvalues', - rf'SUM OF EIGENVALUES\s*\=\s*({re_float})', - dtype=np.float64, unit=ureg.rydberg)])), - Quantity( - 'RTOi', - rf'RTO\d+\:\s*\d+\s*({re_float})\s*({re_float})\s*({re_float})\s*({re_float})\s*', - dtype=np.dtype(np.float64), repeats=True), - Quantity( - 'NTO', - r'(NTO\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'tot_int_charge_nm', - rf'CHARGE\s*\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'NTOi', - r'(NTO\d+\:[\s\S]+?)\n *\:', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'tot_charge_in_sphere_nm', - rf'CHARGE.+\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'DTOi', - r'(DTO\d+\:[\s\S]+?)\n *\:', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'tot_diff_charge', - rf'TOTAL\s*DIFFERENCE CHARGE.+\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'DIS', - r'(DIS\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'charge_distance', - rf'CHARGE DISTANCE.+\)\s*({re_float})', dtype=np.float64)])), - Quantity( - 'CTO', - r'(CTO\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'tot_int_charge', - rf'CHARGE\s*\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'CTOi', - r'(CTO\d+\:[\s\S]+?)\n *\:', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'tot_charge_in_sphere', - rf'TOTAL\s*CHARGE IN SPHERE.+\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'NECi', - rf'NEC\d+\:\s*NUCLEAR AND ELECTRONIC CHARGE\s*({re_float})\s*({re_float})', - dtype=np.dtype(np.float64), repeats=True), - Quantity( - 'MMINT', - r'(MMINT\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'mmint', - rf'MAGNETIC MOMENT IN INTERSTITIAL\s*\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'MMIi', - r'(MMI\d+\:[\s\S]+?)\n *\:', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'mmi', - rf'MAGNETIC MOMENT IN SPHERE\s*\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'MMTOT', - r'(MMTOT\s*\:[\s\S]+?)\n *\:', - sub_parser=TextParser(quantities=[ - Quantity( - 'mmtot', - rf' MAGNETIC MOMENT IN CELL\s*\=\s*({re_float})', dtype=np.float64)])), - Quantity( - 'ENE', - r'(ENE\s*\:[\s\S]+?)\n', - sub_parser=TextParser(quantities=[ - Quantity( - 'energy_total', - rf'TOTAL ENERGY IN Ry\s*\=\s*({re_float})', - dtype=np.float64, unit=ureg.rydberg)])), - Quantity( - 'FORi', - rf'FOR\d+\:\s*\d+\.ATOM\s*({re_float}\s*{re_float}\s*{re_float}\s*{re_float})', - repeats=True, dtype=np.dtype(np.float64)), - Quantity( - 'FGLi', - rf'FGL\d+\:\s*\d+\.ATOM\s*({re_float}\s*{re_float}\s*{re_float})', - repeats=True, dtype=np.dtype(np.float64))] + "NATO", + r"(NATO\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "nr_of_independent_atoms", r"(\d+)\s*INDEPENDENT", dtype=int + ), + Quantity( + "total_atoms", r"(\d+)\s*TOTAL ATOMS IN UNITCELL", dtype=int + ), + Quantity("system_name", r"SUBSTANCE:\s*(.+)", flatten=False), + ] + ), + ), + Quantity( + "POT", + r"(POT\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "potential_option", + r"POTENTIAL OPTION\s*(.+)", + dtype=str, + flatten=False, + ) + ] + ), + ), + Quantity( + "LAT", + r"(LAT\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity("lattice_const", r"LATTICE CONSTANTS=\s*([\d\. ]+)") + ] + ), + ), + Quantity( + "VOL", + r"(VOL\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "unit_cell_volume_bohr3", + rf"UNIT CELL VOLUME\s*\=\s*({re_float})", + dtype=np.float64, + ), + Quantity( + "spinpolarization", r"((?:NON-)*SPINPOLARIZED) CALCULATION" + ), + ] + ), + ), + Quantity( + "RKM", + r"(RKM\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity("matrix_size", r"MATRIX SIZE\s*(\d+)", dtype=int), + Quantity("LOs", r"LOs:\s*(\d+)", dtype=int), + Quantity("rkm", r"RKM\=\s*([\d\.]+)", dtype=np.float64), + ] + ), + ), + Quantity( + "KPT", + r"(KPT\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity("nr_kpts", r"NUMBER OF K-POINTS:\s*(\d+)", dtype=int) + ] + ), + ), + Quantity( + "GAP", + r"(GAP\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "ene_gap", + rf"({re_float})\s*Ry", + dtype=np.float64, + unit=ureg.rydberg, + ) + ] + ), + ), + Quantity( + "NOE", + r"(NOE\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "noe", + rf"NUMBER OF ELECTRONS\s*\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "FER", + r"(FER\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_reference_fermi", + r"F E R M I \- ENERGY.+?\=\s*([\d\.\-\+Ee ]+)", + str_operation=lambda x: [ + float(v) for v in x.strip().split() + ] + * ureg.rydberg, + convert=False, + ) + ] + ), + ), + Quantity( + "GMA", + r"(GMA\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "cutoff", + rf"POTENTIAL AND CHARGE CUT\-OFF\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "POSi", + r"(POS\d+\:[\s\S]+?)\n *\:", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity("atom_mult", r"MULT.*?\s*\=\s*(\d+)", dtype=int), + Quantity( + "position", + rf"POSITION\s*\=\s*({re_float}\s*{re_float}\s*{re_float})", + dtype=np.float64, + ), + ] + ), + ), + Quantity( + "CHAi", + r"(CHA\d+\:[\s\S]+?)\n *\:", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "tot_val_charge_cell", + rf"TOTAL .+?CHARGE INSIDE.+?\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "SUM", + r"(SUM\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_sum_eigenvalues", + rf"SUM OF EIGENVALUES\s*\=\s*({re_float})", + dtype=np.float64, + unit=ureg.rydberg, + ) + ] + ), + ), + Quantity( + "RTOi", + rf"RTO\d+\:\s*\d+\s*({re_float})\s*({re_float})\s*({re_float})\s*({re_float})\s*", + dtype=np.dtype(np.float64), + repeats=True, + ), + Quantity( + "NTO", + r"(NTO\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "tot_int_charge_nm", + rf"CHARGE\s*\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "NTOi", + r"(NTO\d+\:[\s\S]+?)\n *\:", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "tot_charge_in_sphere_nm", + rf"CHARGE.+\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "DTOi", + r"(DTO\d+\:[\s\S]+?)\n *\:", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "tot_diff_charge", + rf"TOTAL\s*DIFFERENCE CHARGE.+\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "DIS", + r"(DIS\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "charge_distance", + rf"CHARGE DISTANCE.+\)\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "CTO", + r"(CTO\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "tot_int_charge", + rf"CHARGE\s*\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "CTOi", + r"(CTO\d+\:[\s\S]+?)\n *\:", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "tot_charge_in_sphere", + rf"TOTAL\s*CHARGE IN SPHERE.+\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "NECi", + rf"NEC\d+\:\s*NUCLEAR AND ELECTRONIC CHARGE\s*({re_float})\s*({re_float})", + dtype=np.dtype(np.float64), + repeats=True, + ), + Quantity( + "MMINT", + r"(MMINT\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "mmint", + rf"MAGNETIC MOMENT IN INTERSTITIAL\s*\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "MMIi", + r"(MMI\d+\:[\s\S]+?)\n *\:", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "mmi", + rf"MAGNETIC MOMENT IN SPHERE\s*\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "MMTOT", + r"(MMTOT\s*\:[\s\S]+?)\n *\:", + sub_parser=TextParser( + quantities=[ + Quantity( + "mmtot", + rf" MAGNETIC MOMENT IN CELL\s*\=\s*({re_float})", + dtype=np.float64, + ) + ] + ), + ), + Quantity( + "ENE", + r"(ENE\s*\:[\s\S]+?)\n", + sub_parser=TextParser( + quantities=[ + Quantity( + "energy_total", + rf"TOTAL ENERGY IN Ry\s*\=\s*({re_float})", + dtype=np.float64, + unit=ureg.rydberg, + ) + ] + ), + ), + Quantity( + "FORi", + rf"FOR\d+\:\s*\d+\.ATOM\s*({re_float}\s*{re_float}\s*{re_float}\s*{re_float})", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "FGLi", + rf"FGL\d+\:\s*\d+\.ATOM\s*({re_float}\s*{re_float}\s*{re_float})", + repeats=True, + dtype=np.dtype(np.float64), + ), + ] self._quantities = [ Quantity( - 'version', - r'LABEL\d+\:\s*using WIEN2k_(\S+) \(Release ([\d\/]+)\)', flatten=False), + "version", + r"LABEL\d+\:\s*using WIEN2k_(\S+) \(Release ([\d\/]+)\)", + flatten=False, + ), Quantity( - 'start_date', - r'LABEL\d+\:\s*on .+ at \w+ (\w+ \d+ \d\d\:\d\d\:\d\d)\s*\w*\s*(\d+)', - flatten=False), + "start_date", + r"LABEL\d+\:\s*on .+ at \w+ (\w+ \d+ \d\d\:\d\d\:\d\d)\s*\w*\s*(\d+)", + flatten=False, + ), Quantity( - 'iteration', - r'\d+\:\s*(\d+\.\s* ITERATION[\s\S]+?)(?:\:ITE|\Z)', - repeats=True, sub_parser=TextParser(quantities=iteration_quantities))] + "iteration", + r"\d+\:\s*(\d+\.\s* ITERATION[\s\S]+?)(?:\:ITE|\Z)", + repeats=True, + sub_parser=TextParser(quantities=iteration_quantities), + ), + ] class Wien2kParser: @@ -406,45 +601,46 @@ def __init__(self): # http://www.wien2k.at/reg_user/textbooks/usersguide.pdf # implement libxc compatibility self._xc_functional_map = { - '5': ['LDA_X', 'LDA_C_PW'], - '6': ['HF_X'], - '11': ['GGA_X_WC', 'GGA_C_PBE'], - '13': ['GGA_X_PBE', 'GGA_C_PBE'], - '17': ['GGA_X_PW91'], - '18': ['HYB_GGA_XC_B3PW91'], - '19': ['GGA_X_PBE_SOL', 'GGA_C_PBE_SOL'], - '24': ['GGA_X_B88', 'GGA_C_LYP'], - '28': ['MGGA_X_TB09', 'LDA_C_PW'], - '27': ['MGGA_X_TPSS', 'MGGA_C_TPSS'], - '29': ['MGGA_C_REVTPSS, GGA_C_REGTPSS'], - '46': ['GGA_X_HTBS'], - '47': ['HYB_GGA_XC_B3LYP'], - 'XC_LDA': ['LDA_X', 'LDA_C_PW'], - 'XC_PBE': ['GGA_X_PBE', 'GGA_C_PBE'], - 'XC_WC': ['GGA_X_WC', 'GGA_C_PBE'], - 'XC_PBESOL': ['GGA_X_PBE_SOL', 'GGA_C_PBE_SOL'], - 'XC_B3PW91': ['HYB_GGA_XC_B3PW91'], - 'XC_B3LYP': ['HYB_GGA_XC_B3LYP'], - 'XC_MBJ': ['MGGA_X_TB09', 'LDA_C_PW'], - 'XC_TPSS': ['MGGA_X_TPSS', 'MGGA_C_TPSS'], - 'XC_REVTPSS': ['MGGA_C_REVTPSS, GGA_C_REGTPSS'], - 'XC_MGGA_MS': ['MGGA_X_MS', 'MGGA_C_MS'], - 'XC_MVS': ['MGGA_X_MVS', 'MGGA_C_MVS'], - 'XC_MBEEF': ['MGGA_X_MBEEF', 'GGA_C_PBE_SOL'], - 'XC_SCAN': ['MGGA_X_SCAN', 'MGGA_C_SCAN'], - 'XC_SCANL': ['MGGA_X_SCANL', 'MGGA_C_SCANL'], - 'XC_RSCAN': ['MGGA_X_RSCAN', 'MGGA_C_RSCAN'], - 'XC_R2SCAN': ['MGGA_X_R2SCAN', 'MGGA_C_R2SCAN'], - 'XC_TM': ['MGGA_X_TM', 'MGGA_C_TM'], - 'EC_PW91': ['GGA_X_PW91'], - 'VC_PW91': ['GGA_X_PW91'], - 'EX_B88': ['GGA_X_B88'], - 'VX_B88': ['GGA_X_B88'], - 'EC_LYP': ['GGA_C_LYP'], - 'VC_LYP': ['GGA_C_LYP'], - 'XC_HTBS': ['GGA_X_HTBS'], - 'EX_LDA': ['HF_X'], - 'VX_LDA': ['HF_X']} + "5": ["LDA_X", "LDA_C_PW"], + "6": ["HF_X"], + "11": ["GGA_X_WC", "GGA_C_PBE"], + "13": ["GGA_X_PBE", "GGA_C_PBE"], + "17": ["GGA_X_PW91"], + "18": ["HYB_GGA_XC_B3PW91"], + "19": ["GGA_X_PBE_SOL", "GGA_C_PBE_SOL"], + "24": ["GGA_X_B88", "GGA_C_LYP"], + "28": ["MGGA_X_TB09", "LDA_C_PW"], + "27": ["MGGA_X_TPSS", "MGGA_C_TPSS"], + "29": ["MGGA_C_REVTPSS, GGA_C_REGTPSS"], + "46": ["GGA_X_HTBS"], + "47": ["HYB_GGA_XC_B3LYP"], + "XC_LDA": ["LDA_X", "LDA_C_PW"], + "XC_PBE": ["GGA_X_PBE", "GGA_C_PBE"], + "XC_WC": ["GGA_X_WC", "GGA_C_PBE"], + "XC_PBESOL": ["GGA_X_PBE_SOL", "GGA_C_PBE_SOL"], + "XC_B3PW91": ["HYB_GGA_XC_B3PW91"], + "XC_B3LYP": ["HYB_GGA_XC_B3LYP"], + "XC_MBJ": ["MGGA_X_TB09", "LDA_C_PW"], + "XC_TPSS": ["MGGA_X_TPSS", "MGGA_C_TPSS"], + "XC_REVTPSS": ["MGGA_C_REVTPSS, GGA_C_REGTPSS"], + "XC_MGGA_MS": ["MGGA_X_MS", "MGGA_C_MS"], + "XC_MVS": ["MGGA_X_MVS", "MGGA_C_MVS"], + "XC_MBEEF": ["MGGA_X_MBEEF", "GGA_C_PBE_SOL"], + "XC_SCAN": ["MGGA_X_SCAN", "MGGA_C_SCAN"], + "XC_SCANL": ["MGGA_X_SCANL", "MGGA_C_SCANL"], + "XC_RSCAN": ["MGGA_X_RSCAN", "MGGA_C_RSCAN"], + "XC_R2SCAN": ["MGGA_X_R2SCAN", "MGGA_C_R2SCAN"], + "XC_TM": ["MGGA_X_TM", "MGGA_C_TM"], + "EC_PW91": ["GGA_X_PW91"], + "VC_PW91": ["GGA_X_PW91"], + "EX_B88": ["GGA_X_B88"], + "VX_B88": ["GGA_X_B88"], + "EC_LYP": ["GGA_C_LYP"], + "VC_LYP": ["GGA_C_LYP"], + "XC_HTBS": ["GGA_X_HTBS"], + "EX_LDA": ["HF_X"], + "VX_LDA": ["HF_X"], + } self.out_parser = OutParser() self.in0_parser = In0Parser() @@ -458,24 +654,33 @@ def init_parser(self): self.out_parser.logger = self.logger def get_wien2k_file(self, ext, multiple=False): - paths = [p for p in os.listdir(self.maindir) if re.match(rf'.*{ext}$', p)] + paths = [p for p in os.listdir(self.maindir) if re.match(rf".*{ext}$", p)] if not paths: return [] if multiple else None elif len(paths) == 1: path = os.path.join(self.maindir, paths[0]) return [path] if multiple else path else: - prefix = os.path.basename(self.filepath).rsplit('.', 1)[0] - paths = [os.path.join(self.maindir, p) for p in paths if p.startswith(prefix)] + prefix = os.path.basename(self.filepath).rsplit(".", 1)[0] + paths = [ + os.path.join(self.maindir, p) for p in paths if p.startswith(prefix) + ] if not paths: return [] if multiple else None return paths if multiple else paths[0] def get_nspin(self): - return 2 if self.out_parser.get('iteration', [{}])[0].get('VOL', {}).get('spinpolarization') == 'SPINPOLARIZED' else 1 + return ( + 2 + if self.out_parser.get("iteration", [{}])[0] + .get("VOL", {}) + .get("spinpolarization") + == "SPINPOLARIZED" + else 1 + ) def get_kpoints(self): - k_list_file = self.get_wien2k_file('klist') + k_list_file = self.get_wien2k_file("klist") if k_list_file is None: return None @@ -484,7 +689,7 @@ def get_kpoints(self): with open(k_list_file) as f: while True: line = f.readline() - if not line or 'END' in line: + if not line or "END" in line: break try: line = np.array(line.split()[:6], dtype=float) @@ -499,26 +704,28 @@ def get_kpoints(self): def get_eigenvalues(self): nspin = self.get_nspin() if nspin == 1: - files = self.get_wien2k_file(r'energy\_\d+', multiple=True) + files = self.get_wien2k_file(r"energy\_\d+", multiple=True) # sort the files so that the k-points are read in order - files = sorted(files, key=lambda x: int(x.split('_')[-1])) + files = sorted(files, key=lambda x: int(x.split("_")[-1])) if not files: - files = [self.get_wien2k_file('energy')] + files = [self.get_wien2k_file("energy")] else: files = [] - for spin in ['up', 'dn']: - files_spin = self.get_wien2k_file(rf'energy{spin}\_\d+', multiple=True) + for spin in ["up", "dn"]: + files_spin = self.get_wien2k_file(rf"energy{spin}\_\d+", multiple=True) # sort the files so that the k-points are read in order - files_spin = sorted(files_spin, key=lambda x: int(x.split('_')[-1])) + files_spin = sorted(files_spin, key=lambda x: int(x.split("_")[-1])) if not files_spin: - files_spin = [self.get_wien2k_file('energy%s' % spin)] + files_spin = [self.get_wien2k_file("energy%s" % spin)] files.extend(files_spin) if None in files: return - re_k = r'\-?\d\.\d+E[\-\+]\d\d' - re_kpoint = re.compile(rf'\s*({re_k})\s*({re_k})\s*({re_k})\w*\s*(\d+)\s*\d+\s*\d+\s*([\d\.]+)\s*') - re_eigenvalue = re.compile(r'\s*\d+ +(\-?\d+\.\d+[E\-\+\d]+) *\n*') + re_k = r"\-?\d\.\d+E[\-\+]\d\d" + re_kpoint = re.compile( + rf"\s*({re_k})\s*({re_k})\s*({re_k})\w*\s*(\d+)\s*\d+\s*\d+\s*([\d\.]+)\s*" + ) + re_eigenvalue = re.compile(r"\s*\d+ +(\-?\d+\.\d+[E\-\+\d]+) *\n*") kpoints, eigenvalues, multiplicity, index = [], [], [], [] for file_i in files: with open(file_i) as f: @@ -529,7 +736,7 @@ def get_eigenvalues(self): kpoint = re_kpoint.match(line) if kpoint: eigenvalues.append([]) - if 'energydn' not in file_i: + if "energydn" not in file_i: kpoints.append(kpoint.groups()[:3]) index.append(kpoint.group(4)) multiplicity.append(kpoint.group(5)) @@ -545,30 +752,33 @@ def get_eigenvalues(self): min_eigval_index = min(num_eigvals) max_eigval_index = max(num_eigvals) if min_eigval_index < max_eigval_index: - self.logger.warning('Different number of eigenvalues at different k-points. Truncating the extra values.') + self.logger.warning( + "Different number of eigenvalues at different k-points. Truncating the extra values." + ) for i, e in enumerate(eigenvalues): eigenvalues[i] = e[:min_eigval_index] eigenvalues = np.array(eigenvalues, dtype=np.dtype(np.float64)) kpoints = np.array(kpoints, dtype=np.dtype(np.float64)) multiplicity = np.array(multiplicity, dtype=np.dtype(np.float64)) - eigenvalues = np.reshape(eigenvalues, ( - nspin, len(kpoints), min_eigval_index)) + eigenvalues = np.reshape( + eigenvalues, (nspin, len(kpoints), min_eigval_index) + ) return eigenvalues, kpoints, multiplicity except Exception: - self.logger.error('Error reading eigenvalues.') + self.logger.error("Error reading eigenvalues.") return def get_dos(self): # dos (projections and total) are printed in dos1, dos2.... nspin = self.get_nspin() if nspin == 1: - files = self.get_wien2k_file(r'dos\d+', multiple=True) + files = self.get_wien2k_file(r"dos\d+", multiple=True) files.sort() else: files = [] - for spin in ['up', 'dn']: - files_spin = self.get_wien2k_file(r'dos\d+%s' % spin, multiple=True) + for spin in ["up", "dn"]: + files_spin = self.get_wien2k_file(r"dos\d+%s" % spin, multiple=True) files_spin.sort() files.extend(files_spin) @@ -579,11 +789,11 @@ def get_dos(self): labels = [] for file_i in files: self.dos_parser.mainfile = file_i - data = self.dos_parser.get('data') + data = self.dos_parser.get("data") if data is None: continue - if not file_i.endswith('dn'): - labels.extend(self.dos_parser.get('labels', '').split()) + if not file_i.endswith("dn"): + labels.extend(self.dos_parser.get("labels", "").split()) data = np.transpose(data) energy = data[0] dos.append(data[1:]) @@ -597,9 +807,9 @@ def get_dos(self): for n in range(len(dos)): # wien2k may not uniformly print out projections, we get only total projections # on the species (independent atoms) denoted by the header N:total - if labels[n].endswith(':total'): + if labels[n].endswith(":total"): partial_dos.append(dos[n]) - elif labels[n] == 'total-DOS' or labels[n] == 'TOTAL': + elif labels[n] == "total-DOS" or labels[n] == "TOTAL": # TODO determine if total dos is always the last column total_dos = dos[n] if len(partial_dos) > 0: @@ -607,17 +817,17 @@ def get_dos(self): return energy, total_dos, partial_dos except Exception: - self.logger.error('Error reading dos.') + self.logger.error("Error reading dos.") return def parse_scc(self): - if self.out_parser.get('iteration') is None: + if self.out_parser.get("iteration") is None: return sec_scc = Calculation() self.archive.run[0].calculation.append(sec_scc) - for iteration in self.out_parser.get('iteration'): + for iteration in self.out_parser.get("iteration"): sec_scf = ScfIteration() sec_scc.scf_iteration.append(sec_scf) sec_scf_energy = Energy() @@ -625,48 +835,50 @@ def parse_scc(self): for key in iteration.keys(): if iteration.get(key) is None: continue - elif key == 'FORi': + elif key == "FORi": forces = np.transpose(iteration.get(key)) sec_scf.x_wien2k_for = np.transpose(forces[1:4]) sec_scf.x_wien2k_for_abs = forces[0] - elif key == 'FGLi': + elif key == "FGLi": sec_scf.x_wien2k_for_gl = iteration.get(key) - elif key == 'MMIi': + elif key == "MMIi": sec_scf.x_wien2k_mmi = [mm.mmi for mm in iteration.get(key)] - elif key == 'NECi': + elif key == "NECi": charge = np.transpose(iteration.get(key)) sec_scf.x_wien2k_nuclear_charge = charge[0] sec_scf.x_wien2k_electronic_charge = charge[1] - elif key == 'CTOi': + elif key == "CTOi": charge = [c.tot_charge_in_sphere for c in iteration.get(key)] sec_scf.x_wien2k_tot_charge_in_sphere = charge - elif key == 'DTOi': + elif key == "DTOi": charge = [c.tot_diff_charge for c in iteration.get(key)] sec_scf.x_wien2k_tot_diff_charge = charge - elif key == 'NTOi': + elif key == "NTOi": charge = [c.tot_charge_in_sphere_nm for c in iteration.get(key)] sec_scf.x_wien2k_tot_charge_in_sphere_nm = charge - elif key == 'RTOi': + elif key == "RTOi": density = np.transpose(iteration.get(key)) sec_scf.x_wien2k_density_at_nucleus_valence = density[0] sec_scf.x_wien2k_density_at_nucleus_semicore = density[1] sec_scf.x_wien2k_density_at_nucleus_core = density[2] sec_scf.x_wien2k_density_at_nucleus_tot = density[3] - elif key == 'CHAi': + elif key == "CHAi": charge = [c.tot_val_charge_cell for c in iteration.get(key)] sec_scf.x_wien2k_tot_val_charge_sphere = charge - elif key == 'POSi': + elif key == "POSi": mult = [p.atom_mult for p in iteration.get(key)] sec_scf.x_wien2k_atom_mult = mult else: for sub_key, val in iteration.get(key, {}).items(): - if sub_key.startswith('energy_reference_fermi'): + if sub_key.startswith("energy_reference_fermi"): sec_scf_energy.fermi = val - elif sub_key.startswith('energy_'): + elif sub_key.startswith("energy_"): sec_scf_energy.m_add_sub_section( - getattr(Energy, sub_key.replace('energy_', '').lower()), EnergyEntry(value=val)) + getattr(Energy, sub_key.replace("energy_", "").lower()), + EnergyEntry(value=val), + ) else: - setattr(sec_scf, 'x_wien2k_%s' % sub_key, val) + setattr(sec_scf, "x_wien2k_%s" % sub_key, val) # write final iteration values to scc if sec_scf.energy.total is not None: @@ -678,7 +890,9 @@ def parse_scc(self): forces = [] for n, force in enumerate(sec_scf.x_wien2k_for_gl): forces.extend([force] * sec_scf.x_wien2k_atom_mult[n]) - sec_scc.forces = Forces(total=ForcesEntry(value=forces * (ureg.mRy / ureg.bohr))) + sec_scc.forces = Forces( + total=ForcesEntry(value=forces * (ureg.mRy / ureg.bohr)) + ) # eigenvalues eigenvalues = self.get_eigenvalues() @@ -706,9 +920,9 @@ def parse_scc(self): # projected dos if len(dos[2]) > 0: - labels = [a.atom_name for a in self.struct_parser.get('atom', [])] + labels = [a.atom_name for a in self.struct_parser.get("atom", [])] if len(labels) == 0: - self.logger.warning('Cannot resolve atom labels.') + self.logger.warning("Cannot resolve atom labels.") else: for species in range(len(dos[2])): for spin in range(len(dos[2][species])): @@ -717,11 +931,15 @@ def parse_scc(self): else: sec_dos = Dos() sec_scc.dos_electronic.append(sec_dos) - sec_dos.spin_channel = spin if len(dos[2][species]) == 2 else None + sec_dos.spin_channel = ( + spin if len(dos[2][species]) == 2 else None + ) sec_dos_species = DosValues() sec_dos.species_projected.append(sec_dos_species) sec_dos_species.atom_label = labels[species] - sec_dos_species.value = dos[2][species][spin] * (1 / ureg.rydberg) + sec_dos_species.value = dos[2][species][spin] * ( + 1 / ureg.rydberg + ) def parse_system(self): sec_system = System() @@ -729,15 +947,15 @@ def parse_system(self): sec_atoms = Atoms() sec_system.atoms = sec_atoms - self.struct_parser.mainfile = self.get_wien2k_file('struct') - for key, val in self.struct_parser.get('lattice', {}).items(): - setattr(sec_system, 'x_wien2k_%s' % key, val) + self.struct_parser.mainfile = self.get_wien2k_file("struct") + for key, val in self.struct_parser.get("lattice", {}).items(): + setattr(sec_system, "x_wien2k_%s" % key, val) - for atom in self.struct_parser.get('atom', []): + for atom in self.struct_parser.get("atom", []): sec_atom = x_wien2k_section_equiv_atoms() sec_system.x_wien2k_section_equiv_atoms.append(sec_atom) for key, val in atom.items(): - setattr(sec_atom, 'x_wien2k_%s' % key, val) + setattr(sec_atom, "x_wien2k_%s" % key, val) atoms = self.struct_parser.get_atoms() if atoms is None: @@ -755,71 +973,73 @@ def parse_method(self): sec_method.dft = sec_dft sec_electronic = Electronic() sec_method.electronic = sec_electronic - sec_electronic.method = 'DFT' + sec_electronic.method = "DFT" sec_electronic.n_spin_channels = self.get_nspin() # read functional settings from in0 file - self.in0_parser.mainfile = self.get_wien2k_file('in0') + self.in0_parser.mainfile = self.get_wien2k_file("in0") # better to read it from scf? - xc_functional = self.in0_parser.get('xc_functional', None) - xc_functional = xc_functional if isinstance(xc_functional, list) else [xc_functional] + xc_functional = self.in0_parser.get("xc_functional", None) + xc_functional = ( + xc_functional if isinstance(xc_functional, list) else [xc_functional] + ) sec_xc_functional = XCFunctional() sec_dft.xc_functional = sec_xc_functional for name in xc_functional: functionals = self._xc_functional_map.get(name) if functionals is None: - self.logger.warning('Cannot resolve XC functional.') + self.logger.warning("Cannot resolve XC functional.") continue for functional in functionals: - if '_X_' in functional or functional.endswith('_X'): + if "_X_" in functional or functional.endswith("_X"): sec_xc_functional.exchange.append(Functional(name=functional)) - elif '_C_' in functional or functional.endswith('_C'): + elif "_C_" in functional or functional.endswith("_C"): sec_xc_functional.correlation.append(Functional(name=functional)) - elif 'HYB' in functional: + elif "HYB" in functional: sec_xc_functional.hybrid.append(Functional(name=functional)) else: sec_xc_functional.contributions.append(Functional(name=functional)) - fft = self.in0_parser.get('fft') + fft = self.in0_parser.get("fft") if fft is not None: sec_method.x_wien2k_ifft = fft[:3] sec_method.x_wien2k_ifft_factor = fft[3] # read cut off settings from in1 - in1_file = self.get_wien2k_file('in1') + in1_file = self.get_wien2k_file("in1") if in1_file is None: - in1_file = self.get_wien2k_file('in1c') + in1_file = self.get_wien2k_file("in1c") self.in1_parser.mainfile = in1_file # read integration data from in2 file - in2_file = self.get_wien2k_file('1n2') + in2_file = self.get_wien2k_file("1n2") if in2_file is None: - in2_file = self.get_wien2k_file('in2c') + in2_file = self.get_wien2k_file("in2c") self.in2_parser.mainfile = in2_file - for key in ['gmax', 'switch']: + for key in ["gmax", "switch"]: val = self.in2_parser.get(key) if val is not None: - setattr(sec_method, 'x_wien2k_in2_%s' % key, val) + setattr(sec_method, "x_wien2k_in2_%s" % key, val) - emin_keys = ['emin', 'ne', 'espermin', 'esper0'] - for n, val in enumerate(self.in2_parser.get('emin', [])): + emin_keys = ["emin", "ne", "espermin", "esper0"] + for n, val in enumerate(self.in2_parser.get("emin", [])): if n < 4: - setattr(sec_method, 'x_wien2k_in2_%s' % emin_keys[n], val) + setattr(sec_method, "x_wien2k_in2_%s" % emin_keys[n], val) - smearing, width = self.in2_parser.get('smearing', [None, None]) + smearing, width = self.in2_parser.get("smearing", [None, None]) if smearing is not None: sec_smearing = Smearing() sec_electronic.smearing = sec_smearing - if smearing.startswith('GAUSS'): - smearing = 'gaussian' - elif smearing.startswith('TEMP'): - smearing = 'fermi' - elif smearing.startswith('TETRA'): - smearing = 'tetrahedra' + if smearing.startswith("GAUSS"): + smearing = "gaussian" + elif smearing.startswith("TEMP"): + smearing = "fermi" + elif smearing.startswith("TETRA"): + smearing = "tetrahedra" sec_smearing.kind = smearing - sec_smearing.width = (float(width) * ureg.rydberg).to('joule').magnitude + sec_smearing.width = (float(width) * ureg.rydberg).to("joule").magnitude # read kpoints from klist kpoints = self.get_kpoints() @@ -833,33 +1053,36 @@ def parse_method(self): if self.in1_parser.mainfile: self.in1_parser.parse() if self.in1_parser._results: - type_mapping = ('LAPW', 'APW', 'HDLO', 'LO') + type_mapping = ("LAPW", "APW", "HDLO", "LO") source = self.in1_parser._results - em = BasisSetContainer(scope=['wavefunction']) + em = BasisSetContainer(scope=["wavefunction"]) em.basis_set.append( BasisSet( - scope=['intersitial', 'valence'], - type='plane waves', - cutoff_fractional=source.get('rkmax'), + scope=["intersitial", "valence"], + type="plane waves", + cutoff_fractional=source.get("rkmax"), ) ) - for mt in source.get('species', []): + for mt in source.get("species", []): bs = BasisSet( - scope=['muffin-tin', 'full-electron'], - spherical_harmonics_cutoff=source.get('lmax')) - for l_n in range(source.get('lmax', -1) + 1): + scope=["muffin-tin", "full-electron"], + spherical_harmonics_cutoff=source.get("lmax"), + ) + for l_n in range(source.get("lmax", -1) + 1): orbital = OrbitalAPW() orbital.l_quantum_number = l_n orbital.core_level = False - e_param = mt.get('e_param', source.get('e_ref', .5) - .2) # TODO: check for +.2 case + e_param = mt.get( + "e_param", source.get("e_ref", 0.5) - 0.2 + ) # TODO: check for +.2 case update = False - apw_type = mt.get('type') + apw_type = mt.get("type") last_orbital_type = None - for orb in mt['orbital']: - if l_n == orb['l']: - e_param = orb.get('e_param', e_param) - update = orb.get('e_diff', 0) is not None - apw_type = orb.get('type', apw_type) + for orb in mt["orbital"]: + if l_n == orb["l"]: + e_param = orb.get("e_param", e_param) + update = orb.get("e_diff", 0) is not None + apw_type = orb.get("type", apw_type) if last_orbital_type == apw_type: orbital.energy_parameter = e_param orbital.update = update @@ -884,11 +1107,15 @@ def parse(self, filepath, archive, logger): sec_run = Run() self.archive.run.append(sec_run) - sec_run.program = Program(name='WIEN2k', version=self.out_parser.get('version', '')) - start_date = self.out_parser.get('start_date') + sec_run.program = Program( + name="WIEN2k", version=self.out_parser.get("version", "") + ) + start_date = self.out_parser.get("start_date") if start_date is not None: # TODO resolve proper timezone - dt = datetime.strptime(start_date, '%b %d %H:%M:%S %Y') - datetime.utcfromtimestamp(0) + dt = datetime.strptime( + start_date, "%b %d %H:%M:%S %Y" + ) - datetime.utcfromtimestamp(0) sec_run.time_run = TimeRun(date_start=dt.total_seconds()) # TODO implement geometry optimization diff --git a/electronicparsers/yambo/metainfo/yambo.py b/electronicparsers/yambo/metainfo/yambo.py index 09fb6d58..a6aa4884 100644 --- a/electronicparsers/yambo/metainfo/yambo.py +++ b/electronicparsers/yambo/metainfo/yambo.py @@ -16,9 +16,17 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import numpy as np # pylint: disable=unused-import +import numpy as np # pylint: disable=unused-import from nomad.metainfo import ( # pylint: disable=unused-import - MSection, MCategory, Category, Package, Quantity, Section, SubSection, Reference, JSON + MSection, + MCategory, + Category, + Package, + Quantity, + Section, + SubSection, + Reference, + JSON, ) import runschema.run # pylint: disable=unused-import @@ -36,20 +44,23 @@ class x_yambo_io(MSection): x_yambo_parameters = Quantity( type=JSON, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_file = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_sn = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class x_yambo_parameters(MSection): @@ -58,93 +69,108 @@ class x_yambo_parameters(MSection): x_yambo_bands = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_k_points = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_g_vectors = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_components = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_symmetries = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_spinor_components = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_spin_polarization = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_yambo_electrons = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_wf_g_vectors = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_max_atoms_species = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_n_atom_species = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_exact_exchange_fraction_in_xc = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_exact_exchange_screening_in_xc = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_magnetic_symmetries = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class Program(runschema.run.Program): @@ -153,14 +179,16 @@ class Program(runschema.run.Program): x_yambo_build = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_hash = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) class Run(runschema.run.Run): @@ -169,92 +197,107 @@ class Run(runschema.run.Run): x_yambo_job_string = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_cpu = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_threads = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_threads_tot = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_io_nodes = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_fragmented_io = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_fragmented_wfs = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_core_databases = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_additional_io = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_communications = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_input_file = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_report_file = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_verbose_log_report = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_precision = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_log_files = Quantity( type=str, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_input = SubSection(sub_section=x_yambo_io.m_def, repeats=False) @@ -264,17 +307,19 @@ class x_yambo_local_xc_nonlocal_fock_bandenergies(runschema.calculation.BandEner x_yambo_sx = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_kpoints', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_kpoints", "n_bands"], + unit="joule", + description=""" + """, + ) x_yambo_vxc = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_kpoints', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_kpoints", "n_bands"], + unit="joule", + description=""" + """, + ) class x_yambo_bare_xc_bandenergies(runschema.calculation.BandEnergies): @@ -282,17 +327,19 @@ class x_yambo_bare_xc_bandenergies(runschema.calculation.BandEnergies): x_yambo_dft = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_kpoints', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_kpoints", "n_bands"], + unit="joule", + description=""" + """, + ) x_yambo_hf = Quantity( type=np.dtype(np.float64), - shape=['n_spin_channels', 'n_kpoints', 'n_bands'], - unit='joule', - description=''' - ''') + shape=["n_spin_channels", "n_kpoints", "n_bands"], + unit="joule", + description=""" + """, + ) class Calculation(runschema.calculation.Calculation): @@ -301,85 +348,101 @@ class Calculation(runschema.calculation.Calculation): x_yambo_electronic_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' - ''') + unit="kelvin", + description=""" + """, + ) x_yambo_bosonic_temperature = Quantity( type=np.dtype(np.float64), shape=[], - unit='kelvin', - description=''' - ''') + unit="kelvin", + description=""" + """, + ) x_yambo_finite_temperature_mode = Quantity( type=bool, shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_electronic_density = Quantity( type=np.dtype(np.float64), shape=[], # unit='1/cm**3', - description=''' - ''') + description=""" + """, + ) x_yambo_filled_bands = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' - ''') + description=""" + """, + ) x_yambo_empty_bands = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' - ''') + description=""" + """, + ) x_yambo_indirect_gaps = Quantity( type=np.dtype(np.float64), shape=[2], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_yambo_direct_gaps = Quantity( type=np.dtype(np.float64), shape=[2], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_yambo_indirect_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_yambo_direct_gap = Quantity( type=np.dtype(np.float64), shape=[], - unit='joule', - description=''' - ''') + unit="joule", + description=""" + """, + ) x_yambo_direct_gap_k_point = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_indirect_gap_k_points = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' - ''') + description=""" + """, + ) - x_yambo_local_xc_nonlocal_fock_bandenergies = SubSection(sub_section=x_yambo_local_xc_nonlocal_fock_bandenergies.m_def, repeats=True) + x_yambo_local_xc_nonlocal_fock_bandenergies = SubSection( + sub_section=x_yambo_local_xc_nonlocal_fock_bandenergies.m_def, repeats=True + ) - x_yambo_bare_xc_bandenergies = SubSection(sub_section=x_yambo_bare_xc_bandenergies.m_def, repeats=True) + x_yambo_bare_xc_bandenergies = SubSection( + sub_section=x_yambo_bare_xc_bandenergies.m_def, repeats=True + ) class x_yambo_dynamic_dielectric_matrix_fragment(MSection): @@ -388,26 +451,30 @@ class x_yambo_dynamic_dielectric_matrix_fragment(MSection): x_yambo_FREQ_PARS_sec_iq = Quantity( type=np.dtype(np.float64), shape=[1], - description=''' - ''') + description=""" + """, + ) x_yambo_FREQ_sec_iq = Quantity( type=np.dtype(np.float64), shape=[2, 2], - description=''' - ''') + description=""" + """, + ) x_yambo_matrix_size = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_X_Q = Quantity( type=np.dtype(np.float64), - shape=[2, 'x_yambo_matrix_size', 'x_yambo_matrix_size', 2], - description=''' - ''') + shape=[2, "x_yambo_matrix_size", "x_yambo_matrix_size", 2], + description=""" + """, + ) class x_yambo_module(MSection): @@ -416,8 +483,9 @@ class x_yambo_module(MSection): x_yambo_mesh_size = Quantity( type=np.dtype(np.int32), shape=[3], - description=''' - ''') + description=""" + """, + ) x_yambo_input = SubSection(sub_section=x_yambo_io.m_def, repeats=True) @@ -427,7 +495,9 @@ class x_yambo_module(MSection): class x_yambo_dynamic_dielectric_matrix(x_yambo_module): m_def = Section(validate=False) - x_yambo_fragment = SubSection(sub_section=x_yambo_dynamic_dielectric_matrix_fragment.m_def, repeats=True) + x_yambo_fragment = SubSection( + sub_section=x_yambo_dynamic_dielectric_matrix_fragment.m_def, repeats=True + ) class x_yambo_local_xc_nonlocal_fock(x_yambo_module): @@ -436,14 +506,16 @@ class x_yambo_local_xc_nonlocal_fock(x_yambo_module): x_yambo_plane_waves_vxc = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) x_yambo_plane_waves_exs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) class x_yambo_bare_xc(x_yambo_module): @@ -452,8 +524,9 @@ class x_yambo_bare_xc(x_yambo_module): x_yambo_plane_waves_exs = Quantity( type=np.dtype(np.int32), shape=[], - description=''' - ''') + description=""" + """, + ) class x_yambo_dipoles(x_yambo_module): @@ -466,14 +539,16 @@ class x_yambo_dyson(x_yambo_module): x_yambo_bands_range = Quantity( type=np.dtype(np.int32), shape=[2], - description=''' - ''') + description=""" + """, + ) x_yambo_g_damping = Quantity( type=np.dtype(np.float64), shape=[], - description=''' - ''') + description=""" + """, + ) class x_yambo_transferred_momenta(x_yambo_module): @@ -483,11 +558,17 @@ class x_yambo_transferred_momenta(x_yambo_module): class Method(runschema.method.Method): m_def = Section(validate=False, extends_base_section=True) - x_yambo_transferred_momenta = SubSection(sub_section=x_yambo_transferred_momenta.m_def, repeats=True) + x_yambo_transferred_momenta = SubSection( + sub_section=x_yambo_transferred_momenta.m_def, repeats=True + ) - x_yambo_dynamic_dielectric_matrix = SubSection(sub_section=x_yambo_dynamic_dielectric_matrix.m_def, repeats=True) + x_yambo_dynamic_dielectric_matrix = SubSection( + sub_section=x_yambo_dynamic_dielectric_matrix.m_def, repeats=True + ) - x_yambo_local_xc_nonlocal_fock = SubSection(sub_section=x_yambo_local_xc_nonlocal_fock.m_def, repeats=True) + x_yambo_local_xc_nonlocal_fock = SubSection( + sub_section=x_yambo_local_xc_nonlocal_fock.m_def, repeats=True + ) x_yambo_bare_xc = SubSection(sub_section=x_yambo_bare_xc.m_def, repeats=True) diff --git a/electronicparsers/yambo/parser.py b/electronicparsers/yambo/parser.py index b23b8a66..4ec87933 100644 --- a/electronicparsers/yambo/parser.py +++ b/electronicparsers/yambo/parser.py @@ -28,13 +28,19 @@ from runschema.run import Run, Program, TimeRun from runschema.system import System, Atoms from runschema.method import Method -from runschema.calculation import ( - Calculation, Energy, EnergyEntry, BandEnergies) +from runschema.calculation import Calculation, Energy, EnergyEntry, BandEnergies from .metainfo.yambo import ( - x_yambo_dipoles, x_yambo_dynamic_dielectric_matrix_fragment, x_yambo_io, - x_yambo_dynamic_dielectric_matrix, x_yambo_local_xc_nonlocal_fock, - x_yambo_dyson, x_yambo_local_xc_nonlocal_fock_bandenergies, x_yambo_bare_xc, - x_yambo_bare_xc_bandenergies, x_yambo_module, x_yambo_transferred_momenta + x_yambo_dipoles, + x_yambo_dynamic_dielectric_matrix_fragment, + x_yambo_io, + x_yambo_dynamic_dielectric_matrix, + x_yambo_local_xc_nonlocal_fock, + x_yambo_dyson, + x_yambo_local_xc_nonlocal_fock_bandenergies, + x_yambo_bare_xc, + x_yambo_bare_xc_bandenergies, + x_yambo_module, + x_yambo_transferred_momenta, ) @@ -43,360 +49,432 @@ def __init__(self): super().__init__() def init_quantities(self): - re_f = r'[-+]*\d*\.\d+[Ee]*[-+]*\d*' + re_f = r"[-+]*\d*\.\d+[Ee]*[-+]*\d*" io_quantities = [ Quantity( - 'key_value', - r'([A-Z\d].+?)(?:\(.+\)|\[.+\]| |)(:.+?)(?:\[|\n)', - str_operation=lambda x: [v.strip() for v in x.split(':')], - repeats=True + "key_value", + r"([A-Z\d].+?)(?:\(.+\)|\[.+\]| |)(:.+?)(?:\[|\n)", + str_operation=lambda x: [v.strip() for v in x.split(":")], + repeats=True, ), - Quantity('file', r'\[(?:RD|WR)(.+?)\]', dtype=str), - Quantity('sn', r'- S/N *(\d+)', dtype=str) + Quantity("file", r"\[(?:RD|WR)(.+?)\]", dtype=str), + Quantity("sn", r"- S/N *(\d+)", dtype=str), ] energies_quantities = [ Quantity( - 'fermi', - rf'Fermi Level.+?: +({re_f})', - dtype=np.float64, unit=ureg.eV + "fermi", rf"Fermi Level.+?: +({re_f})", dtype=np.float64, unit=ureg.eV ), Quantity( - 'conduction', - rf'Conduction Band Min +: +({re_f})', - dtpye=np.float64, unit=ureg.eV + "conduction", + rf"Conduction Band Min +: +({re_f})", + dtpye=np.float64, + unit=ureg.eV, ), Quantity( - 'valence', - rf'Valence Band Max +: +({re_f})', - dtpye=np.float64, unit=ureg.eV + "valence", + rf"Valence Band Max +: +({re_f})", + dtpye=np.float64, + unit=ureg.eV, ), Quantity( - 'valence_conduction', - rf'VBM / CBm +\[ev\]: +({re_f}) +({re_f})', - dtpye=np.dtype(np.float64), unit=ureg.eV + "valence_conduction", + rf"VBM / CBm +\[ev\]: +({re_f}) +({re_f})", + dtpye=np.dtype(np.float64), + unit=ureg.eV, ), Quantity( - 'x_yambo_filled_bands', - r'Filled Bands +: +(\d+)', dtype=np.int32, str_operation=lambda x: [1, int(x)] + "x_yambo_filled_bands", + r"Filled Bands +: +(\d+)", + dtype=np.int32, + str_operation=lambda x: [1, int(x)], ), Quantity( - 'x_yambo_empty_bands', - r'Empty Bands +: +([\d ]+)', dtype=np.dtype(np.int32) + "x_yambo_empty_bands", + r"Empty Bands +: +([\d ]+)", + dtype=np.dtype(np.int32), ), Quantity( - 'x_yambo_electronic_temperature', - rf'Electronic Temp.+?: +{re_f} +({re_f})', - dtype=np.float64, unit=ureg.kelvin + "x_yambo_electronic_temperature", + rf"Electronic Temp.+?: +{re_f} +({re_f})", + dtype=np.float64, + unit=ureg.kelvin, ), Quantity( - 'x_yambo_bosonic_temperature', - rf'Bosonic +Temp.+?: +{re_f} +({re_f})', - dtype=np.float64, unit=ureg.kelvin + "x_yambo_bosonic_temperature", + rf"Bosonic +Temp.+?: +{re_f} +({re_f})", + dtype=np.float64, + unit=ureg.kelvin, ), Quantity( - 'x_yambo_finite_temperature_mode', - r'Finite Temperature mode: +(\S+)', str_operation=lambda x: x == 'yes' + "x_yambo_finite_temperature_mode", + r"Finite Temperature mode: +(\S+)", + str_operation=lambda x: x == "yes", ), Quantity( - 'x_yambo_electronic_density', - rf'El\. density.+?: +(.+?)(?:\[|\n)', - str_operation=lambda x: x.strip().split()[-1], dtype=np.float64 + "x_yambo_electronic_density", + rf"El\. density.+?: +(.+?)(?:\[|\n)", + str_operation=lambda x: x.strip().split()[-1], + dtype=np.float64, ), Quantity( - 'states_summary', - r'States summary +: Full +Metallic +Empty\s+(.+)', - str_operation=lambda x: [v.split('-') for v in x.strip().split()] + "states_summary", + r"States summary +: Full +Metallic +Empty\s+(.+)", + str_operation=lambda x: [v.split("-") for v in x.strip().split()], ), Quantity( - 'x_yambo_indirect_gaps', - rf'Indirect Gaps.+?: +({re_f}) +({re_f})', - dtype=np.dtype(np.float64), unit=ureg.eV + "x_yambo_indirect_gaps", + rf"Indirect Gaps.+?: +({re_f}) +({re_f})", + dtype=np.dtype(np.float64), + unit=ureg.eV, ), Quantity( - 'x_yambo_direct_gaps', - rf'Direct Gaps.+?: +({re_f}) +({re_f})', - dtype=np.dtype(np.float64), unit=ureg.eV + "x_yambo_direct_gaps", + rf"Direct Gaps.+?: +({re_f}) +({re_f})", + dtype=np.dtype(np.float64), + unit=ureg.eV, ), Quantity( - 'x_yambo_indirect_gap', - rf'Indirect Gap.+?: +({re_f})', - dtype=np.float64, unit=ureg.eV + "x_yambo_indirect_gap", + rf"Indirect Gap.+?: +({re_f})", + dtype=np.float64, + unit=ureg.eV, ), Quantity( - 'x_yambo_direct_gap', - rf'Direct Gap.+?: +({re_f})', - dtype=np.float64, unit=ureg.eV + "x_yambo_direct_gap", + rf"Direct Gap.+?: +({re_f})", + dtype=np.float64, + unit=ureg.eV, ), Quantity( - 'x_yambo_direct_gap_kpoint', - r'Direct Gap localized at k-point.+?: +(\d+)', - dtype=np.int32 + "x_yambo_direct_gap_kpoint", + r"Direct Gap localized at k-point.+?: +(\d+)", + dtype=np.int32, ), Quantity( - 'x_yambo_indirect_gap_kpoints', - r'Indirect Gap between k-points.+?: +(\d+) +(\d+)', - dtype=np.int32 + "x_yambo_indirect_gap_kpoints", + r"Indirect Gap between k-points.+?: +(\d+) +(\d+)", + dtype=np.int32, ), ] qp_properties_quantity = Quantity( - 'qp_properties', - r'QP properties and I/O([\s\S]+? S/N \d+.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'qp_energy', - r'(QP \[eV\] @ K[\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'band', - rf'B= *(\d+) Eo= *({re_f}) E= *({re_f}) E-Eo= *({re_f}) ' - rf'Re\(Z\)= *({re_f}) Im\(Z\)= *({re_f}) nlXC= *({re_f}) lXC= *({re_f}) So= *({re_f})', - repeats=True, dtype=np.dtype(np.float64) + "qp_properties", + r"QP properties and I/O([\s\S]+? S/N \d+.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "qp_energy", + r"(QP \[eV\] @ K[\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "band", + rf"B= *(\d+) Eo= *({re_f}) E= *({re_f}) E-Eo= *({re_f}) " + rf"Re\(Z\)= *({re_f}) Im\(Z\)= *({re_f}) nlXC= *({re_f}) lXC= *({re_f}) So= *({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "kpoint", + r"K *\[\d+\].+?\: *(.+)", + dtype=np.dtype(np.float64), + ), + ] ), - Quantity( - 'kpoint', - r'K *\[\d+\].+?\: *(.+)', - dtype=np.dtype(np.float64) - ) - ]) - ), - Quantity( - 'output', - r'(\[WR.+?\.QP\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ) - ]) + ), + Quantity( + "output", + r"(\[WR.+?\.QP\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + ] + ), ) module_quantities = [ Quantity( - 'dipoles', - r'Dipoles *\n([\s\S]+?)\n *\[\d+\]', - sub_parser=TextParser(quantities=[ - Quantity( - 'input', - r'(\[RD.+?\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ), - Quantity( - 'output', - r'(\[WR.+?\.dipoles\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ) - ]) - + "dipoles", + r"Dipoles *\n([\s\S]+?)\n *\[\d+\]", + sub_parser=TextParser( + quantities=[ + Quantity( + "input", + r"(\[RD.+?\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + Quantity( + "output", + r"(\[WR.+?\.dipoles\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + ] + ), ), Quantity( - 'local_xc_nonlocal_fock', - r'Local Exchange-Correlation \+ Non-Local Fock([\s\S]+?(?:\n *\[\d+\]|\Z))', - sub_parser=TextParser(quantities=[ - Quantity( - 'output', - r'(\[WR.+?\.HF_and_locXC\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ), - Quantity( - 'x_yambo_plane_waves_vxc', - r'\[VXC\] Plane waves : *(\d+)', - dtype=np.int32 - ), - Quantity( - 'x_yambo_plane_waves_exs', - r'\[EXS\] Plane waves : *(\d+)', - dtype=np.int32 - ), - Quantity( - 'x_yambo_mesh_size', - r'Mesh size: *(\d+) *(\d+) *(\d+)', - dtype=np.dtype(np.int32) - ), - Quantity( - 'energy_xc', - rf'E_xc *: *({re_f}) \[Ha\]', - dtype=np.float64, unit='hartree' - ), - Quantity( - 'corrections', - r'Corrections @ K \[\d+\] *: *\[eV\]([\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'band', - rf'\<\d+\|nlXC\|\d+\> *= *({re_f}) *{re_f} \<\d+\|lXC\|\d+\> *= *({re_f}) *{re_f}', - repeats=True, dtype=np.dtype(np.float64) - ) - ]) - ), - Quantity( - 'hf_occupations', - r'Hartree-Fock occupations report([\s\S]+?)(?:\n *\[\d+|\Z)', - sub_parser=TextParser(quantities=energies_quantities) - ) - ]) + "local_xc_nonlocal_fock", + r"Local Exchange-Correlation \+ Non-Local Fock([\s\S]+?(?:\n *\[\d+\]|\Z))", + sub_parser=TextParser( + quantities=[ + Quantity( + "output", + r"(\[WR.+?\.HF_and_locXC\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + Quantity( + "x_yambo_plane_waves_vxc", + r"\[VXC\] Plane waves : *(\d+)", + dtype=np.int32, + ), + Quantity( + "x_yambo_plane_waves_exs", + r"\[EXS\] Plane waves : *(\d+)", + dtype=np.int32, + ), + Quantity( + "x_yambo_mesh_size", + r"Mesh size: *(\d+) *(\d+) *(\d+)", + dtype=np.dtype(np.int32), + ), + Quantity( + "energy_xc", + rf"E_xc *: *({re_f}) \[Ha\]", + dtype=np.float64, + unit="hartree", + ), + Quantity( + "corrections", + r"Corrections @ K \[\d+\] *: *\[eV\]([\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "band", + rf"\<\d+\|nlXC\|\d+\> *= *({re_f}) *{re_f} \<\d+\|lXC\|\d+\> *= *({re_f}) *{re_f}", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), + Quantity( + "hf_occupations", + r"Hartree-Fock occupations report([\s\S]+?)(?:\n *\[\d+|\Z)", + sub_parser=TextParser(quantities=energies_quantities), + ), + ] + ), ), # TODO add support for em1d Quantity( - 'dynamic_dielectric_matrix', - r'Dynamic.+?Dielectric Matrix([\s\S]+?(?:\n *\[\d+\]|\Z))', - sub_parser=TextParser(quantities=[ - Quantity( - 'output', - r'(\[WR.+?(?:pp|em1d|dip_iR_and_P)\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ), - Quantity( - 'x_yambo_mesh_size', - r'Mesh size: *(\d+) *(\d+) *(\d+)', - dtype=np.dtype(np.int32) - ), - ]) + "dynamic_dielectric_matrix", + r"Dynamic.+?Dielectric Matrix([\s\S]+?(?:\n *\[\d+\]|\Z))", + sub_parser=TextParser( + quantities=[ + Quantity( + "output", + r"(\[WR.+?(?:pp|em1d|dip_iR_and_P)\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + Quantity( + "x_yambo_mesh_size", + r"Mesh size: *(\d+) *(\d+) *(\d+)", + dtype=np.dtype(np.int32), + ), + ] + ), ), Quantity( - 'bare_xc', - r'Bare local and non-local Exchange-Correlation([\s\S]+?(?:\n *\[\d+\]|\Z))', - sub_parser=TextParser(quantities=[ - Quantity( - 'output', - r'(\[WR.+?\.HF_and_locXC\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ), - Quantity( - 'xc_hf_dft', - r'XC HF and DFT \[eV\]([\s\S]+?)\n *\n', - repeats=True, sub_parser=TextParser(quantities=[ - Quantity( - 'band', - rf'\<\d+\|HF\|\d+\> *= *({re_f}) *{re_f} *\<\d+\|DFT\|\d+\> *= *({re_f}) *{re_f}', - repeats=True, dtype=np.dtype(np.float64) - ) - ]) - ), - Quantity( - 'hf_occupations', - r'HF occupations report([\s\S]+?Direct Gaps.+)', - sub_parser=TextParser(quantities=energies_quantities) - ) - ]) + "bare_xc", + r"Bare local and non-local Exchange-Correlation([\s\S]+?(?:\n *\[\d+\]|\Z))", + sub_parser=TextParser( + quantities=[ + Quantity( + "output", + r"(\[WR.+?\.HF_and_locXC\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + Quantity( + "xc_hf_dft", + r"XC HF and DFT \[eV\]([\s\S]+?)\n *\n", + repeats=True, + sub_parser=TextParser( + quantities=[ + Quantity( + "band", + rf"\<\d+\|HF\|\d+\> *= *({re_f}) *{re_f} *\<\d+\|DFT\|\d+\> *= *({re_f}) *{re_f}", + repeats=True, + dtype=np.dtype(np.float64), + ) + ] + ), + ), + Quantity( + "hf_occupations", + r"HF occupations report([\s\S]+?Direct Gaps.+)", + sub_parser=TextParser(quantities=energies_quantities), + ), + ] + ), ), Quantity( - 'dyson', - r'Dyson equation: Newton solver([\s\S]+?(?:\n *\[\d+\]|\Z))', - sub_parser=TextParser(quantities=[ - qp_properties_quantity, - Quantity( - 'g0w0', - r'G0W0([\s\S]+?\n *\[\d+\.\d+\])', - sub_parser=TextParser(quantities=[ - Quantity( - 'x_yambo_bands_range', - r'Bands range *: *(\d+) *(\d+)', - dtype=np.dtype(np.int32) - ), - Quantity( - 'x_yambo_g_damping', - rf'G damping.+?: *({re_f})', - dtype=np.float64 - ), - Quantity( - 'x_yambo_mesh_size', - r'Mesh size: *(\d+) *(\d+) *(\d+)', - dtype=np.dtype(np.int32) + "dyson", + r"Dyson equation: Newton solver([\s\S]+?(?:\n *\[\d+\]|\Z))", + sub_parser=TextParser( + quantities=[ + qp_properties_quantity, + Quantity( + "g0w0", + r"G0W0([\s\S]+?\n *\[\d+\.\d+\])", + sub_parser=TextParser( + quantities=[ + Quantity( + "x_yambo_bands_range", + r"Bands range *: *(\d+) *(\d+)", + dtype=np.dtype(np.int32), + ), + Quantity( + "x_yambo_g_damping", + rf"G damping.+?: *({re_f})", + dtype=np.float64, + ), + Quantity( + "x_yambo_mesh_size", + r"Mesh size: *(\d+) *(\d+) *(\d+)", + dtype=np.dtype(np.int32), + ), + Quantity( + "input", + r"(\[RD.+?\.pp\][\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + ] ), - Quantity( - 'input', - r'(\[RD.+?\.pp\][\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ) - ]) - ), - ]) - ) + ), + ] + ), + ), ] self._quantities = [ Quantity( - 'version', - r'Version ([\d.]+ Revision \d+)', flatten=False, dtype=str + "version", r"Version ([\d.]+ Revision \d+)", flatten=False, dtype=str ), - Quantity('hash', r'Hash (\S+)', dtype=str), - Quantity('build', r'(\S+) Build', dtype=str), + Quantity("hash", r"Hash (\S+)", dtype=str), + Quantity("build", r"(\S+) Build", dtype=str), Quantity( - 'date_start', - r' (\d\d/\d\d/\d\d\d\d) at (\d\d:\d\d) YAMBO @ .+', - flatten=False, dtype=str + "date_start", + r" (\d\d/\d\d/\d\d\d\d) at (\d\d:\d\d) YAMBO @ .+", + flatten=False, + dtype=str, ), Quantity( - 'cpu_files_io', - r'((?:Cores |CPU structure)[\s\S]+?)\n *\[\d+\]', - sub_parser=TextParser(quantities=[ - Quantity( - 'parameters', - r'([A-Z][\w/ ]+).*?(?: is | in |: ) *(\S+)', - repeats=True, str_operation=lambda x:[v.strip() for v in x.rsplit(' ', 1)] - ), - Quantity( - 'input', - r'( \[RD.+[\s\S]+?- S/N \d+.+)', - repeats=False, sub_parser=TextParser(quantities=io_quantities) - ) - ]) + "cpu_files_io", + r"((?:Cores |CPU structure)[\s\S]+?)\n *\[\d+\]", + sub_parser=TextParser( + quantities=[ + Quantity( + "parameters", + r"([A-Z][\w/ ]+).*?(?: is | in |: ) *(\S+)", + repeats=True, + str_operation=lambda x: [ + v.strip() for v in x.rsplit(" ", 1) + ], + ), + Quantity( + "input", + r"( \[RD.+[\s\S]+?- S/N \d+.+)", + repeats=False, + sub_parser=TextParser(quantities=io_quantities), + ), + ] + ), ), Quantity( - 'core_variables_setup', - r'(CORE Variables Setup[\s\S]+?)\n *\[\d+\]', - sub_parser=TextParser(quantities=[ - Quantity( - 'energies_occupations', - r'Energies.+?& Occupations([\s\S]+?)(?:\[0|\Z)', - sub_parser=TextParser(quantities=energies_quantities + [ - Quantity( - 'eigenenergies', - rf'Energy unit is electronVolt \[eV\]([\s\S]+E *{re_f} *{re_f} *{re_f}.+)', - sub_parser=TextParser(quantities=[ - Quantity( - 'energies', - rf'\n *E *({re_f} .+)', - repeats=True, dtype=np.dtype(np.float64)), - Quantity( - 'kpoints', - rf'({re_f} *{re_f} *{re_f}) \(rlu\)', - repeats=True, dtype=np.dtype(np.float64)), + "core_variables_setup", + r"(CORE Variables Setup[\s\S]+?)\n *\[\d+\]", + sub_parser=TextParser( + quantities=[ + Quantity( + "energies_occupations", + r"Energies.+?& Occupations([\s\S]+?)(?:\[0|\Z)", + sub_parser=TextParser( + quantities=energies_quantities + + [ Quantity( - 'kpoints_weights', - rf'weight +({re_f})', - repeats=True, dtype=np.float64)])) - ]) - ) - ]) + "eigenenergies", + rf"Energy unit is electronVolt \[eV\]([\s\S]+E *{re_f} *{re_f} *{re_f}.+)", + sub_parser=TextParser( + quantities=[ + Quantity( + "energies", + rf"\n *E *({re_f} .+)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "kpoints", + rf"({re_f} *{re_f} *{re_f}) \(rlu\)", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "kpoints_weights", + rf"weight +({re_f})", + repeats=True, + dtype=np.float64, + ), + ] + ), + ) + ] + ), + ) + ] + ), ), Quantity( - 'transferred_momenta', - r'Transferred momenta grid([\s\S]+?)\n *\[\d+\]', - sub_parser=TextParser(quantities=[ - Quantity( - 'input', - r'( \[RD.+[\s\S]+?- S/N \d+.+)', - repeats=True, sub_parser=TextParser(quantities=io_quantities) - ), - Quantity( - 'qpoints', - rf'Q \[\d+\] *: *({re_f}) *({re_f}) *({re_f}) *\(iku\) \* weight *({re_f})', - repeats=True, dtype=np.dtype(np.float64) - ), - Quantity( - 'module', - r'((?:Dipoles *\n|Dynamic Dielectric|Dyson|Bare local|Local Exchange)[\s\S]+?\n *\[\d+\.\d+\])', - repeats=True, sub_parser=TextParser(quantities=module_quantities) - ), - qp_properties_quantity - ]) + "transferred_momenta", + r"Transferred momenta grid([\s\S]+?)\n *\[\d+\]", + sub_parser=TextParser( + quantities=[ + Quantity( + "input", + r"( \[RD.+[\s\S]+?- S/N \d+.+)", + repeats=True, + sub_parser=TextParser(quantities=io_quantities), + ), + Quantity( + "qpoints", + rf"Q \[\d+\] *: *({re_f}) *({re_f}) *({re_f}) *\(iku\) \* weight *({re_f})", + repeats=True, + dtype=np.dtype(np.float64), + ), + Quantity( + "module", + r"((?:Dipoles *\n|Dynamic Dielectric|Dyson|Bare local|Local Exchange)[\s\S]+?\n *\[\d+\.\d+\])", + repeats=True, + sub_parser=TextParser(quantities=module_quantities), + ), + qp_properties_quantity, + ] + ), ), Quantity( - 'module', - r'((?:Dipoles *\n|Dynamic.+?Dielectric|Dyson|Bare local|Local Exchange)[\s\S]+?\n *\[\d+\])', - repeats=True, sub_parser=TextParser(quantities=module_quantities) - ) + "module", + r"((?:Dipoles *\n|Dynamic.+?Dielectric|Dyson|Bare local|Local Exchange)[\s\S]+?\n *\[\d+\])", + repeats=True, + sub_parser=TextParser(quantities=module_quantities), + ), ] @@ -413,7 +491,7 @@ def netcdf_file(self): try: self._file_handler = Dataset(self.mainfile) except Exception: - self.logger.warning('Error loading file.') + self.logger.warning("Error loading file.") return self._file_handler @@ -433,13 +511,21 @@ def __init__(self): def init_quantities(self): def str_to_key_block(val_in): - val = val_in.strip().split('\n') - return val[0].strip(), [np.array( - v.split('#')[0].split('|')[:-1], dtype=np.float64) for v in val[1:]] + val = val_in.strip().split("\n") + return val[0].strip(), [ + np.array(v.split("#")[0].split("|")[:-1], dtype=np.float64) + for v in val[1:] + ] self._quantities = [ - Quantity('key_value', r'\n *(\w+) *= *(.+) *#*', repeats=True), - Quantity('key_block', r'\n *\% *(\w+)([\s\S]+?)\%', repeats=True, str_operation=str_to_key_block)] + Quantity("key_value", r"\n *(\w+) *= *(.+) *#*", repeats=True), + Quantity( + "key_block", + r"\n *\% *(\w+)([\s\S]+?)\%", + repeats=True, + str_operation=str_to_key_block, + ), + ] class YamboParser: @@ -448,8 +534,10 @@ def __init__(self): self.input_parser = InputParser() self.netcdf_parser = NetCDFParser() self.metainfo_map = { - 'cpu': 'cores', 'threads': 'threads_per_core', 'threads_tot': 'threads_total', - 'io_nodes': 'nodes_io' + "cpu": "cores", + "threads": "threads_per_core", + "threads_tot": "threads_total", + "io_nodes": "nodes_io", } self._module = None @@ -468,19 +556,21 @@ def parse_method(self, source, target=None): method = target section = self._module() - section_def = method.m_def.all_sub_sections_by_section.get(self._module.m_def)[0] + section_def = method.m_def.all_sub_sections_by_section.get(self._module.m_def)[ + 0 + ] method.m_add_sub_section(section_def, section) - for input in source.get('input', []): - parameters = {key.strip(): val for key, val in input.get('key_value', [])} + for input in source.get("input", []): + parameters = {key.strip(): val for key, val in input.get("key_value", [])} x_yambo_input = x_yambo_io() section.x_yambo_input.append(x_yambo_input) x_yambo_input.x_yambo_file = input.file x_yambo_input.x_yambo_sn = input.sn x_yambo_input.x_yambo_parameters = parameters - for output in source.get('output', []): - parameters = {key.strip(): val for key, val in output.get('key_value', [])} + for output in source.get("output", []): + parameters = {key.strip(): val for key, val in output.get("key_value", [])} x_yambo_output = x_yambo_io() section.x_yambo_output.append(x_yambo_output) x_yambo_output.x_yambo_file = output.file @@ -488,7 +578,7 @@ def parse_method(self, source, target=None): x_yambo_output.x_yambo_parameters = parameters for key, val in source.items(): - if key.startswith('x_yambo'): + if key.startswith("x_yambo"): setattr(section, key, val) def parse_calculation(self, source, target=None): @@ -500,12 +590,15 @@ def parse_calculation(self, source, target=None): self.archive.run[-1].calculation.append(calc) else: calc = target - valence_conduction = source.get('valence_conduction', [ - source.get('valence', 0.), source.get('conduction', 0.) - ]) + valence_conduction = source.get( + "valence_conduction", + [source.get("valence", 0.0), source.get("conduction", 0.0)], + ) calc.energy = Energy( - fermi=source.get('fermi', 0.0), - highest_occupied=valence_conduction[0], lowest_unoccupied=valence_conduction[1]) + fermi=source.get("fermi", 0.0), + highest_occupied=valence_conduction[0], + lowest_unoccupied=valence_conduction[1], + ) states = source.states_summary if states is not None: @@ -515,7 +608,7 @@ def parse_calculation(self, source, target=None): if self.netcdf_parser.EIGENVALUES is not None: eigenvalues = BandEnergies() calc.eigenvalues.append(eigenvalues) - eigenvalues.kpoints = np.transpose(self.netcdf_parser.get('K-POINTS')) + eigenvalues.kpoints = np.transpose(self.netcdf_parser.get("K-POINTS")) eigenvalues.energies = self.netcdf_parser.EIGENVALUES * ureg.eV elif source.eigenenergies is not None: @@ -525,10 +618,22 @@ def parse_calculation(self, source, target=None): eigenvalues.kpoints_weights = source.eigenenergies.kpoints_weights # TODO deal with spin polarized data energies = source.eigenenergies.energies - eigenvalues.energies = np.reshape(energies, (1, len( - eigenvalues.kpoints), np.size(energies) // len(eigenvalues.kpoints))) * ureg.eV + eigenvalues.energies = ( + np.reshape( + energies, + ( + 1, + len(eigenvalues.kpoints), + np.size(energies) // len(eigenvalues.kpoints), + ), + ) + * ureg.eV + ) - if self.netcdf_parser.QP_E_Eo_Z is not None or self.netcdf_parser.QP_E is not None: + if ( + self.netcdf_parser.QP_E_Eo_Z is not None + or self.netcdf_parser.QP_E is not None + ): gw_band_energies = BandEnergies() calc.eigenvalues.append(gw_band_energies) n_spin = self.netcdf_parser.QP_table.shape[1] // 2 @@ -552,9 +657,15 @@ def parse_calculation(self, source, target=None): gw_band_energies.kpoints = [q.kpoint for q in qp_energy] energies = np.transpose([q.band for q in qp_energy]) qp_energy = energies[2].T - gw_band_energies.value_qp = np.reshape(qp_energy, (1, *np.shape(qp_energy))) * ureg.eV - gw_band_energies.value_ks = np.reshape(energies[1].T, (1, *np.shape(qp_energy))) * ureg.eV - gw_band_energies.qp_linearization_prefactor = np.reshape(energies[4].T, (1, *np.shape(qp_energy))) + gw_band_energies.value_qp = ( + np.reshape(qp_energy, (1, *np.shape(qp_energy))) * ureg.eV + ) + gw_band_energies.value_ks = ( + np.reshape(energies[1].T, (1, *np.shape(qp_energy))) * ureg.eV + ) + gw_band_energies.qp_linearization_prefactor = np.reshape( + energies[4].T, (1, *np.shape(qp_energy)) + ) if self.netcdf_parser.Sx_Vxc is not None or self.netcdf_parser.Sx is not None: n_spin = self.netcdf_parser.QP_table.shape[1] // 2 @@ -578,7 +689,7 @@ def parse_calculation(self, source, target=None): gw_band_energies.value_xc_potential = np.reshape(vxc, shape) for key, val in source.items(): - if key.startswith('x_yambo') and val is not None: + if key.startswith("x_yambo") and val is not None: setattr(calc, key, val) return calc @@ -590,22 +701,34 @@ def parse_input(self): run = self.archive.run[-1] # read structure data from netcdf input file - self.netcdf_parser.mainfile = os.path.join(self.maindir, self.mainfile_parser.cpu_files_io.input.file) + self.netcdf_parser.mainfile = os.path.join( + self.maindir, self.mainfile_parser.cpu_files_io.input.file + ) if self.netcdf_parser.mainfile is not None: system = System() run.system.append(system) - positions = self.netcdf_parser.get('ATOM_POS', []) + positions = self.netcdf_parser.get("ATOM_POS", []) n_atoms = self.netcdf_parser.N_ATOMS - atom_numbers = np.hstack([[self.netcdf_parser.atomic_numbers[int(n)]] * int( - n_atoms[int(n)]) for n in range(len(n_atoms))]) + atom_numbers = np.hstack( + [ + [self.netcdf_parser.atomic_numbers[int(n)]] * int(n_atoms[int(n)]) + for n in range(len(n_atoms)) + ] + ) system.atoms = Atoms( - positions=np.reshape(positions, (np.size(positions) // 3, 3)) * ureg.bohr, - labels=[chemical_symbols[int(n)] for n in atom_numbers]) + positions=np.reshape(positions, (np.size(positions) // 3, 3)) + * ureg.bohr, + labels=[chemical_symbols[int(n)] for n in atom_numbers], + ) if self.netcdf_parser.LATTICE_VECTORS is not None: - system.atoms.lattice_vectors = self.netcdf_parser.LATTICE_VECTORS * ureg.bohr + system.atoms.lattice_vectors = ( + self.netcdf_parser.LATTICE_VECTORS * ureg.bohr + ) # reference calculation - energies_occupations = self.mainfile_parser.get('core_variables_setup', {}).get('energies_occupations') + energies_occupations = self.mainfile_parser.get("core_variables_setup", {}).get( + "energies_occupations" + ) self.parse_calculation(energies_occupations) # input parameters from mainfile @@ -613,7 +736,10 @@ def parse_input(self): run.x_yambo_input = input input.x_yambo_file = self.mainfile_parser.cpu_files_io.input.file input.x_yambo_sn = self.mainfile_parser.cpu_files_io.input.sn - parameters = {key.strip(): val for key, val in self.mainfile_parser.cpu_files_io.input.get('key_value', [])} + parameters = { + key.strip(): val + for key, val in self.mainfile_parser.cpu_files_io.input.get("key_value", []) + } input.x_yambo_parameters = parameters def parse_dynamic_dielectric_matrix(self, module): @@ -624,13 +750,13 @@ def parse_dynamic_dielectric_matrix(self, module): self._module = x_yambo_dynamic_dielectric_matrix self.parse_method(source) - for output in source.get('output', []): - path = os.path.join(self.maindir, os.path.dirname(output.get('file', ''))) + for output in source.get("output", []): + path = os.path.join(self.maindir, os.path.dirname(output.get("file", ""))) if not os.path.isdir(path): continue ddm = self.archive.run[-1].method[-1].x_yambo_dynamic_dielectric_matrix[-1] for filename in os.listdir(path): - if 'pp_fragment_' not in filename: + if "pp_fragment_" not in filename: continue self.netcdf_parser.mainfile = os.path.join(path, filename) if self.netcdf_parser.mainfile is None: @@ -640,11 +766,11 @@ def parse_dynamic_dielectric_matrix(self, module): self.netcdf_parser.parse() for key in self.netcdf_parser._keys: val = self.netcdf_parser.get(key) - if key.startswith('FREQ_PARS_sec_iq'): + if key.startswith("FREQ_PARS_sec_iq"): fragment.x_yambo_FREQ_PARS_sec_iq = val - elif key.startswith('FREQ_sec_iq'): + elif key.startswith("FREQ_sec_iq"): fragment.x_yambo_FREQ_sec_iq = val - elif key.startswith('X_Q'): + elif key.startswith("X_Q"): fragment.x_yambo_X_Q = val def parse_local_xc_nonlocal_fock(self, module): @@ -665,7 +791,9 @@ def parse_local_xc_nonlocal_fock(self, module): calc.x_yambo_local_xc_nonlocal_fock_bandenergies.append(band_energy) sx, vxc = np.transpose([c.band for c in source.corrections]) band_energy.x_yambo_sx = np.reshape(sx, (1, *np.shape(sx.T))) * ureg.eV - band_energy.x_yambo_vxc = np.reshape(vxc, (1, *np.shape(vxc.T))) * ureg.eV + band_energy.x_yambo_vxc = ( + np.reshape(vxc, (1, *np.shape(vxc.T))) * ureg.eV + ) if source.energy_xc is not None: calc.energy = Energy(xc=EnergyEntry(value=source.energy_xc)) @@ -709,8 +837,10 @@ def parse_dyson(self, module): if source.qp_properties is not None: self.parse_method(source.qp_properties, self.archive.run[-1].method[-1]) - for output in source.qp_properties.get('output', []): - self.netcdf_parser.mainfile = os.path.join(self.maindir, output.get('file', '')) + for output in source.qp_properties.get("output", []): + self.netcdf_parser.mainfile = os.path.join( + self.maindir, output.get("file", "") + ) self.netcdf_parser.parse() self.parse_calculation(source.qp_properties) @@ -725,19 +855,22 @@ def parse(self, filepath, archive, logger): run = Run() self.archive.run.append(run) run.program = Program( - name='YAMBO', version=self.mainfile_parser.get('version', ''), - x_yambo_build=self.mainfile_parser.get('build', ''), - x_yambo_hash=self.mainfile_parser.get('hash', '')) - date = datetime.strptime(self.mainfile_parser.get( - 'date_start', '01/01/1970 00:00'), '%d/%m/%Y %H:%M') - datetime(1970, 1, 1) + name="YAMBO", + version=self.mainfile_parser.get("version", ""), + x_yambo_build=self.mainfile_parser.get("build", ""), + x_yambo_hash=self.mainfile_parser.get("hash", ""), + ) + date = datetime.strptime( + self.mainfile_parser.get("date_start", "01/01/1970 00:00"), "%d/%m/%Y %H:%M" + ) - datetime(1970, 1, 1) run.time_run = TimeRun(date_start=date.total_seconds()) if self.mainfile_parser.cpu_files_io is not None: self.parse_input() for key, val in self.mainfile_parser.cpu_files_io.parameters: - key = key.strip().replace('/', '').replace(' ', '_').lower() - val = val == 'yes' if val in ['yes', 'no'] else val - setattr(run, 'x_yambo_%s' % key, val) + key = key.strip().replace("/", "").replace(" ", "_").lower() + val = val == "yes" if val in ["yes", "no"] else val + setattr(run, "x_yambo_%s" % key, val) def parse_module(module): self.parse_dipoles(module) @@ -749,9 +882,11 @@ def parse_module(module): if self.mainfile_parser.transferred_momenta is not None: self._module = x_yambo_transferred_momenta self.parse_method(self.mainfile_parser.transferred_momenta) - self.parse_calculation(self.mainfile_parser.transferred_momenta.qp_properties) - for module in self.mainfile_parser.transferred_momenta.get('module', []): + self.parse_calculation( + self.mainfile_parser.transferred_momenta.qp_properties + ) + for module in self.mainfile_parser.transferred_momenta.get("module", []): parse_module(module) - for module in self.mainfile_parser.get('module', []): + for module in self.mainfile_parser.get("module", []): parse_module(module) diff --git a/tests/conftest.py b/tests/conftest.py index f66c4c83..db67f964 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -18,8 +18,9 @@ # import os import pytest + # Set up pytest to pass control to the debugger on an exception. -if os.getenv('_PYTEST_RAISE', "0") != "0": +if os.getenv("_PYTEST_RAISE", "0") != "0": @pytest.hookimpl(tryfirst=True) def pytest_exception_interact(call): diff --git a/tests/dos_integrator.py b/tests/dos_integrator.py index 4326267e..97f6aca2 100644 --- a/tests/dos_integrator.py +++ b/tests/dos_integrator.py @@ -26,16 +26,18 @@ def integrate_dos(dos, e_fermi=None): The explicit integral serves to check energy and value units.""" # Restrain integral to the occupied states if e_fermi: - occ_energy = [[e.magnitude for e in dos_spin.energies if e <= e_fermi] for dos_spin in dos] + occ_energy = [ + [e.magnitude for e in dos_spin.energies if e <= e_fermi] for dos_spin in dos + ] else: occ_energy = [[e.magnitude for e in dos_spin.energies] for dos_spin in dos] # Perofrm the integration - dos_integrated = 0. + dos_integrated = 0.0 for ispin, dos_spin in enumerate(dos): try: - spin_channel = dos_spin.total[0].value[:len(occ_energy[ispin])] + spin_channel = dos_spin.total[0].value[: len(occ_energy[ispin])] except IndexError: - raise IndexError('Check the no. spin-channels') + raise IndexError("Check the no. spin-channels") occ_value = [v.magnitude for v in spin_channel] dos_integrated += np.trapz(x=occ_energy[ispin], y=occ_value) return dos_integrated diff --git a/tests/test_abacusparser.py b/tests/test_abacusparser.py index 7feff6e6..655f513b 100644 --- a/tests/test_abacusparser.py +++ b/tests/test_abacusparser.py @@ -27,34 +27,34 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return ABACUSParser() def test_band(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/Si_band/running_nscf.log', archive, None) + parser.parse("tests/data/abacus/Si_band/running_nscf.log", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'Parallel, in development' + assert sec_run.program.version == "Parallel, in development" assert sec_run.time_run.date_start.magnitude == approx(1657036247.0) sec_parallel = sec_run.x_abacus_section_parallel[0] assert sec_parallel.x_abacus_nproc == 8 - assert sec_parallel.x_abacus_allocation_method == '2D block' + assert sec_parallel.x_abacus_allocation_method == "2D block" assert sec_parallel.x_abacus_allocation_nb2d == 1 assert sec_parallel.x_abacus_allocation_trace_loc_row == 26 assert sec_parallel.x_abacus_allocation_trace_loc_col == 26 assert sec_parallel.x_abacus_allocation_nloc == 91 - assert sec_run.x_abacus_input_filename == 'INPUT' - assert sec_run.x_abacus_kpt_filename == 'KLINES' + assert sec_run.x_abacus_input_filename == "INPUT" + assert sec_run.x_abacus_kpt_filename == "KLINES" assert sec_run.time_run.date_end.magnitude == approx(1657036249.0) assert sec_run.clean_end sec_method = sec_run.method[0] sec_basis_set = sec_method.electrons_representation[0].basis_set[0] - assert sec_basis_set.type == 'numeric AOs' - assert sec_basis_set.cutoff.to('Ry').magnitude == approx(50) + assert sec_basis_set.type == "numeric AOs" + assert sec_basis_set.cutoff.to("Ry").magnitude == approx(50) sec_basis_set = sec_method.electrons_representation[1].basis_set[0] assert sec_basis_set.x_abacus_basis_sets_delta_k.magnitude == approx(0.01) assert sec_basis_set.x_abacus_basis_sets_delta_r.magnitude == approx(0.01) @@ -62,34 +62,40 @@ def test_band(parser): assert sec_basis_set.x_abacus_basis_sets_rmax.magnitude == approx(30) assert sec_basis_set.x_abacus_basis_sets_kmesh == 711 # Update test to new KMesh sec_specie_basis_set = sec_basis_set.x_abacus_section_specie_basis_set - assert sec_specie_basis_set[0].x_abacus_specie_basis_set_filename == 'Si_lda_8.0au_50Ry_2s2p1d' - assert (sec_specie_basis_set[0].x_abacus_specie_basis_set_ln == [ - [0, 0], [0, 1], [1, 0], [1, 1], [2, 0]]).all() + assert ( + sec_specie_basis_set[0].x_abacus_specie_basis_set_filename + == "Si_lda_8.0au_50Ry_2s2p1d" + ) + assert ( + sec_specie_basis_set[0].x_abacus_specie_basis_set_ln + == [[0, 0], [0, 1], [1, 0], [1, 1], [2, 0]] + ).all() assert sec_specie_basis_set[0].x_abacus_specie_basis_set_rcutoff.magnitude == 8 assert sec_specie_basis_set[0].x_abacus_specie_basis_set_rmesh == 801 assert sec_method.electronic.n_spin_channels == 1 assert not sec_method.x_abacus_spin_orbit - assert sec_method.electronic.relativity_method == 'scalar_relativistic' + assert sec_method.electronic.relativity_method == "scalar_relativistic" sec_atom_parameters = sec_method.atom_parameters assert len(sec_atom_parameters) == 1 - assert sec_atom_parameters[0].label == 'Si' + assert sec_atom_parameters[0].label == "Si" assert sec_atom_parameters[0].n_valence_electrons == 4 - assert sec_atom_parameters[0].pseudopotential_name == 'Si.pz-vbc.UPF' - assert sec_atom_parameters[0].x_abacus_pp_type == 'NC' - assert sec_atom_parameters[0].x_abacus_pp_xc == 'PZ' + assert sec_atom_parameters[0].pseudopotential_name == "Si.pz-vbc.UPF" + assert sec_atom_parameters[0].x_abacus_pp_type == "NC" + assert sec_atom_parameters[0].x_abacus_pp_xc == "PZ" assert sec_atom_parameters[0].x_abacus_pp_lmax == 1 assert sec_atom_parameters[0].x_abacus_pp_nzeta == 2 assert sec_atom_parameters[0].x_abacus_pp_nprojectors == 2 - assert sec_method.dft.xc_functional.correlation[0].name == 'LDA_C_PZ' + assert sec_method.dft.xc_functional.correlation[0].name == "LDA_C_PZ" sec_system = sec_run.system[0] assert sec_system.x_abacus_alat.magnitude == approx(10.2) assert sec_system.atoms.lattice_vectors[0][1].magnitude == approx(2.69880378e-10) - assert sec_system.atoms.labels == ['Si', 'Si'] + assert sec_system.atoms.labels == ["Si", "Si"] assert sec_system.atoms.positions[1][0].magnitude == approx(1.34940189e-10) assert sec_system.x_abacus_cell_volume.magnitude == approx(265.302) assert sec_system.x_abacus_reciprocal_vectors[2][0].magnitude == approx( - -1.16406857e+10) + -1.16406857e10 + ) assert sec_system.atoms.n_atoms == 2 assert sec_system.x_abacus_number_of_species == 1 assert sec_system.x_abacus_number_of_electrons_out[0] == 8 @@ -107,43 +113,43 @@ def test_band(parser): assert sec_scc.x_abacus_extended_fft_grid_dim[2] == 69 sec_k_band = sec_scc.band_structure_electronic[0] assert sec_k_band.energy_fermi.magnitude == approx(1.055136698179135e-18) - assert sec_k_band.reciprocal_cell[0][0].magnitude == approx(1.16406857e+10) + assert sec_k_band.reciprocal_cell[0][0].magnitude == approx(1.16406857e10) sec_k_band_segment = sec_k_band.segment[0] assert sec_k_band_segment.kpoints.shape == (101, 3) assert sec_k_band_segment.kpoints[3][2] == approx(0.425) assert sec_k_band_segment.energies.shape == (1, 101, 8) assert sec_k_band_segment.energies[0][4][4].magnitude == approx(1.14715847e-18) - assert archive.workflow2.method.method == 'DFT' + assert archive.workflow2.method.method == "DFT" # TODO iteration is None in sub_section def test_dos(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/Si_dos/running_nscf.log', archive, None) + parser.parse("tests/data/abacus/Si_dos/running_nscf.log", archive, None) sec_run = archive.run[0] assert len(sec_run.calculation) == 1 sec_scc = sec_run.calculation[0] sec_k_band = sec_scc.band_structure_electronic[0] assert sec_k_band.energy_fermi.magnitude == approx(1.055136698179135e-18) - energy_reference = sec_k_band.energy_fermi.to('eV').magnitude + energy_reference = sec_k_band.energy_fermi.to("eV").magnitude assert len(sec_scc.dos_electronic) == 1 sec_dos = sec_scc.dos_electronic[0] assert not sec_dos.spin_channel n_energies = sec_dos.n_energies assert n_energies == 2265 - assert sec_dos.energies.shape == (n_energies, ) + assert sec_dos.energies.shape == (n_energies,) assert len(sec_dos.total) == 1 - assert sec_dos.total[0].value.shape == (n_energies, ) + assert sec_dos.total[0].value.shape == (n_energies,) - energies = sec_dos.energies.to('eV').magnitude - values = sec_dos.total[0].value.to('1/eV').magnitude + energies = sec_dos.energies.to("eV").magnitude + values = sec_dos.total[0].value.to("1/eV").magnitude nonzero = np.unique(values.nonzero()) energies = energies[nonzero] energies.sort() - lowest_unoccupied_index = np.searchsorted(energies, energy_reference, 'right')[0] + lowest_unoccupied_index = np.searchsorted(energies, energy_reference, "right")[0] highest_occupied_index = lowest_unoccupied_index - 1 gap = energies[lowest_unoccupied_index] - energies[highest_occupied_index] assert gap == approx(0.01) @@ -151,21 +157,21 @@ def test_dos(parser): def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/Si_scf/running_scf.log', archive, None) + parser.parse("tests/data/abacus/Si_scf/running_scf.log", archive, None) sec_run = archive.run[0] assert sec_run.x_abacus_program_execution_time.magnitude == approx(1.0) sec_method = sec_run.method[0] assert sec_method.scf.n_max_iteration == 20 - assert sec_method.x_abacus_basis_type == 'pw' + assert sec_method.x_abacus_basis_type == "pw" sec_system = sec_run.system[0] sec_system_sym = sec_system.symmetry[0] - assert sec_system_sym.crystal_system == 'cubic' + assert sec_system_sym.crystal_system == "cubic" assert sec_system.x_abacus_ibrav == 3 - assert sec_system_sym.bravais_lattice == 'cF' - assert sec_system_sym.x_abacus_point_group_schoenflies_name == 'T_d' + assert sec_system_sym.bravais_lattice == "cF" + assert sec_system_sym.x_abacus_point_group_schoenflies_name == "T_d" assert sec_system.x_abacus_celldm[0] == approx(3.8166849) assert sec_system.x_abacus_celldm[-1] == 60 assert sec_system_sym.x_abacus_number_of_rotation_matrices == 48 @@ -176,17 +182,23 @@ def test_scf(parser): sec_scc = sec_run.calculation[0] assert len(sec_scc.scf_iteration) == sec_scc.n_scf_iterations assert sec_scc.energy.xc.value.magnitude == approx(-1.0521129713661978e-17) - assert sec_scc.energy.electrostatic.correction.magnitude == approx(2.402022465119184e-18) + assert sec_scc.energy.electrostatic.correction.magnitude == approx( + 2.402022465119184e-18 + ) assert sec_scc.energy.hartree_fock_x_scaled.value.magnitude == approx(0.0) assert sec_scc.energy.total.value.magnitude == approx(-3.452765284822062e-17) sec_scf = sec_scc.scf_iteration assert sec_scf[5].x_abacus_density_change_scf_iteration == approx(8.46207322367e-10) - assert sec_scf[5].x_abacus_energy_total_harris_foulkes_estimate.magnitude == approx(-3.452765284886149e-17) + assert sec_scf[5].x_abacus_energy_total_harris_foulkes_estimate.magnitude == approx( + -3.452765284886149e-17 + ) assert sec_scf[0].energy.total.value.magnitude == approx(-3.451916016970848e-17) assert sec_scf[2].energy.fermi.magnitude == approx(1.0082248524478308e-18) sec_eigenvalues = sec_scc.eigenvalues[0] assert sec_eigenvalues.energies.shape == (1, 8, 4) - assert sec_eigenvalues.energies[0][4][1].magnitude == approx(-2.3289399769487398e-20) + assert sec_eigenvalues.energies[0][4][1].magnitude == approx( + -2.3289399769487398e-20 + ) assert sec_eigenvalues.occupations.shape == (1, 8, 4) assert sec_eigenvalues.occupations[0][6][1] == approx(0.0937500) assert sec_eigenvalues.kpoints.shape == (8, 3) @@ -196,27 +208,33 @@ def test_scf(parser): def test_geomopt(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/Si_geomopt/running_cell-relax.log', archive, None) + parser.parse("tests/data/abacus/Si_geomopt/running_cell-relax.log", archive, None) sec_run = archive.run[0] sec_method = sec_run.method[0] # TODO smearing is None - assert sec_method.electronic.smearing.kind == 'gaussian' + assert sec_method.electronic.smearing.kind == "gaussian" assert sec_method.electronic.smearing.width == approx(2.179872361103585e-20) assert sec_method.x_abacus_gamma_algorithms - assert sec_method.electrons_representation[0].basis_set[0].type == 'numeric AOs' + assert sec_method.electrons_representation[0].basis_set[0].type == "numeric AOs" sec_workflow = archive.workflow2 - assert sec_workflow.method.convergence_tolerance_force_maximum.magnitude == approx(1.6021766339999997e-12) - assert sec_workflow.method.convergence_tolerance_stress_maximum.magnitude == approx(1000000.0) + assert sec_workflow.method.convergence_tolerance_force_maximum.magnitude == approx( + 1.6021766339999997e-12 + ) + assert sec_workflow.method.convergence_tolerance_stress_maximum.magnitude == approx( + 1000000.0 + ) sec_sccs = sec_run.calculation assert len(sec_sccs) == 50 # TODO empty sub sections assert sec_sccs[20].n_scf_iterations == 10 assert sec_sccs[20].forces.total.value.shape == (2, 3) - assert sec_sccs[20].forces.total.value[1][0].magnitude == approx(-1.292767486795188e-11) + assert sec_sccs[20].forces.total.value[1][0].magnitude == approx( + -1.292767486795188e-11 + ) assert sec_sccs[42].stress.total.value[1][1].magnitude == approx(62419700.0) assert sec_sccs[10].pressure.magnitude == approx(-100095500.0) assert sec_sccs[48].energy.fermi.magnitude == approx(-6.769734186416427e-19) @@ -224,7 +242,7 @@ def test_geomopt(parser): def test_md(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/Sn_md/running_md.log', archive, None) + parser.parse("tests/data/abacus/Sn_md/running_md.log", archive, None) sec_run = archive.run[0] assert sec_run.x_abacus_md_nstep_in == 10 @@ -233,11 +251,13 @@ def test_md(parser): sec_method = sec_run.method[0] assert sec_method.x_abacus_scf_threshold_density == approx(1e-5) assert sec_method.x_abacus_mixing_beta == approx(0.4) - assert archive.workflow2.method.thermodynamic_ensemble == 'NVT' + assert archive.workflow2.method.thermodynamic_ensemble == "NVT" sec_sccs = sec_run.calculation assert len(sec_sccs) == 11 - assert sec_sccs[5].energy.electronic.kinetic.magnitude == approx(1.748126841263409e-18) + assert sec_sccs[5].energy.electronic.kinetic.magnitude == approx( + 1.748126841263409e-18 + ) assert sec_sccs[9].temperature.magnitude == approx(1269.5343) assert sec_sccs[0].energy.total.value.magnitude == approx(-9.855490687700974e-16) @@ -245,19 +265,25 @@ def test_md(parser): # TODO no test data def test_hse(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/GaSb_hse/running_scf.log', archive, None) + parser.parse("tests/data/abacus/GaSb_hse/running_scf.log", archive, None) sec_run = archive.run[0] assert sec_run.x_abacus_program_execution_time.magnitude == 8837 sec_method = sec_run.method[0] - assert sec_method.dft.xc_functional.hybrid[0].name == 'HYB_GGA_XC_HSE06' - assert sec_method.dft.xc_functional.hybrid[0].parameters['$\\omega$ in m^-1'] == approx( - 2078698737.084507) - assert sec_method.dft.xc_functional.hybrid[0].parameters['hybrid coefficient $\\alpha$'] == 0.25 + assert sec_method.dft.xc_functional.hybrid[0].name == "HYB_GGA_XC_HSE06" + assert sec_method.dft.xc_functional.hybrid[0].parameters[ + "$\\omega$ in m^-1" + ] == approx(2078698737.084507) + assert ( + sec_method.dft.xc_functional.hybrid[0].parameters[ + "hybrid coefficient $\\alpha$" + ] + == 0.25 + ) assert sec_method.x_abacus_hse_omega.magnitude == approx(2078698737.084507) assert sec_method.x_abacus_hybrid_xc_coeff == approx(0.25) - assert sec_method.x_abacus_mixing_method == 'pulay' + assert sec_method.x_abacus_mixing_method == "pulay" assert sec_method.x_abacus_exx_ccp_rmesh_times == approx(1.5) assert sec_method.x_abacus_exx_dm_threshold == approx(0.0005) assert sec_method.x_abacus_exx_cauchy_threshold == approx(1e-08) @@ -266,17 +292,19 @@ def test_hse(parser): assert sec_method.x_abacus_exx_pca_threshold == approx(0.0001) sec_system = sec_run.system[0] - assert sec_system.atoms.labels == ['Sb', 'Ga'] + assert sec_system.atoms.labels == ["Sb", "Ga"] assert sec_system.atoms.positions[1][2].magnitude == approx(4.571926147831032e-10) sec_scc = sec_run.calculation[0] assert sec_scc.n_scf_iterations == 55 - assert sec_scc.energy.hartree_fock_x_scaled.value.magnitude == approx(-1.2417912255666503e-17) + assert sec_scc.energy.hartree_fock_x_scaled.value.magnitude == approx( + -1.2417912255666503e-17 + ) def test_spin2(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/Si_spin2/running_nscf.log', archive, None) + parser.parse("tests/data/abacus/Si_spin2/running_nscf.log", archive, None) sec_run = archive.run[0] sec_method = sec_run.method[0] @@ -288,21 +316,23 @@ def test_spin2(parser): assert sec_k_band.energy_fermi.magnitude == 0 sec_k_band_segment = sec_k_band.segment[0] assert sec_k_band_segment.energies.shape == (2, 1728, 8) - assert sec_k_band_segment.energies[0][1][2].magnitude == approx(1.0292510870946719e-18) + assert sec_k_band_segment.energies[0][1][2].magnitude == approx( + 1.0292510870946719e-18 + ) assert len(sec_scc.dos_electronic) == 2 sec_dos_up = sec_scc.dos_electronic[0] sec_dos_down = sec_scc.dos_electronic[1] assert sec_dos_up.spin_channel == 0 assert sec_dos_up.spin_channel != sec_dos_down.spin_channel - assert sec_dos_up.energies.shape == (2265, ) + assert sec_dos_up.energies.shape == (2265,) assert len(sec_dos_up.total) == len(sec_dos_down.total) - assert sec_dos_up.total[0].value.shape == (2265, ) + assert sec_dos_up.total[0].value.shape == (2265,) def test_dftu(parser): archive = EntryArchive() - parser.parse('tests/data/abacus/MnBiTe_dftu/running_scf.log', archive, None) + parser.parse("tests/data/abacus/MnBiTe_dftu/running_scf.log", archive, None) sec_run = archive.run[0] @@ -312,12 +342,26 @@ def test_dftu(parser): # TODO include full relativistic # assert sec_method.electronic.relativity_method == 'full relativistic' assert sec_method.x_abacus_initial_magnetization_total == 0.0 - assert sec_method.x_abacus_diagonalization_algorithm == 'genelpa' - assert sec_method.electronic.method == 'DFT+U' + assert sec_method.x_abacus_diagonalization_algorithm == "genelpa" + assert sec_method.electronic.method == "DFT+U" sec_system = sec_run.system[0] assert sec_system.atoms.labels == [ - 'Mn', 'Mn', 'Bi', 'Bi', 'Bi', 'Bi', 'Te', 'Te', 'Te', 'Te', 'Te', 'Te', 'Te', 'Te'] + "Mn", + "Mn", + "Bi", + "Bi", + "Bi", + "Bi", + "Te", + "Te", + "Te", + "Te", + "Te", + "Te", + "Te", + "Te", + ] assert sec_system.x_abacus_number_of_species == 4 sec_scc = sec_run.calculation[0] diff --git a/tests/test_abinitparser.py b/tests/test_abinitparser.py index 4befc374..a4c86a36 100644 --- a/tests/test_abinitparser.py +++ b/tests/test_abinitparser.py @@ -27,72 +27,78 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return AbinitParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/abinit/Si/Si.out', archive, None) + parser.parse("tests/data/abinit/Si/Si.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '7.8.2' + assert sec_run.program.version == "7.8.2" assert sec_run.x_abinit_total_cpu_time == 1.4 assert sec_run.clean_end assert sec_run.time_run.date_start.magnitude == 1467132480.0 sec_dataset = sec_run.x_abinit_section_dataset assert len(sec_dataset) == 1 assert len(sec_dataset[0].x_abinit_section_input.x_abinit_var_symrel) == 432 - assert sec_dataset[0].x_abinit_section_input.x_abinit_var_znucl[0] == 14. + assert sec_dataset[0].x_abinit_section_input.x_abinit_var_znucl[0] == 14.0 sec_method = sec_run.method[0] - assert sec_method.scf.n_max_iteration == 10. + assert sec_method.scf.n_max_iteration == 10.0 assert sec_method.scf.threshold_energy_change.magnitude == approx(4.35974472e-24) - assert sec_method.electrons_representation[0].basis_set[0].cutoff.to('hartree').magnitude == approx(8) - assert sec_method.dft.xc_functional.contributions[0].name == 'LDA_XC_TETER93' + assert sec_method.electrons_representation[0].basis_set[0].cutoff.to( + "hartree" + ).magnitude == approx(8) + assert sec_method.dft.xc_functional.contributions[0].name == "LDA_XC_TETER93" sec_system = sec_run.system[0] - assert sec_system.atoms.labels == ['Si', 'Si'] + assert sec_system.atoms.labels == ["Si", "Si"] assert False not in sec_system.atoms.periodic assert sec_system.atoms.positions[1][1].magnitude == approx(1.346756e-10) assert sec_system.atoms.lattice_vectors[2][0].magnitude == approx(2.693512e-10) sec_scc = sec_run.calculation[0] assert sec_scc.energy.total.value.magnitude == approx(-3.86544728e-17) - assert np.max(sec_scc.forces.total.value_raw.magnitude) == 0. - assert sec_scc.stress.total.value[2][2].magnitude == approx(-5.60539974e+08) + assert np.max(sec_scc.forces.total.value_raw.magnitude) == 0.0 + assert sec_scc.stress.total.value[2][2].magnitude == approx(-5.60539974e08) assert sec_scc.energy.fermi.magnitude == approx(8.4504932e-19) assert sec_scc.energy.kinetic_electronic.value.magnitude == approx(1.3343978e-17) assert len(sec_scc.scf_iteration) == 5 - assert sec_scc.scf_iteration[1].energy.total.value.magnitude == approx(-3.86541222e-17) + assert sec_scc.scf_iteration[1].energy.total.value.magnitude == approx( + -3.86541222e-17 + ) def test_relax(parser): archive = EntryArchive() - parser.parse('tests/data/abinit/H2/H2.out', archive, None) + parser.parse("tests/data/abinit/H2/H2.out", archive, None) - assert archive.workflow2.m_def.name == 'GeometryOptimization' - assert archive.workflow2.method.method == 'bfgs' + assert archive.workflow2.m_def.name == "GeometryOptimization" + assert archive.workflow2.method.method == "bfgs" sec_run = archive.run[0] assert len(sec_run.x_abinit_section_dataset) == 2 assert len(sec_run.system) == 3 sec_scc = archive.run[0].calculation assert len(sec_scc) == 4 for i in range(1, 4): # sec_scc[0] do not store any scf section - assert sec_scc[i].m_xpath('scf_iteration') + assert sec_scc[i].m_xpath("scf_iteration") assert len(sec_scc[2].scf_iteration) == 5 assert sec_scc[2].energy.total.value.magnitude == approx(-4.93984603e-18) - assert sec_scc[2].scf_iteration[4].energy.total.value.magnitude == approx(-4.9398460277747174e-18) + assert sec_scc[2].scf_iteration[4].energy.total.value.magnitude == approx( + -4.9398460277747174e-18 + ) def test_dos(parser): archive = EntryArchive() - parser.parse('tests/data/abinit/Fe/Fe.out', archive, None) + parser.parse("tests/data/abinit/Fe/Fe.out", archive, None) sec_scc = archive.run[0].calculation assert len(sec_scc) == 2 - assert sec_scc[-1].m_xpath('dos_electronic') # dos always stored after dataset 1 + assert sec_scc[-1].m_xpath("dos_electronic") # dos always stored after dataset 1 assert len(sec_scc[-1].dos_electronic) == 2 sec_dos_up = sec_scc[-1].dos_electronic[0] sec_dos_down = sec_scc[-1].dos_electronic[1] @@ -100,29 +106,31 @@ def test_dos(parser): assert sec_dos_up.n_energies == 1601 assert sec_dos_up.energies[0].magnitude == approx(-3.487795777765736e-18) assert sec_dos_up.energies[543].magnitude == approx(-1.1204543936072428e-18) - assert sec_dos_up.energies[-1].magnitude == approx(-sec_dos_up.energies[0].magnitude) + assert sec_dos_up.energies[-1].magnitude == approx( + -sec_dos_up.energies[0].magnitude + ) assert len(sec_dos_up.total) == 1 sec_dos_up_total = sec_dos_up.total[0] - assert sec_dos_up_total.value[151].magnitude == approx(3.01852536e+14) - assert sec_dos_up_total.value[180].magnitude == approx(5.46018208e+15) + assert sec_dos_up_total.value[151].magnitude == approx(3.01852536e14) + assert sec_dos_up_total.value[180].magnitude == approx(5.46018208e15) assert sec_dos_up_total.value_integrated[151] == approx(1.3e-5) assert sec_dos_up_total.value_integrated[180] == approx(2.39e-4) def test_gw(parser): archive = EntryArchive() - parser._calculation_type = 'gw' - parser.parse('tests/data/abinit/ZrO2_GW/A1.abo', archive, None) + parser._calculation_type = "gw" + parser.parse("tests/data/abinit/ZrO2_GW/A1.abo", archive, None) sec_run = archive.run[-1] # Method sec_method = sec_run.method assert len(sec_method) == 1 - assert sec_method[-1].m_xpath('gw') and sec_method[-1].m_xpath('k_mesh') + assert sec_method[-1].m_xpath("gw") and sec_method[-1].m_xpath("k_mesh") assert sec_method[-1].k_mesh.n_points == 3 sec_gw = sec_method[-1].gw - assert sec_gw.type == 'G0W0' - assert sec_gw.analytical_continuation == 'contour_deformation' + assert sec_gw.type == "G0W0" + assert sec_gw.analytical_continuation == "contour_deformation" assert sec_gw.interval_qp_corrections[0] == 12 assert sec_gw.interval_qp_corrections[-1] == 13 assert sec_gw.n_states == 512 @@ -131,14 +139,16 @@ def test_gw(parser): assert sec_gw.q_mesh.n_points == sec_method[-1].k_mesh.n_points assert len(sec_method[-1].frequency_mesh) == 1 assert sec_method[-1].frequency_mesh[0].n_points == 2 - assert sec_method[-1].frequency_mesh[0].points[-1].to('eV').magnitude == approx(31.855950000000004j) + assert sec_method[-1].frequency_mesh[0].points[-1].to("eV").magnitude == approx( + 31.855950000000004j + ) # Calculation sec_scc = sec_run.calculation assert len(sec_scc) == 1 - assert sec_scc[-1].m_xpath('x_abinit_screening') - assert sec_scc[-1].m_xpath('x_abinit_gw') + assert sec_scc[-1].m_xpath("x_abinit_screening") + assert sec_scc[-1].m_xpath("x_abinit_gw") sec_eigen = sec_scc[-1].eigenvalues assert len(sec_eigen) == 3 - assert sec_eigen[0].value_qp.to('eV').magnitude[0][0][2] == approx(7.024) - assert sec_eigen[0].value_qp.to('eV').magnitude[0][0][3] == approx(12.483) + assert sec_eigen[0].value_qp.to("eV").magnitude[0][0][2] == approx(7.024) + assert sec_eigen[0].value_qp.to("eV").magnitude[0][0][3] == approx(12.483) diff --git a/tests/test_amsparser.py b/tests/test_amsparser.py index c27b8a68..eb672c16 100644 --- a/tests/test_amsparser.py +++ b/tests/test_amsparser.py @@ -27,49 +27,49 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return AMSParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/ams/scf/phenylrSmall-metagga.out', archive, None) + parser.parse("tests/data/ams/scf/phenylrSmall-metagga.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '70630 2018-11-24' + assert sec_run.program.version == "70630 2018-11-24" assert sec_run.time_run.date_start.magnitude == 1550053118.0 sec_method = archive.run[0].method[0] assert sec_method.electronic.n_spin_channels == 2 - assert sec_method.electronic.relativity_method == 'scalar_relativistic_atomic_ZORA' + assert sec_method.electronic.relativity_method == "scalar_relativistic_atomic_ZORA" assert sec_method.electronic.charge == 0.0 - assert sec_method.scf.x_ams_diis_settings_dirac['Method'] == 'diis' - assert sec_method.scf.x_ams_diis_settings_scf['Cond'] == approx(1.0e+6) + assert sec_method.scf.x_ams_diis_settings_dirac["Method"] == "diis" + assert sec_method.scf.x_ams_diis_settings_scf["Cond"] == approx(1.0e6) assert not sec_method.scf.x_ams_degenerate assert sec_method.scf.x_ams_growth_factor == approx(1.1) assert sec_method.scf.x_ams_convrg == approx(1.0e-6) - assert sec_method.x_ams_nuclear_charge_density_model == 'Point Charge Nuclei' - assert sec_method.x_ams_grimme_d3_dispersion_correction['damping'] == 'BJ' - assert sec_method.x_ams_grimme_d3_dispersion_correction['s8'] == approx(1.944) - assert sec_method.x_ams_other_parameters['version'] == 4 - assert sec_method.dft.xc_functional.contributions[0].name == 'MGGA_XC_TPSS' + assert sec_method.x_ams_nuclear_charge_density_model == "Point Charge Nuclei" + assert sec_method.x_ams_grimme_d3_dispersion_correction["damping"] == "BJ" + assert sec_method.x_ams_grimme_d3_dispersion_correction["s8"] == approx(1.944) + assert sec_method.x_ams_other_parameters["version"] == 4 + assert sec_method.dft.xc_functional.contributions[0].name == "MGGA_XC_TPSS" sec_atom = sec_method.atom_parameters assert len(sec_atom) == 2 assert sec_atom[0].x_ams_radial_points == 3000 assert sec_atom[1].x_ams_nuclear_charge == approx(1.0) assert sec_atom[0].n_valence_electrons == 4 - assert sec_atom[1].charge == approx(0.) - assert sec_atom[0].orbitals[1] == '2S' + assert sec_atom[1].charge == approx(0.0) + assert sec_atom[0].orbitals[1] == "2S" assert sec_atom[1].x_ams_orbital_energies[0].magnitude == approx(-1.01788704e-18) assert sec_atom[0].x_ams_orbital_radii[2] == approx(1.794) assert sec_atom[1].x_ams_energy_sum_eigenvalues.magnitude == approx(-1.01800039e-18) assert sec_atom[0].x_ams_energy_kinetic.magnitude == approx(1.62379128e-16) assert sec_atom[1].x_ams_n_radial_fit_functions == 0 - assert sec_atom[0].label == 'C' + assert sec_atom[0].label == "C" assert sec_atom[1].x_ams_cutoff_valence == approx(23.76) assert sec_atom[0].x_ams_cutoff_core_kinetic == approx(4.36) - assert sec_method.x_ams_run_config['Zlm fitting'] + assert sec_method.x_ams_run_config["Zlm fitting"] sec_system = archive.run[0].system[0] assert sec_system.atoms.positions[2][1].magnitude == approx(2.31103866e-10) @@ -82,23 +82,31 @@ def test_scf(parser): assert sec_scc.energy.xc.value.magnitude == approx(-1.01588269e-17) assert sec_scc.energy.electrostatic.value.magnitude == approx(-8.69562185e-18) sec_charges = sec_scc.charges - assert sec_charges[0].analysis_method == 'Hirshfeld' + assert sec_charges[0].analysis_method == "Hirshfeld" assert sec_charges[2].value[3].magnitude == approx(-1.69830723e-20) assert sec_charges[1].spins[7] == approx(-0.011) - assert sec_charges[3].total.magnitude == 0. - assert sec_charges[-1].analysis_method == 'Mulliken' + assert sec_charges[3].total.magnitude == 0.0 + assert sec_charges[-1].analysis_method == "Mulliken" assert len(sec_charges[-1].spin_projected) == 22 assert sec_charges[-1].spin_projected[2].atom_index == 1 assert sec_charges[-1].spin_projected[5].value.magnitude == approx(3.25882727e-19) assert len(sec_charges[-1].orbital_projected) == 206 - assert sec_charges[-1].orbital_projected[11].value.magnitude == approx(3.25241857e-20) - assert sec_charges[-1].orbital_projected[26].orbital == '2s' + assert sec_charges[-1].orbital_projected[11].value.magnitude == approx( + 3.25241857e-20 + ) + assert sec_charges[-1].orbital_projected[26].orbital == "2s" assert sec_scc.multipoles[0].dipole.total[0] == approx(2.84126561e-30) - assert sec_scc.eigenvalues[0].x_ams_energy_min[0][3].magnitude == approx(-2.51827575e-18) - assert sec_scc.eigenvalues[0].x_ams_energy_max[1][16].magnitude == approx(-2.32112809e-19) - assert sec_scc.eigenvalues[0].occupations[1][14] == 0. + assert sec_scc.eigenvalues[0].x_ams_energy_min[0][3].magnitude == approx( + -2.51827575e-18 + ) + assert sec_scc.eigenvalues[0].x_ams_energy_max[1][16].magnitude == approx( + -2.32112809e-19 + ) + assert sec_scc.eigenvalues[0].occupations[1][14] == 0.0 assert sec_scc.eigenvalues[0].band_gap[0].value.magnitude == approx(4.22895238e-19) - assert sec_scc.eigenvalues[0].band_gap[0].energy_highest_occupied.magnitude == approx(-1.07685695e-18) + assert sec_scc.eigenvalues[0].band_gap[ + 0 + ].energy_highest_occupied.magnitude == approx(-1.07685695e-18) assert sec_scc.eigenvalues[0].band_gap[0].x_ams_conduction_band_index == 15 sec_scfs = sec_scc.scf_iteration @@ -108,7 +116,7 @@ def test_scf(parser): def test_geometry_optimization(parser): archive = EntryArchive() - parser.parse('tests/data/ams/go/phenylrSmall-geoopt.out', archive, None) + parser.parse("tests/data/ams/go/phenylrSmall-geoopt.out", archive, None) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 22 @@ -116,34 +124,56 @@ def test_geometry_optimization(parser): assert sec_sccs[3].energy.xc.value.magnitude == approx(-1.00379617e-17) assert sec_sccs[2].energy.electrostatic.value.magnitude == approx(-8.83926829e-18) assert sec_sccs[14].energy.electronic.kinetic.magnitude == approx(1.07350325e-17) - assert sec_sccs[19].energy.x_ams_fit_error_correction.value.magnitude == approx(-8.0916862e-23) - assert sec_sccs[0].energy.x_ams_v_atomic_def.value.magnitude == approx(-3.6046467e-18) + assert sec_sccs[19].energy.x_ams_fit_error_correction.value.magnitude == approx( + -8.0916862e-23 + ) + assert sec_sccs[0].energy.x_ams_v_atomic_def.value.magnitude == approx( + -3.6046467e-18 + ) assert sec_sccs[2].energy.x_ams_dispersion.value.magnitude == approx(-4.7877583e-20) assert len(sec_sccs[6].scf_iteration) == 11 assert sec_sccs[10].forces.total.value[5][1].magnitude == approx(3.11423748e-11) - assert sec_sccs[20].forces.x_ams_dispersion.value[9][0].magnitude == approx(-6.5909788e-12) - assert sec_sccs[10].forces.x_ams_pair_interactions.value[1][2].magnitude == approx(8.9338246e-09) - assert sec_sccs[8].forces.x_ams_electrostatic.value[6][1].magnitude == approx(-4.2076891e-08) + assert sec_sccs[20].forces.x_ams_dispersion.value[9][0].magnitude == approx( + -6.5909788e-12 + ) + assert sec_sccs[10].forces.x_ams_pair_interactions.value[1][2].magnitude == approx( + 8.9338246e-09 + ) + assert sec_sccs[8].forces.x_ams_electrostatic.value[6][1].magnitude == approx( + -4.2076891e-08 + ) assert sec_sccs[9].forces.x_ams_xc.value[3][2].magnitude == approx(3.04008897e-11) - assert sec_sccs[5].forces.x_ams_electronic_kinetic.value[8][2].magnitude == approx(-3.4639301e-08) - assert sec_sccs[1].forces.x_ams_p_matrix.value[4][0].magnitude == approx(-8.88908833e-09) - assert sec_sccs[4].eigenvalues[0].x_ams_energy_min[0][15].magnitude == approx(-2.84386148e-19) + assert sec_sccs[5].forces.x_ams_electronic_kinetic.value[8][2].magnitude == approx( + -3.4639301e-08 + ) + assert sec_sccs[1].forces.x_ams_p_matrix.value[4][0].magnitude == approx( + -8.88908833e-09 + ) + assert sec_sccs[4].eigenvalues[0].x_ams_energy_min[0][15].magnitude == approx( + -2.84386148e-19 + ) sec_systems = archive.run[0].system assert len(sec_systems) == 22 assert sec_systems[3].atoms.positions[10][1].magnitude == approx(5.81904209e-10) - assert sec_systems[9].atoms.lattice_vectors[1][1].magnitude == approx(7.56032016e-10) + assert sec_systems[9].atoms.lattice_vectors[1][1].magnitude == approx( + 7.56032016e-10 + ) sec_methods = archive.run[0].method assert len(sec_methods) == 1 - assert not sec_methods[0].x_ams_run_config['Store original Bloch functions'] - assert sec_methods[0].atom_parameters[1].x_ams_cutoff_valence_kinetic == approx(24.05) - assert sec_methods[0].electronic.relativity_method == 'scalar_relativistic_atomic_ZORA' + assert not sec_methods[0].x_ams_run_config["Store original Bloch functions"] + assert sec_methods[0].atom_parameters[1].x_ams_cutoff_valence_kinetic == approx( + 24.05 + ) + assert ( + sec_methods[0].electronic.relativity_method == "scalar_relativistic_atomic_ZORA" + ) def test_dos(parser): archive = EntryArchive() - parser.parse('tests/data/ams/dos/NiO-dos.out', archive, None) + parser.parse("tests/data/ams/dos/NiO-dos.out", archive, None) sec_scc = archive.run[0].calculation[0] assert len(sec_scc.dos_electronic) == 2 sec_dos_up = sec_scc.dos_electronic[0] @@ -151,10 +181,10 @@ def test_dos(parser): assert sec_dos_up.spin_channel == 0 and sec_dos_down.spin_channel == 1 assert sec_dos_up.energies[78].magnitude == approx(-8.6717613e-20) assert sec_dos_down.total[0].value.shape == (158,) - assert sec_dos_down.total[0].value[19].magnitude == approx(4.66493971e+14) + assert sec_dos_down.total[0].value[19].magnitude == approx(4.66493971e14) archive = EntryArchive() - parser.parse('tests/data/ams/dos/NiO-dos-restricted.out', archive, None) + parser.parse("tests/data/ams/dos/NiO-dos-restricted.out", archive, None) sec_scc = archive.run[0].calculation[0] len(sec_scc.dos_electronic) == 1 sec_dos = sec_scc.dos_electronic[0] @@ -163,24 +193,38 @@ def test_dos(parser): def test_geometry_optimization_new(parser): archive = EntryArchive() - parser.parse('tests/data/ams/go/EDUSIF.out', archive, None) + parser.parse("tests/data/ams/go/EDUSIF.out", archive, None) sec_scc = archive.run[0].calculation assert len(sec_scc) == 14 assert sec_scc[10].energy.total.value.magnitude == approx(-4.25064334e-15) assert sec_scc[-1].energy.electronic.value.magnitude == approx(-4.31446337e-15) assert sec_scc[-1].energy.electrostatic.value.magnitude == approx(2.31028918e-17) - assert sec_scc[-1].energy.nuclear_repulsion.value.magnitude == approx(4.26346154e-17) - assert sec_scc[-1].energy.x_ams_dispersion.value.magnitude == approx(-1.92033353e-18) + assert sec_scc[-1].energy.nuclear_repulsion.value.magnitude == approx( + 4.26346154e-17 + ) + assert sec_scc[-1].energy.x_ams_dispersion.value.magnitude == approx( + -1.92033353e-18 + ) assert sec_scc[-1].forces.total.value[163][0].magnitude == approx(-1.43919212e-11) - assert sec_scc[-1].forces.x_ams_electronic.value[7][2].magnitude == approx(-2.99480631e-09) - assert sec_scc[-1].forces.x_ams_electrostatic.value[291][1].magnitude == approx(9.48766784e-11) - assert sec_scc[-1].forces.x_ams_nuclear_repulsion.value[3][2].magnitude == approx(-4.79941725e-09) - assert sec_scc[-1].forces.x_ams_dispersion.value[423][1].magnitude == approx(-1.1331013e-11) + assert sec_scc[-1].forces.x_ams_electronic.value[7][2].magnitude == approx( + -2.99480631e-09 + ) + assert sec_scc[-1].forces.x_ams_electrostatic.value[291][1].magnitude == approx( + 9.48766784e-11 + ) + assert sec_scc[-1].forces.x_ams_nuclear_repulsion.value[3][2].magnitude == approx( + -4.79941725e-09 + ) + assert sec_scc[-1].forces.x_ams_dispersion.value[423][1].magnitude == approx( + -1.1331013e-11 + ) assert sec_scc[-1].charges[0].value[21].magnitude == approx(-3.10822267e-21) - assert sec_scc[-1].charges[1].analysis_method == 'Mulliken' + assert sec_scc[-1].charges[1].analysis_method == "Mulliken" assert sec_scc[-1].charges[1].value[29].magnitude == approx(-8.62902976e-20) - assert sec_scc[-1].eigenvalues[0].x_ams_energy_min[0][11].magnitude == approx(-3.34244189e-18) + assert sec_scc[-1].eigenvalues[0].x_ams_energy_min[0][11].magnitude == approx( + -3.34244189e-18 + ) assert sec_scc[-1].eigenvalues[0].occupations[0][775] == approx(2.0) sec_system = archive.run[0].system @@ -191,83 +235,137 @@ def test_geometry_optimization_new(parser): def test_adf_sp(parser): archive = EntryArchive() - parser.parse('tests/data/ams/adf_SP/adf_SP.out', archive, None) + parser.parse("tests/data/ams/adf_SP/adf_SP.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '98925 2021-11-25' - assert sec_run.program.x_ams_engine == 'adf' + assert sec_run.program.version == "98925 2021-11-25" + assert sec_run.program.x_ams_engine == "adf" assert len(sec_run.method) == 1 sec_method = sec_run.method[0] - assert sec_method.dft.xc_functional.contributions[0].name == 'LDA_XC_VWN' + assert sec_method.dft.xc_functional.contributions[0].name == "LDA_XC_VWN" assert sec_method.electronic.n_spin_channels == 1 assert len(sec_run.system) == 1 sec_system = sec_run.system[0] - assert sec_system.atoms.labels[0] == 'O' - assert sec_system.atoms.positions.to('bohr')[1][0].magnitude == approx(-3.1867335262123166) + assert sec_system.atoms.labels[0] == "O" + assert sec_system.atoms.positions.to("bohr")[1][0].magnitude == approx( + -3.1867335262123166 + ) assert len(sec_run.calculation) == 1 sec_calc = sec_run.calculation[0] - assert sec_calc.band_gap[0].energy_highest_occupied.to('hartree').magnitude == approx(-0.2576927526332149) - assert sec_calc.band_gap[0].energy_lowest_unoccupied.to('hartree').magnitude == approx(-0.3054616645218846) - assert sec_calc.energy.fermi.to('hartree').magnitude == approx(-0.28159925821297915) - assert sec_calc.energy.x_ams_orthogonalization.value.to('hartree').magnitude == approx(5.416521358379486e-06) - assert sec_calc.energy.x_ams_orbital_interaction.value.to('hartree').magnitude == approx(-0.921823054134502) - assert sec_calc.energy.x_ams_pauli_coulomb.value.to('hartree').magnitude == approx(-2.492069688604461) - assert sec_calc.energy.x_ams_bond.value.to('hartree').magnitude == approx(-0.25256548879865254) - assert sec_calc.energy.total.value.to('hartree').magnitude == approx(-0.25256548879865254) - assert sec_calc.energy.xc.value.to('hartree').magnitude == approx(-0.25252261177051805) - assert sec_calc.charges[0].value.to('elementary_charge').magnitude[1] == approx(-1.2850914998807639e-08) + assert sec_calc.band_gap[0].energy_highest_occupied.to( + "hartree" + ).magnitude == approx(-0.2576927526332149) + assert sec_calc.band_gap[0].energy_lowest_unoccupied.to( + "hartree" + ).magnitude == approx(-0.3054616645218846) + assert sec_calc.energy.fermi.to("hartree").magnitude == approx(-0.28159925821297915) + assert sec_calc.energy.x_ams_orthogonalization.value.to( + "hartree" + ).magnitude == approx(5.416521358379486e-06) + assert sec_calc.energy.x_ams_orbital_interaction.value.to( + "hartree" + ).magnitude == approx(-0.921823054134502) + assert sec_calc.energy.x_ams_pauli_coulomb.value.to("hartree").magnitude == approx( + -2.492069688604461 + ) + assert sec_calc.energy.x_ams_bond.value.to("hartree").magnitude == approx( + -0.25256548879865254 + ) + assert sec_calc.energy.total.value.to("hartree").magnitude == approx( + -0.25256548879865254 + ) + assert sec_calc.energy.xc.value.to("hartree").magnitude == approx( + -0.25252261177051805 + ) + assert sec_calc.charges[0].value.to("elementary_charge").magnitude[1] == approx( + -1.2850914998807639e-08 + ) def test_band_go(parser): archive = EntryArchive() - parser.parse('tests/data/ams/band_pbe_GF/band_GF.out', archive, None) + parser.parse("tests/data/ams/band_pbe_GF/band_GF.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '98925 2021-11-25' - assert sec_run.program.x_ams_engine == 'band' + assert sec_run.program.version == "98925 2021-11-25" + assert sec_run.program.x_ams_engine == "band" assert len(sec_run.system) == 1 sec_system = sec_run.system[0] - assert sec_system.atoms.labels == ['Cs', 'Cl'] - assert sec_system.atoms.positions.to('bohr').magnitude[1][2] == approx(-3.892835816729087) - assert sec_system.atoms.lattice_vectors.to('bohr').magnitude[1][1] == approx(7.785671633458174) + assert sec_system.atoms.labels == ["Cs", "Cl"] + assert sec_system.atoms.positions.to("bohr").magnitude[1][2] == approx( + -3.892835816729087 + ) + assert sec_system.atoms.lattice_vectors.to("bohr").magnitude[1][1] == approx( + 7.785671633458174 + ) assert np.all(sec_system.atoms.periodic) assert len(sec_run.calculation) == 1 sec_calc = sec_run.calculation[0] - assert sec_calc.energy.total.value.to('hartree').magnitude == approx(-0.23505514020774143) - assert sec_calc.forces.total.value.to('hartree / bohr').magnitude[0][0] == approx(3.132257252867465e-22) - assert sec_calc.band_gap[0].value.to('hartree').magnitude == approx(0.19174663326676872) - assert sec_calc.band_gap[0].energy_highest_occupied.to('hartree').magnitude == approx(-0.31612650570712414) - assert sec_calc.band_gap[0].energy_lowest_unoccupied.to('hartree').magnitude == approx(-0.12437987244035544) - assert sec_calc.eigenvalues[0].energies.to('hartree').magnitude[0][2][18] == approx(0.7009522244059739) + assert sec_calc.energy.total.value.to("hartree").magnitude == approx( + -0.23505514020774143 + ) + assert sec_calc.forces.total.value.to("hartree / bohr").magnitude[0][0] == approx( + 3.132257252867465e-22 + ) + assert sec_calc.band_gap[0].value.to("hartree").magnitude == approx( + 0.19174663326676872 + ) + assert sec_calc.band_gap[0].energy_highest_occupied.to( + "hartree" + ).magnitude == approx(-0.31612650570712414) + assert sec_calc.band_gap[0].energy_lowest_unoccupied.to( + "hartree" + ).magnitude == approx(-0.12437987244035544) + assert sec_calc.eigenvalues[0].energies.to("hartree").magnitude[0][2][18] == approx( + 0.7009522244059739 + ) assert sec_calc.eigenvalues[0].occupations[0][3] == approx(1.9999999999999984) - assert sec_calc.dos_electronic[0].energies.to('hartree').magnitude[78] == approx(0.04238290440428649) - assert sec_calc.dos_electronic[0].total[0].value.to('1 / hartree').magnitude[24] == approx(0.5740645825775643) - assert sec_calc.charges[0].value.to('elementary_charge').magnitude[1] == approx(-0.2880699228617729) - assert sec_calc.charges[1].value.to('elementary_charge').magnitude[0] == approx(0.6258874446060609) + assert sec_calc.dos_electronic[0].energies.to("hartree").magnitude[78] == approx( + 0.04238290440428649 + ) + assert sec_calc.dos_electronic[0].total[0].value.to("1 / hartree").magnitude[ + 24 + ] == approx(0.5740645825775643) + assert sec_calc.charges[0].value.to("elementary_charge").magnitude[1] == approx( + -0.2880699228617729 + ) + assert sec_calc.charges[1].value.to("elementary_charge").magnitude[0] == approx( + 0.6258874446060609 + ) def test_dftb_md(parser): archive = EntryArchive() - parser.parse('tests/data/ams/dftb_MD/dftb_MD.out', archive, None) + parser.parse("tests/data/ams/dftb_MD/dftb_MD.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.x_ams_engine == 'dftb' + assert sec_run.program.x_ams_engine == "dftb" sec_system = sec_run.system assert len(sec_system) == 1001 - assert sec_system[772].atoms.positions.to('bohr').magnitude[10][1] == approx(-3.28424033) - assert sec_system[47].atoms.labels[8] == 'H' - assert sec_system[144].atoms.velocities.to('bohr / fs').magnitude[9][2] == approx(-0.0024493607814810845) + assert sec_system[772].atoms.positions.to("bohr").magnitude[10][1] == approx( + -3.28424033 + ) + assert sec_system[47].atoms.labels[8] == "H" + assert sec_system[144].atoms.velocities.to("bohr / fs").magnitude[9][2] == approx( + -0.0024493607814810845 + ) sec_calc = sec_run.calculation assert len(sec_calc) == 1001 - assert sec_calc[20].charges[0].value.to('elementary_charge').magnitude[6] == approx(0.35322952840842603) - assert sec_calc[94].energy.total.potential.to('hartree').magnitude == approx(-23.066413874869223) - assert sec_calc[502].energy.total.kinetic.to('hartree').magnitude == approx(0.04109780793407973) - assert sec_calc[687].time.to('fs').magnitude == approx(171.75) + assert sec_calc[20].charges[0].value.to("elementary_charge").magnitude[6] == approx( + 0.35322952840842603 + ) + assert sec_calc[94].energy.total.potential.to("hartree").magnitude == approx( + -23.066413874869223 + ) + assert sec_calc[502].energy.total.kinetic.to("hartree").magnitude == approx( + 0.04109780793407973 + ) + assert sec_calc[687].time.to("fs").magnitude == approx(171.75) assert sec_calc[341].temperature.magnitude == approx(740.3622235664087) diff --git a/tests/test_atkparser.py b/tests/test_atkparser.py index 7ec678c7..1b9347ab 100644 --- a/tests/test_atkparser.py +++ b/tests/test_atkparser.py @@ -26,26 +26,26 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return ATKParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/atk/Si2.nc', archive, None) + parser.parse("tests/data/atk/Si2.nc", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'ATK 2016.0.3' + assert sec_run.program.version == "ATK 2016.0.3" sec_method = sec_run.method[0] assert sec_method.electronic.smearing.width == 300 - assert sec_method.dft.xc_functional.correlation[0].name == 'LDA_C_PZ' + assert sec_method.dft.xc_functional.correlation[0].name == "LDA_C_PZ" sec_system = sec_run.system[0] assert sec_system.atoms.lattice_vectors[1][0].magnitude == approx(2.7153e-10) assert sec_system.atoms.positions[1][0].magnitude == approx(1.35765e-10) - assert sec_system.atoms.labels == ['Si', 'Si'] + assert sec_system.atoms.labels == ["Si", "Si"] sec_scc = sec_run.calculation[0] assert sec_scc.energy.total.value.magnitude == approx(-5.73249938e-17) diff --git a/tests/test_bigdftparser.py b/tests/test_bigdftparser.py index ab59f562..836888d3 100644 --- a/tests/test_bigdftparser.py +++ b/tests/test_bigdftparser.py @@ -26,22 +26,22 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return BigDFTParser() def test_basic(parser): archive = EntryArchive() - parser.parse('tests/data/bigdft/n2_output.out', archive, None) + parser.parse("tests/data/bigdft/n2_output.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '1.8' + assert sec_run.program.version == "1.8" sec_method = sec_run.method[0] assert sec_method.scf.n_max_iteration == 50 assert sec_method.electronic.n_spin_channels == 1 - assert sec_method.dft.xc_functional.contributions[0].name == 'LDA_XC_TETER93' + assert sec_method.dft.xc_functional.contributions[0].name == "LDA_XC_TETER93" sec_system = sec_run.system[0] assert sec_system.atoms.positions[0][2].magnitude == approx(3.60977554e-10) @@ -55,24 +55,26 @@ def test_basic(parser): assert len(sec_scfs) == 11 assert sec_scfs[3].energy.total.value.magnitude == approx(-8.66861188e-17) assert sec_scfs[6].energy.xc_potential.value.magnitude == approx(-2.7272656e-17) - assert sec_scfs[7].energy.kinetic_electronic.value.magnitude == approx(6.34717211e-17) + assert sec_scfs[7].energy.kinetic_electronic.value.magnitude == approx( + 6.34717211e-17 + ) def test_1(parser): archive = EntryArchive() - parser.parse('tests/data/bigdft/periodic.out', archive, None) + parser.parse("tests/data/bigdft/periodic.out", archive, None) def test_2(parser): archive = EntryArchive() - parser.parse('tests/data/bigdft/abinit_1.out', archive, None) + parser.parse("tests/data/bigdft/abinit_1.out", archive, None) def test_3(parser): archive = EntryArchive() - parser.parse('tests/data/bigdft/libxc_101130.out', archive, None) + parser.parse("tests/data/bigdft/libxc_101130.out", archive, None) def test_4(parser): archive = EntryArchive() - parser.parse('tests/data/bigdft/output.out', archive, None) + parser.parse("tests/data/bigdft/output.out", archive, None) diff --git a/tests/test_castepparser.py b/tests/test_castepparser.py index 963adfae..d7f82396 100644 --- a/tests/test_castepparser.py +++ b/tests/test_castepparser.py @@ -27,28 +27,30 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return CastepParser() def test_single_point(parser): archive = EntryArchive() - parser.parse('tests/data/castep/Si8.castep', archive, None) + parser.parse("tests/data/castep/Si8.castep", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '16.1' - assert sec_run.x_castep_constants_reference == 'CODATA 2010' + assert sec_run.program.version == "16.1" + assert sec_run.x_castep_constants_reference == "CODATA 2010" assert sec_run.time_run.date_start.magnitude == 1455286325.0 sec_method = sec_run.method[0] - assert sec_method.electrons_representation[0].basis_set[0].cutoff.to('eV').magnitude == approx(100) - assert sec_method.electrons_representation[0].native_tier == 'FINE' + assert sec_method.electrons_representation[0].basis_set[0].cutoff.to( + "eV" + ).magnitude == approx(100) + assert sec_method.electrons_representation[0].native_tier == "FINE" assert sec_method.electronic.n_spin_channels == 1 - assert sec_method.dft.xc_functional.correlation[0].name == 'GGA_C_PBE' - assert sec_method.electronic.smearing.kind == 'gaussian' + assert sec_method.dft.xc_functional.correlation[0].name == "GGA_C_PBE" + assert sec_method.electronic.smearing.kind == "gaussian" - assert archive.workflow2.m_def.name == 'SinglePoint' + assert archive.workflow2.m_def.name == "SinglePoint" sec_scc = sec_run.calculation[0] assert np.shape(sec_scc.forces.total.value) == (8, 3) @@ -63,7 +65,9 @@ def test_single_point(parser): sec_system = sec_run.system[0] assert sec_system.atoms.positions[2][1].magnitude == approx(2.715e-10) - assert sec_system.x_castep_section_atom_positions[0].x_castep_cell_length_a == approx(5.43e-10) + assert sec_system.x_castep_section_atom_positions[ + 0 + ].x_castep_cell_length_a == approx(5.43e-10) assert len(sec_method.atom_parameters) == 1 @@ -71,24 +75,35 @@ def test_single_point(parser): assert len(sec_mulliken.value) == 8 assert sec_mulliken.orbital_projected[17].value.magnitude == 2.66 - assert sec_run.x_castep_section_density_mixing_parameters[0].x_castep_density_mixing_length == 20 + assert ( + sec_run.x_castep_section_density_mixing_parameters[ + 0 + ].x_castep_density_mixing_length + == 20 + ) assert sec_run.x_castep_section_time[0].x_castep_finalisation_time == 0.01 def test_dmd(parser): archive = EntryArchive() - parser.parse('tests/data/castep/TiO2-geom.castep', archive, None) + parser.parse("tests/data/castep/TiO2-geom.castep", archive, None) sec_workflow = archive.workflow2 - assert sec_workflow.method.method == 'damped MD' - assert sec_workflow.method.convergence_tolerance_force_maximum.magnitude == approx(8.01088317e-11) + assert sec_workflow.method.method == "damped MD" + assert sec_workflow.method.convergence_tolerance_force_maximum.magnitude == approx( + 8.01088317e-11 + ) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 23 assert sec_sccs[7].energy.total.value.magnitude == approx(-3.67496146e-16) assert len(sec_sccs[20].scf_iteration) == 13 - assert sec_sccs[17].scf_iteration[3].energy.total.value.magnitude == approx(-3.67497215e-16) - assert sec_sccs[3].forces.total.value[0][1].magnitude == approx(-4.49314415e-10,) + assert sec_sccs[17].scf_iteration[3].energy.total.value.magnitude == approx( + -3.67497215e-16 + ) + assert sec_sccs[3].forces.total.value[0][1].magnitude == approx( + -4.49314415e-10, + ) assert sec_sccs[22].energy.total.value.magnitude == approx(-3.67497218e-16) sec_systems = archive.run[0].system @@ -98,21 +113,27 @@ def test_dmd(parser): def test_md(parser): archive = EntryArchive() - parser.parse('tests/data/castep/Si8-md-NPT.castep', archive, None) + parser.parse("tests/data/castep/Si8-md-NPT.castep", archive, None) sec_workflow = archive.workflow2 - assert sec_workflow.method.thermodynamic_ensemble == 'NPT' - assert sec_workflow.method.x_castep_thermostat_type == 'Nose-Hoover chain thermostat' - assert sec_workflow.method.x_castep_frame_energy_tolerance.magnitude == approx(1.60217663e-24) + assert sec_workflow.method.thermodynamic_ensemble == "NPT" + assert ( + sec_workflow.method.x_castep_thermostat_type == "Nose-Hoover chain thermostat" + ) + assert sec_workflow.method.x_castep_frame_energy_tolerance.magnitude == approx( + 1.60217663e-24 + ) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 13 assert sec_sccs[2].energy.total.value.magnitude == approx(-1.37059981e-16) - assert sec_sccs[6].stress.total.value[2][1].magnitude == approx(4.06626e+09) - assert sec_sccs[9].thermodynamics[0].pressure.magnitude == approx(1.111e+09) + assert sec_sccs[6].stress.total.value[2][1].magnitude == approx(4.06626e09) + assert sec_sccs[9].thermodynamics[0].pressure.magnitude == approx(1.111e09) assert sec_sccs[11].energy.total_t0.value.magnitude == approx(-1.37069057e-16) assert len(sec_sccs[12].scf_iteration) == 7 - assert sec_sccs[7].scf_iteration[3].energy.change.magnitude == approx(-1.90981043e-21) + assert sec_sccs[7].scf_iteration[3].energy.change.magnitude == approx( + -1.90981043e-21 + ) assert sec_sccs[0].time_calculation.magnitude == approx(2.83) assert sec_sccs[1].scf_iteration[4].time_physical.magnitude == approx(3.91) assert sec_sccs[2].scf_iteration[1].time_calculation.magnitude == approx(0.28) @@ -123,12 +144,14 @@ def test_md(parser): assert len(sec_systems) == 13 assert sec_systems[0].atoms.positions[7][2].magnitude == approx(1.3575e-10) assert sec_systems[1].atoms.velocities[1][1].magnitude == approx(324.536) - assert sec_systems[12].atoms.lattice_vectors[2][2].magnitude == approx(5.5475876e-10) + assert sec_systems[12].atoms.lattice_vectors[2][2].magnitude == approx( + 5.5475876e-10 + ) def test_eigenvalues(parser): archive = EntryArchive() - parser.parse('tests/data/castep/Fe.castep', archive, None) + parser.parse("tests/data/castep/Fe.castep", archive, None) sec_eigenvalues = archive.run[0].calculation[0].eigenvalues[0] assert np.shape(sec_eigenvalues.energies[1][117]) == (6,) @@ -138,28 +161,30 @@ def test_eigenvalues(parser): def test_bandstructure(parser): archive = EntryArchive() - parser.parse('tests/data/castep/Dispersions/Si2.castep', archive, None) + parser.parse("tests/data/castep/Dispersions/Si2.castep", archive, None) - sec_band_segment = archive.run[0].calculation[0].band_structure_electronic[0].segment + sec_band_segment = ( + archive.run[0].calculation[0].band_structure_electronic[0].segment + ) assert len(sec_band_segment) == 5 - assert sec_band_segment[3].endpoints_labels == ['X', 'W'] + assert sec_band_segment[3].endpoints_labels == ["X", "W"] assert sec_band_segment[1].energies[0][-1][12].magnitude == approx(2.17418526e-18) assert sec_band_segment[4].kpoints[2][1] == 0.300000 sec_method = archive.run[0].method[0] - assert sec_method.electrons_representation[0].native_tier == 'MEDIUM' + assert sec_method.electrons_representation[0].native_tier == "MEDIUM" def test_vibration(parser): archive = EntryArchive() - parser.parse('tests/data/castep/BC2N-Pmm2-Raman.castep', archive, None) + parser.parse("tests/data/castep/BC2N-Pmm2-Raman.castep", archive, None) sec_vibration = archive.run[0].calculation[0].vibrational_frequencies assert len(sec_vibration) == 2 - assert sec_vibration[1].value[2].to('1/cm').magnitude == approx(0.461821) + assert sec_vibration[1].value[2].to("1/cm").magnitude == approx(0.461821) assert sec_vibration[0].raman.intensity[3] == approx(21.0162567) assert sec_vibration[1].infrared.intensity[6] == approx(2.7078705) - assert sec_vibration[0].raman.activity[10] == 'Y' + assert sec_vibration[0].raman.activity[10] == "Y" sec_raman = archive.run[0].x_castep_section_raman_tensor assert len(sec_raman) == 12 @@ -168,9 +193,9 @@ def test_vibration(parser): def test_tss(parser): archive = EntryArchive() - parser.parse('tests/data/castep/h2-lst.castep', archive, None) + parser.parse("tests/data/castep/h2-lst.castep", archive, None) - assert archive.workflow2.m_def.name == 'GeometryOptimization' + assert archive.workflow2.m_def.name == "GeometryOptimization" sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 27 @@ -179,9 +204,9 @@ def test_tss(parser): def test_bfgs(parser): archive = EntryArchive() - parser.parse('tests/data/castep/Si2_opt.castep', archive, None) + parser.parse("tests/data/castep/Si2_opt.castep", archive, None) - assert archive.workflow2.m_def.name == 'GeometryOptimization' + assert archive.workflow2.m_def.name == "GeometryOptimization" sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 9 diff --git a/tests/test_charmmparser.py b/tests/test_charmmparser.py index 3dc7d811..0c691a4f 100644 --- a/tests/test_charmmparser.py +++ b/tests/test_charmmparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return CharmmParser() @@ -34,13 +34,13 @@ def parser(): def test_basic(parser): archive = EntryArchive() - parser.parse('tests/data/charmm/brbtest/brbtest.out', archive, None) + parser.parse("tests/data/charmm/brbtest/brbtest.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'Free Version 41b2 February 15, 2017' + assert sec_run.program.version == "Free Version 41b2 February 15, 2017" sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels[1] == 'C' + assert sec_system.atoms.labels[1] == "C" assert sec_system.atoms.positions[10][1].magnitude == approx(-7.7269e-11) sec_scc = sec_run.calculation[0] @@ -50,11 +50,11 @@ def test_basic(parser): def test_1(parser): archive = EntryArchive() - parser.parse('tests/data/charmm/enertest/enertest.out', archive, None) + parser.parse("tests/data/charmm/enertest/enertest.out", archive, None) sec_system = archive.run[0].system[0] assert len(sec_system.atoms.positions) == 580 - assert sec_system.atoms.labels[86] == 'O' + assert sec_system.atoms.labels[86] == "O" assert sec_system.atoms.positions[11][1].magnitude == approx(-4.005e-10) sec_sccs = archive.run[0].calculation diff --git a/tests/test_cp2kparser.py b/tests/test_cp2kparser.py index 155edd49..1fe1bf0f 100644 --- a/tests/test_cp2kparser.py +++ b/tests/test_cp2kparser.py @@ -26,41 +26,68 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return CP2KParser() def test_single_point(parser): archive = EntryArchive() - parser.parse('tests/data/cp2k/single_point/si_bulk8.out', archive, None) + parser.parse("tests/data/cp2k/single_point/si_bulk8.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'CP2K version 2.6.2' - assert sec_run.x_cp2k_global_settings.get('run_type') == 'ENERGY_FORCE' + assert sec_run.program.version == "CP2K version 2.6.2" + assert sec_run.x_cp2k_global_settings.get("run_type") == "ENERGY_FORCE" assert sec_run.x_cp2k_section_startinformation[0].x_cp2k_start_id == 8212 - assert sec_run.x_cp2k_section_end_information[0].x_cp2k_end_time == '2016-02-08 22:11:17.875' - assert sec_run.x_cp2k_program_information.get('svn_revision') == 'svn:15893' + assert ( + sec_run.x_cp2k_section_end_information[0].x_cp2k_end_time + == "2016-02-08 22:11:17.875" + ) + assert sec_run.x_cp2k_program_information.get("svn_revision") == "svn:15893" sec_input = sec_run.x_cp2k_section_input[0] - assert sec_input.x_cp2k_section_input_GLOBAL[0].x_cp2k_input_GLOBAL_PROJECT_NAME == 'Si_bulk8' - sec_force_eval_dft = sec_input.x_cp2k_section_input_FORCE_EVAL[0].x_cp2k_section_input_FORCE_EVAL_DFT[0] - assert sec_force_eval_dft.x_cp2k_section_input_FORCE_EVAL_DFT_SCF[0].x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_SCF == '1.0E-7' + assert ( + sec_input.x_cp2k_section_input_GLOBAL[0].x_cp2k_input_GLOBAL_PROJECT_NAME + == "Si_bulk8" + ) + sec_force_eval_dft = sec_input.x_cp2k_section_input_FORCE_EVAL[ + 0 + ].x_cp2k_section_input_FORCE_EVAL_DFT[0] + assert ( + sec_force_eval_dft.x_cp2k_section_input_FORCE_EVAL_DFT_SCF[ + 0 + ].x_cp2k_input_FORCE_EVAL_DFT_SCF_EPS_SCF + == "1.0E-7" + ) sec_method = sec_run.method[0] sec_basis_sets = sec_method.electrons_representation[0].basis_set assert sec_basis_sets[0].cutoff.magnitude == approx(6.53961708e-16) - assert sec_basis_sets[1].atom_centered[0].name == 'DZVP-GTH-PADE' - assert sec_method.scf.threshold_energy_change.magnitude == approx(4.35974472220717e-25) - assert sec_method.dft.xc_functional.contributions[0].name == 'LDA_XC_TETER93' + assert sec_basis_sets[1].atom_centered[0].name == "DZVP-GTH-PADE" + assert sec_method.scf.threshold_energy_change.magnitude == approx( + 4.35974472220717e-25 + ) + assert sec_method.dft.xc_functional.contributions[0].name == "LDA_XC_TETER93" sec_qs_settings = sec_method.x_cp2k_section_quickstep_settings[0] - assert sec_qs_settings.x_cp2k_planewave_cutoff == 150. - sec_atom_kind = sec_qs_settings.x_cp2k_section_atomic_kinds[0].x_cp2k_section_atomic_kind[0] - assert sec_atom_kind.x_cp2k_kind_number_of_atoms == '8' - assert sec_atom_kind.x_cp2k_section_kind_basis_set[0].x_cp2k_basis_set_norm_type == 2 - assert sec_qs_settings.x_cp2k_section_total_numbers[0].x_cp2k_cartesian_basis_functions == 112 - assert sec_qs_settings.x_cp2k_section_maximum_angular_momentum[0].x_cp2k_orbital_basis_functions == 2 + assert sec_qs_settings.x_cp2k_planewave_cutoff == 150.0 + sec_atom_kind = sec_qs_settings.x_cp2k_section_atomic_kinds[ + 0 + ].x_cp2k_section_atomic_kind[0] + assert sec_atom_kind.x_cp2k_kind_number_of_atoms == "8" + assert ( + sec_atom_kind.x_cp2k_section_kind_basis_set[0].x_cp2k_basis_set_norm_type == 2 + ) + assert ( + sec_qs_settings.x_cp2k_section_total_numbers[0].x_cp2k_cartesian_basis_functions + == 112 + ) + assert ( + sec_qs_settings.x_cp2k_section_maximum_angular_momentum[ + 0 + ].x_cp2k_orbital_basis_functions + == 2 + ) assert sec_method.atom_parameters[0].atom_number == 14 assert len(sec_run.calculation) == 1 @@ -68,28 +95,34 @@ def test_single_point(parser): assert sec_scc.energy.total.value.magnitude == approx(-1.36450791e-16) assert sec_scc.forces.total.value[4][1].magnitude == approx(-8.2387235e-16) assert len(sec_scc.scf_iteration) == 10 - assert sec_scc.scf_iteration[1].energy.total.value.magnitude == approx(-1.35770357e-16) + assert sec_scc.scf_iteration[1].energy.total.value.magnitude == approx( + -1.35770357e-16 + ) sec_system = sec_run.system[0] - assert sec_system.atoms.labels == ['Si'] * 8 + assert sec_system.atoms.labels == ["Si"] * 8 assert sec_system.atoms.positions[6][2].magnitude == approx(4.073023e-10) assert sec_system.atoms.lattice_vectors[2][2].magnitude == approx(5.431e-10) assert False not in sec_system.atoms.periodic - assert archive.workflow2.m_def.name == 'SinglePoint' + assert archive.workflow2.m_def.name == "SinglePoint" def test_pdos(parser): archive = EntryArchive() - parser.parse('tests/data/cp2k/graphene_15x15_pdos/Grafene15x15-alone-smear-cell-opt.out', archive, None) + parser.parse( + "tests/data/cp2k/graphene_15x15_pdos/Grafene15x15-alone-smear-cell-opt.out", + archive, + None, + ) assert len(archive.run) == 1 sec_run = archive.run[-1] - assert sec_run.program.version == 'CP2K version 6.1' - assert sec_run.method[-1].dft.xc_functional.exchange[0].name == 'MGGA_X_TPSS' - assert sec_run.method[-1].dft.xc_functional.exchange[1].name == 'GGA_X_PBE' - assert sec_run.method[-1].dft.xc_functional.correlation[0].name == 'MGGA_C_TPSS' - assert sec_run.method[-1].dft.xc_functional.correlation[1].name == 'GGA_C_PBE' + assert sec_run.program.version == "CP2K version 6.1" + assert sec_run.method[-1].dft.xc_functional.exchange[0].name == "MGGA_X_TPSS" + assert sec_run.method[-1].dft.xc_functional.exchange[1].name == "GGA_X_PBE" + assert sec_run.method[-1].dft.xc_functional.correlation[0].name == "MGGA_C_TPSS" + assert sec_run.method[-1].dft.xc_functional.correlation[1].name == "GGA_C_PBE" sec_scc = sec_run.calculation assert len(sec_scc) == 1 @@ -104,38 +137,58 @@ def test_pdos(parser): assert len(sec_dos[0].orbital_projected) == 9 assert sec_dos[1].n_energies == 3713 assert len(sec_dos[0].orbital_projected) == len(sec_dos[1].orbital_projected) - assert sec_dos[0].energy_fermi.to('hartree').magnitude == approx(-0.16863) + assert sec_dos[0].energy_fermi.to("hartree").magnitude == approx(-0.16863) # Storing original histogram assert sec_scc[0].x_cp2k_pdos is not None assert len(sec_scc[0].x_cp2k_pdos) == 2 - assert sec_scc[0].x_cp2k_pdos[0].x_cp2k_gaussian_width.to('eV').magnitude == approx(0.5) - assert sec_scc[0].x_cp2k_pdos[0].x_cp2k_gaussian_delta_energy.to('eV').magnitude == approx(0.01) + assert sec_scc[0].x_cp2k_pdos[0].x_cp2k_gaussian_width.to("eV").magnitude == approx( + 0.5 + ) + assert sec_scc[0].x_cp2k_pdos[0].x_cp2k_gaussian_delta_energy.to( + "eV" + ).magnitude == approx(0.01) assert len(sec_scc[0].x_cp2k_pdos[0].x_cp2k_pdos_histogram_orbital) == 9 - assert sec_scc[0].x_cp2k_pdos[0].x_cp2k_pdos_histogram_orbital == ['s', 'py', 'pz', 'px', 'd-2', 'd-1', 'd0', 'd+1', 'd+2'] + assert sec_scc[0].x_cp2k_pdos[0].x_cp2k_pdos_histogram_orbital == [ + "s", + "py", + "pz", + "px", + "d-2", + "d-1", + "d0", + "d+1", + "d+2", + ] # Testing values dos_values = sec_dos[0].orbital_projected[2] - assert dos_values.atom_label == 'C' - assert dos_values.orbital == 'pz' - assert dos_values.value.to('1/eV').magnitude[1050] == approx(1.2619316298909414e-05) - assert (dos_values.value.to('1/eV').magnitude > 0).all() + assert dos_values.atom_label == "C" + assert dos_values.orbital == "pz" + assert dos_values.value.to("1/eV").magnitude[1050] == approx(1.2619316298909414e-05) + assert (dos_values.value.to("1/eV").magnitude > 0).all() def test_geometry_optimization(parser): archive = EntryArchive() - parser.parse('tests/data/cp2k/geometry_optimization/H2O.out', archive, None) + parser.parse("tests/data/cp2k/geometry_optimization/H2O.out", archive, None) sec_workflow = archive.workflow2 - assert sec_workflow.method.method == 'conjugate gradient' + assert sec_workflow.method.method == "conjugate gradient" sec_opt = sec_workflow.x_cp2k_section_geometry_optimization[0] assert len(sec_opt.x_cp2k_section_geometry_optimization_step) == 11 - assert sec_opt.x_cp2k_section_geometry_optimization_step[2].x_cp2k_optimization_rms_gradient == approx(1.0992366882757706e-10) - assert sec_opt.x_cp2k_section_geometry_optimization_step[-1].x_cp2k_optimization_energy_change == approx(-2.306304958047593e-25) + assert sec_opt.x_cp2k_section_geometry_optimization_step[ + 2 + ].x_cp2k_optimization_rms_gradient == approx(1.0992366882757706e-10) + assert sec_opt.x_cp2k_section_geometry_optimization_step[ + -1 + ].x_cp2k_optimization_energy_change == approx(-2.306304958047593e-25) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 13 - assert sec_sccs[7].energy.xc.value.to('hartree').magnitude == approx(-4.1274870248) + assert sec_sccs[7].energy.xc.value.to("hartree").magnitude == approx(-4.1274870248) assert len(sec_sccs[2].scf_iteration) == 6 - assert sec_sccs[11].scf_iteration[-1].energy.total.value.to('hartree').magnitude == approx(-17.1646260706) + assert sec_sccs[11].scf_iteration[-1].energy.total.value.to( + "hartree" + ).magnitude == approx(-17.1646260706) assert sec_sccs[1].scf_iteration[1].time_calculation.magnitude == approx(0.5) assert sec_sccs[2].time_physical.magnitude == approx(14.4) assert sec_sccs[3].scf_iteration[3].time_physical.magnitude == approx(16.3) @@ -143,26 +196,36 @@ def test_geometry_optimization(parser): sec_systems = archive.run[0].system assert len(sec_systems) == 13 - assert sec_systems[6].atoms.positions[1][1].to('angstrom').magnitude == approx(2.2567157451) + assert sec_systems[6].atoms.positions[1][1].to("angstrom").magnitude == approx( + 2.2567157451 + ) def test_molecular_dynamics(parser): archive = EntryArchive() - parser.parse('tests/data/cp2k/molecular_dynamics/H2O-32.out', archive, None) + parser.parse("tests/data/cp2k/molecular_dynamics/H2O-32.out", archive, None) sec_workflow = archive.workflow2 - assert sec_workflow.method.thermodynamic_ensemble == 'NVE' - assert sec_workflow.method.x_cp2k_section_md_settings[0].x_cp2k_md_print_frequency == 1 + assert sec_workflow.method.thermodynamic_ensemble == "NVE" + assert ( + sec_workflow.method.x_cp2k_section_md_settings[0].x_cp2k_md_print_frequency == 1 + ) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 11 assert len(sec_sccs[6].scf_iteration) == 7 - assert sec_sccs[3].energy.total.value.to('hartree').magnitude == approx(-34.32799897809764) - assert sec_sccs[9].energy.kinetic.value.to('hartree').magnitude == approx(0.005371243) + assert sec_sccs[3].energy.total.value.to("hartree").magnitude == approx( + -34.32799897809764 + ) + assert sec_sccs[9].energy.kinetic.value.to("hartree").magnitude == approx( + 0.005371243 + ) assert sec_sccs[7].temperature.magnitude == approx(230.324748558) assert sec_sccs[1].time_physical.magnitude == approx(5.2) assert sec_sccs[3].time_calculation.magnitude == approx(2.0) sec_systems = archive.run[0].system assert len(sec_systems) == 11 - assert sec_systems[5].atoms.positions[4][0].to('angstrom').magnitude == approx(0.5824842170) + assert sec_systems[5].atoms.positions[4][0].to("angstrom").magnitude == approx( + 0.5824842170 + ) diff --git a/tests/test_cpmdparser.py b/tests/test_cpmdparser.py index 633987f2..9d3ca47f 100644 --- a/tests/test_cpmdparser.py +++ b/tests/test_cpmdparser.py @@ -26,25 +26,25 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return CPMDParser() def test_single_point(parser): archive = EntryArchive() - parser.parse('tests/data/cpmd/single_point/output.out', archive, None) + parser.parse("tests/data/cpmd/single_point/output.out", archive, None) run = archive.run[0] - assert run.program.version == '4.1-rUnversioned directory' - assert run.time_run.date_start > 0. + assert run.program.version == "4.1-rUnversioned directory" + assert run.time_run.date_start > 0.0 sec_info = run.x_cpmd_section_start_information[0] - assert sec_info.x_cpmd_compilation_date == 'Jun 22 2016 -- 12:41:05' + assert sec_info.x_cpmd_compilation_date == "Jun 22 2016 -- 12:41:05" assert sec_info.x_cpmd_process_id == 32589 - assert sec_info.x_cpmd_input_filename == 'input.inp' + assert sec_info.x_cpmd_input_filename == "input.inp" sec_system = run.system - assert sec_system[0].atoms.labels == ['H', 'H'] + assert sec_system[0].atoms.labels == ["H", "H"] assert sec_system[0].atoms.positions[1][2].magnitude == approx(3.99999974e-10) assert sec_system[0].atoms.lattice_vectors[2][2].magnitude == approx(7.99999524e-10) @@ -53,14 +53,21 @@ def test_single_point(parser): assert sec_calc[0].energy.xc.value.magnitude == approx(-2.50324989e-18) sec_method = run.method - assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to('Ry').magnitude == approx(70.0) - assert sec_method[0].x_cpmd_simulation_parameters['TIME STEP FOR ELECTRONS'] == 5.0 - assert sec_method[0].x_cpmd_simulation_parameters['MAXIMUM NUMBER OF ITERATIONS FOR SC'] == 10000 + assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to( + "Ry" + ).magnitude == approx(70.0) + assert sec_method[0].x_cpmd_simulation_parameters["TIME STEP FOR ELECTRONS"] == 5.0 + assert ( + sec_method[0].x_cpmd_simulation_parameters[ + "MAXIMUM NUMBER OF ITERATIONS FOR SC" + ] + == 10000 + ) def test_geometry_optimization(parser): archive = EntryArchive() - parser.parse('tests/data/cpmd/geo_opt/output.out', archive, None) + parser.parse("tests/data/cpmd/geo_opt/output.out", archive, None) sec_system = archive.run[0].system assert len(sec_system) == 5 @@ -70,8 +77,12 @@ def test_geometry_optimization(parser): assert sec_calc[2].energy.total.value.magnitude == approx(-4.93913736e-18) assert sec_calc[4].energy.electrostatic.value.magnitude == approx(-2.14706759e-18) assert sec_calc[4].forces.total.value[1][2].magnitude == approx(1.09986959e-23) - assert sec_calc[2].scf_iteration[0].energy.total.value.magnitude == approx(-4.93903272e-18) - assert sec_calc[3].scf_iteration[4].energy.change.magnitude == approx(-6.80556151e-30) + assert sec_calc[2].scf_iteration[0].energy.total.value.magnitude == approx( + -4.93903272e-18 + ) + assert sec_calc[3].scf_iteration[4].energy.change.magnitude == approx( + -6.80556151e-30 + ) assert sec_calc[2].time_calculation.magnitude == approx(1.13) assert sec_calc[3].time_physical.magnitude == approx(5.88) assert sec_calc[1].scf_iteration[6].time_physical.magnitude == approx(3.64) @@ -80,14 +91,14 @@ def test_geometry_optimization(parser): def test_molecular_dynamics(parser): archive = EntryArchive() - parser.parse('tests/data/cpmd/md/output.out', archive, None) + parser.parse("tests/data/cpmd/md/output.out", archive, None) system = archive.run[0].system assert len(system) == 50 assert system[1].atoms.positions[1][0].magnitude == approx(-3.72683727e-11) assert system[28].atoms.positions[1][1].magnitude == approx(-1.42764129e-12) assert system[34].atoms.velocities[1][2].magnitude == approx(-549.239774) - assert system[5].atoms.labels == ['H', 'H'] + assert system[5].atoms.labels == ["H", "H"] assert system[40].atoms.lattice_vectors[2][2].magnitude == approx(7.99999524e-10) calc = archive.run[0].calculation @@ -100,6 +111,10 @@ def test_molecular_dynamics(parser): assert calc[13].time_physical.magnitude == approx(3.32) md = archive.workflow2 - assert md.method.thermodynamic_ensemble == 'NVE' - assert md.x_cpmd_section_md_averaged_quantities[0].x_cpmd_density_functional_energy_mean == approx(-1.115075) - assert md.x_cpmd_section_md_averaged_quantities[0].x_cpmd_ion_displacement_std == approx(.193303E-02) + assert md.method.thermodynamic_ensemble == "NVE" + assert md.x_cpmd_section_md_averaged_quantities[ + 0 + ].x_cpmd_density_functional_energy_mean == approx(-1.115075) + assert md.x_cpmd_section_md_averaged_quantities[ + 0 + ].x_cpmd_ion_displacement_std == approx(0.193303e-02) diff --git a/tests/test_crystalparser.py b/tests/test_crystalparser.py index 36bf8246..bdb12fb1 100644 --- a/tests/test_crystalparser.py +++ b/tests/test_crystalparser.py @@ -80,8 +80,7 @@ def test_misc(): def test_xc_functionals(): - """Tests that different kinds of XC functionals are correctly identified. - """ + """Tests that different kinds of XC functionals are correctly identified.""" # PBE filepath = "tests/data/crystal/xc_functionals/pbe_1/supercell-00138.o" archive = parse(filepath) @@ -116,8 +115,7 @@ def test_xc_functionals(): def test_molecule(): - """Tests that molecular calculations are parsed correctly. - """ + """Tests that molecular calculations are parsed correctly.""" filepath = "tests/data/crystal/molecule/w.out" archive = parse(filepath) asserts_basic(archive, system_type="0D") @@ -127,8 +125,7 @@ def test_molecule(): def test_surface(): - """Tests that surface calculations are parsed correctly. - """ + """Tests that surface calculations are parsed correctly.""" filepath = "tests/data/crystal/surface/w221_sr_pbe0.cryst.out" archive = parse(filepath) asserts_basic(archive, system_type="2D") @@ -136,8 +133,7 @@ def test_surface(): def test_nanotube(): - """Tests that nanotube calculations are parsed correctly. - """ + """Tests that nanotube calculations are parsed correctly.""" # Nanotube SCF filepath = "tests/data/crystal/nanotube/scf/test_nano07_3.out" archive = parse(filepath) @@ -152,8 +148,7 @@ def test_nanotube(): def test_single_point_dft(): - """Tests that single point DFT calculations are parsed succesfully. - """ + """Tests that single point DFT calculations are parsed succesfully.""" filepath = "tests/data/crystal/single_point/dft/output.out" archive = parse(filepath) asserts_basic(archive) @@ -161,8 +156,7 @@ def test_single_point_dft(): def test_single_point_hf(): - """Tests that single point HF calculations are parsed succesfully. - """ + """Tests that single point HF calculations are parsed succesfully.""" filepath = "tests/data/crystal/single_point/hf/output.out" archive = parse(filepath) asserts_basic(archive, method_type="HF") @@ -170,17 +164,17 @@ def test_single_point_hf(): def test_single_point_forces(): - """Tests that forces are correctly parsed. - """ - filepath = "tests/data/crystal/single_point/forces/HfS2_PBE0D3_ZD_fc3_supercell-00001.o" + """Tests that forces are correctly parsed.""" + filepath = ( + "tests/data/crystal/single_point/forces/HfS2_PBE0D3_ZD_fc3_supercell-00001.o" + ) archive = parse(filepath) asserts_basic(archive, vdw="DFT-D3", forces=True) asserts_basic_code_specific(archive) def test_geo_opt(): - """Tests that geometry optimization is parsed correctly. - """ + """Tests that geometry optimization is parsed correctly.""" filepath = "tests/data/crystal/geo_opt/nio_tzvp_pbe0_opt.o" archive = parse(filepath) asserts_basic(archive) @@ -193,8 +187,7 @@ def test_geo_opt(): def test_band_structure(): - """Tests that band structure calculation is parsed correctly. - """ + """Tests that band structure calculation is parsed correctly.""" # Regular band structure with .f25 file filepath = "tests/data/crystal/band_structure/nacl_hf/NaCl.out" archive = parse(filepath) @@ -228,8 +221,7 @@ def test_band_structure(): def test_dos(): - """Tests that DOS is parsed successfully. - """ + """Tests that DOS is parsed successfully.""" filepath = "tests/data/crystal/dos/nacl_hf/NaCl.out" archive = parse(filepath) asserts_basic(archive) @@ -293,7 +285,9 @@ def asserts_basic(archive, method_type="DFT", system_type="3D", vdw=None, forces assert scc.forces.total.value.shape[0] == n_atoms -def asserts_basic_code_specific(archive, method_type="DFT", system_type="3D", run_type="scf", vdw=None, forces=False): +def asserts_basic_code_specific( + archive, method_type="DFT", system_type="3D", run_type="scf", vdw=None, forces=False +): run = archive.run[0] method = run.method[0] @@ -334,14 +328,18 @@ def asserts_basic_code_specific(archive, method_type="DFT", system_type="3D", ru assert shell.x_crystal_shell_coefficients.shape[1] == 4 -def asserts_geo_opt(archive, method_type="DFT", system_type="3D", vdw=None, forces=False): +def asserts_geo_opt( + archive, method_type="DFT", system_type="3D", vdw=None, forces=False +): workflow = archive.workflow2 assert workflow.method.convergence_tolerance_energy_difference is not None assert workflow.method.convergence_tolerance_displacement_maximum is not None assert workflow.results.is_converged_geometry is True -def asserts_band_structure(archive, method_type="DFT", system_type="3D", vdw=None, forces=False): +def asserts_band_structure( + archive, method_type="DFT", system_type="3D", vdw=None, forces=False +): run = archive.run[0] scc = run.calculation[0] bands = scc.band_structure_electronic[0] @@ -362,6 +360,8 @@ def asserts_dos(archive, method_type="DFT", system_type="3D", vdw=None, forces=F if dos: dos = dos[0] dos_found = True - assert scc.energy.fermi is not None or scc.energy.highest_occupied is not None + assert ( + scc.energy.fermi is not None or scc.energy.highest_occupied is not None + ) assert dos.energies.shape == dos.total[0].value.shape assert dos_found diff --git a/tests/test_dmol3parser.py b/tests/test_dmol3parser.py index 1aafc336..8ed17f36 100644 --- a/tests/test_dmol3parser.py +++ b/tests/test_dmol3parser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return Dmol3Parser() @@ -34,39 +34,49 @@ def parser(): def test_optimization(parser): archive = EntryArchive() - parser.parse('tests/data/dmol3/h2o.outmol', archive, None) + parser.parse("tests/data/dmol3/h2o.outmol", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '3.0' - assert sec_run.time_run.date_start > 0. + assert sec_run.program.version == "3.0" + assert sec_run.time_run.date_start > 0.0 sec_method = archive.run[0].method[0] - assert sec_method.x_dmol3_calculation_type == 'optimize_frequency' + assert sec_method.x_dmol3_calculation_type == "optimize_frequency" assert sec_method.x_dmol3_rcut == approx(6.0) assert sec_method.x_dmol3_scf_iterations == 150 - assert sec_method.x_dmol3_occupation_name == 'Fermi' + assert sec_method.x_dmol3_occupation_name == "Fermi" assert sec_method.x_dmol3_diis_number == 10 - assert sec_method.x_dmol3_diis_name == 'pulay' + assert sec_method.x_dmol3_diis_name == "pulay" assert sec_method.x_dmol3_opt_energy_convergence == approx(1.0e-05) sec_system = archive.run[0].system assert len(sec_system) == 11 - assert sec_system[0].atoms.labels[2] == 'H' - assert sec_system[2].atoms.positions[1][2].magnitude == approx(-8.84266338e-10,) + assert sec_system[0].atoms.labels[2] == "H" + assert sec_system[2].atoms.positions[1][2].magnitude == approx( + -8.84266338e-10, + ) sec_calc = sec_run.calculation assert sec_calc[7].energy.total.value.magnitude == approx(-3.33238073e-16) assert sec_calc[2].energy.x_dmol3_binding.value.magnitude == approx(-1.66336861e-18) assert len(sec_calc[5].scf_iteration) == 7 - assert sec_calc[1].scf_iteration[2].energy.total.value.magnitude == approx(-3.33238086e-16) - assert sec_calc[5].scf_iteration[5].energy.x_dmol3_binding.value.magnitude == approx(-1.66332632e-18) - assert sec_calc[0].eigenvalues[0].energies[0][0][4].magnitude == approx(-1.08436443e-18) + assert sec_calc[1].scf_iteration[2].energy.total.value.magnitude == approx( + -3.33238086e-16 + ) + assert sec_calc[5].scf_iteration[ + 5 + ].energy.x_dmol3_binding.value.magnitude == approx(-1.66332632e-18) + assert sec_calc[0].eigenvalues[0].energies[0][0][4].magnitude == approx( + -1.08436443e-18 + ) assert sec_calc[0].eigenvalues[0].occupations[0][0][2] == approx(2.0) assert sec_calc[1].charges[0].value[0].magnitude == approx(-4.82255167e-20) assert sec_calc[1].charges[1].value[2].magnitude == approx(3.89328922e-20) assert sec_calc[1].multipoles[0].dipole.total == approx(1.9470) assert sec_calc[10].vibrational_frequencies[0].value[2].magnitude == approx(-1050.0) - assert sec_calc[10].vibrational_frequencies[0].x_dmol3_normal_modes[5][2][0] == approx(-0.1073) + assert sec_calc[10].vibrational_frequencies[0].x_dmol3_normal_modes[5][2][ + 0 + ] == approx(-0.1073) assert sec_calc[10].x_dmol3_h_rot == approx(0.889) assert sec_calc[10].x_dmol3_c_vib == approx(5.816) assert sec_calc[3].time_physical.magnitude == approx(0.150 * 60) @@ -79,7 +89,11 @@ def test_optimization(parser): # assert sec_workflow.method.convergence_tolerance_displacement_maximum.magnitude == approx(1.58753163e-13) assert sec_workflow.results.temperature[22].magnitude == approx(550.00) assert sec_workflow.results.entropy[32].magnitude == approx(5.15393944e-22) - assert sec_workflow.results.heat_capacity_c_p[40].magnitude == approx(1.08988499e-22) + assert sec_workflow.results.heat_capacity_c_p[40].magnitude == approx( + 1.08988499e-22 + ) # TODO uncomment this after merging workflow changes # assert sec_workflow[1].thermodynamics.enthalpy[7].magnitude == approx(1.1136461e-19) - assert sec_workflow.results.gibbs_free_energy[20].magnitude == approx(-9.34881901e-20) + assert sec_workflow.results.gibbs_free_energy[20].magnitude == approx( + -9.34881901e-20 + ) diff --git a/tests/test_edmftparser.py b/tests/test_edmftparser.py index 564b4b9e..7934bdae 100644 --- a/tests/test_edmftparser.py +++ b/tests/test_edmftparser.py @@ -26,23 +26,23 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return EDMFTParser() def test_lanio2_u7_singlepoint(parser): archive = EntryArchive() - parser.parse('tests/data/edmft/LaNiO2_u7_singlepoint/dmft_info.out', archive, None) + parser.parse("tests/data/edmft/LaNiO2_u7_singlepoint/dmft_info.out", archive, None) # Run tests assert len(archive.run) == 1 sec_run = archive.run[-1] - assert sec_run.program.name == 'eDMFT' + assert sec_run.program.name == "eDMFT" # System tests assert len(sec_run.system) == 1 sec_system = sec_run.system[-1] - assert sec_system.atoms.labels == ['La', 'Ni', 'O', 'O'] + assert sec_system.atoms.labels == ["La", "Ni", "O", "O"] assert sec_system.atoms.periodic == [True, True, True] assert sec_system.atoms.positions[0][0].magnitude == approx(1.97950000708e-10) # Method tests @@ -50,26 +50,36 @@ def test_lanio2_u7_singlepoint(parser): # Initial model sec_init_model = sec_run.method[0] assert len(sec_init_model.atom_parameters) == 1 - assert sec_init_model.atom_parameters[0].label == 'Ni' + assert sec_init_model.atom_parameters[0].label == "Ni" assert sec_init_model.atom_parameters[0].n_orbitals == 5 - assert sec_init_model.atom_parameters[0].orbitals == ['dz^2', 'dx^2-y^2', 'dxz', 'dyz', 'dxy'] + assert sec_init_model.atom_parameters[0].orbitals == [ + "dz^2", + "dx^2-y^2", + "dxz", + "dyz", + "dxy", + ] sec_hubbard = sec_init_model.atom_parameters[0].hubbard_kanamori_model - assert sec_hubbard.double_counting_correction == 'exactd' - assert sec_hubbard.u.to('eV').magnitude == approx(7.0) - assert sec_hubbard.jh.to('eV').magnitude == approx(1.0) - up_interaction = sec_hubbard.u.to('eV').magnitude - 2 * sec_hubbard.jh.to('eV').magnitude - j_interaction = sec_hubbard.jh.to('eV').magnitude - assert sec_hubbard.up.to('eV').magnitude == approx(up_interaction) - assert sec_hubbard.j.to('eV').magnitude == approx(j_interaction) + assert sec_hubbard.double_counting_correction == "exactd" + assert sec_hubbard.u.to("eV").magnitude == approx(7.0) + assert sec_hubbard.jh.to("eV").magnitude == approx(1.0) + up_interaction = ( + sec_hubbard.u.to("eV").magnitude - 2 * sec_hubbard.jh.to("eV").magnitude + ) + j_interaction = sec_hubbard.jh.to("eV").magnitude + assert sec_hubbard.up.to("eV").magnitude == approx(up_interaction) + assert sec_hubbard.j.to("eV").magnitude == approx(j_interaction) # DMFT sec_dmft = sec_run.method[1] assert sec_dmft.starting_method_ref == sec_init_model - assert sec_dmft.dmft.impurity_solver == 'CT-HYB' + assert sec_dmft.dmft.impurity_solver == "CT-HYB" assert sec_dmft.dmft.n_impurities == 1 - assert sec_dmft.dmft.n_correlated_orbitals == [sec_init_model.atom_parameters[0].n_orbitals] + assert sec_dmft.dmft.n_correlated_orbitals == [ + sec_init_model.atom_parameters[0].n_orbitals + ] assert sec_dmft.dmft.n_electrons == [8.0] - assert sec_dmft.dmft.magnetic_state == 'paramagnetic' - assert sec_dmft.dmft.inverse_temperature.to('1/eV').magnitude == approx(23.2) + assert sec_dmft.dmft.magnetic_state == "paramagnetic" + assert sec_dmft.dmft.inverse_temperature.to("1/eV").magnitude == approx(23.2) # Calculation tests (testing last one) assert len(sec_run.calculation) == 7 sec_scc_last = sec_run.calculation[-1] @@ -77,16 +87,18 @@ def test_lanio2_u7_singlepoint(parser): assert sec_scc_last.method_ref == sec_dmft assert len(sec_scc_last.scf_iteration) == 2 assert len(sec_scc_last.scf_iteration[1].charges) == 2 - assert sec_scc_last.scf_iteration[1].charges[0].kind == 'lattice' + assert sec_scc_last.scf_iteration[1].charges[0].kind == "lattice" assert sec_scc_last.scf_iteration[1].charges[0].n_atoms == 1 assert sec_scc_last.scf_iteration[1].charges[0].n_orbitals == 5 assert sec_scc_last.scf_iteration[1].charges[0].n_electrons[0] == approx(8.476712) - assert sec_scc_last.scf_iteration[1].charges[1].kind == 'impurity' + assert sec_scc_last.scf_iteration[1].charges[1].kind == "impurity" assert sec_scc_last.scf_iteration[1].charges[1].n_electrons[0] == approx(8.475371) sec_gfs = sec_scc_last.greens_functions assert len(sec_gfs) == 3 - assert sec_gfs[0].type == 'impurity' - assert sec_gfs[1].type == 'lattice' + assert sec_gfs[0].type == "impurity" + assert sec_gfs[1].type == "lattice" assert sec_gfs[2].type == sec_gfs[1].type assert sec_gfs[1].greens_function_iw.shape == (1, 2, 5, 397) - assert sec_gfs[1].greens_function_iw[0][0][0][2] == approx(0.25737472001 - 0.253983463147j) + assert sec_gfs[1].greens_function_iw[0][0][0][2] == approx( + 0.25737472001 - 0.253983463147j + ) diff --git a/tests/test_elkparser.py b/tests/test_elkparser.py index b0851ddd..9f08af74 100644 --- a/tests/test_elkparser.py +++ b/tests/test_elkparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return ElkParser() @@ -34,55 +34,87 @@ def parser(): def test_1(parser): archive = EntryArchive() - parser.parse('tests/data/elk/Al/INFO.OUT', archive, None) + parser.parse("tests/data/elk/Al/INFO.OUT", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '4.0.15' + assert sec_run.program.version == "4.0.15" sec_method = sec_run.method[0] - assert sec_method.dft.xc_functional.exchange[0].name == 'LDA_X_PZ' - assert sec_method.electronic.smearing.kind == 'fermi' + assert sec_method.dft.xc_functional.exchange[0].name == "LDA_X_PZ" + assert sec_method.electronic.smearing.kind == "fermi" assert sec_method.electronic.smearing.width == approx(0.001) assert sec_method.x_elk_kpoints_grid[2] == 4 - assert sec_method.x_elk_gkmax.magnitude == approx(6.01276494e+10) + assert sec_method.x_elk_gkmax.magnitude == approx(6.01276494e10) sec_system = archive.run[0].system[0] assert sec_system.atoms.lattice_vectors[1][0].magnitude == approx(2.02500243e-10) - assert sec_system.atoms.labels == ['Al'] - assert sec_system.atoms.positions[0][1].magnitude == 0. + assert sec_system.atoms.labels == ["Al"] + assert sec_system.atoms.positions[0][1].magnitude == 0.0 sec_calc = sec_run.calculation[0] assert len(sec_calc.scf_iteration) == 19 - assert sec_calc.scf_iteration[2].energy.total.value.magnitude == approx(-1.05555622e-15) + assert sec_calc.scf_iteration[2].energy.total.value.magnitude == approx( + -1.05555622e-15 + ) assert sec_calc.scf_iteration[7].energy.fermi.magnitude == approx(1.13675091e-18) - assert sec_calc.scf_iteration[12].energy.exchange.value.magnitude == approx(-7.28319203e-17) - assert sec_calc.scf_iteration[3].energy.electronic.kinetic.magnitude == approx(1.05431941e-15) - assert sec_calc.scf_iteration[5].energy.sum_eigenvalues.value.magnitude == approx(-5.63620032e-16) - assert sec_calc.scf_iteration[8].energy.xc.potential.magnitude == approx(-1.018882e-16) - assert sec_calc.scf_iteration[9].energy.x_elk_core_electron_kinetic_energy.magnitude == approx(7.83218672e-16) - assert sec_calc.scf_iteration[11].energy.electrostatic.value.magnitude == approx(-2.03299947e-15) - assert sec_calc.scf_iteration[13].energy.electrostatic.potential.magnitude == approx(-1.5165141e-15) - assert sec_calc.scf_iteration[15].energy.x_elk_hartree_energy.magnitude == approx(3.32138956e-16) - assert sec_calc.scf_iteration[17].energy.madelung.value.magnitude == approx(-1.27473913e-15) - assert sec_calc.scf_iteration[18].energy.x_elk_electron_entropic_energy.magnitude == approx(-1.13486501e-21) - assert sec_calc.scf_iteration[0].energy.correlation.value.magnitude == approx(-4.30831902e-18) + assert sec_calc.scf_iteration[12].energy.exchange.value.magnitude == approx( + -7.28319203e-17 + ) + assert sec_calc.scf_iteration[3].energy.electronic.kinetic.magnitude == approx( + 1.05431941e-15 + ) + assert sec_calc.scf_iteration[5].energy.sum_eigenvalues.value.magnitude == approx( + -5.63620032e-16 + ) + assert sec_calc.scf_iteration[8].energy.xc.potential.magnitude == approx( + -1.018882e-16 + ) + assert sec_calc.scf_iteration[ + 9 + ].energy.x_elk_core_electron_kinetic_energy.magnitude == approx(7.83218672e-16) + assert sec_calc.scf_iteration[11].energy.electrostatic.value.magnitude == approx( + -2.03299947e-15 + ) + assert sec_calc.scf_iteration[ + 13 + ].energy.electrostatic.potential.magnitude == approx(-1.5165141e-15) + assert sec_calc.scf_iteration[15].energy.x_elk_hartree_energy.magnitude == approx( + 3.32138956e-16 + ) + assert sec_calc.scf_iteration[17].energy.madelung.value.magnitude == approx( + -1.27473913e-15 + ) + assert sec_calc.scf_iteration[ + 18 + ].energy.x_elk_electron_entropic_energy.magnitude == approx(-1.13486501e-21) + assert sec_calc.scf_iteration[0].energy.correlation.value.magnitude == approx( + -4.30831902e-18 + ) def test_2(parser): archive = EntryArchive() - parser.parse('tests/data/elk/GaAs/INFO.OUT', archive, None) + parser.parse("tests/data/elk/GaAs/INFO.OUT", archive, None) sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels == ['Ga', 'As'] + assert sec_system.atoms.labels == ["Ga", "As"] assert sec_system.atoms.positions[1][2].magnitude == approx(1.41382921e-10) sec_calc = archive.run[0].calculation[0] assert len(sec_calc.scf_iteration) == 20 - assert sec_calc.scf_iteration[6].charges[0].value[1].magnitude == approx(5.01086463e-18) - assert sec_calc.scf_iteration[13].charges[0].total.magnitude == approx(1.02539305e-17) + assert sec_calc.scf_iteration[6].charges[0].value[1].magnitude == approx( + 5.01086463e-18 + ) + assert sec_calc.scf_iteration[13].charges[0].total.magnitude == approx( + 1.02539305e-17 + ) assert sec_calc.eigenvalues[0].kpoints[17][2] == approx(0.6250000000) - assert sec_calc.eigenvalues[0].energies[0][13][5].magnitude == approx(-1.6048802e-18) + assert sec_calc.eigenvalues[0].energies[0][13][5].magnitude == approx( + -1.6048802e-18 + ) assert sec_calc.eigenvalues[0].occupancies[0][2][13] == approx(2.0) assert sec_calc.dos_electronic[0].energies[87].magnitude == approx(-1.42127678e-18) - assert sec_calc.dos_electronic[0].total[0].value[49].magnitude == approx(1.26640442e+19) + assert sec_calc.dos_electronic[0].total[0].value[49].magnitude == approx( + 1.26640442e19 + ) diff --git a/tests/test_excitingparser.py b/tests/test_excitingparser.py index b3b9d0c9..261fe571 100644 --- a/tests/test_excitingparser.py +++ b/tests/test_excitingparser.py @@ -29,41 +29,48 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return ExcitingParser() -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def silicon_gw(parser): archive = EntryArchive() - parser.parse('tests/data/exciting/Si_gw/GW_INFO.OUT', archive, None) + parser.parse("tests/data/exciting/Si_gw/GW_INFO.OUT", archive, None) return archive def test_gs(parser): archive = EntryArchive() - parser.parse('tests/data/exciting/C_gs/INFO.OUT', archive, None) + parser.parse("tests/data/exciting/C_gs/INFO.OUT", archive, None) assert len(archive.run) == 1 sec_run = archive.run[0] - assert sec_run.program.version == 'CARBON' + assert sec_run.program.version == "CARBON" sec_method = sec_run.method[0] assert list(sec_method.k_mesh.grid) == [6] * 3 - assert list(sec_method.k_mesh.offset) == [.0] * 3 + assert list(sec_method.k_mesh.offset) == [0.0] * 3 assert sec_method.electronic.n_spin_channels == 1 assert sec_method.electronic.smearing.width == approx(4.35974472e-22) - assert sec_method.dft.xc_functional.exchange[0].name == 'GGA_X_PBE_SOL' - assert sec_method.x_exciting_scf_threshold_force_change.magnitude == approx(4.11936175e-12) + assert sec_method.dft.xc_functional.exchange[0].name == "GGA_X_PBE_SOL" + assert sec_method.x_exciting_scf_threshold_force_change.magnitude == approx( + 4.11936175e-12 + ) sec_system = sec_run.system[0] assert sec_system.atoms.lattice_vectors[0][0].magnitude == approx(1.72297146e-10) assert sec_system.atoms.positions[1][0].magnitude == approx(8.61485729e-11) assert len(sec_system.atoms.labels) == 2 - assert sec_system.x_exciting_section_spin[0].x_exciting_spin_treatment == 'spin-unpolarised' - assert sec_system.x_exciting_section_atoms_group[0].x_exciting_muffin_tin_radius.magnitude == approx(6.87930374e-11) + assert ( + sec_system.x_exciting_section_spin[0].x_exciting_spin_treatment + == "spin-unpolarised" + ) + assert sec_system.x_exciting_section_atoms_group[ + 0 + ].x_exciting_muffin_tin_radius.magnitude == approx(6.87930374e-11) sec_scc = sec_run.calculation[0] assert sec_scc.energy.total.value.magnitude == approx(-3.30863556e-16) @@ -71,9 +78,15 @@ def test_gs(parser): assert sec_scc.charges[0].total.magnitude == approx(1.92261196e-18) assert sec_scc.energy.fermi.magnitude == approx(2.4422694e-18) assert len(sec_scc.scf_iteration) == 12 - assert sec_scc.scf_iteration[5].x_exciting_valence_charge.magnitude == approx(1.28174131e-18) - assert sec_scc.scf_iteration[8].x_exciting_exchange_energy.magnitude == approx(-4.39756926e-17) - assert sec_scc.scf_iteration[11].energy.kinetic_electronic.value.magnitude == approx(3.30404896e-16) + assert sec_scc.scf_iteration[5].x_exciting_valence_charge.magnitude == approx( + 1.28174131e-18 + ) + assert sec_scc.scf_iteration[8].x_exciting_exchange_energy.magnitude == approx( + -4.39756926e-17 + ) + assert sec_scc.scf_iteration[ + 11 + ].energy.kinetic_electronic.value.magnitude == approx(3.30404896e-16) sec_eig = sec_scc.eigenvalues[0] assert np.shape(sec_eig.kpoints) == (30, 3) assert sec_eig.energies[0][9][4].magnitude == approx(2.74680139e-18) @@ -81,22 +94,38 @@ def test_gs(parser): def test_strucopt(parser): archive = EntryArchive() - parser.parse('tests/data/exciting/GaO_strucopt/INFO.OUT', archive, None) + parser.parse("tests/data/exciting/GaO_strucopt/INFO.OUT", archive, None) - assert archive.run[0].program.version_internal == '1e47a4bd61d2aa73ef68a31c2f3385676bee2c3a' + assert ( + archive.run[0].program.version_internal + == "1e47a4bd61d2aa73ef68a31c2f3385676bee2c3a" + ) sec_systems = archive.run[0].system assert len(sec_systems) == 15 - assert sec_systems[0].atoms.labels == ['Ga', 'Ga', 'Ga', 'Ga', 'O', 'O', 'O', 'O', 'O', 'O'] - assert sec_systems[0].x_exciting_gkmax.magnitude == approx(1.13383567e+11) + assert sec_systems[0].atoms.labels == [ + "Ga", + "Ga", + "Ga", + "Ga", + "O", + "O", + "O", + "O", + "O", + "O", + ] + assert sec_systems[0].x_exciting_gkmax.magnitude == approx(1.13383567e11) assert sec_systems[3].atoms.positions[1][1].magnitude == approx(3.07695918e-10) assert sec_systems[10].atoms.positions[-1][0].magnitude == approx(3.67156876e-11) - assert sec_systems[1].atoms.lattice_vectors[2][1].magnitude == approx(sec_systems[13].atoms.lattice_vectors[2][1].magnitude) + assert sec_systems[1].atoms.lattice_vectors[2][1].magnitude == approx( + sec_systems[13].atoms.lattice_vectors[2][1].magnitude + ) sec_run = archive.run[0] sec_method = sec_run.method[0] assert list(sec_method.k_mesh.grid) == [6] * 3 - assert list(sec_method.k_mesh.offset) == [.0] * 3 + assert list(sec_method.k_mesh.offset) == [0.0] * 3 sec_sccs = sec_run.calculation assert len(sec_sccs) == 15 assert len(sec_sccs[0].scf_iteration) == 19 @@ -105,8 +134,12 @@ def test_strucopt(parser): assert sec_sccs[0].scf_iteration[16].time_calculation.magnitude == approx(38.87) assert sec_sccs[7].time_calculation.magnitude == approx(758.49) assert sec_sccs[3].time_physical.magnitude == approx(2426.67) - assert sec_sccs[0].scf_iteration[18].x_exciting_effective_potential_convergence[0].magnitude == approx(4.62350928e-26) - assert sec_sccs[3].x_exciting_maximum_force_magnitude.magnitude == approx(1.64771998e-10) + assert sec_sccs[0].scf_iteration[18].x_exciting_effective_potential_convergence[ + 0 + ].magnitude == approx(4.62350928e-26) + assert sec_sccs[3].x_exciting_maximum_force_magnitude.magnitude == approx( + 1.64771998e-10 + ) assert sec_sccs[6].energy.total.value.magnitude == approx(-3.58415586e-14) assert sec_sccs[9].time_calculation.magnitude == approx(724.33) assert len(sec_sccs[-1].x_exciting_section_MT_charge_atom) == 10 @@ -115,12 +148,12 @@ def test_strucopt(parser): def test_dos_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/exciting/CeO_dos/INFO.OUT', archive, None) + parser.parse("tests/data/exciting/CeO_dos/INFO.OUT", archive, None) sec_run = archive.run[0] sec_method = sec_run.method[0] assert list(sec_method.k_mesh.grid) == [8] * 3 - assert list(sec_method.k_mesh.offset) == [.0] * 3 + assert list(sec_method.k_mesh.offset) == [0.0] * 3 sec_scc = sec_run.calculation[0] assert len(sec_scc.dos_electronic) == 2 @@ -128,26 +161,36 @@ def test_dos_spinpol(parser): sec_dos_down = sec_scc.dos_electronic[1] assert sec_dos_up.spin_channel == 0 and sec_dos_down.spin_channel == 1 assert np.shape(sec_dos_up.total[0].value) == (500,) - assert (sec_dos_up.energies[79].to('Ha') - sec_scc.energy.fermi.to('Ha')).magnitude == approx(-0.684) - assert (sec_dos_up.energies[240].to('Ha') - sec_scc.energy.fermi.to('Ha')).magnitude == approx(-0.4e-01) - assert sec_dos_up.total[0].value[126].to('1/Ha').magnitude == approx(20.83182629) - assert sec_dos_down.total[0].value[136].to('1/Ha').magnitude == approx(2.109103733) - assert sec_dos_up.total[0].value[220].to('1/Ha').magnitude == approx(62.06860954) - assert sec_dos_down.total[0].value[78].to('1/Ha').magnitude == approx(47.70198869) - - assert len(sec_dos_up.atom_projected) == 75 and len(sec_dos_down.atom_projected) == 75 + assert ( + sec_dos_up.energies[79].to("Ha") - sec_scc.energy.fermi.to("Ha") + ).magnitude == approx(-0.684) + assert ( + sec_dos_up.energies[240].to("Ha") - sec_scc.energy.fermi.to("Ha") + ).magnitude == approx(-0.4e-01) + assert sec_dos_up.total[0].value[126].to("1/Ha").magnitude == approx(20.83182629) + assert sec_dos_down.total[0].value[136].to("1/Ha").magnitude == approx(2.109103733) + assert sec_dos_up.total[0].value[220].to("1/Ha").magnitude == approx(62.06860954) + assert sec_dos_down.total[0].value[78].to("1/Ha").magnitude == approx(47.70198869) + + assert ( + len(sec_dos_up.atom_projected) == 75 and len(sec_dos_down.atom_projected) == 75 + ) assert np.shape(sec_dos_up.atom_projected[73].value) == (500,) assert sec_dos_up.atom_projected[11].atom_index == 2 - assert sec_dos_up.atom_projected[11].m_kind == 'spherical' + assert sec_dos_up.atom_projected[11].m_kind == "spherical" assert np.all(sec_dos_up.atom_projected[11].lm == np.array([3, 0])) - assert sec_dos_up.atom_projected[11].value[85].to('1/Ha').magnitude == approx(0.027132587730000005) - assert sec_dos_down.atom_projected[11].value[85].to('1/Ha').magnitude == approx(0.0001147139711) + assert sec_dos_up.atom_projected[11].value[85].to("1/Ha").magnitude == approx( + 0.027132587730000005 + ) + assert sec_dos_down.atom_projected[11].value[85].to("1/Ha").magnitude == approx( + 0.0001147139711 + ) -@pytest.mark.skip('To be updated: TDDFT currently not supported by FAIRmat') +@pytest.mark.skip("To be updated: TDDFT currently not supported by FAIRmat") def test_xs_tddft(parser): archive = EntryArchive() - parser.parse('tests/data/exciting/CSi_tddft/INFO_QMT001.OUT', archive, None) + parser.parse("tests/data/exciting/CSi_tddft/INFO_QMT001.OUT", archive, None) sec_run = archive.run[0] sec_method = sec_run.method[0] @@ -158,26 +201,58 @@ def test_xs_tddft(parser): assert len(sec_sccs) == 2 assert len(sec_sccs[1].x_exciting_xs_tddft_epsilon_energies) == 10001 - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_dielectric_function_local_field) == (2, 1, 3, 10001) - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_dielectric_function_no_local_field) == (2, 1, 3, 10001) - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_loss_function_local_field) == (1, 3, 10001) - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_loss_function_no_local_field) == (1, 3, 10001) - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_loss_function_no_local_field) == (1, 3, 10001) - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_sigma_local_field) == (2, 1, 3, 10001) - assert np.shape(sec_sccs[1].x_exciting_xs_tddft_sigma_no_local_field) == (2, 1, 3, 10001) + assert np.shape( + sec_sccs[1].x_exciting_xs_tddft_dielectric_function_local_field + ) == (2, 1, 3, 10001) + assert np.shape( + sec_sccs[1].x_exciting_xs_tddft_dielectric_function_no_local_field + ) == (2, 1, 3, 10001) + assert np.shape(sec_sccs[1].x_exciting_xs_tddft_loss_function_local_field) == ( + 1, + 3, + 10001, + ) + assert np.shape(sec_sccs[1].x_exciting_xs_tddft_loss_function_no_local_field) == ( + 1, + 3, + 10001, + ) + assert np.shape(sec_sccs[1].x_exciting_xs_tddft_loss_function_no_local_field) == ( + 1, + 3, + 10001, + ) + assert np.shape(sec_sccs[1].x_exciting_xs_tddft_sigma_local_field) == ( + 2, + 1, + 3, + 10001, + ) + assert np.shape(sec_sccs[1].x_exciting_xs_tddft_sigma_no_local_field) == ( + 2, + 1, + 3, + 10001, + ) def test_xs_mainfile_keys(parser): # This test will not show the BSE archive. We use it instead to test the mainfile_keys - filepath = 'tests/data/exciting/CHN_bse/INFO.OUT' + filepath = "tests/data/exciting/CHN_bse/INFO.OUT" dirname = os.path.dirname(filepath) mainfile_keys = parser.get_mainfile_keys(filename=filepath) - assert mainfile_keys[0] == 'XS_workflow' - assert mainfile_keys[1] == f'{dirname}/INFOXS.OUT' + assert mainfile_keys[0] == "XS_workflow" + assert mainfile_keys[1] == f"{dirname}/INFOXS.OUT" for i in range(2): - assert f'{dirname}/EPSILON_BSEIP_SCRfull_OC{i + 1}{i + 1}.OUT' in mainfile_keys - assert f'{dirname}/EPSILON_BSEsinglet_SCRfull_OC{i + 1}{i + 1}.OUT' in mainfile_keys - assert f'{dirname}/EPSILON_BSEtriplet_SCRfull_OC{i + 1}{i + 1}.OUT' in mainfile_keys + assert f"{dirname}/EPSILON_BSEIP_SCRfull_OC{i + 1}{i + 1}.OUT" in mainfile_keys + assert ( + f"{dirname}/EPSILON_BSEsinglet_SCRfull_OC{i + 1}{i + 1}.OUT" + in mainfile_keys + ) + assert ( + f"{dirname}/EPSILON_BSEtriplet_SCRfull_OC{i + 1}{i + 1}.OUT" + in mainfile_keys + ) def test_gw(silicon_gw): @@ -185,20 +260,20 @@ def test_gw(silicon_gw): sec_methods = silicon_gw.run[0].method assert len(sec_methods) == 1 sec_gw = sec_methods[-1].gw - assert sec_gw.x_exciting_coreflag == 'all' + assert sec_gw.x_exciting_coreflag == "all" assert sec_gw.x_exciting_barecoul.x_exciting_barcevtol == approx(0.1) - assert sec_gw.type == 'G0W0' - assert sec_gw.analytical_continuation == 'pade' + assert sec_gw.type == "G0W0" + assert sec_gw.analytical_continuation == "pade" assert sec_gw.n_empty_states == 100 - assert sec_gw.screening.type == 'rpa' + assert sec_gw.screening.type == "rpa" assert sec_gw.screening.n_empty_states == sec_gw.n_empty_states assert (sec_gw.screening.k_mesh.grid == np.array([2, 2, 2])).all() assert (sec_gw.q_mesh.grid == np.array([2, 2, 2])).all() assert len(sec_methods[-1].frequency_mesh) == 1 sec_freq_mesh = sec_methods[-1].frequency_mesh[0] - assert sec_freq_mesh.sampling_method == 'Gauss-Legendre' + assert sec_freq_mesh.sampling_method == "Gauss-Legendre" assert sec_freq_mesh.n_points == 32 - assert sec_freq_mesh.points[4].to('hartree').magnitude == approx(0.125 + 0j) + assert sec_freq_mesh.points[4].to("hartree").magnitude == approx(0.125 + 0j) sec_sccs = silicon_gw.run[0].calculation assert len(sec_sccs) == 1 @@ -206,14 +281,24 @@ def test_gw(silicon_gw): # Check GW properties assert approx(sec_sccs[0].energy.fermi.magnitude, 1.09865567e-19) assert approx(sec_sccs[0].band_gap[0].value.magnitude, 3.42913865e-19) - assert sec_sccs[0].band_gap[0].provenance.label == 'parser' + assert sec_sccs[0].band_gap[0].provenance.label == "parser" assert np.shape(sec_sccs[0].eigenvalues[0].energies[0][2]) == (20,) assert sec_sccs[0].eigenvalues[0].kpoints[-3][1] == 0.0 - assert sec_sccs[0].eigenvalues[0].energies[0][2][9].magnitude == approx(1.769533187849446e-18, abs=1e-20) - assert sec_sccs[0].eigenvalues[0].qp_linearization_prefactor[0][2][9] == approx(0.79935) - assert sec_sccs[0].eigenvalues[0].value_exchange[0][2][0].magnitude == approx(-2.855981572623473e-18, abs=1e-20) - assert sec_sccs[0].eigenvalues[0].value_correlation[0][2][14].magnitude == approx(-1.0879742954267992e-18, abs=1e-20) - assert sec_sccs[0].eigenvalues[0].value_xc_potential[0][2][6].magnitude == approx(-2.1691473890869554e-18, abs=1e-20) + assert sec_sccs[0].eigenvalues[0].energies[0][2][9].magnitude == approx( + 1.769533187849446e-18, abs=1e-20 + ) + assert sec_sccs[0].eigenvalues[0].qp_linearization_prefactor[0][2][9] == approx( + 0.79935 + ) + assert sec_sccs[0].eigenvalues[0].value_exchange[0][2][0].magnitude == approx( + -2.855981572623473e-18, abs=1e-20 + ) + assert sec_sccs[0].eigenvalues[0].value_correlation[0][2][14].magnitude == approx( + -1.0879742954267992e-18, abs=1e-20 + ) + assert sec_sccs[0].eigenvalues[0].value_xc_potential[0][2][6].magnitude == approx( + -2.1691473890869554e-18, abs=1e-20 + ) def test_gw_band_silicon(silicon_gw): @@ -247,8 +332,7 @@ def test_gw_band_silicon(silicon_gw): def test_gw_dos_silicon(silicon_gw): - """Tests that the DOS of silicon is parsed correctly from a GW calculation. - """ + """Tests that the DOS of silicon is parsed correctly from a GW calculation.""" sccs = silicon_gw.run[-1].calculation assert len(sccs) == 1 gaps = [1.360569] @@ -277,12 +361,12 @@ def test_gw_dos_silicon(silicon_gw): def test_hybrids(parser): archive = EntryArchive() - parser.parse('tests/data/exciting/PbI_hybrids/INFO.OUT', archive, None) + parser.parse("tests/data/exciting/PbI_hybrids/INFO.OUT", archive, None) sec_method = archive.run[-1].method[0] assert list(sec_method.k_mesh.grid) == [6, 6, 4] - assert list(sec_method.k_mesh.offset) == [0.] * 3 - assert sec_method.dft.xc_functional.hybrid[0].name == 'HYB_GGA_XC_HSE03' + assert list(sec_method.k_mesh.offset) == [0.0] * 3 + assert sec_method.dft.xc_functional.hybrid[0].name == "HYB_GGA_XC_HSE03" calc = archive.run[-1].calculation[0] assert len(calc.scf_iteration) == 4 diff --git a/tests/test_fhiaimsparser.py b/tests/test_fhiaimsparser.py index 3b6d3cca..31f70732 100644 --- a/tests/test_fhiaimsparser.py +++ b/tests/test_fhiaimsparser.py @@ -24,8 +24,8 @@ from tests.dos_integrator import integrate_dos -_root_dir = 'tests/data/fhiaims/' -silicon_versions = ('v071914_7', 'v171221_1') +_root_dir = "tests/data/fhiaims/" +silicon_versions = ("v071914_7", "v171221_1") silicon_normalization_map = list(zip(silicon_versions, (0.5, 1))) @@ -33,48 +33,53 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return FHIAimsParser() -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def silicon(parser): silicon = {} for version in silicon_versions: archive = EntryArchive() - parser.parse(_root_dir + 'Si_band_dos_' + version + '/aims_CC.out', - archive, None) + parser.parse( + _root_dir + "Si_band_dos_" + version + "/aims_CC.out", archive, None + ) silicon[version] = archive return silicon def test_scf_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/fhiaims/Fe_scf_spinpol/out.out', archive, None) + parser.parse("tests/data/fhiaims/Fe_scf_spinpol/out.out", archive, None) - assert archive.run[0].program.version == '151211' - assert archive.run[0].time_run.wall_start.magnitude == approx(2.23485023e+08) + assert archive.run[0].program.version == "151211" + assert archive.run[0].time_run.wall_start.magnitude == approx(2.23485023e08) assert len(archive.run[0].method) == 1 sec_method = archive.run[0].method[0] assert list(sec_method.k_mesh.grid) == [16] * 3 assert sec_method.electronic.n_spin_channels == 2 - assert sec_method.electronic.relativity_method == 'scalar_relativistic_atomic_ZORA' - assert sec_method.dft.xc_functional.correlation[0].name == 'LDA_C_PW' - sec_basis_func = sec_method.x_fhi_aims_section_controlIn_basis_set[0].x_fhi_aims_section_controlIn_basis_func + assert sec_method.electronic.relativity_method == "scalar_relativistic_atomic_ZORA" + assert sec_method.dft.xc_functional.correlation[0].name == "LDA_C_PW" + sec_basis_func = sec_method.x_fhi_aims_section_controlIn_basis_set[ + 0 + ].x_fhi_aims_section_controlIn_basis_func assert len(sec_basis_func) == 10 assert sec_basis_func[2].x_fhi_aims_controlIn_basis_func_radius == 6.0 - assert sec_basis_func[6].x_fhi_aims_controlIn_basis_func_type == 'hydro' + assert sec_basis_func[6].x_fhi_aims_controlIn_basis_func_type == "hydro" sec_atom_type = archive.run[0].method[0].atom_parameters[0] assert sec_atom_type.mass.magnitude == approx(9.27328042e-26) - assert sec_atom_type.x_fhi_aims_section_controlInOut_atom_species[0].x_fhi_aims_controlInOut_species_cut_pot.magnitude == approx(3.5e-10) + assert sec_atom_type.x_fhi_aims_section_controlInOut_atom_species[ + 0 + ].x_fhi_aims_controlInOut_species_cut_pot.magnitude == approx(3.5e-10) assert len(archive.run[0].system) == 1 sec_system = archive.run[0].system[0] assert sec_system.atoms.lattice_vectors[1][1].magnitude == approx(-1.4e-10) assert sec_system.atoms.periodic == [True, True, True] - assert sec_system.atoms.labels == ['Fe'] + assert sec_system.atoms.labels == ["Fe"] assert len(archive.run[0].calculation) == 1 sec_scc = archive.run[0].calculation[0] @@ -94,7 +99,7 @@ def test_scf_spinpol(parser): def test_geomopt(parser): archive = EntryArchive() - parser.parse('tests/data/fhiaims/Si_geomopt/out.out', archive, None) + parser.parse("tests/data/fhiaims/Si_geomopt/out.out", archive, None) sec_methods = archive.run[0].method assert len(sec_methods) == 1 @@ -112,12 +117,16 @@ def test_geomopt(parser): assert sec_sccs[2].energy.correlation.value.magnitude == approx(-9.34966824e-18) assert len(sec_sccs[3].scf_iteration) == 6 assert np.max(sec_sccs[3].forces.free.value_raw.magnitude) == approx(2.4933233e-11) - assert np.max(sec_sccs[4].forces.free.value.magnitude) == 0. + assert np.max(sec_sccs[4].forces.free.value.magnitude) == 0.0 def test_band_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/fhiaims/Fe_band_spinpol/Fe_band_structure_dos_spin.out', archive, None) + parser.parse( + "tests/data/fhiaims/Fe_band_spinpol/Fe_band_structure_dos_spin.out", + archive, + None, + ) assert len(archive.run[0].calculation) == 1 sec_scc = archive.run[0].calculation[0] @@ -143,29 +152,28 @@ def test_band_spinpol(parser): assert np.shape(sec_dos_up.energies) == (50,) assert np.shape(sec_dos_up.total[0].value) == (50,) assert sec_dos_up.energies[46].magnitude == approx(-1.1999976e-18) - assert sec_dos_up.total[0].value[46].to('1 / eV').magnitude == approx(.18127036) - assert sec_dos_down.total[0].value[15].to('1 / eV').magnitude == approx(.57150097) + assert sec_dos_up.total[0].value[46].to("1 / eV").magnitude == approx(0.18127036) + assert sec_dos_down.total[0].value[15].to("1 / eV").magnitude == approx(0.57150097) dos_integrated = integrate_dos(sec_dos, sec_scc.energy.fermi) - assert pytest.approx(dos_integrated, abs=1) == 8. + assert pytest.approx(dos_integrated, abs=1) == 8.0 # v151211 test for the Fermi level - assert sec_scc.energy.fermi.to('eV').magnitude == approx(-9.3842209) + assert sec_scc.energy.fermi.to("eV").magnitude == approx(-9.3842209) assert sec_k_band.energy_fermi == sec_scc.energy.fermi @pytest.mark.parametrize("version", silicon_versions) def test_band_silicon(silicon, version): - """Tests that the band structure of silicon is parsed correctly. - """ + """Tests that the band structure of silicon is parsed correctly.""" scc = silicon[version].run[-1].calculation[0] band = scc.band_structure_electronic[0] segments = band.segment - energies = np.array([s.energies.to('eV').magnitude for s in segments]) + energies = np.array([s.energies.to("eV").magnitude for s in segments]) # Check that an energy reference is reported - energy_reference = scc.energy.fermi.to('eV').magnitude + energy_reference = scc.energy.fermi.to("eV").magnitude assert energy_reference == approx(-5.7308573, abs=1e-5) - assert band.energy_fermi.to('eV').magnitude == energy_reference + assert band.energy_fermi.to("eV").magnitude == energy_reference # Check that an appropriately sized band gap is found at the given # reference energy @@ -179,18 +187,19 @@ def test_band_silicon(silicon, version): @pytest.mark.parametrize("version, normalization_factor", silicon_normalization_map) def test_dos_silicon(silicon, version, normalization_factor): - """Tests that the DOS of silicon is parsed correctly. - """ + """Tests that the DOS of silicon is parsed correctly.""" scc = silicon[version].run[-1].calculation[0] - energy_reference = scc.energy.fermi.to('eV').magnitude + energy_reference = scc.energy.fermi.to("eV").magnitude dos = scc.dos_electronic assert len(dos) == 1 - energies = dos[0].energies.to('eV').magnitude + energies = dos[0].energies.to("eV").magnitude values = np.array([d.value.magnitude for d in dos[0].total]) dos_integrated = integrate_dos(dos, scc.energy.fermi) assert pytest.approx(dos_integrated, abs=5e-2) == 8 - assert dos[0].total[0].x_fhi_aims_normalization_factor_raw_data == normalization_factor + assert ( + dos[0].total[0].x_fhi_aims_normalization_factor_raw_data == normalization_factor + ) # Check that an appropriately sized band gap is found at the given # reference energy @@ -200,12 +209,12 @@ def test_dos_silicon(silicon, version, normalization_factor): lowest_unoccupied_index = np.searchsorted(energies, energy_reference, "right") highest_occupied_index = lowest_unoccupied_index - 1 gap = energies[lowest_unoccupied_index] - energies[highest_occupied_index] - assert gap == approx(0.54054054, abs=.04) # TODO increase accuracy + assert gap == approx(0.54054054, abs=0.04) # TODO increase accuracy def test_dos(parser): archive = EntryArchive() - parser.parse('tests/data/fhiaims/ClNa_dos/ClNa_dos.out', archive, None) + parser.parse("tests/data/fhiaims/ClNa_dos/ClNa_dos.out", archive, None) sec_method = archive.run[0].method[0] assert list(sec_method.k_mesh.grid) == [10] * 3 @@ -215,40 +224,44 @@ def test_dos(parser): assert len(sec_dos) == 1 assert np.shape(sec_dos[0].energies) == (50,) assert np.shape(sec_dos[0].total[0].value) == (50,) - assert sec_dos[0].total[0].value[0].to('1 / eV').magnitude == approx(0.00233484) - assert sec_dos[0].total[0].value[-1].to('1 / eV').magnitude == approx(0.49471595) + assert sec_dos[0].total[0].value[0].to("1 / eV").magnitude == approx(0.00233484) + assert sec_dos[0].total[0].value[-1].to("1 / eV").magnitude == approx(0.49471595) dos_integrated = integrate_dos(sec_dos, sec_scc.energy.fermi) - assert pytest.approx(dos_integrated, abs=1) == 3. # 3rd valence shell + assert pytest.approx(dos_integrated, abs=1) == 3.0 # 3rd valence shell # PDOS - assert sec_dos[0].m_xpath('species_projected') and sec_dos[0].m_xpath('orbital_projected') + assert sec_dos[0].m_xpath("species_projected") and sec_dos[0].m_xpath( + "orbital_projected" + ) sec_dos_species = sec_dos[0].species_projected assert len(sec_dos_species) == 2 - assert sec_dos_species[0].atom_label == 'Na' and sec_dos_species[1].atom_label == 'Cl' - assert sec_dos_species[0].value[3].magnitude == approx(8.316466310418057e+17) - assert sec_dos_species[1].value[3].magnitude == approx(7.471934333552389e+18) + assert ( + sec_dos_species[0].atom_label == "Na" and sec_dos_species[1].atom_label == "Cl" + ) + assert sec_dos_species[0].value[3].magnitude == approx(8.316466310418057e17) + assert sec_dos_species[1].value[3].magnitude == approx(7.471934333552389e18) sec_dos_orbital = sec_dos[0].orbital_projected assert len(sec_dos_orbital) == 7 - atom_labels = ['Na'] * 3 + ['Cl'] * 4 - orbital_labels = ['s', 'p', 'd'] + ['s', 'p', 'd', 'f'] + atom_labels = ["Na"] * 3 + ["Cl"] * 4 + orbital_labels = ["s", "p", "d"] + ["s", "p", "d", "f"] sec_atom_labels = [orbital_dos.atom_label for orbital_dos in sec_dos_orbital] sec_orbital_labels = [orbital_dos.orbital for orbital_dos in sec_dos_orbital] assert sec_atom_labels == atom_labels and sec_orbital_labels == orbital_labels -@pytest.mark.parametrize("tier", ['tight', 'intermediate', 'light_spd']) +@pytest.mark.parametrize("tier", ["tight", "intermediate", "light_spd"]) def test_native_tiers(tier): archive = EntryArchive() - FHIAimsParser().parse(f'{_root_dir}/native_tiers/{tier}/aims.out', archive, None) + FHIAimsParser().parse(f"{_root_dir}/native_tiers/{tier}/aims.out", archive, None) sec_er = archive.run[0].method[0].electrons_representation[0] - assert sec_er.native_tier == f'{tier}_defaults_2020' + assert sec_er.native_tier == f"{tier}_defaults_2020" def test_md(parser): archive = EntryArchive() - parser.parse('tests/data/fhiaims/HO_md/H2O_periodic_MD.out', archive, None) + parser.parse("tests/data/fhiaims/HO_md/H2O_periodic_MD.out", archive, None) sec_method = archive.run[0].method[0] assert list(sec_method.k_mesh.grid) == [2] * 3 @@ -268,125 +281,144 @@ def test_md(parser): assert sec_calculation[4].step == 3 assert sec_calculation[4].time.magnitude == approx(0.003) assert sec_calculation[4].temperature.magnitude == approx(339.815893902375) - assert sec_calculation[4].energy.kinetic.value.magnitude == approx(2.111251998587359e-20) - assert sec_calculation[4].energy.potential.value.magnitude == approx(-3.3301149258970176e-16) + assert sec_calculation[4].energy.kinetic.value.magnitude == approx( + 2.111251998587359e-20 + ) + assert sec_calculation[4].energy.potential.value.magnitude == approx( + -3.3301149258970176e-16 + ) assert sec_calculation[1].time_calculation.magnitude == approx(26.922) assert sec_calculation[2].time_physical.magnitude == approx(70.35599994659424) sec_workflow = archive.workflow2 - assert sec_workflow.method.thermodynamic_ensemble == 'NVT' + assert sec_workflow.method.thermodynamic_ensemble == "NVT" assert sec_workflow.method.integration_timestep.magnitude == approx(1e-15) assert sec_workflow.method.n_steps == 5 sec_thermostat = sec_workflow.method.thermostat_parameters[0] - assert sec_thermostat.thermostat_type == 'nose_hoover' + assert sec_thermostat.thermostat_type == "nose_hoover" assert sec_thermostat.reference_temperature.magnitude == approx(300.0) assert sec_thermostat.coupling_constant.magnitude == approx(3.706267724423911e-14) def test_hybrid(parser): - """"Taken from the official test files in FHI-aims v210716_3""" + """ "Taken from the official test files in FHI-aims v210716_3""" archive = EntryArchive() - parser.parse('tests/data/fhiaims/GaAs_HSE06+SOC/aims.out', archive, None) + parser.parse("tests/data/fhiaims/GaAs_HSE06+SOC/aims.out", archive, None) sec_method = archive.run[0].method[0] assert list(sec_method.k_mesh.grid) == [12] * 3 sec_xc_functional = sec_method.dft.xc_functional - assert sec_xc_functional.hybrid[0].parameters['exact_exchange_mixing_factor'] == .25 - assert sec_xc_functional.hybrid[0].name == 'HYB_GGA_XC_HSE06' + assert ( + sec_xc_functional.hybrid[0].parameters["exact_exchange_mixing_factor"] == 0.25 + ) + assert sec_xc_functional.hybrid[0].name == "HYB_GGA_XC_HSE06" def test_dftu(parser): """Test generated by Nathan Daelman on DUNE3 cluster""" archive = EntryArchive() - parser.parse('tests/data/fhiaims/CeO2_dftu/aims_CC.out', archive, None) + parser.parse("tests/data/fhiaims/CeO2_dftu/aims_CC.out", archive, None) sec_method = archive.run[0].method[0] assert list(sec_method.k_mesh.grid) == [1] * 3 sec_hubb = sec_method.atom_parameters[0].hubbard_kanamori_model - assert sec_hubb.orbital == '4f' - assert approx(sec_hubb.u_effective.to('eV').magnitude) == 4.5 - assert sec_hubb.double_counting_correction == 'Dudarev' + assert sec_hubb.orbital == "4f" + assert approx(sec_hubb.u_effective.to("eV").magnitude) == 4.5 + assert sec_hubb.double_counting_correction == "Dudarev" def test_gw(parser): """Tests for GW calculations in an atom, He""" archive = EntryArchive() - parser._calculation_type = 'gw' - parser.parse('tests/data/fhiaims/He_gw/He_scGW_ontop_PBE.out', archive, None) + parser._calculation_type = "gw" + parser.parse("tests/data/fhiaims/He_gw/He_scGW_ontop_PBE.out", archive, None) sec_run = archive.run[-1] # System sec_system = sec_run.system assert len(sec_system) == 1 - assert sec_system[-1].atoms.labels == ['He'] + assert sec_system[-1].atoms.labels == ["He"] assert sec_system[-1].atoms.periodic == [False, False, False] # Method sec_method = archive.run[-1].method assert len(sec_method) == 1 - assert sec_method[-1].gw.type == 'scGW' - assert sec_method[-1].gw.analytical_continuation == 'pade' + assert sec_method[-1].gw.type == "scGW" + assert sec_method[-1].gw.analytical_continuation == "pade" assert sec_method[-1].gw.n_states == 5 assert len(sec_method[-1].frequency_mesh) == 1 - assert sec_method[-1].frequency_mesh[0].n_points == len(sec_method[-1].frequency_mesh[0].points) - assert sec_method[-1].frequency_mesh[0].points[-1].to('hartree').magnitude == approx(3571.4288641158605 + 0j) + assert sec_method[-1].frequency_mesh[0].n_points == len( + sec_method[-1].frequency_mesh[0].points + ) + assert sec_method[-1].frequency_mesh[0].points[-1].to( + "hartree" + ).magnitude == approx(3571.4288641158605 + 0j) # GW energies sec_scf = sec_run.calculation[-1].scf_iteration assert len(sec_scf) == 5 - assert sec_scf[0].x_fhi_aims_energy_scgw_correlation_energy.to('eV').magnitude == approx(-2.392295) - assert sec_scf[-1].x_fhi_aims_energy_scgw_correlation_energy.to('eV').magnitude == approx(-1.73791) + assert sec_scf[0].x_fhi_aims_energy_scgw_correlation_energy.to( + "eV" + ).magnitude == approx(-2.392295) + assert sec_scf[-1].x_fhi_aims_energy_scgw_correlation_energy.to( + "eV" + ).magnitude == approx(-1.73791) def test_gw_eigs(parser): """Tests for GW calculations in a molecule, CHN""" archive = EntryArchive() - parser.parse('tests/data/fhiaims/CHN_gw/output.out', archive, None) + parser.parse("tests/data/fhiaims/CHN_gw/output.out", archive, None) sec_run = archive.run[-1] # System and Method sec_system = sec_run.system assert len(sec_system) == 1 - assert sec_system[-1].atoms.labels[0] == 'O' + assert sec_system[-1].atoms.labels[0] == "O" sec_method = sec_run.method assert len(sec_method) == 1 - assert sec_method[-1].m_xpath('gw') - assert sec_method[-1].gw.type == 'G0W0' + assert sec_method[-1].m_xpath("gw") + assert sec_method[-1].gw.type == "G0W0" assert sec_method[-1].gw.n_states == 1590 - assert sec_method[-1].gw.analytical_continuation == 'pade' + assert sec_method[-1].gw.analytical_continuation == "pade" # GW eigenvalues sec_eigs_gw = sec_run.calculation[-1].eigenvalues[0] assert sec_eigs_gw.value_qp.shape == (1, 1, 81) - assert sec_eigs_gw.value_correlation[-1][0][0].to('eV').magnitude == approx(10.4622) - assert sec_eigs_gw.value_exchange[-1][0][0].to('eV').magnitude == approx(-99.6569) - assert sec_eigs_gw.value_qp[-1][0][0].to('eV').magnitude == approx(-550.2817) - assert sec_eigs_gw.value_ks[-1][0][0].to('eV').magnitude == approx(-524.2553) - assert sec_eigs_gw.value_ks_xc[-1][0][0].to('eV').magnitude == approx(-63.1682) + assert sec_eigs_gw.value_correlation[-1][0][0].to("eV").magnitude == approx(10.4622) + assert sec_eigs_gw.value_exchange[-1][0][0].to("eV").magnitude == approx(-99.6569) + assert sec_eigs_gw.value_qp[-1][0][0].to("eV").magnitude == approx(-550.2817) + assert sec_eigs_gw.value_ks[-1][0][0].to("eV").magnitude == approx(-524.2553) + assert sec_eigs_gw.value_ks_xc[-1][0][0].to("eV").magnitude == approx(-63.1682) def test_gw_bands(parser): """Tests for GW calculations in a solid, Si2""" archive = EntryArchive() - parser.parse('tests/data/fhiaims/Si_pbe_vs_gw_bands/aims.out', archive, None) + parser.parse("tests/data/fhiaims/Si_pbe_vs_gw_bands/aims.out", archive, None) sec_run = archive.run[-1] # System and Method - assert sec_run.system[-1].atoms.labels == ['Si', 'Si'] + assert sec_run.system[-1].atoms.labels == ["Si", "Si"] sec_method = sec_run.method[-1] assert list(sec_method.k_mesh.grid) == [8] * 3 - assert sec_method.gw.type == 'G0W0' + assert sec_method.gw.type == "G0W0" sec_scc = sec_run.calculation[-1] - assert sec_scc.energy.fermi.to('eV').magnitude == approx(-5.73695796) + assert sec_scc.energy.fermi.to("eV").magnitude == approx(-5.73695796) assert len(sec_scc.band_structure_electronic[0].segment) == 10 assert sec_scc.band_structure_electronic[0].segment[0].kpoints.shape == (17, 3) - assert sec_scc.band_structure_electronic[0].segment[-1].occupations.shape == (1, 6, 24) + assert sec_scc.band_structure_electronic[0].segment[-1].occupations.shape == ( + 1, + 6, + 24, + ) + # WATCH OUT: reset (if needed) self._calculation_type accordingly after the GW tests! diff --git a/tests/test_fleurparser.py b/tests/test_fleurparser.py index 55d9cdbf..d0a604c6 100644 --- a/tests/test_fleurparser.py +++ b/tests/test_fleurparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return FleurParser() @@ -34,72 +34,98 @@ def parser(): def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/fleur/Si/out', archive, None) + parser.parse("tests/data/fleur/Si/out", archive, None) sec_run = archive.run - assert sec_run[0].program.version == 'fleur.26b' - assert sec_run[0].x_fleur_header[0].x_fleur_precision == 'DOUBLE' + assert sec_run[0].program.version == "fleur.26b" + assert sec_run[0].x_fleur_header[0].x_fleur_precision == "DOUBLE" assert not sec_run[0].x_fleur_header[0].x_fleur_with_soc - assert sec_run[0].x_fleur_header[0].x_fleur_additional_flags == 'CPP_MPI' + assert sec_run[0].x_fleur_header[0].x_fleur_additional_flags == "CPP_MPI" sec_method = sec_run[0].method - assert sec_method[0].x_fleur_input_parameters['chng'] == approx(-0.100E-11) - assert sec_method[0].x_fleur_input_parameters['ctail'] == 'T' - assert sec_method[0].x_fleur_input_parameters['lflip'] == ['F', 1, 1] - assert sec_method[0].x_fleur_parameters['vM'] == 0 - assert sec_method[0].x_fleur_eigenvalues_parameters['number of energy windows'] == 1 - assert sec_method[0].dft.xc_functional.exchange[0].name == 'GGA_X_PBE' - assert sec_method[0].dft.xc_functional.x_fleur_xc_correction == 'non-relativi correction' - assert sec_method[0].electronic.smearing.kind == 'fermi' + assert sec_method[0].x_fleur_input_parameters["chng"] == approx(-0.100e-11) + assert sec_method[0].x_fleur_input_parameters["ctail"] == "T" + assert sec_method[0].x_fleur_input_parameters["lflip"] == ["F", 1, 1] + assert sec_method[0].x_fleur_parameters["vM"] == 0 + assert sec_method[0].x_fleur_eigenvalues_parameters["number of energy windows"] == 1 + assert sec_method[0].dft.xc_functional.exchange[0].name == "GGA_X_PBE" + assert ( + sec_method[0].dft.xc_functional.x_fleur_xc_correction + == "non-relativi correction" + ) + assert sec_method[0].electronic.smearing.kind == "fermi" assert sec_method[0].electronic.smearing.width == approx(0.001) - assert sec_method[0].x_fleur_tot_nucl_charge == approx(28.) + assert sec_method[0].x_fleur_tot_nucl_charge == approx(28.0) sec_system = sec_run[0].system assert sec_system[0].atoms.lattice_vectors[1][2].magnitude == approx(2.73444651e-10) - assert sec_system[0].atoms.labels == ['Si', 'Si'] + assert sec_system[0].atoms.labels == ["Si", "Si"] assert sec_system[0].atoms.positions[1][2].magnitude == approx(-6.97284111e-11) - assert sec_system[0].x_fleur_parameters['lattice'] == 'any' - assert sec_system[0].x_fleur_parameters['the vacuum begins at z'] == 0. + assert sec_system[0].x_fleur_parameters["lattice"] == "any" + assert sec_system[0].x_fleur_parameters["the vacuum begins at z"] == 0.0 assert sec_system[0].x_fleur_unit_cell_volume.magnitude == approx(275.952900) assert sec_system[0].x_fleur_G_max == approx(11.14815) assert sec_system[0].x_fleur_vol_interstitial == approx(192.693364) sec_scc = sec_run[0].calculation assert len(sec_scc[0].scf_iteration) == 20 - assert sec_scc[0].scf_iteration[18].energy.total.value.magnitude == approx(-2.52896385e-15) - assert sec_scc[0].scf_iteration[4].energy.free.value.magnitude == approx(-2.52896386e-15) - assert sec_scc[0].scf_iteration[9].forces.total.value[1][1].magnitude == approx(7.34976523e-10) + assert sec_scc[0].scf_iteration[18].energy.total.value.magnitude == approx( + -2.52896385e-15 + ) + assert sec_scc[0].scf_iteration[4].energy.free.value.magnitude == approx( + -2.52896386e-15 + ) + assert sec_scc[0].scf_iteration[9].forces.total.value[1][1].magnitude == approx( + 7.34976523e-10 + ) assert sec_scc[0].energy.total_t0.value.magnitude == approx(-2.52896385e-15) assert sec_scc[0].energy.fermi.magnitude == approx(9.64676355e-19) assert sec_scc[0].eigenvalues[0].kpoints[5][0] == approx(-0.111111) - assert sec_scc[0].eigenvalues[0].energies[0][15][1].magnitude == approx(-2.58602618e-19) + assert sec_scc[0].eigenvalues[0].energies[0][15][1].magnitude == approx( + -2.58602618e-19 + ) def test_xml(parser): archive = EntryArchive() - parser.parse('tests/data/fleur/Si/out.xml', archive, None) + parser.parse("tests/data/fleur/Si/out.xml", archive, None) sec_run = archive.run - assert sec_run[0].program.version == 'fleur 27' - assert sec_run[0].x_fleur_header[0].x_fleur_precision == 'DOUBLE' + assert sec_run[0].program.version == "fleur 27" + assert sec_run[0].x_fleur_header[0].x_fleur_precision == "DOUBLE" sec_method = sec_run[0].method - assert sec_method[0].x_fleur_parameters['Gmax'] == approx(11.07772533) - assert sec_method[0].x_fleur_parameters['kcrel'] == 0 - assert sec_method[0].dft.xc_functional.correlation[0].name == 'GGA_C_PBE' - assert sec_method[0].dft.xc_functional.x_fleur_xc_correction == 'non-relativistic correction' + assert sec_method[0].x_fleur_parameters["Gmax"] == approx(11.07772533) + assert sec_method[0].x_fleur_parameters["kcrel"] == 0 + assert sec_method[0].dft.xc_functional.correlation[0].name == "GGA_C_PBE" + assert ( + sec_method[0].dft.xc_functional.x_fleur_xc_correction + == "non-relativistic correction" + ) sec_system = sec_run[0].system - assert sec_system[0].atoms.lattice_vectors[0][1].to('bohr').magnitude == approx(5.167355275190) - assert sec_system[0].atoms.labels == ['Si', 'Si'] - assert sec_system[0].atoms.positions[0][1].to('bohr').magnitude == approx(1.29183882) + assert sec_system[0].atoms.lattice_vectors[0][1].to("bohr").magnitude == approx( + 5.167355275190 + ) + assert sec_system[0].atoms.labels == ["Si", "Si"] + assert sec_system[0].atoms.positions[0][1].to("bohr").magnitude == approx( + 1.29183882 + ) sec_scc = sec_run[0].calculation assert len(sec_scc[0].scf_iteration) == 20 - assert sec_scc[0].scf_iteration[18].energy.total.value.to('hartree').magnitude == approx(-580.0715443342) - assert sec_scc[0].scf_iteration[4].energy.free.value.to('hartree').magnitude == approx(-580.0715457719) - assert sec_scc[0].energy.total_t0.value.to('hartree').magnitude == approx(-580.0715444304) - assert sec_scc[0].energy.fermi.to('hartree').magnitude == approx(0.2212693414) + assert sec_scc[0].scf_iteration[18].energy.total.value.to( + "hartree" + ).magnitude == approx(-580.0715443342) + assert sec_scc[0].scf_iteration[4].energy.free.value.to( + "hartree" + ).magnitude == approx(-580.0715457719) + assert sec_scc[0].energy.total_t0.value.to("hartree").magnitude == approx( + -580.0715444304 + ) + assert sec_scc[0].energy.fermi.to("hartree").magnitude == approx(0.2212693414) assert sec_scc[0].eigenvalues[0].kpoints[5][0] == approx(-0.111111) - assert sec_scc[0].eigenvalues[0].energies[0][15][1].to('hartree').magnitude == approx(-0.0593160948) + assert sec_scc[0].eigenvalues[0].energies[0][15][1].to( + "hartree" + ).magnitude == approx(-0.0593160948) diff --git a/tests/test_fploparser.py b/tests/test_fploparser.py index 5f43c84e..d2b79ed3 100644 --- a/tests/test_fploparser.py +++ b/tests/test_fploparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return FploParser() @@ -34,14 +34,14 @@ def parser(): def test_basic(parser): archive = EntryArchive() - parser.parse('tests/data/fplo/hcp_ti/out', archive, None) + parser.parse("tests/data/fplo/hcp_ti/out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '14.00 M-CPA 47' + assert sec_run.program.version == "14.00 M-CPA 47" sec_system = archive.run[0].system[0] assert sec_system.atoms.lattice_vectors[0][1].magnitude == approx(-1.475e-10) - assert sec_system.atoms.labels == ['Ti', 'Ti'] + assert sec_system.atoms.labels == ["Ti", "Ti"] assert sec_system.atoms.positions[1][2].magnitude == approx(-1.17e-10) sec_sccs = sec_run.calculation @@ -53,6 +53,6 @@ def test_basic(parser): def test_1(parser): archive = EntryArchive() - parser.parse('tests/data/fplo/dhcp_gd/out', archive, None) + parser.parse("tests/data/fplo/dhcp_gd/out", archive, None) assert len(archive.run[0].system[0].atoms.positions) == 4 diff --git a/tests/test_gamessparser.py b/tests/test_gamessparser.py index ca477835..56b7b7ae 100644 --- a/tests/test_gamessparser.py +++ b/tests/test_gamessparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return GamessParser() @@ -34,30 +34,36 @@ def parser(): def test_dft(parser): archive = EntryArchive() - parser.parse('tests/data/gamess/dft/exam12.out', archive, None) + parser.parse("tests/data/gamess/dft/exam12.out", archive, None) sec_method = archive.run[0].method - assert sec_method[0].dft.xc_functional.correlation[0].name == 'LDA_C_VWN_5' - sec_basis_ac = sec_method[0].electrons_representation[0].basis_set[0].atom_centered[0] - assert sec_basis_ac.formula == '6-31G(d)' - assert sec_basis_ac.name == 'N31' + assert sec_method[0].dft.xc_functional.correlation[0].name == "LDA_C_VWN_5" + sec_basis_ac = ( + sec_method[0].electrons_representation[0].basis_set[0].atom_centered[0] + ) + assert sec_basis_ac.formula == "6-31G(d)" + assert sec_basis_ac.name == "N31" sec_system = archive.run[0].system - assert sec_system[2].atoms.labels == ['C', 'C', 'H', 'H'] + assert sec_system[2].atoms.labels == ["C", "C", "H", "H"] assert sec_system[-1].atoms.positions[2][2].magnitude == approx(-1.68393902e-10) sec_calc = archive.run[0].calculation assert len(sec_calc) == 6 - assert sec_calc[0].eigenvalues[0].energies[0][0][16].magnitude == approx(2.4780789e-18) - assert sec_calc[5].charges[0].analysis_method == 'Mulliken' + assert sec_calc[0].eigenvalues[0].energies[0][0][16].magnitude == approx( + 2.4780789e-18 + ) + assert sec_calc[5].charges[0].analysis_method == "Mulliken" assert sec_calc[5].charges[1].value[1].magnitude == approx(-3.41098599e-20) assert sec_calc[5].energy.total.value.magnitude == approx(-3.33887277e-16) assert sec_calc[5].energy.total.potential.magnitude == approx(-6.65370978e-16) # assert sec_calc[5].energy.total.kinetic.magnitude == approx(3.31483701e-16) - assert sec_calc[5].energy.x_gamess_two_electron.value.magnitude == approx(2.19797148e-16) + assert sec_calc[5].energy.x_gamess_two_electron.value.magnitude == approx( + 2.19797148e-16 + ) assert sec_calc[5].energy.x_gamess_virial_ratio == approx(2.0072509638) assert len(sec_calc[5].energy.contributions) == 5 - assert sec_calc[5].energy.contributions[1].kind == 'nucleus-electron_potential' + assert sec_calc[5].energy.contributions[1].kind == "nucleus-electron_potential" # assert sec_calc[5].multipoles[0].dipole.origin[1].magnitude == 0 assert sec_calc[5].multipoles[0].dipole.value[2] == 0 @@ -65,15 +71,15 @@ def test_dft(parser): def test_gamess_geometry_opt(parser): archive = EntryArchive() - parser.parse('tests/data/gamess/gamessus/exam01.out', archive, None) + parser.parse("tests/data/gamess/gamessus/exam01.out", archive, None) sec_run = archive.run - assert sec_run[0].program.version == '1 MAY 2013 (R1)' - assert sec_run[0].x_gamess_program_implementation == '64 BIT INTEL VERSION' + assert sec_run[0].program.version == "1 MAY 2013 (R1)" + assert sec_run[0].x_gamess_program_implementation == "64 BIT INTEL VERSION" sec_method = sec_run[0].method assert len(sec_method) == 1 - assert sec_method[0].x_gamess_basis_set_polar == 'NONE' + assert sec_method[0].x_gamess_basis_set_polar == "NONE" assert sec_method[0].atom_parameters[0].charge.magnitude == approx(9.6130598e-19) sec_calc = sec_run[0].calculation @@ -89,26 +95,28 @@ def test_gamess_geometry_opt(parser): assert sec_eigs.occupations[0][0][4] == 0 assert sec_calc[2].forces.total.value[1][2].magnitude == approx(-1.04055078e-10) assert sec_calc[2].time_physical.magnitude == approx(0.2) - assert sec_calc[6].time_calculation.magnitude == approx(0.) + assert sec_calc[6].time_calculation.magnitude == approx(0.0) sec_system = sec_run[0].system assert len(sec_system) == 7 - assert sec_system[0].atoms.labels[1] == 'H' + assert sec_system[0].atoms.labels[1] == "H" assert sec_system[0].atoms.positions[0][2].magnitude == approx(-8.99124183e-12) def test_firefly(parser): archive = EntryArchive() - parser.parse('tests/data/gamess/firefly/bench01.out', archive, None) + parser.parse("tests/data/gamess/firefly/bench01.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'Firefly version 8.2.0' + assert sec_run.program.version == "Firefly version 8.2.0" sec_system = archive.run[0].system - assert sec_system[0].atoms.labels[5] == 'H' + assert sec_system[0].atoms.labels[5] == "H" assert sec_system[0].atoms.positions[7][2].magnitude == approx(-1.219788e-10) sec_scc = sec_run.calculation assert sec_scc[0].charges[0].value[4].magnitude == approx(-1.47147106e-20) - assert sec_scc[0].charges[1].orbital_projected[14].value.magnitude == approx(2.18424741e-20) + assert sec_scc[0].charges[1].orbital_projected[14].value.magnitude == approx( + 2.18424741e-20 + ) diff --git a/tests/test_gaussianparser.py b/tests/test_gaussianparser.py index b987ce0c..792a4794 100644 --- a/tests/test_gaussianparser.py +++ b/tests/test_gaussianparser.py @@ -27,31 +27,41 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return GaussianParser() def test_scf_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/gaussian/Al_scf/Al.out', archive, None) + parser.parse("tests/data/gaussian/Al_scf/Al.out", archive, None) sec_runs = archive.run assert len(sec_runs) == 1 - assert sec_runs[0].x_gaussian_program_implementation == 'EM64L-G09RevB.01' - assert sec_runs[0].x_gaussian_number_of_processors == '8' - assert len(sec_runs[0].x_gaussian_section_orbital_symmetries[0].x_gaussian_alpha_symmetries) == 50 + assert sec_runs[0].x_gaussian_program_implementation == "EM64L-G09RevB.01" + assert sec_runs[0].x_gaussian_number_of_processors == "8" + assert ( + len( + sec_runs[0] + .x_gaussian_section_orbital_symmetries[0] + .x_gaussian_alpha_symmetries + ) + == 50 + ) sec_methods = sec_runs[0].method - assert sec_methods[0].electrons_representation[0].basis_set[0].atom_centered[0].name == 'AUG-CC-PVTZ' + assert ( + sec_methods[0].electrons_representation[0].basis_set[0].atom_centered[0].name + == "AUG-CC-PVTZ" + ) assert len(sec_methods) == 1 - assert sec_methods[0].dft.xc_functional.hybrid[0].name == 'HYB_GGA_XC_B3LYP' + assert sec_methods[0].dft.xc_functional.hybrid[0].name == "HYB_GGA_XC_B3LYP" assert sec_methods[0].electronic.charge.magnitude == -1 sec_systems = sec_runs[0].system assert len(sec_systems) == 1 assert sec_systems[0].atoms.periodic == [False, False, False] - assert sec_systems[0].atoms.labels == ['Al'] + assert sec_systems[0].atoms.labels == ["Al"] sec_sccs = sec_runs[0].calculation assert len(sec_sccs) == 1 @@ -60,16 +70,22 @@ def test_scf_spinpol(parser): assert np.shape(sec_sccs[0].eigenvalues[0].occupations[0][0]) == (50,) assert np.shape(sec_sccs[0].eigenvalues[0].energies[0][0]) == (50,) assert sec_sccs[0].eigenvalues[0].occupations[0][0][7] == 0 - assert sec_sccs[0].eigenvalues[0].energies[0][0][-5].magnitude == approx(4.64011991e-18) - assert sec_sccs[0].x_gaussian_section_molecular_multipoles[0].x_gaussian_molecular_multipole_values[4] == approx(-9.36527896e-39) + assert sec_sccs[0].eigenvalues[0].energies[0][0][-5].magnitude == approx( + 4.64011991e-18 + ) + assert sec_sccs[0].x_gaussian_section_molecular_multipoles[ + 0 + ].x_gaussian_molecular_multipole_values[4] == approx(-9.36527896e-39) assert len(sec_sccs[0].scf_iteration) == 1 - assert sec_sccs[0].scf_iteration[0].energy.total.value.magnitude == approx(-1.05675722e-15) + assert sec_sccs[0].scf_iteration[0].energy.total.value.magnitude == approx( + -1.05675722e-15 + ) assert sec_sccs[0].calculation_converged def test_scf_multirun(parser): archive = EntryArchive() - parser.parse('tests/data/gaussian/Al_multistep/m61b5.out', archive, None) + parser.parse("tests/data/gaussian/Al_multistep/m61b5.out", archive, None) sec_runs = archive.run assert len(sec_runs) == 2 @@ -90,29 +106,52 @@ def test_scf_multirun(parser): sec_thermo = sec_runs[1].calculation[0].thermodynamics[0] assert sec_thermo.temperature.magnitude == approx(298.15) assert sec_thermochem.x_gaussian_moments[1] == approx(8.59409221e-45) - assert sec_thermochem.x_gaussian_thermal_correction_free_energy == approx(-1.00274129e-19) + assert sec_thermochem.x_gaussian_thermal_correction_free_energy == approx( + -1.00274129e-19 + ) def test_mp(parser): archive = EntryArchive() - parser.parse('tests/data/gaussian/NO_mp/onno.out', archive, None) + parser.parse("tests/data/gaussian/NO_mp/onno.out", archive, None) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 17 - approx(sec_sccs[0].x_gaussian_section_moller_plesset[0].x_gaussian_mp2_correction_energy.magnitude, -3.17820357e-18) + approx( + sec_sccs[0] + .x_gaussian_section_moller_plesset[0] + .x_gaussian_mp2_correction_energy.magnitude, + -3.17820357e-18, + ) approx(sec_sccs[-1].energy.total.value.magnitude, -1.12849219e-15) - approx(sec_sccs[3].x_gaussian_section_coupled_cluster[0].x_gaussian_ccsd_correction_energy.magnitude, -3.08257224e-18) + approx( + sec_sccs[3] + .x_gaussian_section_coupled_cluster[0] + .x_gaussian_ccsd_correction_energy.magnitude, + -3.08257224e-18, + ) def test_freq(parser): archive = EntryArchive() - parser.parse('tests/data/gaussian/CHO_freq/prono.out', archive, None) + parser.parse("tests/data/gaussian/CHO_freq/prono.out", archive, None) sec_runs = archive.run assert len(sec_runs) == 2 assert len(sec_runs[1].x_gaussian_section_frequencies) == 1 - assert np.shape(sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_frequencies) == (33,) - assert np.shape(sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_red_masses) == (33,) - assert np.shape(sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_normal_mode_values) == (33, 13, 3) - assert sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_normal_mode_values[28][6][1] == 0.19 + assert np.shape( + sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_frequencies + ) == (33,) + assert np.shape( + sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_red_masses + ) == (33,) + assert np.shape( + sec_runs[1].x_gaussian_section_frequencies[0].x_gaussian_normal_mode_values + ) == (33, 13, 3) + assert ( + sec_runs[1] + .x_gaussian_section_frequencies[0] + .x_gaussian_normal_mode_values[28][6][1] + == 0.19 + ) diff --git a/tests/test_gpawparser.py b/tests/test_gpawparser.py index e239ee17..8a102fd0 100644 --- a/tests/test_gpawparser.py +++ b/tests/test_gpawparser.py @@ -27,28 +27,28 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return GPAWParser() def test_gpw(parser): archive = EntryArchive() - parser.parse('tests/data/gpaw/H2.gpw', archive, None) + parser.parse("tests/data/gpaw/H2.gpw", archive, None) - assert archive.run[0].program.version == '1.1.0' + assert archive.run[0].program.version == "1.1.0" sec_method = archive.run[0].method[0] sec_basis = sec_method.electrons_representation[0].basis_set[0] - assert sec_basis.type == 'real-space grid' + assert sec_basis.type == "real-space grid" assert sec_method.scf.threshold_energy_change.magnitude == approx(1.42196374e-24) assert sec_method.electronic.smearing.width == 0.0 assert sec_method.electronic.charge == 0.0 - assert sec_method.dft.xc_functional.correlation[0].name == 'LDA_C_PW' + assert sec_method.dft.xc_functional.correlation[0].name == "LDA_C_PW" assert sec_method.x_gpaw_symmetry_time_reversal_switch sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels == ['H', 'H'] + assert sec_system.atoms.labels == ["H", "H"] assert sec_system.atoms.lattice_vectors[2][2].magnitude == approx(4.73716558e-10) assert True not in sec_system.atoms.periodic assert sec_system.atoms.positions[0][2].magnitude == approx(2.73716576e-10) @@ -67,21 +67,21 @@ def test_gpw(parser): def test_gpw2(parser): archive = EntryArchive() - parser.parse('tests/data/gpaw/Si_pw.gpw2', archive, None) + parser.parse("tests/data/gpaw/Si_pw.gpw2", archive, None) - assert archive.run[0].program.version == '1.1.1b1' + assert archive.run[0].program.version == "1.1.1b1" sec_method = archive.run[0].method[0] sec_basis = sec_method.electrons_representation[0].basis_set[0] - assert sec_basis.type == 'plane waves' + assert sec_basis.type == "plane waves" assert sec_basis.cutoff.magnitude == approx(4.8065299e-17) assert sec_method.scf.threshold_energy_change.magnitude == approx(8.01088317e-23) assert sec_method.electronic.smearing.width == approx(1.60217663e-20) assert not sec_method.x_gpaw_fix_density - assert sec_method.dft.xc_functional.exchange[0].name == 'LDA_X' + assert sec_method.dft.xc_functional.exchange[0].name == "LDA_X" sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels == ['Si', 'Si'] + assert sec_system.atoms.labels == ["Si", "Si"] assert sec_system.atoms.lattice_vectors[0][1].magnitude == approx(2.715e-10) assert False not in sec_system.atoms.periodic assert sec_system.atoms.positions[1][0].magnitude == approx(1.3575e-10) @@ -97,27 +97,27 @@ def test_gpw2(parser): def test_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/gpaw/Hspinpol.gpw', archive, None) + parser.parse("tests/data/gpaw/Hspinpol.gpw", archive, None) sec_eig = archive.run[0].calculation[0].eigenvalues[0] assert np.shape(sec_eig.kpoints) == (1, 3) assert np.shape(sec_eig.occupations[1][0]) == (1,) assert np.shape(sec_eig.energies[1][0]) == (1,) assert sec_eig.energies[0][0][0].magnitude == approx(-1.20983278e-18) - assert archive.run[0].calculation[0].x_gpaw_magnetic_moments[0] == 1. + assert archive.run[0].calculation[0].x_gpaw_magnetic_moments[0] == 1.0 def test_lcao(parser): archive = EntryArchive() - parser.parse('tests/data/gpaw/Si_lcao.gpw2', archive, None) + parser.parse("tests/data/gpaw/Si_lcao.gpw2", archive, None) - assert archive.run[0].program.version == '1.1.1b1' + assert archive.run[0].program.version == "1.1.1b1" sec_method = archive.run[0].method[0] sec_basis = sec_method.electrons_representation[0].basis_set[0] - assert sec_basis.type == 'numeric AOs' + assert sec_basis.type == "numeric AOs" sec_density = archive.run[0].calculation[0].density_charge[0] sec_potential = archive.run[0].calculation[0].potential[0].effective[0] - assert sec_density.value[0][13][2][8].magnitude == approx(8.70353098415676e+28) + assert sec_density.value[0][13][2][8].magnitude == approx(8.70353098415676e28) assert sec_potential.value[0][5][14][1].magnitude == approx(-1235219198924.2632) diff --git a/tests/test_molcasparser.py b/tests/test_molcasparser.py index 04e59e9c..9c2af495 100644 --- a/tests/test_molcasparser.py +++ b/tests/test_molcasparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return MolcasParser() @@ -34,14 +34,14 @@ def parser(): def test_basic(parser): archive = EntryArchive() - parser.parse('tests/data/molcas/test000.input.out', archive, None) + parser.parse("tests/data/molcas/test000.input.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '7.8 patchlevel 047' + assert sec_run.program.version == "7.8 patchlevel 047" sec_system = archive.run[0].system[0] assert sec_system.atoms.positions[1][0].magnitude == approx(-3.5e-11) - assert sec_system.atoms.labels == ['H', 'H'] + assert sec_system.atoms.labels == ["H", "H"] sec_sccs = sec_run.calculation[0] assert sec_sccs.energy.total.value.magnitude == approx(-4.89497079e-18) @@ -50,7 +50,7 @@ def test_basic(parser): def test_1(parser): archive = EntryArchive() - parser.parse('tests/data/molcas/test003.input.out', archive, None) + parser.parse("tests/data/molcas/test003.input.out", archive, None) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 61 diff --git a/tests/test_mopacparser.py b/tests/test_mopacparser.py index 18e4b108..74e06f06 100644 --- a/tests/test_mopacparser.py +++ b/tests/test_mopacparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return MopacParser() @@ -34,35 +34,43 @@ def parser(): def test_spin_pol(parser): archive = EntryArchive() - parser.parse('tests/data/mopac/O2.out', archive, None) + parser.parse("tests/data/mopac/O2.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '15.347L' + assert sec_run.program.version == "15.347L" assert sec_run.time_run.date_start > 0 sec_method = sec_run.method[0] - sec_method.x_mopac_method == 'PM7' - assert 'TRIPLET' in sec_method.x_mopac_calculation_parameters + sec_method.x_mopac_method == "PM7" + assert "TRIPLET" in sec_method.x_mopac_calculation_parameters sec_system = sec_run.system[0] assert sec_system.atoms.positions[0][1].magnitude == approx(3e-10) - assert sec_system.atoms.labels == ['O', 'O'] + assert sec_system.atoms.labels == ["O", "O"] sec_calc = sec_run.calculation[0] assert sec_calc.energy.total.value.magnitude == approx(-9.40492697e-17) - assert sec_calc.forces.total.value[1][2].magnitude == approx(-1.0555523514531733e-08) + assert sec_calc.forces.total.value[1][2].magnitude == approx( + -1.0555523514531733e-08 + ) assert sec_calc.x_mopac_fhof.magnitude == approx(2.98139507e-21) assert sec_calc.energy.electronic.value.magnitude == approx(-1.48484844e-16) - assert sec_calc.eigenvalues[0].energies[0][0][2].magnitude == approx(-2.92861066e-18) - assert sec_calc.eigenvalues[0].energies[1][0][5].magnitude == approx(-3.26395424e-20) - assert sec_calc.eigenvalues[0].occupations[0][0][7] == 0. - assert sec_calc.eigenvalues[0].occupations[1][0][4] == 1. - assert sec_calc.multipoles[0].dipole.total == 0. + assert sec_calc.eigenvalues[0].energies[0][0][2].magnitude == approx( + -2.92861066e-18 + ) + assert sec_calc.eigenvalues[0].energies[1][0][5].magnitude == approx( + -3.26395424e-20 + ) + assert sec_calc.eigenvalues[0].occupations[0][0][7] == 0.0 + assert sec_calc.eigenvalues[0].occupations[1][0][4] == 1.0 + assert sec_calc.multipoles[0].dipole.total == 0.0 assert sec_calc.charges[0].value[1].magnitude == approx(9.6130598e-19) - assert sec_calc.charges[0].orbital_projected[3].value.magnitude == approx(1.64698951e-19) + assert sec_calc.charges[0].orbital_projected[3].value.magnitude == approx( + 1.64698951e-19 + ) assert sec_calc.charges[0].orbital_projected[2].atom_index == 0 - assert sec_calc.charges[0].orbital_projected[5].atom_label == 'O' - assert sec_calc.charges[0].orbital_projected[6].orbital == 'py' + assert sec_calc.charges[0].orbital_projected[5].atom_label == "O" + assert sec_calc.charges[0].orbital_projected[6].orbital == "py" assert sec_calc.spin_S2 == approx(2.002364) assert sec_calc.time_calculation.magnitude == approx(0.008) assert sec_calc.time_physical.magnitude == approx(0.016) @@ -71,14 +79,18 @@ def test_spin_pol(parser): def test_non_spin_pol(parser): archive = EntryArchive() - parser.parse('tests/data/mopac/C6H6.out', archive, None) + parser.parse("tests/data/mopac/C6H6.out", archive, None) sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels[6] == 'H' + assert sec_system.atoms.labels[6] == "H" sec_calc = archive.run[0].calculation[0] assert sec_calc.energy.total.value.magnitude == approx(-1.30987804e-16) - assert sec_calc.eigenvalues[0].energies[0][0][4].magnitude == approx(-3.35031637e-18) - assert sec_calc.eigenvalues[0].occupations[0][0][14] == 2. - assert sec_calc.charges[0].orbital_projected[24].orbital == 's' - assert sec_calc.charges[0].orbital_projected[6].value.magnitude == approx(1.61840668e-19) + assert sec_calc.eigenvalues[0].energies[0][0][4].magnitude == approx( + -3.35031637e-18 + ) + assert sec_calc.eigenvalues[0].occupations[0][0][14] == 2.0 + assert sec_calc.charges[0].orbital_projected[24].orbital == "s" + assert sec_calc.charges[0].orbital_projected[6].value.magnitude == approx( + 1.61840668e-19 + ) diff --git a/tests/test_nwchemparser.py b/tests/test_nwchemparser.py index e23b4514..ff054638 100644 --- a/tests/test_nwchemparser.py +++ b/tests/test_nwchemparser.py @@ -26,27 +26,27 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return NWChemParser() def test_single_point(parser): archive = EntryArchive() - parser.parse('tests/data/nwchem/single_point.out', archive, None) + parser.parse("tests/data/nwchem/single_point.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '6.6' - assert sec_run.x_nwchem_section_start_information[0].x_nwchem_ga_revision == '10594' + assert sec_run.program.version == "6.6" + assert sec_run.x_nwchem_section_start_information[0].x_nwchem_ga_revision == "10594" sec_method = archive.run[0].method[0] - assert sec_method.electrons_representation[0].basis_set[0].type == 'gaussians' + assert sec_method.electrons_representation[0].basis_set[0].type == "gaussians" assert sec_method.scf.n_max_iteration == 50 assert len(sec_method.dft.xc_functional.correlation) == 1 - assert sec_method.dft.xc_functional.correlation[0].name == 'MGGA_C_TPSS' + assert sec_method.dft.xc_functional.correlation[0].name == "MGGA_C_TPSS" assert sec_method.dft.xc_functional.exchange[0].weight == 1.0 - assert archive.workflow2.m_def.name == 'SinglePoint' + assert archive.workflow2.m_def.name == "SinglePoint" sec_scc = archive.run[0].calculation[0] assert sec_scc.energy.total.value.magnitude == approx(-3.332424186333889e-16) @@ -66,11 +66,13 @@ def test_single_point(parser): def test_geometry_optimization(parser): archive = EntryArchive() - parser.parse('tests/data/nwchem/geometry_optimization.out', archive, None) + parser.parse("tests/data/nwchem/geometry_optimization.out", archive, None) sec_methods = archive.run[0].method assert len(sec_methods) == 4 - assert sec_methods[1].scf.threshold_energy_change.magnitude == approx(4.35974472e-24) + assert sec_methods[1].scf.threshold_energy_change.magnitude == approx( + 4.35974472e-24 + ) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 4 @@ -89,20 +91,24 @@ def test_geometry_optimization(parser): def test_molecular_dynamics(parser): archive = EntryArchive() - parser.parse('tests/data/nwchem/molecular_dynamics.out', archive, None) + parser.parse("tests/data/nwchem/molecular_dynamics.out", archive, None) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 6 assert sec_sccs[2].energy.xc.value.magnitude == approx(-4.04565658e-17) - assert sec_sccs[5].x_nwchem_section_qmd_step[0].x_nwchem_qmd_step_total_energy.magnitude == approx(-3.32745352e-16) - assert sec_sccs[2].x_nwchem_section_qmd_step[0].x_nwchem_qmd_step_dipole[1] == approx(1.141435e-01) + assert sec_sccs[5].x_nwchem_section_qmd_step[ + 0 + ].x_nwchem_qmd_step_total_energy.magnitude == approx(-3.32745352e-16) + assert sec_sccs[2].x_nwchem_section_qmd_step[0].x_nwchem_qmd_step_dipole[ + 1 + ] == approx(1.141435e-01) assert sec_sccs[2].time_calculation.magnitude == approx(0.4) assert sec_sccs[4].time_physical.magnitude == approx(1.8) def test_pw(parser): archive = EntryArchive() - parser.parse('tests/data/nwchem/pw.out', archive, None) + parser.parse("tests/data/nwchem/pw.out", archive, None) sec_sccs = archive.run[0].calculation assert sec_sccs[1].energy.total.value.magnitude == approx(-8.89979631e-17) diff --git a/tests/test_oceanparser.py b/tests/test_oceanparser.py index 78420dc1..34938c3e 100644 --- a/tests/test_oceanparser.py +++ b/tests/test_oceanparser.py @@ -27,7 +27,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return OceanParser() @@ -35,28 +35,32 @@ def parser(): def test_tio2(parser): # Testing the photon_workflow_archive, from empty photon_archives, hence no sections program nor system. archive = EntryArchive() - parser.parse('tests/data/ocean/ms-10734/Spectra-1-1-1/postDefaultsOceanDatafile', archive, None) + parser.parse( + "tests/data/ocean/ms-10734/Spectra-1-1-1/postDefaultsOceanDatafile", + archive, + None, + ) sec_run = archive.run[-1] # Method sec_method = sec_run.method assert len(sec_method) == 1 - assert sec_method[-1].m_xpath('bse') + assert sec_method[-1].m_xpath("bse") sec_bse = sec_method[-1].bse - assert sec_bse.type == 'Singlet' - assert sec_bse.solver == 'Lanczos-Haydock' + assert sec_bse.type == "Singlet" + assert sec_bse.solver == "Lanczos-Haydock" assert sec_bse.n_states == 119 - assert sec_bse.broadening.to('eV').magnitude == approx(0.1) + assert sec_bse.broadening.to("eV").magnitude == approx(0.1) assert (sec_bse.q_mesh.grid == np.array([1, 1, 1])).all() - assert sec_bse.screening.type == 'core' + assert sec_bse.screening.type == "core" assert sec_bse.screening.n_states == 472 assert sec_bse.screening.dielectric_infinity == 1000000 assert (sec_bse.screening.k_mesh.grid == np.array([3, 3, 2])).all() assert (sec_method[-1].x_ocean_edges[0] == np.array([1, 1, 0])).all() - assert sec_bse.core_hole.solver == 'Lanczos-Haydock' - assert sec_bse.core_hole.mode == 'absorption' - assert sec_bse.core_hole.broadening.to('eV').magnitude == approx(0.89) + assert sec_bse.core_hole.solver == "Lanczos-Haydock" + assert sec_bse.core_hole.mode == "absorption" + assert sec_bse.core_hole.broadening.to("eV").magnitude == approx(0.89) sec_ocean_screen = sec_method[-1].x_ocean_screen assert sec_ocean_screen.m_mod_count == 22 assert sec_ocean_screen.x_ocean_dft_energy_range == approx(150.0) diff --git a/tests/test_octopusparser.py b/tests/test_octopusparser.py index 8f83dfec..4d0b15ce 100644 --- a/tests/test_octopusparser.py +++ b/tests/test_octopusparser.py @@ -27,29 +27,29 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return OctopusParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/octopus/Si_scf/stdout.txt', archive, None) + parser.parse("tests/data/octopus/Si_scf/stdout.txt", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'wolfi' + assert sec_run.program.version == "wolfi" assert sec_run.x_octopus_input_Spacing == approx(0.28345892) assert sec_run.x_octopus_parserlog_SpeciesProjectorSphereThreshold == 0.001 sec_method = sec_run.method[0] assert list(sec_method.k_mesh.grid) == [4] * 3 - assert sec_method.electronic.smearing.kind == 'empty' - assert sec_method.electronic.method == 'DFT' - assert sec_method.dft.xc_functional.correlation[0].name == 'LDA_C_PZ_MOD' + assert sec_method.electronic.smearing.kind == "empty" + assert sec_method.electronic.method == "DFT" + assert sec_method.dft.xc_functional.correlation[0].name == "LDA_C_PZ_MOD" sec_system = sec_run.system[0] assert False not in sec_system.atoms.periodic - assert sec_system.atoms.labels == ['Si', 'Si', 'Si', 'Si'] + assert sec_system.atoms.labels == ["Si", "Si", "Si", "Si"] assert sec_system.atoms.positions[1][0].magnitude == approx(1.91979671e-10) sec_scc = sec_run.calculation[0] @@ -72,11 +72,11 @@ def test_scf(parser): def test_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/octopus/Fe_spinpol/stdout.txt', archive, None) + parser.parse("tests/data/octopus/Fe_spinpol/stdout.txt", archive, None) sec_run = archive.run[0] - assert sec_run.x_octopus_parserlog_SpinComponents == '2' - assert sec_run.x_octopus_input_Units == 'ev_angstrom' + assert sec_run.x_octopus_parserlog_SpinComponents == "2" + assert sec_run.x_octopus_input_Units == "ev_angstrom" assert sec_run.x_octopus_parserlog_PreconditionerFilterFactor == 0.6 sec_method = sec_run.method[0] diff --git a/tests/test_onetepparser.py b/tests/test_onetepparser.py index 9369a6c5..5f57c1c3 100644 --- a/tests/test_onetepparser.py +++ b/tests/test_onetepparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return OnetepParser() @@ -34,43 +34,57 @@ def parser(): def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/onetep/fluor/12-difluoroethane.out', archive, None) + parser.parse("tests/data/onetep/fluor/12-difluoroethane.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '4.5.3.32' + assert sec_run.program.version == "4.5.3.32" assert sec_run.time_run.date_end.magnitude == approx(1474976160.0) sec_system = sec_run.system - assert sec_system[0].atoms.lattice_vectors[2][2].magnitude == approx(1.29648417e-09,) + assert sec_system[0].atoms.lattice_vectors[2][2].magnitude == approx( + 1.29648417e-09, + ) assert sec_system[0].atoms.positions[3][2].magnitude == approx(5.7072299e-10) - assert sec_system[0].atoms.labels[7] == 'H' + assert sec_system[0].atoms.labels[7] == "H" sec_scc = sec_run.calculation assert len(sec_scc) == 1 assert sec_scc[0].energy.total.value.magnitude == approx(-2.72023829e-16) - assert sec_scc[0].energy.kinetic_electronic.value.magnitude == approx(1.89937757e-16) - assert sec_scc[0].energy.correction_hartree.value.magnitude == approx(3.87263469e-16) - assert sec_scc[0].energy.x_onetep_pseudopotential_local.value.magnitude == approx(-9.80296609e-16) + assert sec_scc[0].energy.kinetic_electronic.value.magnitude == approx( + 1.89937757e-16 + ) + assert sec_scc[0].energy.correction_hartree.value.magnitude == approx( + 3.87263469e-16 + ) + assert sec_scc[0].energy.x_onetep_pseudopotential_local.value.magnitude == approx( + -9.80296609e-16 + ) assert sec_scc[0].energy.xc.value.magnitude == approx(-6.21292141e-17) assert len(sec_scc[0].scf_iteration) == 4 sec_method = sec_run.method[0] - assert sec_method.electrons_representation[0].basis_set[0].cutoff.to('Ha').magnitude == approx(30.38533) + assert sec_method.electrons_representation[0].basis_set[0].cutoff.to( + "Ha" + ).magnitude == approx(30.38533) def test_relax(parser): archive = EntryArchive() - parser.parse('tests/data/onetep/test08/ethene_relax.out', archive, None) + parser.parse("tests/data/onetep/test08/ethene_relax.out", archive, None) sec_method = archive.run[0].method - assert sec_method[0].dft.xc_functional.exchange[0].name == 'LDA_X_PZ' - assert sec_method[0].x_onetep_input_parameters['ngwf_threshold_orig'] == approx(1e-5) - assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to('Ha').magnitude == approx(20.05907) + assert sec_method[0].dft.xc_functional.exchange[0].name == "LDA_X_PZ" + assert sec_method[0].x_onetep_input_parameters["ngwf_threshold_orig"] == approx( + 1e-5 + ) + assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to( + "Ha" + ).magnitude == approx(20.05907) sec_system = archive.run[0].system assert len(sec_system) == 3 - assert sec_system[0].atoms.labels == ['C', 'H', 'H', 'C', 'H', 'H'] + assert sec_system[0].atoms.labels == ["C", "H", "H", "C", "H", "H"] assert sec_system[0].atoms.positions[3][1].magnitude == approx(1.06563278e-09) assert sec_system[1].atoms.positions[5][0].magnitude == approx(9.36407121e-10) assert sec_system[2].atoms.lattice_vectors[1][1].magnitude == approx(2.11670884e-09) @@ -79,36 +93,52 @@ def test_relax(parser): assert len(sec_scc) == 3 assert sec_scc[2].system_ref == sec_system[2] assert sec_scc[0].energy.total.value.magnitude == approx(-5.95750082e-17) - assert sec_scc[0].energy.correction_hartree.value.magnitude == approx(1.08846112e-16) + assert sec_scc[0].energy.correction_hartree.value.magnitude == approx( + 1.08846112e-16 + ) assert len(sec_scc[1].scf_iteration) == 9 - assert sec_scc[1].scf_iteration[7].energy.total.value.magnitude == approx(-5.96007361e-17) + assert sec_scc[1].scf_iteration[7].energy.total.value.magnitude == approx( + -5.96007361e-17 + ) def test_tddft(parser): archive = EntryArchive() - parser.parse('tests/data/onetep/ethene/ethene_tddft.out', archive, None) + parser.parse("tests/data/onetep/ethene/ethene_tddft.out", archive, None) sec_method = archive.run[0].method - assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to('Ha').magnitude == approx(14.88881) + assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to( + "Ha" + ).magnitude == approx(14.88881) sec_scc = archive.run[0].calculation assert len(sec_scc) == 1 assert sec_scc[0].energy.total.value.magnitude == approx(2.60907575e-18) assert len(sec_scc[0].scf_iteration) == 15 - assert sec_scc[0].scf_iteration[12].energy.total.value.magnitude == approx(2.60907651e-18) - assert sec_scc[0].x_onetep_section_tddft[0].x_onetep_section_tddft_excitations[0].x_onetep_tddft_excit_energy.magnitude == approx(1.25314575e-18) - assert sec_scc[0].x_onetep_section_tddft[0].x_onetep_section_tddft_excitations[1].x_onetep_tddft_excit_oscill_str == approx(0.35891E-02) - assert sec_scc[0].x_onetep_section_tddft[0].x_onetep_section_tddft_excitations[1].x_onetep_tddft_excit_lifetime.magnitude == approx(8.9651e-08) + assert sec_scc[0].scf_iteration[12].energy.total.value.magnitude == approx( + 2.60907651e-18 + ) + assert sec_scc[0].x_onetep_section_tddft[0].x_onetep_section_tddft_excitations[ + 0 + ].x_onetep_tddft_excit_energy.magnitude == approx(1.25314575e-18) + assert sec_scc[0].x_onetep_section_tddft[0].x_onetep_section_tddft_excitations[ + 1 + ].x_onetep_tddft_excit_oscill_str == approx(0.35891e-02) + assert sec_scc[0].x_onetep_section_tddft[0].x_onetep_section_tddft_excitations[ + 1 + ].x_onetep_tddft_excit_lifetime.magnitude == approx(8.9651e-08) def test_charges(parser): archive = EntryArchive() - parser.parse('tests/data/onetep/test20/test20.out', archive, None) + parser.parse("tests/data/onetep/test20/test20.out", archive, None) sec_method = archive.run[0].method - assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to('Ha').magnitude == approx(31.36667) + assert sec_method[0].electrons_representation[0].basis_set[0].cutoff.to( + "Ha" + ).magnitude == approx(31.36667) sec_scc = archive.run[0].calculation assert len(sec_scc) == 1 diff --git a/tests/test_openmxparser.py b/tests/test_openmxparser.py index 12e2a8ee..18e1fa32 100644 --- a/tests/test_openmxparser.py +++ b/tests/test_openmxparser.py @@ -54,14 +54,14 @@ def approx(value): def test_HfO2(parser): - ''' + """ Simple single point calculation monoclinic HfO2 test case. - ''' + """ archive = EntryArchive() - parser.parse('tests/data/openmx/HfO2_single_point/m-HfO2.out', archive, logging) + parser.parse("tests/data/openmx/HfO2_single_point/m-HfO2.out", archive, logging) run = archive.run[0] - assert run.program.version == '3.9.2' + assert run.program.version == "3.9.2" assert run.clean_end scc = run.calculation assert len(scc) == 1 @@ -71,12 +71,12 @@ def test_HfO2(parser): scf[3].energy.sum_eigenvalues.value.magnitude == approx(-3.916702417016777e-16) method = run.method[0] - assert method.electrons_representation[0].basis_set[0].type == 'numeric AOs' + assert method.electrons_representation[0].basis_set[0].type == "numeric AOs" assert method.electronic.n_spin_channels == 1 - assert method.electronic.method == 'DFT' + assert method.electronic.method == "DFT" assert method.electronic.smearing.width == approx(K_to_J(300)) - assert method.dft.xc_functional.correlation[0].name == 'GGA_C_PBE' - assert method.dft.xc_functional.exchange[0].name == 'GGA_X_PBE' + assert method.dft.xc_functional.correlation[0].name == "GGA_C_PBE" + assert method.dft.xc_functional.exchange[0].name == "GGA_X_PBE" system = run.system[0] assert system.atoms.periodic == [True, True, True] @@ -86,18 +86,18 @@ def test_HfO2(parser): assert system.atoms.positions[5][0].magnitude == approx(A_to_m(-0.3293636)) assert system.atoms.positions[11][2].magnitude == approx(A_to_m(2.6762159)) assert len(system.atoms.labels) == 12 - assert system.atoms.labels[9] == 'O' + assert system.atoms.labels[9] == "O" def test_AlN(parser): - ''' + """ Geometry optimization (atomic positions only) AlN test case. - ''' + """ archive = EntryArchive() - parser.parse('tests/data/openmx/AlN_ionic_optimization/AlN.out', archive, logging) + parser.parse("tests/data/openmx/AlN_ionic_optimization/AlN.out", archive, logging) run = archive.run[0] - assert run.program.version == '3.9.2' + assert run.program.version == "3.9.2" assert run.clean_end scc = run.calculation assert len(scc) == 5 @@ -115,11 +115,11 @@ def test_AlN(parser): method = run.method[0] assert method.electronic.n_spin_channels == 1 - assert method.electronic.method == 'DFT' + assert method.electronic.method == "DFT" assert method.electronic.smearing.width == approx(K_to_J(300)) - assert method.electronic.van_der_waals_method == '' - assert method.dft.xc_functional.correlation[0].name == 'GGA_C_PBE' - assert method.dft.xc_functional.exchange[0].name == 'GGA_X_PBE' + assert method.electronic.van_der_waals_method == "" + assert method.dft.xc_functional.correlation[0].name == "GGA_C_PBE" + assert method.dft.xc_functional.exchange[0].name == "GGA_X_PBE" assert method.scf.n_max_iteration == 100 assert method.scf.threshold_energy_change.magnitude == approx(Ha_to_J(1e-7)) @@ -127,7 +127,8 @@ def test_AlN(parser): assert workflow.method.method == "steepest_descent" assert workflow.method.optimization_steps_maximum == 50 assert workflow.method.convergence_tolerance_force_maximum.magnitude == approx( - (0.0003 * units.hartree / units.bohr).to_base_units().magnitude) + (0.0003 * units.hartree / units.bohr).to_base_units().magnitude + ) assert len(run.system) == 5 system = run.system[0] @@ -138,7 +139,7 @@ def test_AlN(parser): assert system.atoms.positions[0][0].magnitude == approx(A_to_m(1.55499)) assert system.atoms.positions[3][2].magnitude == approx(A_to_m(4.39210)) assert len(system.atoms.labels) == 4 - assert system.atoms.labels[3] == 'N' + assert system.atoms.labels[3] == "N" system = run.system[0] assert np.shape(system.atoms.velocities) == (4, 3) assert system.atoms.velocities[0][0].magnitude == pytest.approx(0.0) @@ -150,7 +151,7 @@ def test_AlN(parser): assert system.atoms.positions[0][1].magnitude == approx(A_to_m(0.89807)) assert system.atoms.positions[2][2].magnitude == approx(A_to_m(1.90030)) assert len(system.atoms.labels) == 4 - assert system.atoms.labels[0] == 'Al' + assert system.atoms.labels[0] == "Al" system = run.system[4] assert system.atoms.lattice_vectors[0][0].magnitude == approx(A_to_m(3.10997)) assert system.atoms.lattice_vectors[2][2].magnitude == approx(A_to_m(4.98010)) @@ -158,7 +159,7 @@ def test_AlN(parser): assert system.atoms.positions[0][2].magnitude == approx(A_to_m(0.00253)) assert system.atoms.positions[3][2].magnitude == approx(A_to_m(4.39015)) assert len(system.atoms.labels) == 4 - assert system.atoms.labels[1] == 'Al' + assert system.atoms.labels[1] == "Al" eigenvalues = run.calculation[-1].eigenvalues[0] assert eigenvalues.n_kpoints == 74 @@ -168,18 +169,20 @@ def test_AlN(parser): assert eigenvalues.kpoints[73][2] == pytest.approx(0.0) assert np.shape(eigenvalues.energies) == (1, 74, 52) assert eigenvalues.energies[0, 0, 0].magnitude == approx(Ha_to_J(-0.77128985545768)) - assert eigenvalues.energies[0, 73, 51].magnitude == approx(Ha_to_J(4.86822333092339)) + assert eigenvalues.energies[0, 73, 51].magnitude == approx( + Ha_to_J(4.86822333092339) + ) def test_C2N2(parser): - ''' + """ Molecular dynamics using the Nose-Hover thermostat for simple N2H2 molecule - ''' + """ archive = EntryArchive() - parser.parse('tests/data/openmx/C2H2_molecular_dynamics/C2H2.out', archive, logging) + parser.parse("tests/data/openmx/C2H2_molecular_dynamics/C2H2.out", archive, logging) run = archive.run[0] - assert run.program.version == '3.9.2' + assert run.program.version == "3.9.2" assert run.clean_end scc = run.calculation assert len(scc) == 100 @@ -195,10 +198,10 @@ def test_C2N2(parser): method = run.method[0] assert method.electronic.n_spin_channels == 1 - assert method.electronic.method == 'DFT' + assert method.electronic.method == "DFT" assert method.electronic.smearing.width == approx(K_to_J(500)) - assert method.dft.xc_functional.exchange[0].name == 'LDA_X' - assert method.dft.xc_functional.correlation[0].name == 'LDA_C_PZ' + assert method.dft.xc_functional.exchange[0].name == "LDA_X" + assert method.dft.xc_functional.correlation[0].name == "LDA_C_PZ" workflow = archive.workflow2 assert workflow.method.thermodynamic_ensemble == "NVT" @@ -242,21 +245,21 @@ def test_C2N2(parser): def test_CrO2(parser): - ''' + """ Single run of feromagnetic CrO2 using LDA+U - ''' + """ archive = EntryArchive() - parser.parse('tests/data/openmx/CrO2_single_point/CrO2.out', archive, logging) + parser.parse("tests/data/openmx/CrO2_single_point/CrO2.out", archive, logging) run = archive.run[0] method = run.method[0] assert method.electronic.n_spin_channels == 2 - assert method.electronic.method == 'DFT+U' + assert method.electronic.method == "DFT+U" assert method.electronic.smearing.width == approx(K_to_J(500)) - assert method.electronic.van_der_waals_method == '' - assert method.dft.xc_functional.exchange[0].name == 'LDA_X' - assert method.dft.xc_functional.correlation[0].name == 'LDA_C_PW' + assert method.electronic.van_der_waals_method == "" + assert method.dft.xc_functional.exchange[0].name == "LDA_X" + assert method.dft.xc_functional.correlation[0].name == "LDA_C_PW" assert method.scf.n_max_iteration == 40 assert method.scf.threshold_energy_change.magnitude == approx(Ha_to_J(1e-7)) @@ -265,23 +268,29 @@ def test_CrO2(parser): assert np.shape(eigenvalues.kpoints) == (100, 3) assert eigenvalues.kpoints[39, 2] == approx(0.43750) assert np.shape(eigenvalues.energies) == (2, 100, 90) - assert eigenvalues.energies[0, 42, 8].magnitude == approx(Ha_to_J(-0.92962144255459)) - assert eigenvalues.energies[1, 99, 89].magnitude == approx(Ha_to_J(13.66867939417960)) + assert eigenvalues.energies[0, 42, 8].magnitude == approx( + Ha_to_J(-0.92962144255459) + ) + assert eigenvalues.energies[1, 99, 89].magnitude == approx( + Ha_to_J(13.66867939417960) + ) def test_graphite(parser): - ''' + """ Variable cell optimization of graphite with PBE and DFT-D3 - ''' + """ archive = EntryArchive() - parser.parse('tests/data/openmx/graphite_cell_optimization/graphite.out', archive, logging) + parser.parse( + "tests/data/openmx/graphite_cell_optimization/graphite.out", archive, logging + ) run = archive.run[0] method = run.method[0] assert method.electronic.n_spin_channels == 1 - assert method.electronic.method == 'DFT' + assert method.electronic.method == "DFT" assert method.electronic.smearing.width == approx(K_to_J(1000)) - assert method.electronic.van_der_waals_method == 'G10' + assert method.electronic.van_der_waals_method == "G10" assert method.scf.n_max_iteration == 100 assert method.scf.threshold_energy_change.magnitude == approx(Ha_to_J(1e-8)) diff --git a/tests/test_orcaparser.py b/tests/test_orcaparser.py index 2d59dae6..d99159d1 100644 --- a/tests/test_orcaparser.py +++ b/tests/test_orcaparser.py @@ -27,33 +27,33 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return OrcaParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/orca/CO_scf/orca3.2985087.out', archive, None) + parser.parse("tests/data/orca/CO_scf/orca3.2985087.out", archive, None) - assert archive.run[0].program.version == '3.0.3 - RELEASE -' + assert archive.run[0].program.version == "3.0.3 - RELEASE -" sec_method = archive.run[0].method[0] - assert sec_method.electronic.method == 'DFT' + assert sec_method.electronic.method == "DFT" assert sec_method.x_orca_nelectrons == 14.0 - assert sec_method.scf.threshold_energy_change.to('hartree').magnitude == 1.e-6 - assert sec_method.scf.threshold_density_change == 1.e-6 + assert sec_method.scf.threshold_energy_change.to("hartree").magnitude == 1.0e-6 + assert sec_method.scf.threshold_density_change == 1.0e-6 assert sec_method.scf.x_orca_last_max_density_change == 1e-5 - assert sec_method.x_orca_radial_grid_type == 'Gauss-Chebyshev' + assert sec_method.x_orca_radial_grid_type == "Gauss-Chebyshev" assert len(sec_method.dft.xc_functional.exchange) == 2 - assert sec_method.dft.xc_functional.correlation[0].name == 'GGA_C_LYP' + assert sec_method.dft.xc_functional.correlation[0].name == "GGA_C_LYP" sec_basis = sec_method.electrons_representation[0].basis_set assert len(sec_basis) == 3 - assert sec_basis[1].x_orca_basis_set == '11s6p2d1f' + assert sec_basis[1].x_orca_basis_set == "11s6p2d1f" assert sec_basis[2].x_orca_nb_of_primitive_gaussian_functions == 92 sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels == ['C', 'O'] + assert sec_system.atoms.labels == ["C", "O"] assert sec_system.atoms.positions[1][0].magnitude == approx(1.25e-10) assert len(archive.run[0].calculation) == 1 @@ -62,7 +62,9 @@ def test_scf(parser): assert sec_scc.x_orca_potential_energy == approx(-9.84253575e-16) assert sec_scc.x_orca_nb_elect_total == approx(14.000005402207) assert len(sec_scc.scf_iteration) == 8 - assert sec_scc.scf_iteration[3].energy.total.value.magnitude == approx(-4.94113458e-16) + assert sec_scc.scf_iteration[3].energy.total.value.magnitude == approx( + -4.94113458e-16 + ) assert np.shape(sec_scc.eigenvalues[0].energies[0][0]) == (62,) assert sec_scc.eigenvalues[0].energies[0][0][28].magnitude == approx(6.53237991e-18) assert sec_scc.eigenvalues[0].occupations[0][0][6] == 2.0 @@ -74,7 +76,7 @@ def test_scf(parser): def test_geomopt(parser): archive = EntryArchive() - parser.parse('tests/data/orca/CHO_geomopt/orca3.2985006.out', archive, None) + parser.parse("tests/data/orca/CHO_geomopt/orca3.2985006.out", archive, None) sec_run = archive.run[0] assert len(sec_run.method) == 6 @@ -93,7 +95,7 @@ def test_geomopt(parser): def test_spinpol(parser): archive = EntryArchive() - parser.parse('tests/data/orca/BO_spinpol/orca3.2984863.out', archive, None) + parser.parse("tests/data/orca/BO_spinpol/orca3.2984863.out", archive, None) assert archive.run[0].method[0].x_orca_multiplicity == 2 sec_eig = archive.run[0].calculation[0].eigenvalues[0] @@ -107,15 +109,15 @@ def test_spinpol(parser): def test_ci(parser): archive = EntryArchive() - parser.parse('tests/data/orca/FeMgO_ci/orca3.2713636.out', archive, None) + parser.parse("tests/data/orca/FeMgO_ci/orca3.2713636.out", archive, None) sec_method = archive.run[0].method[1] - assert sec_method.electronic.method == 'CCSD' - assert sec_method.x_orca_single_excitations_on_off == 'ON' + assert sec_method.electronic.method == "CCSD" + assert sec_method.x_orca_single_excitations_on_off == "ON" assert sec_method.x_orca_t1_diagnostic == approx(6.77481921e-20) sec_system = archive.run[0].system[0] - assert sec_system.atoms.labels == ['Fe'] + ['O'] * 6 + ['Mg'] * 18 + ['Q'] * 704 + assert sec_system.atoms.labels == ["Fe"] + ["O"] * 6 + ["Mg"] * 18 + ["Q"] * 704 assert sec_system.atoms.positions[39][1].magnitude == approx(-4.211228e-10) sec_scc = archive.run[0].calculation[0] @@ -124,9 +126,11 @@ def test_ci(parser): def test_tddft(parser): archive = EntryArchive() - parser.parse('tests/data/orca/ClTi_tddft/orca3.2706823.out', archive, None) + parser.parse("tests/data/orca/ClTi_tddft/orca3.2706823.out", archive, None) - assert archive.run[0].method[1].electronic.method == 'TDDFT' + assert archive.run[0].method[1].electronic.method == "TDDFT" sec_scc = archive.run[0].calculation[0] assert sec_scc.spectra[0].excitation_energies[8].magnitude == approx(7.85956552e-16) - assert sec_scc.spectra[0].transition_dipole_moments[21][1].magnitude == approx(-2.96742377e-33) + assert sec_scc.spectra[0].transition_dipole_moments[21][1].magnitude == approx( + -2.96742377e-33 + ) diff --git a/tests/test_psi4parser.py b/tests/test_psi4parser.py index 71a5e30f..8dcda25c 100644 --- a/tests/test_psi4parser.py +++ b/tests/test_psi4parser.py @@ -27,36 +27,36 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return Psi4Parser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/adc1/output.ref', archive, None) + parser.parse("tests/data/psi4/adc1/output.ref", archive, None) assert len(archive.run) == 1 run = archive.run[-1] - assert run.program.version == '1.1rc3.dev5' + assert run.program.version == "1.1rc3.dev5" assert run.x_psi4_process_id == 22664 assert run.x_psi4_memory == 500 method = run.method[0] - assert method.electronic.method == 'RHF' + assert method.electronic.method == "RHF" sec_basis = method.electrons_representation[0].basis_set assert len(sec_basis) == 1 - assert sec_basis[0].atom_centered[0].name == '6-31G**' + assert sec_basis[0].atom_centered[0].name == "6-31G**" assert sec_basis[0].atom_centered[0].x_psi4_n_shells == 12 - assert method.scf.minimization_algorithm == 'PK' + assert method.scf.minimization_algorithm == "PK" assert not method.scf.x_psi4_mom assert method.scf.threshold_energy_change.magnitude == approx(4.35974472e-26) assert method.scf.x_psi4_integral_threshold == approx(0) system = run.system[0] assert system.atoms.positions[1][1].magnitude == approx(-4.00873327e-11) - assert system.atoms.labels[2] == 'H' - assert system.x_psi4_full_point_group == 'C2v' + assert system.atoms.labels[2] == "H" + assert system.x_psi4_full_point_group == "C2v" assert system.x_psi4_rotational_constants[2] == approx(9.50429) assert system.x_psi4_nbeta == 5 @@ -66,14 +66,16 @@ def test_scf(parser): assert calc.energy.contributions[3].value.magnitude == approx(0) assert calc.energy.total.value.magnitude == approx(-3.31441255e-16) assert len(calc.scf_iteration) == 12 - assert calc.scf_iteration[10].energy.total.value.magnitude == approx(-3.31441255e-16) + assert calc.scf_iteration[10].energy.total.value.magnitude == approx( + -3.31441255e-16 + ) assert calc.scf_iteration[3].energy.change.magnitude == approx(-1.03461102e-18) assert calc.multipoles[0].dipole.total[2] == approx(-9.91967374e-31) assert calc.multipoles[1].dipole.total[2] == approx(8.28504716e-30) assert calc.multipoles[2].dipole.total[2] == approx(7.29392762e-30) eigs = calc.eigenvalues[0] assert np.shape(eigs.energies) == np.shape(eigs.occupations) == (1, 1, 25) - assert eigs.orbital_labels[11] == '12A' + assert eigs.orbital_labels[11] == "12A" assert eigs.energies[0][0][3].magnitude == approx(-2.47920807e-18) assert eigs.occupations[0][0][4] == approx(2) assert eigs.occupations[0][0][5] == approx(0) @@ -81,7 +83,7 @@ def test_scf(parser): def test_properties(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/scf-property/output.ref', archive, None) + parser.parse("tests/data/psi4/scf-property/output.ref", archive, None) calc = archive.run[-1].calculation assert calc[0].spin_S2 == approx(2.011483171) @@ -92,7 +94,9 @@ def test_properties(parser): assert calc[0].eigenvalues[0].occupations[1][0][3] == approx(0) assert calc[0].energy.total.value.magnitude == approx(-1.69663469e-16) assert calc[0].charges[0].value[0].magnitude == approx(-4.12095852e-20) - assert calc[0].charges[1].spin_projected[5].value.magnitude == approx(7.31970417e-20) + assert calc[0].charges[1].spin_projected[5].value.magnitude == approx( + 7.31970417e-20 + ) assert calc[0].charges[1].total.magnitude == approx(0) assert calc[1].eigenvalues[0].energies[1][0][4].magnitude == approx(-1.77537525e-19) assert calc[1].energy.nuclear_repulsion.value.magnitude == approx(2.89854093e-17) @@ -105,7 +109,7 @@ def test_properties(parser): assert calc[1].multipoles[0].octupole.total[2] == approx(-1.28485205e-51) assert calc[1].multipoles[1].octupole.total[7] == approx(9.96716959e-50) assert calc[1].multipoles[2].octupole.total[9] == approx(-1.56865451e-51) - assert calc[1].multipoles[0].higher_order[0].kind == 'hexadecapole' + assert calc[1].multipoles[0].higher_order[0].kind == "hexadecapole" assert calc[1].multipoles[0].higher_order[0].total[0] == approx(-2.64081324e-59) assert calc[1].multipoles[1].higher_order[0].total[10] == approx(1.98360911e-59) assert calc[1].multipoles[2].higher_order[0].total[3] == approx(-1.19284477e-59) @@ -116,76 +120,98 @@ def test_properties(parser): def test_ecp_basis(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/basis-ecp/output.ref', archive, None) + parser.parse("tests/data/psi4/basis-ecp/output.ref", archive, None) method = archive.run[0].method assert len(method) == 6 assert len(method[1].electrons_representation[0].basis_set) == 2 sec_basis = method[2].electrons_representation[0].basis_set - assert sec_basis[0].atom_centered[0].name == 'DEF2-SV_P_' + assert sec_basis[0].atom_centered[0].name == "DEF2-SV_P_" assert sec_basis[0].atom_centered[1].x_psi4_n_shells == 4 - assert sec_basis[1].atom_centered[0].name == 'DEF2-SV_P_ AUX' - assert method[3].x_psi4_jk_matrices_parameters['Schwarz Cutoff'] == approx(1e-12) + assert sec_basis[1].atom_centered[0].name == "DEF2-SV_P_ AUX" + assert method[3].x_psi4_jk_matrices_parameters["Schwarz Cutoff"] == approx(1e-12) sec_basis = method[4].electrons_representation[0].basis_set assert sec_basis[1].atom_centered[0].n_basis_functions == 309 - assert method[5].electronic.method == 'RHF' + assert method[5].electronic.method == "RHF" calc = archive.run[0].calculation assert len(calc) == 5 assert calc[3].energy.total.value.magnitude == approx(-1.29372859e-15) - assert calc[4].scf_iteration[1].energy.total.value.magnitude == approx(-3.00651252e-14) + assert calc[4].scf_iteration[1].energy.total.value.magnitude == approx( + -3.00651252e-14 + ) def test_dft(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/dft-b3lyp/output.ref', archive, None) + parser.parse("tests/data/psi4/dft-b3lyp/output.ref", archive, None) dft = archive.run[-1].method[0].dft - assert dft.xc_functional.contributions[0].name == 'HYB_GGA_XC_B3LYP' - assert dft.xc_functional.contributions[0].parameters['X_Alpha'] == approx(0.2) + assert dft.xc_functional.contributions[0].name == "HYB_GGA_XC_B3LYP" + assert dft.xc_functional.contributions[0].parameters["X_Alpha"] == approx(0.2) archive = EntryArchive() - parser.parse('tests/data/psi4/dft-custom-hybrid/output.ref', archive, None) + parser.parse("tests/data/psi4/dft-custom-hybrid/output.ref", archive, None) dft = archive.run[-1].method[1].dft assert len(dft.xc_functional.exchange) == 2 - assert dft.xc_functional.exchange[0].name == 'LDA_X' + assert dft.xc_functional.exchange[0].name == "LDA_X" assert dft.xc_functional.exchange[1].weight == approx(0.7500) assert len(dft.xc_functional.correlation) == 1 - assert dft.xc_functional.correlation[0].name == 'GGA_C_PBE' + assert dft.xc_functional.correlation[0].name == "GGA_C_PBE" assert dft.x_psi4_molecular_quadrature is not None def test_dft_grad(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/dft-grad-disk/output.ref', archive, None) - - assert archive.run[-1].system[1].atoms.positions[0][2].magnitude == approx(-1.88056612e-11) - assert archive.run[-1].method[1].electrons_representation[0].basis_set[0].atom_centered[0].name == 'AUG-CC-PVQZ' - assert archive.run[-1].method[0].electrons_representation[0].basis_set[1].atom_centered[0].name == 'AUG-CC-PVQZ AUX' - assert archive.run[-1].calculation[1].forces.total.value[1][2].magnitude == approx(-8.16191049e-09) + parser.parse("tests/data/psi4/dft-grad-disk/output.ref", archive, None) + + assert archive.run[-1].system[1].atoms.positions[0][2].magnitude == approx( + -1.88056612e-11 + ) + assert ( + archive.run[-1] + .method[1] + .electrons_representation[0] + .basis_set[0] + .atom_centered[0] + .name + == "AUG-CC-PVQZ" + ) + assert ( + archive.run[-1] + .method[0] + .electrons_representation[0] + .basis_set[1] + .atom_centered[0] + .name + == "AUG-CC-PVQZ AUX" + ) + assert archive.run[-1].calculation[1].forces.total.value[1][2].magnitude == approx( + -8.16191049e-09 + ) def test_mp2p5(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/mp2p5-grad1/output.ref', archive, None) + parser.parse("tests/data/psi4/mp2p5-grad1/output.ref", archive, None) assert len(archive.run[-1].method) == 2 - assert archive.run[-1].method[1].electronic.method == 'MP2.5' + assert archive.run[-1].method[1].electronic.method == "MP2.5" assert archive.run[-1].method[1].core_method_ref == archive.run[-1].method[0] options = archive.run[-1].method[-1].x_psi4_options - assert options['E_CONVERGENCE'] == approx(1e-8) - assert not options['EP_IP_POLES'] + assert options["E_CONVERGENCE"] == approx(1e-8) + assert not options["EP_IP_POLES"] calc = archive.run[-1].calculation assert len(calc) == 3 assert calc[0].energy.total.value.magnitude == approx(-3.3145727e-16) - assert calc[0].energy.contributions[2].kind == 'Empirical Dispersion' + assert calc[0].energy.contributions[2].kind == "Empirical Dispersion" assert calc[0].energy.contributions[2].value.magnitude == approx(0) assert calc[1].energy.nuclear_repulsion.value.magnitude == approx(4.00546595e-17) - assert calc[1].energy.contributions[5].kind == '0.5 Correction' + assert calc[1].energy.contributions[5].kind == "0.5 Correction" assert calc[1].energy.contributions[5].value.magnitude == approx(-1.47957903e-20) - assert calc[1].energy.contributions[3].kind == 'Alpha-Beta' + assert calc[1].energy.contributions[3].kind == "Alpha-Beta" assert calc[1].energy.contributions[3].value.magnitude == approx(-6.87879256e-19) assert calc[1].energy.total.value.magnitude == approx(-3.32361538e-16) assert calc[2].energy.contributions[8].value.magnitude == approx(-3.32321529e-16) @@ -196,13 +222,13 @@ def test_mp2p5(parser): def test_ci(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/ci-property/output.ref', archive, None) + parser.parse("tests/data/psi4/ci-property/output.ref", archive, None) assert len(archive.run[-1].system) == 3 method = archive.run[-1].method assert len(method) == 6 - assert method[1].x_psi4_parameters['OPENTYPE'] == 'HIGHSPIN' - assert method[3].x_psi4_parameters['E CONV'] == approx(1.00e-10) + assert method[1].x_psi4_parameters["OPENTYPE"] == "HIGHSPIN" + assert method[3].x_psi4_parameters["E CONV"] == approx(1.00e-10) calc = archive.run[-1].calculation assert len(calc) == 17 @@ -218,7 +244,7 @@ def test_ci(parser): def test_mcscf(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/mcscf1/output.ref', archive, None) + parser.parse("tests/data/psi4/mcscf1/output.ref", archive, None) calc = archive.run[-1].calculation[0] assert len(calc.scf_iteration) == 17 @@ -230,20 +256,22 @@ def test_mcscf(parser): def test_gradient(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/cbs-xtpl-gradient/output.ref', archive, None) + parser.parse("tests/data/psi4/cbs-xtpl-gradient/output.ref", archive, None) calc = archive.run[-1].calculation assert len(calc) == 35 assert calc[18].forces.total.value[1][2].magnitude == approx(-9.9316642e-10) - assert calc[20].forces.contributions[1].kind == 'One-electron' - assert calc[20].forces.contributions[2].value[1][2].magnitude == approx(1.43696057e-09) + assert calc[20].forces.contributions[1].kind == "One-electron" + assert calc[20].forces.contributions[2].value[1][2].magnitude == approx( + 1.43696057e-09 + ) assert calc[3].time_calculation.magnitude == approx(0.28) assert calc[10].time_physical.magnitude == approx(3.24) def test_cc(parser): archive = EntryArchive() - parser.parse('tests/data/psi4/cc1/output.ref', archive, None) + parser.parse("tests/data/psi4/cc1/output.ref", archive, None) method = archive.run[-1].method assert len(method) == 15 @@ -252,9 +280,13 @@ def test_cc(parser): assert len(calc) == 30 assert calc[1].energy.nuclear_repulsion.value.magnitude == approx(3.95744411e-17) assert len(calc[2].scf_iteration) == 13 - assert calc[2].scf_iteration[2].energy.total.value.magnitude == approx(-9.08810332e-19) + assert calc[2].scf_iteration[2].energy.total.value.magnitude == approx( + -9.08810332e-19 + ) assert calc[2].energy.contributions[3].value.magnitude == approx(-2.19424304e-19) - assert calc[3].scf_iteration[9].energy.total.value.magnitude == approx(-8.98015443e-19) + assert calc[3].scf_iteration[9].energy.total.value.magnitude == approx( + -8.98015443e-19 + ) assert calc[4].energy.total.value.magnitude == approx(-3.32347651e-16) assert calc[5].energy.contributions[5].value.magnitude == approx(-8.87549814e-22) assert calc[6].energy.contributions[0].value.magnitude == approx(3.30311948e-16) @@ -263,6 +295,13 @@ def test_cc(parser): assert calc[3].time_physical.magnitude == approx(0.54) geo_opt = archive.workflow2 - assert geo_opt.method.convergence_tolerance_energy_difference.magnitude == approx(4.35974472e-24) - assert geo_opt.method.convergence_tolerance_force_maximum.magnitude == approx(2.47161705e-11) - assert geo_opt.method.convergence_tolerance_displacement_maximum.magnitude == approx(6.35012653e-14) + assert geo_opt.method.convergence_tolerance_energy_difference.magnitude == approx( + 4.35974472e-24 + ) + assert geo_opt.method.convergence_tolerance_force_maximum.magnitude == approx( + 2.47161705e-11 + ) + assert ( + geo_opt.method.convergence_tolerance_displacement_maximum.magnitude + == approx(6.35012653e-14) + ) diff --git a/tests/test_qballparser.py b/tests/test_qballparser.py index 109b9a58..9175d963 100644 --- a/tests/test_qballparser.py +++ b/tests/test_qballparser.py @@ -27,7 +27,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return QBallParser() diff --git a/tests/test_qboxparser.py b/tests/test_qboxparser.py index 1c4d4c1b..e26275c3 100644 --- a/tests/test_qboxparser.py +++ b/tests/test_qboxparser.py @@ -26,29 +26,29 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return QboxParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/qbox/01_h2ogs.r', archive, None) + parser.parse("tests/data/qbox/01_h2ogs.r", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '1.63.2' + assert sec_run.program.version == "1.63.2" assert sec_run.time_run.date_start > 0 assert sec_run.time_run.date_end > 0 sec_method = sec_run.method - assert sec_method[0].x_qbox_input_parameters['ecut'] == 70 + assert sec_method[0].x_qbox_input_parameters["ecut"] == 70 sec_system = sec_run.system assert len(sec_system) == 1 - assert sec_system[0].atoms.labels == ['O', 'H', 'H'] + assert sec_system[0].atoms.labels == ["O", "H", "H"] assert sec_system[0].atoms.positions[1][1].magnitude == approx(7.64131893e-11) assert sec_system[0].atoms.lattice_vectors[2][2].magnitude == approx(8.46683537e-10) - assert sec_system[0].atoms.velocities[1][2].magnitude == approx(0.) + assert sec_system[0].atoms.velocities[1][2].magnitude == approx(0.0) sec_scc = sec_run.calculation assert len(sec_scc) == 1 @@ -65,7 +65,7 @@ def test_scf(parser): def test_relax(parser): archive = EntryArchive() - parser.parse('tests/data/qbox/02_h2ocg.r', archive, None) + parser.parse("tests/data/qbox/02_h2ocg.r", archive, None) sec_run = archive.run[0] @@ -77,7 +77,9 @@ def test_relax(parser): sec_scc = sec_run.calculation assert len(sec_scc) == 20 assert sec_scc[11].energy.total.value.magnitude == approx(-7.44306125e-17) - assert sec_scc[18].energy.kinetic_electronic.value.magnitude == approx(5.37898452e-17) + assert sec_scc[18].energy.kinetic_electronic.value.magnitude == approx( + 5.37898452e-17 + ) assert len(sec_scc[6].scf_iteration) == 10 assert sec_scc[7].time_calculation.magnitude == approx(1.475) assert sec_scc[2].time_physical.magnitude == approx(4.269) @@ -85,31 +87,37 @@ def test_relax(parser): def test_stress(parser): archive = EntryArchive() - parser.parse('tests/data/qbox/03_si2gs.r', archive, None) + parser.parse("tests/data/qbox/03_si2gs.r", archive, None) sec_scc = archive.run[0].calculation assert len(sec_scc) == 30 - assert sec_scc[24].stress.total.value[2][1].magnitude == approx(-20.) + assert sec_scc[24].stress.total.value[2][1].magnitude == approx(-20.0) assert len(sec_scc[11].stress.contributions) == 7 - assert sec_scc[11].stress.contributions[1].kind == 'conf' - assert sec_scc[11].stress.contributions[5].value[2][2].magnitude == approx(-2680230.0) + assert sec_scc[11].stress.contributions[1].kind == "conf" + assert sec_scc[11].stress.contributions[5].value[2][2].magnitude == approx( + -2680230.0 + ) def test_multipoles(parser): archive = EntryArchive() - parser.parse('tests/data/qbox/10_efield.r', archive, None) + parser.parse("tests/data/qbox/10_efield.r", archive, None) sec_scc = archive.run[3].calculation assert sec_scc[0].multipoles[0].dipole.total[2] == approx(0.0977781797) assert sec_scc[0].multipoles[0].quadrupole.total[8] == approx(-32.83786426) - assert sec_scc[0].x_qbox_section_MLWF[3].x_qbox_geometry_MLWF_atom_positions[0].magnitude == approx(-9.20548723e-11) - assert sec_scc[0].x_qbox_section_MLWF[6].x_qbox_geometry_MLWF_atom_spread.magnitude == approx(1.34165266e-10) + assert sec_scc[0].x_qbox_section_MLWF[3].x_qbox_geometry_MLWF_atom_positions[ + 0 + ].magnitude == approx(-9.20548723e-11) + assert sec_scc[0].x_qbox_section_MLWF[ + 6 + ].x_qbox_geometry_MLWF_atom_spread.magnitude == approx(1.34165266e-10) def test_dft(parser): archive = EntryArchive() - parser.parse('tests/data/qbox/12_h2o_64_gs.r', archive, None) + parser.parse("tests/data/qbox/12_h2o_64_gs.r", archive, None) sec_xc = archive.run[0].method[0].dft.xc_functional - assert sec_xc.exchange[0].name == 'GGA_X_PBE' - assert sec_xc.correlation[0].name == 'GGA_C_PBE' + assert sec_xc.exchange[0].name == "GGA_X_PBE" + assert sec_xc.correlation[0].name == "GGA_C_PBE" diff --git a/tests/test_quantumespressoparser.py b/tests/test_quantumespressoparser.py index 9a68a0a2..4e014308 100644 --- a/tests/test_quantumespressoparser.py +++ b/tests/test_quantumespressoparser.py @@ -27,23 +27,23 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return QuantumEspressoParser() def test_scf(parser): archive = EntryArchive() - parser.parse('tests/data/quantumespresso/HO_scf/benchmark2.out', archive, None) + parser.parse("tests/data/quantumespresso/HO_scf/benchmark2.out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '5.2.1 (svn rev. 11920)' - assert sec_run.x_qe_input_filename == 'uspp1.in' + assert sec_run.program.version == "5.2.1 (svn rev. 11920)" + assert sec_run.x_qe_input_filename == "uspp1.in" assert sec_run.time_run.date_start.magnitude == 1451140876.0 assert sec_run.x_qe_section_compile_options[0].x_qe_lmaxx == 3 assert sec_run.x_qe_section_parallel[0].x_qe_nproc == 4 assert archive.workflow2 is not None - assert 'rdiaghg' in sec_run.x_qe_profile_function + assert "rdiaghg" in sec_run.x_qe_profile_function assert sec_run.time_run.date_end.magnitude == 1451140881.0 assert sec_run.clean_end @@ -51,34 +51,34 @@ def test_scf(parser): assert len(sec_method.k_mesh.points) == 1 # basis set sec_em = sec_method.electrons_representation - assert sec_em[0].scope[0] == 'wavefunction' - assert sec_em[0].basis_set[0].cutoff.to('Ry').magnitude == approx(25.) - assert sec_em[1].scope[0] == 'density' - assert sec_em[1].basis_set[0].cutoff.to('Ry').magnitude == approx(100.) + assert sec_em[0].scope[0] == "wavefunction" + assert sec_em[0].basis_set[0].cutoff.to("Ry").magnitude == approx(25.0) + assert sec_em[1].scope[0] == "density" + assert sec_em[1].basis_set[0].cutoff.to("Ry").magnitude == approx(100.0) assert sec_method.x_qe_sticks_sum_G_smooth == 135043 - assert 'NL pseudopotentials' in sec_method.x_qe_allocated_array_name - assert sec_method.x_qe_allocated_array_size[2] == 33554432. - assert sec_method.x_qe_temporary_array_dimensions[3] == '262144, 8' - assert sec_method.x_qe_per_process_mem == approx(2.84373811e+08) - assert sec_method.x_qe_potential_mixing_scheme == 'plain' + assert "NL pseudopotentials" in sec_method.x_qe_allocated_array_name + assert sec_method.x_qe_allocated_array_size[2] == 33554432.0 + assert sec_method.x_qe_temporary_array_dimensions[3] == "262144, 8" + assert sec_method.x_qe_per_process_mem == approx(2.84373811e08) + assert sec_method.x_qe_potential_mixing_scheme == "plain" assert sec_method.x_qe_starting_charge == 7.99998 assert len(sec_method.dft.xc_functional.exchange) == 1 - assert sec_method.x_qe_xc_igcc_name == 'pbc' - assert sec_method.dft.xc_functional.exchange[0].name == 'GGA_X_PBE' + assert sec_method.x_qe_xc_igcc_name == "pbc" + assert sec_method.dft.xc_functional.exchange[0].name == "GGA_X_PBE" assert sec_method.electronic.n_electrons[0] == 8 sec_atoms = sec_method.atom_parameters assert len(sec_atoms) == 2 - assert sec_atoms[1].label == 'H' - assert sec_atoms[0].x_qe_pp_md5sum == '7e325307d184e51bd80757047dcf04f9' + assert sec_atoms[1].label == "H" + assert sec_atoms[0].x_qe_pp_md5sum == "7e325307d184e51bd80757047dcf04f9" assert sec_atoms[1].x_qe_pp_ncoefficients == 8 assert sec_atoms[0].x_qe_kind_mass == 16.0 sec_system = sec_run.system[0] - assert sec_system.atoms.labels == ['O', 'H', 'H'] + assert sec_system.atoms.labels == ["O", "H", "H"] assert sec_system.atoms.positions[2][0].magnitude == approx(5.12015994e-10) assert False not in sec_system.atoms.periodic - assert sec_system.x_qe_reciprocal_cell[2][2].magnitude == approx(5.93674971e+09) + assert sec_system.x_qe_reciprocal_cell[2][2].magnitude == approx(5.93674971e09) assert len(sec_system.x_qe_k_info_vec) == 1 assert sec_system.x_qe_cell_volume == approx(1.18547769e-27) assert sec_system.x_qe_nsymm == 4 @@ -86,19 +86,21 @@ def test_scf(parser): sec_scc = sec_run.calculation[0] assert sec_scc.energy.total.value.magnitude == approx(-7.49748432e-17) - assert 'ewald contribution' in sec_scc.x_qe_energy_decomposition_name + assert "ewald contribution" in sec_scc.x_qe_energy_decomposition_name assert sec_scc.x_qe_energy_decomposition_value[1] == approx(7.42289975e-17) assert sec_scc.forces.total.value_raw[1][1].magnitude == approx(-3.57815176e-10) - assert sec_scc.stress.total.value[2][2].magnitude == approx(-1.68e+08) + assert sec_scc.stress.total.value[2][2].magnitude == approx(-1.68e08) assert np.shape(sec_scc.eigenvalues[0].kpoints) == (1, 3) assert np.shape(sec_scc.eigenvalues[0].energies[0][0]) == (4,) assert sec_scc.eigenvalues[0].energies[0][0][2].magnitude == approx(-1.42427094e-18) assert sec_scc.energy.highest_occupied.magnitude == approx(-1.15444837e-18) - assert sec_scc.x_qe_output_datafile == 'pwscf.save' + assert sec_scc.x_qe_output_datafile == "pwscf.save" sec_scfs = sec_scc.scf_iteration assert len(sec_scfs) == 8 assert sec_scfs[4].energy.total.value.magnitude == approx(-7.49748038e-17) - assert sec_scfs[1].x_qe_energy_total_accuracy_estimate_iteration == approx(1.15623477e-18) + assert sec_scfs[1].x_qe_energy_total_accuracy_estimate_iteration == approx( + 1.15623477e-18 + ) assert sec_scfs[6].x_qe_iteration_ecutwfc == approx(5.4496809027589626e-17) # uncomment this when time_physical def is updated # assert sec_scfs[0].time_calculation.magnitude == 1.2 @@ -107,7 +109,11 @@ def test_scf(parser): def test_multirun(parser): archive = EntryArchive() - parser.parse('tests/data/quantumespresso/Mn_multirun/9064627814752884918776106151027.log', archive, None) + parser.parse( + "tests/data/quantumespresso/Mn_multirun/9064627814752884918776106151027.log", + archive, + None, + ) sec_runs = archive.run sec_method = sec_runs[0].method[0] @@ -115,7 +121,10 @@ def test_multirun(parser): assert len(sec_method.k_mesh.points) == 40 assert sec_method.electronic.smearing.width == approx(2.3978595972139434e-20) assert len(sec_runs[1].calculation[0].scf_iteration) == 111 - assert sec_runs[2].calculation[0].scf_iteration[45].x_qe_iter_mpersite_magn[6] == -0.3325 + assert ( + sec_runs[2].calculation[0].scf_iteration[45].x_qe_iter_mpersite_magn[6] + == -0.3325 + ) assert sec_runs[0].system[0].x_qe_atom_starting_magnetization[1] == 0.133 assert np.shape(sec_runs[0].calculation[0].eigenvalues[0].energies[1][19]) == (100,) assert np.shape(sec_runs[1].calculation[0].eigenvalues[0].energies[1][19]) == (100,) @@ -123,18 +132,28 @@ def test_multirun(parser): assert len(sec_runs[0].calculation[0].eigenvalues[0].kpoints) == 20 assert len(sec_runs[1].calculation[0].eigenvalues[0].kpoints) == 20 assert len(sec_runs[2].calculation[0].eigenvalues[0].kpoints) == 20 - assert sec_runs[0].calculation[0].eigenvalues[0].kpoints[10][1] == approx(-0.1667096) - assert sec_runs[1].calculation[0].eigenvalues[0].energies[0][3][-5].magnitude == approx(1.42385437e-19) - assert sec_runs[2].calculation[0].eigenvalues[0].energies[1][-10].magnitude[35] == approx(-7.25180392e-18) + assert sec_runs[0].calculation[0].eigenvalues[0].kpoints[10][1] == approx( + -0.1667096 + ) + assert sec_runs[1].calculation[0].eigenvalues[0].energies[0][3][ + -5 + ].magnitude == approx(1.42385437e-19) + assert sec_runs[2].calculation[0].eigenvalues[0].energies[1][-10].magnitude[ + 35 + ] == approx(-7.25180392e-18) assert sec_runs[0].calculation[0].time_calculation.magnitude == approx(9828.2) assert sec_runs[0].calculation[0].time_physical.magnitude == approx(9828.2) - assert sec_runs[1].calculation[0].scf_iteration[6].time_calculation.magnitude == approx(68.2) - assert sec_runs[2].calculation[0].scf_iteration[11].time_physical.magnitude == approx(1189.6) + assert sec_runs[1].calculation[0].scf_iteration[ + 6 + ].time_calculation.magnitude == approx(68.2) + assert sec_runs[2].calculation[0].scf_iteration[ + 11 + ].time_physical.magnitude == approx(1189.6) def test_md(parser): archive = EntryArchive() - parser.parse('tests/data/quantumespresso/Si_md/out.out', archive, None) + parser.parse("tests/data/quantumespresso/Si_md/out.out", archive, None) assert archive.workflow2 is not None sec_run = archive.run[0] @@ -142,7 +161,9 @@ def test_md(parser): assert len(sec_method.k_mesh.points) == 1 sec_sccs = sec_run.calculation assert len(sec_sccs) == 50 - assert archive.run[0].system[6].atoms.positions[1][2].magnitude == approx(6.66987013e-11) + assert archive.run[0].system[6].atoms.positions[1][2].magnitude == approx( + 6.66987013e-11 + ) assert sec_sccs[-3].forces.total.value_raw[1][1].magnitude == approx(9.55685747e-10) assert len(sec_sccs[22].scf_iteration) == 3 assert sec_sccs[9].time_physical.magnitude == approx(0.4) @@ -153,7 +174,7 @@ def test_md(parser): def test_dos(parser): archive = EntryArchive() - parser.parse('tests/data/quantumespresso/W_dos/w.dos.out', archive, None) + parser.parse("tests/data/quantumespresso/W_dos/w.dos.out", archive, None) sec_run = archive.run[0] sec_method = sec_run.method[0] @@ -164,5 +185,5 @@ def test_dos(parser): assert np.shape(sec_dos.total[0].value) == (1801,) assert len(sec_dos.energies) == 1801 assert sec_dos.energies[269].magnitude == approx(1.23207383e-18) - assert sec_dos.total[0].value[150].magnitude == approx(2.8991809650870246e+17) + assert sec_dos.total[0].value[150].magnitude == approx(2.8991809650870246e17) assert sec_dos.total[0].value_integrated[1316] == 8.582 diff --git a/tests/test_siestaparser.py b/tests/test_siestaparser.py index 98639d24..c914c992 100644 --- a/tests/test_siestaparser.py +++ b/tests/test_siestaparser.py @@ -26,7 +26,7 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return SiestaParser() @@ -34,56 +34,62 @@ def parser(): def test_single_point(parser): archive = EntryArchive() - parser.parse('tests/data/siesta/Fe/out', archive, None) + parser.parse("tests/data/siesta/Fe/out", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == 'siesta-4.0--500' - assert sec_run.x_siesta_compiler_flags == 'mpiifort -O2' + assert sec_run.program.version == "siesta-4.0--500" + assert sec_run.x_siesta_compiler_flags == "mpiifort -O2" assert sec_run.x_siesta_parallel assert sec_run.x_siesta_n_nodes == 2 - assert sec_run.time_run.date_end > 0. + assert sec_run.time_run.date_end > 0.0 sec_method = sec_run.method - assert sec_method[0].x_siesta_input_parameters['DM.MixingWeight'] == approx(0.1) - assert sec_method[0].x_siesta_input_parameters['SpinPolarized'] - assert sec_method[0].x_siesta_input_parameters['PAO.EnergyShift'] == 50 - assert sec_method[0].x_siesta_input_parameters['SystemName'] == 'bcc Fe ferro GGA' - assert sec_method[0].x_siesta_simulation_parameters['DM (free)Energy tolerance for SCF'] == approx(0.00001) - assert sec_method[0].dft.xc_functional.exchange[0].name == 'GGA_X_PBE' + assert sec_method[0].x_siesta_input_parameters["DM.MixingWeight"] == approx(0.1) + assert sec_method[0].x_siesta_input_parameters["SpinPolarized"] + assert sec_method[0].x_siesta_input_parameters["PAO.EnergyShift"] == 50 + assert sec_method[0].x_siesta_input_parameters["SystemName"] == "bcc Fe ferro GGA" + assert sec_method[0].x_siesta_simulation_parameters[ + "DM (free)Energy tolerance for SCF" + ] == approx(0.00001) + assert sec_method[0].dft.xc_functional.exchange[0].name == "GGA_X_PBE" sec_system = archive.run[0].system assert sec_system[0].atoms.lattice_vectors[2][2].magnitude == approx(-1.435e-10) - assert sec_system[0].atoms.labels[0] == 'Fe' + assert sec_system[0].atoms.labels[0] == "Fe" sec_scc = sec_run.calculation assert sec_scc[0].energy.total.value.magnitude == approx(-1.25329082e-16) assert len(sec_scc[0].energy.contributions) == 14 - assert sec_scc[0].energy.contributions[2].kind == 'Ena' + assert sec_scc[0].energy.contributions[2].kind == "Ena" assert sec_scc[0].energy.contributions[4].value.magnitude == approx(-7.51141294e-17) sec_scf = sec_scc[0].scf_iteration assert len(sec_scf) == 24 assert sec_scf[7].energy.total.value.magnitude == approx(-1.25327159e-16) assert sec_scf[11].energy.types[0].value.magnitude == approx(-1.25328953e-16) assert sec_scc[1].energy.sum_eigenvalues.value.magnitude == approx(-1.03934823e-17) - assert sec_scc[1].energy.contributions[2].kind == 'Ion-electron' + assert sec_scc[1].energy.contributions[2].kind == "Ion-electron" assert sec_scc[1].energy.total.value.magnitude == approx(-1.25329082e-16) - assert sec_scc[1].stress.total.value[2][0].magnitude == approx(-5.20547188e+08) - assert sec_scc[1].charges[0].orbital_projected[8].orbital == '3dyz' - assert sec_scc[1].charges[0].orbital_projected[25].value.magnitude == approx(-8.01088317e-21) - assert sec_scc[1].charges[0].spin_projected[1].value.magnitude == approx(4.55338599e-19) + assert sec_scc[1].stress.total.value[2][0].magnitude == approx(-5.20547188e08) + assert sec_scc[1].charges[0].orbital_projected[8].orbital == "3dyz" + assert sec_scc[1].charges[0].orbital_projected[25].value.magnitude == approx( + -8.01088317e-21 + ) + assert sec_scc[1].charges[0].spin_projected[1].value.magnitude == approx( + 4.55338599e-19 + ) assert sec_scc[1].charges[0].value[0].magnitude == approx(1.28174131e-18) def test_relax(parser): archive = EntryArchive() - parser.parse('tests/data/siesta/H2O-relax/out', archive, None) + parser.parse("tests/data/siesta/H2O-relax/out", archive, None) sec_systems = archive.run[0].system assert len(sec_systems) == 7 assert sec_systems[3].atoms.lattice_vectors[1][1].magnitude == approx(5.692925e-10) assert sec_systems[6].atoms.positions[2][0].magnitude == approx(-7.6940893e-11) - assert sec_systems[0].atoms.labels[0] == 'O' + assert sec_systems[0].atoms.labels[0] == "O" sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 8 diff --git a/tests/test_soliddmftparser.py b/tests/test_soliddmftparser.py index 9f1ba92b..4129d98a 100644 --- a/tests/test_soliddmftparser.py +++ b/tests/test_soliddmftparser.py @@ -27,43 +27,50 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return SolidDMFTParser() def test_srvo3(parser): archive = EntryArchive() - parser.parse('tests/data/soliddmft/srvo3/svo_example.h5', archive, None) + parser.parse("tests/data/soliddmft/srvo3/svo_example.h5", archive, None) # Run tests assert len(archive.run) == 1 sec_run = archive.run[-1] # Program tests - assert sec_run.program.name == 'solid_dmft' - assert sec_run.program.version == '3.1.2' - assert sec_run.program.x_soliddmft_hash == 'ae0794c4e3678d367ad340b25e1a64a5c0f23a9f' + assert sec_run.program.name == "solid_dmft" + assert sec_run.program.version == "3.1.2" + assert ( + sec_run.program.x_soliddmft_hash == "ae0794c4e3678d367ad340b25e1a64a5c0f23a9f" + ) # System tests (SrVO3 crystal) # unknown: we need this info from the devs # Method tests - assert len(sec_run.method) == 2 # 2 methods: [0] input Hamiltonian, [1] input DMFT parameters + assert ( + len(sec_run.method) == 2 + ) # 2 methods: [0] input Hamiltonian, [1] input DMFT parameters # input Hamiltonian sec_input_model = sec_run.method[0] - assert sec_input_model.atom_parameters and sec_input_model.x_soliddmft_projection_matrix is not None + assert ( + sec_input_model.atom_parameters + and sec_input_model.x_soliddmft_projection_matrix is not None + ) assert sec_input_model.x_soliddmft_projection_matrix.shape == (729, 1, 3, 5) assert len(sec_input_model.atom_parameters) == 1 assert sec_input_model.atom_parameters[0].atom_index == 2 assert sec_input_model.atom_parameters[0].n_orbitals == 3 - assert sec_input_model.atom_parameters[0].orbitals == ['d0', 'd1', 'd2'] + assert sec_input_model.atom_parameters[0].orbitals == ["d0", "d1", "d2"] hubbard_model = sec_input_model.atom_parameters[0].hubbard_kanamori_model - assert hubbard_model.double_counting_correction == 'held_formula' - u_int = hubbard_model.u.to('eV').magnitude - jh_int = hubbard_model.jh.to('eV').magnitude - up_int = hubbard_model.up.to('eV').magnitude - j_int = hubbard_model.j.to('eV').magnitude + assert hubbard_model.double_counting_correction == "held_formula" + u_int = hubbard_model.u.to("eV").magnitude + jh_int = hubbard_model.jh.to("eV").magnitude + up_int = hubbard_model.up.to("eV").magnitude + j_int = hubbard_model.j.to("eV").magnitude assert u_int == approx(8.0) assert jh_int == approx(0.65) # testing rotational invariance @@ -71,7 +78,10 @@ def test_srvo3(parser): assert j_int == jh_int # input DMFT - assert isinstance(sec_run.method[1].x_soliddmft_general_params, dict) and len(sec_run.method[1].x_soliddmft_general_params) == 48 + assert ( + isinstance(sec_run.method[1].x_soliddmft_general_params, dict) + and len(sec_run.method[1].x_soliddmft_general_params) == 48 + ) assert len(sec_run.method[1].x_soliddmft_solver_params) == 15 assert len(sec_run.method[1].x_soliddmft_advanced_params) == 6 assert sec_run.method[1].starting_method_ref == sec_run.method[0] @@ -79,14 +89,17 @@ def test_srvo3(parser): assert sec_dmft.n_impurities == 1 assert sec_dmft.n_correlated_orbitals[0] == 3 assert sec_dmft.n_electrons[0] == approx(1.0000225214138097) - assert sec_dmft.inverse_temperature.to('1/eV').magnitude == approx(10.0) - assert sec_dmft.impurity_solver == 'CT-HYB' + assert sec_dmft.inverse_temperature.to("1/eV").magnitude == approx(10.0) + assert sec_dmft.impurity_solver == "CT-HYB" sec_k_mesh = sec_run.method[1].k_mesh assert sec_k_mesh.n_points == 729 - assert len(sec_run.method[1].frequency_mesh) == 1 and len(sec_run.method[1].time_mesh) == 1 + assert ( + len(sec_run.method[1].frequency_mesh) == 1 + and len(sec_run.method[1].time_mesh) == 1 + ) sec_freq_mesh = sec_run.method[1].frequency_mesh[0] assert sec_freq_mesh.n_points == 501 - assert sec_freq_mesh.points[15][0].to('eV').magnitude == approx(-97.10000000000001j) + assert sec_freq_mesh.points[15][0].to("eV").magnitude == approx(-97.10000000000001j) sec_time_mesh = sec_run.method[1].time_mesh[0] assert sec_time_mesh.n_points == 10001 assert sec_time_mesh.points[76][0] == approx(0.076j) @@ -96,18 +109,24 @@ def test_srvo3(parser): sec_scc = sec_run.calculation[0] # assert sec_scc.system_ref == sec_run.system[0] assert sec_scc.method_ref == sec_run.method[1] - assert sec_scc.energy.chemical_potential.to('eV').magnitude == approx(0.050287075199847694) - assert len(sec_scc.energy.double_counting.values_per_atom.to('eV').magnitude) == 1 - assert sec_scc.energy.double_counting.values_per_atom.to('eV').magnitude[0] == approx(7.544843542949807e-05) + assert sec_scc.energy.chemical_potential.to("eV").magnitude == approx( + 0.050287075199847694 + ) + assert len(sec_scc.energy.double_counting.values_per_atom.to("eV").magnitude) == 1 + assert sec_scc.energy.double_counting.values_per_atom.to("eV").magnitude[ + 0 + ] == approx(7.544843542949807e-05) # Greens functions tests sec_gfs = sec_scc.greens_functions[0] assert sec_gfs.matsubara_freq[0] == approx(-100.1) assert sec_gfs.matsubara_freq[-1] == approx(100.1) assert sec_gfs.tau.shape[0] == sec_time_mesh.n_points - assert sec_gfs.self_energy_iw.dtype == 'complex128' + assert sec_gfs.self_energy_iw.dtype == "complex128" assert sec_gfs.self_energy_iw.shape == (1, 2, 3, 1002) - assert sec_gfs.greens_function_tau[0][1][1][1025] == approx(0.14109113749664728 + 0j) - assert sec_gfs.chemical_potential.to('eV').magnitude == approx(0.050287075199847694) + assert sec_gfs.greens_function_tau[0][1][1][1025] == approx( + 0.14109113749664728 + 0j + ) + assert sec_gfs.chemical_potential.to("eV").magnitude == approx(0.050287075199847694) assert np.sum(sec_gfs.orbital_occupations) == approx(1.008321846227956) assert sec_gfs.quasiparticle_weights.shape == (1, 2, 3) assert sec_gfs.quasiparticle_weights[0][0][0] == approx(0.16195076915540912) @@ -115,30 +134,32 @@ def test_srvo3(parser): def test_lacu2o4_real_freq(parser): archive = EntryArchive() - parser.parse('tests/data/soliddmft/lacu2o4/lco.h5', archive, None) + parser.parse("tests/data/soliddmft/lacu2o4/lco.h5", archive, None) # Run tests assert len(archive.run) == 1 sec_run = archive.run[-1] # Program tests - assert sec_run.program.name == 'solid_dmft' - assert sec_run.program.version == '3.2.0' - assert sec_run.program.x_soliddmft_hash == '707c012359758d3aca1ce46e3446312df86ca5d6' + assert sec_run.program.name == "solid_dmft" + assert sec_run.program.version == "3.2.0" + assert ( + sec_run.program.x_soliddmft_hash == "707c012359758d3aca1ce46e3446312df86ca5d6" + ) # Real frequency and MPS solver test sec_freq_mesh = sec_run.method[1].frequency_mesh assert len(sec_freq_mesh) == 1 assert sec_freq_mesh[0].n_points == 3001 - assert np.isreal(sec_freq_mesh[0].points.to('eV').magnitude).all() + assert np.isreal(sec_freq_mesh[0].points.to("eV").magnitude).all() sec_dmft = sec_run.method[1].dmft - assert sec_dmft.impurity_solver == 'MPS' + assert sec_dmft.impurity_solver == "MPS" # SCF and Calculation tests sec_scc = sec_run.calculation[-1] assert sec_scc.dos_electronic - assert sec_scc.dos_electronic[0].kind == 'spectral' + assert sec_scc.dos_electronic[0].kind == "spectral" assert sec_scc.dos_electronic[0].n_energies == 3001 - assert sec_scc.m_xpath('greens_functions[0].frequencies') is not None - assert sec_scc.m_xpath('greens_functions[0].greens_function_freq') is not None + assert sec_scc.m_xpath("greens_functions[0].frequencies") is not None + assert sec_scc.m_xpath("greens_functions[0].greens_function_freq") is not None # NOTE: scf steps are not parsed because they require archive.m_context, so we cannot # test it here. diff --git a/tests/test_tbstudioparser.py b/tests/test_tbstudioparser.py index 2356b9bf..42b7ff9b 100644 --- a/tests/test_tbstudioparser.py +++ b/tests/test_tbstudioparser.py @@ -27,30 +27,34 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return TBStudioParser() def test_parser(parser): archive = EntryArchive() - parser.parse('tests/data/tbstudio/graphenePz.tbm', archive, None) + parser.parse("tests/data/tbstudio/graphenePz.tbm", archive, None) sec_run = archive.run[-1] sec_program = sec_run.program - assert sec_program.name == 'TBStudio' - assert sec_program.version == '2.0' + assert sec_program.name == "TBStudio" + assert sec_program.version == "2.0" assert len(sec_run.system) == 1 sec_system = sec_run.system[-1] - assert sec_system.atoms.labels == ['C', 'C'] + assert sec_system.atoms.labels == ["C", "C"] a = [1.23435, 2.14452, 0.0] b = [1.23435, -2.14452, 0.0] c = [0.0, 0.0, 20.0] positions = [[0.00414, -0.004863, 10.0], [1.238611, -0.72006, 10.0]] - assert sec_system.atoms.lattice_vectors.to('angstrom').magnitude == approx(np.array([a, b, c])) - assert sec_system.atoms.positions.to('angstrom').magnitude == approx(np.array(positions)) + assert sec_system.atoms.lattice_vectors.to("angstrom").magnitude == approx( + np.array([a, b, c]) + ) + assert sec_system.atoms.positions.to("angstrom").magnitude == approx( + np.array(positions) + ) assert sec_system.atoms.periodic == [True, True, False] assert len(sec_run.method) == 1 @@ -61,8 +65,8 @@ def test_parser(parser): assert len(sk.orbitals) == 2 assert len(sk.bonds) == 3 - assert sk.orbitals[0].orbital_name == 'p_z' - assert sk.orbitals[1].orbital_name == 'p_z' + assert sk.orbitals[0].orbital_name == "p_z" + assert sk.orbitals[1].orbital_name == "p_z" assert sk.orbitals[0].shell == 0 assert sk.orbitals[1].shell == 0 assert sk.orbitals[0].onsite_energy == -0.15789243 @@ -71,7 +75,7 @@ def test_parser(parser): assert sk.orbitals[1].atom_index == 1 for i in [0, 1, 2]: - assert sk.bonds[i].bond_label == 'Bond 1' + assert sk.bonds[i].bond_label == "Bond 1" assert sk.bonds[i].center1.shell == 1 assert sk.bonds[i].pps == 0.0 assert sk.bonds[i].ppp == -2.34157934 @@ -92,7 +96,10 @@ def test_parser(parser): sec_scc = sec_run.calculation[-1] assert len(sec_scc.band_structure_electronic[0].segment) == 3 assert len(sec_scc.band_structure_electronic[0].segment[0].kpoints) == 100 - assert len(sec_scc.band_structure_electronic[0].segment[0].kpoints) == \ - len(sec_scc.band_structure_electronic[0].segment[0].energies[0]) + assert len(sec_scc.band_structure_electronic[0].segment[0].kpoints) == len( + sec_scc.band_structure_electronic[0].segment[0].energies[0] + ) assert sec_scc.energy.fermi == sec_scc.band_structure_electronic[0].energy_fermi - assert sec_scc.band_structure_electronic[0].energy_fermi.to('eV').magnitude == approx(-4.25178) + assert sec_scc.band_structure_electronic[0].energy_fermi.to( + "eV" + ).magnitude == approx(-4.25178) diff --git a/tests/test_turbomoleparser.py b/tests/test_turbomoleparser.py index e027a3c6..a0268a6c 100644 --- a/tests/test_turbomoleparser.py +++ b/tests/test_turbomoleparser.py @@ -27,24 +27,24 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return TurbomoleParser() def test_aoforce(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/aoforce/vib.out', archive, None) + parser.parse("tests/data/turbomole/aoforce/vib.out", archive, None) - assert archive.run[0].program.version == '7.2 ( 21285 )' + assert archive.run[0].program.version == "7.2 ( 21285 )" assert archive.run[0].time_run.date_start.magnitude == 1532973127.689 sec_method = archive.run[0].method[0] - assert sec_method.electronic.method == 'DFT' - assert sec_method.dft.xc_functional.correlation[0].name == 'GGA_C_P86' + assert sec_method.electronic.method == "DFT" + assert sec_method.dft.xc_functional.correlation[0].name == "GGA_C_P86" assert len(sec_method.atom_parameters) == 4 assert len(sec_method.electrons_representation[0].basis_set[0].atom_centered) == 4 - assert sec_method.electronic.van_der_waals_method == 'DFT-D3' + assert sec_method.electronic.van_der_waals_method == "DFT-D3" assert sec_method.x_turbomole_controlIn_scf_conv == 8 sec_scc = archive.run[0].calculation[0] @@ -63,12 +63,12 @@ def test_aoforce(parser): sec_system = archive.run[0].system[0] assert len(sec_system.atoms.positions) == 31 assert sec_system.atoms.positions[7][1].magnitude == approx(-9.34235013e-11) - assert sec_system.atoms.labels[21] == 'O' + assert sec_system.atoms.labels[21] == "O" def test_ccsdf12(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/ccsdf12.out', archive, None) + parser.parse("tests/data/turbomole/ccsdf12.out", archive, None) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 3 @@ -86,16 +86,21 @@ def test_ccsdf12(parser): def test_grad_statpt_dscf(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/acrolein_grad_statpt_dscf.out', archive, None) + parser.parse("tests/data/turbomole/acrolein_grad_statpt_dscf.out", archive, None) sec_methods = archive.run[0].method - assert sec_methods[0].electrons_representation[0].basis_set[0].atom_centered[0].name == 'def2-SVP' + assert ( + sec_methods[0].electrons_representation[0].basis_set[0].atom_centered[0].name + == "def2-SVP" + ) assert len(sec_methods) == 3 - assert sec_methods[0].dft.xc_functional.hybrid[0].name == 'HYB_GGA_XC_B3LYP' + assert sec_methods[0].dft.xc_functional.hybrid[0].name == "HYB_GGA_XC_B3LYP" sec_systems = archive.run[0].system assert len(sec_systems) == 3 - assert sec_systems[1].atoms.positions[5][1].magnitude == approx(1.22377337e-10,) + assert sec_systems[1].atoms.positions[5][1].magnitude == approx( + 1.22377337e-10, + ) sec_sccs = archive.run[0].calculation assert sec_sccs[0].forces.total.value_raw[6][0].magnitude == approx(-4.2984543e-12) @@ -103,22 +108,29 @@ def test_grad_statpt_dscf(parser): assert len(sec_scfs) == 3 assert sec_scfs[1].energy.total.value.magnitude == approx(-8.35592725e-16) assert sec_scfs[0].x_turbomole_delta_eigenvalues.magnitude == approx(2.92683961e-22) - assert sec_sccs[2].energy.kinetic_electronic.value.magnitude == approx(8.27834082e-16) + assert sec_sccs[2].energy.kinetic_electronic.value.magnitude == approx( + 8.27834082e-16 + ) sec_sampling = archive.workflow2 - assert sec_sampling.method.x_turbomole_geometry_optimization_trustregion_min.magnitude == approx(5.29177211e-14) - assert sec_sampling.method.method == 'BFGS' - assert sec_sampling.method.convergence_tolerance_force_maximum.magnitude == approx(8.2387235e-11) + assert ( + sec_sampling.method.x_turbomole_geometry_optimization_trustregion_min.magnitude + == approx(5.29177211e-14) + ) + assert sec_sampling.method.method == "BFGS" + assert sec_sampling.method.convergence_tolerance_force_maximum.magnitude == approx( + 8.2387235e-11 + ) def test_escf(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/benzene_escf.out', archive, None) + parser.parse("tests/data/turbomole/benzene_escf.out", archive, None) sec_method = archive.run[0].method[0] - assert sec_method.electronic.method == 'G0W0' + assert sec_method.electronic.method == "G0W0" assert sec_method.x_turbomole_gw_eta_factor.magnitude == approx(4.35974472e-21) - assert sec_method.x_turbomole_gw_approximation == 'G0W0' + assert sec_method.x_turbomole_gw_approximation == "G0W0" sec_scc = archive.run[0].calculation[0] sec_eigs_gw = sec_scc.eigenvalues[0] @@ -129,28 +141,32 @@ def test_escf(parser): def test_freeh(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/freeh.out', archive, None) + parser.parse("tests/data/turbomole/freeh.out", archive, None) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 2 assert sec_sccs[0].energy.zero_point.value.magnitude == approx(4.89692971e-19) - assert sec_sccs[1].energy.correction_entropy.value.magnitude == approx(2.00144971e-19) - assert sec_sccs[1].thermodynamics[0].heat_capacity_c_v.magnitude == approx(2.27860167e-22) + assert sec_sccs[1].energy.correction_entropy.value.magnitude == approx( + 2.00144971e-19 + ) + assert sec_sccs[1].thermodynamics[0].heat_capacity_c_v.magnitude == approx( + 2.27860167e-22 + ) assert sec_sccs[1].thermodynamics[0].pressure.magnitude == 100000.0 def test_pnoccsd(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/pnoccsd.out', archive, None) + parser.parse("tests/data/turbomole/pnoccsd.out", archive, None) assert np.shape(archive.run[0].system[0].atoms.positions) == (51, 3) sec_methods = archive.run[0].method assert len(sec_methods) == 4 - assert sec_methods[0].electronic.method == 'CCSD(T)' - assert sec_methods[1].electronic.method == 'MP2' - assert sec_methods[2].electronic.method == 'CCSD' - assert sec_methods[3].electronic.method == 'CCSD(T0)' + assert sec_methods[0].electronic.method == "CCSD(T)" + assert sec_methods[1].electronic.method == "MP2" + assert sec_methods[2].electronic.method == "CCSD" + assert sec_methods[3].electronic.method == "CCSD(T0)" sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 4 @@ -166,7 +182,7 @@ def test_pnoccsd(parser): def test_ricc2(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/MgO_embedding_ricc2.out', archive, None) + parser.parse("tests/data/turbomole/MgO_embedding_ricc2.out", archive, None) sec_systems = archive.run[0].system assert len(sec_systems) == 4 @@ -182,10 +198,10 @@ def test_ricc2(parser): def test_ridft(parser): archive = EntryArchive() - parser.parse('tests/data/turbomole/ridft.out', archive, None) + parser.parse("tests/data/turbomole/ridft.out", archive, None) sec_method = archive.run[0].method[0] - assert sec_method.x_turbomole_dft_d3_version == '3.1 Rev 0' + assert sec_method.x_turbomole_dft_d3_version == "3.1 Rev 0" sec_scc = archive.run[0].calculation[0] assert sec_scc.energy.van_der_waals.value.magnitude == approx(-1.32811671e-18) @@ -194,5 +210,7 @@ def test_ridft(parser): sec_scf = sec_scc.scf_iteration assert len(sec_scf) == 28 - assert sec_scf[3].x_turbomole_energy_2electron_scf_iteration.magnitude == approx(1.02566632e-13) + assert sec_scf[3].x_turbomole_energy_2electron_scf_iteration.magnitude == approx( + 1.02566632e-13 + ) assert sec_scf[23].energy.xc.value.magnitude == approx(-2.28814098e-15) diff --git a/tests/test_vaspparser.py b/tests/test_vaspparser.py index 03f74a8f..bfddf1db 100644 --- a/tests/test_vaspparser.py +++ b/tests/test_vaspparser.py @@ -29,36 +29,36 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return VASPParser() -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def silicon_dos(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/Si_dos_band/dos_si.xml', archive, None) + parser.parse("tests/data/vasp/Si_dos_band/dos_si.xml", archive, None) return archive -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def silicon_band(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/Si_dos_band/band_si.xml', archive, None) + parser.parse("tests/data/vasp/Si_dos_band/band_si.xml", archive, None) return archive -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def silicon_gw(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/Si_GW/vasprun.xml', archive, None) + parser.parse("tests/data/vasp/Si_GW/vasprun.xml", archive, None) return archive def test_vasprunxml_static(parser): """Test Mg1 system, computed in VASP 4.6.35""" archive = EntryArchive() - parser.parse('tests/data/vasp/Mg_bands/vasprun.xml.static', archive, None) + parser.parse("tests/data/vasp/Mg_bands/vasprun.xml.static", archive, None) assert len(archive.run) == 1 @@ -69,19 +69,19 @@ def test_vasprunxml_static(parser): sec_method = sec_run.method[0] assert len(sec_method.x_vasp_incar_in) == 27 assert len(sec_method.x_vasp_incar_out) == 112 - assert sec_method.x_vasp_incar_in['LCHARG'] + assert sec_method.x_vasp_incar_in["LCHARG"] assert len(sec_method.dft.xc_functional.exchange) == 1 # basis set sec_representation = sec_method.electrons_representation[0] sec_basis_set = sec_representation.basis_set - assert sec_representation.native_tier == 'high' - assert sec_basis_set[0].type == 'plane waves' - assert sec_basis_set[0].scope == ['valence'] - assert sec_basis_set[0].cutoff.to('eV').magnitude == approx(512.2418) - assert sec_basis_set[1].type == 'plane waves' - assert sec_basis_set[1].scope == ['augmentation'] - assert sec_basis_set[1].cutoff.to('eV').magnitude == approx(429) + assert sec_representation.native_tier == "high" + assert sec_basis_set[0].type == "plane waves" + assert sec_basis_set[0].scope == ["valence"] + assert sec_basis_set[0].cutoff.to("eV").magnitude == approx(512.2418) + assert sec_basis_set[1].type == "plane waves" + assert sec_basis_set[1].scope == ["augmentation"] + assert sec_basis_set[1].cutoff.to("eV").magnitude == approx(429) sec_system = sec_run.system[-1] assert len(sec_system.atoms.labels) == 1 @@ -90,9 +90,11 @@ def test_vasprunxml_static(parser): sec_scc = sec_run.calculation[-1] assert sec_scc.energy.total.value.magnitude == approx(-2.3264377e-19) assert np.shape(sec_scc.forces.total.value) == (1, 3) - assert sec_scc.stress.total.value[2][2].magnitude == approx(-2.78384438e+08) + assert sec_scc.stress.total.value[2][2].magnitude == approx(-2.78384438e08) assert np.shape(sec_scc.eigenvalues[0].energies[0][887]) == (37,) - assert sec_scc.scf_iteration[2].energy.total_t0.value.magnitude == approx(-2.27580485e-19,) + assert sec_scc.scf_iteration[2].energy.total_t0.value.magnitude == approx( + -2.27580485e-19, + ) # Check the k-point sampling k_mesh = sec_method.k_mesh @@ -107,21 +109,37 @@ def test_vasprunxml_static(parser): sec_dos = sec_scc.dos_electronic assert len(sec_dos) == 1 assert len(sec_dos[0].energies) == 5000 - assert sec_dos[0].total[0].value[1838].magnitude == approx((.1369 / ureg.eV).to(1 / ureg.joule).magnitude) + assert sec_dos[0].total[0].value[1838].magnitude == approx( + (0.1369 / ureg.eV).to(1 / ureg.joule).magnitude + ) assert len(sec_dos[0].orbital_projected) == 9 - orbital_labels = [[0, 0], [1, 1], [1, 2], [1, 0], [2, 1], [2, 4], [2, 5], [2, 2], [2, 0]] - sec_orbital_labels = [list(orbital_dos.lm) for orbital_dos in sec_dos[0].orbital_projected] + orbital_labels = [ + [0, 0], + [1, 1], + [1, 2], + [1, 0], + [2, 1], + [2, 4], + [2, 5], + [2, 2], + [2, 0], + ] + sec_orbital_labels = [ + list(orbital_dos.lm) for orbital_dos in sec_dos[0].orbital_projected + ] assert sec_orbital_labels == orbital_labels - assert sec_dos[0].orbital_projected[0].value[-1].magnitude == approx(3.40162245e+17) + assert sec_dos[0].orbital_projected[0].value[-1].magnitude == approx(3.40162245e17) # test DOS integrated dos_integrated = integrate_dos(sec_dos, sec_scc.energy.fermi) - assert pytest.approx(dos_integrated, abs=1e-2) == 8. - 6. # dos starts from 6 electrons already + assert ( + pytest.approx(dos_integrated, abs=1e-2) == 8.0 - 6.0 + ) # dos starts from 6 electrons already def test_vasprunxml_relax(parser): """Test Ac1Ag1 system, computed by VASP 5.3.2""" archive = EntryArchive() - parser.parse('tests/data/vasp/AgAc_relax/vasprun.xml.relax', archive, None) + parser.parse("tests/data/vasp/AgAc_relax/vasprun.xml.relax", archive, None) assert len(archive.run[0].method) == 1 @@ -139,20 +157,20 @@ def test_vasprunxml_relax(parser): sec_method = sec_run.method[0] sec_representation = sec_method.electrons_representation[0] sec_basis_set = sec_representation.basis_set - assert sec_representation.native_tier == 'accurate' - assert sec_basis_set[0].type == 'plane waves' - assert sec_basis_set[0].scope == ['valence'] - assert sec_basis_set[0].cutoff.to('eV').magnitude == approx(249.8) - assert sec_basis_set[1].type == 'plane waves' - assert sec_basis_set[1].scope == ['augmentation'] - assert sec_basis_set[1].cutoff.to('eV').magnitude == approx(543.281) + assert sec_representation.native_tier == "accurate" + assert sec_basis_set[0].type == "plane waves" + assert sec_basis_set[0].scope == ["valence"] + assert sec_basis_set[0].cutoff.to("eV").magnitude == approx(249.8) + assert sec_basis_set[1].type == "plane waves" + assert sec_basis_set[1].scope == ["augmentation"] + assert sec_basis_set[1].cutoff.to("eV").magnitude == approx(543.281) sec_sccs = archive.run[0].calculation assert len(sec_sccs) == 3 assert [len(scc.scf_iteration) for scc in sec_sccs] == [12, 10, 6] assert sec_sccs[0].energy.free.value.magnitude == approx(-1.14352735e-18) assert np.mean(sec_sccs[1].forces.total.value.magnitude) == 0.0 - assert sec_sccs[2].stress.total.value[2][2].magnitude == approx(-2.02429105e+08) + assert sec_sccs[2].stress.total.value[2][2].magnitude == approx(-2.02429105e08) assert sec_sccs[2].energy.lowest_unoccupied.magnitude == approx(7.93718304e-19) assert sec_sccs[2].energy.highest_occupied.magnitude == approx(7.93702283e-19) assert [len(scc.eigenvalues) for scc in sec_sccs] == [0, 0, 1] @@ -160,7 +178,7 @@ def test_vasprunxml_relax(parser): sec_dos = sec_sccs[-1].dos_electronic assert sec_dos[0].spin_channel == 0 and sec_dos[1].spin_channel == 1 dos_integrated = integrate_dos(sec_dos, sec_sccs[-1].energy.fermi) - assert pytest.approx(dos_integrated, abs=1) == 22. + assert pytest.approx(dos_integrated, abs=1) == 22.0 assert sec_sccs[1].time_calculation.magnitude == approx(438.32) assert sec_sccs[2].time_physical.magnitude == approx(1235.66) assert sec_sccs[0].scf_iteration[2].time_calculation.magnitude == approx(43.00) @@ -169,7 +187,7 @@ def test_vasprunxml_relax(parser): def test_vasprunxml_bands(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/Mg_bands/vasprun.xml.bands', archive, None) + parser.parse("tests/data/vasp/Mg_bands/vasprun.xml.bands", archive, None) sec_run = archive.run[0] k_mesh = sec_run.method[0].k_mesh @@ -184,8 +202,7 @@ def test_vasprunxml_bands(parser): def test_band_silicon(silicon_band): - """Tests that the band structure of silicon is parsed correctly. - """ + """Tests that the band structure of silicon is parsed correctly.""" scc = silicon_band.run[-1].calculation[0] band = scc.band_structure_electronic[-1] segments = band.segment @@ -243,29 +260,29 @@ def test_dos_silicon(silicon_dos): # Check that the no. valence electrons is recovered dos_integrated = integrate_dos(dos, scc.energy.fermi) - assert pytest.approx(dos_integrated, abs=1e-2) == 8. + assert pytest.approx(dos_integrated, abs=1e-2) == 8.0 def test_outcar(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/AgAc_relax/OUTCAR', archive, None) + parser.parse("tests/data/vasp/AgAc_relax/OUTCAR", archive, None) sec_run = archive.run[0] - assert sec_run.program.version == '5.3.2 13Sep12 complex serial LinuxIFC' + assert sec_run.program.version == "5.3.2 13Sep12 complex serial LinuxIFC" sec_method = sec_run.method[0] # basis set sec_representation = sec_method.electrons_representation[0] sec_basis_set = sec_representation.basis_set - assert sec_representation.native_tier == 'medium' - assert sec_basis_set[0].type == 'plane waves' - assert sec_basis_set[0].scope == ['valence'] - assert sec_basis_set[0].cutoff.to('eV').magnitude == approx(520) - assert sec_basis_set[1].type == 'plane waves' - assert sec_basis_set[1].scope == ['augmentation'] - assert sec_basis_set[1].cutoff.to('eV').magnitude == approx(543.3) + assert sec_representation.native_tier == "medium" + assert sec_basis_set[0].type == "plane waves" + assert sec_basis_set[0].scope == ["valence"] + assert sec_basis_set[0].cutoff.to("eV").magnitude == approx(520) + assert sec_basis_set[1].type == "plane waves" + assert sec_basis_set[1].scope == ["augmentation"] + assert sec_basis_set[1].cutoff.to("eV").magnitude == approx(543.3) # DFT - assert sec_method.dft.xc_functional.exchange[0].name == 'GGA_X_PBE' + assert sec_method.dft.xc_functional.exchange[0].name == "GGA_X_PBE" assert len(sec_method.atom_parameters) == 2 k_mesh = sec_method.k_mesh @@ -273,12 +290,12 @@ def test_outcar(parser): sec_atom_param = sec_method.atom_parameters[0] assert sec_atom_param.n_valence_electrons == approx(11.0) - assert sec_atom_param.mass.to('amu').magnitude == approx(227.028) + assert sec_atom_param.mass.to("amu").magnitude == approx(227.028) sec_pseudo = sec_atom_param.pseudopotential - assert sec_pseudo.name == 'PAW_PBE Ac 06Sep2000' - assert sec_pseudo.xc_functional_name == ['GGA_X_PBE', 'GGA_C_PBE'] - assert sec_pseudo.cutoff.to('eV').magnitude == approx(172.237) + assert sec_pseudo.name == "PAW_PBE Ac 06Sep2000" + assert sec_pseudo.xc_functional_name == ["GGA_X_PBE", "GGA_C_PBE"] + assert sec_pseudo.cutoff.to("eV").magnitude == approx(172.237) sec_system = sec_run.system[0] assert sec_system.atoms.lattice_vectors[1][0].magnitude == approx(3.141538e-10) @@ -287,7 +304,7 @@ def test_outcar(parser): sec_scc = sec_run.calculation[0] assert sec_scc.energy.total.value.magnitude == approx(-1.11695443e-18) assert sec_scc.forces.total.value[0][0].magnitude == 0.0 - assert sec_scc.stress.total.value[0][0].magnitude == approx(7.060258e+09) + assert sec_scc.stress.total.value[0][0].magnitude == approx(7.060258e09) assert sec_scc.energy.lowest_unoccupied.magnitude == approx(9.40461662e-19) assert sec_scc.energy.highest_occupied.magnitude == approx(9.51212268e-19) sec_scfs = sec_scc.scf_iteration @@ -307,11 +324,17 @@ def test_outcar(parser): assert len(sec_scc.dos_electronic) == 1 sec_dos = sec_scc.dos_electronic[0] assert len(sec_dos.energies) == 301 - assert sec_dos.total[0].value[282].magnitude == approx((.2545E+01 / ureg.eV).to(1 / ureg.joule).magnitude) + assert sec_dos.total[0].value[282].magnitude == approx( + (0.2545e01 / ureg.eV).to(1 / ureg.joule).magnitude + ) assert len(sec_dos.orbital_projected) == 32 - assert sec_dos.orbital_projected[10].value[-15].magnitude == approx(1.51481425e+17) - assert sec_dos.orbital_projected[5].value[-16].magnitude == approx(1.71267009e+16) - assert sec_dos.total[0].value_integrated[-1] == 30.0 # This runs up to the conduction band + assert sec_dos.orbital_projected[10].value[-15].magnitude == approx(1.51481425e17) + assert sec_dos.orbital_projected[5].value[-16].magnitude == approx(1.71267009e16) + assert ( + sec_dos.total[0].value_integrated[-1] == 30.0 + ) # This runs up to the conduction band + + # BUG EMIN is stored in the fermi energy!! # dos_integrated = integrate_dos(sec_dos, False, sec_scc.energy.fermi) # try: @@ -321,11 +344,19 @@ def test_outcar(parser): @pytest.mark.parametrize( - 'filename, name, cutoff', + "filename, name, cutoff", [ - ('tests/data/vasp/alternative_pseudopotentials/AlN/vasprun.xml', 'PAW_PBE Al 04Jan2001', 240.3), - ('tests/data/vasp/alternative_pseudopotentials/F_GW/OUTCAR', '^PAW_PBE F_h_GW 20May2014', 848.358), - ] + ( + "tests/data/vasp/alternative_pseudopotentials/AlN/vasprun.xml", + "PAW_PBE Al 04Jan2001", + 240.3, + ), + ( + "tests/data/vasp/alternative_pseudopotentials/F_GW/OUTCAR", + "^PAW_PBE F_h_GW 20May2014", + 848.358, + ), + ], ) def test_potcar(parser, filename, name, cutoff): archive = EntryArchive() @@ -334,19 +365,19 @@ def test_potcar(parser, filename, name, cutoff): sec_method = archive.run[0].method[0] sec_pseudo = sec_method.atom_parameters[-1].pseudopotential assert sec_pseudo.name == name - assert sec_pseudo.type == 'PAW' - assert sec_pseudo.xc_functional_name == ['GGA_X_PBE', 'GGA_C_PBE'] - assert sec_pseudo.cutoff.to('eV').magnitude == approx(cutoff) + assert sec_pseudo.type == "PAW" + assert sec_pseudo.xc_functional_name == ["GGA_X_PBE", "GGA_C_PBE"] + assert sec_pseudo.cutoff.to("eV").magnitude == approx(cutoff) def test_broken_xml(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/vasprun.xml.broken', archive, None) + parser.parse("tests/data/vasp/vasprun.xml.broken", archive, None) def test_hybrid(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/hybrid_vasprun.xml.gz', archive, None) + parser.parse("tests/data/vasp/hybrid_vasprun.xml.gz", archive, None) sec_run = archive.run[-1] sec_method = sec_run.method[-1] @@ -357,13 +388,15 @@ def test_hybrid(parser): assert k_mesh.sampling_method == "Gamma-centered" sec_xc_functional = sec_method.dft.xc_functional - assert sec_xc_functional.hybrid[0].parameters['exact_exchange_mixing_factor'] == .25 - assert sec_xc_functional.hybrid[0].name == 'HYB_GGA_XC_HSE06' + assert ( + sec_xc_functional.hybrid[0].parameters["exact_exchange_mixing_factor"] == 0.25 + ) + assert sec_xc_functional.hybrid[0].name == "HYB_GGA_XC_HSE06" def test_metagga(parser): archive = EntryArchive() - parser.parse('tests/data/vasp/hle17_vasprun.xml.gz', archive, None) + parser.parse("tests/data/vasp/hle17_vasprun.xml.gz", archive, None) sec_run = archive.run[-1] sec_method = sec_run.method[-1] @@ -374,15 +407,18 @@ def test_metagga(parser): assert k_mesh.sampling_method == "Gamma-centered" sec_xc_functional = sec_method.dft.xc_functional - assert sec_xc_functional.contributions[0].name == 'MGGA_XC_HLE17' + assert sec_xc_functional.contributions[0].name == "MGGA_XC_HLE17" -@pytest.mark.parametrize('dir, slice, uref, jref', [ - ('multi_parameter/', 1, 3.25, 0.), - ('multi_parameter_no_incar/', 1, 3.2, 0.), - ('multi_parameter/', 2, 2., 1.), - ('single_parameter/', 0, 7.5, 0.) -]) +@pytest.mark.parametrize( + "dir, slice, uref, jref", + [ + ("multi_parameter/", 1, 3.25, 0.0), + ("multi_parameter_no_incar/", 1, 3.2, 0.0), + ("multi_parameter/", 2, 2.0, 1.0), + ("single_parameter/", 0, 7.5, 0.0), + ], +) def test_dftu_static(parser, dir, slice, uref, jref): """Static calculation using PBE+U. Geometry taken from NOMAD Archive and Repository site. @@ -392,55 +428,56 @@ def test_dftu_static(parser, dir, slice, uref, jref): archive = EntryArchive() # test the values in vasprun.xml and INCAR (selected in place of OUTCAR) - prefix = 'tests/data/vasp/dftu/' - for mainfile in ['vasprun.xml', 'OUTCAR']: + prefix = "tests/data/vasp/dftu/" + for mainfile in ["vasprun.xml", "OUTCAR"]: try: - parser.parse(f'{prefix}/{dir}/{mainfile}', archive, None) + parser.parse(f"{prefix}/{dir}/{mainfile}", archive, None) except (TypeError, FileNotFoundError): return param = archive.run[-1].method[-1].atom_parameters[slice] if hubb := param.hubbard_kanamori_model: - assert hubb.double_counting_correction == 'Dudarev' - assert hubb.orbital == 'd' - assert approx(hubb.u.to('eV').magnitude) == uref - assert approx(hubb.j.to('eV').magnitude) == jref + assert hubb.double_counting_correction == "Dudarev" + assert hubb.orbital == "d" + assert approx(hubb.u.to("eV").magnitude) == uref + assert approx(hubb.j.to("eV").magnitude) == jref def test_gw(silicon_gw): - """Tests that the GW metainfo has been parsed correctly. - """ + """Tests that the GW metainfo has been parsed correctly.""" sec_run = silicon_gw.run[-1] sec_method = sec_run.method[-1] - assert sec_method.m_xpath('gw') and sec_method.m_xpath('k_mesh') - assert not sec_method.m_xpath('dft') + assert sec_method.m_xpath("gw") and sec_method.m_xpath("k_mesh") + assert not sec_method.m_xpath("dft") assert (sec_method.k_mesh.grid == np.array([6, 6, 6])).all() - assert sec_method.gw.type == 'G0W0' - assert sec_method.gw.analytical_continuation == 'pade' + assert sec_method.gw.type == "G0W0" + assert sec_method.gw.analytical_continuation == "pade" assert sec_method.gw.n_states == 72 assert (sec_method.gw.q_mesh.grid == np.array([6, 6, 6])).all() - assert sec_method.gw.q_mesh.sampling_method == 'Gamma-centered' + assert sec_method.gw.q_mesh.sampling_method == "Gamma-centered" assert len(sec_method.frequency_mesh) == 1 assert sec_method.frequency_mesh[0].n_points == 50 sec_scc = sec_run.calculation assert len(sec_scc) == 1 - homo = sec_scc[-1].energy.highest_occupied.to('eV').magnitude - lumo = sec_scc[-1].energy.lowest_unoccupied.to('eV').magnitude + homo = sec_scc[-1].energy.highest_occupied.to("eV").magnitude + lumo = sec_scc[-1].energy.lowest_unoccupied.to("eV").magnitude assert homo == approx(2.132) assert lumo == approx(3.8526) bandgap = lumo - homo assert bandgap == approx(1.7206) -@pytest.mark.parametrize("filename", [ - "dotted", - "single_char", - "mixed_case", - "lowercase", -]) +@pytest.mark.parametrize( + "filename", + [ + "dotted", + "single_char", + "mixed_case", + "lowercase", + ], +) def test_booleans(filename, parser): - """Tests that booleans are parse correctly no matter which format is used. - """ + """Tests that booleans are parse correctly no matter which format is used.""" archive = EntryArchive() - parser.parse(f'tests/data/vasp/booleans/{filename}/OUTCAR', archive, None) - lnbo = parser._outcar_parser._incar['incar']['LNBO'] + parser.parse(f"tests/data/vasp/booleans/{filename}/OUTCAR", archive, None) + lnbo = parser._outcar_parser._incar["incar"]["LNBO"] assert lnbo is True diff --git a/tests/test_w2dynamicsparser.py b/tests/test_w2dynamicsparser.py index 09393ac0..7317c2d8 100644 --- a/tests/test_w2dynamicsparser.py +++ b/tests/test_w2dynamicsparser.py @@ -26,14 +26,16 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return W2DynamicsParser() def test_srvo3(parser): archive = EntryArchive() - parser.parse('tests/data/w2dynamics/SrVO3_beta60-2021-12-03-Fri-13-38-46.hdf5', archive, None) + parser.parse( + "tests/data/w2dynamics/SrVO3_beta60-2021-12-03-Fri-13-38-46.hdf5", archive, None + ) # Run tests assert len(archive.run) == 1 @@ -42,43 +44,60 @@ def test_srvo3(parser): assert len(sec_run.x_w2dynamics_axes.x_w2dynamics_w_dos) == 2788 # Program tests - assert sec_run.program.name == 'w2dynamics' + assert sec_run.program.name == "w2dynamics" # System tests (SrVO3 crystal) - assert sec_run.system[-1].atoms.labels == ['Sr', 'V', 'O', 'O', 'O'] + assert sec_run.system[-1].atoms.labels == ["Sr", "V", "O", "O", "O"] assert sec_run.system[-1].atoms.periodic == [True, True, True] # Method tests - assert len(sec_run.method) == 2 # 2 methods: [0] input Hamiltonian, [1] input DMFT parameters - assert sec_run.m_xpath('method[0].lattice_model_hamiltonian') + assert ( + len(sec_run.method) == 2 + ) # 2 methods: [0] input Hamiltonian, [1] input DMFT parameters + assert sec_run.m_xpath("method[0].lattice_model_hamiltonian") sec_lattice_model = sec_run.method[0].lattice_model_hamiltonian[0] - assert hasattr(sec_lattice_model, 'hopping_matrix') - assert hasattr(sec_lattice_model, 'hubbard_kanamori_model') - assert sec_lattice_model.hubbard_kanamori_model[0].orbital == 'd' - assert sec_lattice_model.hubbard_kanamori_model[0].double_counting_correction == 'anisimov' - u = sec_lattice_model.hubbard_kanamori_model[0].u.to('eV').magnitude - jh = sec_lattice_model.hubbard_kanamori_model[0].jh.to('eV').magnitude + assert hasattr(sec_lattice_model, "hopping_matrix") + assert hasattr(sec_lattice_model, "hubbard_kanamori_model") + assert sec_lattice_model.hubbard_kanamori_model[0].orbital == "d" + assert ( + sec_lattice_model.hubbard_kanamori_model[0].double_counting_correction + == "anisimov" + ) + u = sec_lattice_model.hubbard_kanamori_model[0].u.to("eV").magnitude + jh = sec_lattice_model.hubbard_kanamori_model[0].jh.to("eV").magnitude assert u == approx(4.0) assert jh == approx(0.6) - up = sec_lattice_model.hubbard_kanamori_model[0].up.to('eV').magnitude - j = sec_lattice_model.hubbard_kanamori_model[0].j.to('eV').magnitude + up = sec_lattice_model.hubbard_kanamori_model[0].up.to("eV").magnitude + j = sec_lattice_model.hubbard_kanamori_model[0].j.to("eV").magnitude # testing rotational invariance assert up == approx(u - 2 * jh) assert j == approx(jh) assert len(sec_run.method[1].x_w2dynamics_config.x_w2dynamics_config_general) == 58 - assert sec_run.method[1].x_w2dynamics_config.x_w2dynamics_config_general.get('beta') == 60.0 + assert ( + sec_run.method[1].x_w2dynamics_config.x_w2dynamics_config_general.get("beta") + == 60.0 + ) assert sec_run.method[1].starting_method_ref == sec_run.method[0] sec_dmft = sec_run.method[1].dmft assert sec_dmft.n_correlated_orbitals.shape == (1,) assert sec_dmft.n_correlated_orbitals[0] == 3 assert sec_dmft.n_electrons[0] == approx(1.0) - assert sec_dmft.inverse_temperature.to('1/eV').magnitude == approx(sec_run.method[1].x_w2dynamics_config.x_w2dynamics_config_general.get('beta')) - assert sec_dmft.impurity_solver == 'CT-HYB' + assert sec_dmft.inverse_temperature.to("1/eV").magnitude == approx( + sec_run.method[1].x_w2dynamics_config.x_w2dynamics_config_general.get("beta") + ) + assert sec_dmft.impurity_solver == "CT-HYB" # Frequency and Time meshes - assert sec_run.m_xpath('method[-1].frequency_mesh') and sec_run.m_xpath('method[-1].time_mesh') - assert len(sec_run.method[-1].frequency_mesh) == 1 and len(sec_run.method[-1].time_mesh) == 1 + assert sec_run.m_xpath("method[-1].frequency_mesh") and sec_run.m_xpath( + "method[-1].time_mesh" + ) + assert ( + len(sec_run.method[-1].frequency_mesh) == 1 + and len(sec_run.method[-1].time_mesh) == 1 + ) sec_freq_mesh = sec_run.method[-1].frequency_mesh[0] - assert sec_freq_mesh.points[22][0].to('eV').magnitude == approx(-123.30751165339937j) + assert sec_freq_mesh.points[22][0].to("eV").magnitude == approx( + -123.30751165339937j + ) sec_time_mesh = sec_run.method[-1].time_mesh[0] assert sec_time_mesh.points[40][0] == approx(2.4024024024024024j) @@ -90,10 +109,12 @@ def test_srvo3(parser): sec_gfs = sec_scc.greens_functions[0] assert sec_gfs.matsubara_freq[0] == approx(-125.61134626603189) assert sec_gfs.matsubara_freq[-1] == approx(125.61134626603189) - assert sec_gfs.self_energy_iw.dtype == 'complex128' + assert sec_gfs.self_energy_iw.dtype == "complex128" assert sec_gfs.self_energy_iw.shape == (1, 2, 3, 2400) - assert sec_gfs.greens_function_iw[0][0][2][1450] == approx(-0.0019060478736177338 - 0.037816153432527574j) - assert sec_gfs.chemical_potential.to('eV').magnitude == approx(14.159227949307798) + assert sec_gfs.greens_function_iw[0][0][2][1450] == approx( + -0.0019060478736177338 - 0.037816153432527574j + ) + assert sec_gfs.chemical_potential.to("eV").magnitude == approx(14.159227949307798) # SCF tests sec_scf = sec_scc.scf_iteration assert len(sec_scf) == 4 diff --git a/tests/test_wannier90parser.py b/tests/test_wannier90parser.py index de63b905..d84f5e85 100644 --- a/tests/test_wannier90parser.py +++ b/tests/test_wannier90parser.py @@ -27,54 +27,59 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return Wannier90Parser() def test_lco(parser): archive = EntryArchive() - parser.parse('tests/data/wannier90/lco_mlwf/lco.wout', archive, None) + parser.parse("tests/data/wannier90/lco_mlwf/lco.wout", archive, None) sec_run = archive.run[-1] sec_program = sec_run.program - assert sec_program.name == 'Wannier90' - assert sec_program.version == '3.1.0' + assert sec_program.name == "Wannier90" + assert sec_program.version == "3.1.0" assert len(sec_run.system) == 1 sec_system = sec_run.system[-1] - assert sec_system.atoms.labels[-1] == 'O' - assert (sec_system.atoms.positions[2].magnitude == np.array([0., 0., 0.])).all() + assert sec_system.atoms.labels[-1] == "O" + assert (sec_system.atoms.positions[2].magnitude == np.array([0.0, 0.0, 0.0])).all() assert sec_system.atoms.lattice_vectors[0][0].magnitude == approx(-1.909145e-10) assert sec_system.atoms.periodic == [True, True, True] - assert sec_system.m_xpath('atoms_group') + assert sec_system.m_xpath("atoms_group") assert len(sec_system.atoms_group) == 1 - assert sec_system.atoms_group[-1].label == 'projection' - assert sec_system.atoms_group[-1].type == 'active_orbitals' + assert sec_system.atoms_group[-1].label == "projection" + assert sec_system.atoms_group[-1].type == "active_orbitals" assert sec_system.atoms_group[-1].index == 0 assert sec_system.atoms_group[-1].atom_indices[0] == 2 assert len(sec_run.method) == 1 sec_method = sec_run.method[-1] assert sec_method.k_mesh.n_points == 343 - assert (sec_method.k_mesh.points[303] == np.array([0.85714, 0.14286, 0.28571])).all() + assert ( + sec_method.k_mesh.points[303] == np.array([0.85714, 0.14286, 0.28571]) + ).all() assert (sec_method.k_mesh.grid == np.array([7, 7, 7])).all() sec_wannier = sec_method.tb.wannier assert sec_wannier.n_projected_orbitals == 1 assert sec_wannier.n_bands == 5 assert sec_wannier.is_maximally_localized is True assert sec_method.atom_parameters[-1].n_orbitals == 1 - assert sec_method.atom_parameters[-1].orbitals[0] == 'dx2-y2' + assert sec_method.atom_parameters[-1].orbitals[0] == "dx2-y2" # Band tests assert len(sec_run.calculation) == 1 sec_scc = sec_run.calculation[-1] assert len(sec_scc.band_structure_electronic[0].segment) == 4 assert sec_scc.band_structure_electronic[0].segment[0].n_kpoints == 100 - assert sec_scc.band_structure_electronic[0].segment[0].n_kpoints == \ - len(sec_scc.band_structure_electronic[0].segment[0].energies[0]) + assert sec_scc.band_structure_electronic[0].segment[0].n_kpoints == len( + sec_scc.band_structure_electronic[0].segment[0].energies[0] + ) assert sec_scc.energy.fermi == sec_scc.band_structure_electronic[0].energy_fermi - assert sec_scc.band_structure_electronic[0].energy_fermi.to('eV').magnitude == approx(12.895622) + assert sec_scc.band_structure_electronic[0].energy_fermi.to( + "eV" + ).magnitude == approx(12.895622) # DOS tests sec_dos = sec_scc.dos_electronic assert len(sec_dos) == 1 diff --git a/tests/test_wien2kparser.py b/tests/test_wien2kparser.py index b992f413..22f5ad01 100644 --- a/tests/test_wien2kparser.py +++ b/tests/test_wien2kparser.py @@ -27,26 +27,26 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return Wien2kParser() def test_single_point(parser, caplog): archive = EntryArchive() - parser.parse('tests/data/wien2k/basic/ok.scf', archive, None) + parser.parse("tests/data/wien2k/basic/ok.scf", archive, None) assert len(caplog.records) == 0 sec_run = archive.run[0] - assert sec_run.program.version == '12.1 22/7/2012' + assert sec_run.program.version == "12.1 22/7/2012" assert sec_run.time_run.date_start.magnitude == 1397313280.0 sec_method = archive.run[0].method[0] - assert sec_method.dft.xc_functional.correlation[0].name == 'GGA_C_PBE_SOL' + assert sec_method.dft.xc_functional.correlation[0].name == "GGA_C_PBE_SOL" assert sec_method.x_wien2k_ifft[1] == 120 assert sec_method.electrons_representation[0].basis_set[0].cutoff_fractional == 7.0 - assert sec_method.electronic.smearing.kind == 'tetrahedra' + assert sec_method.electronic.smearing.kind == "tetrahedra" assert sec_method.x_wien2k_in2_espermin == 0.50 sec_scc = archive.run[0].calculation[0] @@ -64,12 +64,12 @@ def test_single_point(parser, caplog): assert np.shape(sec_system.atoms.positions) == (49, 3) assert sec_system.atoms.positions[18][1].magnitude == approx(9.94126646e-10) assert sec_system.atoms.lattice_vectors[1][1].magnitude == approx(1.06500038e-09) - assert sec_system.atoms.labels == ['C'] * 49 + assert sec_system.atoms.labels == ["C"] * 49 def test_eigenvalues(parser, caplog): archive = EntryArchive() - parser.parse('tests/data/wien2k/eigenvalues/64k_8Rk_mBJkol.scf', archive, None) + parser.parse("tests/data/wien2k/eigenvalues/64k_8Rk_mBJkol.scf", archive, None) assert len(caplog.records) == 1 assert "Different number of eigenvalues" in caplog.records[0].msg @@ -84,13 +84,13 @@ def test_eigenvalues(parser, caplog): sec_dos = archive.run[0].calculation[0].dos_electronic[0] assert np.shape(sec_dos.total[0].value) == (1251,) assert len(sec_dos.energies) == 1251 - assert sec_dos.total[0].value[1178].magnitude == approx(5.93635529e+19) + assert sec_dos.total[0].value[1178].magnitude == approx(5.93635529e19) assert sec_dos.energies[285].magnitude == approx(-9.37345115e-19) def test_dos(parser, caplog): archive = EntryArchive() - parser.parse('tests/data/wien2k/dos/CrO2-sp.scf', archive, None) + parser.parse("tests/data/wien2k/dos/CrO2-sp.scf", archive, None) assert len(caplog.records) == 1 assert "Different number of eigenvalues" in caplog.records[0].msg @@ -110,10 +110,14 @@ def test_dos(parser, caplog): assert sec_dos_up.spin_channel == 0 and sec_dos_down.spin_channel == 1 assert sec_dos_up.energies[26].magnitude == approx(-9.76582818e-19) assert np.shape(sec_dos_down.total[0].value) == (1000,) - assert sec_dos_down.total[0].value[334].magnitude == approx(1.32586595e+19) + assert sec_dos_down.total[0].value[334].magnitude == approx(1.32586595e19) - assert len(sec_dos_up.species_projected) == 2 and len(sec_dos_up.species_projected) == len(sec_dos_down.species_projected) - assert sec_dos_up.species_projected[0].atom_label == 'Cr' - assert sec_dos_up.species_projected[1].atom_label == 'O' + assert len(sec_dos_up.species_projected) == 2 and len( + sec_dos_up.species_projected + ) == len(sec_dos_down.species_projected) + assert sec_dos_up.species_projected[0].atom_label == "Cr" + assert sec_dos_up.species_projected[1].atom_label == "O" assert np.shape(sec_dos_up.species_projected[0].value) == (1000,) - assert sec_dos_up.species_projected[1].value[926].magnitude == approx(2.7395685667470246e+17) + assert sec_dos_up.species_projected[1].value[926].magnitude == approx( + 2.7395685667470246e17 + ) diff --git a/tests/test_yamboparser.py b/tests/test_yamboparser.py index ab1c1227..a2d78014 100644 --- a/tests/test_yamboparser.py +++ b/tests/test_yamboparser.py @@ -27,30 +27,30 @@ def approx(value, abs=0, rel=1e-6): return pytest.approx(value, abs=abs, rel=rel) -@pytest.fixture(scope='module') +@pytest.fixture(scope="module") def parser(): return YamboParser() def test_0(parser): archive = EntryArchive() - parser.parse('tests/data/yambo/hBN/r_setup', archive, None) + parser.parse("tests/data/yambo/hBN/r_setup", archive, None) run = archive.run[-1] - assert run.program.version == '5.0.4 Revision 19598' - assert run.program.x_yambo_hash == '20b2ffa04' + assert run.program.version == "5.0.4 Revision 19598" + assert run.program.x_yambo_hash == "20b2ffa04" assert run.x_yambo_threads_per_core == 1 assert run.x_yambo_fragmented_wfs system = run.system[0] assert system.atoms.positions[2][1].magnitude == approx(-7.20417507e-11) - assert system.atoms.labels[3] == 'N' + assert system.atoms.labels[3] == "N" assert system.atoms.lattice_vectors[0][1].magnitude == approx(-1.24779986e-10) calc = run.calculation[0] assert calc.energy.fermi.magnitude == approx(8.18834506e-19) assert calc.energy.lowest_unoccupied.magnitude == approx(6.21331789e-19) - assert calc.x_yambo_electronic_density == approx(0.46037E+24) + assert calc.x_yambo_electronic_density == approx(0.46037e24) assert not calc.x_yambo_finite_temperature_mode assert calc.x_yambo_filled_bands[1] == 8 assert calc.x_yambo_direct_gap.magnitude == approx(6.87318075e-19) @@ -61,21 +61,51 @@ def test_0(parser): def test_1(parser): archive = EntryArchive() - parser.parse('tests/data/yambo/hBN/r-10b_1Ry_HF_and_locXC_gw0_em1d_ppa', archive, None) + parser.parse( + "tests/data/yambo/hBN/r-10b_1Ry_HF_and_locXC_gw0_em1d_ppa", archive, None + ) run = archive.run[-1] method = run.method assert len(method) == 5 - assert method[0].x_yambo_transferred_momenta[0].x_yambo_input[0].x_yambo_parameters['Sigma scattering'] == 'yes' - assert method[1].x_yambo_dipoles[0].x_yambo_input[0].x_yambo_file == './SAVE//ns.kb_pp_pwscf' - assert method[1].x_yambo_dipoles[0].x_yambo_input[0].x_yambo_sn == '009327' - assert method[1].x_yambo_dipoles[0].x_yambo_output[0].x_yambo_parameters['Fragmentation'] == 'yes' - assert method[2].x_yambo_dynamic_dielectric_matrix[0].x_yambo_output[0].x_yambo_parameters['BZ Q point size factor'] == approx(1.0) - assert method[3].x_yambo_local_xc_nonlocal_fock[0].x_yambo_output[0].x_yambo_parameters['RL vectors'] == 1491 - assert method[4].x_yambo_dyson[0].x_yambo_input[0].x_yambo_parameters['X poles'] == approx(100.) - assert method[4].x_yambo_dyson[1].x_yambo_output[0].x_yambo_parameters['GW solver'] == 'Newton' + assert ( + method[0] + .x_yambo_transferred_momenta[0] + .x_yambo_input[0] + .x_yambo_parameters["Sigma scattering"] + == "yes" + ) + assert ( + method[1].x_yambo_dipoles[0].x_yambo_input[0].x_yambo_file + == "./SAVE//ns.kb_pp_pwscf" + ) + assert method[1].x_yambo_dipoles[0].x_yambo_input[0].x_yambo_sn == "009327" + assert ( + method[1] + .x_yambo_dipoles[0] + .x_yambo_output[0] + .x_yambo_parameters["Fragmentation"] + == "yes" + ) + assert method[2].x_yambo_dynamic_dielectric_matrix[0].x_yambo_output[ + 0 + ].x_yambo_parameters["BZ Q point size factor"] == approx(1.0) + assert ( + method[3] + .x_yambo_local_xc_nonlocal_fock[0] + .x_yambo_output[0] + .x_yambo_parameters["RL vectors"] + == 1491 + ) + assert method[4].x_yambo_dyson[0].x_yambo_input[0].x_yambo_parameters[ + "X poles" + ] == approx(100.0) + assert ( + method[4].x_yambo_dyson[1].x_yambo_output[0].x_yambo_parameters["GW solver"] + == "Newton" + ) ddm = method[2].x_yambo_dynamic_dielectric_matrix[0] - assert ddm.x_yambo_output[0].x_yambo_file == './10b_1Ry//ndb.pp' + assert ddm.x_yambo_output[0].x_yambo_file == "./10b_1Ry//ndb.pp" assert ddm.x_yambo_mesh_size[2] == 27 assert len(ddm.x_yambo_fragment) == 14 assert np.shape(ddm.x_yambo_fragment[2].x_yambo_X_Q) == (2, 5, 5, 2) @@ -83,35 +113,41 @@ def test_1(parser): assert method[3].x_yambo_local_xc_nonlocal_fock[0].x_yambo_plane_waves_vxc == 3187 calc = run.calculation - assert calc[0].x_yambo_bosonic_temperature == approx(0.) + assert calc[0].x_yambo_bosonic_temperature == approx(0.0) assert calc[0].energy.fermi.magnitude == approx(8.18834506e-19) assert calc[0].energy.lowest_unoccupied.magnitude == approx(6.21331789e-19) assert calc[0].x_yambo_filled_bands[1] == 8 assert calc[1].energy.xc.value.magnitude == approx(-3.16453858e-17) - assert calc[1].x_yambo_local_xc_nonlocal_fock_bandenergies[0].x_yambo_sx[0][0][1].magnitude == approx(-8.87037934e-19) - assert calc[1].x_yambo_local_xc_nonlocal_fock_bandenergies[0].x_yambo_vxc[0][0][0].magnitude == approx(-2.58066631e-18) + assert calc[1].x_yambo_local_xc_nonlocal_fock_bandenergies[0].x_yambo_sx[0][0][ + 1 + ].magnitude == approx(-8.87037934e-19) + assert calc[1].x_yambo_local_xc_nonlocal_fock_bandenergies[0].x_yambo_vxc[0][0][ + 0 + ].magnitude == approx(-2.58066631e-18) assert calc[2].eigenvalues[0].kpoints[-1][1] == approx(-0.5) - assert calc[2].eigenvalues[0].qp_linearization_prefactor[0][0][1] == approx(0.8320594) + assert calc[2].eigenvalues[0].qp_linearization_prefactor[0][0][1] == approx( + 0.8320594 + ) assert calc[2].eigenvalues[0].value_qp[0][0][0].magnitude == approx(-1.56952554e-19) assert calc[2].eigenvalues[0].value_ks[0][0][0].magnitude == approx(-6.59862623e-20) def test_2(parser): archive = EntryArchive() - parser.parse('tests/data/yambo/Aluminum/r-01_Lifetimes_em1d_life', archive, None) + parser.parse("tests/data/yambo/Aluminum/r-01_Lifetimes_em1d_life", archive, None) run = archive.run[-1] - assert run.program.version == '4.4.0 Revision 148' - assert run.program.x_yambo_build == 'MPI+SLK+OpenMP' + assert run.program.version == "4.4.0 Revision 148" + assert run.program.x_yambo_build == "MPI+SLK+OpenMP" assert run.x_yambo_threads_tot == 1 assert run.x_yambo_io_nodes == 1 - assert run.x_yambo_additional_io == '.' - assert run.x_yambo_job_string == '01_Lifetimes' - assert run.x_yambo_input.x_yambo_file == './SAVE//ns.db1' - assert run.x_yambo_input.x_yambo_parameters['Electrons'] == approx(3.0) - assert run.x_yambo_input.x_yambo_sn == '009108' + assert run.x_yambo_additional_io == "." + assert run.x_yambo_job_string == "01_Lifetimes" + assert run.x_yambo_input.x_yambo_file == "./SAVE//ns.db1" + assert run.x_yambo_input.x_yambo_parameters["Electrons"] == approx(3.0) + assert run.x_yambo_input.x_yambo_sn == "009108" calc = run.calculation assert len(calc) == 1 @@ -129,34 +165,54 @@ def test_2(parser): def test_3(parser): archive = EntryArchive() - parser.parse('tests/data/yambo/GaSb/r-02_GW_em1d_ppa_HF_and_locXC_gw0', archive, None) + parser.parse( + "tests/data/yambo/GaSb/r-02_GW_em1d_ppa_HF_and_locXC_gw0", archive, None + ) method = archive.run[-1].method assert len(method) == 4 - assert method[0].x_yambo_transferred_momenta[0].x_yambo_input[0].x_yambo_parameters['QP states'] == '1 29' - assert method[2].x_yambo_bare_xc[0].x_yambo_output[0].x_yambo_parameters['Bosonic Temperature'] == approx(0.) + assert ( + method[0] + .x_yambo_transferred_momenta[0] + .x_yambo_input[0] + .x_yambo_parameters["QP states"] + == "1 29" + ) + assert method[2].x_yambo_bare_xc[0].x_yambo_output[0].x_yambo_parameters[ + "Bosonic Temperature" + ] == approx(0.0) calc = archive.run[-1].calculation assert len(calc) == 3 assert calc[0].x_yambo_indirect_gaps[1].magnitude == approx(5.72851847e-19) assert calc[0].eigenvalues[0].energies[0][18][5].magnitude == approx(-4.1855743e-19) - assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_dft[0][0][4].magnitude == approx(-1.57994179e-18) - assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_hf[0][0][7].magnitude == approx(-8.34041085e-19) + assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_dft[0][0][ + 4 + ].magnitude == approx(-1.57994179e-18) + assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_hf[0][0][ + 7 + ].magnitude == approx(-8.34041085e-19) assert calc[1].x_yambo_filled_bands[1] == 8 assert calc[1].x_yambo_direct_gaps[0].magnitude == approx(1.96538367e-19) assert calc[2].eigenvalues[0].qp_linearization_prefactor[0][0][2] == approx(0.8) assert calc[2].eigenvalues[0].value_qp[0][0][5].magnitude == approx(1.13754541e-19) - assert calc[2].eigenvalues[0].value_ks[0][0][1].magnitude == approx(0.) + assert calc[2].eigenvalues[0].value_ks[0][0][1].magnitude == approx(0.0) def test_4(parser): archive = EntryArchive() - parser.parse('tests/data/yambo/LiF/r-02_QP_PPA_em1d_ppa_HF_and_locXC_gw0', archive, None) + parser.parse( + "tests/data/yambo/LiF/r-02_QP_PPA_em1d_ppa_HF_and_locXC_gw0", archive, None + ) calc = archive.run[-1].calculation assert len(calc) == 3 - assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_hf[0][8][3].magnitude == approx(-1.02367551e-18) - assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_dft[0][3][1].magnitude == approx(-3.58760674e-18) + assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_hf[0][8][ + 3 + ].magnitude == approx(-1.02367551e-18) + assert calc[1].x_yambo_bare_xc_bandenergies[0].x_yambo_dft[0][3][ + 1 + ].magnitude == approx(-3.58760674e-18) assert calc[2].eigenvalues[0].qp_linearization_prefactor[0][2][2] == approx(0.89) assert calc[2].eigenvalues[0].value_qp[0][5][1].magnitude == approx(-5.68772705e-19) assert calc[2].eigenvalues[0].value_ks[0][-1][3].magnitude == approx(2.36641489e-18)