{"id":95603,"name":"Thetis","description":"An unstructured grid coastal ocean model built using the Firedrake finite element framework.","url":"https://github.com/thetisproject/thetis","last_synced_at":"2026-04-08T02:30:32.698Z","repository":{"id":39380802,"uuid":"47844713","full_name":"thetisproject/thetis","owner":"thetisproject","description":"Finite element flow solver for simulating coastal and estuarine flows.","archived":false,"fork":false,"pushed_at":"2026-01-13T12:57:49.000Z","size":59104,"stargazers_count":80,"open_issues_count":29,"forks_count":33,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-01-13T15:13:29.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thetisproject.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-12-11T18:43:31.000Z","updated_at":"2026-01-13T12:57:49.000Z","dependencies_parsed_at":"2023-02-09T03:00:45.981Z","dependency_job_id":"4103c271-c180-42c1-8814-908893c6699f","html_url":"https://github.com/thetisproject/thetis","commit_stats":{"total_commits":1801,"total_committers":30,"mean_commits":60.03333333333333,"dds":0.393670183231538,"last_synced_commit":"9150d9f19bdf0354402b03ea66d744e1bce6e59d"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/thetisproject/thetis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thetisproject","download_url":"https://codeload.github.com/thetisproject/thetis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29461911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T22:42:09.113Z","status":"ssl_error","status_checked_at":"2026-02-14T22:42:05.053Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"thetisproject","name":"thetisproject","uuid":"17277005","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17277005?v=4","repositories_count":2,"last_synced_at":"2023-03-08T11:26:51.198Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/thetisproject","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T03:31:57.276Z","updated_at":"2023-03-08T11:26:51.223Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thetisproject","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thetisproject/repositories"},"packages":[],"commits":{"id":1390010,"full_name":"thetisproject/thetis","default_branch":"master","total_commits":1851,"total_committers":26,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":71.1923076923077,"dds":0.4100486223662885,"past_year_total_commits":50,"past_year_total_committers":7,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":7.142857142857143,"past_year_dds":0.64,"last_synced_at":"2025-10-29T07:13:52.231Z","last_synced_commit":"f513865b1c2e33029f35c671f45f7f2347e419b3","created_at":"2023-09-27T00:14:10.650Z","updated_at":"2025-10-29T07:13:02.860Z","committers":[{"name":"Tuomas Karna","email":"tuomas.karna@gmail.com","login":"tkarna","count":1092},{"name":"Joe Wallwork","email":"j.wallwork16@imperial.ac.uk","login":"jwallwork23","count":221},{"name":"Stephan Kramer","email":"s.kramer@imperial.ac.uk","login":"stephankramer","count":218},{"name":"Lawrence Mitchell","email":"lawrence.mitchell@imperial.ac.uk","login":"wence-","count":58},{"name":"Tuomas Karna","email":"karnat@stccmop.org","login":"tpkarna-cmop","count":51},{"name":"mc4117","email":"mc4117@imperial.ac.uk","login":"mc4117","count":48},{"name":"Athanasios Angeloudis","email":"a.angeloudis06@imperial.ac.uk","login":"thangel","count":47},{"name":"Connor Jordan","email":"115144692+cpjordan","login":"cpjordan","count":23},{"name":"Simon Warder","email":"scw15@ic.ac.uk","login":null,"count":19},{"name":"Connor Ward","email":"c.ward20@imperial.ac.uk","login":"connorjward","count":11},{"name":"David Ham","email":"David.Ham@imperial.ac.uk","login":"dham","count":11},{"name":"acse-ej321","email":"89605848+acse-ej321","login":"acse-ej321","count":10},{"name":"Mariana Clare","email":"mdac12@hotmail.co.uk","login":"mc21hm","count":8},{"name":"Simon Warder","email":"scw15@ese-swarder15.ese.ic.ac.uk","login":null,"count":8},{"name":"Nicolas Barral","email":"n.barral@imperial.ac.uk","login":"taupalosaurus","count":7},{"name":"acse-ej321","email":"acse-ej321@github.com","login":null,"count":5},{"name":"Jon Hill","email":"jon.hill@york.ac.uk","login":"jhill1","count":4},{"name":"Andrew T. T. McRae","email":"dorugeber","login":"dorugeber","count":2},{"name":"Connor Jordan","email":"115144692+s1626662","login":"s1626662","count":1},{"name":"Jack Betteridge","email":"43041811+JDBetteridge","login":"JDBetteridge","count":1},{"name":"Matthew Piggott","email":"matt-piggott","login":"matt-piggott","count":1},{"name":"Pablo Brubeck","email":"brubeck@protonmail.com","login":"pbrubeck","count":1},{"name":"Wei Pan","email":"panwei468@foxmail.com","login":"wei-pan","count":1},{"name":"Athanasios Angeloudis","email":"aa406@imperial.ac.uk","login":null,"count":1},{"name":"Athanasios Angeloudis","email":"aa406@ese-dcoles.ese.ic.ac.uk","login":null,"count":1},{"name":"jonathanlee","email":"158009237+jonathclee","login":"jonathclee","count":1}],"past_year_committers":[{"name":"Connor Jordan","email":"115144692+cpjordan","login":"cpjordan","count":18},{"name":"acse-ej321","email":"89605848+acse-ej321","login":"acse-ej321","count":10},{"name":"Connor Ward","email":"c.ward20@imperial.ac.uk","login":"connorjward","count":9},{"name":"Stephan Kramer","email":"s.kramer@imperial.ac.uk","login":"stephankramer","count":4},{"name":"Joe Wallwork","email":"jw2423@cam.ac.uk","login":"jwallwork23","count":4},{"name":"acse-ej321","email":"acse-ej321@github.com","login":null,"count":4},{"name":"jonathanlee","email":"158009237+jonathclee","login":"jonathclee","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-29T00:00:18.766Z","repositories_count":6089584,"commits_count":922516563,"contributors_count":35983866,"owners_count":1109633,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"thetisproject/thetis","html_url":"https://github.com/thetisproject/thetis","last_synced_at":"2025-10-30T16:04:52.571Z","status":null,"issues_count":44,"pull_requests_count":165,"avg_time_to_close_issue":8357678.333333333,"avg_time_to_close_pull_request":4146550.1679389314,"issues_closed_count":21,"pull_requests_closed_count":131,"pull_request_authors_count":14,"issue_authors_count":20,"avg_comments_per_issue":2.2272727272727275,"avg_comments_per_pull_request":1.0666666666666667,"merged_pull_requests_count":116,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":15,"past_year_pull_requests_count":57,"past_year_avg_time_to_close_issue":5098784.0,"past_year_avg_time_to_close_pull_request":3029154.870967742,"past_year_issues_closed_count":5,"past_year_pull_requests_closed_count":31,"past_year_pull_request_authors_count":8,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":1.6666666666666667,"past_year_avg_comments_per_pull_request":0.9473684210526315,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":26,"created_at":"2023-09-27T00:14:40.861Z","updated_at":"2025-10-30T16:04:52.572Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetisproject%2Fthetis/issues","issue_labels_count":{"enhancement":7,"bug":3},"pull_request_labels_count":{"bug":7,"enhancement":2},"issue_author_associations_count":{"CONTRIBUTOR":30,"NONE":14},"pull_request_author_associations_count":{"CONTRIBUTOR":157,"NONE":8},"issue_authors":{"jwallwork23":8,"cpjordan":7,"tkarna":4,"stephankramer":4,"jhill1":3,"Sijbrandb":2,"MaihgrUmosch":2,"jonathclee":2,"acse-ej321":1,"thangel":1,"dbsi-pinkman":1,"hcerbone":1,"JDBetteridge":1,"acse-ra2617":1,"devmrs":1,"connorjward":1,"charithaRdissanayaka":1,"dham":1,"klaatujk":1,"MatiasAlday":1},"pull_request_authors":{"jwallwork23":44,"cpjordan":44,"stephankramer":33,"tkarna":18,"connorjward":6,"jhill1":6,"seimurss":3,"acse-ej321":3,"jonathclee":2,"JDBetteridge":2,"wence-":1,"LawrenceDior":1,"f-haces":1,"pbrubeck":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-30T00:00:25.546Z","repositories_count":11263014,"issues_count":35009938,"pull_requests_count":113611200,"authors_count":11042159,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"enhancement":3,"bug":1},"past_year_pull_request_labels_count":{"bug":6,"enhancement":2},"past_year_issue_author_associations_count":{"CONTRIBUTOR":13,"NONE":2},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":53,"NONE":4},"past_year_issue_authors":{"cpjordan":7,"jhill1":2,"jonathclee":2,"connorjward":1,"dbsi-pinkman":1,"jwallwork23":1,"stephankramer":1},"past_year_pull_request_authors":{"cpjordan":28,"stephankramer":9,"jwallwork23":6,"connorjward":5,"seimurss":3,"jonathclee":2,"acse-ej321":2,"jhill1":2},"maintainers":[],"active_maintainers":[]},"events":{"total":{"IssuesEvent":22,"WatchEvent":5,"DeleteEvent":16,"IssueCommentEvent":74,"PushEvent":124,"PullRequestReviewCommentEvent":59,"PullRequestReviewEvent":85,"PullRequestEvent":48,"ForkEvent":4,"CreateEvent":28},"last_year":{"IssuesEvent":22,"WatchEvent":5,"DeleteEvent":16,"IssueCommentEvent":72,"PushEvent":120,"PullRequestEvent":47,"PullRequestReviewCommentEvent":59,"PullRequestReviewEvent":85,"ForkEvent":4,"CreateEvent":27}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T16:47:38.522Z","updated_at":"2022-08-09T16:47:38.522Z","repository_link":"https://github.com/thetisproject/thetis/blob/main/requirements.txt","dependencies":[{"id":931414559,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":931414560,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":931414561,"package_name":"pyproj","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":931414562,"package_name":"uptide","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":931414563,"package_name":"pytz","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":931414564,"package_name":"traitlets","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2023-02-09T03:00:45.914Z","updated_at":"2023-02-09T03:00:45.914Z","repository_link":"https://github.com/thetisproject/thetis/blob/main/.github/workflows/build.yml","dependencies":[{"id":7475462651,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7475462652,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":7.949444420250625,"created_at":"2023-09-27T00:03:58.729Z","updated_at":"2026-04-08T02:30:32.701Z","avatar_url":"https://github.com/thetisproject.png","language":"Python","category":"Hydrosphere","sub_category":"Coastal and Reefs","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# 🌊 Thetis\n\n[![Weekly Tests (master)](https://github.com/thetisproject/thetis/actions/workflows/weekly-master.yml/badge.svg?branch=master)](https://github.com/thetisproject/thetis/actions/workflows/weekly-master.yml)\n![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)\n\n**Thetis** is an open-source, finite element framework for simulating **coastal and estuarine flows** with advanced numerics, high flexibility, and easy extensibility.\n\nThetis builds on the [Firedrake](https://www.firedrakeproject.org/) finite element library to provide robust solvers for 2D/3D shallow water equations and related physical processes in the coastal ocean.\n\n---\n\n## 🌟 Key Features\n\n✅ 2D depth-averaged and 3D baroclinic shallow water solvers  \n✅ Wetting and drying schemes for realistic coastlines  \n✅ Scalar transport (salinity, temperature, tracers)  \n✅ Adjoint capabilities for data assimilation and inverse modeling  \n✅ Flexible unstructured meshes  \n✅ Open-source and easily extensible Python codebase\n\n\u003e 📚 Full documentation and installation instructions are available at [thetisproject.org](https://thetisproject.org/)\n\n---\n\n## 🚀 Installation\n\n\nPlease see the [installation instructions on the website](https://thetisproject.org/installation.html) for full details.\n\nFor the release branch:\n\n1. Install **[Firedrake](https://www.firedrakeproject.org/install.html)** and activate its virtual environment.  \n2. Install Thetis within the Firedrake environment:\n\n```bash\npip install git+https://github.com/thetisproject/thetis.git\n```\nYou can instead install and switch between different versions of Thetis with:\n\n```bash\ngit clone https://github.com/thetisproject/thetis\ncd thetis\ngit checkout \u003cbranch_name\u003e\npip install -e .\n```\n\u003e **Note**\n\u003e The latest development branch of Thetis (master) will require the corresponding main branch of Firedrake. See the\n\u003e website for more details.\n\n### Release branch weekly status\n[![Weekly Tests (release)](https://github.com/thetisproject/thetis/actions/workflows/weekly-release.yml/badge.svg?branch=release)](https://github.com/thetisproject/thetis/actions/workflows/weekly-release.yml)\n\n---\n\n## Getting Started\n\nTo get up and running with Thetis once it has been installed, we recommend checking out the [basic tutorials and \ndocumentation](https://thetisproject.org/documentation.html#tutorials). Further examples can then be found in the \nrepository at [`examples`](./examples). See [`examples/README.md`](./examples/readme.md) for \ndetailed descriptions of each example script.\n\n\n---\n\n## 📬 **Questions?**  \n\nCheck the [website](https://thetisproject.org/contact.html) for ways of reaching out to developers!\n\n---\n\n## Citing Thetis\n\nIf Thetis is helpful in your research, please cite:\n\n\u003e Kärnä, T., Kramer, S. C., Mitchell, L., Ham, D. A., Piggott, M. D. \u0026 Baptista, A. M. (2018).  \n\u003e *Thetis coastal ocean model: discontinuous Galerkin discretization for the three-dimensional hydrostatic equations.*  \n\u003e Geoscientific Model Development, 11: 4359–4382.  \n\u003e doi: [10.5194/gmd-11-4359-2018](https://doi.org/10.5194/gmd-11-4359-2018)\n\n---\n\n\n## License\n\nThetis is available under the MIT License. See the [LICENSE](./LICENSE) file for details.\n\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5194/gmd-11-4359-2018"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["petsc","code-generation","e3sm-model","ngee-arctic","pflotran","amcg","firedrake","mesh-adaptation","moving-mesh","pyadjoint"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/95603","html_url":"https://ost.ecosyste.ms/projects/95603"}