Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,16 @@ record keeps the convention it was published with, so a consumer must read the
base from the record rather than assume it.

The ladder is built from the k-distances at which `ceil(|b_i| / k_distance)`
changes on any axis — that is, from `|b_i| / n`. The enumeration cap on `n` is
applied per axis, so axes with different `|b_i|` exhaust their breakpoints at
different k-distances: the ladder is a complete set of meshes only for
`k_distance >= max(|b_i|) / n_max`, and below that it silently skips reachable
meshes. Any recomputation or published `k_index` column must state the cap it
used.

This convention is shared with `goldilocks-core`. Changing it invalidates every
`k_index` value already recorded or trained on.
changes on any axis — that is, from `|b_i| / n`. Enumeration stops at a
resolution floor `min_k_distance` (default `0.03` Å⁻¹, on the solid-state 2π
lengths — the AiiDA-QuantumESPRESSO convention). The floor is the same for every
axis, so all axes stop together and the ladder is a complete, gap-free set of
meshes over the whole `[min_k_distance, ∞)` range. Any recomputation or
published `k_index` column must state the floor it used; a `k_index` from a
different floor is comparable only where the two ranges overlap.

This convention must stay in step with `goldilocks-core` and `goldilocks-ml`.
Changing it invalidates every `k_index` value already recorded or trained on.

## Commands

Expand Down
4 changes: 1 addition & 3 deletions campaigns/qe/kpoints/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ PseudoDojo PBEsol campaign and the SSSP comparison analysis.
```text
kpoints/
campaign.yaml human-readable campaign configuration
scripts/ initial submission, extension, and monitoring
scripts/ extension and monitoring
notebooks/ curated analysis and visualisation
results/ snapshot, summary, and provenance manifest
```
Expand Down Expand Up @@ -49,8 +49,6 @@ uv run --extra aiida --extra kmesh python campaigns/qe/kpoints/scripts/monitor.p
```

The monitor calls `extend.py` in a fresh process. Stop it with `Ctrl-C`.
`submit_initial.py` is for the original seed campaign and additionally needs
the historical convergence summary files; run `--help` for its full interface.

## Convergence definition

Expand Down
3 changes: 2 additions & 1 deletion campaigns/qe/kpoints/scripts/extend.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
from goldilocks_data.aiida.submit import existing_kindices_by_source, submit_jobs
from goldilocks_data.codes import DftCode
from goldilocks_data.intents import CalculationIntent
from goldilocks_data.sweeps import AiidaJobSpec, KindexExtension, kindex_points, plan_well_not_ultra_extensions
from goldilocks_data.kmesh import kindex_points
from goldilocks_data.sweeps import AiidaJobSpec, KindexExtension, plan_well_not_ultra_extensions

TASK_ROOT = Path(__file__).resolve().parents[1]
DEFAULT_SNAPSHOT_DIR = TASK_ROOT / "results"
Expand Down
279 changes: 0 additions & 279 deletions campaigns/qe/kpoints/scripts/submit_initial.py

This file was deleted.

39 changes: 11 additions & 28 deletions docs/published-records.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@ identifier and can be cited.
These are snapshots. The AiiDA database remains the authoritative calculation
record; a published dataset is a documented view of it at one point in time.

## Quantum ESPRESSO no-spin SCF calculations (SSSP, K-index)
## Quantum ESPRESSO no-spin SCF calculations (SSSP, k-index)

[`d5ds2-64f16`](https://data-collections.psdi.ac.uk/records/d5ds2-64f16) · v1 ·
[`52713-55d86`](https://data-collections.psdi.ac.uk/records/52713-55d86) · v1.0 ·
CC BY 4.0

The converged k-point mesh for 17,757 MC3D structures. No spin polarisation,
SSSP PBEsol pseudopotentials, every mesh unshifted and therefore
gamma-inclusive.
The current SSSP k-index dataset: the converged k-point mesh for 17,757 MC3D
structures, numbered on the **1-based** ladder (rung 1 the Γ-only `(1, 1, 1)`
mesh) and built with the resolution floor `min_k_distance = 0.03` Å⁻¹ rather
than a per-axis k-point cap. No spin polarisation, SSSP PBEsol pseudopotentials,
every mesh unshifted and therefore gamma-inclusive.

Convergence is the first of three consecutive k-distances whose total energies
Convergence is the first of three consecutive ladder meshes whose total energies
agree within **1 meV per atom**. Energy only — no force criterion.

| File | Contents |
Expand All @@ -28,28 +30,9 @@ The archive carries more structures than the table has rows: 463 structures were
calculated but never met the criterion within the range of meshes swept, so they
have a structure file and no converged answer.

### The k_index in this record

`k_index` in this record is **0-based, with rung 0 the gamma-only `(1, 1, 1)`
mesh**, and was computed with a per-axis enumeration bound of **50**, the ladder
truncated at the first rung where an axis count would rise by more than one.

!!! warning "This record is 0-based; the convention since is 1-based"

Everything produced after this record numbers the same ladder from 1, so
rung *n* here is rung *n + 1* under the current convention. The published
record is not rewritten: it keeps the convention it was published with, and
a consumer reads the base from the record rather than assuming it.

That bound is part of the definition, not an implementation detail. The change
points of the ladder are `|b_i| / n`, the bound applies per axis, and axes with
different `|b_i|` exhaust their change points at different k-distances — so the
ladder is a complete set of meshes only down to `max(|b_i|) / 50`. Below that a
reachable mesh can be skipped. Any recomputation must state the bound it used or
its `k_index` values are not comparable with these.

Raising the bound only appends rungs and never renumbers an existing one, so
these values stay valid under a larger enumeration.
`k_index` needs both its base and its floor to mean anything; the record's
`README.md` and `manifest.json` carry both, and a consumer reads them from there
rather than assuming.

See [convergence criteria](reference/convergence.md) for how labels are assigned,
and the record's own `README.md` for the full definition and reproduction code.
Expand Down
2 changes: 1 addition & 1 deletion docs/publishing.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ convention a consumer must share are required fields:
"rows": 17757,
"columns": [{"name": "k_index", "dtype": "int", "description": "..."}],
"conventions": {
"kmesh_ladder": {"base": 0, "rung_0": "gamma_only", "max_kpoints_per_axis": 50}
"kmesh_ladder": {"base": 1, "rung_1": "gamma_only", "min_k_distance": 0.03}
},
"provenance": {"code": "quantum_espresso", "calculation": "scf", "spin": "none"}
}
Expand Down
Loading