A cross-check of the in-process C ABI: every public function against the header, the inventory, both implementations, and the feature table. The :doc:`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``, | public declarations | | ``include/cpmdc_features.h`` | | +-----------------------------------------+----------------------------------+ | ``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``, | discovery functions shared by | | ``src/cpmdc_capabilities.c`` | 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 | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_available`` | lifecycle | Y | Y | Y | Y | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_finalize`` | lifecycle | Y | Y | Y | Y | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_last_energy_components`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_last_property_snapshot`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_last_stress`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_last_md_trajectory_row`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_last_multi_state_energies`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_last_charge_integrals`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_session_last_energy_components`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_session_last_charge_integrals`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_session_last_multi_state_energies`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_session_last_md_trajectory_row`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_session_last_property_snapshot`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``cpmdc_session_last_stress`` | result | Y | Y | Y | Y | | | snapshot | | | | | +-------------------------------------------------+---------------+--------+-------+------+-------------+ | ``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.