Giter Club home page Giter Club logo

concept's Introduction

CONCEPT

  🚀   Latest release: 1.0.1
  📖   Documentation

Introduction

CONCEPT (COsmological N-body CodE in PyThon) is a free and open-source simulation code for cosmological structure formation. The code should run on any Linux system, from massively parallel computer clusters to laptops. The code is written almost exclusively in Python, but achieves C-like performance through code transformation using a custom transpiler/optimizer and Cython. While highly competitive regarding both performance and accuracy, CONCEPT further strives for ease of use.

CONCEPT is capable of simulating matter particles evolving under self-gravity in an expanding background. It has multiple gravitational solvers to choose from, and has adaptive time integration built in. In addition to particles, the code is further able to evolve fluids at various levels of non-linearity, providing the means for the inclusion of more exotic species such as massive neutrinos, as well as for simulations consistent with general relativistic perturbation theory. Various non-standard species — such as decaying cold dark matter — are fully supported.

CONCEPT comes with a sophisticated initial condition generator built in, and can output snapshots, power spectra, bispectra and several kinds of renders.

The CLASS code is fully integrated into CONCEPT, supplying the needed information for e.g. initial condition generation and general relativistic corrections.

Code paper

The primary paper on CONCEPT is ‘The cosmological simulation code CONCEPT 1.0’.
Cite this paper if you make use of CONCEPT in a publication.

Getting Started

To get started with CONCEPT, walking through the tutorial is highly recommended. That said, installation can be as simple as

bash <(wget -O- https://raw.githubusercontent.com/jmd-dk/concept/master/install)

which installs CONCEPT along with all of its dependencies into a single directory. The installation takes a couple of hours on modern hardware. Should the installation process end prematurely, simply rerun the installation command and it will pick up from where it was.

To run a small sample simulation, navigate to the directory where CONCEPT is installed and invoke

./concept -p param/example_basic -n 2 --local

This will run the simulation defined by the provided example_basic parameter file using 2 processes.

Consult the tutorial and the rest of the documentation for further guidance.

concept's People

Contributors

jmd-dk avatar johankoelsen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

concept's Issues

Error when trying to dump 2D render as image but not as terminal image

When run with the following content of the param-file:

# Non-parameter variable used to control the size of the simulation
_size = 128

# Input/output
initial_conditions = {
    'species': 'matter',
    'N'      : _size**3,
}
output_dirs = {
    'render2D' : paths['output_dir']
}
output_times = {
    'render2D' : logspace(log10(a_begin), log10(1), 100)
}
render2D_select = {
    'matter': {'data': False, 'image': True,  'terminal image': False},
}

# Numerical parameters
boxsize = 128*Mpc

# Cosmology
H0      = 67*km/(s*Mpc)
Ωcdm    = 0.27
Ωb      = 0.049
a_begin = 0.02

# Physics
select_forces = {
    'matter': {'gravity': ('pm', 2*_size)},
}

# Graphics
render2D_options = {
    'gridsize': {
        'matter': _size,
    },
    'terminal resolution': {
        'matter': 80,
    },
    'colormap': {
        'matter': 'inferno',
    },
}

concept produces the following error message instead of rendering the 2D image:

Traceback (most recent call last):
  File "graphics.pyx", line 568, in graphics.render2D
    BEGIN_UNICODE__DOUBLE__DASH__STRUCK__SPACE__CAPITAL__SPACE__R__END_UNICODE_237__DIV____LTH__double__GTH____OPAR__vmax_terminal__MIN__vmin_terminal__CPAR__ = <double>(237/<double>(vmax_terminal - vmin_terminal))
UnboundLocalError: local variable 'vmax_terminal' referenced before assignment
Exception ignored in: 'main.dump'
Traceback (most recent call last):
  File "graphics.pyx", line 568, in graphics.render2D
    BEGIN_UNICODE__DOUBLE__DASH__STRUCK__SPACE__CAPITAL__SPACE__R__END_UNICODE_237__DIV____LTH__double__GTH____OPAR__vmax_terminal__MIN__vmin_terminal__CPAR__ = <double>(237/<double>(vmax_terminal - vmin_terminal))
UnboundLocalError: local variable 'vmax_terminal' referenced before assignment

When run with 'terminal image': True it completes successfully.

Small simulations take a long time on my cluster

Hi,

I am currently doing some tests with CONCEPT on a cluster, and I've
found that when I reach a resolution of $ N\approx L^3 $ the code becomes very slow and
the load imbalance reaches very high values (up to 4000%). Moreover the time to
complete a run is much higher than the one I would expect from Figure
9 of the CONCEPT 1.0 paper (where it is presented the time for a run as
function of the resolution, link ).

I present here some tests that I performed varying resolution and
number of cpus (N=128^3 was fixed):

  • -n 64 L=1000 Mpc/h : 6 minutes
  • -n 128 L=1000 Mpc/h : 10 minutes
  • -n 64 L=512 Mpc/h : 55 sec
  • -n 128 L=512 Mpc/h : 17:40 minutes
  • -n 32 L=512 Mpc/h : 1:05 minutes
  • -n 64 L=256 Mpc/h : 4:01 minutes
  • -n 128 L=256 Mpc/h : 29:11 minutes
  • -n 64 L=128 Mpc/h : stopped after 36 hrs
  • -n 16 L=128 Mpc/h : stopped after 36 hrs

Is this behaviour expected?
All these tests have been performed on a cluster where the job system
is condor so I could not use the CONCEPT job system. Thus I resolved to
enter in the job and then launch CONCEPT with the --local option

Thanks in advance for any help anyone could provide.

invalid syntax of render2D

I made a param file and ran it with concept but it returns me a invalid syntax of render2D like follow:
Traceback (most recent call last):
File "", line 5, in
File "/home/user/test/disk/concept/dep/python/lib/python3.9/ast.py", line 50, in parse
return compile(source, filename, mode, flags,
File "", line 8
'render2D': a_begin
^
SyntaxError: invalid syntax
An error occurred!
I learned the tutorial and tired to modify the code but still can't work,and here's my code:
initial_conditions = {
'species': 'matter',
'N' : 64**3,
}

output_times = {
'snapshot': a_begin
'render2D': a_begin
}
output_dirs = {
'snapshot': path.output_dir
'render2D': path.output_dir
}

render2D_select = {
'all': {
'data' : False,
'image' : True,
'terminal image': True,
},
}

snapshot_select = {
'save': {
'matter': {
'pos': True,
'mom': True,
'J' : True,
},
},
'load': {
'matter': {
'pos': True,
'mom': True,
'J' : True,
},
},
}
snapshot_type = 'concept'

boxsize = 256*Mpc/h
potential_options = 128

H0 = 67km/(sMpc)
Ωb = 0.049
Ωcdm = 0.27
a_begin = 0.02
primordial_spectrum = {
'A_s': 2.1e-9, # Amplitude
'n_s': 0.96, # Tilt / spectral index
}

Is the Omega_cdm parameter actually important in the simulation?

Hi! First of all great program, it was a breeze to install. I have one question/issue I would like to ask regarding the importance of Cosmology parameters in the simulation. I tried changing around Ωcdm, Ωb and H0 to see the variation in the simulation. However, after doing so and saving snapshots at many different times for each simulation I noticed that the simulations are very similar in their renders and even plotting them (using scatter) they are almost the same even with wildly different parameters. Is this expected behavior? For reference here are two screenshots of simulations at a=0.3877 with the first picture as parameters:

H0 = 67km/(sMpc)
Ωcdm = 0.27
Ωb = 0.049

and the second:

H0 = 90km/(sMpc)
Ωcdm = 0.46
Ωb = 0.049
a_begin = 0.05

render2D_a=0 387786

render2D_a=0 3877

H_T_Prime in non-N-body Gauge

The lines 480-481 in the linear.py module force the H_T_prime perturbation to be present in the class output for all gauges.

I believe the H_T_prime perturbation is only used in the n-body gauge and so needs not be included for synchronous or Newtonian gauge simulations?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.