Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.9%) to scientific vocabulary
Repository
Pretty Efficient Parallel Coulomb Solver
Basic Info
- Host: GitHub
- Owner: ALaDyn
- License: gpl-3.0
- Language: Fortran
- Default Branch: master
- Homepage: https://www.fz-juelich.de/en/ias/jsc/about-us/structure/simulation-and-data-labs/sdl-plasma-physics/pepc
- Size: 71.8 MB
Statistics
- Stars: 3
- Watchers: 8
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
PEPC - Pretty Efficient Parallel Coulomb-solver
Authors:
Paul Gibbon, Mathias Winkel, Benedikt Steinbusch, Robert Speck, Junxian Chew,
Dirk Brömmel, Lukas Arnold
Forschungszentrum Juelich GmbH
Juelich Supercomputing Centre
Webpage:
http://www.fz-juelich.de/ias/jsc/pepc
DOI:
E-Mail:
CI:
CB:
0. LICENSE
This file is part of PEPC - The Pretty Efficient Parallel Coulomb Solver.
Copyright (C) 2002-2024
Juelich Supercomputing Centre,
Forschungszentrum Juelich GmbH,
Germany
PEPC is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
PEPC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with PEPC. If not, see http://www.gnu.org/licenses/.
1. REQUIREMENTS
- A reasonably modern Fortran compiler with support for Fortran 2003 object
orientation, e.g.:
- GCC >= 4.6
- Intel >= 12.1
- IBM XL Fortran >= 12
- A C compiler and a C preprocessor with support for variadic macros.
- An MPI library with support for MPITHREADMULTIPLE. PEPC will complain about missing support at run time.
- Support for POSIX threads (pthreads).
2. COMPILATION
For compiling this program, the machine-dependent compiler names and flags have
to be set in a definition file called makefile.defs in the root directory.
Several exemplary definitions are available in the subdirectory ./makefiles.
For example, for GCC you can simply run
sh
ln -sf ./makefiles/makefile.defs.GCC ./makefile.defs
from the root directory to create a symbolic link the the appropriate
definitions. Some compiler or machine specific hints are contained in the files
within this directory, please have look there.
After providing the makefile.defs file, you can simply call
make help
to show information/recommendation on machine specifics.
After setting the proper environment (modules, paths) call
sh
make pepc-mini
to build the pepc-mini frontend into the ./bin/ directory. Parallel make
(i.e. make -j <n>) should work.
There are several different frontends available at the moment:
pepc-b:
laser/beam-plasma with magnetic fieldspepc-essential/pepc-benchmark:
simple setup w/ a Coulomb explosion
also used for benchmarkingpepc-darwin-2d:
2D version w/ Darwin appoximation for electrodynamicspepc-mini:
pure electrostatics
simple molecular dynamics
no diagnostics
minimum requirements to getPEPCrunningpepc-neighbour:
tree-based nearest neighbour searchpepc-kh,pepc-kh-essential:
Kevin-Helmholtz setup (essentialfollowing text-books)pepc-v/pepc-dvh:
vortex dynamics using the vortex particle method/diffused vortex hydrodynamics methodpepc-breakup:
Townsend avalanche breakdown simulation
To build an alternative frontend, just call
sh
make pepc-essential
or
sh
make pepc-benchmark
All frontends can be built using
sh
make (-j <n>) all
At the current stage, there is no real documentation available for the different frontends. However, you might simply want to take a look at the respective sourcecode to find out what they are doing.
3. RUNNING THE PROGRAM
Usually, the frontend's source directories contain a sample input deck for the
frontends. For running pepc-essential it is for example called params. It
contains user-adjustable parameters and can be fed to the executable as first
command line parameter:
sh
cd bin
mpirun -np 32 pepc-essential ../src/frontends/pepc/essential/params
4. DOCUMENTATION
Rudimentary doxygen documentation is available by calling
sh
make doc
from the root directory. A users guide is in preparation.
5. REPORTING PROBLEMS
Please submit an issue with PEPC's issue tracker if you encounter a problem. There are a number of templates available depending on the problem you want to report: - General problems use the default template - Questions on how to use PEPC - Problems with a particular frontend - Putting in a feature requests
Please note that our rescources are limited and that we will prioritise any requests. We do, however, appreciate any contribution.
6. DIRECTORY STRUCTURE / ADDING OWN FUNCTIONALITY
Inside the ./src/ directory, you will find four subdirectories:
- "treecode": PEPC kernel, everything that is necessary for the pure
algorithmic part of the treecode
- "interactionspecific": interaction specific backends. The different
subdirectories herein (currently mainly: coulomb, darwin, and vortex)
provide data structures and functions for the different applications. See
inline documentation in the sourcecode (especially inside the coulomb-subdir,
which should be well documented) to find out about what the functions should
do and which of them are necessary. The only files that must be provided in
this directory are (names may not be changed, public functions and
datastructures inside these files are mandatory):
* `moduleinteractionspecific.f90: data structures and functions for
manipulating them
*modulecalc_force.f90: functions for actual force-law and multipole
acceptance criterion etc.
*makefile.backend: backend specific modifications to treecode makefile,
may be empty
- "utils": source code of utilities (mainly for treecode diagnostics,
vtk-output etc.)
- "frontends": different applications that utilize the treecode for their
respective very specific purpose. The filemakefile.frontend` configures
which source files, interaction ("BACKEND" / "BACKENDTYPE"), and tree walk
("WALK") will be included/used.
In case you want to use PEPC for developing a treecode-based N-body code, you
might start by copying and modifying the pepc-mini frontend, which is a very
simple coulomb-MD programme. It uses the coulomb backend, that implements an
expansion of the plummer potential 1/sqrt(r^2+eps^2) up to quadrupole order.
Take care that your frontend-directory is called "pepc-something" with no further minus sign ("-") to be automatically recognized in the build system.
If you want to provide a new interaction-specific backend (for using other
multipole orders and/or force laws), just copy and modify the coulomb
subdirectory there. The backends do not have to be registered in some makefile,
but are selected inside the makefile.frontend and later included by the main
makefile. In case you only need to modify the interaction specific types but
not the functions that are dealing with them (for example for adding velocity,
mass, etc.), take a look at the coulomb-backend how to adjust the "type".
There, this is done for the pepc-mini frontend, that uses other types than
for example pepc-b while still using the same force expression. See
also variable "BACKENDTYPE" in pepc-mini's makefile.include.
7. CONTRIBUTING
Please refer to the separate file CONTRIBUTING.md for more information.
Owner
- Name: ALaDyn Collaboration
- Login: ALaDyn
- Kind: organization
- Email: aladyn@hotmail.it
- Repositories: 21
- Profile: https://github.com/ALaDyn
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: >-
A massively parallel, multi-disciplinary Barnes–Hut tree
code for extreme-scale N-body simulations
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Paul
family-names: Gibbon
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-5540-9626'
- given-names: Lukas
family-names: Arnold
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-5939-8995'
- given-names: Andreas
family-names: Breslau
- given-names: Dirk
family-names: Brömmel
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0009-0002-3460-928X'
- given-names: Danilo
family-names: Durante
affiliation: >-
National Research Council,
Institute of Marine Engineering (CNR-INM),
Via di Vallerano 139,
Rome,
Italy
orcid: 'https://orcid.org/0000-0001-9229-5851'
- given-names: Junxian
family-names: Chew
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0003-2562-4218'
- given-names: Marvin-Lucas
family-names: Henkel
- given-names: Michael
family-names: Hofmann
affiliation: >-
Technische Universität Chemnitz,
Department of Computer Science,
Str. der Nationen 62,
09111 Chemnitz,
Germany
- given-names: Helge
family-names: Hübner
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
- given-names: Marc
family-names: Keldenich
- given-names: Salvatore
family-names: Marrone
affiliation: >-
National Research Council,
Institute of Marine Engineering (CNR-INM),
Via di Vallerano 139,
Rome,
Italy
orcid: 'https://orcid.org/0000-0002-2711-8557'
- given-names: Christian
family-names: Salmagne
- family-names: Siddi
given-names: Lorenzo
- given-names: Robert
family-names: Speck
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-3879-1210'
- given-names: Benedikt
family-names: Steinbusch
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-3634-6818'
- given-names: Mathias
family-names: Winkel
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
identifiers:
- type: doi
value: 10.5281/zenodo.7965548
description: This DOI represents all versions, and will always resolve to the latest one.
repository-code: 'https://gitlab.jsc.fz-juelich.de/SLPP/pepc/pepc'
url: 'https://www.fz-juelich.de/ias/jsc/pepc'
abstract: >-
The PEPC project (Pretty Efficient Parallel Coulomb
Solver) is a public tree code that has been developed at
Jülich Supercomputing Centre since the early 2000s. Our
tree code is a non-recursive version of the Barnes-Hut
algorithm, using a level-by-level approach to both tree
construction and traversals.
keywords:
- Barnes-Hut
- tree code
- HPC
license: LGPL-3.0-or-later
version: 2.1.0
date-released: '2024-04-22'
references:
- authors:
- given-names: Mathias
family-names: Winkel
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
- given-names: Robert
family-names: Speck
affiliation: >-
Institute of Computational Science,
Faculty of Informatics,
University of Lugano,
6900 Lugano,
Switzerland
orcid: 'https://orcid.org/0000-0002-3879-1210'
- given-names: Helge
family-names: Hübner
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
- given-names: Lukas
family-names: Arnold
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-5939-8995'
- given-names: Rolf
family-names: Krause
affiliation: >-
Institute of Computational Science,
Faculty of Informatics,
University of Lugano,
6900 Lugano,
Switzerland
- given-names: Paul
family-names: Gibbon
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-5540-9626'
doi: 10.1016/j.cpc.2011.12.013
title: 'A massively parallel, multi-disciplinary Barnes–Hut tree code for extreme-scale N-body simulations'
type: article
journal: 'Computer Physics Communications'
volume: 183
issue: 4
year: 2012
month: 4
- authors:
- given-names: Paul
family-names: Gibbon
affiliation: >-
Institute for Advanced Simulation,
Jülich Supercomputing Centre,
Forschungszentrum Jülich GmbH,
52425 Jülich,
Germany
orcid: 'https://orcid.org/0000-0002-5540-9626'
title: 'PEPC: Pretty Efficient Parallel Coulomb-solver'
type: article
year: 2003
url: 'http://hdl.handle.net/2128/12002'
GitHub Events
Total
- Watch event: 2
- Push event: 2
Last Year
- Watch event: 2
- Push event: 2