Git Product home page Git Product logo

gadgetviewer's Introduction

Gadgetviewer documentation

Introduction

This is a program for visualisation of Gadget N-body simulation snapshots. It can read Gadget type 1, type 2 and HDF5 snapshots and provides an interactive display of the particle distribution, optionally with SPH type smoothing and colouring by any quantity that can be read from the snapshot.

There are facilities to pick out populations of particles by various properties (e.g. temperature, density etc in SPH runs), to follow particles between snapshots, and to make movies.

It can be used with other simulation codes which produce Gadget-like snapshots, such as AREPO and SWIFT, and has been used to visualize the EAGLE and Illustris simulations.

Compilation

Compiling a release

This package uses a configure script generated using GNU Autoconf. If you downloaded a release .tar.gz file (which would have a filename along the lines of gadgetviewer-X.Y.Z.tar.gz) then the configure script has already been generated and is included.

You can get a summary of the available options by running

./configure --help

In the unlikely event that all of the dependencies are installed in standard locations and you don't need any special compiler flags, you might get away with just doing

./configure --prefix=path
make
make install

where path is the directory where the program should be installed.

Compiling from the git repository

Since the configure script and related files are machine generated they are not included in the git repository. If you acquired the code by cloning the git repository or using the download source option on github then you'll need to ensure that you have autoconf, automake and libtool installed and run the autogen.sh script in the source directory. This will generate the configure script which can be run as described above.

Dependencies

In order to compile the program you need at least a C compiler, a Fortran 90 compiler, and the GTK+ 2.0 GUI library. The program also has several optional dependencies:

  • HDF5 : allows reading of HDF5 snapshots
  • libpng: required for writing out movie frames and screenshots
  • PlPlot: to make scatterplots and histograms of particle properties (plplot is no longer necessary as gadgetviewer can use Cairo, which is a dependency of Gtk, instead)

If any of these are missing, some features will be unavailable. The configure script generates a warning for each library which can't be found.

Specifying compilers and flags

The compilers to use can be specified by setting the following environment variables before running the configure script:

  • CC - C compiler
  • CFLAGS - C compiler flags
  • FC - Fortran 90 compiler
  • FCFLAGS - Fortran compiler flags

By default the configure script will add some compiler flags which are usually helpful. These are used in addition to anything you specify with the FCFLAGS and CFLAGS environment variables. If this causes problems you can configure with

--disable-optimization --disable-heap-arrays --disable-openmp

to prevent it adding extra flags.

OpenMP

The program can make use of multiple processor cores using OpenMP if your Fortran compiler supports it. The configure script should now detect OpenMP if it is available.

If that doesn't work you could try adding your compiler's OpenMP flag to the FCFLAGS environment variable before running configure (e.g. -fopenmp for gfortran or -openmp for ifort).

Specifying library locations

If libraries are installed in non-standard locations (i.e. not somewhere like /usr/lib), the following parameters can be used to tell configure where to find the libraries:

    --with-hdf5=...           - specify path to HDF5
    --with-plplot=...         - specify path to PlPlot
    --with-png=...            - specify path to libpng

The supplied directory should contain the 'include' and 'lib' subdirectories for the corresponding library. E.g. if libhdf5.so is in /opt/local/hdf5/current/lib/ then you would use

./configure --with-hdf5=/opt/local/hdf5/current/

The program can be compiled without a particular library by doing something like:

./configure --without-hdf5

If you're having problems linking a library you can use the LIBS and LDFLAGS environment variables to pass extra flags to the linker.

Some points to note:

  • To read snapshots larger than 2Gb the program needs to be compiled in 64 bit mode, in which case all of the libraries need to be compiled as 64 bit too (this should no longer be a problem now that most systems are 64 bit).

  • Libraries installed by a package manager sometimes don't include the header files which are necessary to compile anything that uses the library. It may be necessary to install a separate "dev" package with the headers.

  • gfortran will compile this program but you need at least version 4.2 to be able to read binary snapshots. Stream I/O is not implemented in 4.1.

Example compilation

Compiling the code with the Intel compilers and installing to our own home directory (assuming we're using the bash shell):

./configure CC=icc FC=ifort --prefix=$HOME/.local/
make
make install

To configure for debugging with gdb:

./configure FCFLAGS='-g -check all -fpe0 -warn -traceback -debug extended' \
            CFLAGS='-g -warn -traceback -debug extended' --prefix=$HOME/.local/ \
            --disable-optimization

PlPlot configuration

Note that PlPlot is not required if Cairo is available (which it usually is).

If you're having problems compiling PlPlot then as a last resort you could try disabling features that the gadget file viewer doesn't need. To do this, pass the following parameters to cmake:

    -DENABLE_tcl=OFF
    -DENABLE_cxx=OFF
    -DENABLE_gnome2=OFF
    -DENABLE_wxwidgets=OFF
    -DENABLE_DYNDRIVERS=OFF
    -DPLD_gcw=OFF
    -DPLD_wxwidgets=OFF
    -DPLD_hp7470=OFF
    -DPLD_hp7580=OFF
    -DPLD_lj_hpgl=OFF

Gadgetviewer just needs the Fortran interface and the 'mem' output driver, which is built in and can't be disabled.

HDF5 configuration

It should now be possible to use any HDF5 1.6 or later installation. Only the C interface is used, so it doesn't matter if the HDF5 Fortran interface was not built or was built with a different compiler.

If HDF5 is compiled without compression support then compressed HDF5 snapshots will be unreadable.

Using the Gadget file viewer

Command line flags

To get a full list of command line options, run

gadgetviewer --help

Reading a snapshot

The name of a snapshot file to read can be specified on the command line or a file can be selected through the File menu. If the file is part of a multi file snapshot then the other files will be read too. Binary (type 1 and type 2) and HDF5 snapshots can be read.

Positions, IDs and masses are always read for all particles. Other particle properties may also be loaded depending on the file format (see 2.8 below).

Reading part of a snapshot

Sub-regions can be read from snapshots using the --region command line flag. E.g.

gadgetviewer --region=x,y,z,r snapshot_010.hdf5

Here x,y,z are the coordinates of the centre of the region and r is the radius. In case of EAGLE or SWIFT snapshots the code will use the spatial indexing in the snapshot to efficiently extract the requested region. Otherwise the program reads the entire snapshot and discards particles outside the region. This will be slow for large snapshots.

It's possible to read a random sample of particles from a snapshot:

gadgetviewer --sample-rate=s snapshot_010.hdf5

where the sample rate s is in the range 0-1.

These options are also available through the "Read part of snapshot" option in the File menu.

Random sampling for display

Displaying all of the particles which have been read in may be too slow for interactive use, so by default the program shows up to 2,000,000 particles. If there are more than this a random sample is shown. If you zoom in on a particular region of the simulation you can make it draw the sample from just this region by clicking the resample button. Alternatively you can activate the automatic resampling option in the View menu. This resamples the particles whenever the zoom factor changes by some amount. Its best not to use this in conjunction with the smoothed density plot because the smoothing lengths are recalculated whenever the particles are resampled.

The maximum number of particles to show can be changed with the View/View parameters option.

Using a 3D display

To use it with a stereoscopic display which expects side by side images, load a snapshot then select "Side by side stereo" from the View menu and press the full screen button at the top of the window. A slider on the toolbar allows you to adjust the eye separation to get a comfortable 3D effect.

Making movies

Select "Make movie" from the options menu. "Rotating movie" makes a movie of the particle distribution rotating about the selected point. "Evolving movie" loops over a range of snapshots and makes one frame per snapshot, optionally re-centering the view on the selected particles before calculating each frame. It writes out the frames as png files so you need to use something like mencoder to encode the movie.

Evolving movies will look best if you ensure that the sampling rate is 100% before making the movie. Otherwise you get a lot of flickering because it uses a different random sample for each frame.

Selecting particles to follow between snapshots

"Select particles" under the Options menu allows you to highlight particles according to property values and/or their distance from the selected point. It uses the IDs from the snapshot file to identify particles, so if you have a simulation where the IDs are not unique you may get strange results. For example, any particle with the same ID as a selected particle will be selected too. Particles stay selected when you change snapshots, so you can use this to identify progenitors of a particular halo, for example.

It is possible to select up to six different sets of particles simultaneously. The drop down box at the top of the "Select particles" window allows you to specify which set to operate on, and you can specify a name and a colour for each one. The chosen colour is used to highlight the selected particles in the main display and in the graph window (see below).

Making plots

"Make plot" in the options menu allows you to plot a histogram of the values of a particle property or to make a scatterplot of one property against another (e.g. temperature vs density). Particles in the current sample are shown in red and each set of selected particles is shown in the appropriate colour for that set. The plot will update automatically if you choose a different sample, change snapshots or modify a selection.

If the property plotted on the x or y axis cannot be loaded for the current snapshot the graph window will be blank.

Using multiple processors

Most of the code (with the exception of the octree construction on startup) has been parallelised with OpenMP. Multiple processor cores should be used automatically if your compiler supports OpenMP. You can set the number of threads to use via the OpenMP entry in the Options menu.

Reading extra particle properties from snapshots

Gadget or SWIFT HDF5 snapshots

If you have a HDF5 snapshot with extra particle properties (ages, metallicities etc) there are two ways to make it read the extra datasets.

First, you can specify the extra datasets on the command line. E.g.

gadgetviewer --datasets=Temperature,Density,Metallicity ./snapshot_010.0.hdf5

If you'd rather make the program always read certain datasets if they're present, then you can put the dataset names in one of the following files depending on whether you're working with Gadget or SWIFT output:

.gadgetviewer_settings/gadget_hdf5_extra_properties
.gadgetviewer_settings/swift_extra_properties

in your home directory. Note that duplicate dataset names or names which conflict with quantities which are always read (e.g. Mass, ID) will be silently ignored. The default file for Gadget contains

[Gadget HDF5]
Extra Properties=Metallicity;StarFormationRate;Temperature;Density;InternalEnergy

The program will read these quantities for each type of particle in the snapshot which has a corresponding HDF5 dataset.

Type 2 binary snapshots

You can specify which blocks should be read from type 2 binary snapshots by editing the file

.gadgetviewer_settings/gadget_binary_type2_blocks

in your home directory. The default file looks like this:

[Gadget Type 2 Binary]
NBlocks=3;

[U]
Displayed Name=InternalEnergy;
Particle Types=0;
Data Type=REAL;

[RHO]
Displayed Name=Density;
Particle Types=0;
Data Type=REAL;

[HSML]
Displayed Name=SmoothingLength;
Particle Types=0;
Data Type=REAL;

For each block you need to provide

  • Four character tag for this block (in [] above)
  • Name of the particle property stored in the block ("Displayed Name")
  • Which particle types this property applies to ("Particle Types", a semicolon delimited list of integers in the range 0-5)
  • Data type - this should be REAL or INTEGER. The precision of the data (4 or 8 byte) is detected using the record markers in the file.

Note that vector quantities (e.g. accelerations) cannot be read in this way. There is no need to specify the POS, VEL, ID and MASS blocks because they are always read in anyway. Entries with names or tags that conflict with the standard set of blocks will be ignored.

Type 1 binary snapshots

Its not possible to read additional particle properties from type 1 snapshots because there is no way for the program to determine which extra blocks are present.

Reading halo finder output

Halo finder output can be read using the options under 'Read Groups' in the File menu. Select a format, then select a file from the set generated by the halo finder. The program will read the halo finder output corresponding to the currently open snapshot and add one or more new particle properties which indicate which halo each particle belongs to.

To colour particles by halo membership, select the 'colour by property' plot type, select to colour by the appropriate dataset in the settings window, and tick the 'use random colours for integer properties' box. The Randomize button can be used to reject unacceptable colour schemes. You can also use the 'Select particles' option in the Options menu to pick out particles in particular groups.

On changing snapshots the halo finder output for the new snapshot will be read automatically. This depends on the files being written with a similar naming convention to Gadget snapshots. Any instances of the snapshot number in the path must be padded to at least three digits with leading zeros and preceded by an underscore.

See below for the supported halo finder formats.

Subfind

The program can read binary output from certain (old) versions of the SubFind halo finder. The formats which can be read are:

  • L-Gadget group_tab files - FoF groups as in the Millennium simulation
  • L-SubFind sub_tab files - subfind groups as in the Millennium simulation
  • P-Gadget3 group_tab - FoF groups as in the Aquarius simulations
  • P-Gadget3 subhalo_tab - subfind groups as in the Aquarius simulations

The P-Gadget3 options wont work if the code wrote double precision outputs or if certain preprocessor macros were enabled. To read an output select one of the group_tab or subhalo_tab files. This will add new particle properties FoFGroupIndex and/or SubGroupIndex. These indicate which group and subgroup each particle belongs to, with zero indicating that the particle is in no group. The groups are numbered in the order they appear in the halo finder output.

Velociraptor

The program can read HDF5 output from the VELOCIraptor halo finder (https://github.com/pelahi/VELOCIraptor-STF). This adds the following particle properties:

  • VR_ID_bound: which VELOCIraptor halo the particle belongs to. This corresponds to the ID dataset in the .catalog_groups files.
  • VR_hostHaloID_bound: which VELOCIraptor 'field' halo the particle belongs to. This corresponds to the hostHaloID dataset in the .catalog_groups files.

Currently only the bound group membership files are read and the hostHaloID is set equal to ID for particles which only belong to a field halo.

Reading additional arrays from HDF5 or text files

Its possible to read in extra particle properties from ascii or HDF5 files using the "Read additional data" option in the file menu. These files must follow the same naming convention as Gadget snapshots. Each data array can be split across any number of files as long as there is one element for each particle in the snapshot and the values are stored in the same order as in the snapshot.

Once an extra property has been read the program will look for a corresponding set of files whenever a new snapshot is loaded. This is done by replacing any instances of the snapshot number in the filename(s).

gadgetviewer's People

Contributors

calvin-sykes avatar jborrow avatar jchelly avatar zebo9x avatar

Stargazers

 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

gadgetviewer's Issues

Compilation on MacOS

Hi John,

I'm trying to compile on MacOS and have had to make a few minor changes to the codebase; I thought I would list them here (as I am not that familiar with fortran) instead of just making a PR straight up.

This is with gfortran 8.1.0.

  1. I needed to put a space in between all stop'' calls, such that they now read stop '<string>'.
  2. I needed to update the python script conf/find_module_dependencies.py to be python3 compatible; this is because lower as part of the string library has now become part of the standard library and is just a method on strings
  3. I have also added a .gitignore that ignores the compiled files, if you wish for me to upload it.

The first one is the one where I feel like I am probably missing something; let me know if I should revert these changes.

hdf5-related compile error

Hi,

I get the following compile error when enabling HDF5 support:

Making all in hdf5
make[2]: Entering directory '/Users/benwibking/gadgetviewer/hdf5'
Making all in src
make[3]: Entering directory '/Users/benwibking/gadgetviewer/hdf5/src'
/bin/sh ../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../.     -g -O2 -MT read_hdf5_c.lo -MD -MP -MF .deps/read_hdf5_c.Tpo -c -o read_hdf5_c.lo read_hdf5_c.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../. -g -O2 -MT read_hdf5_c.lo -MD -MP -MF .deps/read_hdf5_c.Tpo -c read_hdf5_c.c  -fno-common -DPIC -o .libs/read_hdf5_c.o
read_hdf5_c.c:308:10: warning: 11 enumeration values not handled in switch: 'H5T_NO_CLASS', 'H5T_TIME',
      'H5T_STRING'... [-Wswitch]
  switch(class)
         ^
read_hdf5_c.c:308:10: note: add missing switch cases
  switch(class)
         ^
read_hdf5_c.c:537:100: error: too few arguments to function call, expected 8, have 7
      H5Oget_info_by_idx(group_id, ".", H5_INDEX_NAME, H5_ITER_NATIVE, i, &object_info, H5P_DEFAULT); 
      ~~~~~~~~~~~~~~~~~~                                                                           ^
/usr/local/include/H5Opublic.h:190:8: note: 'H5Oget_info_by_idx3' declared here
H5_DLL herr_t H5Oget_info_by_idx3(hid_t loc_id, const char *group_name,
       ^
1 warning and 1 error generated.

Perhaps the HDF5 API has changed? I have hdf5 version 1.12.0 installed via homebrew on macOS. I've used a command-line flag to revert to the version 1.6 API in Gadget -- is that necessary here?

Can't compile with GCC/11.2.0

Hi John

I've recently updated my system and can't get the code to compile using gcc 11.2.0, failing with the following error:

make[3]: Entering directory '/home/mivkov/local/gadgetviewer/main/src'
/home/mivkov/local/spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/gcc-11.2.0-sf5dve2qduhb7ukkr6prxiubaorcwseo/bin/gfortran -DHAVE_CONFIG_H -I. -I../../.    -I ../../f90_gui/src/ -I ../../drawing/src/ -I ../../f90_util/src -I ../../hdf5/src -I ../../read_eagle/src -fopenmp -heap-arrays -O3 -fallow-argument-mismatch -g -O2 -c -o additional_data.o additional_data.F90
additional_data.F90:1022:23:

  986 |              call cleanup()
      |                           2
......
 1022 |       do iaux = i, j, 1
      |                       1
Error: Index variable 'iaux' redefined at (1) in procedure 'cleanup' called from within DO loop at (2)

using gadgetviewer for a very large simulation snapshot

Dear,

I am trying to use Gadgetviewer for a very large simulation snapshot (longIDs, HDF5 format, single file). I compiled gadgetviewer with --enable-big-snapshots. But it still can not load the snapshot. I think this is caused by the snapshot is written in a single file.
I also have tried to set the #define SIZEOF_INT 8 in the config.h, but that does not help.
I got stuck at the transferring the long long dataset in hdf5/src/read_hdf5.f90 when it calls the read_hdf5_c.c functions. The code does not allow to compile because of an error:

read_hdf5.f90(621): error #6683: A kind type parameter must be a compile-time constant.   [C_LONG_LONG]
    integer(kind=C_LONG_LONG), dimension(7)        :: c_count

Any suggestions will be welcome.

Thanks a lot!

Better support for Swift output

There probably needs to be a Swift specific read routine instead of using the Gadget HDF5 reader. Things to implement:

  • Correctly and efficiently handle extremely large snapshot files (see #5 and subprocess_io branch)
  • Read black hole particles, which don't have a Mass dataset. Might need to remove any assumptions about dataset names and let the read routines determine the names for essential quantities (Coordinates, Velocities, Masses, ParticleIDs) on a per-type basis.
  • Support reading sub-regions using the cell structure in Swift snapshots
  • Read Velociraptor output and tag particles with group info as we do for Subfind

gtk3+ support

Is it possible to compile gadgetviewer with gtk3+? I tried to point the program to the correct folder, but it seems only look for gtk+-2.0.pc

checking for GTK+ - version >= 2.0.0... Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'

Thank you for any suggestions.

does not compile with gfortran 10.2.0

I am trying to compile gadgetviewer on my macOS machine. I have installed gfortran via homebrew. I run ./autogen.sh and ./configure successfully, but make fails with a compile error on key_file.F90 when using gfortran version 10.2.0:

libtool: compile:  gfortran -DHAVE_CONFIG_H -I. -I../../. -g -O2 -c key_file.F90  -fno-common -o .libs/key_file.o
key_file.F90:401:9:

  401 |          c_value, n, int(1, kind=C_INT))
      |         1
......
  423 |          c_value, n, int(size(c_value), kind=C_INT))
      |         2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
key_file.F90:322:9:

  322 |          c_value, n, &
      |         1
......
  343 |          c_value, n, int(size(c_value), kind=C_INT))
      |         2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
key_file.F90:279:9:

  279 |          c_value, n, &
      |         1
......
  423 |          c_value, n, int(size(c_value), kind=C_INT))
      |         2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
key_file.F90:235:9:

  235 |          c_value, int(1, kind=C_INT))
      |         1
......
  261 |          c_value, int(size(c_value), kind=C_INT))
      |         2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
key_file.F90:151:9:

  151 |          c_value, int(1, kind=C_INT))
      |         1
......
  170 |          c_value, int(size(c_value), kind=C_INT))
      |         2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
key_file.F90:113:9:

  113 |          c_value, int(1, kind=C_INT))
      |         1
......
  261 |          c_value, int(size(c_value), kind=C_INT))
      |         2
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)

Configuration problem on lastest Ubunt-oids

I hit the following problems on my system:

matthieu> autoreconf
configure.ac:46: warning: macro 'AM_PATH_GTK_2_0' not found in library
configure.ac:8: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.
./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:429: AM_INIT_AUTOMAKE is expanded from...
configure.ac:8: the top level
configure.ac:10: warning: 'AM_CONFIG_HEADER': this macro is obsolete.
configure.ac:10: You should use the 'AC_CONFIG_HEADERS' macro instead.
./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:781: AM_CONFIG_HEADER is expanded from...
configure.ac:10: the top level
configure.ac:28: warning: The macro `AC_HEADER_STDC' is obsolete.
configure.ac:28: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
configure.ac:28: the top level
configure.ac:41: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:41: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
configure.ac:41: the top level
configure.ac:49: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:49: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
m4/gv_find_library.m4:29: GV_FIND_LIBRARY is expanded from...
configure.ac:49: the top level
configure.ac:52: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:52: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
m4/gv_find_library.m4:29: GV_FIND_LIBRARY is expanded from...
configure.ac:52: the top level
configure.ac:55: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:55: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
m4/gv_find_library.m4:29: GV_FIND_LIBRARY is expanded from...
configure.ac:55: the top level
configure.ac:58: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:58: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
m4/gv_find_library.m4:29: GV_FIND_LIBRARY is expanded from...
configure.ac:58: the top level
configure.ac:61: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:61: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
m4/gv_find_library.m4:29: GV_FIND_LIBRARY is expanded from...
configure.ac:61: the top level
configure.ac:288: warning: AC_OUTPUT should be used without arguments.
configure.ac:288: You should run autoupdate.
configure.ac:46: error: possibly undefined macro: AM_PATH_GTK_2_0
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:46: error: possibly undefined macro: AC_MSG_ERROR
autoreconf: error: /usr/bin/autoconf failed with exit status: 1

The 2023 version of Ubuntu only ships with more recent autotool versions than the code assumes. Some of the macros have changed behaviour.
(The GTK 2 thing is not the issue here; i can install the packages)

I don't understand how to use this...

How do i install gadgetveiwer?

'make' and 'make install' was not work at gadgetviewer-1.1.1$ directory.

I don't speak English, so I have limitations in finding information.

Somebody help me...

Periodic wrap on resample causes odd behavior

When the option to periodic wrap the particles to copies closest to the selected point is enabled, the recenter button seems to behave strangely. Possibly the periodic shift is not being taken into account correctly somewhere.

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.