{"id":13314617,"url":"https://github.com/picassodev/picasso","last_synced_at":"2025-03-10T21:30:37.469Z","repository":{"id":39883360,"uuid":"339751412","full_name":"picassodev/picasso","owner":"picassodev","description":"Particle-in-cell library based on Cabana and Kokkos","archived":false,"fork":false,"pushed_at":"2025-02-19T21:08:26.000Z","size":1562,"stargazers_count":7,"open_issues_count":21,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-19T22:23:16.874Z","etag":null,"topics":["cabana","high-performance-computing","hpc","kokkos","particle-in-cell"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/picassodev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2021-02-17T14:34:33.000Z","updated_at":"2025-02-19T21:08:29.000Z","dependencies_parsed_at":"2023-02-15T18:16:04.907Z","dependency_job_id":"fe0bcaeb-9dbe-43b7-b777-5e1dc4e45017","html_url":"https://github.com/picassodev/picasso","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picassodev%2Fpicasso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picassodev%2Fpicasso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picassodev%2Fpicasso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picassodev%2Fpicasso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/picassodev","download_url":"https://codeload.github.com/picassodev/picasso/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242929976,"owners_count":20208382,"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","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":["cabana","high-performance-computing","hpc","kokkos","particle-in-cell"],"created_at":"2024-07-29T18:11:50.307Z","updated_at":"2025-03-10T21:30:37.459Z","avatar_url":"https://github.com/picassodev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Picasso\n\nPicasso is a performance portable library for particle-in-cell (PIC) simulations\nwhich are used in applications including plasmas physics and fluid/solid\nmechanics. Picasso provides a range of interpolation schemes between\nparticles and grids, both in order of the scheme and the type\n(FLIP, APIC, PolyPIC), embedded free-surface tracking, extensive batched \nlinear algebra capabilties, as well as utilities for managing field data\nand simplifying parallel execution.\n\n## Dependencies\n\nPicasso's main dependency is [Cabana](https://github.com/ECP-copa/Cabana).\nThe instructions for building Cabana can be found in the [Cabana wiki](https://github.com/ECP-copa/Cabana/wiki/1-Build-Instructions)\nCabana requires the Kokkos library and must be built with the optional Cabana::Grid\nsubpackage enabled (which in turn requires MPI).\n\nPicasso Dependencies\n| Dependency |Required | CMake Variable | Details |\n| ---------- | ------- | -------------  | ------  |\n|[CMake](https://cmake.org/download/)      | Yes     | Build system |\n|[Kokkos](https://github.com/kokkos/kokkos)    | Yes      | Portable on-node parallelism |\n|[Cabana](https://github.com/ECP-copa/Cabana) | Yes | Performance-portable particle and grid library |\n|MPI | Yes | Message Passing Interface |\n|[JSON](https://github.com/nlohmann/json) | Yes | JSON input files |\n|ArborX | No | Picasso_REQUIRE_ARBORX | Performance-portable geometric search (required for level-set) | N/A |\n|GTest | No | Picasso_REQUIRE_TESTING |Unit test Framework | N/A |\n\nIn addition to these required dependencies, note that Cabana must be built with\n`Cabana_ENABLE_GRID=ON` (enabled by default) and will need further options as noted below for some additional capabilities.\n\nThere are additional optional dependencies for Picasso that depend on the \nuse case desired or hardware type on the system.\n\nPicasso dependencies imported from Cabana. Note that the `REQUIRE` variables enforce that those options are\navailable for Cabana at configuration, but are not necessary.\n| Dependency |Required | CMake Variable | Details |\n| ----------| -------- | -------------- | -------  |\n| HDF5 | No | Cabana_REQUIRE_HDF5 | Particle I/O |\n| Silo | No | Cabana_REQUIRE_SILO | Particle I/O |\n| CUDA | No | Cabana_REQUIRE_CUDA | Programming model for NVIDIA GPUs |\n| HIP  | No | Cabana_REQUIRE_HIP  | Programming model for AMD GPUs |\n| SYCL | No | Cabana_REQUIRE_SYCL | Programming model for Intel GPUs |\n\n## Building Picasso\n\nTo build Picasso, clone the repository via\n`git clone https://github.com/picassodev/picasso.git`. Ensure that\nyou have an install of Cabana with the grid build option\nenabled ([Cabana Build Details](https://github.com/ECP-copa/Cabana/wiki/1-Build-Instructions)\n\nA [Cabana Docker container](https://github.com/ECP-copa/Cabana/pkgs/container/cabana)\nis maintained to facilitate development with most optional dependencies.\n\nFrom the the source directory, run the following script to create\na build directory for Picasso, configure the Picasso build in that\ndirectory, and build Picasso in that directory\n\n```\n# Change directory as needed\nexport CABANA_DIR='pwd'/Cabana/build/install\n\ncd picasso\ncmake \\\n  -B build\n  -D CMAKE_BUILD_TYPE=Release \\\n  -D CMAKE_PREFIX_PATH=\"$CABANA_DIR\" \\\n  -D CMAKE_INSTALL_PREFIX=install \\\n  -D Picasso_ENABLE_TESTING=ON\ncmake --build build\ncmake --install build\n```\n\n## Testing Picasso\n\nTo test your Picasso install, from the build directory of a Picasso\nbuild run with testing enabled, run the `ctest` command and ensure\nthat all tests list as passing\n\n## Contributing\n\nWe encourage you to contribute to Picasso! Please check the\n[guidelines](CONTRIBUTING.md) on how to do so.\n\n## Citing\n\nIf you use Picasso in your work, please cite the appropriate [release](https://doi.org/10.5281/zenodo.8309476).\n\n## License\n\nPicasso is distributed under an [open source 3-clause BSD license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicassodev%2Fpicasso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpicassodev%2Fpicasso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicassodev%2Fpicasso/lists"}