compadre

Compadre (Compatible Particle Discretization and Remap)

https://github.com/sandialabs/compadre

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    1 of 9 committers (11.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.9%) to scientific vocabulary

Keywords

scr-2367 snl-comp-science-libs snl-data-analysis

Keywords from Contributors

mesh sequences interactive hacking network-simulation
Last synced: 7 months ago · JSON representation

Repository

Compadre (Compatible Particle Discretization and Remap)

Basic Info
  • Host: GitHub
  • Owner: sandialabs
  • License: other
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 29.7 MB
Statistics
  • Stars: 22
  • Watchers: 7
  • Forks: 6
  • Open Issues: 23
  • Releases: 10
Topics
scr-2367 snl-comp-science-libs snl-data-analysis
Created about 7 years ago · Last pushed 7 months ago
Metadata Files
Readme License Zenodo Copyright

README.md

COMpatible PArticle Discretization and REmap Toolkit

About

The Compadre Toolkit provides a performance portable solution for the parallel evaluation of computationally dense kernels. The toolkit specifically targets the Generalized Moving Least Squares (GMLS) approach, which requires the inversion of small dense matrices. The result is a set of weights that provide the information needed for remap or entries that constitute the rows of some globally sparse matrix.

This toolkit focuses on the 'on-node' aspects of meshless PDE solution and remap, namely the parallel construction of small dense matrices and their inversion. What it does not provide is the tools for managing fields, inverting globally sparse matrices, or neighbor search that requires orchestration over many MPI processes. This toolkit is designed to be easily dropped-in to an existing MPI (or serial) based framework for PDE solution or remap, with minimal dependencies (Kokkos and KokkosKernels).

Generalized Moving Least Squares (GMLS)

Here is a brief overview of the GMLS framework:

Consider $\phi$ of function class $\mathbf{V}$ as well as a collection of samples $\Lambda = \{\lambda_ i(\phi)\}_ {i=1}^{N}$ (Compadre::SamplingFunctional) corresponding to a quasiuniform collection of data sites $\mathbf{X}_ h = \{ \mathbf{x}_ i \} \subset \mathbb{R}^d$ characterized by fill distance $h$. To approximate a given linear target functional $\tau{\tilde{x}}$ (Compadre::TargetOperation) associated with a target site $\tilde{x}$, we seek a reconstruction $p \in \mathbf{V} h$, where $\mathbf{V}_ h \subset \mathbf{V}$ is a finite dimensional space (Compadre::ReconstructionSpace) chosen to provide good approximation properties, with basis $\mathbf{P} = \{P\}{i=1}^{dim(Vh)}$. We perform this reconstruction in the following weighted $\ell_2$ sense:

$$p = \underset{{q \in \mathbf{V}_ h}}{\mathrm{argmin}} \sum{i=1}^N ( \lambdai(\phi) -\lambdai(q) )^2 \omega(\lambdai,\tau_{\tilde{x}}),$$

where $\omega$ is a locally supported positive function, $\omega = \Phi(|\tilde{x}-\mathbf{x}_i|)$ and $|\cdot|$ denotes the Euclidean norm. $\Phi(r,\epsilon)$ is selected by the user, having a parameter controlling the support of $\omega$.

With an optimal reconstruction $p$ in hand, the target functional is approximated via $\tau{\tilde{x}} (\phi) \approx \tau^h{\tilde{x}} (\phi) := \tau_{\tilde{x}} (p)$.

As an unconstrained $\ell_2$-optimization problem, this process admits the explicit form:

$$\tau^h{\tilde{x}}(\phi) = \tau{\tilde{x}}(\mathbf{P})^\top \left(\Lambda(\mathbf{P})^\top \mathbf{W} \Lambda(\mathbf{P})\right)^{-1} \Lambda(\mathbf{P})^\top \mathbf{W} \Lambda(\phi),$$

where: * $\tau{\tilde{x}}(\mathbf{P}) \in \mathbb{R}^{dim(Vh)}$ is a vector with components consisting of the target functional applied to each basis function, * $\mathbf{W} \in \mathbb{R}^{N \times N}$ is a diagonal matrix with diagonal entries consisting of $\{\omega(\lambdai,\tau{\tilde{x}})\}{i=1,...,N}$, * $\Lambda(\mathbf{P}) \in \mathbb{R}^{N \times dim(Vh)}$ is a rectangular matrix whose $(i,j)$ entry corresponds to the application of the $i^{th}$ sampling functional applied to the $j^{th}$ basis function, * and $\Lambda(\phi) \in \mathbb{R}^N$ is a vector consisting of the $N$ samples of the function $\phi$.

Compadre forms and solves the GMLS problem for $\{\alphai\}$ used in the approximation $\tau^h{\tilde{x}}(\phi) = \sum{\mathbf{x}i \in B^\epsilon(\tilde{x})} \alphai \lambdai(\phi)$, where $B^\epsilon(\tilde{x})$ denotes the $\epsilon$-ball neighborhood of the target site $\tilde{x}$.

As such, GMLS admits an interpretation as an automated process for generating generalized finite difference methods on unstructured point clouds. Note that the computational cost of solving the GMLS problem amounts to inverting a small linear system which may be assembled using only information from neighbors within the support of $\omega$, and construction of such stencils across the entire domain is embarrassingly parallel.

The Compadre Toolkit is designed to efficiently assemble, factorize, and solve large batches of GMLS problems.

Wiki Information

Details about building and using the Compadre toolkit can be found on the Wiki.

Recent Changes

Recent Changes

Installation

Installation of Kokkos and KokkosKernels [Either automatically configured and built, or user installation location provided]

Installation of Compadre

Documentation and Tutorials

The toolkit is documented by Doxygen. Documentation is available online or can be compiled from source. To compile from source: 1.) install doxygen software on your computer, 2.) execute '>> make doc' after having installed the Compadre Toolkit. HTML and Latex documentation will be generated in the doc/ folder, in-source.

Citing the Software

If you write a paper using results obtained with the help of the Compadre Toolkit, please cite the following reference which is applicable to every version of the Compadre Toolkit:

@software{compadre_toolkit, author = {Paul Kuberry and Peter Bosler and Nathaniel Trask}, title = {Compadre Toolkit}, month = jan, year = 2019, doi = {10.11578/dc.20190411.1}, url = {https://github.com/sandialabs/compadre} }

If you are using a particular release of the Compadre Toolkit and would like to help others to reproduce your results, please cite that release specifically. A reference to the most recent release is: @software{compadre_toolkit_v1_6_2, author = {Paul Kuberry and Peter Bosler and Nathaniel Trask}, title = {Compadre Toolkit}, month = dec, year = 2024, publisher = {Zenodo}, version = {v1.6.0}, doi = {10.5281/zenodo.16573577}, url = {https://doi.org/10.5281/zenodo.16573577} }

diff ! DOI: 10.11578/dc.20190411.1

Copyright and License

See compadre/COPYRIGHT, compadre/LICENSE, https://trilinos.github.io/license.html and individual file headers for additional information.

Questions?

Contact lead developers:

  • Compadre team (GitHub handle: @trilinos/Compadre)
  • Paul Kuberry (GitHub handle: kuberry or pakuber@sandia.gov@sandia.gov)

The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of NTESS or the U.S. Government.

Owner

  • Name: Sandia National Laboratories
  • Login: sandialabs
  • Kind: organization
  • Location: United States

Exceptional service in the national interest.

GitHub Events

Total
  • Watch event: 1
  • Delete event: 12
  • Issue comment event: 3
  • Push event: 34
  • Gollum event: 7
  • Pull request event: 19
  • Create event: 10
Last Year
  • Watch event: 1
  • Delete event: 12
  • Issue comment event: 3
  • Push event: 34
  • Gollum event: 7
  • Pull request event: 19
  • Create event: 10

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 974
  • Total Committers: 9
  • Avg Commits per committer: 108.222
  • Development Distribution Score (DDS): 0.236
Past Year
  • Commits: 28
  • Committers: 3
  • Avg Commits per committer: 9.333
  • Development Distribution Score (DDS): 0.071
Top Committers
Name Email Commits
Paul Kuberry p****r@s****v 744
Quang Ha q****0@b****u 182
Jason M. Gates j****e@s****v 31
Zisheng Ye z****e@o****m 10
Peter Bosler p****e@s****v 3
dependabot[bot] 4****] 1
Jake Koester j****r@a****m 1
Ben Gross (gamma.ath.ucsb.edu) b****9@y****m 1
Quang Ha q****0@Q****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 28
  • Total pull requests: 107
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 5
  • Total pull request authors: 6
  • Average comments per issue: 1.11
  • Average comments per pull request: 0.36
  • Merged pull requests: 89
  • Bot issues: 0
  • Bot pull requests: 8
Past Year
  • Issues: 0
  • Pull requests: 20
  • Average time to close issues: N/A
  • Average time to close pull requests: 7 days
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.1
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • kuberry (24)
  • pbosler (1)
  • nrstillman (1)
  • Yiltan (1)
  • quang-ha (1)
Pull Request Authors
  • kuberry (91)
  • dependabot[bot] (8)
  • quang-ha (4)
  • aperijake (2)
  • compadre-autotester (1)
  • marcelino-a (1)
Top Labels
Issue Labels
TOOLKIT (13) enhancement (6) HARNESS (6) REBAR (4) bug (3)
Pull Request Labels
TOOLKIT (59) HARNESS (12) dependencies (8) bug (6) fixed (6) enhancement (4) python (4) REBAR (3) feature request (2) github_actions (2) don't merge (1) WIP (1)

Packages

  • Total packages: 4
  • Total downloads:
    • pypi 1,872 last-month
  • Total dependent packages: 1
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 46
  • Total maintainers: 2
spack.io: py-pycompadre

The Compadre Toolkit provides a performance portable solution for the parallel evaluation of computationally dense kernels. The toolkit specifically targets the Generalized Moving Least Squares (GMLS) approach, which requires the inversion of small dense matrices. The result is a set of weights that provide the information needed for remap or entries that constitute the rows of some globally sparse matrix.

  • Versions: 1
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 14.0%
Dependent packages count: 28.1%
Maintainers (1)
Last synced: 7 months ago
pypi.org: pycompadre

Compatible Particle Discretization and Remap

  • Versions: 30
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 1,280 Last month
Rankings
Dependent packages count: 10.1%
Stargazers count: 13.3%
Forks count: 15.3%
Average: 16.1%
Downloads: 20.2%
Dependent repos count: 21.6%
Maintainers (1)
Last synced: about 1 year ago
pypi.org: pycompadre-serial

Compatible Particle Discretization and Remap

  • Versions: 13
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 592 Last month
Rankings
Dependent packages count: 10.1%
Stargazers count: 13.3%
Forks count: 15.3%
Average: 17.1%
Dependent repos count: 21.6%
Downloads: 25.0%
Maintainers (1)
Last synced: about 1 year ago
spack.io: compadre

The Compadre Toolkit provides a performance portable solution for the parallel evaluation of computationally dense kernels. The toolkit specifically targets the Generalized Moving Least Squares (GMLS) approach, which requires the inversion of small dense matrices. The result is a set of weights that provide the information needed for remap or entries that constitute the rows of some globally sparse matrix.

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 28.6%
Dependent packages count: 57.3%
Maintainers (1)
Last synced: over 1 year ago

Dependencies

pycompadre/pybind11/docs/requirements.txt pypi
  • breathe ==4.26.1
  • docutils ==0.16
  • sphinx ==3.3.1
  • sphinx_rtd_theme ==0.5.0
  • sphinxcontrib-moderncmakedomain ==3.17
  • sphinxcontrib-svg2pdfconverter ==1.1.0
setup.py pypi
  • numpy *
.github/workflows/check_in_script.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
.github/workflows/make_documentation.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/pycompadre_sdist.yml actions
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
  • pypa/gh-action-pypi-publish master composite
.github/workflows/pycompadre_wheels.yml actions
  • RalfG/python-wheels-manylinux-build v0.3.3-manylinux2010_x86_64 composite
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/setup-python v1 composite
  • actions/upload-artifact v2 composite
  • pypa/gh-action-pypi-publish master composite
pycompadre/pybind11/tests/requirements.txt pypi
  • numpy ==1.16.6 test
  • numpy ==1.19.0 test
  • numpy ==1.20.0 test
  • numpy ==1.19.3 test
  • numpy ==1.21.3 test
  • pytest ==4.6.9 test
  • pytest ==6.1.2 test
  • pytest ==6.2.4 test
  • pytest-timeout * test
  • scipy ==1.2.3 test
  • scipy ==1.5.4 test
pycompadre/pybind11/pyproject.toml pypi
pycompadre/pybind11/setup.py pypi
pycompadre/pybind11/tools/pyproject.toml pypi