Exemple #1
0
 def __init__(self):
     name = "CONTROL"
     keys = {
         'calculation': [0, str, 'scf', ('scf', 'nscf', 'bands', 'relax', 'md', 'vc-relax'), None],
         'title': [0, str, '', None, None],
         'verbosity': [0, str, 'low', ('low', 'high'), None],
         'restart_mode': [0, str, 'from_scratch', ('from_scratch', 'restart'), None],
         'wf_collect': [0, bool, False, None, None],
         'nstep': [0, int, self._defaultNStep, None, None],
         'iprint': [0, int, None, None, None],
         'tstress': [0, bool, False, None, None],
         'tprnfor': [0, bool, self._defaultTprnfor , None, None],
         'dt': [0, float, 20.0, isPositive, None],
         'outdir': [0, str, self._defaultOutdir, None, self._checkOutdir],
         'wfcdir': [0, str, self._defaultOutdir, None, self._checkWfcdir],
         'prefix': [0, str, 'pwscf', None, None],
         'lkpoint_dir': [0, bool, True, None, None],
         'max_seconds': [0, float, 1.0e7, isPositive, None],
         'etot_conv_thr': [0, float, 1.0e-4, isPositive, None],
         'forc_conv_thr': [0, float, 1.0e-4, isPositive, None],
         'disk_io': [0, str, self._defaultDiskIO, ('none', 'low', 'medium', 'high'), None],
         'pseudo_dir': [0, str, self._defaultPseudoDir, None, self._checkPseudoDir],
         'tefield': [0, bool, False, None, None],
         'dipfield': [0, bool, False, None, None],
         'lelfield': [0, bool, False, None, None],
         'nberrycyc': [0, int, 1, isPositive, None],
         'lorbm': [0, bool, False, None, None],
         'lberry': [0, bool, False, None, None],
         'gdir': [0, int, None, (1, 2, 3), None],
         'nppstr': [0, int, None, isPositive, None]
     }
     Namelist.__init__(self, name, keys)
Exemple #2
0
 def __init__(self):
     name = "CELL"
     keys = {
         'cell_dynamics': [0, str, self._defaultCellDynamics, ('none', 'sd', 'damp-pr', 'bfgs', 'pr', 'w'), None],
         'press': [0, float, 0.0, None, None],
         'wmass': [0, float, None, isPositive, None], #TODO Check onlin if vc-md or vd-relax
         'cell_factor': [0, float, 1.2, None, None],
         'press_conv_thr': [0, float, 0.5, None, None],
         'cell_dofree': [0, str, 'all', ('all', 'x', 'y', 'z', 'xy', 'xz', 'yz', 'xyz', 'shape', 'volume', '2Dxy', '2Dshape'), None]
     }
     Namelist.__init__(self, name, keys)
Exemple #3
0
 def __init__(self):
     name = "IONS"
     keys = {
         "ion_dynamics": [
             0,
             str,
             self._defaultIonDynamics,
             ("bfgs", "damp", "verlet", "langevin", "langevin-smc", "beeman"),
             None,
         ],
         "ion_positions": [0, str, "default", ("default", "from_input"), None],
         "pot_extrapolation": [
             0,
             str,
             "atomic",
             ("none", "atomic", "first_order", "second_order"),
             self._checkPotExtrapolation,
         ],
         "wfc_extrapolation": [0, str, "none", ("none", "first-order", "second-order"), self._checkWfcExtrapolation],
         "remove_rigid_rot": [0, bool, False, (), None],
         "ion_temperature": [
             0,
             str,
             "not-controlled",
             (
                 "rescaling",
                 "rescale-v",
                 "rescale-T",
                 "reduce-T",
                 "berendsen",
                 "andersen",
                 "initial",
                 "not_controlled",
             ),
             None,
         ],
         "tempw": [0, float, 300.0, isPositive, None],
         "tolp": [0, float, 100.0, isPositive, None],
         "delta_t": [0, float, 1.0, None, None],
         "nraise": [0, int, 1, None, None],
         "refold_pos": [0, bool, False, None, None],
         "upscale": [0, float, 100.0, None, None],  # TODO Check only in bfgs calc
         "bfgs_ndim": [0, int, 1, isPositive, None],  # TODO Check only in bfgs calc
         "trust_radius_max": [0, float, 0.8, isPositive, None],  # TODO Check only in bfgs calc
         "trust_radius_min": [0, float, 1e-3, isPositive, None],  # TODO Check only in bfgs calc
         "trust_radius_ini": [0, float, 0.5, None, None],  # TODO Check only in bfgs calc
         "w_1": [0, float, 0.01, None, None],  # TODO Check only in bfgs calc
         "w_2": [0, float, 0.5, None, None],  # TODO Check only in bfgs calc
     }
     Namelist.__init__(self, name, keys)
Exemple #4
0
 def __init__(self):
     name = "SYSTEM"
     keys = {
         'ibrav': [0, int, None, self._rangeIbrav, self._checkIbrav],
         'celldm': [1, float, None, isPositive, self._checkCelldm],
         'A': [0, float, None, isPositive, self._checkA],
         'B': [0, float, None, isPositive, self._checkB],
         'C': [0, float, None, isPositive, self._checkC],
         'cosAB': [0, float, None, isWithinOneOfZero, self._checkCosAB],
         'cosAC': [0, float, None, isWithinOneOfZero, self._checkCosAC],
         'cosBC': [0, float, None, isWithinOneOfZero, self._checkCosBC],
         'nat': [0, int, None, isPositive, self._checkNat],
         'ntyp': [0, int, None, isPositive, self._checkNtyp],
         'nbnd': [0, int, None, isGTFour, None], #TODO default nbnd (insulator)
         'tot_charge': [0, float, 0.0, None, None],
         'tot_magnetization': [0, float, -1.0, isWithinOneOfZero, None],
         'starting_magnetization': [1, float, None, isWithinOneOfZero, None],
         'ecutwfc': [0, float, None, isPositive, None],
         'ecutrho': [0, float, self._defaultEcutrho, isPositive, None],
         'ecutfock': [0, float, self._defaultEcutfock, isPositive, None],
         'nr1': [0, int, None, isPositive, self._checkNri],
         'nr2': [0, int, None, isPositive, self._checkNri],
         'nr3': [0, int, None, isPositive, self._checkNri],
         'nr1s': [0, int, None, isPositive, self._checkNris],
         'nr2s': [0, int, None, isPositive, self._checkNris],
         'nr3s': [0, int, None, isPositive, self._checkNris],
         'nosym': [0, bool, False, None, None],
         'nosym_evc': [0, bool, False, None, None],
         'noinv': [0, bool, False, None, None],
         'no_t_rev': [0, bool, False, None, None],
         'force_symmorphic': [0, bool, False, None, None],
         'use_all_frac': [0, bool, False, None, None],
         'occupations': [0, str, None, ('smearing', 'tetrahedra', 'fixed', 'from_input'), None],
         'one_atom_occupations': [0, bool, False, None, None],
         'starting_spin_angle': [0, bool, False, None, None],
         'degauss': [0, float, 0.0, isPositive, None],
         'smearing': [0, str, 'gaussian', ('gaussian', 'methfessel-paxton', 'm-p', 'mp', 'mazari-vanderbilt', 'cold', 'm-v', 'mv', 'fermi-dirac', 'f-d', 'fd'), None],
         'nspin': [0, int, 1, (1, 2, 4), None],
         'noncolin': [0, bool, False, None, None],
         'ecfixed': [0, float, 0.0, isPositive, None],
         'qcutz': [0, float, 0.0, isPositive, None],
         'q2sigma': [0, float, 0.1, isPositive, None],
         'input_dft': [0, str, None, None, None],
         'exx_fraction': [0, float, None, isBtwZeroOne, None],
         'screening_parameter': [0, float, 0.106, None, None],
         'exxdiv_treatment': [0, str, 'gygi-baldereshi', ('gygi-baldereschi', 'vcut_spherical', 'vcut_ws', 'none'), None],
         'x_gamma_extrapolation': [0, bool, True, None, None],
         'ecutvcut': [0, float, 0.0, isPositive, None],
         'nqx1': [0, int, self._defaultnqx1, isPositive, None],
         'nqx2': [0, int, self._defaultnqx2, isPositive, None],
         'nqx3': [0, int, self._defaultnqx3, isPositive, None],
         'lda_plus_u': [0, bool, False, None, None],
         'lda_plus_u_kind': [0, int, 0, (0, 1), None],
         'Hubbard_U': [1, float, 0.0, None, None],  #TODO valid range TODO check
         'Hubbard_J0': [1, float, 0.0, None, None], #TODO valid range TODO check
         'Hubbard_alpha': [1, float, 0.0, None, None], #TODO valid range TODO check
         'Hubbard_beta': [1, float, 0.0, None, None], #TODO valid range TODO check
         'Hubbard_J': [2, float, 0.0, None, None], #TODO valid range TODO check
         'starting_ns_eigenvalue': [3, float, -1.0, None, None], #TODO valid range TODO check
         'U_projection_type': [0, str, 'atomic', ('atomic', 'ortho-atomic', 'norm-atomic', 'file', 'pseduo'), None],
         'edir': [0, int, None, (1, 2, 3), None],
         'emaxpos': [0, float, 0.5, isBtwZeroOne, None],
         'eopreg': [0, float, 0.1, isBtwZeroOne, None], 
         'eamp': [0, float, 0.001, None, None], #TODO range
         'angle1': [1, float, None, None, None], #TODO check (1 .. ntyp)
         'angle2': [1, float, None, None, None], #TODO check (1 .. ntyp)
         'constrained_magnetization': [0, str, 'none', ('none', 'total', 'atomic', 'total direction', 'atomic direction'), None],
         'fixed_magnetization': [0, float, 0.0, None, None], #check i (1 .. 3)
         'lambda': [0, float, 1.0, None, None],
         'report': [0, int, 1, isPositive, None],
         'lspinorb': [0, bool, None, None, None], #TODO default not specified in docs
         'assume_isolated': [0, str, 'none', ('none', 'makov-payne', 'martyna-tuckerman', 'esm'), None],
         'esm_bc': [0, str, 'pbc', ('pbc', 'bc1', 'bc2', 'bc3'), None],
         'esm_w': [0, float, 0.0, None, None],
         'esm_efield': [0, float , 0.0, None, None],
         'esm_nfit': [0, int, 4, None, None],
         'vdw_corr': [0, str, 'none', ('grimme-d2', 'Grimme-D2', 'DFT-D', 'dft-d', 'TS', 'ts', 'ts-vdw', 'ts-vdW', 'tkatchenko-scheffler', 'XDM', 'xdm'), None],
         'london': [0, bool, False, None, None],
         'london_s6': [0, float, 0.75, None, None],
         'london_rcut': [0, float, 200.0, None, None],
         'xdm': [0, bool, False, None, None],
         'xdm_a1': [0, float, 0.6836, None, None],
         'xdm_a2': [0, float, 1.5045, None, None],
         'space_group': [0, int, 0, self._rangeSpaceGroup, self._checkSpaceGroup],
         'uniqueb': [0, bool, False, None, None],
         'origin_choice': [0, int, 1, (1, 2, 3), None], # TODO Maybe there are more possible origins?
         'rhombohedral': [0, bool, True, None, None]
     }
     Namelist.__init__(self, name, keys)