Table of Contents

Name

glnemo2 - An interactive 3D OpenGL visualization program for Nemo snapshots

Synopsis

glnemo2 [parameter=value]

Description

Glnemo2 is an interactive 3D visualization program which displays particles positions of the different components (gas, stars, disk, dark mater halo, bulge) of an N-body snapshot. It’s a very useful tool for everybody running N-body simulations from isolated galaxies to cosmological simulations. It can show quickly a lot of information about data by revealing shapes, dense areas, formation of structures such as spirals arms, bars, peanuts or clumps of galaxies. Glnemo2 has been designed to meet the requirements of the user, with simplicity in mind, easy to install, easy to use with an interactive and responsive graphical user interface (based on Digia QT 4.X API) , powerful with a fast 3D engine (OPenGL and GLSL), and generic with the possibility to load different kinds of input files.

You can zoom in/out, rotate, scale, translate, select different particles
and plot them in different blending colors, color particles according to their density, play with the density threshold, trace orbits, play different time steps, take automatic screenshots to make movies, select particles using the mouse, fly over your simulation using camera path. All this features are accessible from a very intuitive graphic user interface.

Currently, glnemo2 reads:


- NEMO files ( http://carma.astro.umd.edu/nemo )
- Gadget 1 and 2 -little and big endian- files ( http://www.mpa-garching.mpg.de/gadget/
)
- RAMSES files ( http://irfu.cea.fr/Projets/Site_ramses/RAMSES.html )
- FTM files (Clayton Heller’s sph/nbody code)
- phiGRAPE file ( http://wiki.cs.rit.edu/bin/view/GRAPEcluster/phiGRAPE )
- list of files stored in a file
- realtime gyrfalcON simulation via a network plugin (see $NEMO/usr/jcl/glnemo2/gyrfalcon/README)

Features:

Glnemo2 uses a plugin mechanism to load data, so it’s easy to add a new file reader.
It uses the latest OpenGL technology like, shaders (glsl), vertex buffer object, frame buffer object, and takes in account the power of your graphic card to accelerate the rendering. Millions of particles can be rendered, in real time, with a fast GPU. With this technology, glnemo2 can be 1000% times faster than glnemo1 !

Glnemo2 runs fine on Linux, Windows(using minGW compiler), and
MaxOSX, thanks to the QT4 API.

Examples

From the command line you can select particles to load by specifying a range of particles, or
by the name of the component (if the file format store its data by component name).

For example :

1) glnemo2 in=mysnaphot select=0:199999,300000:999999

it loads snapshot "mysnapshot" and creates 2 objects (range0: 0 to 199999 particles indexes) and (range1 : 300000 to 999999 particles indexes)

2) glnemo2 in=snap_01 select=gas,stars

it loads snapshot "snap_01" and creates 2 objects (range0: gas particles) and (range1 : stars particles). Gas and stars particles are automatically detected from the input file.

If you start glnemo2 without feeding "select" parameter, it will open a dialog box where you will be able to select particles.

Once started, glnemo2 displays particles, and different actions with the mouse or the keyboard
perform different actions.

Operation

All the parameters given to the command line can be interactively modified in real time using the graphic user interface composed of menus, icons and dialog boxes. Most of the operations can also be activated by hitting a key in the display window itself:
- - - - - - - - - - - - - 
LMB = Left   Mouse Button
RMB = Right  Mouse Button
MMB = Middle Mouse Button
MM  = Move Mouse
MMH = Move Mouse Horizontally 
MMV = Move Mouse Vertically
A   = Alt key
C   = Control key
S   = Shift key
- - - - - - - - - - - - - 
LMB + MM(H/V)  rotate around X/Y screen axis
RMB + MM       rotate around Z screen axis
Wheel mouse    zoom in or out
+              zoom in
-              zoom out
S + LMB + MM   draw a rectangle box to zoom in
C + LMB + MM   translate along XY axis
C + RMB + MM   translate along Z  axis
c              center to center of mass
C + r          reset translation/rotation
C + a          fit all particles inside the window
f              toggle fullscreen
g              toggle the grid
r              launch particles ranges/color dialog box
o              launch option dialog box
s              take a screenshot
p              play all snapshots
y
Density threshold
MMB + MMH right  modify percentage of density threshold: min+1 and max+1
MMB + MMH left   modify percentage of density threshold: min-1 and max-1
MMB + MMV up     modify percentage of density threshold: min-1 and max+1
MMB + MMV down   modify percentage of density threshold: min+1
Automatic rotation around screen axis
C + x          toogle automatic rotation around screen x axis
C + y          toogle automatic rotation around screen y axis
C + z          toogle automatic rotation around screen z axis
SC + x         toogle automatic reverse rotation around screen x axis
SC + y         toogle automatic reverse rotation around screen y axis
SC + z         toogle automatic reverse rotation around screen z axis
Automatic rotation around world axis
C + u          toogle automatic rotation around world x axis
C + v          toogle automatic rotation around world y axis
C + w          toogle automatic rotation around world z axis
SC + u         toogle automatic reverse rotation around world x axis
SC + v         toogle automatic reverse rotation around world y axis
SC + w         toogle automatic reverse rotation around world z axis

Parameters

The following parameters are recognized in any order if the keyword is also given:
in=
Input snapshot (Nemo,Gadget 2 & 1, Ramses, phiGrape, ftm, list of files)
server=
Running simulation server hostname (right now works with gyrfalcON) []
select=
Select particles. This option can be used to color the particles. Sets of particles must be selected using the : range operator, separated by a comma. E.g. select=0:9,10:19 would select two sets of 10 particles and give them a different color or by component (gas,halo,stars,bulge,disk,bndry) [all]
times=
Select time [all]
xmin=
xmin coordinate box for Ramses input [0]
xmax=
xmax coordinate box for Ramses input [1]
ymin=
ymin coordinate box for Ramses input [0]
ymax=
ymax coordinate box for Ramses input [1]
zmin=
zmin coordinate box for Ramses input [0]
zmax=
zmax coordinate box for Ramses input [1]
lmin=
level min for Ramses amr input. (if 0, min internal level will be used) [0]
lmax=
level max for Ramses amr input. (if 0, max internal level will be used) [0]
scale=
scaling factor applied on ramses particles coordinates [1000]
vel=
load velocity coordinates [t]
disp_vel=
display velocity vectors [f]
blending=
Activate blending colors [t]
dbuffer=
Activate OpenGL depth buffer [f]
perspective=
Perspective projection is activated by default. Select ’f’ to toggle to orthographic projection.[t]
bestzoom=
performs an automatic zoom to fit all particles on the display.[t]
play=
automatically load and display next snapshot [f]
glsl=
try to initiayze GLSL (shaders) engine [t]
ortho_range=
[xy] range size in case of orthographic projection.[6.0]
zoom=
Zoom value.[-14.0]
xrot=
Rotation angle on X axis.[0.0]
yrot=
Rotation angle on Y axis.[0.0]
zrot=
Rotation angle on Z axis.[0.0]
xtrans=
translation on X.[0.0]
ytrans=
translation on Y.[0.0]
ztrans=
translation on Z.[0.0]
grid=
Show grids and cube if they are activated [t]
nb_meshs=
#meshs for the grid [28]
mesh_size=
grid’s size of one mesh [1.0]
xyg=
display a grid in XY plan [t]
yzg=
display a grid in YZ plan [f]
xzg=
display a grid in XZ plan [f]
cube=
display a cube centered on 0,0,0 [f]
osd=
show On Screen Display (OSD) [t]
osdtime=
show time on OSD [t]
osdnbody=
show nbody on OSD [t]
osdzoom=
show zoom on OSD [t]
osdrot=
show rotation values on OSD [t]
osdtrans=
show translation values on OSD [t]
osddata=
show data type on OSD [t]
osdtitle=
show title on OSD [t]
osd_set_title=
set an explicit title on OSD. If this variable remains blank, then simulation’s file name will be used as title
osdfontsize=
set OSD’s font in pixels [13.
od=
toggle an opaque disc centered in 0,0,0 [f] for hiding particles with z<0. It’s useful for displaying spherical data like the Sun.
odr=
opaque disc radius size [0.00]
odd=
display opaque disc which act like a coronograph. If enable, all particles will be hidden.
axis=
display 3d axis [t]
cb=
display Color Bar (CB) on screen [t]
cblog=
display real or log of the physical value on CB [f]
cbloc=
CB location, 0:top 1:right 2:bottom 3:left [3]
cbdigits=
CB #digits [1]
cboffset=
CB #offset pixels from the border location [35]
cbpw=
CB size in percentage of the OpenGL windows width [0.03]
cbph=
CB size in percentage of the OpenGL windows height [0.65]
cbfs=
size of the fonts used to display CB [13]
com=
center according the Center Of Mass [t]
cod=
center according the Center Of Density [t]
point=
display particles as points [f]
auto_render=
glnemo2 guess automatically the rendering mode, otherwise accumulation buffer will be selected[t]
auto_ts=
automatic texture size [t]
texture=
display particles as textures [t]
texture_s=
textures size [1.]
texture_a=
transparency texture value [1.]
selphys=
select physical quantity to display (1:density, 2:temperature, 3:pressure) [1]
minphys=
set minimal physical value
maxphys=
set maximal physical value
cmapindex=
color map index (used to color particles by density)
psize=
Set particles point size [1.0]
port=
Running simulation server’s communication port [4000]
wsize=
Windows’s width size [925]
hsize=
Windows’s height size [685]
screenshot=
Screenshot name []
smooth_gui=
if true it allows a smoother interactivity with [t]

Warning

Glnemo2 uses hardware accelerated feature of video card and especially GLSL capabilities. Not all the video cards have this requirement under Linux. The very well supported card are Nvidia card with proprietary driver. If glnemo2 crashs at starting, try to launch the program again by adding to the command line "glsl=f". It will deactivate the hardware accelerated engine, therefore the rendering will be slow but the program might work at least.

See Also

glnemo(1NEMO)

http://qt-project.org/downloads Qt library web site

Licence

CeCILL ( see http://www.cecill.info )

Files

$NEMO/usr/jcl/glnemo2: directory with source code
$NEMO/usr/jcl/glnemo2/gyrfalcon: runtime gyrfalcon manipulator (See README)
http://projets.lam.fr/projects/glnemo2 Home page
http://projets.lam.fr/projects/glnemo2/wiki/Wiki Wiki
http://projets.lam.fr/projects/glnemo2/wiki/Movies Movies

Author

Jean-Charles Lambert

Update History


23-Apr-10    ramses reader + gyrfalcON manipulator    JCL
19-May-10    - Leiden release - see ChangeLog    JCL
28-Jul-10    Version 1.0 !!!                JCL
27-Oct-10    Version 1.1  - see ChangeLog        JCL
29-Oct-10    Version 1.11 happy gcc 4.5.0        JCL
16-Apr-11    Ver 1.20  - new rendering pipeline/see ChangeLog    JCL
25-Nov-11    Ver 1.30  - Color bar display on 3d view    JCL
07-Feb-12    Ver 1.40  - New rotation system        JCL
14-Feb-12    Ver 1.41  - bug fix release        JCL
30-May-12    Ver 1.50  - timeline + opaque sphere    JCL
26-Jul-12    Ver 1.51  - bug fix release        JCL
01-Dec-12    Ver 1.52  - bug fix release        JCL
09-Jan-13    Ver 1.53  - bug fix release        JCL
08-Jan-14    Ver 1.6.0 - Happy QT5            JCL
02-Apr-14    Ver 1.6.1 - bug fix release         JCL


Table of Contents