{"id":28516237,"url":"https://github.com/gridap/gridaproms.jl","last_synced_at":"2026-04-15T09:01:38.542Z","repository":{"id":283446138,"uuid":"723581557","full_name":"gridap/GridapROMs.jl","owner":"gridap","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-14T16:32:27.000Z","size":94986,"stargazers_count":12,"open_issues_count":9,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-14T18:24:11.179Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/gridap.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","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":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-26T05:39:27.000Z","updated_at":"2026-04-14T16:24:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"57d668a9-0a22-4ed3-8258-efbec6ad60fc","html_url":"https://github.com/gridap/GridapROMs.jl","commit_stats":null,"previous_names":["nichomueller/romanifolds.jl","gridap/gridaproms.jl"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/gridap/GridapROMs.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridap%2FGridapROMs.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridap%2FGridapROMs.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridap%2FGridapROMs.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridap%2FGridapROMs.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gridap","download_url":"https://codeload.github.com/gridap/GridapROMs.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gridap%2FGridapROMs.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31833837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T07:17:56.427Z","status":"ssl_error","status_checked_at":"2026-04-15T07:17:30.007Z","response_time":63,"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"}},"keywords":[],"created_at":"2025-06-09T03:33:00.180Z","updated_at":"2026-04-15T09:01:38.534Z","avatar_url":"https://github.com/gridap.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GridapROMs\n\nThis package provides a set of tools for the solution of parameterised partial differential equations (PDEs) with reduced order models (ROMs). The presence of parameters severely impacts the feasibility of running high-fidelity (HF) codes such as the finite element (FE) method, because typically the solution is required for many different values of the parameters. ROMs create surrogate models that approximate the solution manifold on a lower-dimensional manifold. These surrogates provide accurate solutions in a much shorter time and with much fewer computational resources. The library is developed in close collaboration with [Gridap.jl](https://github.com/gridap/Gridap.jl).\n\n| **Documentation** |\n|:------------ |\n| [![docdev](https://img.shields.io/badge/docs-dev-blue.svg)](https://gridap.github.io/GridapROMs.jl/dev/) | \n| **Citation** |\n| [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.jcp.2022.111162-blue)](https://arxiv.org/abs/2503.15994) |\n|**Build Status** |\n| [![CI](https://github.com/gridap/GridapROMs.jl/actions/workflows/ci.yml/badge.svg)](https://github.com/gridap/GridapROMs.jl/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/gridap/GridapROMs.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/gridap/GridapROMs.jl) |\n\n## Installation\n\n```julia\n# Type ] to enter package mode\npkg\u003e add GridapROMs\n```\n\n## Examples\n\nBefore running the following examples, it is necessary to import from file some geometries which can be found [here](https://github.com/gridap/GridapROMs.jl/tree/main/docs/src/assets). The file name is `models.zip`. The geometries must be unzipped and moved to a directory where the numerical experiments are ran. This directory should be placed inside the `data` directory of the `Julia` project which is being used to run these experiments. To find this directory, first add the package `DrWatson` with \n\n```julia\n# Type ] to enter package mode\npkg\u003e add DrWatson\n```\n\nand call\n\n```julia\njulia\u003e test_dir = datadir()\n```\n\nNow we can unzip the compressed folder in `dir` with \n\n```julia\njulia\u003e model_dir = joinpath(@__DIR__,\"docs/src/assets\")\n# Type ; to enter shell mode\nshell\u003e unzip $model_dir/models.zip -d $test_dir\n```\n\nIn the following numerical examples, we provide a plot of the convergence errors for a series of tolerances (which determine the accuracy of the method), and a solution plot obtained with a fixed tolerance of `1e-5`.\n\n### Test 1 \n\nSolve a steady elasticity problem with a [proper orthogonal decomposition algorithm](https://link.springer.com/book/10.1007/978-3-319-15431-2) (POD). The presence of parameters affecting the problem's LHS/RHS are dealt with by employing a [discrete empirical interpolation method in matrix form](https://www.sciencedirect.com/science/article/pii/S0021999115006543) (MDEIM). \n\n```julia\njulia\u003e include(\"examples/SteadyElasticityPOD.jl\")\n```\nSolution             |  Convergence\n:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/elasticity_pod/plot/rbsol.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/elasticity_pod/results/convergence.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e\n\n### Test 2\n\nSolve the same problem, but with a tensor-train (TT) decomposition approach. In particular, we employ the [TT-SVD](https://epubs.siam.org/doi/10.1137/090752286) method to compute the reduced approximation subspace, and [TT-MDEIM](https://arxiv.org/abs/2412.14460) for the system approximation. \n\n```julia\njulia\u003e include(\"examples/SteadyElasticityTTSVD.jl\")\n```\nSolution             |  Convergence\n:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/elasticity_ttsvd/plot/rbsol.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/elasticity_ttsvd/results/convergence.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e\n\n### Test 3\n\nSolve an [advection-diffusion equation](https://gridap.github.io/Tutorials/dev/pages/t010_advection_diffusion/) with TT-SVD and TT-MDEIM. \n\n```julia\njulia\u003e include(\"examples/AdvectionDiffusionTTSVD.jl\")\n```\nSolution             |  Convergence\n:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/adv_diff_ttsvd/plot/rbsol.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/adv_diff_ttsvd/results/convergence.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e\n\n### Test 4\n\nSolve a 2D [electromagnetic wave scattering problem](https://gridap.github.io/Tutorials/dev/pages/t013_emscatter/) modeled by the steady Helmholtz equation in PLM condition. We employ POD and MDEIM for the reduced problem.\n\n```julia\njulia\u003e include(\"examples/HelmholtzPOD.jl\")\n```\nSolution             |  Convergence\n:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/helmholtz_pod/plot/rbsol.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/helmholtz_pod/results/convergence.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e\n\n### Test 5\n\nSolve a steady Stokes equation with a POD+MDEIM method.\n\n```julia\njulia\u003e include(\"examples/SteadyStokesPOD.jl\")\n```\n\nSolution - velocity          |  Solution - pressure        |  Convergence\n:-------------------------:|:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/stokes_pod/plot/rbvel.png\" alt=\"drawing\" style=\"width:275px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/stokes_pod/plot/rbpress.png\" alt=\"drawing\" style=\"width:275px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/stokes_pod/results/convergence.png\" alt=\"drawing\" style=\"width:275px; height:250px;\"/\u003e \n\n### Test 6 \n\nMoving to transient applications, we first solve a heat equation with a [space-time RB-MDEIM method](https://www.sciencedirect.com/science/article/pii/S0377042724000165).\n\n```julia\njulia\u003e include(\"examples/HeatEquationSTRB.jl\")\n```\n\nSolution             |  Convergence\n:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/heateq_pod/plot/rbsol.gif\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/heateq_pod/results/convergence.png\" alt=\"drawing\" style=\"width:400px; height:250px;\"/\u003e \n\n### Test 7\n\nLastly, we solve a transient Navier-Stokes equation with the same space-time RB method as in `Test 6`.\n\n```julia\njulia\u003e include(\"examples/NStokesTransientSTRB.jl\")\n```\n\nSolution - velocity          |  Solution - pressure        |  Convergence\n:-------------------------:|:-------------------------:|:-------------------------:\n\u003cimg src=\"docs/src/assets/results/nstokes_strb/plot/rbvel.gif\" alt=\"drawing\" style=\"width:275px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/nstokes_strb/plot/rbpress.gif\" alt=\"drawing\" style=\"width:275px; height:250px;\"/\u003e  |  \u003cimg src=\"docs/src/assets/results/nstokes_strb/results/convergence.png\" alt=\"drawing\" style=\"width:275px; height:250px;\"/\u003e \n\n## How to cite GridapROMs\n\nIn order to give credit to the `GridapROMs` contributors, we simply ask you to cite the references below in any publication in which you have made use of the `GridapROMs` project. \n\n```\n@article{MUELLER2026109985,\n      title = {GridapROMs.jl: Efficient reduced order modelling in the Julia programming language},\n      journal = {Computer Physics Communications},\n      volume = {320},\n      pages = {109985},\n      year = {2026},\n      issn = {0010-4655},\n      doi = {https://doi.org/10.1016/j.cpc.2025.109985},\n      url = {https://www.sciencedirect.com/science/article/pii/S0010465525004862},\n      author = {Nicholas Mueller and Santiago Badia},\n      keywords = {PDE, Reduced order model, Julia}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgridap%2Fgridaproms.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgridap%2Fgridaproms.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgridap%2Fgridaproms.jl/lists"}