nvalchemi.models.ewald.EwaldModelWrapper#

class nvalchemi.models.ewald.EwaldModelWrapper(cutoff, accuracy=1e-6, coulomb_constant=14.3996, max_neighbors=256)[source]#

Ewald summation electrostatics potential as a model wrapper.

Computes long-range Coulomb interactions via the Ewald method, splitting contributions into real-space (erfc-damped, handled by a neighbor matrix) and reciprocal-space (structure factor summation) components.

Parameters:
  • cutoff (float) – Real-space interaction cutoff in Å.

  • accuracy (float, optional) – Target accuracy for automatic Ewald parameter estimation. Defaults to 1e-6.

  • coulomb_constant (float, optional) – Coulomb prefactor \(k_e\) in eV·Å/e². Defaults to 14.3996 (standard value for Å/e/eV unit system).

  • max_neighbors (int, optional) – Maximum neighbors per atom for the dense neighbor matrix. Defaults to 256.

model_config#

Mutable configuration controlling which outputs are computed. Set model.model_config.compute_stresses = True to enable virial computation for NPT/NPH simulations.

Type:

ModelConfig

adapt_input(data, **kwargs)[source]#

Collect required inputs from data without enabling gradients.

Parameters:
Return type:

dict[str, Any]

adapt_output(model_output, data)[source]#

Adapt the model output to the framework output format.

Parameters:
Return type:

OrderedDict[str, Float[Tensor, ‘B 1’] | Float[Tensor, ‘V 3’] | Float[Tensor, ‘V 3 3’] | Float[Tensor, ‘B 3 3’] | Float[Tensor, ‘B 3 3’] | Float[Tensor, ‘B 3’] | None]

compute_embeddings(data, **kwargs)[source]#

Compute embeddings is not meaningful for Ewald models.

Parameters:
Return type:

AtomicData | Batch

property embedding_shapes: dict[str, tuple[int, ...]]#

Retrieves the expected shapes of the node, edge, and graph embeddings.

export_model(path, as_state_dict=False)[source]#

Export model is not implemented for Ewald models.

Parameters:
  • path (Path)

  • as_state_dict (bool)

Return type:

None

forward(data, **kwargs)[source]#

Run the Ewald summation and return a ModelOutputs dict.

Parameters:
  • data (Batch) – Batch containing positions, node_charges, cell, neighbor_matrix, and num_neighbors (populated by NeighborListHook).

  • kwargs (Any)

Returns:

OrderedDict with keys "energies" (shape [B, 1], eV), "forces" (shape [N, 3], eV/Å), and optionally "stress" (shape [B, 3, 3], eV — the raw virial \(W_{phys}\)).

Return type:

ModelOutputs

input_data()[source]#

Return required input keys (override to drop atomic_numbers).

Return type:

set[str]

invalidate_cache()[source]#

Force recomputation of Ewald parameters and k-vectors.

Return type:

None

property model_card: ModelCard#

Retrieves the model card for the model.

The model card is a Pydantic model that contains information about the model’s capabilities and requirements.

output_data()[source]#

Return the set of keys that the model produces.

Return type:

set[str]