{"adoption": {"forks": 1319, "observed_at": "2026-08-28T04:08:35.890898+00:00", "stars": 4118}, "canonical_url": "https://ross.abutalabs.com/products/cfdpython", "card": {"archived": false, "artifact_type": "learning-resource", "description": "A sequence of Jupyter notebooks featuring the \"12 Steps to Navier-Stokes\" http://lorenabarba.com/  ", "domain": ["simulation", "education", "tutorials"], "enriched": true, "function": ["simulation", "data-visualization"], "health_score": 20, "homepage": null, "language": "Jupyter Notebook", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["barbagroup/CFDPython"], "name": "barbagroup/CFDPython", "platform": ["python", "cross-platform"], "pushed_at": "2024-03-19T16:46:54+00:00", "repo": "barbagroup/CFDPython", "stars": 4118, "tags": ["computational-fluid-dynamics", "jupyter-notebooks", "navier-stokes", "numerical-methods", "self-study", "education"], "topics": ["navier-stokes-equations", "cfd", "jupyter-notebook", "python", "fluid-dynamics"], "urls": [], "use_cases": ["learn computational fluid dynamics from scratch", "self-study numerical solutions to Navier-Stokes equations", "teach a university CFD course with hands-on notebooks", "practice Python and NumPy through physics simulations", "understand numerical diffusion, accuracy, and convergence", "prepare for CFD research with foundational exercises"], "what_it_is": "CFD Python is a series of Jupyter notebooks ('12 Steps to Navier-Stokes') that teach the foundations of Computational Fluid Dynamics by coding solutions to the governing PDEs of fluid flow. Created by Prof. Lorena Barba, it is designed for self-study or as course material, requiring only basic programming and some PDE background.", "when_to_avoid": ["you need production CFD simulation software", "you want a GUI-based fluid dynamics tool", "you have no interest in programming the solutions yourself"], "when_to_choose": ["you want a step-by-step, incremental introduction to CFD", "you prefer learning by writing code rather than reading theory", "you need free, citable course material for fluid dynamics", "you have basic Python knowledge and PDE background"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cfdpython", "repo": "barbagroup/CFDPython", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:35.890898+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:23:08.268260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64b1b7dc2dbd3b46a299a6f3bd5e42b2f2609b239da1b7a175a7239cf028a638", "fetched_at": "2026-08-28T04:08:35.890898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/barbagroup/CFDPython"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4586, "days_push": 897, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}