This page was created by the IDL library routine
make_html_help. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? make_html_help
at the IDL command line prompt.
Last modified: Wed May 20 22:19:22 1998.
NAME:
PURPOSE:
CATEGORY:
CALLING SEQUENCE:
INPUTS:
KEYWORD PARAMETERS:
OUTPUTS:
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id$
$Log$
RELEASE:
$Name$
(See /deep0/marc/idlshare/Nbody/general/lambda.pro)
NAME:
ANG_MOM
PURPOSE:
Calculate angular momentum of a particle distribution
CATEGORY:
Nbody/general
CALLING SEQUENCE:
L = ang_mom( Pos, Vel )
INPUTS:
Pos -- A 3 X NPart array of positions, where NPart is the
number of particles.
Vel -- A 3 X NPart array of velocities, where NPart is the
number of particles.
KEYWORD PARAMETERS:
OUTPUTS:
L -- A 3 X NPart array of angular momentum, evaluated at
the position of each particle.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
Angular momentum is calculated as R X V.
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: ang_mom.pro,v 1.1 1997/03/06 22:39:05 mcraig Exp $
$Log: ang_mom.pro,v $
Revision 1.1 1997/03/06 22:39:05 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/ang_mom.pro)
NAME:
BIN_HALO
PURPOSE:
Bin a set of particles into radial bins, with the same number
of particles in each radial bin.
CATEGORY:
N-Body.
CALLING SEQUENCE:
bin_halo, Pos, Cen, BinBdry
INPUTS:
Pos -- A two dimensional array fltarr(3,*) in
containing the particle positions.
Cen -- A vector [Cx, Cy, Cz] containing the in
x,y,z coordinates of the halo center.
KEYWORD PARAMETERS:
BIN_SIZE -- Number of particles in each bin. in
Default is 50. Ignored if USE_RAD is set.
USE_RAD -- Rather than requiring a certain number of in
particles per bin, set this to the radii at
which the profile should be calculated.
Overrides BIN_SIZE.
PERIOD -- Set to length of box if particles are drawn in
from a periodic box.
BIN_INDEX -- Set to a named variable to receive an array out
indicating which particles contributed to
each bin. The array is set up like the
reverse histogram array in HISTOGRAM, so that
BinIndex(BinIndex(i):BinIndex(i+1)-1) contains
the indices of the particles in bin i.
NUMBINS -- Set to a named variable to receive number of out
bins created.
NUMPERBIN -- Set to named variable to reveive vector out
containg the number of particles in each bin.
Vector is longword, of length NUMBINS.
/HELP -- Print useful message and exit.
OUTPUTS:
BinBdry -- The boundaries of the radial bins created. out
This is a real vector with NUMBINS+1
elements, since NUMBINS bins have one more
boundary than bins.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The profiles are are tabulated either:
i) at radii such that each radial bin contains the same number
of particles, if USE_RAD is NOT set, or
ii) at the radii specified by the keyword USE_RAD.
Distances are returned in the same units as were input in
Pos. Velocities are in units with distances measured as
in Pos, and G=1, and mass per particle = 1. Masses are
tabulated in terms of particle number.
EXAMPLE:
profile_halo,/DENSITY, pos, cen, rad, den, BIN=250
Construct a density profile for the set of particles contained
in pos (nonperiodic), with center cen. There are 250
particles per radial bin, with the bin radii in rad, and the
density at those radii in den.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id$
$Log$
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/bin_halo.pro)
NAME:
calc_ke_for_subset
PURPOSE:
Calculate kinetic energy per particle for a subset of
particles.
CATEGORY:
Nbody/gen
CALLING SEQUENCE:
Ke = calc_ke_for_subset( Files, Particles )
INPUTS:
Files --- An array containing the names of the files which
contain particle position/velocity information.
Particles -- An index array with the indices of the particles
which are to be used in calculating the KE. If
omitted, all particles will be used. OPTIONAL.
KEYWORD PARAMETERS:
/PHYSICAL -- If this keyword is nonzero, the kinetic energy
will be calculated in physical units.
OUTPUTS:
Ke -- Array of kinetic energies, one per input file.
COMMON BLOCKS:
SIDE EFFECTS:
Makes temporary use of a file unit.
NOTES:
If physical is not specified, kinetic energy is provided in
code units.
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id$
$Log$
RELEASE:
$Name$
(See /deep0/marc/idlshare/Nbody/general/calc_ke_for_subset.pro)
NAME:
CALC_PHASE
PURPOSE:
Calculate phase space density in an N-body simulation.
CATEGORY:
N-body
CALLING SEQUENCE:
phase_density = calc_phase( pos, vel )
INPUTS:
pos -- Positions of the particles, as a in
3xNPart array.
vel -- Velocities of particles, as a in
3xNPart array.
KEYWORD PARAMETERS:
CENTER -- Point at which to calculate the course in
grained phase space density. Pass
[x,y,z] position. Default is
center of mass of particles.
RADIUS -- Include all particles within RADIUS of in
CENTER in the average, regardless of number
of particles within RADIUS. See Notes below.
NPAVG -- Include NPAVG particles in the calculation in
of the phase space density, regardless of
the radius of the sphere enclosing the
particles. If you use NPAVG, you should
also specify GUESS_RADIUS. See Notes below.
GUESS_RADIUS -- If using NPAVG, a guess as to the radius
in which NPAVG particles are included.
VOLUME -- Volume of the region occupied by particles. in/out
If input, will use all particles in
calculating phase space density. If set to
named variable, will have volume used in
calculating density on output.
/HELP -- Print useful message and exit.
OUTPUTS:
phase_space -- Phase space density. Units are particles out
per unit volume, per unit of velocity
cubed.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The set of rules used to determine which particles to include
in the average is a bit complex. You can specify the the code
either:
1) Use all particles passed in pos to find the density.
To use this option, pass a volume using the
VOLUME keyword. If NPAVG is set to a named variable,
it will contain the number of particles in pos on
output.
2) Use all particles within a certain radius of CENTER.
To use this option, pass a radius with the RADIUS
keyword. It is important that you do NOT also specify
the number of particles to use with NPAVG. If you do,
you will move to case 3. However, if you pass a named
variable whose value is zero (or which is undefined)
in the keyword NPAVG, then the number of particles
used in the estimated density will be returned in
that variable.
3) Use a specified number of particles to compute the
average by passing the number in NPAVG. You should
ALSO pass a guess as to the radius these particles are
contained in the keyword RADIUS. If RADIUS has been
set to a named variable, the radius which was used in
calcualting the average will be returned.
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
center_mass -- N-body (mcraig)
select_sphere -- N-body (mcraig)
MODIFICATION HISTORY:
$Id$
$Log$
RELEASE:
$Name$
(See /deep0/marc/idlshare/Nbody/general/OLD_calc_phase.pro)
NAME:
CALC_PHASE
PURPOSE:
Calculate phase space density in an N-body simulation.
CATEGORY:
N-body
CALLING SEQUENCE:
phase_density = calc_phase( pos, vel, Avg )
INPUTS:
pos -- Positions of the particles, as a in
3xNPart array.
vel -- Velocities of particles, as a in
3xNPart array.
Avg -- Specification of region to use for phase in
space estimation. Either volume all
particles occupy, radius over which to
average, or number of particles to include
in average. See /USE_* keywords below.
KEYWORD PARAMETERS:
CENTER -- Point at which to calculate the course in
grained phase space density. Pass
[x,y,z] position. Default is
center of mass of particles.
PERIOD -- Period of box, if periodic. Default is in
0.0 (non-periodic). See Notes below.
/USE_ALL -- Use all particles passed for the phase space
average. The positional argument Avg is
taken to be the volume the particles occupy.
This is the default action.
/USE_RAD -- Use all particles within specified distance
of CENTER in calculating pahse space density.
Parameter Avg is radius over which to average.
Default is /USE_ALL.
/USE_NP -- Use number of particles specified in Avg
in the phase density estimate. You should
also pass the radius which will enclose
roughly this many particles in GUESS_RADIUS.
Default is /USE_ALL.
GUESS_RADIUS -- If you specify /USE_NP, set to the [in]
radius of the sphere about CENTER which
includes roughly Avg number of particles.
VOLUME -- Volume of the region occupied by particles. out
Set to named variable to receive on output.
RADIUS -- Radius over which average was taken, out
In case of /USE_ALL, this is just
the cube root of 3*Volume/3/!PI.
NPAVG -- Number of particles included in the average. out
/HELP -- Print useful message and exit.
OUTPUTS:
phase_space -- Phase space density. Units are particles out
per unit volume, per unit of velocity
cubed.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
If your box is periodic but the region used in calculating the
phase space density does NOT wrap around the box, it will be
faster if you treat the box as non-periodic.
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
center_mass -- N-body (mcraig)
select_sphere -- N-body (mcraig)
select_np -- N-body (mcraig)
MODIFICATION HISTORY:
$Id: calc_phase.pro,v 1.1 1997/03/06 22:39:42 mcraig Exp $
$Log: calc_phase.pro,v $
Revision 1.1 1997/03/06 22:39:42 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/calc_phase.pro)
NAME:
CHAIN_CELL
PURPOSE:
Place particles in an N-body simulation onto a chaining cell
to allow for fast selection of particles.
CATEGORY:
N-body
CALLING SEQUENCE:
CellNum = chain_cell( Pos, NCells )
INPUTS:
Pos -- A 3 X NPart array of particle positions. in
NCells -- The (integer) number of cells on each in
side.
KEYWORD PARAMETERS:
CELLSIZE -- The size of the cell, in the same units in
as Pos. Default is
(max(Pos) - min(Pos))/NCells.
OUTPUTS:
CellNum -- Array of cell number for each particle. out
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
Cell numbers are encoded as a single number by the following
algorithm:
CellNum = long(Pos(0,j)/CellSize)
+ NCells*long(Pos(1,j)/CellSize)
+ NCells^2*long(Pos(2,j)/CellSize)
The number of the X cell is stored in the lowest NCell bits,
then the Y cell number in the next NCell numbers, then the Z
cell number.
To get from the single integer CellNum to the cell number for
each direction, use the following formula:
CellX = CellNum mod NCells
CellZ = long(CellNum/NCells^2)
CellY = long((CellNum mod NCells^2)/NCells)
Note that cell numbers run from 0 to NCells-1.
EXAMPLE:
Cells = chain_cell( pos, 20, CELLSIZE=1.0/20. )
Return cell number for positions (note Cells is a one
dimensional array with the same number of elements as the
number of particles). CELL is set to 1.0/20 because the
computational box has size 1.0, even though pos may not
completely fill it.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: chain_cell.pro,v 1.1 1997/03/06 22:57:15 mcraig Exp $
$Log: chain_cell.pro,v $
Revision 1.1 1997/03/06 22:57:15 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/chain_cell.pro)
NAME:
CHAIN_NEIGHBOR
PURPOSE:
Calculate the chaining cell numbers of the neighbors of a
given cell.
CATEGORY:
Nbody/gen
CALLING SEQUENCE:
nbrs = chain_neighbor( Home, NCells )
INPUTS:
Home -- The chaining cell number of the cell whose in
neighbors are desired.
NCells -- The number of chaining cells in each in
direction. If input as a single number,
number of cells is taken to be same in all
directions. Set to a three element vector
if number of cells is different in each
direction.
KEYWORD PARAMETERS:
/PERIODIC -- Set this keyword if the box is periodic.
Period is taken to be NCells.
/HELP -- Set this keyword to receive a useful help
message and exit.
OUTPUTS:
nbrs -- An array containing the cell numbers of the out
neighbors. The home cell is NOT included in
this array.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
EXAMPLE:
Home = 1234L & NCells=15
nbrs = chain_neighbor( Home, NCells, /PERIODIC )
nbrs returns the neighbor cells of cell 1234, assuming 15
cells on a side in a periodic box.
nbrs = [15, 19, 3]
nbrs = chain_neighbor( Home, NCells )
Find neighbors of cell 1234 in a box with 15 x 19 x 3 cells,
not periodic.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: chain_neighbor.pro,v 1.1 1997/03/06 22:56:37 mcraig Exp $
$Log: chain_neighbor.pro,v $
Revision 1.1 1997/03/06 22:56:37 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/chain_neighbor.pro)
NAME:
GRAPE_POT
PURPOSE:
Calculate gravitational potential energy of a set of particles
using the GRAPE.
CATEGORY:
Nbody/gen
CALLING SEQUENCE:
pot = grape_pot(Pos, Mass, Softening)
INPUTS:
Pos -- Positions of the particles, may be either 3 X NPart or
NPart X 3 (but see NPART keyword below).
Mass -- Particle mass (all particles must have same
mass). Optional: default is 1.0.
KEYWORD PARAMETERS:
MINX -- Sets value of GRAPE position scaling parameter. If [in]
not set by user, value is .5*max(pos).
MINM -- Sets mass scaling parameter for GRAPE. Is set to [in]
Mass if no value is specified.
ACC -- Set to a named variable to receive an array of [out]
accelerations for each particle. MUST ALSO SET
KEYWORD WANT_ACC (sorry that's so way lame).
/WANT_ACC -- Set if the output acceleration is desired.
NPART - Number of particles. This parameter MUST be
specified if the number of dimensions is not three, [in]
or if there are three particles in three dimensions.
SOFTENING -- Gravitational softening (see note [in]
below). Optional: default is 0.0.
OUTPUTS:
Pot -- Gravitaionpotential evaluated at the position of each
particle.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The potential due to a particle a distance r away is:
pot = 1/(r + \epsilon)
where \epsilon is the gravitational softening.
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id$
$Log$
RELEASE:
$Name$
(See /deep0/marc/idlshare/Nbody/general/grape_pot.pro)
NAME:
HIST_BY_NUM
PURPOSE:
Create a histogram with a set number of points per bin.
CATEGORY:
N-Body.
CALLING SEQUENCE:
HIST_BY_NUM, Pos, Cen, BinBdry
INPUTS:
Pos -- A two dimensional array fltarr(3,*) in
containing the particle positions.
Cen -- A vector [Cx, Cy, Cz] containing the in
x,y,z coordinates of the halo center.
KEYWORD PARAMETERS:
BIN_SIZE -- Number of particles in each bin. in
Default is 50. Ignored if USE_RAD is set.
USE_RAD -- Rather than requiring a certain number of in
particles per bin, set this to the radii at
which the profile should be calculated.
Overrides BIN_SIZE.
PERIOD -- Set to length of box if particles are drawn in
from a periodic box.
BIN_INDEX -- Set to a named variable to receive an array out
indicating which particles contributed to
each bin. The array is set up like the
reverse histogram array in HISTOGRAM, so that
BinIndex(BinIndex(i):BinIndex(i+1)-1) contains
the indices of the particles in bin i.
/HELP -- Print useful message and exit.
OUTPUTS:
Rad -- Set to a named variable to receive the out
positions at which the halo profile
is tabulated.
Profile -- The desired profile. See description under out
keyword parameters for each profile type
for units.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The profiles are are tabulated either:
i) at radii such that each radial bin contains the same number
of particles, if USE_RAD is NOT set, or
ii) at the radii specified by the keyword USE_RAD.
Distances are returned in the same units as were input in
Pos. Velocities are in units with distances measured as
in Pos, and G=1, and mass per particle = 1. Masses are
tabulated in terms of particle number.
EXAMPLE:
profile_halo,/DENSITY, pos, cen, rad, den, BIN=250
Construct a density profile for the set of particles contained
in pos (nonperiodic), with center cen. There are 250
particles per radial bin, with the bin radii in rad, and the
density at those radii in den.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: hist_by_num.pro,v 1.2 1997/03/04 18:40:57 mcraig Exp mcraig $
$Log: hist_by_num.pro,v $
Revision 1.2 1997/03/04 18:40:57 mcraig
Removed debugging print statements.
Revision 1.1 1997/02/18 18:20:59 mcraig
Initial revision
Revision 1.1 1996/06/28 22:41:39 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/hist_by_num.pro)
NAME:
ID_VIRIAL_GROUPS
PURPOSE:
Find groups based on mean overdensity given group centers from
another group finding method.
CATEGORY:
N-body
CALLING SEQUENCE:
id_virial_groups, Pos, Cen, Mass, GrpID
INPUTS:
Pos -- A 3XNPart array of particle positions. in
Cen -- A 3XNCenters array of group centers. in
KEYWORD PARAMETERS:
PERIOD -- Period of the box if the particles are in
drawn from a periodic simulation.
Default is 0 (nonperiodic).
BACKGROUND_DENSITY -- Critical background density in
of the universe, in units of particles in
per units volumes (distance units are set
by Pos). Default is number of particles
in Pos.
OUTPUTS:
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: id_virial_groups.pro,v 1.1 1997/02/18 18:20:59 mcraig Exp $
$Log: id_virial_groups.pro,v $
Revision 1.1 1997/02/18 18:20:59 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/id_virial_groups.pro)
NAME:
LOADPOS
PURPOSE:
Load positions from a Schlegel-Fisher format N-body file into
an array.
CATEGORY:
N-body
CALLING SEQUENCE:
array = loadpos( filename )
INPUTS:
filename -- Name of file containing positions in
in Schlegel-Fisher format.
KEYWORD PARAMETERS:
BOXSIZE -- Scaling for distances read in. Distances in
are _divided_ by BOXSIZE. Default is 1.
NPART -- Set to a named variable to receive the out
number of particles in the file.
/HELP -- Print useful message and exit.
OUTPUTS:
array -- A 3xNPart float array of positions. out
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: loadpos.pro,v 1.2 1996/04/22 16:25:04 mcraig Exp $
$Log: loadpos.pro,v $
Revision 1.2 1996/04/22 16:25:04 mcraig
Changed construction of Pos array to increase speed and decrease
memory usage. Also fixed bug in NPART keyword which led to number
of particles not being returned unless NPART was set to a defined variable.
Revision 1.1 1996/04/10 18:13:53 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/loadpos.pro)
NAME:
PLOT_SLICE
PURPOSE:
Plot a slice from an N-body computational box.
CATEGORY:
CALLING SEQUENCE:
plot_slice, pos
INPUTS:
pos -- Input positions, fltarr(3,nparticles) in
KEYWORD PARAMETERS:
CEN_SLICE -- (x,y,z) position of center of slice. in
Default is (.5, .5, .5)
WIDTH_SLICE -- (dx, dy, dz) width of slice. in
Default is (1, 1, 1).
VIEW_AXIS -- Axis along which to view the slice. in
Should be 'x', 'y', or 'z'.
Default is 'z'.
FRACTION -- Fraction of particles to plot. in
Default is 1.
UNITS -- A string containing the name of the in
units in which position will be plotted.
Used only for labelling axes.
Default is ''.
TITLE -- Title for the plot. in
Default is ''.
OUTPUTS:
COMMON BLOCKS:
SIDE EFFECTS:
Makes a plot on the current graphics device.
NOTES:
VIEW_AXIS should really be arbitrary, not restricted to x, y,
or z.
EXAMPLE:
cen = [.3, .4, .1] & width = [.1, .1, 1]
plot_slice, pos, CEN_SLICE = cen, WIDTH_SLICE = width
Plots 10% of the box in the X and Y directions, and all of it
along the Z direction.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: plot_slice.pro,v 1.1 1996/03/10 17:38:20 mcraig Exp $
$Log: plot_slice.pro,v $
Revision 1.1 1996/03/10 17:38:20 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/plot_slice.pro)
NAME:
PROFILE_HALO
PURPOSE:
Calculate radial profile (mass, density or rotation curve) for
a set of particles.
CATEGORY:
N-Body.
CALLING SEQUENCE:
PROFILE_HALO, Pos, Center, Rad, Profile
INPUTS:
Pos -- A two dimensional array fltarr(3,*) in
containing the particle positions.
Cen -- A vector [Cx, Cy, Cz] containing the in
x,y,z coordinates of the halo center.
KEYWORD PARAMETERS:
/DENSITY -- Construct density profile. Units are number
of particles per units volume (input Pos units
cubed).
/MASS -- Construct mass profile. Units are number of
particles.
/ROTATION -- Construct rotation curve (default). Units
are G=1, with mass in particle number and
distance in same units as Pos.
BIN_SIZE -- Number of particles in each bin. in
Default is 50. Ignored if USE_RAD is set.
USE_RAD -- Rather than requiring a certain number of in
particles per bin, set this to the radii at
which the profile should be calculated.
Overrides BIN_SIZE.
N_RAD_BINS - Rather than setting number of particles in in
bin or the radii at which to create the
profile, set the number of bins desired.
Bins will be of equal size from the
smallest to the largest radius in the input.
PERIOD -- Set to length of box if particles are drawn in
from a periodic box.
BIN_INDEX -- Set to a named variable to receive an array out
indicating which particles contributed to
each bin. The array is set up like the
reverse histogram array in HISTOGRAM, so that
BinIndex(BinIndex(i):BinIndex(i+1)-1) contains
the indices of the particles in bin i.
/HELP -- Print useful message and exit.
OUTPUTS:
Rad -- Set to a named variable to receive the out
positions at which the halo profile
is tabulated.
Profile -- The desired profile. See description under out
keyword parameters for each profile type
for units.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The profiles are are tabulated either:
i) at radii such that each radial bin contains the same number
of particles, if USE_RAD is NOT set, or
ii) at the radii specified by the keyword USE_RAD.
Distances are returned in the same units as were input in
Pos. Velocities are in units with distances measured as
in Pos, and G=1, and mass per particle = 1. Masses are
tabulated in terms of particle number.
EXAMPLE:
profile_halo,/DENSITY, pos, cen, rad, den, BIN=250
Construct a density profile for the set of particles contained
in pos (nonperiodic), with center cen. There are 250
particles per radial bin, with the bin radii in rad, and the
density at those radii in den.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: profile_halo.pro,v 1.3 1997/03/27 22:27:57 mcraig Exp mcraig $
$Log: profile_halo.pro,v $
Revision 1.3 1997/03/27 22:27:57 mcraig
Sped up calculation of profile when binning is by setting fixed number
of particles per bin. Now calls another routine to do the dirty work.
Revision 1.2 1997/03/04 18:38:56 mcraig
Added ability to bin either by number or to use user input bin boundaries.
Also added optional output of bin indices, so that the user can find out
which particles were in which bins.
Revision 1.1 1996/06/28 22:41:39 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/profile_halo.pro)
NAME:
RECENTER
PURPOSE:
Move origin for a set of particle positions to a particular center.
CATEGORY:
N-body
CALLING SEQUENCE:
NewPos = recenter( pos, center )
INPUTS:
Pos -- Positions to be recentered. in
Must be 3 X NPart array.
Center -- [x,y,z] position of new origin. in
KEYWORD PARAMETERS:
PERIOD -- Period of box if periodic. in
Default is zero (nonperiodic).
/HELP -- If set, print a useful message and exit.
OUTPUTS:
NewPos -- Positions shifted to new origin. out
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
If the positions are drawn from a periodic simulation, but the
positions passed to this routine are ont near the edge of the
box, it will be faster to treat the particles as nonperiodic.
EXAMPLE:
NewPos = recenter( pos, [.5,.5,.5], PERIOD=1.0 )
Will move the origin of particles in a box with period 1.0 to
the center of the box.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: recenter.pro,v 1.1 1997/03/06 22:59:38 mcraig Exp $
$Log: recenter.pro,v $
Revision 1.1 1997/03/06 22:59:38 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/recenter.pro)
NAME:
SELECT_BOX
PURPOSE:
Select particles in a specified rectangular box.
CATEGORY:
N-body
CALLING SEQUENCE:
indices = select_box( pos )
INPUTS:
pos -- Positions of particles. Two in
dimensional array 3xNPart
KEYWORD PARAMETERS:
CENTER -- Center of the region to be extracted, in
as a vector with three elements.
Default is [.5, .5, .5].
WIDTH -- Specify the width of that box in all in
three directions.
Default is [1., 1., 1.].
PERIOD -- Period of box. Set to zero if box is in
not periodic. Default is 0.
/HELP -- Print a useful help message and exit.
OUTPUTS:
indices -- The index array of those particles out
within the selected region.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
-- The PERIOD keyword will slow down execution. Only use it when
the particles are periodic AND the box you want to extract
wraps around the box.
-- Execution time falls by 1/3 when pos, center, and width are
all integers.
EXAMPLE:
index = select_box( pos, cen=[.2,.2,.2], width=[.1,.1,.1] )
plot, pos(0,index), pos(1,index), psym=3
will plot all those particles within a box of size .1
of the point .2,.2,.2, in z-projection.
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: select_box.pro,v 1.1 1996/04/15 19:33:57 mcraig Exp $
$Log: select_box.pro,v $
Revision 1.1 1996/04/15 19:33:57 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/select_box.pro)
NAME:
SELECT_NP
PURPOSE:
Select specified number of particles closest to specified
center.
CATEGORY:
N-body
CALLING SEQUENCE:
indices = select_np( pos )
INPUTS:
pos -- Positions of particles. Two in
dimensional array 3xNPart
KEYWORD PARAMETERS:
CENTER -- Center of the sphere to be extracted, in
as a vector with three elements.
Default is center of mass.
NPSELECT -- Number of particles to select. in
Default is 100.
PERIOD -- Period of box. Set to zero if box is in
not periodic. Default is 0.
GUESS_RADIUS -- Best guess as to the radius of the in
sphere about center which will
contain NPSELECT particles.
Default is half the maximum
separation in any coordinate of
any particle from center.
RADIUS -- Distance of most distant particle from out
center.
/HELP -- Print a useful help message and exit.
OUTPUTS:
indices -- The index array of those particles out
within the selected region.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
If the box is periodic, but the sphere conataining
NPSELCT does NOT wrap around
the box, it will be faster to NOT use the PERIOD keyword.
EXAMPLE:
index = select_np( pos, cen=[.2,.2,.2], radius=.1)
plot, pos(0,index), pos(1,index), psym=3
will plot all those particles within a distance of size .1
of the point .2,.2,.2, in z-projection.
LIBRARY FUNCTIONS CALLED:
select_sphere -- N-body (mcraig)
MODIFICATION HISTORY:
$Id: select_np.pro,v 1.1 1997/03/06 23:01:13 mcraig Exp $
$Log: select_np.pro,v $
Revision 1.1 1997/03/06 23:01:13 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/select_np.pro)
NAME:
SELECT_REGION
PURPOSE:
Select particles in a specified region.
CATEGORY:
N-body
CALLING SEQUENCE:
indices = select_region( pos )
INPUTS:
pos -- Positions of particles. Two in
dimensional array 3xNPart
KEYWORD PARAMETERS:
CENTER -- Center of the region to be extracted, in
as a vector with three elements.
Default is [.5, .5, .5].
WIDTH -- If selecting using rectangular box, in
specify the width of that box in all
three directions.
Default is [1., 1., 1.].
RADIUS -- If selecting a spherical region, in
the radius of the sphere. Default is
to use rectangular region.
PERIOD -- Period of box. Set to zero if box is in
not periodic. Default is 0.
/HELP -- Print a useful help message and exit.
OUTPUTS:
indices -- The index array of those particles out
within the selected region.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The WIDTH and RADIUS keywords are mutually exclusive.
EXAMPLE:
index = select_region( pos, cen=[.2,.2,.2], radius=.1 )
plot, pos(0,index), pos(1,index), psym=3
will plot all those particles within a distance of .1
of the point .2,.2,.2, in z-projection.
LIBRARY FUNCTIONS CALLED:
select_box
select_sphere
MODIFICATION HISTORY:
$Id: select_region.pro,v 1.1 1997/03/06 23:01:44 mcraig Exp $
$Log: select_region.pro,v $
Revision 1.1 1997/03/06 23:01:44 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/select_region.pro)
NAME:
SELECT_SPHERE
PURPOSE:
Select particles in a specified sphere.
CATEGORY:
N-body
CALLING SEQUENCE:
indices = select_sphere( pos )
INPUTS:
pos -- Positions of particles. Two in
dimensional array 3xNPart
KEYWORD PARAMETERS:
CENTER -- Center of the sphere to be extracted, in
as a vector with three elements.
Default is [.5, .5, .5].
RADIUS -- Radius of the sphere to be extracted. in
Default is .5.
PERIOD -- Period of box. Set to zero if box is in
not periodic. Default is 0.
/HELP -- Print a useful help message and exit.
OUTPUTS:
indices -- The index array of those particles out
within the selected region.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
-- If the box is periodic, but the sphere does NOT wrap around
the box, it will be faster to NOT use the PERIOD keyword.
-- If the positions, center, and radius are integers,
selection of the sphere will take 2/3 the time it does for
reals.
EXAMPLE:
index = select_sphere( pos, cen=[.2,.2,.2], radius=.1 )
plot, pos(0,index), pos(1,index), psym=3
will plot all those particles within a distance of .1
of the point .2,.2,.2, in z-projection.
LIBRARY FUNCTIONS CALLED:
select_box
MODIFICATION HISTORY:
$Id: select_sphere.pro,v 1.2 1997/03/06 23:03:11 mcraig Exp $
$Log: select_sphere.pro,v $
Revision 1.2 1997/03/06 23:03:11 mcraig
Corrected erroneous use of keyword_set. Added informational message abot
the radius, period and center.
Revision 1.1 1996/04/15 21:25:06 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/select_sphere.pro)
NAME:
VEL_DISP
PURPOSE:
Calculate three dimensional velocity dispersion for a set of
particles.
CATEGORY:
N-body
CALLING SEQUENCE:
dispersion = vel_disp( velocities )
INPUTS:
velocities -- array of velocities (nDim, nPart) to be in
analyzed.
KEYWORD PARAMETERS:
/ZERO_MEAN -- Set mean velocity to zero before calculating
dispersion.
/HELP -- Print a useful help message.
OUTPUTS:
dispersion -- A vector with nDim elements containing the out
dispersion in each direction.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: vel_disp.pro,v 1.1 1997/03/07 01:37:27 mcraig Exp $
$Log: vel_disp.pro,v $
Revision 1.1 1997/03/07 01:37:27 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/vel_disp.pro)
NAME:
VEL_STATS
PURPOSE:
Calculate velocity information in radial bins.
CATEGORY:
N-body/gen
CALLING SEQUENCE:
vel_stats, Pos, Vel, Radii
INPUTS:
Pos -- A 3 X NPart array of positions.
Vel -- A 3 X NPart array of velocities.
KEYWORD PARAMETERS:
CENTER -- Set to a 3 element vector to use as in
the center of the distribution.
Default is the center of mass.
HUBBLE -- Set to Hubble constant if the hubble in
flow should be added to velocities.
Default is 0 (no hubble flowed added).
NUM_PER_BIN - Set to number of particle per bin. in
Default is 50.
PERIOD -- If the box is periodic, set to the in
period. Default is 0 (no period).
AVG_RAD -- Set to named variable to receive the out
average radius of the particles in
each bin.
VDOTR -- Set to a named variable to receive out
the binned avergare of V dot R.
VROT -- Set to a named variable to receive out
the binned circular velocity.
VSIGMA -- Set to a named variable to receive out
the binned average of the velocity
dispersion.
/NO_MEAN -- Normally the mean velocity of all the
particles is subtracted off to remove
center of mass motion. Set this keyword
to prevent that subtraction.
OUTPUTS:
Radii -- Set to variable to receive the bin boundaries.
Most output is through keywords.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
MODIFICATION HISTORY:
$Id: vel_stats.pro,v 1.1 1997/03/07 01:38:00 mcraig Exp mcraig $
$Log: vel_stats.pro,v $
Revision 1.1 1997/03/07 01:38:00 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/vel_stats.pro)
NAME:
VIRIAL_RADIUS
PURPOSE:
Calculate virial radius for a set of particles.
CATEGORY:
N-body
CALLING SEQUENCE:
Rvir = virial_radius( pos )
INPUTS:
pos -- A 3xNPart array of particle positions. in
KEYWORD PARAMETERS:
CENTER -- Center to be used for calculating virial [in]
radius. Default is center of mass of
particles.
OVERDEN -- Mean overdensity at the virial radius. [in]
Default is 200.
BACKGROUND_DENSITY -- Background density in units [in]
of number of particles per unit volume.
Default is 262144.
PERIOD -- Period of the box if the simulation was in
periodic. Default is 0 (no period).
GUESS -- An initial guess for the virial radius. [in]
Default is .04. This is a dumb default.
INDICES -- Set to named variable to recieve vector of [out]
indices of those particles in Pos within
virial radius.
OUTPUTS:
Rvir -- Virial radius, in same units as particle out
positions.
COMMON BLOCKS:
SIDE EFFECTS:
NOTES:
The method here is to calculate the overdensity within a
sphere of radius GUESS, and declare the virial radius to be
the radius at which the mean overdensity falls to OVERDEN.
EXAMPLE:
LIBRARY FUNCTIONS CALLED:
center_mass -- N-body (mcraig)
profile_halo -- N-body (mcraig)
select_sphere -- N-body (mcraig)
MODIFICATION HISTORY:
$Id: virial_radius.pro,v 1.3 1997/03/07 01:38:42 mcraig Exp $
$Log: virial_radius.pro,v $
Revision 1.3 1997/03/07 01:38:42 mcraig
Removed print statements used for debugging.
Revision 1.2 1997/02/18 18:10:29 mcraig
Now uses faster method for binning particles for findign virial radius.
Revision 1.1 1997/02/18 18:09:00 mcraig
Initial revision
RELEASE:
$Name: $
(See /deep0/marc/idlshare/Nbody/general/virial_radius.pro)