Characterisation

K-point Optimization

Optimize k-point sampling convergence for electronic structure calculations.

1. Overview

K-point optimization systematically tests different k-point mesh densities to find the optimal balance between computational cost and accuracy for electronic structure calculations. This ensures your DFT calculations are properly converged without unnecessary computational expense.

kpoint.py
from atomict.simulation.kpoint import create_kpoint_exploration

result = create_kpoint_exploration(
    project_id="your-project-id",
    structure_id="your-structure-id",
    structure_type="userupload",
    k_point_min=2,
    k_point_max=8,
    evenly_spaced=True,
    action="DRAFT"
)

2. Creating K-point Explorations

2.1 Basic Configuration

kpoint.py
from atomict.simulation.kpoint import create_kpoint_exploration

# Basic k-point exploration with default range (3-6)
result = create_kpoint_exploration(
    project_id="your-project-id",
    name="K-point Convergence Test",
    structure_id="your-structure-id",
    structure_type="userupload",
    action="DRAFT"
)

exploration_id = result["id"]

2.2 Custom Parameters

Configure specific k-point ranges and spacing:

kpoint.py
# Custom k-point range with evenly spaced points
result = create_kpoint_exploration(
    project_id="your-project-id",
    name="Custom K-point Range",
    structure_id="your-structure-id",
    structure_type="userupload",
    k_point_min=2,
    k_point_max=8,
    evenly_spaced=True,
    action="LAUNCH",
    extra_kwargs={"selected_cluster": "your-cluster-id"}
)

2.3 Structure Source Types

K-point optimization supports multiple structure sources:

Structure TypeDescription
"userupload"User-uploaded CIF files
"mlrelax"Output from ML relaxation
"fhiaims"Output from FHI-aims calculation
kpoint.py
# Using ML relaxation output
result = create_kpoint_exploration(
    project_id="your-project-id",
    structure_id="mlrelax-structure-id",
    structure_type="mlrelax",
    action="DRAFT"
)

3. Convergence Analysis

Create analysis to determine optimal k-point density:

kpoint.py
from atomict.simulation.kpoint import create_kpoint_analysis

# Create convergence analysis
analysis = create_kpoint_analysis(
    project_id="your-project-id",
    name="K-point Convergence Analysis",
    exploration_id=exploration_id,
    convergence_threshold=0.001  # Energy convergence criterion (eV)
)

analysis_id = analysis["id"]

3.1 Retrieving Results

kpoint.py
from atomict.simulation.kpoint import get_kpoint_analysis

# Get analysis results
results = get_kpoint_analysis(analysis_id)
print(f"Optimal k-points: {results.get('optimal_kpoints')}")
print(f"Converged: {results.get('converged')}")

4. Managing Explorations

4.1 Retrieving Exploration Details

kpoint.py
from atomict.simulation.kpoint import get_kpoint_exploration

# Get basic exploration information
exploration = get_kpoint_exploration(exploration_id)
print(f"K-point range: {exploration['k_point_min']}-{exploration['k_point_max']}")

# Include simulation details
detailed = get_kpoint_exploration(exploration_id, include_simulations=True)
print(f"Number of simulations: {len(detailed.get('simulations', []))}")

4.2 Updating Properties

kpoint.py
from atomict.simulation.kpoint import update_kpoint_exploration

# Update exploration metadata
updated = update_kpoint_exploration(
    exploration_id,
    name="Updated K-point Test",
    description="Modified convergence parameters"
)

4.3 Cleanup

kpoint.py
from atomict.simulation.kpoint import delete_kpoint_exploration

# Delete exploration and associated simulations
delete_kpoint_exploration(exploration_id)

5. Parameter Reference

create_kpoint_exploration()

ParameterTypeRequiredDefaultDescription
project_idstrYes-Target project UUID
structure_idstrYes-Structure UUID
structure_typestrYes-Structure source type
namestrNo-Exploration name
k_point_minintNo3Minimum k-point density
k_point_maxintNo6Maximum k-point density
evenly_spacedboolNoFalseUse even spacing
actionstrYes-"DRAFT" or "LAUNCH"
extra_kwargsdictNo{}Additional parameters

create_kpoint_analysis()

ParameterTypeRequiredDescription
project_idstrYesProject UUID
namestrYesAnalysis name
exploration_idstrYesTarget exploration UUID
convergence_thresholdfloatNoEnergy convergence criterion (eV)