Usage
Pydantic model for the input of pw.x version develop.
This file has been generated automatically. Do not edit it manually.
- class ControlNamelist(*, calculation: Literal['scf', 'nscf', 'bands', 'relax', 'md', 'vc-relax', 'vc-md']='scf', title: str | None = None, verbosity: Literal['high', 'low']='low', restart_mode: Literal['from_scratch', 'restart']='from_scratch', nstep: int | None = None, iprint: int = 100000, tstress: bool = False, tprnfor: bool = False, dt: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr electron_mass^1/2 Ry^-1/2, dimensionality=time)] = 20.0, outdir: Path | None = None, wfcdir: Path | None = None, prefix: str = 'pwscf', max_seconds: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=s, dimensionality=time)] = 10000000.0, etot_conv_thr: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.0001, forc_conv_thr: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry bohr^-1, dimensionality=energy length^-1)] = 0.001, disk_io: Literal['default', 'high', 'medium', 'low', 'nowf', 'minimal', 'none']='default', pseudo_dir: Path | None = None, tefield: bool = False, dipfield: bool = False, lelfield: bool = False, nberrycyc: int = 1, lorbm: bool = False, lberry: bool = False, gdir: Literal[0, 1, 2, 3]=0, nppstr: int = 0, gate: bool = False, twochem: bool = False, lfcp: bool = False, trism: bool = False)[source]
Pydantic model for the CONTROL namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- classmethod map_verbosity(v: str) str[source]
Map equivalent values for verbosity onto a canonical value.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class SystemNamelist(*, ibrav: ~typing.Literal[0, 1, 2, 3, -3, 4, 5, -5, 6, 7, 8, 9, -9, 91, 10, 11, 12, -12, 13, -13, 14], A: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=angstrom, dimensionality=length)] = 0.0, B: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=angstrom, dimensionality=length)] = 0.0, C: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=angstrom, dimensionality=length)] = 0.0, cosAB: float = 0.0, cosAC: float = 0.0, cosBC: float = 0.0, nat: int, ntyp: int, nbnd: int | None = None, nbnd_cond: int | None = None, tot_charge: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=e, dimensionality=charge)] = 0.0, tot_magnetization: float = -10000, ecutwfc: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)], ecutrho: ~typing.Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = None, ecutfock: ~typing.Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = None, nr1: int = 0, nr2: int = 0, nr3: int = 0, nr1s: int = 0, nr2s: int = 0, nr3s: int = 0, nosym: bool = False, nosym_evc: bool = False, noinv: bool = False, no_t_rev: bool = False, force_symmorphic: bool = False, use_all_frac: bool = False, occupations: ~typing.Literal['smearing', 'tetrahedra', 'tetrahedra_lin', 'tetrahedra_opt', 'fixed', 'from_input'] = 'fixed', one_atom_occupations: bool = False, starting_spin_angle: bool = False, degauss_cond: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.0, nelec_cond: float = 0.0, degauss: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.0, smearing: ~typing.Literal['gaussian', 'methfessel-paxton', 'marzari-vanderbilt', 'fermi-dirac'] = 'gaussian', nspin: ~typing.Literal[1, 2, 4] = 1, sic_gamma: float = 0.0, pol_type: ~typing.Literal['none', 'e', 'h'] = 'none', sic_energy: bool = False, sci_vb: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=eV, dimensionality=energy)] = 0.0, sci_cb: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=eV, dimensionality=energy)] = 0.0, noncolin: bool = False, ecfixed: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.0, qcutz: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.0, q2sigma: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.01, input_dft: str | None = None, ace: bool = True, exx_fraction: float | None = None, screening_parameter: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr^-1, dimensionality=length^-1)] = 0.106, exxdiv_treatment: ~typing.Literal['gygi-baldereschi', 'vcut_spherical', 'vcut_ws', 'none'] = 'gygi-baldereschi', exx_type: ~typing.Literal['bands', 'band_pairs'] = 'band_pairs', x_gamma_extrapolation: bool = True, ecutvcut: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.0, nqx1: int | None = None, nqx2: int | None = None, nqx3: int | None = None, localization_thr: float = 0.0, dmft: bool = False, dmft_prefix: str | None = None, ensemble_energies: bool = False, edir: int = 1, emaxpos: float = 0.5, eopreg: float = 0.1, eamp: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry e^-1 bohr^-1, dimensionality=energy charge^-1 length^-1)] = 0.0, lforcet: bool = False, constrained_magnetization: ~typing.Literal['none', 'total', 'atomic', 'total direction', 'atomic direction'] = 'none', Lambda: float = 1.0, report: int = -1, lspinorb: bool = False, assume_isolated: ~typing.Literal['none', 'makov-payne', 'martyna-tuckerman', 'esm', '2D'] = 'none', esm_bc: ~typing.Literal['pbc', 'bc1', 'bc2', 'bc3'] = 'pbc', esm_w: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.0, esm_efield: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry e^-1 bohr^-1, dimensionality=energy charge^-1 length^-1)] = 0.0, esm_nfit: int = 4, lgcscf: bool = False, gcscf_mu: ~typing.Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=eV, dimensionality=energy)] = None, gcscf_conv_thr: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=eV, dimensionality=energy)] = 0.01, gcscf_beta: float = 0.05, vdw_corr: ~typing.Literal['none', 'grimme-d2', 'grimme-d3', 'tkatchenko-scheffler', 'many-body-dispersion', 'XDM'] = 'none', london: bool = False, london_s6: float = 0.75, london_rcut: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 200.0, dftd3_version: ~typing.Literal[2, 3, 4, 5, 6] = 3, dftd3_threebody: bool = True, ts_vdw_econv_thr: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 1e-06, ts_vdw_isolated: bool = False, xdm: bool = False, xdm_a1: float | None = None, xdm_a2: ~typing.Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=angstrom, dimensionality=length)] = None, space_group: int = 0, uniqueb: bool = False, origin_choice: ~typing.Literal[1, 2] = 1, rhombohedral: bool = True, zgate: float = 0.5, relaxz: bool = False, block: bool = False, block_1: float = 0.45, block_2: float = 0.55, block_height: float = 0.0, nextffield: int = 0, celldm: ~typing.Annotated[tuple[float, float, float, float, float, float], ~pydantic_espresso.quantity.Quantity(units=1:bohr, dimensionality=dimensionless, 1:length)] = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), starting_charge: ~typing.Annotated[list[float], ~pydantic_espresso.quantity.Quantity(units=e, dimensionality=charge)] = <factory>, starting_magnetization: list[float] = <factory>, Hubbard_beta: ~typing.Annotated[list[float], ~pydantic_espresso.quantity.Quantity(units=eV, dimensionality=energy)] = <factory>, angle1: list[float] = <factory>, angle2: list[float] = <factory>, fixed_magnetization: tuple[float, float, float] = (0.0, 0.0, 0.0), london_c6: ~typing.Annotated[list[float] | None, ~pydantic_espresso.quantity.Quantity(units=Ry bohr^6, dimensionality=energy length^6)] = None, london_rvdw: ~typing.Annotated[list[float] | None, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = None)[source]
Pydantic model for the SYSTEM namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- classmethod map_smearing(v: str) str[source]
Map equivalent values for smearing onto a canonical value.
- classmethod map_assume_isolated(v: str) str[source]
Map equivalent values for assume_isolated onto a canonical value.
- classmethod map_vdw_corr(v: str) str[source]
Map equivalent values for vdw_corr onto a canonical value.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ElectronsNamelist(*, electron_maxstep: int = 100, exx_maxstep: int = 100, scf_must_converge: bool = True, conv_thr: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 1e-06, adaptive_thr: bool = False, conv_thr_init: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = 0.001, conv_thr_multi: float = 0.1, mixing_mode: ~typing.Literal['plain', 'TF', 'local-TF'] = 'plain', mixing_beta: float = 0.7, mixing_ndim: int = 8, mixing_fixed_ns: int = 0, diagonalization: ~typing.Literal['david', 'cg', 'ppcg', 'paro', 'rmm-davidson', 'rmm-paro', 'direct'] = 'david', diago_thr_init: float = 0.0, diago_cg_maxiter: int = 20, diago_david_ndim: int = 2, diago_rmm_ndim: int = 4, diago_rmm_conv: bool = False, diago_gs_nblock: int = 16, diago_full_acc: bool = False, efield: ~typing.Annotated[float, ~pydantic_espresso.quantity.Quantity(units=Ry e^-1 bohr^-1, dimensionality=energy charge^-1 length^-1)] = 0.0, efield_phase: ~typing.Literal['read', 'write', 'none'] = 'none', startingpot: ~typing.Literal['atomic', 'file'] = 'atomic', startingwfc: ~typing.Literal['atomic', 'atomic+random', 'random', 'file'] = 'atomic+random', tqr: bool = False, real_space: bool = False, efield_cart: ~typing.Annotated[tuple[float, float, float], ~pydantic_espresso.quantity.Quantity(units=Ry e^-1 bohr^-1, dimensionality=energy charge^-1 length^-1)] = (0.0, 0.0, 0.0))[source]
Pydantic model for the ELECTRONS namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- classmethod map_diagonalization(v: str) str[source]
Map equivalent values for diagonalization onto a canonical value.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class IonsNamelist(*, ion_positions: Literal['default', 'from_input']='default', ion_velocities: Literal['default', 'from_input']='default', ion_dynamics: Literal['none', 'bfgs', 'damp', 'fire', 'verlet', 'velocity-verlet', 'langevin', 'langevin-smc', 'beeman']='none', pot_extrapolation: Literal['none', 'atomic', 'first_order', 'second_order']='atomic', wfc_extrapolation: Literal['none', 'first_order', 'second_order']='none', remove_rigid_rot: bool = False, ion_temperature: Literal['rescaling', 'rescale-v', 'rescale-T', 'reduce-T', 'nose', 'berendsen', 'andersen', 'svr', 'initial', 'not_controlled']='not_controlled', tempw: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=K, dimensionality=temperature)] = 300.0, fnosep: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=THz, dimensionality=time^-1)] = 1.0, nhpcl: int = 0, nhptyp: Literal[0, 1, 2, 3]=0, ndega: int = 0, tolp: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=K, dimensionality=temperature)] = 100.0, delta_t: float = 1.0, nraise: int = 1, refold_pos: bool = False, upscale: float = 100.0, bfgs_ndim: int = 1, tgdiis_step: bool = True, trust_radius_max: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.8, trust_radius_min: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.0001, trust_radius_ini: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.5, w_1: float = 0.01, w_2: float = 0.5, fire_alpha_init: float = 0.2, fire_falpha: float = 0.99, fire_nmin: int = 5, fire_f_inc: float = 1.1, fire_f_dec: float = 0.5, fire_dtmax: float = 10.0, nhgrp: list[int] = <factory>, fnhscl: list[float] | None = None)[source]
Pydantic model for the IONS namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class CellNamelist(*, cell_dynamics: Literal['none', 'sd', 'damp-pr', 'damp-w', 'bfgs', 'pr', 'w']='none', press: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=kbar, dimensionality=energy length^-3)] = 0.0, wmass: Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=amu, dimensionality=mass)] = None, cell_factor: float | None = None, press_conv_thr: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=kbar, dimensionality=energy length^-3)] = 0.5, cell_dofree: Literal['all', 'ibrav', 'a', 'b', 'c', 'fixa', 'fixb', 'fixc', 'x', 'y', 'z', 'xy', 'xz', 'yz', 'xyz', 'shape', 'volume', '2Dxy', '2Dshape', 'epitaxial_ab', 'epitaxial_ac', 'epitaxial_bc']='all')[source]
Pydantic model for the CELL namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class FcpNamelist(*, fcp_mu: Annotated[float, Quantity(units=eV, dimensionality=energy)], fcp_dynamics: Literal['none', 'bfgs', 'newton', 'damp', 'lm', 'velocity-verlet', 'verlet'] = 'none', fcp_conv_thr: Annotated[float, Quantity(units=eV, dimensionality=energy)] = 0.01, fcp_ndiis: int = 4, fcp_mass: float | None = None, fcp_velocity: float | None = None, fcp_temperature: Literal[None, 'rescaling', 'rescale-v', 'rescale-T', 'reduce-T', 'berendsen', 'andersen', 'initial', 'not_controlled'] = None, fcp_tempw: Annotated[float | None, Quantity(units=K, dimensionality=temperature)] = None, fcp_tolp: Annotated[float | None, Quantity(units=K, dimensionality=temperature)] = None, fcp_delta_t: float | None = None, fcp_nraise: int | None = None, freeze_all_atoms: bool = False)[source]
Pydantic model for the FCP namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class RismNamelist(*, nsolv: int, closure: Literal['kh', 'hnc']='kh', tempv: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=K, dimensionality=temperature)] = 300.0, ecutsolv: Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=Ry, dimensionality=energy)] = None, starting1d: Literal['zero', 'file', 'fix']='zero', starting3d: Literal['zero', 'file']='zero', smear1d: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 2.0, smear3d: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 2.0, rism1d_maxstep: int = 50000, rism3d_maxstep: int = 5000, rism1d_conv_thr: float = 1e-08, rism3d_conv_thr: float | None = None, mdiis1d_size: int = 20, mdiis3d_size: int = 10, mdiis1d_step: float = 0.5, mdiis3d_step: float = 0.8, rism1d_bond_width: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.0, rism1d_dielectric: float = -1.0, rism1d_molesize: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 2.0, rism1d_nproc: int = 128, rism3d_conv_level: float | None = None, rism3d_planar_average: bool = False, laue_nfit: int = 4, laue_expand_right: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = -1.0, laue_expand_left: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = -1.0, laue_starting_right: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.0, laue_starting_left: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.0, laue_buffer_right: Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = None, laue_buffer_left: Annotated[float | None, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = None, laue_both_hands: bool = False, laue_wall: Literal['none', 'auto', 'manual']='auto', laue_wall_z: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr, dimensionality=length)] = 0.0, laue_wall_rho: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=bohr^-3, dimensionality=length^-3)] = 0.01, laue_wall_epsilon: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=kcal mol^-1, dimensionality=energy)] = 0.1, laue_wall_sigma: Annotated[float, ~pydantic_espresso.quantity.Quantity(units=angstrom, dimensionality=length)] = 4.0, laue_wall_lj6: bool = False, solute_lj: list[str] = <factory>, solute_epsilon: Annotated[list[float] | None, ~pydantic_espresso.quantity.Quantity(units=kcal mol^-1, dimensionality=energy)] = None, solute_sigma: Annotated[list[float] | None, ~pydantic_espresso.quantity.Quantity(units=angstrom, dimensionality=length)] = None)[source]
Pydantic model for the RISM namelist.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class PWInput(*, control: ~pydantic_espresso.models.pw.develop.ControlNamelist = <factory>, system: ~pydantic_espresso.models.pw.develop.SystemNamelist, electrons: ~pydantic_espresso.models.pw.develop.ElectronsNamelist = <factory>, ions: ~pydantic_espresso.models.pw.develop.IonsNamelist = <factory>, cell: ~pydantic_espresso.models.pw.develop.CellNamelist = <factory>, fcp: ~pydantic_espresso.models.pw.develop.FcpNamelist | None = None, rism: ~pydantic_espresso.models.pw.develop.RismNamelist | None = None, atomic_species: list[~pydantic_espresso.models.pw.cards.atomic_species.AtomicSpecies] = <factory>, atomic_positions: ~pydantic_espresso.models.pw.cards.atomic_positions.AtomicPositionsAlatCard | ~pydantic_espresso.models.pw.cards.atomic_positions.AtomicPositionsBohrCard | ~pydantic_espresso.models.pw.cards.atomic_positions.AtomicPositionsAngstromCard | ~pydantic_espresso.models.pw.cards.atomic_positions.AtomicPositionsCrystalCard | ~pydantic_espresso.models.pw.cards.atomic_positions.AtomicPositionsCrystalSGCard, k_points: ~pydantic_espresso.models.pw.cards.k_points.KPointsListCard | ~pydantic_espresso.models.pw.cards.k_points.KPointsGammaCard | ~pydantic_espresso.models.pw.cards.k_points.KPointsGridCard, additional_k_points: ~pydantic_espresso.models.pw.cards.k_points.KPointsListCard | ~pydantic_espresso.models.pw.cards.k_points.KPointsGammaCard | ~pydantic_espresso.models.pw.cards.k_points.KPointsGridCard | None = None, cell_parameters: ~pydantic_espresso.models.pw.cards.cell_parameters.CellParametersAlatCard | ~pydantic_espresso.models.pw.cards.cell_parameters.CellParametersBohrCard | ~pydantic_espresso.models.pw.cards.cell_parameters.CellParametersAngstromCard, constraints: list[~pydantic_espresso.models.pw.cards.constraints.Constraint] = <factory>, occupations: tuple[list[~typing.Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=2)])]]] | tuple[list[~typing.Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=1)])]], list[~typing.Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=1)])]]] | None = None, atomic_velocities: list[~pydantic_espresso.models.pw.cards.atomic_velocities.AtomicVelocity] = <factory>, atomic_forces: list[~pydantic_espresso.models.pw.cards.atomic_forces.AtomicForce] = <factory>, solvents: ~pydantic_espresso.models.pw.cards.solvents.SolventsCard | ~pydantic_espresso.models.pw.cards.solvents.SolventsLRCard | None = None, hubbard: ~pydantic_espresso.models.pw.cards.hubbard.HubbardCard | None = None)[source]
Pydantic model for the input of pw.x.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- model_config = {'extra': 'forbid', 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].