Layer mismatches and alignment notes¶
This section documents mismatches across the EXESS executable schema (libqdx.hpp), the libqdx Rust types, and the rush-py interface. It includes mismatches found in the original docs, as well as differences discovered by inspecting code.
Schema vs docs
model.methodin the EXESS schema supportsRestrictedKSDFT,UnrestrictedRIMP2, andRestrictedRICCSD, while older docs list onlyRestrictedHF,UnrestrictedHF, andRestrictedRIMP2.RI-HF is documented as
RestrictedRIHF, but the schema does not include this method; RI-HF is controlled viascf.fock_build_type = "RI".driversupportsHessianandQMMMin the schema; older docs list only Energy/Gradient/Optimization/Dynamics.frag.levelis a string enum (Monomer..Octamer) in the schema; older docs list integer levels 1-4.frag.cutoff_typeisCentroidorClosestPairin the schema; older docs also mentionMinimalDistance.frag.distance_metricexists in the schema (Max,Average,Min,Ryan) but is undocumented upstream.dynamicsis a top-level keyword group in the schema; some upstream examples place it underfrag.force_fieldis the schema key for forcefield settings; older docs useff.optimizationusestrust_regionin the schema, while earlier docs usetrust_region_keywords.SCF default values differ: the schema defaults
max_itersto 50, whereas older docs state 30.SCF docs note
convergence_metricdefaults to Energy; the schema defaults it to DIIS.dynamics.use_async_timestepsdefaults to true in the schema; older docs indicate false.debug.max_fragmentsis described as “total fragments” in older docs; the schema uses-1as the default sentinel for “all fragments”.
libqdx C++ vs libqdx Rust
frag.distance_metricdefaults toMaxin libqdx.hpp but defaults toAveragein libqdx Rust.density_basis_set_projection_fallback_enableddefaults are explicit in libqdx Rust but optional in libqdx.hpp.FragmentDistanceMetric::Ryanexists only in libqdx.hpp.Topologyincludeswaters(water range) andstereochemistryin libqdx.hpp; these fields are not present in the RustTopologystruct.GuessSCFusesbf_cutoff_thresholdin libqdx.hpp butbt_cutoff_thresholdin libqdx Rust.ssfd_only_converge_in_bsp_basishas a trailing space in the libqdx.hpp JSON key ("ssfd_only_converge_in_bsp_basis ").ks_dft.gridis free-form JSON in libqdx.hpp, but the Rust schema uses a fixedXCGridParametersstruct.model.methodandmodel.basisare required in libqdx.hpp, but libqdx Rust provides defaults (RestrictedHF,cc-pVDZ) when omitted.
libqdx C++ vs EXESS core defaults
scf.density_basis_set_projection_fallback_enabledis optional in libqdx; EXESS defaults it to true for fragmented calculations and false otherwise.scf.bf_cutoff_thresholdis optional in libqdx; EXESS defaults it todensity_threshold.scf.homo_lumo_guess_rotation_angleis optional in libqdx; EXESS defaults it to 45 degrees for unrestricted singlets and 0 otherwise.guess.smdis optional in libqdx; EXESS defaults it to true for fragmented non-RI calculations and false otherwise.lbfgs_keywordsfields are optional in libqdx; EXESS defaults ton_corrections=6,epsilon=1e-5,max_linesearch=40, andgtol=0.9when omitted.integralsomitted in inputs defaults toCallbackand 4 streams in EXESS; libqdx only setsn_streamsdefaults when the group is present (4 for CUDA, 1 for HIP).ks_dft.griddefaults (ULTRAFINE grid, MuraKnowles radial quadrature, ROBUST pruning, GauXC batch size 512) are set in EXESS, not the libqdx schema.ks_dftsp_threshold/dp_thresholddefault to the SCFdensity_thresholdin EXESS; libqdx leaves them optional.
rush-py vs schema
rush-py exposes a limited
MethodTlist and does not includeRestrictedRICCSD.rush-py
BasisT/AuxBasisTlists are narrower than the EXESS basis set lists.rush-py
Modelonly exposesstandard_orientationandforce_cartesian_basis_sets;method/basisare function parameters.rush-py does not expose
external_charges,rtat, orintegralskeyword groups.rush-py
StandardDescriptorGridacceptsSG1/SG2, while the schema usesFINE/ULTRAFINE/SUPERFINE/TREUTLER_GM*.rush-py
OptimizationKeywordsdoes not passconstraintsto REX (marked TODO in code).rush-py
Topologydoes not exposestereochemistry,fragment_multiplicities, orwaters.rush-py
BondOrderonly covers a subset of EXESS bond-order values and remaps legacy values 254/255.rush-py uses Topology paths rather than full EXESS input JSON, so
schema_version,title, and some top-level input fields are not directly set by users.rush-py defaults
frag_keywordstoFragKeywords()(dimer-level cutoffs), while the EXESS schema has no fragmentation defaults unlessfragis provided.rush-py
chelpgoverrides SCF defaults (max_diis_history_length=12,convergence_threshold=1e-8), setsfrag.level=Monomer, and enables CHELPG + bond-order exports.rush-py
chelpgsetsstandard_orientation="None"andforce_cartesian_basis_sets=false, overriding CLI defaults (FullSystem,true).rush-py
qmmmdefaults tobasis="STO-3G",dt_ps=0.002, andtemperature_kelvin=290.0.rush-py
FragKeywordsauto-fills cutoffs forTrimerandTetramerlevels (100/25/10 Angstroms) when omitted.