h_p_res_fullerenes

This repo contains code to test whether a fullerene is k-resonant or k-anionic-resonant

https://github.com/fastbodin/h_p_res_fullerenes

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.8%) to scientific vocabulary
Last synced: 9 months ago · JSON representation ·

Repository

This repo contains code to test whether a fullerene is k-resonant or k-anionic-resonant

Basic Info
  • Host: GitHub
  • Owner: fastbodin
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 513 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

A backtrack to test for k-resonant and k-anionic-resonant fullerenes

Background

Definitions

A fullerene $F_n$ is a 3-regular graph such that every face is a pentagon or a hexagon. By Euler's formula, there are exactly 12 pentagons. A fullerene is said to be k-resonant if the deletion of the vertices of any $k$ independent hexagons results in a graph that admits a perfect matching. This definition is inspired by the Clar number of a fullerene. The anionic Clar number is a recent generalization of the Clar number to anionic systems. In this generalization, pentagons compete with hexagons to form Clar sextets. Given this generalization, we say that a fullerene is k-anionic-resonant if the deletion of the vertices of any $k$ independent pentagons results in a graph that admits a perfect matching.

Testing for k-resonace and k-anionic-resonance

Given a fullerene $Fn$ and fixed integers $h$ and $p$, we use a backtrack to test whether the deletion of the vertices of any $h$ hexagons and $p$ pentagons, all pairwise independent, from $Fn$ results in a graph that admits a perfect matching.

Code

Requirements:

  1. A CPP+14 compiler.

  2. A file containing fullerenes and their adjacency lists in a particular format. For each isomer in the file, please use the following format such that there exists a planar embedding of the vertices where each neighbor is listed in clockwise order. See full/0X_adj for examples for all fullerenes on $X$ vertices, for $X \le 48$. Buckygen (https://github.com/evanberkowitz/buckygen) can be used to generate fullerenes in this format. Vertices should be labelled starting at 0.

{number of vertices in graph (call it n)} {degree of vertex 0} {neighbor 0} {neighbor 1} {neighbor 2} {degree of vertex 1} {neighbor 0} {neighbor 1} {neighbor 2} ... {degree of vertex n-1} {neighbor 0} {neighbor 1} {neighbor 2}

Compile:

Code successfully compiles with GCC 14.2 (https://gcc.gnu.org/gcc-14/).

There are a some compiling flags you can change in include.h.

``` // For debugging purposes

define DEBUG 0

define DEBUG_DUAL 0

define DEBUG_CLAR 0

```

The flags can be changed from 0 to 1 depending on what you want to debug (you should not need to).

To run:

./build/h_p_res {# of res. hexagons} {# of res. pentagons} < {fullerene file}

Output:

Given a file of your input fullerenes, files will be written to output/. If, for a given input fullerenes $F_n$, there exists a choice of $h$ hexagons and $p$ pentagons (your inputs) that are pairwise independent and the deletion of whose vertices results in a graph that does not admit a perfect matching, the choice of hexagons and pentagons will be recorded. This will be done for every such choice of hexagons and pentagons per input fullerene.

res_faces_h_p <- File containing all choices of h hexagons and p pentagons that result in a graph that does not admit a perfect matching. Format per row: {# of faces} {face ids of res. face.} graph_num_h_p <- File containing the graph ids (i.e. their numbering in the input file) corresponding to fullerenes in file: res_faces_h_p

Example:

See output/ for an example output that test the 2-anionic-resonant condition on all fullerenes on 48 vertices. This output shows that all fullerenes on 48 vertices, with the exception of isomers: $C{48}$:3, $C{48}$:4, and $C_{48}$:32 (labelled in accordance with The Atlas of Fullerenes), are 2-anionic-resonant.

For isomer $C_{48}$:32, there exists two choices of two independent pentagons, the deletions of whose vertices results in a graph without a perfect matching. These two choices of resonant pentagons: (0, 19) and (11, 25), indicated by the purple, are shown below.

Isomer $C_{48}$:32 Faces 0 and 19 Faces 11 and 25

Testing your build

The directory unit_test/ contains code to test whether your build is determining whether the test is executing correctly. It contains src/, full/, a Makefile, and test_build.zsh. The adjacency list of isomer $C{48}$:3 can be found in `full/fulladj/. When compiled and run (test_build.zsh), the executable will test whether the test preforms correctly for every choice of 2 independent pentagons on $C_{48}$:3. See unittest/C483.png` for an image of $C_{48}$:3.

Citation

If you use this code in your research, please cite it via:

@software{Slobodin_h_p_resonance_2025, author = {Slobodin, A.}, month = jan, title = {{A backtrack to test for k-resonant and k-anionic-resonant fullerenes}}, year = {2025}, url = {https://github.com/fastbodin/h_p_res_fullerenes}, }

Owner

  • Login: fastbodin
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Slobodin"
  given-names: "A."
  orcid: "https://orcid.org/0000-0002-6481-2548"
title: "A backtrack to test for k-resonant and k-anionic-resonant fullerenes"
version: 1.0.0
date-released: 2025-01-22
url: "https://github.com/fastbodin/h_p_res_fullerenes"

GitHub Events

Total
  • Push event: 10
  • Create event: 1
Last Year
  • Push event: 10
  • Create event: 1