[yt-svn] commit/yt-doc: 2 new changesets

Bitbucket commits-noreply at bitbucket.org
Thu Feb 2 04:41:18 PST 2012


2 new commits in yt-doc:


https://bitbucket.org/yt_analysis/yt-doc/changeset/62330646cbfa/
changeset:   62330646cbfa
user:        sskory
date:        2012-02-02 00:57:04
summary:     Modified the show_fields.py helper script to reflect the changes
to the fields and frontends, and updated the field_list.rst file
accordingly.
affected #:  2 files

diff -r ede551576313e186e9a4e84f8c48aecaf9993fad -r 62330646cbfa54b9c5dbd56a2425d7519990d724 helper_scripts/show_fields.py
--- a/helper_scripts/show_fields.py
+++ b/helper_scripts/show_fields.py
@@ -71,19 +71,24 @@
 print "Universal Field List"
 print "--------------------"
 print
-print_all_fields(FieldInfo._universal_field_list)
+print_all_fields(FieldInfo)
 
-print "Enzo Field List"
-print "---------------"
+print "Enzo-Specific Field List"
+print "------------------------"
 print
-print_all_fields(EnzoFieldInfo._field_list)
+print_all_fields(EnzoFieldInfo)
 
-print "Orion Field List"
-print "----------------"
+print "Orion-Specific Field List"
+print "-------------------------"
 print
-print_all_fields(OrionFieldInfo._field_list)
+print_all_fields(OrionFieldInfo)
 
-print "FLASH Field List"
-print "----------------"
+print "FLASH-Specific Field List"
+print "-------------------------"
 print
-print_all_fields(FLASHFieldInfo._field_list)
+print_all_fields(FLASHFieldInfo)
+
+print "Nyx-Specific Field List"
+print "--------------------------"
+print
+print_all_fields(NyxFieldInfo)
\ No newline at end of file


diff -r ede551576313e186e9a4e84f8c48aecaf9993fad -r 62330646cbfa54b9c5dbd56a2425d7519990d724 source/reference/field_list.rst
--- a/source/reference/field_list.rst
+++ b/source/reference/field_list.rst
@@ -1,4 +1,3 @@
-
 .. _field-list:
 
 Field List
@@ -157,6 +156,29 @@
 
 No source available.
 
+Baryon_Overdensity
+++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Baryon_Overdensity(field, data):
+      if data.pf.has_key('omega_baryon_now'):
+          omega_baryon_now = data.pf['omega_baryon_now']
+      else:
+          omega_baryon_now = 0.0441
+      return data['Density'] / (omega_baryon_now * rho_crit_now * 
+                                (data.pf['CosmologyHubbleConstantNow']**2) * 
+                                ((1+data.pf['CosmologyCurrentRedshift'])**3))
+  
+
+**Convert Function Source**
+
+No source available.
+
 CellMass
 ++++++++
 
@@ -315,6 +337,25 @@
 
 No source available.
 
+ComovingDensity
++++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ComovingDensity(field, data):
+      ef = (1.0 + data.pf.current_redshift)**3.0
+      return data["Density"]/ef
+  
+
+**Convert Function Source**
+
+No source available.
+
 Contours
 ++++++++
 
@@ -414,6 +455,26 @@
 
 No source available.
 
+DensityPerturbation
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+No source available.
+
 DiskAngle
 +++++++++
 
@@ -464,12 +525,14 @@
       ds = div_fac * data['dx'].flat[0]
       f  = data["x-velocity"][sl_right,1:-1,1:-1]/ds
       f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds
-      ds = div_fac * data['dy'].flat[0]
-      f += data["y-velocity"][1:-1,sl_right,1:-1]/ds
-      f -= data["y-velocity"][1:-1,sl_left ,1:-1]/ds
-      ds = div_fac * data['dz'].flat[0]
-      f += data["z-velocity"][1:-1,1:-1,sl_right]/ds
-      f -= data["z-velocity"][1:-1,1:-1,sl_left ]/ds
+      if data.pf.dimensionality > 1:
+          ds = div_fac * data['dy'].flat[0]
+          f += data["y-velocity"][1:-1,sl_right,1:-1]/ds
+          f -= data["y-velocity"][1:-1,sl_left ,1:-1]/ds
+      if data.pf.dimensionality > 2:
+          ds = div_fac * data['dz'].flat[0]
+          f += data["z-velocity"][1:-1,1:-1,sl_right]/ds
+          f -= data["z-velocity"][1:-1,1:-1,sl_left ]/ds
       new_field = na.zeros(data["x-velocity"].shape, dtype='float64')
       new_field[1:-1,1:-1,1:-1] = f
       return new_field
@@ -499,7 +562,7 @@
       M{sqrt(3pi/(16*G*rho))} or M{sqrt(3pi/(16G))*rho^-(1/2)}
       Note that we return in our natural units already
       """
-      return (3.0*pi/(16*G*data["Density"]))**(1./2.)
+      return (3.0*na.pi/(16*G*data["Density"]))**(1./2.)
   
 
 **Convert Function Source**
@@ -509,7 +572,7 @@
 Entropy
 +++++++
 
-   * Units: :math:`\rm{ergs}\/\rm{cm}^{2}`
+   * Units: :math:`\rm{ergs}\ \rm{cm}^{2}`
    * Particle Type: False
 
 **Field Source**
@@ -517,8 +580,8 @@
 .. code-block:: python
 
   def _Entropy(field, data):
-      return (kboltz/mh) * data["Temperature"] / \
-             (data["MeanMolecularWeight"] * data["Density"]**(2./3.))
+      return kboltz  * data["Temperature"] / \
+             (data["NumberDensity"]**(data.pf["Gamma"] - 1.0))
   
 
 **Convert Function Source**
@@ -678,10 +741,9 @@
 .. code-block:: python
 
   def _MagneticEnergy(field,data):
-      """WARNING WARNING WARNING: Units are not yet known to be
-      correct. Trust the magnitude of this quantity at your own
-      risk. However, it should just be a multiplicative offset from
-      reality...
+      """This assumes that your front end has provided Bx, By, Bz in
+      units of Gauss. If you use MKS, make sure to write your own
+      MagneticEnergy field to deal with non-unitary \mu_0.
       """
       return (data["Bx"]**2 + data["By"]**2 + data["Bz"]**2)/2.
   
@@ -760,26 +822,26 @@
 
 No source available.
 
-ParticleAge
+Overdensity
 +++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-  def _ParticleAge(field, data):
-      current_time = data.pf.current_time
-      return (current_time - data["creation_time"])
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _convertParticleAge(data):
-      return data.convert("years")
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _Convert_Overdensity(data):
+      return 1 / (rho_crit_now * data.pf.hubble_constant**2 * 
+                  (1+data.pf.current_redshift)**3)
   
 
 ParticleAngularMomentum
@@ -818,53 +880,59 @@
 
 No source available.
 
-ParticleMass
-++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-  def _ParticleMass(field, data):
-      particles = data["particle_mass"].astype('float64') * \
-                  just_one(data["CellVolumeCode"].ravel())
-      # Note that we mandate grid-type here, so this is okay
-      return particles
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _convertParticleMass(data):
-      return data.convert("Density")*(data.convert("cm")**3.0)
-  
-
-ParticleMassMsun
-++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-  def _ParticleMass(field, data):
-      particles = data["particle_mass"].astype('float64') * \
-                  just_one(data["CellVolumeCode"].ravel())
-      # Note that we mandate grid-type here, so this is okay
-      return particles
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _convertParticleMassMsun(data):
-      return data.convert("Density")*((data.convert("cm")**3.0)/1.989e33)
-  
+ParticleAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumX(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumY(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumZ(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
 
 ParticleRadius
 ++++++++++++++
@@ -1142,6 +1210,96 @@
       return data.convert("mpc")/1e5
   
 
+ParticleSpecificAngularMomentumX
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumX(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      y = data["particle_position_y"] - center[1]
+      z = data["particle_position_z"] - center[2]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      return yv*z - zv*y
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumY
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumY(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      z = data["particle_position_z"] - center[2]
+      xv = data["particle_velocity_x"] - bv[0]
+      zv = data["particle_velocity_z"] - bv[2]
+      return -(xv*z - zv*x)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumZ
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumZ(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      y = data["particle_position_y"] - center[1]
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      return xv*y - yv*x
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
 ParticleVelocityMagnitude
 +++++++++++++++++++++++++
 
@@ -1757,6 +1915,24 @@
 
 No source available.
 
+TotalMass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
 TotalMassMsun
 +++++++++++++
 
@@ -1803,6 +1979,103 @@
 
 No source available.
 
+VorticitySquared
+++++++++++++++++
+
+   * Units: :math:`\rm{s}^{-2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VorticitySquared(field, data):
+      mylog.debug("Generating vorticity on %s", data)
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      new_field = na.zeros(data["x-velocity"].shape)
+      dvzdy = (data["z-velocity"][1:-1,sl_right,1:-1] -
+               data["z-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      dvydz = (data["y-velocity"][1:-1,1:-1,sl_right] -
+               data["y-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvzdy - dvydz)**2.0
+      del dvzdy, dvydz
+      dvxdz = (data["x-velocity"][1:-1,1:-1,sl_right] -
+               data["x-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      dvzdx = (data["z-velocity"][sl_right,1:-1,1:-1] -
+               data["z-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvxdz - dvzdx)**2.0
+      del dvxdz, dvzdx
+      dvydx = (data["y-velocity"][sl_right,1:-1,1:-1] -
+               data["y-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      dvxdy = (data["x-velocity"][1:-1,sl_right,1:-1] -
+               data["x-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvydx - dvxdy)**2.0
+      del dvydx, dvxdy
+      new_field = na.abs(new_field)
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertVorticitySquared(data):
+      return data.convert("cm")**-2.0
+  
+
+WeakLensingConvergence
+++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertConvergence(data):
+      if not data.pf.parameters.has_key('cosmology_calculator'):
+          data.pf.parameters['cosmology_calculator'] = Cosmology(
+              HubbleConstantNow=(100.*data.pf.hubble_constant),
+              OmegaMatterNow=data.pf.omega_matter, OmegaLambdaNow=data.pf.omega_lambda)
+      # observer to lens
+      DL = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.current_redshift)
+      # observer to source
+      DS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.parameters['lensing_source_redshift'])
+      # lens to source
+      DLS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.current_redshift, data.pf.parameters['lensing_source_redshift'])
+      return (((DL * DLS) / DS) * (1.5e14 * data.pf.omega_matter * 
+                                  (data.pf.hubble_constant / speed_of_light_cgs)**2 *
+                                  (1 + data.pf.current_redshift)))
+  
+
 XRayEmissivity
 ++++++++++++++
 
@@ -1825,31 +2098,6 @@
       return 2.168e60
   
 
-creation_time
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
 dx
 ++
 
@@ -1886,31 +2134,6 @@
 
 No source available.
 
-dynamical_time
-++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
 dz
 ++
 
@@ -1929,31 +2152,6 @@
 
 No source available.
 
-metallicity_fraction
-++++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
 particle_density
 ++++++++++++++++
 
@@ -1985,247 +2183,6 @@
       return data.convert("Density")
   
 
-particle_index
-++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _convRetainInt(data):
-      return 1
-  
-
-particle_mass
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_position_x
-+++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_position_y
-+++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_position_z
-+++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_type
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_velocity_x
-+++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-      def _convert_p_vel(data):
-          return data.convert("%s-velocity" % ax)
-  
-
-particle_velocity_y
-+++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-      def _convert_p_vel(data):
-          return data.convert("%s-velocity" % ax)
-  
-
-particle_velocity_z
-+++++++++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _Particles(field, data):
-          io = data.hierarchy.io
-          if not data.NumberOfParticles > 0:
-              return na.array([], dtype=dtype)
-          try:
-              return io._read_data_set(data, p_field).astype(dtype)
-          except io._read_exception:
-              pass
-          # This is bad.  But it's the best idea I have right now.
-          return data._read_data(p_field.replace("_"," ")).astype(dtype)
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-      def _convert_p_vel(data):
-          return data.convert("%s-velocity" % ax)
-  
-
 tempContours
 ++++++++++++
 
@@ -2303,8 +2260,144 @@
 
 No source available.
 
-Enzo Field List
----------------
+Enzo-Specific Field List
+------------------------
+
+AbsDivV
++++++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AbsDivV(field, data):
+      return na.abs(data['DivV'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentum
++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumX
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumX(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumY
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumY(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumZ
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumZ(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AveragedDensity
++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AveragedDensity(field, data):
+      nx, ny, nz = data["Density"].shape
+      new_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      weight_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      i_i, j_i, k_i = na.mgrid[0:3,0:3,0:3]
+      for i,j,k in zip(i_i.ravel(),j_i.ravel(),k_i.ravel()):
+          sl = [slice(i,nx-(2-i)),slice(j,ny-(2-j)),slice(k,nz-(2-k))]
+          new_field += data["Density"][sl] * data["CellMass"][sl]
+          weight_field += data["CellMass"][sl]
+      # Now some fancy footwork
+      new_field2 = na.zeros((nx,ny,nz))
+      new_field2[1:-1,1:-1,1:-1] = new_field/weight_field
+      return new_field2
+  
+
+**Convert Function Source**
+
+No source available.
 
 Baryon_Overdensity
 ++++++++++++++++++
@@ -2316,27 +2409,23 @@
 .. code-block:: python
 
   def _Baryon_Overdensity(field, data):
-      return data['Density']
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _Convert_Baryon_Overdensity(data):
-      if data.pf.parameters.has_key('omega_baryon_now'):
-          omega_baryon_now = data.pf.parameters['omega_baryon_now']
+      if data.pf.has_key('omega_baryon_now'):
+          omega_baryon_now = data.pf['omega_baryon_now']
       else:
           omega_baryon_now = 0.0441
-      return 1 / (omega_baryon_now * rho_crit_now * 
-                  (data.pf['CosmologyHubbleConstantNow']**2) * 
-                  ((1+data.pf['CosmologyCurrentRedshift'])**3))
-  
+      return data['Density'] / (omega_baryon_now * rho_crit_now * 
+                                (data.pf['CosmologyHubbleConstantNow']**2) * 
+                                ((1+data.pf['CosmologyCurrentRedshift'])**3))
+  
+
+**Convert Function Source**
+
+No source available.
 
 Bmag
 ++++
 
-   * Units: :math:`\mathrm{Gau\ss}`
+   * Units: :math:`\mathrm{Gauss}`
    * Particle Type: False
 
 **Field Source**
@@ -2353,33 +2442,161 @@
 
 No source available.
 
-Bx
-++
-
-   * Units: :math:`\mathrm{Gau\ss}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-By
-++
-
-   * Units: :math:`\mathrm{Gau\ss}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-Bz
-++
-
-   * Units: :math:`\mathrm{Gau\ss}`
-   * Particle Type: False
-
-**Field Source**
+CellMass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMassCode
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMassCode(field, data):
+      return data["Density"] * data["CellVolumeCode"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassCode(data):
+      return 1.0/data.convert("Density")
+  
+
+CellMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+CellVolume
+++++++++++
+
+   * Units: :math:`\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeCGS(data):
+      return data.convert("cm")**3.0
+  
+
+CellVolumeCode
+++++++++++++++
+
+   * Units: :math:`\rm{BoxVolume}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellVolumeMpc
++++++++++++++
+
+   * Units: :math:`\rm{Mpc}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeMpc(data):
+      return data.convert("mpc")**3.0
+  
+
+CellsPerBin
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
 
 No source available.
 
@@ -2393,7 +2610,7 @@
 
 .. code-block:: python
 
-  def _ComovingDensity(field,data):
+  def _ComovingDensity(field, data):
       ef = (1.0 + data.pf.current_redshift)**3.0
       return data["Density"]/ef
   
@@ -2414,7 +2631,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2433,7 +2650,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2452,7 +2669,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2471,7 +2688,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2490,7 +2707,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2509,7 +2726,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2528,7 +2745,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2547,7 +2764,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2566,7 +2783,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2585,7 +2802,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2604,7 +2821,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2623,7 +2840,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2642,7 +2859,7 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
+      return data[sp] / ef
   
 
 **Convert Function Source**
@@ -2661,39 +2878,109 @@
   def _SpeciesComovingDensity(field, data):
       sp = field.name.split("_")[0] + "_Density"
       ef = (1.0 + data.pf.current_redshift)**3.0
-      return data[sp]/ef
-  
-
-**Convert Function Source**
-
-No source available.
-
-Cooling_Time
-++++++++++++
-
-   * Units: :math:`\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-  def _Cooling_Time(field, data):
-      return data["Cooling_Time"]
-  
-
-**Convert Function Source**
-
-No source available.
-
-DII_Density
-+++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
+      return data[sp] / ef
+  
+
+**Convert Function Source**
+
+No source available.
+
+Contours
+++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+CourantTimeStep
++++++++++++++++
+
+   * Units: :math:`$\rm{s}$`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CourantTimeStep(field, data):
+      t1 = data['dx'] / (
+          data["SoundSpeed"] + \
+          abs(data["x-velocity"]))
+      t2 = data['dy'] / (
+          data["SoundSpeed"] + \
+          abs(data["y-velocity"]))
+      t3 = data['dz'] / (
+          data["SoundSpeed"] + \
+          abs(data["z-velocity"]))
+      return na.minimum(na.minimum(t1,t2),t3)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCourantTimeStep(data):
+      # SoundSpeed and z-velocity are in cm/s, dx is in code
+      return data.convert("cm")
+  
+
+CuttingPlaneVelocityX
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityX(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(x_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
+
+CuttingPlaneVelocityY
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityY(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(y_vec, v_vec)
+  
+
+**Convert Function Source**
 
 No source available.
 
@@ -2708,12 +2995,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+DII_Mass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+DII_MassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 DII_NumberDensity
 +++++++++++++++++
@@ -2727,7 +3056,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -2738,17 +3067,6 @@
       return 1.0/mh
   
 
-DI_Density
-++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 DI_Fraction
 +++++++++++
 
@@ -2760,12 +3078,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+DI_Mass
++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+DI_MassMsun
++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 DI_NumberDensity
 ++++++++++++++++
@@ -2779,7 +3139,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -2790,34 +3150,157 @@
       return 1.0/mh
   
 
-Dark_Matter_Density
+Dark_Matter_Mass
+++++++++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Dark_Matter_Mass(field, data):
+      return data['Dark_Matter_Density'] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Dark_Matter_MassMsun
+++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Dark_Matter_Mass(field, data):
+      return data['Dark_Matter_Density'] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+DensityPerturbation
 +++++++++++++++++++
 
    * Particle Type: False
 
 **Field Source**
 
-No source available.
-
-Density
-+++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-Electron_Density
-++++++++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DiskAngle
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DiskAngle(field, data):
+      # We make both r_vec and h_vec into unit vectors
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      r_vec = r_vec/na.sqrt((r_vec**2.0).sum(axis=0))
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      dp = r_vec[0,:] * h_vec[0] \
+         + r_vec[1,:] * h_vec[1] \
+         + r_vec[2,:] * h_vec[2]
+      return na.arccos(dp)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DivV
+++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DivV(field, data):
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      ds = div_fac * data['dx'].flat[0]
+      f  = data["x-velocity"][sl_right,1:-1,1:-1]/ds
+      f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds
+      if data.pf.dimensionality > 1:
+          ds = div_fac * data['dy'].flat[0]
+          f += data["y-velocity"][1:-1,sl_right,1:-1]/ds
+          f -= data["y-velocity"][1:-1,sl_left ,1:-1]/ds
+      if data.pf.dimensionality > 2:
+          ds = div_fac * data['dz'].flat[0]
+          f += data["z-velocity"][1:-1,1:-1,sl_right]/ds
+          f -= data["z-velocity"][1:-1,1:-1,sl_left ]/ds
+      new_field = na.zeros(data["x-velocity"].shape, dtype='float64')
+      new_field[1:-1,1:-1,1:-1] = f
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDivV(data):
+      return data.convert("cm")**-1.0
+  
+
+DynamicalTime
++++++++++++++
+
+   * Units: :math:`\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DynamicalTime(field, data):
+      """
+      The formulation for the dynamical time is:
+      M{sqrt(3pi/(16*G*rho))} or M{sqrt(3pi/(16G))*rho^-(1/2)}
+      Note that we return in our natural units already
+      """
+      return (3.0*na.pi/(16*G*data["Density"]))**(1./2.)
+  
+
+**Convert Function Source**
 
 No source available.
 
@@ -2832,12 +3315,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Electron_Mass
++++++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Electron_MassMsun
++++++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 Electron_NumberDensity
 ++++++++++++++++++++++
@@ -2851,7 +3376,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -2862,8 +3387,27 @@
       return 1.0/mh
   
 
-GasEnergy
-+++++++++
+Entropy
++++++++
+
+   * Units: :math:`\rm{ergs}\ \rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Entropy(field, data):
+      return kboltz  * data["Temperature"] / \
+             (data["NumberDensity"]**(data.pf["Gamma"] - 1.0))
+  
+
+**Convert Function Source**
+
+No source available.
+
+Gas_Energy
+++++++++++
 
    * Units: :math:`\rm{ergs}/\rm{g}`
    * Particle Type: False
@@ -2872,8 +3416,8 @@
 
 .. code-block:: python
 
-  def _GasEnergy(field, data):
-      return data["Gas_Energy"] / _convertEnergy(data)
+  def _Gas_Energy(field, data):
+      return data["GasEnergy"] / _convertEnergy(data)
   
 
 **Convert Function Source**
@@ -2884,36 +3428,37 @@
       return data.convert("x-velocity")**2.0
   
 
-Gas_Energy
-++++++++++
-
-   * Units: :math:`\rm{ergs}/\rm{g}`
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-  def _Gas_Energy(field, data):
-      return data["GasEnergy"] / _convertEnergy(data)
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _convertEnergy(data):
-      return data.convert("x-velocity")**2.0
-  
-
-H2II_Density
-++++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
+GridIndices
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridIndices(field, data):
+      return na.ones(data["Ones"].shape)*(data.id-data._id_offset)
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridLevel
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridLevel(field, data):
+      return na.ones(data.ActiveDimensions)*(data.Level)
+  
+
+**Convert Function Source**
 
 No source available.
 
@@ -2928,12 +3473,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+H2II_Mass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+H2II_MassMsun
++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 H2II_NumberDensity
 ++++++++++++++++++
@@ -2947,7 +3534,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -2958,17 +3545,6 @@
       return 1.0/mh
   
 
-H2I_Density
-+++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 H2I_Fraction
 ++++++++++++
 
@@ -2980,12 +3556,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+H2I_Mass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+H2I_MassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 H2I_NumberDensity
 +++++++++++++++++
@@ -2999,7 +3617,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3010,17 +3628,6 @@
       return 1.0/mh
   
 
-HDI_Density
-+++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HDI_Fraction
 ++++++++++++
 
@@ -3032,12 +3639,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HDI_Mass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HDI_MassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HDI_NumberDensity
 +++++++++++++++++
@@ -3051,7 +3700,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3062,17 +3711,6 @@
       return 1.0/mh
   
 
-HII_Density
-+++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HII_Fraction
 ++++++++++++
 
@@ -3084,12 +3722,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HII_Mass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HII_MassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HII_NumberDensity
 +++++++++++++++++
@@ -3103,7 +3783,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3114,17 +3794,6 @@
       return 1.0/mh
   
 
-HI_Density
-++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HI_Fraction
 +++++++++++
 
@@ -3136,12 +3805,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HI_Mass
++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HI_MassMsun
++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HI_NumberDensity
 ++++++++++++++++
@@ -3155,7 +3866,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3166,17 +3877,6 @@
       return 1.0/mh
   
 
-HM_Density
-++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HM_Fraction
 +++++++++++
 
@@ -3188,12 +3888,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HM_Mass
++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HM_MassMsun
++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HM_NumberDensity
 ++++++++++++++++
@@ -3207,7 +3949,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3218,17 +3960,6 @@
       return 1.0/mh
   
 
-HeIII_Density
-+++++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HeIII_Fraction
 ++++++++++++++
 
@@ -3240,12 +3971,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HeIII_Mass
+++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HeIII_MassMsun
+++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HeIII_NumberDensity
 +++++++++++++++++++
@@ -3259,7 +4032,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3270,17 +4043,6 @@
       return 1.0/mh
   
 
-HeII_Density
-++++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HeII_Fraction
 +++++++++++++
 
@@ -3292,12 +4054,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HeII_Mass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HeII_MassMsun
++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HeII_NumberDensity
 ++++++++++++++++++
@@ -3311,7 +4115,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3322,17 +4126,6 @@
       return 1.0/mh
   
 
-HeI_Density
-+++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
 HeI_Fraction
 ++++++++++++
 
@@ -3344,12 +4137,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HeI_Mass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+HeI_MassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 HeI_NumberDensity
 +++++++++++++++++
@@ -3363,7 +4198,7 @@
   def _SpeciesNumberDensity(field, data):
       species = field.name.split("_")[0]
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/_speciesMass[species]
+      return data[sp] / _speciesMass[species]
   
 
 **Convert Function Source**
@@ -3374,6 +4209,74 @@
       return 1.0/mh
   
 
+Height
+++++++
+
+   * Units: :math:`cm`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeight(data):
+      return data.convert("cm")
+  
+
+HeightAU
+++++++++
+
+   * Units: :math:`AU`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeightAU(data):
+      return data.convert("au")
+  
+
 IsStarParticle
 ++++++++++++++
 
@@ -3392,6 +4295,29 @@
 
 No source available.
 
+JeansMassMsun
++++++++++++++
+
+   * Units: :math:`\rm{M_{\odot}}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _JeansMassMsun(field,data):
+      MJ_constant = (((5*kboltz)/(G*mh))**(1.5)) * \
+      (3/(4*3.1415926535897931))**(0.5) / 1.989e33
+  
+      return (MJ_constant *
+              ((data["Temperature"]/data["MeanMolecularWeight"])**(1.5)) *
+              (data["Density"]**(-0.5)))
+  
+
+**Convert Function Source**
+
+No source available.
+
 KineticEnergy
 +++++++++++++
 
@@ -3412,14 +4338,77 @@
 
 No source available.
 
-Metal_Density
-+++++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
+MachNumber
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return data["VelocityMagnitude"] / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+MagneticEnergy
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MagneticEnergy(field,data):
+      """This assumes that your front end has provided Bx, By, Bz in
+      units of Gauss. If you use MKS, make sure to write your own
+      MagneticEnergy field to deal with non-unitary \mu_0.
+      """
+      return (data["Bx"]**2 + data["By"]**2 + data["Bz"]**2)/2.
+  
+
+**Convert Function Source**
+
+No source available.
+
+Matter_Density
+++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm^3}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+MeanMolecularWeight
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MeanMolecularWeight(field,data):
+      return (data["Density"] / (mh *data["NumberDensity"]))
+  
+
+**Convert Function Source**
 
 No source available.
 
@@ -3434,12 +4423,54 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Metal_Mass
+++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Metal_MassMsun
+++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
 
 Metallicity
 +++++++++++
@@ -3533,6 +4564,41 @@
       return 1.0/mh
   
 
+Ones
+++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+OnesOverDx
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _OnesOverDx(field, data):
+      return na.ones(data["Ones"].shape,
+                     dtype=data["Density"].dtype)/data['dx']
+  
+
+**Convert Function Source**
+
+No source available.
+
 Overdensity
 +++++++++++
 
@@ -3542,23 +4608,566 @@
 
 .. code-block:: python
 
-  def Overdensity(field,data):
-      return (data['Density'] + data['Dark_Matter_Density']) / \
-          (rho_crit_now * (data.pf.hubble_constant**2) * ((1+data.pf.current_redshift)**3))
-  
-
-**Convert Function Source**
-
-No source available.
-
-PreShock_Density
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _Convert_Overdensity(data):
+      return 1 / (rho_crit_now * data.pf.hubble_constant**2 * 
+                  (1+data.pf.current_redshift)**3)
+  
+
+ParticleAge
++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAge(field, data):
+      current_time = data.pf.current_time
+      return (current_time - data["creation_time"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertParticleAge(data):
+      return data.convert("years")
+  
+
+ParticleAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentum(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumMSUNKMSMPC(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentumKMSMPC"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumX(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumY(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumZ(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleMass
+++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleMass(field, data):
+      particles = data["particle_mass"].astype('float64') * \
+                  just_one(data["CellVolumeCode"].ravel())
+      # Note that we mandate grid-type here, so this is okay
+      return particles
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertParticleMass(data):
+      return data.convert("Density")*(data.convert("cm")**3.0)
+  
+
+ParticleMassMsun
 ++++++++++++++++
 
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Projected Units: :math:`\rm{g}/\rm{cm}^2`
-   * Particle Type: False
-
-**Field Source**
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleMass(field, data):
+      particles = data["particle_mass"].astype('float64') * \
+                  just_one(data["CellVolumeCode"].ravel())
+      # Note that we mandate grid-type here, so this is okay
+      return particles
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertParticleMassMsun(data):
+      return data.convert("Density")*((data.convert("cm")**3.0)/1.989e33)
+  
+
+ParticleRadius
+++++++++++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+ParticleRadiusAU
+++++++++++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+ParticleRadiusCode
+++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleRadiusMpc
++++++++++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+ParticleRadiuskpc
++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuskpch
+++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuspc
+++++++++++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+ParticleSpecificAngularMomentum
++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+ParticleSpecificAngularMomentumX
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumX(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      y = data["particle_position_y"] - center[1]
+      z = data["particle_position_z"] - center[2]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      return yv*z - zv*y
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumY
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumY(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      z = data["particle_position_z"] - center[2]
+      xv = data["particle_velocity_x"] - bv[0]
+      zv = data["particle_velocity_z"] - bv[2]
+      return -(xv*z - zv*x)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumZ
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumZ(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      y = data["particle_position_y"] - center[1]
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      return xv*y - yv*x
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleVelocityMagnitude
++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleVelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["particle_velocity_x"]-bulk_velocity[0])**2.0 + \
+               (data["particle_velocity_y"]-bulk_velocity[1])**2.0 + \
+               (data["particle_velocity_z"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
 
 No source available.
 
@@ -3573,12 +5182,587 @@
 
   def _SpeciesFraction(field, data):
       sp = field.name.split("_")[0] + "_Density"
-      return data[sp]/data["Density"]
-  
-
-**Convert Function Source**
-
-No source available.
+      return data[sp] / data["Density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+PreShock_Mass
++++++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+PreShock_MassMsun
++++++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpeciesMass(field, data):
+      sp = field.name.split("_")[0] + "_Density"
+      return data[sp] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+Pressure
+++++++++
+
+   * Units: :math:`\rm{dyne}/\rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Pressure(field, data):
+      """M{(Gamma-1.0)*rho*E}"""
+      return (data.pf["Gamma"] - 1.0) * \
+             data["Density"] * data["ThermalEnergy"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialMachNumber
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialMachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return na.abs(data["RadialVelocity"]) / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocity
+++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityABS
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityKMS
++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+RadialVelocityKMSABS
+++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+Radius
+++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+RadiusAU
+++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+RadiusCode
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadiusMpc
++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+Radiuskpc
++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuskpch
+++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuspc
+++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+SZKinetic
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZKinetic(field, data):
+      vel_axis = data.get_field_parameter('axis')
+      if vel_axis > 2:
+          raise NeedsParameter(['axis'])
+      vel = data["%s-velocity" % ({0:'x',1:'y',2:'z'}[vel_axis])]
+      return (vel*data["Density"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZKinetic(data):
+      return 0.88*((sigma_thompson/mh)/clight)
+  
+
+SZY
++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZY(field, data):
+      return (data["Density"]*data["Temperature"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZY(data):
+      conv = (0.88/mh) * (kboltz)/(me * clight*clight) * sigma_thompson
+      return conv
+  
+
+SoundSpeed
+++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SoundSpeed(field, data):
+      if data.pf["EOSType"] == 1:
+          return na.ones(data["Density"].shape, dtype='float64') * \
+                  data.pf["EOSSoundSpeed"]
+      return ( data.pf["Gamma"]*data["Pressure"] / \
+               data["Density"] )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+SpecificAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+SpecificAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumX(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return yv*rv[2,:] - zv*rv[1,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumY(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return -(xv*rv[2,:] - zv*rv[0,:])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumZ(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return xv*rv[1,:] - yv*rv[0,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
 
 StarAgeYears
 ++++++++++++
@@ -3647,6 +5831,28 @@
       return data.pf.time_units['years']
   
 
+StarMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _StarMass(field,data):
+      return data["star_density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
 StarMetallicity
 +++++++++++++++
 
@@ -3669,20 +5875,46 @@
       return 49.0196 # 1 / 0.0204
   
 
-Temperature
-+++++++++++
-
-   * Units: :math:`\rm{K}`
-   * Particle Type: False
-
-**Field Source**
+TangentialOverVelocityMagnitude
++++++++++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialOverVelocityMagnitude(field, data):
+      return na.abs(data["TangentialVelocity"])/na.abs(data["VelocityMagnitude"])
+  
+
+**Convert Function Source**
+
+No source available.
+
+TangentialVelocity
+++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialVelocity(field, data):
+      return na.sqrt(data["VelocityMagnitude"]**2.0
+                   - data["RadialVelocity"]**2.0)
+  
+
+**Convert Function Source**
 
 No source available.
 
 ThermalEnergy
 +++++++++++++
 
-   * Units: :math:`\rm{ergs}/\rm{cm^3}`
+   * Units: :math:`\rm{ergs}/\rm{g}`
    * Particle Type: False
 
 **Field Source**
@@ -3691,12 +5923,12 @@
 
   def _ThermalEnergy(field, data):
       if data.pf["HydroMethod"] == 2:
-          return data["Total_Energy"]
+          return data["TotalEnergy"]
       else:
           if data.pf["DualEnergyFormalism"]:
               return data["GasEnergy"]
           else:
-              return data["Total_Energy"] - 0.5*(
+              return data["TotalEnergy"] - 0.5*(
                      data["x-velocity"]**2.0
                    + data["y-velocity"]**2.0
                    + data["z-velocity"]**2.0 )
@@ -3706,8 +5938,48 @@
 
 No source available.
 
-TotalEnergy
-+++++++++++
+TotalMass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalMassMsun
++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+Total_Energy
+++++++++++++
 
    * Units: :math:`\rm{ergs}/\rm{g}`
    * Particle Type: False
@@ -3716,8 +5988,8 @@
 
 .. code-block:: python
 
-  def _TotalEnergy(field, data):
-      return data["Total_Energy"] / _convertEnergy(data)
+  def _Total_Energy(field, data):
+      return data["TotalEnergy"] / _convertEnergy(data)
   
 
 **Convert Function Source**
@@ -3728,27 +6000,289 @@
       return data.convert("x-velocity")**2.0
   
 
-Total_Energy
-++++++++++++
-
-   * Units: :math:`\rm{ergs}/\rm{g}`
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-  def _Total_Energy(field, data):
-      return data["TotalEnergy"] / _convertEnergy(data)
-  
-
-**Convert Function Source**
-
-.. code-block:: python
-
-  def _convertEnergy(data):
-      return data.convert("x-velocity")**2.0
-  
+VelocityMagnitude
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["x-velocity"]-bulk_velocity[0])**2.0 + \
+               (data["y-velocity"]-bulk_velocity[1])**2.0 + \
+               (data["z-velocity"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+VorticitySquared
+++++++++++++++++
+
+   * Units: :math:`\rm{s}^{-2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VorticitySquared(field, data):
+      mylog.debug("Generating vorticity on %s", data)
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      new_field = na.zeros(data["x-velocity"].shape)
+      dvzdy = (data["z-velocity"][1:-1,sl_right,1:-1] -
+               data["z-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      dvydz = (data["y-velocity"][1:-1,1:-1,sl_right] -
+               data["y-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvzdy - dvydz)**2.0
+      del dvzdy, dvydz
+      dvxdz = (data["x-velocity"][1:-1,1:-1,sl_right] -
+               data["x-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      dvzdx = (data["z-velocity"][sl_right,1:-1,1:-1] -
+               data["z-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvxdz - dvzdx)**2.0
+      del dvxdz, dvzdx
+      dvydx = (data["y-velocity"][sl_right,1:-1,1:-1] -
+               data["y-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      dvxdy = (data["x-velocity"][1:-1,sl_right,1:-1] -
+               data["x-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvydx - dvxdy)**2.0
+      del dvydx, dvxdy
+      new_field = na.abs(new_field)
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertVorticitySquared(data):
+      return data.convert("cm")**-2.0
+  
+
+WeakLensingConvergence
+++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertConvergence(data):
+      if not data.pf.parameters.has_key('cosmology_calculator'):
+          data.pf.parameters['cosmology_calculator'] = Cosmology(
+              HubbleConstantNow=(100.*data.pf.hubble_constant),
+              OmegaMatterNow=data.pf.omega_matter, OmegaLambdaNow=data.pf.omega_lambda)
+      # observer to lens
+      DL = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.current_redshift)
+      # observer to source
+      DS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.parameters['lensing_source_redshift'])
+      # lens to source
+      DLS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.current_redshift, data.pf.parameters['lensing_source_redshift'])
+      return (((DL * DLS) / DS) * (1.5e14 * data.pf.omega_matter * 
+                                  (data.pf.hubble_constant / speed_of_light_cgs)**2 *
+                                  (1 + data.pf.current_redshift)))
+  
+
+XRayEmissivity
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _XRayEmissivity(field, data):
+      return ((data["Density"].astype('float64')**2.0) \
+              *data["Temperature"]**0.5)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertXRayEmissivity(data):
+      return 2.168e60
+  
+
+cic_particle_velocity_x
++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _cic_particle_field(field, data):
+      """
+      Create a grid field for particle quantities weighted by particle mass, 
+      using cloud-in-cell deposit.
+      """
+      particle_field = field.name[4:]
+      top = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return top
+      particle_field_data = data[particle_field] * data['particle_mass']
+      amr_utils.CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                             data["particle_position_y"].astype(na.float64),
+                             data["particle_position_z"].astype(na.float64),
+                             particle_field_data.astype(na.float32),
+                             na.int64(data.NumberOfParticles),
+                             top, na.array(data.LeftEdge).astype(na.float64),
+                             na.array(data.ActiveDimensions).astype(na.int32), 
+                             na.float64(data['dx']))
+      del particle_field_data
+  
+      bottom = na.zeros(data.ActiveDimensions, dtype='float32')
+      amr_utils.CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                             data["particle_position_y"].astype(na.float64),
+                             data["particle_position_z"].astype(na.float64),
+                             data["particle_mass"].astype(na.float32),
+                             na.int64(data.NumberOfParticles),
+                             bottom, na.array(data.LeftEdge).astype(na.float64),
+                             na.array(data.ActiveDimensions).astype(na.int32), 
+                             na.float64(data['dx']))
+      top[bottom == 0] = 0.0
+      bnz = bottom.nonzero()
+      top[bnz] /= bottom[bnz]
+      return top
+  
+
+**Convert Function Source**
+
+No source available.
+
+cic_particle_velocity_y
++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _cic_particle_field(field, data):
+      """
+      Create a grid field for particle quantities weighted by particle mass, 
+      using cloud-in-cell deposit.
+      """
+      particle_field = field.name[4:]
+      top = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return top
+      particle_field_data = data[particle_field] * data['particle_mass']
+      amr_utils.CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                             data["particle_position_y"].astype(na.float64),
+                             data["particle_position_z"].astype(na.float64),
+                             particle_field_data.astype(na.float32),
+                             na.int64(data.NumberOfParticles),
+                             top, na.array(data.LeftEdge).astype(na.float64),
+                             na.array(data.ActiveDimensions).astype(na.int32), 
+                             na.float64(data['dx']))
+      del particle_field_data
+  
+      bottom = na.zeros(data.ActiveDimensions, dtype='float32')
+      amr_utils.CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                             data["particle_position_y"].astype(na.float64),
+                             data["particle_position_z"].astype(na.float64),
+                             data["particle_mass"].astype(na.float32),
+                             na.int64(data.NumberOfParticles),
+                             bottom, na.array(data.LeftEdge).astype(na.float64),
+                             na.array(data.ActiveDimensions).astype(na.int32), 
+                             na.float64(data['dx']))
+      top[bottom == 0] = 0.0
+      bnz = bottom.nonzero()
+      top[bnz] /= bottom[bnz]
+      return top
+  
+
+**Convert Function Source**
+
+No source available.
+
+cic_particle_velocity_z
++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _cic_particle_field(field, data):
+      """
+      Create a grid field for particle quantities weighted by particle mass, 
+      using cloud-in-cell deposit.
+      """
+      particle_field = field.name[4:]
+      top = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return top
+      particle_field_data = data[particle_field] * data['particle_mass']
+      amr_utils.CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                             data["particle_position_y"].astype(na.float64),
+                             data["particle_position_z"].astype(na.float64),
+                             particle_field_data.astype(na.float32),
+                             na.int64(data.NumberOfParticles),
+                             top, na.array(data.LeftEdge).astype(na.float64),
+                             na.array(data.ActiveDimensions).astype(na.int32), 
+                             na.float64(data['dx']))
+      del particle_field_data
+  
+      bottom = na.zeros(data.ActiveDimensions, dtype='float32')
+      amr_utils.CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                             data["particle_position_y"].astype(na.float64),
+                             data["particle_position_z"].astype(na.float64),
+                             data["particle_mass"].astype(na.float32),
+                             na.int64(data.NumberOfParticles),
+                             bottom, na.array(data.LeftEdge).astype(na.float64),
+                             na.array(data.ActiveDimensions).astype(na.int32), 
+                             na.float64(data['dx']))
+      top[bottom == 0] = 0.0
+      bnz = bottom.nonzero()
+      top[bnz] /= bottom[bnz]
+      return top
+  
+
+**Convert Function Source**
+
+No source available.
 
 dm_density
 ++++++++++
@@ -3762,7 +6296,11 @@
   def _dmpdensity(field, data):
       blank = na.zeros(data.ActiveDimensions, dtype='float32')
       if data.NumberOfParticles == 0: return blank
-      filter = data['creation_time'] <= 0.0
+      if 'creation_time' in data.pf.field_info:
+          filter = data['creation_time'] <= 0.0
+          if not filter.any(): return blank
+      else:
+          filter = na.ones(data.NumberOfParticles, dtype='bool')
       if not filter.any(): return blank
       amr_utils.CICDeposit_3(data["particle_position_x"][filter].astype(na.float64),
                              data["particle_position_y"][filter].astype(na.float64),
@@ -3783,6 +6321,116 @@
       return data.convert("Density")
   
 
+dx
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dx(field, data):
+      return data.dds[0]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dy
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dy(field, data):
+      return data.dds[1]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dz
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dz(field, data):
+      return data.dds[2]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_density
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _pdensity(field, data):
+      blank = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return blank
+      CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                   data["particle_position_y"].astype(na.float64),
+                   data["particle_position_z"].astype(na.float64),
+                   data["particle_mass"].astype(na.float32),
+                   na.int64(data.NumberOfParticles),
+                   blank, na.array(data.LeftEdge).astype(na.float64),
+                   na.array(data.ActiveDimensions).astype(na.int32),
+                   na.float64(data['dx']))
+      return blank
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDensity(data):
+      return data.convert("Density")
+  
+
+particle_mass
++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          try:
+              return io._read_data_set(data, p_field).astype(dtype)
+          except io._read_exception:
+              pass
+          # This is bad.  But it's the best idea I have right now.
+          return data._read_data(p_field.replace("_"," ")).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
 star_creation_time
 ++++++++++++++++++
 
@@ -3960,68 +6608,520 @@
 
 No source available.
 
-x-momentum
+tempContours
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+x
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordX(field, data):
+      dim = data.ActiveDimensions[0]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[0])[:,None,None]
+              +0.5) * data['dx'] + data.LeftEdge[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
+y
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordY(field, data):
+      dim = data.ActiveDimensions[1]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[1])[None,:,None]
+              +0.5) * data['dy'] + data.LeftEdge[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
+z
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordZ(field, data):
+      dim = data.ActiveDimensions[2]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[2])[None,None,:]
+              +0.5) * data['dz'] + data.LeftEdge[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Orion-Specific Field List
+-------------------------
+
+AbsDivV
++++++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AbsDivV(field, data):
+      return na.abs(data['DivV'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentum
++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumX
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumX(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumY
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumY(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumZ
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumZ(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AveragedDensity
++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AveragedDensity(field, data):
+      nx, ny, nz = data["Density"].shape
+      new_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      weight_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      i_i, j_i, k_i = na.mgrid[0:3,0:3,0:3]
+      for i,j,k in zip(i_i.ravel(),j_i.ravel(),k_i.ravel()):
+          sl = [slice(i,nx-(2-i)),slice(j,ny-(2-j)),slice(k,nz-(2-k))]
+          new_field += data["Density"][sl] * data["CellMass"][sl]
+          weight_field += data["CellMass"][sl]
+      # Now some fancy footwork
+      new_field2 = na.zeros((nx,ny,nz))
+      new_field2[1:-1,1:-1,1:-1] = new_field/weight_field
+      return new_field2
+  
+
+**Convert Function Source**
+
+No source available.
+
+Baryon_Overdensity
+++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Baryon_Overdensity(field, data):
+      if data.pf.has_key('omega_baryon_now'):
+          omega_baryon_now = data.pf['omega_baryon_now']
+      else:
+          omega_baryon_now = 0.0441
+      return data['Density'] / (omega_baryon_now * rho_crit_now * 
+                                (data.pf['CosmologyHubbleConstantNow']**2) * 
+                                ((1+data.pf['CosmologyCurrentRedshift'])**3))
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMassCode
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMassCode(field, data):
+      return data["Density"] * data["CellVolumeCode"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassCode(data):
+      return 1.0/data.convert("Density")
+  
+
+CellMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+CellVolume
 ++++++++++
 
+   * Units: :math:`\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeCGS(data):
+      return data.convert("cm")**3.0
+  
+
+CellVolumeCode
+++++++++++++++
+
+   * Units: :math:`\rm{BoxVolume}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellVolumeMpc
++++++++++++++
+
+   * Units: :math:`\rm{Mpc}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeMpc(data):
+      return data.convert("mpc")**3.0
+  
+
+CellsPerBin
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+ComovingDensity
++++++++++++++++
+
    * Units: :math:`\rm{g}/\rm{cm}^3`
    * Particle Type: False
 
 **Field Source**
 
-No source available.
-
-x-velocity
-++++++++++
-
-   * Units: :math:`\rm{cm}/\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-y-momentum
-++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-y-velocity
-++++++++++
-
-   * Units: :math:`\rm{cm}/\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-z-momentum
-++++++++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-z-velocity
-++++++++++
-
-   * Units: :math:`\rm{cm}/\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-Orion Field List
-----------------
+.. code-block:: python
+
+  def _ComovingDensity(field, data):
+      ef = (1.0 + data.pf.current_redshift)**3.0
+      return data["Density"]/ef
+  
+
+**Convert Function Source**
+
+No source available.
+
+Contours
+++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+CourantTimeStep
++++++++++++++++
+
+   * Units: :math:`$\rm{s}$`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CourantTimeStep(field, data):
+      t1 = data['dx'] / (
+          data["SoundSpeed"] + \
+          abs(data["x-velocity"]))
+      t2 = data['dy'] / (
+          data["SoundSpeed"] + \
+          abs(data["y-velocity"]))
+      t3 = data['dz'] / (
+          data["SoundSpeed"] + \
+          abs(data["z-velocity"]))
+      return na.minimum(na.minimum(t1,t2),t3)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCourantTimeStep(data):
+      # SoundSpeed and z-velocity are in cm/s, dx is in code
+      return data.convert("cm")
+  
+
+CuttingPlaneVelocityX
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityX(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(x_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
+
+CuttingPlaneVelocityY
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityY(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(y_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
 
 Density
 +++++++
@@ -4032,6 +7132,875 @@
 
 No source available.
 
+DensityPerturbation
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DiskAngle
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DiskAngle(field, data):
+      # We make both r_vec and h_vec into unit vectors
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      r_vec = r_vec/na.sqrt((r_vec**2.0).sum(axis=0))
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      dp = r_vec[0,:] * h_vec[0] \
+         + r_vec[1,:] * h_vec[1] \
+         + r_vec[2,:] * h_vec[2]
+      return na.arccos(dp)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DivV
+++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DivV(field, data):
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      ds = div_fac * data['dx'].flat[0]
+      f  = data["x-velocity"][sl_right,1:-1,1:-1]/ds
+      f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds
+      if data.pf.dimensionality > 1:
+          ds = div_fac * data['dy'].flat[0]
+          f += data["y-velocity"][1:-1,sl_right,1:-1]/ds
+          f -= data["y-velocity"][1:-1,sl_left ,1:-1]/ds
+      if data.pf.dimensionality > 2:
+          ds = div_fac * data['dz'].flat[0]
+          f += data["z-velocity"][1:-1,1:-1,sl_right]/ds
+          f -= data["z-velocity"][1:-1,1:-1,sl_left ]/ds
+      new_field = na.zeros(data["x-velocity"].shape, dtype='float64')
+      new_field[1:-1,1:-1,1:-1] = f
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDivV(data):
+      return data.convert("cm")**-1.0
+  
+
+DynamicalTime
++++++++++++++
+
+   * Units: :math:`\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DynamicalTime(field, data):
+      """
+      The formulation for the dynamical time is:
+      M{sqrt(3pi/(16*G*rho))} or M{sqrt(3pi/(16G))*rho^-(1/2)}
+      Note that we return in our natural units already
+      """
+      return (3.0*na.pi/(16*G*data["Density"]))**(1./2.)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Entropy
++++++++
+
+   * Units: :math:`\rm{ergs}\ \rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Entropy(field, data):
+      return kboltz  * data["Temperature"] / \
+             (data["NumberDensity"]**(data.pf["Gamma"] - 1.0))
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridIndices
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridIndices(field, data):
+      return na.ones(data["Ones"].shape)*(data.id-data._id_offset)
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridLevel
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridLevel(field, data):
+      return na.ones(data.ActiveDimensions)*(data.Level)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Height
+++++++
+
+   * Units: :math:`cm`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeight(data):
+      return data.convert("cm")
+  
+
+HeightAU
+++++++++
+
+   * Units: :math:`AU`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeightAU(data):
+      return data.convert("au")
+  
+
+JeansMassMsun
++++++++++++++
+
+   * Units: :math:`\rm{M_{\odot}}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _JeansMassMsun(field,data):
+      MJ_constant = (((5*kboltz)/(G*mh))**(1.5)) * \
+      (3/(4*3.1415926535897931))**(0.5) / 1.989e33
+  
+      return (MJ_constant *
+              ((data["Temperature"]/data["MeanMolecularWeight"])**(1.5)) *
+              (data["Density"]**(-0.5)))
+  
+
+**Convert Function Source**
+
+No source available.
+
+MachNumber
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return data["VelocityMagnitude"] / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+MagneticEnergy
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MagneticEnergy(field,data):
+      """This assumes that your front end has provided Bx, By, Bz in
+      units of Gauss. If you use MKS, make sure to write your own
+      MagneticEnergy field to deal with non-unitary \mu_0.
+      """
+      return (data["Bx"]**2 + data["By"]**2 + data["Bz"]**2)/2.
+  
+
+**Convert Function Source**
+
+No source available.
+
+Matter_Density
+++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm^3}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+MeanMolecularWeight
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MeanMolecularWeight(field,data):
+      return (data["Density"] / (mh *data["NumberDensity"]))
+  
+
+**Convert Function Source**
+
+No source available.
+
+Ones
+++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+OnesOverDx
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _OnesOverDx(field, data):
+      return na.ones(data["Ones"].shape,
+                     dtype=data["Density"].dtype)/data['dx']
+  
+
+**Convert Function Source**
+
+No source available.
+
+Overdensity
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _Convert_Overdensity(data):
+      return 1 / (rho_crit_now * data.pf.hubble_constant**2 * 
+                  (1+data.pf.current_redshift)**3)
+  
+
+ParticleAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentum(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumMSUNKMSMPC(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentumKMSMPC"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumX(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumY(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumZ(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleRadius
+++++++++++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+ParticleRadiusAU
+++++++++++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+ParticleRadiusCode
+++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleRadiusMpc
++++++++++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+ParticleRadiuskpc
++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuskpch
+++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuspc
+++++++++++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+ParticleSpecificAngularMomentum
++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+ParticleSpecificAngularMomentumX
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumX(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      y = data["particle_position_y"] - center[1]
+      z = data["particle_position_z"] - center[2]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      return yv*z - zv*y
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumY
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumY(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      z = data["particle_position_z"] - center[2]
+      xv = data["particle_velocity_x"] - bv[0]
+      zv = data["particle_velocity_z"] - bv[2]
+      return -(xv*z - zv*x)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumZ
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumZ(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      y = data["particle_position_y"] - center[1]
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      return xv*y - yv*x
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleVelocityMagnitude
++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleVelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["particle_velocity_x"]-bulk_velocity[0])**2.0 + \
+               (data["particle_velocity_y"]-bulk_velocity[1])**2.0 + \
+               (data["particle_velocity_z"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
 Pressure
 ++++++++
 
@@ -4053,6 +8022,598 @@
 
 No source available.
 
+Pressure
+++++++++
+
+   * Units: :math:`\rm{dyne}/\rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Pressure(field,data):
+      """M{(Gamma-1.0)*e, where e is thermal energy density
+         NB: this will need to be modified for radiation
+      """
+      return (data.pf["Gamma"] - 1.0)*data["ThermalEnergy"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialMachNumber
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialMachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return na.abs(data["RadialVelocity"]) / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocity
+++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityABS
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityKMS
++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+RadialVelocityKMSABS
+++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+Radius
+++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+RadiusAU
+++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+RadiusCode
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadiusMpc
++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+Radiuskpc
++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuskpch
+++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuspc
+++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+SZKinetic
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZKinetic(field, data):
+      vel_axis = data.get_field_parameter('axis')
+      if vel_axis > 2:
+          raise NeedsParameter(['axis'])
+      vel = data["%s-velocity" % ({0:'x',1:'y',2:'z'}[vel_axis])]
+      return (vel*data["Density"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZKinetic(data):
+      return 0.88*((sigma_thompson/mh)/clight)
+  
+
+SZY
++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZY(field, data):
+      return (data["Density"]*data["Temperature"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZY(data):
+      conv = (0.88/mh) * (kboltz)/(me * clight*clight) * sigma_thompson
+      return conv
+  
+
+SoundSpeed
+++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SoundSpeed(field, data):
+      if data.pf["EOSType"] == 1:
+          return na.ones(data["Density"].shape, dtype='float64') * \
+                  data.pf["EOSSoundSpeed"]
+      return ( data.pf["Gamma"]*data["Pressure"] / \
+               data["Density"] )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+SpecificAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+SpecificAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumX(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return yv*rv[2,:] - zv*rv[1,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumY(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return -(xv*rv[2,:] - zv*rv[0,:])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumZ(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return xv*rv[1,:] - yv*rv[0,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+StarMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _StarMass(field,data):
+      return data["star_density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+TangentialOverVelocityMagnitude
++++++++++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialOverVelocityMagnitude(field, data):
+      return na.abs(data["TangentialVelocity"])/na.abs(data["VelocityMagnitude"])
+  
+
+**Convert Function Source**
+
+No source available.
+
+TangentialVelocity
+++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialVelocity(field, data):
+      return na.sqrt(data["VelocityMagnitude"]**2.0
+                   - data["RadialVelocity"]**2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
 Temperature
 +++++++++++
 
@@ -4087,9 +8648,9 @@
           leave that commented out for now.
       """
       #if data.pf["DualEnergyFormalism"]:
-      #    return data["Gas_Energy"]
+      #    return data["GasEnergy"]
       #else:
-      return data["Total_Energy"] - 0.5 * data["density"] * (
+      return data["TotalEnergy"] - 0.5 * data["density"] * (
           data["x-velocity"]**2.0
           + data["y-velocity"]**2.0
           + data["z-velocity"]**2.0 )
@@ -4099,14 +8660,197 @@
 
 No source available.
 
-Total_Energy
-++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
+TotalEnergy
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+No source available.
+
+TotalMass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalMassMsun
++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+VelocityMagnitude
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["x-velocity"]-bulk_velocity[0])**2.0 + \
+               (data["y-velocity"]-bulk_velocity[1])**2.0 + \
+               (data["z-velocity"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+VorticitySquared
+++++++++++++++++
+
+   * Units: :math:`\rm{s}^{-2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VorticitySquared(field, data):
+      mylog.debug("Generating vorticity on %s", data)
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      new_field = na.zeros(data["x-velocity"].shape)
+      dvzdy = (data["z-velocity"][1:-1,sl_right,1:-1] -
+               data["z-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      dvydz = (data["y-velocity"][1:-1,1:-1,sl_right] -
+               data["y-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvzdy - dvydz)**2.0
+      del dvzdy, dvydz
+      dvxdz = (data["x-velocity"][1:-1,1:-1,sl_right] -
+               data["x-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      dvzdx = (data["z-velocity"][sl_right,1:-1,1:-1] -
+               data["z-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvxdz - dvzdx)**2.0
+      del dvxdz, dvzdx
+      dvydx = (data["y-velocity"][sl_right,1:-1,1:-1] -
+               data["y-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      dvxdy = (data["x-velocity"][1:-1,sl_right,1:-1] -
+               data["x-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvydx - dvxdy)**2.0
+      del dvydx, dvxdy
+      new_field = na.abs(new_field)
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertVorticitySquared(data):
+      return data.convert("cm")**-2.0
+  
+
+WeakLensingConvergence
+++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertConvergence(data):
+      if not data.pf.parameters.has_key('cosmology_calculator'):
+          data.pf.parameters['cosmology_calculator'] = Cosmology(
+              HubbleConstantNow=(100.*data.pf.hubble_constant),
+              OmegaMatterNow=data.pf.omega_matter, OmegaLambdaNow=data.pf.omega_lambda)
+      # observer to lens
+      DL = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.current_redshift)
+      # observer to source
+      DS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.parameters['lensing_source_redshift'])
+      # lens to source
+      DLS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.current_redshift, data.pf.parameters['lensing_source_redshift'])
+      return (((DL * DLS) / DS) * (1.5e14 * data.pf.omega_matter * 
+                                  (data.pf.hubble_constant / speed_of_light_cgs)**2 *
+                                  (1 + data.pf.current_redshift)))
+  
+
+XRayEmissivity
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _XRayEmissivity(field, data):
+      return ((data["Density"].astype('float64')**2.0) \
+              *data["Temperature"]**0.5)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertXRayEmissivity(data):
+      return 2.168e60
+  
 
 density
 +++++++
@@ -4119,6 +8863,60 @@
 
 No source available.
 
+dx
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dx(field, data):
+      return data.dds[0]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dy
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dy(field, data):
+      return data.dds[1]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dz
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dz(field, data):
+      return data.dds[2]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
 eden
 ++++
 
@@ -4129,6 +8927,390 @@
 
 No source available.
 
+particle_angmomen_x
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_angmomen_y
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_angmomen_z
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_burnstate
+++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_density
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _pdensity(field, data):
+      blank = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return blank
+      CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                   data["particle_position_y"].astype(na.float64),
+                   data["particle_position_z"].astype(na.float64),
+                   data["particle_mass"].astype(na.float32),
+                   na.int64(data.NumberOfParticles),
+                   blank, na.array(data.LeftEdge).astype(na.float64),
+                   na.array(data.ActiveDimensions).astype(na.int32),
+                   na.float64(data['dx']))
+      return blank
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDensity(data):
+      return data.convert("Density")
+  
+
+particle_id
++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_mass
++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_mdeut
+++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_mdot
++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_mlast
+++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_momentum_x
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_momentum_y
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_momentum_z
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_n
+++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_position_x
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_position_y
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_position_z
++++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+      def _Particles(field, data):
+          io = data.hierarchy.io
+          if not data.NumberOfParticles > 0:
+              return na.array([], dtype=dtype)
+          else:
+              return io._read_particles(data, p_field).astype(dtype)
+  
+
+**Convert Function Source**
+
+No source available.
+
+tempContours
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
 temperature
 +++++++++++
 
@@ -4138,6 +9320,26 @@
 
 No source available.
 
+x
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordX(field, data):
+      dim = data.ActiveDimensions[0]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[0])[:,None,None]
+              +0.5) * data['dx'] + data.LeftEdge[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
 x-momentum
 ++++++++++
 
@@ -4187,6 +9389,26 @@
 
 No source available.
 
+y
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordY(field, data):
+      dim = data.ActiveDimensions[1]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[1])[None,:,None]
+              +0.5) * data['dy'] + data.LeftEdge[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
 y-momentum
 ++++++++++
 
@@ -4239,6 +9461,26 @@
 
 No source available.
 
+z
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordZ(field, data):
+      dim = data.ActiveDimensions[2]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[2])[None,None,:]
+              +0.5) * data['dz'] + data.LeftEdge[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
 z-momentum
 ++++++++++
 
@@ -4288,8 +9530,443 @@
 
 No source available.
 
-FLASH Field List
-----------------
+FLASH-Specific Field List
+-------------------------
+
+AbsDivV
++++++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AbsDivV(field, data):
+      return na.abs(data['DivV'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentum
++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumX
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumX(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumY
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumY(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumZ
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumZ(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AveragedDensity
++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AveragedDensity(field, data):
+      nx, ny, nz = data["Density"].shape
+      new_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      weight_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      i_i, j_i, k_i = na.mgrid[0:3,0:3,0:3]
+      for i,j,k in zip(i_i.ravel(),j_i.ravel(),k_i.ravel()):
+          sl = [slice(i,nx-(2-i)),slice(j,ny-(2-j)),slice(k,nz-(2-k))]
+          new_field += data["Density"][sl] * data["CellMass"][sl]
+          weight_field += data["CellMass"][sl]
+      # Now some fancy footwork
+      new_field2 = na.zeros((nx,ny,nz))
+      new_field2[1:-1,1:-1,1:-1] = new_field/weight_field
+      return new_field2
+  
+
+**Convert Function Source**
+
+No source available.
+
+Baryon_Overdensity
+++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Baryon_Overdensity(field, data):
+      if data.pf.has_key('omega_baryon_now'):
+          omega_baryon_now = data.pf['omega_baryon_now']
+      else:
+          omega_baryon_now = 0.0441
+      return data['Density'] / (omega_baryon_now * rho_crit_now * 
+                                (data.pf['CosmologyHubbleConstantNow']**2) * 
+                                ((1+data.pf['CosmologyCurrentRedshift'])**3))
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMassCode
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMassCode(field, data):
+      return data["Density"] * data["CellVolumeCode"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassCode(data):
+      return 1.0/data.convert("Density")
+  
+
+CellMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+CellVolume
+++++++++++
+
+   * Units: :math:`\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeCGS(data):
+      return data.convert("cm")**3.0
+  
+
+CellVolumeCode
+++++++++++++++
+
+   * Units: :math:`\rm{BoxVolume}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellVolumeMpc
++++++++++++++
+
+   * Units: :math:`\rm{Mpc}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeMpc(data):
+      return data.convert("mpc")**3.0
+  
+
+CellsPerBin
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+ComovingDensity
++++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ComovingDensity(field, data):
+      ef = (1.0 + data.pf.current_redshift)**3.0
+      return data["Density"]/ef
+  
+
+**Convert Function Source**
+
+No source available.
+
+Contours
+++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+CourantTimeStep
++++++++++++++++
+
+   * Units: :math:`$\rm{s}$`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CourantTimeStep(field, data):
+      t1 = data['dx'] / (
+          data["SoundSpeed"] + \
+          abs(data["x-velocity"]))
+      t2 = data['dy'] / (
+          data["SoundSpeed"] + \
+          abs(data["y-velocity"]))
+      t3 = data['dz'] / (
+          data["SoundSpeed"] + \
+          abs(data["z-velocity"]))
+      return na.minimum(na.minimum(t1,t2),t3)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCourantTimeStep(data):
+      # SoundSpeed and z-velocity are in cm/s, dx is in code
+      return data.convert("cm")
+  
+
+CuttingPlaneVelocityX
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityX(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(x_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
+
+CuttingPlaneVelocityY
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityY(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(y_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
 
 DII_Density
 +++++++++++
@@ -4308,23 +9985,6 @@
 
 No source available.
 
-DII_Fraction
-++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 DI_Density
 ++++++++++
 
@@ -4342,34 +10002,132 @@
 
 No source available.
 
-DI_Fraction
-+++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 Density
 +++++++
 
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Units: :math:`\rm{g}/\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+DensityPerturbation
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DiskAngle
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DiskAngle(field, data):
+      # We make both r_vec and h_vec into unit vectors
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      r_vec = r_vec/na.sqrt((r_vec**2.0).sum(axis=0))
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      dp = r_vec[0,:] * h_vec[0] \
+         + r_vec[1,:] * h_vec[1] \
+         + r_vec[2,:] * h_vec[2]
+      return na.arccos(dp)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DivV
+++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DivV(field, data):
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      ds = div_fac * data['dx'].flat[0]
+      f  = data["x-velocity"][sl_right,1:-1,1:-1]/ds
+      f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds
+      if data.pf.dimensionality > 1:
+          ds = div_fac * data['dy'].flat[0]
+          f += data["y-velocity"][1:-1,sl_right,1:-1]/ds
+          f -= data["y-velocity"][1:-1,sl_left ,1:-1]/ds
+      if data.pf.dimensionality > 2:
+          ds = div_fac * data['dz'].flat[0]
+          f += data["z-velocity"][1:-1,1:-1,sl_right]/ds
+          f -= data["z-velocity"][1:-1,1:-1,sl_left ]/ds
+      new_field = na.zeros(data["x-velocity"].shape, dtype='float64')
+      new_field[1:-1,1:-1,1:-1] = f
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDivV(data):
+      return data.convert("cm")**-1.0
+  
+
+DynamicalTime
++++++++++++++
+
+   * Units: :math:`\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DynamicalTime(field, data):
+      """
+      The formulation for the dynamical time is:
+      M{sqrt(3pi/(16*G*rho))} or M{sqrt(3pi/(16G))*rho^-(1/2)}
+      Note that we return in our natural units already
+      """
+      return (3.0*na.pi/(16*G*data["Density"]))**(1./2.)
   
 
 **Convert Function Source**
@@ -4393,34 +10151,105 @@
 
 No source available.
 
-Electron_Fraction
-+++++++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-Gas_Energy
-++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+Entropy
++++++++
+
+   * Units: :math:`\rm{ergs}\ \rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Entropy(field, data):
+      return kboltz  * data["Temperature"] / \
+             (data["NumberDensity"]**(data.pf["Gamma"] - 1.0))
+  
+
+**Convert Function Source**
+
+No source available.
+
+Flame_Density
++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _dens(field, data):
+          return data[fname] * data['Density']
+  
+
+**Convert Function Source**
+
+No source available.
+
+Flame_Fraction
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+GasEnergy
++++++++++
+
+   * Units: :math:`\rm{erg}/\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridIndices
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridIndices(field, data):
+      return na.ones(data["Ones"].shape)*(data.id-data._id_offset)
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridLevel
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridLevel(field, data):
+      return na.ones(data.ActiveDimensions)*(data.Level)
   
 
 **Convert Function Source**
@@ -4444,23 +10273,6 @@
 
 No source available.
 
-H2II_Fraction
-+++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 H2I_Density
 +++++++++++
 
@@ -4478,23 +10290,6 @@
 
 No source available.
 
-H2I_Fraction
-++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HD_Density
 ++++++++++
 
@@ -4512,23 +10307,6 @@
 
 No source available.
 
-HD_Fraction
-+++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HII_Density
 +++++++++++
 
@@ -4546,23 +10324,6 @@
 
 No source available.
 
-HII_Fraction
-++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HI_Density
 ++++++++++
 
@@ -4580,23 +10341,6 @@
 
 No source available.
 
-HI_Fraction
-+++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HM_Density
 ++++++++++
 
@@ -4614,23 +10358,6 @@
 
 No source available.
 
-HM_Fraction
-+++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HeIII_Density
 +++++++++++++
 
@@ -4648,23 +10375,6 @@
 
 No source available.
 
-HeIII_Fraction
-++++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HeII_Density
 ++++++++++++
 
@@ -4682,23 +10392,6 @@
 
 No source available.
 
-HeII_Fraction
-+++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
 HeI_Density
 +++++++++++
 
@@ -4716,17 +10409,312 @@
 
 No source available.
 
-HeI_Fraction
-++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+Height
+++++++
+
+   * Units: :math:`cm`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeight(data):
+      return data.convert("cm")
+  
+
+HeightAU
+++++++++
+
+   * Units: :math:`AU`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeightAU(data):
+      return data.convert("au")
+  
+
+JeansMassMsun
++++++++++++++
+
+   * Units: :math:`\rm{M_{\odot}}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _JeansMassMsun(field,data):
+      MJ_constant = (((5*kboltz)/(G*mh))**(1.5)) * \
+      (3/(4*3.1415926535897931))**(0.5) / 1.989e33
+  
+      return (MJ_constant *
+              ((data["Temperature"]/data["MeanMolecularWeight"])**(1.5)) *
+              (data["Density"]**(-0.5)))
+  
+
+**Convert Function Source**
+
+No source available.
+
+MachNumber
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return data["VelocityMagnitude"] / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+MagneticEnergy
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MagneticEnergy(field,data):
+      """This assumes that your front end has provided Bx, By, Bz in
+      units of Gauss. If you use MKS, make sure to write your own
+      MagneticEnergy field to deal with non-unitary \mu_0.
+      """
+      return (data["Bx"]**2 + data["By"]**2 + data["Bz"]**2)/2.
+  
+
+**Convert Function Source**
+
+No source available.
+
+Matter_Density
+++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm^3}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+MeanMolecularWeight
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MeanMolecularWeight(field,data):
+      return (data["Density"] / (mh *data["NumberDensity"]))
+  
+
+**Convert Function Source**
+
+No source available.
+
+Ones
+++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+OnesOverDx
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _OnesOverDx(field, data):
+      return na.ones(data["Ones"].shape,
+                     dtype=data["Density"].dtype)/data['dx']
+  
+
+**Convert Function Source**
+
+No source available.
+
+Overdensity
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _Convert_Overdensity(data):
+      return 1 / (rho_crit_now * data.pf.hubble_constant**2 * 
+                  (1+data.pf.current_redshift)**3)
+  
+
+ParticleAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentum(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumMSUNKMSMPC(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentumKMSMPC"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumX(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumY(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumZ(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumZ"]
   
 
 **Convert Function Source**
@@ -4736,14 +10724,15 @@
 ParticleMass
 ++++++++++++
 
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
   
 
 **Convert Function Source**
@@ -4771,287 +10760,1302 @@
       return 1.0/1.989e33
   
 
+ParticleRadius
+++++++++++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+ParticleRadiusAU
+++++++++++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+ParticleRadiusCode
+++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleRadiusMpc
++++++++++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+ParticleRadiuskpc
++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuskpch
+++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuspc
+++++++++++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+ParticleSpecificAngularMomentum
++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+ParticleSpecificAngularMomentumX
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumX(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      y = data["particle_position_y"] - center[1]
+      z = data["particle_position_z"] - center[2]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      return yv*z - zv*y
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumY
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumY(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      z = data["particle_position_z"] - center[2]
+      xv = data["particle_velocity_x"] - bv[0]
+      zv = data["particle_velocity_z"] - bv[2]
+      return -(xv*z - zv*x)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumZ
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumZ(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      y = data["particle_position_y"] - center[1]
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      return xv*y - yv*x
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleVelocityMagnitude
++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleVelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["particle_velocity_x"]-bulk_velocity[0])**2.0 + \
+               (data["particle_velocity_y"]-bulk_velocity[1])**2.0 + \
+               (data["particle_velocity_z"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Pressure
+++++++++
+
+   * Units: :math:`\rm{dyne}/\rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Pressure(field, data):
+      """M{(Gamma-1.0)*rho*E}"""
+      return (data.pf["Gamma"] - 1.0) * \
+             data["Density"] * data["ThermalEnergy"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialMachNumber
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialMachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return na.abs(data["RadialVelocity"]) / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocity
+++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityABS
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityKMS
++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+RadialVelocityKMSABS
+++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+Radius
+++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+RadiusAU
+++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+RadiusCode
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadiusMpc
++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+Radiuskpc
++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuskpch
+++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuspc
+++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+SZKinetic
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZKinetic(field, data):
+      vel_axis = data.get_field_parameter('axis')
+      if vel_axis > 2:
+          raise NeedsParameter(['axis'])
+      vel = data["%s-velocity" % ({0:'x',1:'y',2:'z'}[vel_axis])]
+      return (vel*data["Density"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZKinetic(data):
+      return 0.88*((sigma_thompson/mh)/clight)
+  
+
+SZY
++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZY(field, data):
+      return (data["Density"]*data["Temperature"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZY(data):
+      conv = (0.88/mh) * (kboltz)/(me * clight*clight) * sigma_thompson
+      return conv
+  
+
+SoundSpeed
+++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SoundSpeed(field, data):
+      if data.pf["EOSType"] == 1:
+          return na.ones(data["Density"].shape, dtype='float64') * \
+                  data.pf["EOSSoundSpeed"]
+      return ( data.pf["Gamma"]*data["Pressure"] / \
+               data["Density"] )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+SpecificAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+SpecificAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumX(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return yv*rv[2,:] - zv*rv[1,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumY(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return -(xv*rv[2,:] - zv*rv[0,:])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumZ(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return xv*rv[1,:] - yv*rv[0,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+StarMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _StarMass(field,data):
+      return data["star_density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+TangentialOverVelocityMagnitude
++++++++++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialOverVelocityMagnitude(field, data):
+      return na.abs(data["TangentialVelocity"])/na.abs(data["VelocityMagnitude"])
+  
+
+**Convert Function Source**
+
+No source available.
+
+TangentialVelocity
+++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialVelocity(field, data):
+      return na.sqrt(data["VelocityMagnitude"]**2.0
+                   - data["RadialVelocity"]**2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
 Temperature
 +++++++++++
 
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-Total_Energy
-++++++++++++
-
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-dens
-++++
-
-   * Units: :math:`\rm{g}/\rm{cm}^3`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-deut
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-divb
-++++
-
-   * Units: :math:`\rm{G}\/\rm{cm}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-dplu
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-eint
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-elec
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-ener
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-gamc
-++++
-
-   * Units: :math:`\rm{ratio\/of\/specific\/heats}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-game
-++++
-
-   * Units: :math:`\rm{ratio\/of\/specific\/heats}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-gpol
-++++
-
-   * Units: :math:`\rm{ergs\//\/g}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-gpot
-++++
-
-   * Units: :math:`\rm{ergs\//\/g}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-grac
-++++
-
-   * Units: :math:`\rm{cm\/s^{-2}}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-h   
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-hd  
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-hel 
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-hep 
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-hepp
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-hmin
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-hp  
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-htwo
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-htwp
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-magp
-++++
-
-   * Units: :math:`\rm{erg}\//\/\rm{cm}^{3}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-magx
-++++
-
-   * Units: :math:`\rm{G}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-magy
-++++
-
-   * Units: :math:`\rm{G}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-magz
-++++
-
-   * Units: :math:`\rm{G}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
+   * Units: :math:`\rm{K}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalEnergy
++++++++++++
+
+   * Units: :math:`\rm{erg}/\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalMass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalMassMsun
++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+VelocityMagnitude
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["x-velocity"]-bulk_velocity[0])**2.0 + \
+               (data["y-velocity"]-bulk_velocity[1])**2.0 + \
+               (data["z-velocity"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+VorticitySquared
+++++++++++++++++
+
+   * Units: :math:`\rm{s}^{-2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VorticitySquared(field, data):
+      mylog.debug("Generating vorticity on %s", data)
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      new_field = na.zeros(data["x-velocity"].shape)
+      dvzdy = (data["z-velocity"][1:-1,sl_right,1:-1] -
+               data["z-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      dvydz = (data["y-velocity"][1:-1,1:-1,sl_right] -
+               data["y-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvzdy - dvydz)**2.0
+      del dvzdy, dvydz
+      dvxdz = (data["x-velocity"][1:-1,1:-1,sl_right] -
+               data["x-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      dvzdx = (data["z-velocity"][sl_right,1:-1,1:-1] -
+               data["z-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvxdz - dvzdx)**2.0
+      del dvxdz, dvzdx
+      dvydx = (data["y-velocity"][sl_right,1:-1,1:-1] -
+               data["y-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      dvxdy = (data["x-velocity"][1:-1,sl_right,1:-1] -
+               data["x-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvydx - dvxdy)**2.0
+      del dvydx, dvxdy
+      new_field = na.abs(new_field)
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertVorticitySquared(data):
+      return data.convert("cm")**-2.0
+  
+
+WeakLensingConvergence
+++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertConvergence(data):
+      if not data.pf.parameters.has_key('cosmology_calculator'):
+          data.pf.parameters['cosmology_calculator'] = Cosmology(
+              HubbleConstantNow=(100.*data.pf.hubble_constant),
+              OmegaMatterNow=data.pf.omega_matter, OmegaLambdaNow=data.pf.omega_lambda)
+      # observer to lens
+      DL = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.current_redshift)
+      # observer to source
+      DS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.parameters['lensing_source_redshift'])
+      # lens to source
+      DLS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.current_redshift, data.pf.parameters['lensing_source_redshift'])
+      return (((DL * DLS) / DS) * (1.5e14 * data.pf.omega_matter * 
+                                  (data.pf.hubble_constant / speed_of_light_cgs)**2 *
+                                  (1 + data.pf.current_redshift)))
+  
+
+XRayEmissivity
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _XRayEmissivity(field, data):
+      return ((data["Density"].astype('float64')**2.0) \
+              *data["Temperature"]**0.5)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertXRayEmissivity(data):
+      return 2.168e60
+  
+
+dx
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dx(field, data):
+      return data.dds[0]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dy
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dy(field, data):
+      return data.dds[1]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dz
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dz(field, data):
+      return data.dds[2]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_density
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _pdensity(field, data):
+      blank = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return blank
+      CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                   data["particle_position_y"].astype(na.float64),
+                   data["particle_position_z"].astype(na.float64),
+                   data["particle_mass"].astype(na.float32),
+                   na.int64(data.NumberOfParticles),
+                   blank, na.array(data.LeftEdge).astype(na.float64),
+                   na.array(data.ActiveDimensions).astype(na.int32),
+                   na.float64(data['dx']))
+      return blank
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDensity(data):
+      return data.convert("Density")
+  
 
 particle_index
 ++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
   
 
 **Convert Function Source**
@@ -5061,14 +12065,15 @@
 particle_position_x
 +++++++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
   
 
 **Convert Function Source**
@@ -5078,14 +12083,15 @@
 particle_position_y
 +++++++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
   
 
 **Convert Function Source**
@@ -5095,67 +12101,33 @@
 particle_position_z
 +++++++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_posx
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-No source available.
-
-particle_posy
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-No source available.
-
-particle_posz
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-No source available.
-
-particle_tag
-++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
 
 No source available.
 
 particle_velocity_x
 +++++++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
   
 
 **Convert Function Source**
@@ -5165,14 +12137,15 @@
 particle_velocity_y
 +++++++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
   
 
 **Convert Function Source**
@@ -5182,212 +12155,2573 @@
 particle_velocity_z
 +++++++++++++++++++
 
-   * Particle Type: True
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-particle_velx
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-No source available.
-
-particle_vely
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-No source available.
-
-particle_velz
-+++++++++++++
-
-   * Particle Type: True
-
-**Field Source**
-
-No source available.
-
-particle_xvel
-+++++++++++++
-
    * Units: :math:`\rm{cm}/\rm{s}`
    * Particle Type: False
 
 **Field Source**
 
-No source available.
-
-particle_yvel
-+++++++++++++
-
-   * Units: :math:`\rm{cm}/\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-particle_zvel
-+++++++++++++
-
-   * Units: :math:`\rm{cm}/\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-pden
-++++
-
-   * Units: :math:`\rm{g}\//\/\rm{cm}^{3}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-pres
-++++
-
-   * Units: :math:`\rm{erg}\//\/\rm{cm}^{3}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-temp
-++++
-
-   * Units: :math:`\rm{K}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-velx
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-vely
-++++
-
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
-velz
-++++
-
-   * Particle Type: False
-
-**Field Source**
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+tempContours
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+x
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordX(field, data):
+      dim = data.ActiveDimensions[0]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[0])[:,None,None]
+              +0.5) * data['dx'] + data.LeftEdge[0]
+  
+
+**Convert Function Source**
 
 No source available.
 
 x-velocity
 ++++++++++
 
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-xvel
-++++
-
    * Units: :math:`\rm{cm}/\rm{s}`
    * Particle Type: False
 
 **Field Source**
 
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+y
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordY(field, data):
+      dim = data.ActiveDimensions[1]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[1])[None,:,None]
+              +0.5) * data['dy'] + data.LeftEdge[1]
+  
+
+**Convert Function Source**
+
 No source available.
 
 y-velocity
 ++++++++++
 
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-yvel
-++++
-
    * Units: :math:`\rm{cm}/\rm{s}`
    * Particle Type: False
 
 **Field Source**
 
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+z
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordZ(field, data):
+      dim = data.ActiveDimensions[2]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[2])[None,None,:]
+              +0.5) * data['dz'] + data.LeftEdge[2]
+  
+
+**Convert Function Source**
+
 No source available.
 
 z-velocity
 ++++++++++
 
-   * Particle Type: False
-
-**Field Source**
-
-.. code-block:: python
-
-      def _alias(field, data):
-          return data[alias]
-  
-
-**Convert Function Source**
-
-No source available.
-
-zvel
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Nyx-Specific Field List
+--------------------------
+
+AbsDivV
++++++++
+
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AbsDivV(field, data):
+      return na.abs(data['DivV'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentum
++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentum(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumX
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumX(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumY
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumY(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AngularMomentumZ
+++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AngularMomentumZ(field, data):
+      return data["CellMass"] * data["SpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+AveragedDensity
++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _AveragedDensity(field, data):
+      nx, ny, nz = data["Density"].shape
+      new_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      weight_field = na.zeros((nx-2,ny-2,nz-2), dtype='float64')
+      i_i, j_i, k_i = na.mgrid[0:3,0:3,0:3]
+      for i,j,k in zip(i_i.ravel(),j_i.ravel(),k_i.ravel()):
+          sl = [slice(i,nx-(2-i)),slice(j,ny-(2-j)),slice(k,nz-(2-k))]
+          new_field += data["Density"][sl] * data["CellMass"][sl]
+          weight_field += data["CellMass"][sl]
+      # Now some fancy footwork
+      new_field2 = na.zeros((nx,ny,nz))
+      new_field2[1:-1,1:-1,1:-1] = new_field/weight_field
+      return new_field2
+  
+
+**Convert Function Source**
+
+No source available.
+
+Baryon_Overdensity
+++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Baryon_Overdensity(field, data):
+      if data.pf.has_key('omega_baryon_now'):
+          omega_baryon_now = data.pf['omega_baryon_now']
+      else:
+          omega_baryon_now = 0.0441
+      return data['Density'] / (omega_baryon_now * rho_crit_now * 
+                                (data.pf['CosmologyHubbleConstantNow']**2) * 
+                                ((1+data.pf['CosmologyCurrentRedshift'])**3))
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMass
+++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellMassCode
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMassCode(field, data):
+      return data["Density"] * data["CellVolumeCode"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassCode(data):
+      return 1.0/data.convert("Density")
+  
+
+CellMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellMass(field, data):
+      return data["Density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+CellVolume
+++++++++++
+
+   * Units: :math:`\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeCGS(data):
+      return data.convert("cm")**3.0
+  
+
+CellVolumeCode
+++++++++++++++
+
+   * Units: :math:`\rm{BoxVolume}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+CellVolumeMpc
++++++++++++++
+
+   * Units: :math:`\rm{Mpc}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CellVolume(field, data):
+      if data['dx'].size == 1:
+          try:
+              return data['dx']*data['dy']*data['dx']*\
+                  na.ones(data.ActiveDimensions, dtype='float64')
+          except AttributeError:
+              return data['dx']*data['dy']*data['dx']
+      return data["dx"]*data["dy"]*data["dz"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertCellVolumeMpc(data):
+      return data.convert("mpc")**3.0
+  
+
+CellsPerBin
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+ComovingDensity
++++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ComovingDensity(field, data):
+      ef = (1.0 + data.pf.current_redshift)**3.0
+      return data["Density"]/ef
+  
+
+**Convert Function Source**
+
+No source available.
+
+Contours
+++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+CourantTimeStep
++++++++++++++++
+
+   * Units: :math:`$\rm{s}$`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CourantTimeStep(field, data):
+      t1 = data['dx'] / (
+          data["SoundSpeed"] + \
+          abs(data["x-velocity"]))
+      t2 = data['dy'] / (
+          data["SoundSpeed"] + \
+          abs(data["y-velocity"]))
+      t3 = data['dz'] / (
+          data["SoundSpeed"] + \
+          abs(data["z-velocity"]))
+      return na.minimum(na.minimum(t1,t2),t3)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCourantTimeStep(data):
+      # SoundSpeed and z-velocity are in cm/s, dx is in code
+      return data.convert("cm")
+  
+
+CuttingPlaneVelocityX
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityX(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(x_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
+
+CuttingPlaneVelocityY
++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _CuttingPlaneVelocityY(field, data):
+      x_vec, y_vec, z_vec = [data.get_field_parameter("cp_%s_vec" % (ax))
+                             for ax in 'xyz']
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      v_vec = na.array([data["%s-velocity" % ax] for ax in 'xyz']) \
+                  - bulk_velocity[...,na.newaxis]
+      return na.dot(y_vec, v_vec)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Density
++++++++
+
+   * Units: :math:`\rm{g}} / \rm{cm}^3`
+   * Projected Units: :math:`\rm{g}} / \rm{cm}^2`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+      def _TranslationFunc(field, data):
+          return data[field_name]
+  
+
+**Convert Function Source**
+
+No source available.
+
+DensityPerturbation
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DiskAngle
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DiskAngle(field, data):
+      # We make both r_vec and h_vec into unit vectors
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      r_vec = r_vec/na.sqrt((r_vec**2.0).sum(axis=0))
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      dp = r_vec[0,:] * h_vec[0] \
+         + r_vec[1,:] * h_vec[1] \
+         + r_vec[2,:] * h_vec[2]
+      return na.arccos(dp)
+  
+
+**Convert Function Source**
+
+No source available.
+
+DivV
 ++++
 
+   * Units: :math:`\rm{s}^{-1}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DivV(field, data):
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      ds = div_fac * data['dx'].flat[0]
+      f  = data["x-velocity"][sl_right,1:-1,1:-1]/ds
+      f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds
+      if data.pf.dimensionality > 1:
+          ds = div_fac * data['dy'].flat[0]
+          f += data["y-velocity"][1:-1,sl_right,1:-1]/ds
+          f -= data["y-velocity"][1:-1,sl_left ,1:-1]/ds
+      if data.pf.dimensionality > 2:
+          ds = div_fac * data['dz'].flat[0]
+          f += data["z-velocity"][1:-1,1:-1,sl_right]/ds
+          f -= data["z-velocity"][1:-1,1:-1,sl_left ]/ds
+      new_field = na.zeros(data["x-velocity"].shape, dtype='float64')
+      new_field[1:-1,1:-1,1:-1] = f
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDivV(data):
+      return data.convert("cm")**-1.0
+  
+
+DynamicalTime
++++++++++++++
+
+   * Units: :math:`\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DynamicalTime(field, data):
+      """
+      The formulation for the dynamical time is:
+      M{sqrt(3pi/(16*G*rho))} or M{sqrt(3pi/(16G))*rho^-(1/2)}
+      Note that we return in our natural units already
+      """
+      return (3.0*na.pi/(16*G*data["Density"]))**(1./2.)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Entropy
++++++++
+
+   * Units: :math:`\rm{ergs}\ \rm{cm}^{2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Entropy(field, data):
+      return kboltz  * data["Temperature"] / \
+             (data["NumberDensity"]**(data.pf["Gamma"] - 1.0))
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridIndices
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridIndices(field, data):
+      return na.ones(data["Ones"].shape)*(data.id-data._id_offset)
+  
+
+**Convert Function Source**
+
+No source available.
+
+GridLevel
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _GridLevel(field, data):
+      return na.ones(data.ActiveDimensions)*(data.Level)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Height
+++++++
+
+   * Units: :math:`cm`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeight(data):
+      return data.convert("cm")
+  
+
+HeightAU
+++++++++
+
+   * Units: :math:`AU`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Height(field, data):
+      # We take the dot product of the radius vector with the height-vector
+      center = data.get_field_parameter("center")
+      r_vec = na.array([data["x"] - center[0],
+                        data["y"] - center[1],
+                        data["z"] - center[2]])
+      h_vec = na.array(data.get_field_parameter("height_vector"))
+      h_vec = h_vec / na.sqrt(h_vec[0]**2.0+
+                              h_vec[1]**2.0+
+                              h_vec[2]**2.0)
+      height = r_vec[0,:] * h_vec[0] \
+             + r_vec[1,:] * h_vec[1] \
+             + r_vec[2,:] * h_vec[2]
+      return na.abs(height)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertHeightAU(data):
+      return data.convert("au")
+  
+
+JeansMassMsun
++++++++++++++
+
+   * Units: :math:`\rm{M_{\odot}}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _JeansMassMsun(field,data):
+      MJ_constant = (((5*kboltz)/(G*mh))**(1.5)) * \
+      (3/(4*3.1415926535897931))**(0.5) / 1.989e33
+  
+      return (MJ_constant *
+              ((data["Temperature"]/data["MeanMolecularWeight"])**(1.5)) *
+              (data["Density"]**(-0.5)))
+  
+
+**Convert Function Source**
+
+No source available.
+
+MachNumber
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return data["VelocityMagnitude"] / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+MagneticEnergy
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MagneticEnergy(field,data):
+      """This assumes that your front end has provided Bx, By, Bz in
+      units of Gauss. If you use MKS, make sure to write your own
+      MagneticEnergy field to deal with non-unitary \mu_0.
+      """
+      return (data["Bx"]**2 + data["By"]**2 + data["Bz"]**2)/2.
+  
+
+**Convert Function Source**
+
+No source available.
+
+Matter_Density
+++++++++++++++
+
+   * Units: :math:`\rm{g}/\rm{cm^3}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+No source available.
+
+MeanMolecularWeight
++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _MeanMolecularWeight(field,data):
+      return (data["Density"] / (mh *data["NumberDensity"]))
+  
+
+**Convert Function Source**
+
+No source available.
+
+Ones
+++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Ones(field, data):
+      return na.ones(data.ActiveDimensions, dtype='float64')
+  
+
+**Convert Function Source**
+
+No source available.
+
+OnesOverDx
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _OnesOverDx(field, data):
+      return na.ones(data["Ones"].shape,
+                     dtype=data["Density"].dtype)/data['dx']
+  
+
+**Convert Function Source**
+
+No source available.
+
+Overdensity
++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Matter_Density(field,data):
+      return (data['Density'] + data['Dark_Matter_Density'])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _Convert_Overdensity(data):
+      return 1 / (rho_crit_now * data.pf.hubble_constant**2 * 
+                  (1+data.pf.current_redshift)**3)
+  
+
+ParticleAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentum(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentum"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumMSUNKMSMPC
++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`M_{\odot}\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumMSUNKMSMPC(field, data):
+      return data["ParticleMass"] * data["ParticleSpecificAngularMomentumKMSMPC"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumX(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumX"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumY(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumY"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{g}\/\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleAngularMomentumZ(field, data):
+      return data["CellMass"] * data["ParticleSpecificAngularMomentumZ"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleMassMsun
+++++++++++++++++
+
+   * Units: :math:`\rm{M_{\odot}}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _particle_mass_m_sun(field, data):
+      return data["particle_mass"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertParticleMassMsun(data):
+      return (1/1.989e33)
+  
+
+ParticleRadius
+++++++++++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+ParticleRadiusAU
+++++++++++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+ParticleRadiusCode
+++++++++++++++++++
+
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+ParticleRadiusMpc
++++++++++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+ParticleRadiuskpc
++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuskpch
+++++++++++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+ParticleRadiuspc
+++++++++++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleRadius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data["particle_position_%s" % ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+ParticleSpecificAngularMomentum
++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentum(field, data):
+      """
+      Calculate the angular of a particle velocity.  Returns a vector for each
+      particle.
+      """
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      center = data.get_field_parameter('center')
+      coords = na.array([data['particle_position_x'],
+                         data['particle_position_y'],
+                         data['particle_position_z']], dtype='float64')
+      new_shape = tuple([3] + [1]*(len(coords.shape)-1))
+      r_vec = coords - na.reshape(center,new_shape)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+ParticleSpecificAngularMomentumX
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumX(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      y = data["particle_position_y"] - center[1]
+      z = data["particle_position_z"] - center[2]
+      yv = data["particle_velocity_y"] - bv[1]
+      zv = data["particle_velocity_z"] - bv[2]
+      return yv*z - zv*y
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumY
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumY(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      z = data["particle_position_z"] - center[2]
+      xv = data["particle_velocity_x"] - bv[0]
+      zv = data["particle_velocity_z"] - bv[2]
+      return -(xv*z - zv*x)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleSpecificAngularMomentumZ
+++++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleSpecificAngularMomentumZ(field, data):
+      if data.has_field_parameter("bulk_velocity"):
+          bv = data.get_field_parameter("bulk_velocity")
+      else: bv = na.zeros(3, dtype='float64')
+      center = data.get_field_parameter('center')
+      x = data["particle_position_x"] - center[0]
+      y = data["particle_position_y"] - center[1]
+      xv = data["particle_velocity_x"] - bv[0]
+      yv = data["particle_velocity_y"] - bv[1]
+      return xv*y - yv*x
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+ParticleVelocityMagnitude
++++++++++++++++++++++++++
+
    * Units: :math:`\rm{cm}/\rm{s}`
-   * Particle Type: False
-
-**Field Source**
-
-No source available.
-
+   * Particle Type: True
+
+**Field Source**
+
+.. code-block:: python
+
+  def _ParticleVelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["particle_velocity_x"]-bulk_velocity[0])**2.0 + \
+               (data["particle_velocity_y"]-bulk_velocity[1])**2.0 + \
+               (data["particle_velocity_z"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Pressure
+++++++++
+
+   * Units: :math:`\rm{M_{\odot}} (\rm{km} / \rm{s})^2 / \rm{Mpc}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _pressure(field, data):
+      """
+      Computed using
+  
+      $$ pressure = (\gamma - 1.0) * e$$
+  
+      where e is thermal energy density. Note that this will need to be modified
+      when radiation is accounted for.
+  
+      """
+      return (data.pf["Gamma"] - 1.0) * data["ThermalEnergy"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+Pressure
+++++++++
+
+   * Units: :math:`\rm{M_{\odot}} (\rm{km} / \rm{s})^2 / \rm{Mpc}^3`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _pressure(field, data):
+      """
+      Computed using
+  
+      $$ pressure = (\gamma - 1.0) * e$$
+  
+      where e is thermal energy density. Note that this will need to be modified
+      when radiation is accounted for.
+  
+      """
+      return (data.pf["Gamma"] - 1.0) * data["ThermalEnergy"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialMachNumber
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialMachNumber(field, data):
+      """M{|v|/t_sound}"""
+      return na.abs(data["RadialVelocity"]) / data["SoundSpeed"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocity
+++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityABS
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadialVelocityKMS
++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocity(field, data):
+      center = data.get_field_parameter("center")
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      new_field = ( (data['x']-center[0])*(data["x-velocity"]-bulk_velocity[0])
+                  + (data['y']-center[1])*(data["y-velocity"]-bulk_velocity[1])
+                  + (data['z']-center[2])*(data["z-velocity"]-bulk_velocity[2])
+                  )/data["RadiusCode"]
+      if na.any(na.isnan(new_field)): # to fix center = point
+          new_field[na.isnan(new_field)] = 0.0
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+RadialVelocityKMSABS
+++++++++++++++++++++
+
+   * Units: :math:`\rm{km}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _RadialVelocityABS(field, data):
+      return na.abs(_RadialVelocity(field, data))
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadialVelocityKMS(data):
+      return 1e-5
+  
+
+Radius
+++++++
+
+   * Units: :math:`\rm{cm}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusCGS(data):
+      return data.convert("cm")
+  
+
+RadiusAU
+++++++++
+
+   * Units: :math:`\rm{AU}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusAU(data):
+      return data.convert("au")
+  
+
+RadiusCode
+++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+No source available.
+
+RadiusMpc
++++++++++
+
+   * Units: :math:`\rm{Mpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiusMpc(data):
+      return data.convert("mpc")
+  
+
+Radiuskpc
++++++++++
+
+   * Units: :math:`\rm{kpc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuskpch
+++++++++++
+
+   * Units: :math:`\rm{kpc}/\rm{h}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuskpc(data):
+      return data.convert("kpc")
+  
+
+Radiuspc
+++++++++
+
+   * Units: :math:`\rm{pc}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Radius(field, data):
+      center = data.get_field_parameter("center")
+      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
+      radius = na.zeros(data["x"].shape, dtype='float64')
+      for i, ax in enumerate('xyz'):
+          r = na.abs(data[ax] - center[i])
+          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+      na.sqrt(radius, radius)
+      return radius
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _ConvertRadiuspc(data):
+      return data.convert("pc")
+  
+
+SZKinetic
++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZKinetic(field, data):
+      vel_axis = data.get_field_parameter('axis')
+      if vel_axis > 2:
+          raise NeedsParameter(['axis'])
+      vel = data["%s-velocity" % ({0:'x',1:'y',2:'z'}[vel_axis])]
+      return (vel*data["Density"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZKinetic(data):
+      return 0.88*((sigma_thompson/mh)/clight)
+  
+
+SZY
++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SZY(field, data):
+      return (data["Density"]*data["Temperature"])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSZY(data):
+      conv = (0.88/mh) * (kboltz)/(me * clight*clight) * sigma_thompson
+      return conv
+  
+
+SoundSpeed
+++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SoundSpeed(field, data):
+      if data.pf["EOSType"] == 1:
+          return na.ones(data["Density"].shape, dtype='float64') * \
+                  data.pf["EOSSoundSpeed"]
+      return ( data.pf["Gamma"]*data["Pressure"] / \
+               data["Density"] )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+SpecificAngularMomentum
++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumKMSMPC
++++++++++++++++++++++++++++++
+
+   * Units: :math:`\rm{km}\rm{Mpc}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentum(field, data):
+      """
+      Calculate the angular velocity.  Returns a vector for each cell.
+      """
+      r_vec = obtain_rvec(data)
+      xv, yv, zv = obtain_velocities(data)
+      v_vec = na.array([xv,yv,zv], dtype='float64')
+      return na.cross(r_vec, v_vec, axis=0)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentumKMSMPC(data):
+      return data.convert("mpc")/1e5
+  
+
+SpecificAngularMomentumX
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumX(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return yv*rv[2,:] - zv*rv[1,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumY
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumY(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return -(xv*rv[2,:] - zv*rv[0,:])
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+SpecificAngularMomentumZ
+++++++++++++++++++++++++
+
+   * Units: :math:`\rm{cm}^2/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _SpecificAngularMomentumZ(field, data):
+      xv, yv, zv = obtain_velocities(data)
+      rv = obtain_rvec(data)
+      return xv*rv[1,:] - yv*rv[0,:]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertSpecificAngularMomentum(data):
+      return data.convert("cm")
+  
+
+StarMassMsun
+++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _StarMass(field,data):
+      return data["star_density"] * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+TangentialOverVelocityMagnitude
++++++++++++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialOverVelocityMagnitude(field, data):
+      return na.abs(data["TangentialVelocity"])/na.abs(data["VelocityMagnitude"])
+  
+
+**Convert Function Source**
+
+No source available.
+
+TangentialVelocity
+++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TangentialVelocity(field, data):
+      return na.sqrt(data["VelocityMagnitude"]**2.0
+                   - data["RadialVelocity"]**2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+Temperature
++++++++++++
+
+   * Units: :math:`\rm{Kelvin}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _temperature(field, data):
+      return ((data.pf["Gamma"] - 1.0) * data.pf["mu"] * mh *
+              data["ThermalEnergy"] / (kboltz * data["Density"]))
+  
+
+**Convert Function Source**
+
+No source available.
+
+ThermalEnergy
++++++++++++++
+
+   * Units: :math:`\rm{M_{\odot}} (\rm{km} / \rm{s})^2`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _thermal_energy(field, data):
+      """
+      Generate thermal (gas energy). Dual Energy Formalism was implemented by
+      Stella, but this isn't how it's called, so I'll leave that commented out for
+      now.
+  
+      """
+      #if data.pf["DualEnergyFormalism"]:
+      #    return data["Gas_Energy"]
+      #else:
+      return data["Total_Energy"] - 0.5 * data["density"] * (
+                                            data["x-velocity"]**2.0
+                                          + data["y-velocity"]**2.0
+                                          + data["z-velocity"]**2.0 )
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalMass
++++++++++
+
+   * Units: :math:`\rm{g}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+TotalMassMsun
++++++++++++++
+
+   * Units: :math:`M_{\odot}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _TotalMass(field,data):
+      return (data["Density"]+data["Dark_Matter_Density"]) * data["CellVolume"]
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertCellMassMsun(data):
+      return 5.027854e-34 # g^-1
+  
+
+VelocityMagnitude
++++++++++++++++++
+
+   * Units: :math:`\rm{cm}/\rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VelocityMagnitude(field, data):
+      """M{|v|}"""
+      bulk_velocity = data.get_field_parameter("bulk_velocity")
+      if bulk_velocity == None:
+          bulk_velocity = na.zeros(3)
+      return ( (data["x-velocity"]-bulk_velocity[0])**2.0 + \
+               (data["y-velocity"]-bulk_velocity[1])**2.0 + \
+               (data["z-velocity"]-bulk_velocity[2])**2.0 )**(1.0/2.0)
+  
+
+**Convert Function Source**
+
+No source available.
+
+VorticitySquared
+++++++++++++++++
+
+   * Units: :math:`\rm{s}^{-2}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _VorticitySquared(field, data):
+      mylog.debug("Generating vorticity on %s", data)
+      # We need to set up stencils
+      if data.pf["HydroMethod"] == 2:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(1,-1,None)
+          div_fac = 1.0
+      else:
+          sl_left = slice(None,-2,None)
+          sl_right = slice(2,None,None)
+          div_fac = 2.0
+      new_field = na.zeros(data["x-velocity"].shape)
+      dvzdy = (data["z-velocity"][1:-1,sl_right,1:-1] -
+               data["z-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      dvydz = (data["y-velocity"][1:-1,1:-1,sl_right] -
+               data["y-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvzdy - dvydz)**2.0
+      del dvzdy, dvydz
+      dvxdz = (data["x-velocity"][1:-1,1:-1,sl_right] -
+               data["x-velocity"][1:-1,1:-1,sl_left]) \
+               / (div_fac*data["dz"].flat[0])
+      dvzdx = (data["z-velocity"][sl_right,1:-1,1:-1] -
+               data["z-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvxdz - dvzdx)**2.0
+      del dvxdz, dvzdx
+      dvydx = (data["y-velocity"][sl_right,1:-1,1:-1] -
+               data["y-velocity"][sl_left,1:-1,1:-1]) \
+               / (div_fac*data["dx"].flat[0])
+      dvxdy = (data["x-velocity"][1:-1,sl_right,1:-1] -
+               data["x-velocity"][1:-1,sl_left,1:-1]) \
+               / (div_fac*data["dy"].flat[0])
+      new_field[1:-1,1:-1,1:-1] += (dvydx - dvxdy)**2.0
+      del dvydx, dvxdy
+      new_field = na.abs(new_field)
+      return new_field
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertVorticitySquared(data):
+      return data.convert("cm")**-2.0
+  
+
+WeakLensingConvergence
+++++++++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _DensityPerturbation(field, data):
+      rho_bar = rho_crit_now * data.pf.omega_matter * \
+          data.pf.hubble_constant**2 * \
+          (1.0 + data.pf.current_redshift)**3
+      return ((data['Matter_Density'] - rho_bar) / rho_bar)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertConvergence(data):
+      if not data.pf.parameters.has_key('cosmology_calculator'):
+          data.pf.parameters['cosmology_calculator'] = Cosmology(
+              HubbleConstantNow=(100.*data.pf.hubble_constant),
+              OmegaMatterNow=data.pf.omega_matter, OmegaLambdaNow=data.pf.omega_lambda)
+      # observer to lens
+      DL = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.current_redshift)
+      # observer to source
+      DS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.parameters['observer_redshift'], data.pf.parameters['lensing_source_redshift'])
+      # lens to source
+      DLS = data.pf.parameters['cosmology_calculator'].AngularDiameterDistance(
+          data.pf.current_redshift, data.pf.parameters['lensing_source_redshift'])
+      return (((DL * DLS) / DS) * (1.5e14 * data.pf.omega_matter * 
+                                  (data.pf.hubble_constant / speed_of_light_cgs)**2 *
+                                  (1 + data.pf.current_redshift)))
+  
+
+XRayEmissivity
+++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _XRayEmissivity(field, data):
+      return ((data["Density"].astype('float64')**2.0) \
+              *data["Temperature"]**0.5)
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertXRayEmissivity(data):
+      return 2.168e60
+  
+
+dx
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dx(field, data):
+      return data.dds[0]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dy
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dy(field, data):
+      return data.dds[1]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
+dz
+++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _dz(field, data):
+      return data.dds[2]
+      return na.ones(data.ActiveDimensions, dtype='float64') * data.dds[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
+particle_density
+++++++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _pdensity(field, data):
+      blank = na.zeros(data.ActiveDimensions, dtype='float32')
+      if data.NumberOfParticles == 0: return blank
+      CICDeposit_3(data["particle_position_x"].astype(na.float64),
+                   data["particle_position_y"].astype(na.float64),
+                   data["particle_position_z"].astype(na.float64),
+                   data["particle_mass"].astype(na.float32),
+                   na.int64(data.NumberOfParticles),
+                   blank, na.array(data.LeftEdge).astype(na.float64),
+                   na.array(data.ActiveDimensions).astype(na.int32),
+                   na.float64(data['dx']))
+      return blank
+  
+
+**Convert Function Source**
+
+.. code-block:: python
+
+  def _convertDensity(data):
+      return data.convert("Density")
+  
+
+tempContours
+++++++++++++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _Contours(field, data):
+      return na.ones(data["Density"].shape)*-1
+  
+
+**Convert Function Source**
+
+No source available.
+
+x
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordX(field, data):
+      dim = data.ActiveDimensions[0]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[0])[:,None,None]
+              +0.5) * data['dx'] + data.LeftEdge[0]
+  
+
+**Convert Function Source**
+
+No source available.
+
+x-velocity
+++++++++++
+
+   * Units: :math:`\rm{km} / \rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _x_velocity(field, data):
+      """ Generate x-velocity from x-momentum and density. """
+      return data["x-momentum"] / data["density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+y
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordY(field, data):
+      dim = data.ActiveDimensions[1]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[1])[None,:,None]
+              +0.5) * data['dy'] + data.LeftEdge[1]
+  
+
+**Convert Function Source**
+
+No source available.
+
+y-velocity
+++++++++++
+
+   * Units: :math:`\rm{km} / \rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _y_velocity(field, data):
+      """ Generate y-velocity from y-momentum and density. """
+      return data["y-momentum"] / data["density"]
+  
+
+**Convert Function Source**
+
+No source available.
+
+z
++
+
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _coordZ(field, data):
+      dim = data.ActiveDimensions[2]
+      return (na.ones(data.ActiveDimensions, dtype='float64')
+                     * na.arange(data.ActiveDimensions[2])[None,None,:]
+              +0.5) * data['dz'] + data.LeftEdge[2]
+  
+
+**Convert Function Source**
+
+No source available.
+
+z-velocity
+++++++++++
+
+   * Units: :math:`\rm{km} / \rm{s}`
+   * Particle Type: False
+
+**Field Source**
+
+.. code-block:: python
+
+  def _z_velocity(field, data):
+      """ Generate z-velocity from z-momentum and density. """
+      return data["z-momentum"] / data["density"]
+  
+
+**Convert Function Source**
+
+No source available.
+



https://bitbucket.org/yt_analysis/yt-doc/changeset/e19c789bf613/
changeset:   e19c789bf613
user:        sskory
date:        2012-02-02 01:09:09
summary:     Merge.
affected #:  3 files

diff -r 62330646cbfa54b9c5dbd56a2425d7519990d724 -r e19c789bf613f65d85baa748bb125009b3bfba07 source/advanced/installing.rst
--- a/source/advanced/installing.rst
+++ b/source/advanced/installing.rst
@@ -157,15 +157,50 @@
 
 This script will identify which repository you're using (stable, development, 
 etc.), connect to the yt-project.org server, download any recent changesets 
-for your version, and then recompile any new code that needs it (e.g. cython, 
-rebuild).  
+for your version and then recompile any new code that needs 
+it (e.g. cython, rebuild).  This same behavior is achieved manually by running:
+
+.. code-block:: bash
+
+   $ cd $YT_DEST/src/yt-hg 
+   $ hg pull
+   $ python setup.py develop
 
 Note that this automated update will fail if you have made modifications to
 the yt code base that you have not yet committed.  If this occurs, identify
 your modifications using 'hg status', and then commit them using 'hg commit',
 in order to bring the repository back to a state where you can automatically
-update the code as above.
-    
+update the code as above.  On the other hand, if you want to wipe out your
+uncommitted changes and just update to the latest version, you can type: 
+
+.. code-block:: bash
+
+   $ cd $YT_DEST/src/yt-hg 
+   $ hg pull
+   $ hg up -C      # N.B. This will wipe your uncommitted changes! 
+   $ python setup.py develop
+
 If you run into *any* problems with the update utility, it should be considered
 a bug, and we would love to hear about it so we can fix it.  Please inform us 
 through the bugsubmit utility or through the yt-users mailing list.
+
+Switching Between Branches in yt
+================================
+
+.. _switching-versions:
+
+If you are running the stable version of the code, and you want to switch 
+to using the development version of the code (or vice versa), you can merely
+follow a few steps (without reinstalling all of the source again):
+
+.. code-block:: bash
+
+   $ cd $YT_DEST/src/yt-hg 
+   $ hg pull
+   <commit all changes or they will be lost>
+   $ hg up -C <branch>     # N.B. This will wipe your uncommitted changes! 
+   $ python setup.py develop
+
+If you want to switch to using the development version of the code, use: 
+"yt" as <branch>, whereas if you want to switch to using the stable version
+of the code, use: "stable" as <branch>.


diff -r 62330646cbfa54b9c5dbd56a2425d7519990d724 -r e19c789bf613f65d85baa748bb125009b3bfba07 source/faq/index.rst
--- a/source/faq/index.rst
+++ b/source/faq/index.rst
@@ -118,6 +118,17 @@
 build and install from source and specify the mpi-enabled c and c++ 
 compilers in the mpi.cfg file.  See the `mpi4py installation page <http://mpi4py.scipy.org/docs/usrman/install.html>`_ for details.
 
+``yt`` fails saying that it cannot import yt modules
+----------------------------------------------------
+
+This is likely because you need to rebuild the source.  You can do 
+this automatically by running:
+
+.. code-block:: bash
+
+    cd $YT_DEST/src/yt-hg
+    python setup.py develop
+
 How do I cite yt?
 -----------------
 


diff -r 62330646cbfa54b9c5dbd56a2425d7519990d724 -r e19c789bf613f65d85baa748bb125009b3bfba07 source/interacting/command-line.rst
--- a/source/interacting/command-line.rst
+++ b/source/interacting/command-line.rst
@@ -14,41 +14,57 @@
 
    yt -h
 
-This yields all of the subcommands.  To execute any subcommand, simply run:
+This yields all of the subcommands.  To execute any such function, 
+simply run:
 
 .. code-block:: bash
 
    yt <subcommand>
 
+Finally, to identify the options associated with any of these subcommand, run:
+
+.. code-block:: bash
+
+   yt <subcommand> -h
+
 Let's go through each subcommand.
 
 .. code-block:: bash
 
-    bootstrap_dev     Bootstrap a yt development environment
-    bugreport         Report a bug in yt
-    halos             Run HaloProfiler on one dataset
-    help (?, h)       give detailed help on a specific sub-command
-    hop               Run HOP on one or more datasets
-    hubsubmit         Submit a mercurial repository to the yt Hub (http://h...
-    instinfo          Get some information about the yt installation
-    load              Load a single dataset into an IPython instance
-    mapserver         Serve a plot in a GMaps-style interface
-    pastebin          Post a script to an anonymous pastebin
-    pastebin_grab     Print an online pastebin to STDOUT for local use. Pas...
-    pasteboard        Place a file into your pasteboard.
-    pasteboard_grab   Download from your or another user's pasteboard
-    plot              Create a set of images
-    rpdb              Connect to a currently running (on localhost) rpd ses...
-    serve             Run the Web GUI Reason
-    stats             Print stats and maximum density for one or more datasets
-    update            Update the yt installation to the most recent version
-    upload_image      Upload an image to imgur.com.  Must be PNG.
+    help                Print help message
+    bootstrap_dev       Bootstrap a yt development environment
+    bugreport           Report a bug in yt
+    hop                 Run HOP on one or more datasets
+    hub_submit          Submit a mercurial repository to the yt Hub
+                        (http://hub.yt-project.org/), creating a BitBucket
+                        repo in the process if necessary.
+    instinfo            Get some information about the yt installation
+    load                Load a single dataset into an IPython instance
+    mapserver           Serve a plot in a GMaps-style interface
+    pastebin            Post a script to an anonymous pastebin
+    pastebin_grab       Print an online pastebin to STDOUT for local use.
+    plot                Create a set of images
+    reason              Run the Web GUI Reason
+    render              Create a simple volume rendering
+    rpdb                Connect to a currently running (on localhost) rpd
+                        session. Commands run with --rpdb will trigger an rpdb
+                        session with any uncaught exceptions.
+    serve               Run the Web GUI Reason
+    stats               Print stats and max density for one or more datasets
+    update              Update the yt installation to the most recent version
+    upload_image        Upload an image to imgur.com. Must be PNG.
+
+
+help
+++++
+
+Help lists all of the various command-line options in yt.
 
 bootstrap_dev
 +++++++++++++
 
 After you have installed yt and you want to do some development, there may 
-be a few more steps to complete.  This function automates building a 
+be a few more steps to complete.  This subcommand automates building a 
 development environment for you by setting up your hg preferences correctly,
 creating/linking to a bitbucket account for hosting and sharing your code, 
 and setting up a pasteboard for your code snippets.  A full description of 
@@ -64,25 +80,6 @@
 making a mistake (see :ref:`asking-for-help`), you can submit bug 
 reports using this nice utility.
 
-halos
-+++++
-
-You can easily run the HaloProfiler utility on a single dataset, in order 
-to analyze and visualize multiple halos in a simulation simultaneously and 
-homogeneously.  For more information about the HaloProfiler see 
-:ref:`halo_profiling`; for its command line flags, use the help command
-with the halos keyword.
-
-help
-++++
-
-Help behaves as you expect that it might.  You can use it with any other 
-command-line option to find out more details or if it has any flags:
-
-.. code-block:: bash
-
-   yt help <subcommand>
-
 hop               
 +++
 
@@ -147,23 +144,14 @@
    yt pastebin my_script.py
 
 By running the ``pastebin_grab`` subcommand with a pastebin number 
-(e.g. 1768), it will grab the contents of that pastebin and send it to 
+(e.g. 1768), it will grab the contents of that pastebin 
+(e.g. the website http://paste.yt-project.org/show/1768 ) and send it to 
 STDOUT for local use.  For more details see the :ref:`pastebin` section.
 
 .. code-block:: bash
 
    yt pastebin_grab 1768
 
-pasteboard and pasteboard_grab
-++++++++++++++++++++++++++++++
-
-The pasteboard is very similar to the pastebin, except that it is not
-anonymous.  It is a place you can put more polished code that you'd like
-to share with others.  It might be code that is a step down from what you
-might share on the `yt hub <http://hub.yt-project.org/>`_.  Of course, 
-you will only have a pasteboard if you've created a development environment
-using the bootstrap-dev subcommand.
-
 plot
 ++++
 
@@ -172,10 +160,16 @@
 details), you can create slices and projections easily at the 
 command-line.
 
+reason and serve
+++++++++++++++++
+
+The ``reason`` and ``serve`` subcommands have identical functionality in that
+they both initiate the Web GUI Reason. See :ref:`reason`.
+
 render
 ++++++
 
-This command generates a volume rendering for a single dataset.  By sepcifying
+This command generates a volume rendering for a single dataset.  By specifying
 the center, width, number of pixels, number and thickness of contours, etc.
 (run ``yt help render`` for details),  you can create high-quality volume
 renderings at the command-line before moving on to more involved volume
@@ -186,11 +180,6 @@
 
 Connect to a currently running (on localhost) rpd session.
 
-serve
-+++++
-
-The ``serve`` subcommand initiates the Web GUI Reason. See :ref:`reason`.
-
 stats
 +++++

Repository URL: https://bitbucket.org/yt_analysis/yt-doc/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.



More information about the yt-svn mailing list