diff --git a/CLAUDE.md b/CLAUDE.md index 97f987f..fc218f3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,7 +15,22 @@ bash gen_page.sh `gen_page.sh` writes into `_generated/` and is the only build step. There are no tests, no linter, and no local dev server — open `_generated/index.html` in a browser to check output (relative paths to `css/` and `media/` resolve correctly from there). -Deployment is automatic: `.github/workflows/deploy.yml` runs the same commands on every push/PR to `main` and publishes `_generated/` to GitHub Pages via `JamesIves/github-pages-deploy-action`. +Deployment is automatic once a change reaches `main` — see [Publishing](#publishing) below. + +## Publishing + +The live site is served from **`pyoomph/pyoomph.github.io`**, which is the `upstream` remote. `origin` is the fork `cdiddens/pyoomph.github.io`. Check with `git remote -v` before pushing anywhere — a push to `upstream/main` publishes immediately, with no review step. + +The established flow (how PRs #19–#21 landed): + +1. Commit the change — on a feature branch, or on the fork's `main`; both have been used. +2. `git push -u origin ` +3. `gh pr create --repo pyoomph/pyoomph.github.io --base main --head cdiddens:` +4. Merge the PR. **Merging is what publishes the site**, so it is the user's call, not something to do unprompted. + +The merge pushes to `upstream/main`, which triggers `.github/workflows/deploy.yml`: it installs the dependencies, runs `gen_page.sh` and force-pushes `_generated/` to the `gh-pages` branch via `JamesIves/github-pages-deploy-action`. That run takes ~20 s and is followed by GitHub's own "pages build and deployment" run. Check both with `gh run list --repo pyoomph/pyoomph.github.io`. + +**A PR from a fork always shows a failing check — this is expected and not a defect in the change.** `deploy.yml` triggers on `pull_request` to `main` as well as on push, but for fork PRs GitHub scopes `GITHUB_TOKEN` to read-only regardless of the `permissions: contents: write` declaration. The build succeeds and only the final push to `gh-pages` fails with a 403, so nothing is published. The check goes green on merge, because a push to `main` runs with a writable token. Gating the deploy step with `if: github.event_name != 'pull_request'` would suppress the red X. ## How pages are assembled @@ -46,6 +61,29 @@ Renders `pubs.bib` into the numbered publication list on the About page. - Journal names are shortened via the `abbrevs` dict (lowercase key → abbreviation); add an entry there rather than editing the `.bib`. A `journal` starting with `arXiv` renders as *submitted*. - PDF link: `eprint` (labelled "arXiv preprint" if the URL contains arxiv.org, else "Open Access"), otherwise a local `pdf/.pdf` if present. +## Finding new publications for `pubs.bib` + +The About page lists publications that **use** pyoomph, which is a smaller set than the publications that *cite* it. New entries are found by looking at what cites the main paper (Diddens & Rocha, J. Comput. Phys. **518**, 113306, 2024, `10.1016/j.jcp.2024.113306`) and then screening each candidate. + +1. **Collect citing works.** Three DOI-based indexes, all open and without authentication — query all three, they disagree: + + ```bash + # OpenAlex (W4401074401 is the JCP paper) + curl -sS "https://api.openalex.org/works?filter=cites:W4401074401&per-page=200" + # Semantic Scholar + curl -sS "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1016/j.jcp.2024.113306/citations?fields=title,year,externalIds,venue,authors&limit=100" + # OpenCitations (-L is required, the endpoint redirects) + curl -sSL "https://opencitations.net/index/coci/api/v1/citations/10.1016/j.jcp.2024.113306" + ``` + + Merge and dedupe on DOI. The same work routinely appears twice — as preprint (arXiv, SSRN) and as published version — and OpenAlex sometimes holds two records for one DOI. Because all three indexes are DOI-based, theses and non-DOI preprints are invisible to them; Google Scholar reports a somewhat higher count for that reason. + +2. **Subtract** what is already in `pubs.bib` and what is already listed in **`pubs_excluded.md`** — both match on DOI, `grep -i` is enough. + +3. **Screen the remainder**: the paper must actually *use* pyoomph, not merely cite it. Papers citing the JCP paper for bifurcation tracking, Marangoni modelling or multiphysics coupling in general are common and usually do not use the framework. + +4. **Add** what passes to the top of `pubs.bib` (order is literal, see `gen_pubs.py` above), and **append what fails** to `pubs_excluded.md` with the date, so it is not screened again. + ## Files under `_generated/` that are committed `css/`, `media/` (minus `media/tutorial/`), `docs.html` and `pdf.html` (meta-refresh redirects to readthedocs), `google3a5a7a86d2ed869e.html` (Search Console verification) and `sitemap.xml` are hand-maintained and tracked in git. The build only *adds* the three page files plus `media/tutorial/` on top of them — never clean the directory. diff --git a/_generated/css/style.css b/_generated/css/style.css index 00d8fab..c327643 100644 --- a/_generated/css/style.css +++ b/_generated/css/style.css @@ -36,6 +36,22 @@ a {text-decoration:underline; color:#000000;} #menu a {color:#FFF; text-decoration:none; padding:4px;} #menu a:hover {color: #DDD} + +/* small icon in front of every menu entry */ +#menu .menu-icon { + width: 0.95em; + height: 0.95em; + vertical-align: -0.11em; + margin-right: 0.35em; + fill: currentColor; /* the three internal entries follow their label */ +} +/* white variants: the "light logo" Read the Docs publishes for dark backgrounds, + and one of the colours GitHub permits for the Invertocat */ +#menu .menu-icon-rtd { fill: #FAFAFA; } +#menu .menu-icon-github { fill: #FFF; } + +/* keep the mark on the same line as its label when the menu wraps */ +#menu a { white-space: nowrap; } #menu li.selected a {color: #FFF} diff --git a/header.html b/header.html index fc5c99c..213ac1c 100644 --- a/header.html +++ b/header.html @@ -31,11 +31,11 @@
diff --git a/pubs_excluded.md b/pubs_excluded.md new file mode 100644 index 0000000..5e568fe --- /dev/null +++ b/pubs_excluded.md @@ -0,0 +1,18 @@ +# Screened out of `pubs.bib` + +Publications that **cite** the main pyoomph paper (Diddens & Rocha, J. Comput. Phys. **518**, +113306, 2024, `10.1016/j.jcp.2024.113306`) but do **not use** pyoomph, and therefore do not +belong on the About page. + +They are recorded here so that they do not have to be screened again every time the citing +literature is checked. See the *Finding new publications for `pubs.bib`* section of `CLAUDE.md` +for the full workflow; append a row here whenever a candidate fails the screening. + +This file is documentation only — no build step reads it. + +| DOI | Reference | Screened | +|---|---|---| +| `10.1016/j.apm.2026.117152` | Napieralski, Huete, Coenen, Kurdyumov, Douglas & Sánchez-Sanz, *Modal, non-modal and sensitivity analysis of planar deflagrations with low molecular diffusivity and branching kinetics*, Appl. Math. Model. (2026) | 2026-08-04 | +| `10.1016/j.jcp.2025.114348` | Saini, Sanjay, Saade, Lohse & Popinet, *Implementation of integral surface tension formulations in a volume of fluid framework and their applications to Marangoni flows*, J. Comput. Phys. (2025) — also indexed as SSRN preprint `10.2139/ssrn.5132266` | 2026-08-04 | +| `10.1016/j.ijnonlinmec.2025.105066` | Li, Liu, Liu, Wu, Li, Ding & Feng, *Analysis and control of coexisting attractor transitions in a class of rigid vibro-impact systems*, Int. J. Non-Linear Mech. (2025) | 2026-08-04 | +| `10.1016/j.compstruc.2024.107615` | Nahed & de Lamare, *Dynamic characterization of cross-physics coupling strengths, a methodology to coupling and reordering partitioned solvers for multiphysics applications*, Comput. Struct. (2024) | 2026-08-04 |