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 00000000..640fa4c0 Binary files /dev/null and b/assets/logo/logo_joss.png differ diff --git a/docs/discrete.pdf b/docs/discrete.pdf new file mode 100644 index 00000000..be21c691 Binary files /dev/null and b/docs/discrete.pdf differ 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