From 449091d195fab2ced9e5be2667253df4598439f3 Mon Sep 17 00:00:00 2001 From: Patrick Diehl Date: Mon, 27 Sep 2021 11:40:13 -0500 Subject: [PATCH] Add the JOSS paper (#148) * Add template for the JOSS paper * Add applications * Update * Update * Update * Add references * Add application * Backup * Add related work * Add material models * Add title * Add logo * Add caption for logo * Update * Update * Fix image * Smaller image * Even smaller image * Smaller image * Image * Add numerical analysis reuslts * Backup * Add statement of need * Add paper draft action * Add correct path * Add dependencies * Add Prashant * Test latex commands * Add equation * Add second equaiton * Fix equaiton * Fix equation * Add equations * spell check * Add time schemes * Add image * Add discrete items * Fix equations * Fix equations * Fix equation * Add PD equation * Add discrete state-based equation * spellcheck * Add numerical analsysis section * update summary * Update paper.md * Update paper.bib * use 'x' and not '\bx' * fix latex err * change author orders * fig size * Update paper.md * use ';' for multiple references * fig size * Update * Update paper.md * Update paper.md * Update paper.md * Add code of conduct anf contribution guide lines * Add GSoC as funding * Update * Update branch * Katies comments * More comments * Update paper.md * Add DOI * Remove duplicates * Remove preprint with pulication * Add DOIs * Fix pibtex * Minor grammar fixes * Move sections * Work on the easy fixes * Update the paper with the editor's comment * Update references * Add missing DOI * Add Katie's comment * Fix Cmake to compile again * Fix build Co-authored-by: Prashant K. Jha --- .github/workflows/draft-pdf.yml | 19 +++ CMakeLists.txt | 2 - assets/logo/logo_joss.png | Bin 0 -> 26073 bytes docs/discrete.pdf | Bin 0 -> 25957 bytes docs/paper.bib | 292 ++++++++++++++++++++++++++++++++ docs/paper.md | 107 ++++++++++++ 6 files changed, 418 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/draft-pdf.yml create mode 100644 assets/logo/logo_joss.png create mode 100644 docs/discrete.pdf create mode 100644 docs/paper.bib create mode 100644 docs/paper.md diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 00000000..7a6a7c7e --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,19 @@ +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + paper-path: docs/paper.md + - name: Upload + uses: actions/upload-artifact@v1 + with: + name: paper + path: docs/paper.pdf diff --git a/CMakeLists.txt b/CMakeLists.txt index b6bb388b..24dabd21 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,6 @@ set (VERSION_UPDATE 0) cmake_minimum_required(VERSION 3.10) - - # Provide the configuration file to get the version configure_file ( "${PROJECT_SOURCE_DIR}/Config.h.in" diff --git a/assets/logo/logo_joss.png b/assets/logo/logo_joss.png new file mode 100644 index 0000000000000000000000000000000000000000..640fa4c02f1a95112f560e995b8b329e593f5b3c GIT binary patch literal 26073 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 literal 0 HcmV?d00001 diff --git a/docs/paper.bib b/docs/paper.bib new file mode 100644 index 00000000..7c2cffd2 --- /dev/null +++ b/docs/paper.bib @@ -0,0 +1,292 @@ +@article{jha2018numerical, + author = {Jha, Prashant K and Lipton, Robert}, + journal = {SIAM Journal on Numerical Analysis}, + number = {2}, + pages = {906--941}, + publisher = {SIAM}, + title = {Numerical analysis of nonlocal fracture models in Holder space}, + volume = {56}, + year = {2018}, + doi={10.1137/17m1112236} +} + +@article{geuzaine2009gmsh, + author = {Geuzaine, Christophe and Remacle, Jean-Fran{\c c}ois}, + journal = {International journal for numerical methods in engineering}, + number = {11}, + pages = {1309--1331}, + publisher = {Wiley Online Library}, + title = {Gmsh: A 3-D finite element mesh generator with built-in pre-and post-processing facilities}, + volume = {79}, + year = {2009}, + doi={10.1002/nme.2579} +} + +@article{jha2019numerical, + author = {Jha, Prashant K and Lipton, Robert}, + journal = {Computer Methods in Applied Mechanics and Engineering}, + pages = {184--225}, + publisher = {Elsevier}, + title = {Numerical convergence of finite difference approximations for state based peridynamic fracture models}, + volume = {351}, + year = {2019}, + doi={10.1016/j.cma.2019.03.024} +} + +@article{lipton2019complex, + author = {Lipton, Robert P and Lehoucq, Richard B and Jha, Prashant K}, + journal = {Journal of Peridynamics and Nonlocal Modeling}, + number = {2}, + pages = {122--130}, + publisher = {Springer}, + title = {Complex fracture nucleation and evolution with nonlocal elastodynamics}, + volume = {1}, + year = {2019}, + doi={10.1007/s42102-019-00010-0} +} + +@article{lipton2018free, + author = {Lipton, Robert and Said, Eyad and Jha, Prashant}, + journal = {Journal of Elasticity}, + number = {2}, + pages = {129--153}, + publisher = {Springer}, + title = {Free damage propagation with memory}, + volume = {133}, + year = {2018}, + doi={10.1007/s10659-018-9672-7} +} + +@article{jha2020kinetic, + author = {Jha, Prashant K and Lipton, Robert P}, + journal = {International Journal of Fracture}, + pages = {1--15}, + publisher = {Springer}, + title = {Kinetic relations and local energy balance for LEFM from a nonlocal peridynamic model}, + year = {2020}, + doi={10.1007/s10704-020-00480-0} +} + +@article{littlewood2015roadmap, + author = {Littlewood, David J}, + journal = {SAND Report, Sandia National Laboratories, Albuquerque, NM and Livermore, CA}, + title = {Roadmap for peridynamic software implementation}, + year = {2015}, + doi={10.2172/1226115} +} + +@article{parks2008implementing, + author = {Parks, Michael L and Lehoucq, Richard B and Plimpton, Steven J and Silling, Stewart A}, + journal = {Computer Physics Communications}, + number = {11}, + pages = {777--783}, + publisher = {Elsevier}, + title = {Implementing peridynamics within a molecular dynamics code}, + volume = {179}, + year = {2008}, + doi={10.1016/j.cpc.2008.06.011} +} + +@article{ren20173d, + author = {Ren, Bo and Wu, CT and Askari, E}, + journal = {International Journal of Impact Engineering}, + pages = {14--25}, + publisher = {Elsevier}, + title = {A 3D discontinuous Galerkin finite element method with the bond-based peridynamics model for dynamic brittle failure analysis}, + volume = {99}, + year = {2017}, + doi={10.1016/j.ijimpeng.2016.09.003} +} + +@article{mossaiby2017opencl, + author = {Mossaiby, Farshid and Shojaei, A and Zaccariotto, M and Galvanetto, U}, + journal = {Computers \& Mathematics with Applications}, + number = {8}, + pages = {1856--1870}, + publisher = {Elsevier}, + title = {OpenCL implementation of a high performance 3D Peridynamic model on graphics accelerators}, + volume = {74}, + year = {2017}, + doi={10.1016/j.camwa.2017.06.045} +} + +@mastersthesis{diehl2012implementierung, + author = {Diehl, Patrick}, + doi = {10.18419/opus-2879}, + title = {Implementierung eines Peridynamik-Verfahrens auf GPU}, + year = {2012} +} + +@incollection{diehl2015efficient, + author = {Diehl, Patrick and Schweitzer, Marc Alexander}, + booktitle = {Meshfree Methods for Partial Differential Equations VII}, + pages = {81--95}, + publisher = {Springer}, + title = {Efficient neighbor search for particle methods on GPUs}, + year = {2015}, + doi={10.1007/978-3-319-06898-5_5} +} + +@article{silling2007peridynamic, + author = {Silling, Stewart A and Epton, M and Weckner, O and Xu, Ji and Askari}, + journal = {Journal of Elasticity}, + number = {2}, + pages = {151--184}, + publisher = {Springer}, + title = {Peridynamic states and constitutive modeling}, + volume = {88}, + year = {2007}, + doi={10.1007/s10659-007-9125-1} +} + +@article{lipton2014dynamic, + author = {Lipton, Robert}, + journal = {Journal of Elasticity}, + number = {1}, + pages = {21--50}, + publisher = {Springer}, + title = {Dynamic brittle fracture as a small horizon limit of peridynamics}, + volume = {117}, + year = {2014}, + doi={10.1007/s10659-013-9463-0} +} + +@article{lipton2016cohesive, + author = {Lipton, Robert}, + journal = {Journal of Elasticity}, + number = {2}, + pages = {143--191}, + publisher = {Springer}, + title = {Cohesive dynamics and brittle fracture}, + volume = {124}, + year = {2016}, + doi={10.1007/s10659-015-9564-z} +} + +@article{silling2005meshfree, + author = {Silling, Stewart A and Askari, Ebrahim}, + journal = {Computers \& structures}, + number = {17-18}, + pages = {1526--1535}, + publisher = {Elsevier}, + title = {A meshfree method based on the peridynamic model of solid mechanics}, + volume = {83}, + year = {2005}, + doi={10.1016/j.compstruc.2004.11.026} +} + +@inbook{Lipton2018, + abstract = {We introduce a regularized model for free fracture propagation based on nonlocal potentials. We work within the small deformation setting, and the model is developed within a state-based peridynamic formulation. At each instant of the evolution, we identify the softening zone where strains lie above the strength of the material. We show that deformation discontinuities associated with flaws larger than the length scale of nonlocality $\delta$ can become unstable and grow. An explicit inequality is found that shows that the volume of the softening zone goes to zero linearly with the length scale of nonlocal interaction. This scaling is consistent with the notion that a softening zone of width proportional to $\delta$ converges to a sharp fracture set as the length scale of nonlocal interaction goes to zero. Here the softening zone is interpreted as a regularization of the crack network. Inside quiescent regions with no cracks or softening, the nonlocal operator converges to the local elastic operator at a rate proportional to the radius of nonlocal interaction. This model is designed to be calibrated to measured values of critical energy release rate, shear modulus, and bulk modulus of material samples. For this model one is not restricted to Poisson ratios of 1/4 and can choose the potentials so that small strain behavior is specified by the isotropic elasticity tensor for any material with prescribed shear and Lam{\'e} moduli.}, + address = {Cham}, + author = {Lipton, Robert and Said, Eyad and Jha, Prashant K.}, + booktitle = {Handbook of Nonlocal Continuum Mechanics for Materials and Structures}, + doi = {10.1007/978-3-319-22977-5_33-1}, + editor = {Voyiadjis, George Z.}, + isbn = {978-3-319-22977-5}, + pages = {1--27}, + publisher = {Springer International Publishing}, + title = {Dynamic Brittle Fracture from Nonlocal Double-Well Potentials: A State-Based Model}, + url = {https://doi.org/10.1007/978-3-319-22977-5_33-1}, + year = {2018} +} + +@article{Kaiser2020, + author = {Kaiser, Hartmut and Diehl, Patrick and Lemoine, Adrian S. and Lelbach, Bryce Adelstein and Amini, Parsa and Berge, Agust{\'\i}n and Biddiscombe, John and Brandt, Steven R. and Gupta, Nikunj and Heller, Thomas and Huck, Kevin and Khatami, Zahra and Kheirkhahan, Alireza and Reverdell, Auriane and Shirzad, Shahrzad and Simberg, Mikael and Wagle, Bibek and Wei, Weile and Zhang, Tianyi}, + doi = {10.21105/joss.02352}, + journal = {Journal of Open Source Software}, + number = {53}, + pages = {2352}, + publisher = {The Open Journal}, + title = {HPX - The C++ Standard Library for Parallelism and Concurrency}, + url = {https://doi.org/10.21105/joss.02352}, + volume = {5}, + year = {2020} +} + +@inproceedings{iglberger2012high, + author = {Iglberger, Klaus and Hager, Georg and Treibig, Jan and R{\"u}de, Ulrich}, + booktitle = {2012 International Conference on High Performance Computing \& Simulation (HPCS)}, + organization = {IEEE}, + pages = {367--373}, + title = {High performance smart expression template math libraries}, + year = {2012}, + doi={10.1109/hpcsim.2012.6266939} +} + +@book{schroeder2004visualization, + author = {Schroeder, Will J and Lorensen, Bill and Martin, Ken}, + publisher = {Kitware}, + title = {The visualization toolkit: an object-oriented approach to 3D graphics}, + year = {2004} +} + +@article{diehl2019review, + author = {Diehl, Patrick and Prudhomme, Serge and L{\'e}vesque, Martin}, + journal = {Journal of Peridynamics and Nonlocal Modeling}, + number = {1}, + pages = {14--35}, + publisher = {Springer}, + title = {A review of benchmark experiments for the validation of peridynamics models}, + volume = {1}, + year = {2019}, + doi={10.1007/s42102-018-0004-x} +} + + +@article{diehl2018implementation, + title={An asynchronous and task-based implementation of peridynamics utilizing HPX—the C++ standard library for parallelism and concurrency}, + author={Diehl, Patrick and Jha, Prashant K and Kaiser, Hartmut and Lipton, Robert and L{\'e}vesque, Martin}, + journal={SN Applied Sciences}, + volume={2}, + number={12}, + pages={1--21}, + year={2020}, + publisher={Springer}, + doi={10.1007/s42452-020-03784-x} +} + + + +@article{Diehl2020, + author = {Diehl, Patrick}, + doi = {10.6084/m9.figshare.12320726.v1}, + month = {5}, + title = {EMU-nodal discretization}, + url = {https://figshare.com/articles/figure/EMU-nodal_discretization/12320726}, + year = {2020} +} + + +@article{DBLP:journals/corr/abs-2108-02336, + author = {Matthias Birner and + Patrick Diehl and + Robert Lipton and + Marc Alexander Schweitzer}, + title = {A Fracture Multiscale Model for Peridynamic enrichment within the + Partition of Unity Method: Part {I}}, + journal = {CoRR}, + volume = {abs/2108.02336}, + year = {2021}, + url = {https://arxiv.org/abs/2108.02336}, + eprinttype = {arXiv}, + eprint = {2108.02336}, + timestamp = {Wed, 11 Aug 2021 15:24:08 +0200}, + biburl = {https://dblp.org/rec/journals/corr/abs-2108-02336.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + +@misc{bhattacharya2021peridynamics, + title={Peridynamics for Quasistatic Fracture Modeling}, + author={Debdeep Bhattacharya and Patrick Diehl and Robert P. Lipton}, + year={2021}, + eprint={2107.14665}, + archivePrefix={arXiv}, + primaryClass={cond-mat.soft} +} + +@article{diehl2021comparative, + title={A comparative review of peridynamics and phase-field models for engineering fracture mechanics}, + author={Diehl, Patrick and Lipton, Robert and Wick, Thomas and Tyagi, Mayank}, + publisher={engrXiv}, + doi={10.31224/osf.io/gty2b} +} diff --git a/docs/paper.md b/docs/paper.md new file mode 100644 index 00000000..9ae26d64 --- /dev/null +++ b/docs/paper.md @@ -0,0 +1,107 @@ +--- +title: 'NLMech: Implementation of finite difference/meshfree discretization of nonlocal fracture models' +tags: + - Peridynamics + - Finite difference + - Finite element + - HPX + - Asynchronous many-task systems +authors: + - name: Prashant K. Jha^[co-first author] + orcid: 0000-0003-2158-364X + affiliation: 1 + - name: Patrick Diehl^[co-first author] + orcid: 0000-0003-0872-7098 + affiliation: 2 +affiliations: + - name: Oden Institute for Computational Engineering and Sciences, The University of Texas at Austin, Austin, TX, United States of America + index: 1 + - name: Center for Computation \& Technology, Louisiana State University, Baton Rouge, LA, United States of America + index: 2 +date: 25 November 2020 +bibliography: paper.bib + +--- + +![NLMech's logo which shows the obtained damage of a peridynamic simulation.\label{fig:logo}](../assets/logo/logo_joss.png){ width=40% } + +# Summary + +The open source code *NLMech* is an implementation of finite difference approximation of nonlocal models, \emph{e.g.}\ peridynamic. Peridynamic (PD) [@silling2007peridynamic;@silling2005meshfree] is a nonlocal formulation of classical continuum mechanics that is particularly robust in mechanical deformations involving crack (discontinuous displacement) and damage. The model seamlessly handles the two regimes of deformation: elastic/smooth deformation and fracture. The constitutive laws describing the material behavior are simple to conceptualize and implement. Particularly, in numerical implementation, no special care for the modeling of cracks is required. Successful comparison of PD against a variety of experiments has been done [@diehl2019review,diehl2021comparative]. + +Unlike classical continuum mechanics, where the internal force is written in terms of the stress, in PD, the internal force at a given material point is due to the sum of the pairwise forces of the neighboring points. \emph{i.e.}\ the force in PD is expressed as the integral of the pairwise force density between the given point and another point in the neighborhood. The neighborhood of point $x$ is typically defined as all points in the sphere of radius $\delta$, centered at $x$, where $\delta$ is the nonlocal length scale and is referred to as the \textit{horizon}. PD is often divided in two classes: bond-based and state-based models. In bond-based models, the two material points interact via a pairwise force law, and the forces between the material points do not depend on the deformation state of surrounding points. In contrast, in the state-based models the volumetric deformation in the neighborhood of two points plays a role in the pairwise force. The governing equation of motion for the bond-based PD [@silling2005meshfree] reads as + +$$ \varrho(\mathbf{X})\ddot{\mathbf{u}}(t,\mathbf{X}) = \int\limits_{B_\delta(\mathbf{X})}\mathbf{f}(\mathbf{u}(t,\mathbf{X}')-\mathbf{u}(t,\mathbf{X}),\mathbf{X}'-\mathbf{X}) d\mathbf{X}' + \mathbf{b}(t,\mathbf{X}) \text{ in } D$$ + +and the governing equation for the state-based PD [@silling2007peridynamic] reads as + +$$ \varrho (\mathbf{X})\ddot{\mathbf{u}}(t,\mathbf{X}) = \int\limits_{B_\delta(\mathbf{X})} (T[\mathbf{X},t]\langle \mathbf{X}' - \mathbf{X} \rangle - T[\mathbf{X}',t]\langle \mathbf{X} - \mathbf{X}' \rangle) d\mathbf{X}' + \mathbf{b}(t,\mathbf{X}) \text{ in } D \text{.} $$ +Here $\varrho$ denotes density of the material, $\mathbf{u}$ displacement field in the material, $\ddot{\mathbf{u}}$ acceleration, and $\mathbf{b}$ external force density. The constitutive law, relating bond strain with bond force, is prescribed using either the pairwise force function $\mathbf{f}$ or the PD state $T$ [@silling2007peridynamic]. In the NLMech library, the following material models are implemented: + +* Elastic state-based PD model [@silling2007peridynamic], +* Prototype micro-elastic brittle bond-based PD model [@silling2005meshfree], +* Nonlinear bond-based PD model [@lipton2014dynamic;@lipton2016cohesive], and +* Nonlocal double-well state-based peridynamic model [@Lipton2018;@jha2019numerical]. + +Examples for these types of model implementations are provided in the [documentation](https://nonlocalmodels.github.io/examples/). + +Currently, the library supports finite difference (or more generally meshfree) discretization. Using the triangulation of an arbitrary domain, the library can create a meshfree discretization. The library is equipped with necessary modules, such as FE elements and quadrature integration rules, for finite element discretization of PD. Next, we briefly discuss the finite difference/meshfree discretization of PD. \autoref{fig:discrete} shows the domain D discretized with the nodes $X = \{ X_i \in \mathbb{R}^3 \vert i=1,\ldots,n\}$. Each node $X_i$ represents a small area/volume denoted by $V_i$. In PD, as previously mentioned, each point $X_i$ interacts with neighboring points in the sphere (discrete) $B_\delta(X_i) = \{X_j: |X_i - X_j| < \delta \}$. + +![ Adapted from [@Diehl2020].\label{fig:discrete}](discrete.pdf){ width=30% } + +The discrete equation of motion is written as, for the bond-based PD, + +$$ \varrho(X_i)\ddot{\mathbf{u}}(t,X_i) = \sum\limits_{j \in B_\delta(X_i)}\mathbf{f}(\mathbf{u}(t,X_j)-\mathbf{u}(t,X_i),X_j-X_i) V_j + \mathbf{b}(t,X_i) \text{ in } D,$$ + +and, the state-based PD, + +$$ \varrho (X_i)\ddot{\mathbf{u}}(t,X_i) = \sum\limits_{j \in B_\delta(X_i)} (T[X_i,t]\langle X_j - X_i \rangle - T[X_j,t]\langle X_i - X_j \rangle) V_j + \mathbf{b}(t,X_i) \text{ in } D \text{.} $$ + +Here $\mathbf{u}(t,X_i)$ denotes the displacement of node $X_i$ at time $0 \leq t\leq T$. For the time discretization, we can consider: \textit{1)} implicit time integration and \textit{2)} explicit time integration using either a central difference or velocity verlet scheme. + +## Software Implementation and Applications + +NLMech relies on the following open source softwares: HPX [@Kaiser2020], Blaze [@iglberger2012high], Blaze_Iterative, Gmsh [@geuzaine2009gmsh], VTK [@schroeder2004visualization], and yaml-cpp. For details +about the specific version, we refer to NLMech's [documentation](https://github.com/nonlocalmodels/NLMech#building). + +NLMech was used for the following applications/publications: + +* Numerical convergence of finite difference approximations for state based perdidynamic fracture +models [@jha2019numerical] +* Complex fracture nucleation and evolution with nonlocal elastodynamics [@lipton2019complex] +* Free damage propagation with memory [@lipton2018free] +* Kinetic relations and local energy balance for linear elastic fracture mechanics from a +nonlocal peridynamic model [@jha2020kinetic] +* A Fracture Multiscale Model for Peridynamic enrichment within the Partition of Unity Method [@DBLP:journals/corr/abs-2108-02336] +* Peridynamics for Quasistatic Fracture Modeling [@bhattacharya2021peridynamics] + +For an updated list of applications/publications, we refer to corresponding [NLMech documentation](https://nonlocalmodels.github.io/publications/). + +# Statement of need + +Nonlocal models, like peridynamic, are computationally expensive. Several +publications on GPU-based implementations [@mossaiby2017opencl;@diehl2012implementierung;@diehl2015efficient] and one commercial implementation in LS-DYNA [@ren20173d] can be found in literature. However, +from an open source perspective, only two other peridynamic implementations are available: [Peridigm](https://github.com/peridigm/peridigm) [@littlewood2015roadmap] and [PDLammps](https://lammps.sandia.gov/doc/pair_peri.html) [@parks2008implementing]. Both of these codes rely on the Message Passing Interface (MPI). On modern supercomputers, many core architectures where the threads per computational node increase, it is more and more important to focus on the fine-grain parallelism with increasing cores per computational nodes. NLMech is based on the C++ standard library for parallelism and concurrency (HPX) [@Kaiser2020]. For more details on utilization of asynchronous many-task systems, we refer to @diehl2018implementation. The library implements the experimental nonlinear bond-based and state-based models, and the process of adding new material models is simple following the existing templates. + +# Future directions + +We are interested in extending/improving the library with + +- implementation of new material models, +- higher order time discretization schemes, +- local-nonlocal coupling methods, and +- further optimization of nonlocal computation. + +If you are interested in contributing, please read our [guidelines](https://github.com/nonlocalmodels/NLMech#contributing) and our [code of conduct](https://github.com/nonlocalmodels/NLMech/blob/master/CODE_OF_CONDUCT.md) before doing so. + +# Acknowledgments + +NLMech has been funded by: + +* Army Research Office Grant # W911NF-16-1-0456 to PI Dr. Robert Lipton (Professor at Louisiana State University). This grant supported Prashant K. Jha on a postdoctoral position from October 2016 - July 2019. +* Canada Research Chairs Program under the Canada Research Chair in Multiscale Modelling of Advanced Aerospace Materials held by M. Lévesque; Natural Sciences and Engineering Research Council of Canada (NSERC) Discovery Grants Program under Discovery Grant RGPIN-2016-06412. +* We are grateful for the support of the Google Summer of Code program funding internships. + +For a updated list of previous and current funding, we refer to the corresponding [NLMech website](https://github.com/nonlocalmodels/NLMech#acknowledgements). + +# References