Cluster adsorbate placement¶
Hierarchical core + rigid fragment initialization and GA repositioning.
Configuration¶
- class scgo.cluster_adsorbate.config.ClusterAdsorbateConfig(height_min=0.9, height_max=2.2, max_placement_attempts=80, blmin_ratio=0.7, cell_margin=6.0, random_spin_about_normal=True, validate_combined_structure=True, structure_min_distance_factor=0.4, structure_connectivity_factor=1.4, structure_check_clashes=True, structure_check_connectivity=True)[source]¶
Bases:
objectShared placement / relaxation settings for any small adsorbate fragment.
Surface site discovery¶
Convex-hull vertex, edge, and facet candidates for adsorbate placement on clusters and slabs.
Placement and hierarchical builds¶
- scgo.cluster_adsorbate.placement.place_fragment_on_cluster(core, fragment_template, rng, config=None, *, anchor_index=0, bond_axis=None, within_structure_site_counts=None, batch_site_counts=None, placement_metadata=None, site_core=None, clash_atoms=None)[source]¶
Rigidly place a gas-phase fragment with random orientation near the cluster.
- Return type:
Atoms|None
- scgo.cluster_adsorbate.placement.radii_derived_height_bounds(fragment_template, core, anchor_index)[source]¶
Heuristic height range from covalent radii of anchor and core atoms.
- scgo.cluster_adsorbate.hierarchical.build_hierarchical_core_fragment_cluster(full_composition, adsorbate_definition, rng, previous_search_glob, fragment_templates, cluster_adsorbate_config, *, cluster_init_vacuum=8.0, init_mode='smart', max_placement_attempts=200, batch_site_counts=None, placement_metadata=None)[source]¶
Build core cluster, place rigid fragment(s), return gas-phase structure.
Each entry in
fragment_templatesis placed sequentially on distinct adsorption sites while preserving previously placed fragments.- Return type:
Atoms|None
Pre-GO feasibility checks¶
- scgo.cluster_adsorbate.feasibility.validate_adsorbate_placement_feasibility(core_symbols, adsorbate_fragment_lengths, adsorbate_fragments=None, *, context='')[source]¶
Raise
ValueErrorwhen fragment count likely exceeds placement capacity.This is a fast, geometry-agnostic heuristic used before global optimization. It does not replace runtime placement validation.
- Return type:
GA repositioning and rigid geometry¶
- class scgo.cluster_adsorbate.reposition.FragmentRepositionMutation(blmin, n_top, system_type, adsorbate_definition, fragment_templates=None, cluster_adsorbate_config=None, *, rng=None, verbose=False)[source]¶
Rigidly re-place one adsorbate fragment on a new core surface site.
Core atoms (tag 0) define the convex-hull site pool; other adsorbate fragments remain fixed as clash obstacles. Preserves fragment internal geometry by using the current fragment pose (or an input template) as the rigid body.
Radii and steric scoring¶
Operator clash checks and placement ranking use covalent-radius blmin tables
(BLMIN_RATIO_DEFAULT = 0.7). Structure validation uses connectivity_factor
(typically 1.4) via validate_structure_for_system_type().
- scgo.initialization.atomic_radii.build_blmin(symbols, ratio=0.7)[source]¶
Build an ASE-compatible blmin table for the given element symbols.
- scgo.initialization.atomic_radii.build_blmin_from_zs(zs, ratio=0.7)[source]¶
Build an ASE-compatible blmin table using scgo gap-filled covalent radii.