A cross-check of the in-process C ABI: every public function against the header, the inventory, both implementations, and the feature table. The C ABI reference documents what each function does; this page records where each one lives. The cpmd-public-abi-inventory, stub-abi-symbol-coverage, and shared-dlopen-symbol-coverage tests keep it true.

Sources checked

Source

Role

include/cpmdc.h, include/cpmdc_features.h

public declarations

schema/inventory/cpmd_features.json

abi_symbols list and feature rows

src/cpmdc.c

implementation in the default and OpenCPMD builds

src/cpmdc_stub.c

implementation in the stub build

src/cpmdc_features.c, src/cpmdc_capabilities.c

discovery functions shared by all builds

Symbols

Columns: declared in a public header, implemented for the default and OpenCPMD builds, implemented for the stub, and present as an abi.* feature row.

Symbol

Role

Header

Build

Stub

Feature row

cpmdc_set_params

setup

Y

Y

Y

Y

cpmdc_energy_gradient

step, arrays

Y

Y

Y

Y

cpmdc_energy

step, arrays

Y

Y

Y

Y

cpmdc_energy_forces

step, arrays

Y

Y

Y

Y

cpmdc_bind_calculator

MPI

Y

Y

Y

Y

cpmdc_session_create

setup

Y

Y

Y

Y

cpmdc_session_set_params

setup

Y

Y

Y

Y

cpmdc_session_destroy

lifecycle

Y

Y

Y

Y

cpmdc_session_energy_gradient

step, arrays

Y

Y

Y

Y

cpmdc_session_energy

step, arrays

Y

Y

Y

Y

cpmdc_session_energy_forces

step, arrays

Y

Y

Y

Y

cpmdc_session_calculate_forces

step, message

Y

Y

Y

Y

cpmdc_session_calculate_result

step, message

Y

Y

Y

Y

cpmdc_calculate_result

step, message

Y

Y

Y

Y

cpmdc_calculate_result_from_config

step, message

Y

Y

Y

Y

cpmdc_potential_result_size_for_force_input

result size

Y

Y

Y

Y

cpmdc_capabilities_result

discovery

Y

Y

Y

Y

cpmdc_version

lifecycle

Y

Y

Y

Y

cpmdc_abi_version

lifecycle

Y

Y

Y

Y

cpmdc_configure

setup

Y

Y

Y

Y

cpmdc_session_create_from_config

setup

Y

Y

Y

Y

cpmdc_session_configure

setup

Y

Y

Y

Y

cpmdc_last_error

result snapshot

Y

Y

Y

Y

cpmdc_available

lifecycle

Y

Y

Y

Y

cpmdc_finalize

lifecycle

Y

Y

Y

Y

cpmdc_last_energy_components

result snapshot

Y

Y

Y

Y

cpmdc_last_property_snapshot

result snapshot

Y

Y

Y

Y

cpmdc_last_stress

result snapshot

Y

Y

Y

Y

cpmdc_last_md_trajectory_row

result snapshot

Y

Y

Y

Y

cpmdc_last_multi_state_energies

result snapshot

Y

Y

Y

Y

cpmdc_last_charge_integrals

result snapshot

Y

Y

Y

Y

cpmdc_session_last_energy_components

result snapshot

Y

Y

Y

Y

cpmdc_session_last_charge_integrals

result snapshot

Y

Y

Y

Y

cpmdc_session_last_multi_state_energies

result snapshot

Y

Y

Y

Y

cpmdc_session_last_md_trajectory_row

result snapshot

Y

Y

Y

Y

cpmdc_session_last_property_snapshot

result snapshot

Y

Y

Y

Y

cpmdc_session_last_stress

result snapshot

Y

Y

Y

Y

cpmdc_feature_count

discovery

Y

Y

Y

Y

cpmdc_feature_table

discovery

Y

Y

Y

Y

cpmdc_feature_find

discovery

Y

Y

Y

Y

40 symbols in abi_symbols, 40 with every column present.

Parser sections

The 25 sections OpenCPMD reads with inscan('&SECTION'), recorded in opencpmd_inscan_sections and schema/inventory/opencpmd_sections.txt:

ATOM, ATOMS, BASIS, CLAS, CPMD, DFT, EAM, EXTE, HARDNESS, INFO, LINRES, MOLSTATES, MTS, NLCC, PATH, PIMD, POTENTIAL, PROP, PTDDFT, RESP, SYSTEM, TDDFT, VDW, VECTORS, WAVEFUNCTION.

QMMM, PROPERTIES, BICANONICAL, and CDFT are &CPMD keywords, not sections.