{"id":46249945,"url":"https://github.com/sloisel/multigridbarrierpetsc.jl","last_synced_at":"2026-03-03T22:01:39.862Z","repository":{"id":325159550,"uuid":"1100085073","full_name":"sloisel/MultiGridBarrierPETSc.jl","owner":"sloisel","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-19T11:44:33.000Z","size":758,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-22T03:57:06.953Z","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/sloisel.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":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-19T20:24:36.000Z","updated_at":"2025-12-19T11:08:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sloisel/MultiGridBarrierPETSc.jl","commit_stats":null,"previous_names":["sloisel/multigridbarrierpetsc.jl"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/sloisel/MultiGridBarrierPETSc.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloisel%2FMultiGridBarrierPETSc.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloisel%2FMultiGridBarrierPETSc.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloisel%2FMultiGridBarrierPETSc.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloisel%2FMultiGridBarrierPETSc.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sloisel","download_url":"https://codeload.github.com/sloisel/MultiGridBarrierPETSc.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloisel%2FMultiGridBarrierPETSc.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30063357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":"2026-03-03T22:01:39.134Z","updated_at":"2026-03-03T22:01:39.844Z","avatar_url":"https://github.com/sloisel.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MultiGridBarrierPETSc.jl\n\n[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://sloisel.github.io/MultiGridBarrierPETSc.jl/stable/)\n[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://sloisel.github.io/MultiGridBarrierPETSc.jl/dev/)\n[![Build Status](https://github.com/sloisel/MultiGridBarrierPETSc.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/sloisel/MultiGridBarrierPETSc.jl/actions/workflows/CI.yml?query=branch%3Amain)\n[![Coverage](https://codecov.io/gh/sloisel/MultiGridBarrierPETSc.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/sloisel/MultiGridBarrierPETSc.jl)\n\n**A Julia package that bridges [MultiGridBarrier.jl](https://github.com/sloisel/MultiGridBarrier.jl) and [SafePETSc.jl](https://github.com/sloisel/SafePETSc.jl) for distributed multigrid barrier computations.**\n\nMultiGridBarrierPETSc.jl extends MultiGridBarrier's API to work with PETSc's distributed Mat and Vec types, enabling efficient parallel computation of multigrid barrier methods across multiple MPI ranks.\n\n## Quick Start\n\n```julia\nusing MultiGridBarrierPETSc\nMultiGridBarrierPETSc.Init()  # Initialize MPI, PETSc, and MUMPS solver\n\n# Solve a 2D finite element problem with PETSc distributed types\nsol = fem2d_petsc_solve(Float64; L=3, p=1.0, verbose=false)\n\n# Convert to native types for plotting\nusing MultiGridBarrier\nsol_native = petsc_to_native(sol)\nplot(sol_native)\n```\n\n## Key Features\n\n- **Drop-in Replacement**: Seamlessly use PETSc types with MultiGridBarrier's API\n- **Distributed Computing**: Leverage PETSc's distributed linear algebra for large-scale problems\n- **Type Conversion**: Easy conversion between native Julia arrays and PETSc distributed types\n- **MPI-Aware**: All operations correctly handle MPI collective requirements\n- **Automatic MUMPS**: Direct solver automatically configured for accurate Newton iterations\n\n## Installation\n\n```julia\nusing Pkg\nPkg.add(\"MultiGridBarrierPETSc\")\n```\n\n**Prerequisites:**\n- Julia 1.10 or later\n- MPI installation (OpenMPI, MPICH, or Intel MPI)\n- PETSc with MUMPS (automatically installed via PETSc_jll.jl, or custom build for HPC)\n\nSee the [Installation Guide](https://sloisel.github.io/MultiGridBarrierPETSc.jl/dev/installation/) for detailed instructions.\n\n## Documentation\n\n- **[User Guide](https://sloisel.github.io/MultiGridBarrierPETSc.jl/dev/guide/)**: Workflows, examples, and best practices\n- **[API Reference](https://sloisel.github.io/MultiGridBarrierPETSc.jl/dev/api/)**: Complete function documentation\n- **[Examples](examples/)**: Runnable example scripts\n\n## Running Examples\n\n```bash\n# Basic solve example\njulia -e 'using MPI; run(`$(MPI.mpiexec()) -n 4 $(Base.julia_cmd()) examples/basic_solve.jl`)'\n\n# Round-trip conversion example\njulia -e 'using MPI; run(`$(MPI.mpiexec()) -n 4 $(Base.julia_cmd()) examples/roundtrip_conversion.jl`)'\n```\n\nAdd `--project` or other Julia options as needed for your environment.\n\n## Testing\n\nRun the test suite with 4 MPI ranks:\n\n```bash\njulia --project=. -e 'using Pkg; Pkg.test()'\n```\n\n## Type Mappings\n\n| Native Julia Type | PETSc Distributed Type | Storage |\n|-------------------|------------------------|---------|\n| `Matrix{T}` | `Mat{T, MPIDENSE}` | Dense distributed |\n| `Vector{T}` | `Vec{T}` | Dense distributed |\n| `SparseMatrixCSC{T,Int}` | `Mat{T, MPIAIJ}` | Sparse distributed |\n\n## Package Ecosystem\n\n- **[MultiGridBarrier.jl](https://github.com/sloisel/MultiGridBarrier.jl)**: Core multigrid barrier method\n- **[SafePETSc.jl](https://github.com/sloisel/SafePETSc.jl)**: Safe PETSc bindings\n- **[MPI.jl](https://github.com/JuliaParallel/MPI.jl)**: Julia MPI bindings\n\n## Citation\n\nIf you use this package in your research, please cite:\n\n```bibtex\n@software{multigridbarrierpetsc,\n  author = {Loisel, Sebastien},\n  title = {MultiGridBarrierPETSc.jl: Distributed Multigrid Barrier Methods},\n  year = {2024},\n  url = {https://github.com/sloisel/MultiGridBarrierPETSc.jl}\n}\n```\n\n## Development\n\nTo develop this package locally:\n\n```bash\ngit clone https://github.com/sloisel/MultiGridBarrierPETSc.jl\ncd MultiGridBarrierPETSc.jl\njulia --project -e 'using Pkg; Pkg.instantiate()'\njulia --project -e 'using Pkg; Pkg.test()'\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloisel%2Fmultigridbarrierpetsc.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsloisel%2Fmultigridbarrierpetsc.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloisel%2Fmultigridbarrierpetsc.jl/lists"}