{"id":32157361,"url":"https://github.com/sciml/finitevolumemethod.jl","last_synced_at":"2025-10-21T12:48:03.384Z","repository":{"id":64393272,"uuid":"561533716","full_name":"SciML/FiniteVolumeMethod.jl","owner":"SciML","description":"Solver for two-dimensional conservation equations using the finite volume method in Julia.","archived":false,"fork":false,"pushed_at":"2025-07-31T21:44:59.000Z","size":321554,"stargazers_count":46,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-21T12:48:01.263Z","etag":null,"topics":["finite-volume-method","partial-differential-equations"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SciML.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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"},"funding":{"github":"SciML"}},"created_at":"2022-11-03T22:40:16.000Z","updated_at":"2025-08-15T19:27:38.000Z","dependencies_parsed_at":"2023-02-08T09:30:48.441Z","dependency_job_id":"99a69ce5-ae2e-4a56-89ea-c71f230afd4c","html_url":"https://github.com/SciML/FiniteVolumeMethod.jl","commit_stats":{"total_commits":188,"total_committers":4,"mean_commits":47.0,"dds":"0.21276595744680848","last_synced_commit":"abd585bd83c7c3c4d2989a1ded32e2db1e7eb412"},"previous_names":["sciml/finitevolumemethod.jl","danielvandh/finitevolumemethod.jl"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/SciML/FiniteVolumeMethod.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FFiniteVolumeMethod.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FFiniteVolumeMethod.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FFiniteVolumeMethod.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FFiniteVolumeMethod.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SciML","download_url":"https://codeload.github.com/SciML/FiniteVolumeMethod.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FFiniteVolumeMethod.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280264172,"owners_count":26300771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"}},"keywords":["finite-volume-method","partial-differential-equations"],"created_at":"2025-10-21T12:47:59.177Z","updated_at":"2025-10-21T12:48:03.378Z","avatar_url":"https://github.com/SciML.png","language":"Julia","funding_links":["https://github.com/sponsors/SciML"],"categories":[],"sub_categories":[],"readme":"# FiniteVolumeMethod\n\n[![DOI](https://zenodo.org/badge/561533716.svg)](https://zenodo.org/badge/latestdoi/561533716)\n[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://SciML.github.io/FiniteVolumeMethod.jl/dev)\n[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://SciML.github.io/FiniteVolumeMethod.jl/stable)\n[![Coverage](https://codecov.io/gh/SciML/FiniteVolumeMethod.jl/branch/main/graph/badge.svg?token=XPM5KN89R6)](https://codecov.io/gh/SciML/FiniteVolumeMethod.jl)\n\nThis is a Julia package for solving partial differential equations (PDEs) of the form\n\n$$\n\\dfrac{\\partial u(\\boldsymbol x, t)}{\\partial t} + \\boldsymbol{\\nabla} \\boldsymbol{\\cdot} \\boldsymbol{q}(\\boldsymbol x, t, u) = S(\\boldsymbol x, t, u), \\quad (x, y)^{\\mkern-1.5mu\\mathsf{T}} \\in \\Omega \\subset \\mathbb R^2,t\u003e0,\n$$\n\nin two dimensions using the finite volume method, with support also provided for steady-state problems and for systems of PDEs of the above form. In addition to this generic form above, we also provide support for specific problems that can be solved in a more efficient manner, namely:\n\n 1. `DiffusionEquation`s: $\\partial_tu = \\boldsymbol\\nabla\\boldsymbol\\cdot[D(\\boldsymbol x)\\boldsymbol\\nabla u]$.\n 2. `MeanExitTimeProblem`s: $\\boldsymbol\\nabla\\boldsymbol\\cdot[D(\\boldsymbol x)\\boldsymbol\\nabla T(\\boldsymbol x)] = -1$.\n 3. `LinearReactionDiffusionEquation`s: $\\partial_tu = \\boldsymbol\\nabla\\boldsymbol\\cdot[D(\\boldsymbol x)\\boldsymbol\\nabla u] + f(\\boldsymbol x)u$.\n 4. `PoissonsEquation`: $\\boldsymbol\\nabla\\boldsymbol\\cdot[D(\\boldsymbol x)\\boldsymbol\\nabla u] = f(\\boldsymbol x)$.\n 5. `LaplacesEquation`: $\\boldsymbol\\nabla\\boldsymbol\\cdot[D(\\boldsymbol x)\\boldsymbol\\nabla u] = 0$.\n\nSee the documentation for more information.\n\nIf this package doesn't suit what you need, you may like to review some of the other PDE packages shown [here](https://github.com/JuliaPDE/SurveyofPDEPackages).\n\nAs a very quick demonstration, here is how we could solve a diffusion equation with Dirichlet boundary conditions on a square domain using the standard `FVMProblem` formulation; please see the docs for more information.\n\n```julia\nusing FiniteVolumeMethod, DelaunayTriangulation, CairoMakie, OrdinaryDiffEq\na, b, c, d = 0.0, 2.0, 0.0, 2.0\nnx, ny = 50, 50\ntri = triangulate_rectangle(a, b, c, d, nx, ny, single_boundary = true)\nmesh = FVMGeometry(tri)\nbc = (x, y, t, u, p) -\u003e zero(u)\nBCs = BoundaryConditions(mesh, bc, Dirichlet)\nf = (x, y) -\u003e y ≤ 1.0 ? 50.0 : 0.0\ninitial_condition = [f(x, y) for (x, y) in DelaunayTriangulation.each_point(tri)]\nD = (x, y, t, u, p) -\u003e 1 / 9\nfinal_time = 0.5\nprob = FVMProblem(mesh, BCs; diffusion_function = D, initial_condition, final_time)\nsol = solve(prob, Tsit5(), saveat = 0.001)\nu = Observable(sol.u[1])\nfig, ax, sc = tricontourf(tri, u, levels = 0:5:50, colormap = :matter)\ntightlimits!(ax)\nrecord(fig, \"anim.gif\", eachindex(sol)) do i\n    u[] = sol.u[i]\nend\n```\n\n![Animation of a solution](https://github.com/SciML/FiniteVolumeMethod.jl/blob/main/anim.gif)\n\nWe could have equivalently used the `DiffusionEquation` template, so that `prob` could have also been defined by\n\n```julia\nprob = DiffusionEquation(mesh, BCs; diffusion_function = D, initial_condition, final_time)\n```\n\nand be solved much more efficiently. See the documentation for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsciml%2Ffinitevolumemethod.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsciml%2Ffinitevolumemethod.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsciml%2Ffinitevolumemethod.jl/lists"}