pepc

Pretty Efficient Parallel Coulomb Solver

https://github.com/aladyn/pepc

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
Last synced: 6 months ago · JSON representation ·

Repository

Pretty Efficient Parallel Coulomb Solver

Basic Info
Statistics
  • Stars: 3
  • Watchers: 8
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 14 years ago · Last pushed 8 months ago
Metadata Files
Readme Changelog Contributing License Citation

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:

10.5281/zenodo.7965548

E-Mail:

pepc@fz-juelich.de

CI:

pipeline status

CB:

Continuous Benchmarking

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 fields
  • pepc-essential/pepc-benchmark:
    simple setup w/ a Coulomb explosion
    also used for benchmarking
  • pepc-darwin-2d:
    2D version w/ Darwin appoximation for electrodynamics
  • pepc-mini:
    pure electrostatics
    simple molecular dynamics
    no diagnostics
    minimum requirements to get PEPC running
  • pepc-neighbour:
    tree-based nearest neighbour search
  • pepc-kh, pepc-kh-essential:
    Kevin-Helmholtz setup (essential following text-books)
  • pepc-v/pepc-dvh:
    vortex dynamics using the vortex particle method/diffused vortex hydrodynamics method
  • pepc-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

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