diff --git a/doc/src/compute_pressure_cylinder.txt b/doc/src/compute_pressure_cylinder.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4865fe8a795f961375d5486b1ed1b2b5358d42a7
--- /dev/null
+++ b/doc/src/compute_pressure_cylinder.txt
@@ -0,0 +1,81 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+compute pressure/cylinder command :h3
+
+[Syntax:]
+
+compute ID group-ID pressure/cylinder zlo zhi Rmax bin_width :pre
+
+ID, group-ID are documented in "compute"_compute.html command
+pressure/cylinder = style name of this compute command
+zlo = minimum z-boundary for cylinder
+zhi = maximum z-boundary for cylinder
+Rmax = maximum radius to perform calculation to
+bin_width = width of radial bins to use for calculation :ul
+
+[Examples:]
+
+compute 1 all pressure/cylinder -10.0 10.0 15.0 0.25 :pre
+
+[Description:]
+
+Define a computation that calculates the pressure tensor of a system in
+cylindrical coordinates, as discussed in "(Addington)"_#Addington1.
+This is useful for systems with a single axis of rotational symmetry,
+such as cylindrical micelles or carbon nanotubes. The compute splits the
+system into radial, cylindrical-shell-type bins of width bin_width,
+centered at x=0,y=0, and calculates the radial (P_rhorho), azimuthal
+(P_phiphi), and axial (P_zz) components of the configurational pressure
+tensor. The local density is also calculated for each bin, so that the
+true pressure can be recovered as P_kin+P_conf=density*k*T+P_conf.  The
+output is a global array with 5 columns; one each for bin radius, local
+number density, P_rhorho, P_phiphi, and P_zz. The number of rows is
+governed by the values of Rmax and bin_width. Pressure tensor values are
+output in pressure units.
+
+[Output info:]
+
+This compute calculates a global array with 5 columns and Rmax/bin_width
+rows. The output columns are: R (distance units), number density (inverse 
+volume units), configurational radial pressure (pressure units), 
+configurational azimuthal pressure (pressure units), and configurational
+axial pressure (pressure units).
+
+The values calculated by this compute are
+"intensive".  The pressure values will be in pressure
+"units"_units.html. The number density values will be in 
+inverse volume "units"_units.html.
+
+[Restrictions:]
+
+This compute currently calculates the pressure tensor contributions
+for pair styles only (i.e. no bond, angle, dihedral, etc. contributions
+and in the presence of bonded interactions, the result will be incorrect
+due to exclusions for special bonds)  and requires pair-wise force
+calculations not available for most manybody pair styles. K-space
+calculations are also excluded. Note that this pressure compute outputs
+the configurational terms only; the kinetic contribution is not included
+and may be calculated from the number density output by P_kin=density*k*T.
+
+This compute is part of the USER-MISC package.  It is only enabled
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
+
+[Related commands:]
+
+"compute temp"_compute_temp.html, "compute
+stress/atom"_compute_stress_atom.html,
+"thermo_style"_thermo_style.html,
+
+[Default:] none
+
+:line
+
+:link(Addington1)
+[(Addington)] Addington, Long, Gubbins, J Chem Phys, 149, 084109 (2018).
diff --git a/doc/src/computes.txt b/doc/src/computes.txt
index 2e2fde7fb42b95f40606ccc7b26e8ce58de38779..c836fb6cb1c980682373dd45654ce9fc535698b1 100644
--- a/doc/src/computes.txt
+++ b/doc/src/computes.txt
@@ -67,6 +67,7 @@ Computes :h1
    compute_pe_atom
    compute_plasticity_atom
    compute_pressure
+   compute_pressure_cylinder
    compute_pressure_uef
    compute_property_atom
    compute_property_chunk
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 3ce6484bd9d0a1b285cfb3f58ce63b178a3dfa43..c006e77d65a0963f96376d0f5a901fb6830bb14b 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -465,6 +465,7 @@ compute_pe.html
 compute_pe_atom.html
 compute_plasticity_atom.html
 compute_pressure.html
+compute_pressure_cylinder.html
 compute_pressure_uef.html
 compute_property_atom.html
 compute_property_chunk.html
diff --git a/src/.gitignore b/src/.gitignore
index e3c273ebefcbebc6d23495c3fdff0616008b7e00..5699a87089cea119b080ce2b67a223fcf67ff45f 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -301,6 +301,8 @@
 /compute_plasticity_atom.h
 /compute_pressure_bocs.cpp
 /compute_pressure_bocs.h
+/compute_pressure_cylinder.cpp
+/compute_pressure_cylinder.h
 /compute_pressure_grem.cpp
 /compute_pressure_grem.h
 /compute_rigid_local.cpp
diff --git a/src/USER-MISC/README b/src/USER-MISC/README
index b3c3e859480b0ba3e6bfbb1a501d684f02d284b3..cf948df233cb53819d220e5286454d9e21319888 100644
--- a/src/USER-MISC/README
+++ b/src/USER-MISC/README
@@ -30,6 +30,7 @@ compute ackland/atom, Gerolf Ziegenhain, gerolf at ziegenhain.com, 4 Oct 2007
 compute basal/atom, Christopher Barrett, cdb333 at cavs.msstate.edu, 3 Mar 2013
 compute cnp/atom, Paulo Branicio (USC), branicio at usc.edu, 31 May 2017
 compute entropy/atom, Pablo Piaggi (EPFL), pablo.piaggi at epfl.ch, 15 June 2018
+compute pressure/cylinder, Cody K. Addington (NCSU), , 2 Oct 2018
 compute stress/mop, Romain Vermorel (U Pau) & Laurent Joly (U Lyon), romain.vermorel at univ-pau.fr & ljoly.ulyon at gmail.com, 5 Sep 18
 compute stress/mop/profile, Romain Vermorel (U Pau) & Laurent Joly (U Lyon), romain.vermorel at univ-pau.fr & ljoly.ulyon at gmail.com, 5 Sep 18
 compute temp/rotate, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
diff --git a/src/USER-MISC/compute_pressure_cylinder.cpp b/src/USER-MISC/compute_pressure_cylinder.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6fcd343e38d643163a2cb7b4182eddf44f73f169
--- /dev/null
+++ b/src/USER-MISC/compute_pressure_cylinder.cpp
@@ -0,0 +1,484 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#include <cmath>
+#include <cstring>
+#include <cstdlib>
+#include "compute_pressure_cylinder.h"
+#include "atom.h"
+#include "update.h"
+#include "force.h"
+#include "pair.h"
+#include "neighbor.h"
+#include "neigh_request.h"
+#include "neigh_list.h"
+#include "group.h"
+#include "memory.h"
+#include "error.h"
+#include "citeme.h"
+#include "domain.h"
+#include "math_const.h"
+
+using namespace LAMMPS_NS;
+using namespace MathConst;
+
+static const char cite_compute_pressure_cylinder[] =
+  "compute pressure/cylinder:\n\n"
+  "@Article{Addington,\n"
+  " author = {C. K. Addington, Y. Long, K. E. Gubbins},\n"
+  " title = {The pressure in interfaces having cylindrical geometry},\n"
+  " journal = {J.~Chem.~Phys.},\n"
+  " year =    2018,\n"
+  " volume =  149,\n"
+  " pages =   {084109}\n"
+  "}\n\n";
+
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  Calculate the configurational components of the pressure tensor in
+  cylindrical geometry, according to the formulation of Addington et al. (2018)
+  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+
+ComputePressureCyl::ComputePressureCyl(LAMMPS *lmp, int narg, char **arg) :
+  Compute(lmp, narg, arg),
+  Pr_temp(NULL), Pr_all(NULL), Pz_temp(NULL), Pz_all(NULL), Pphi_temp(NULL),
+  Pphi_all(NULL), R(NULL), Rinv(NULL), R2(NULL), PrAinv(NULL), PzAinv(NULL),
+  R2kin(NULL), density_temp(NULL), invVbin(NULL), density_all(NULL),
+  tangent(NULL), ephi_x(NULL), ephi_y(NULL), binz(NULL)
+{
+  if (lmp->citeme) lmp->citeme->add(cite_compute_pressure_cylinder);
+  if (narg != 7) error->all(FLERR,"Illegal compute pressure/cylinder command");
+
+  zlo=force->numeric(FLERR,arg[3]);
+  zhi=force->numeric(FLERR,arg[4]);
+  Rmax=force->numeric(FLERR,arg[5]);
+  bin_width=force->numeric(FLERR,arg[6]);
+
+  if ((bin_width <= 0.0) || (bin_width < Rmax))
+    error->all(FLERR,"Illegal compute pressure/cylinder command");
+  if ((zhi < zlo) || ((zhi-zlo) < bin_width))
+    error->all(FLERR,"Illegal compute pressure/cylinder command");
+  if ((zhi > domain->boxhi[2]) || (zlo < domain->boxlo[2]))
+    error->all(FLERR,"Illegal compute pressure/cylinder command");
+
+  nbins=(int)(Rmax/bin_width);
+  nzbins=(int)((zhi-zlo)/bin_width);
+
+  // NOTE: at 2^22 = 4.2M bins, we will be close to exhausting allocatable
+  // memory on a 32-bit environment. so we use this as an upper limit.
+
+  if ((nbins < 1) || (nzbins < 1) || (nbins > 2>>22) || (nbins > 2>>22))
+    error->all(FLERR,"Illegal compute pressure/cylinder command");
+
+  array_flag=1;
+  vector_flag=0;
+  extarray=0;
+  size_array_cols = 5;  // r, number density, Pr, Pphi, Pz
+  size_array_rows = nbins;
+
+  Pr_temp = new double[nbins];
+  Pr_all = new double[nbins];
+  Pz_temp = new double[nbins];
+  Pz_all = new double[nbins];
+  Pphi_temp = new double[nbins];
+  Pphi_all = new double[nbins];
+  R  = new double[nbins];
+  R2 = new double[nbins];
+  PrAinv = new double[nbins];
+  PzAinv = new double[nbins];
+  Rinv = new double[nbins];
+  binz = new double[nzbins];
+
+  R2kin = new double[nbins];
+  density_temp = new double[nbins];
+  invVbin = new double[nbins];
+  density_all = new double[nbins];
+
+  memory->create(array,nbins,5,"PN:array");
+
+  nphi=360;
+  tangent = new double[nphi];
+  ephi_x = new double[nphi];
+  ephi_y = new double[nphi];
+
+  nktv2p = force->nktv2p;
+
+}
+
+/* ---------------------------------------------------------------------- */
+
+ComputePressureCyl::~ComputePressureCyl()
+{
+  // count all of these for memory usage
+  memory->destroy(array);
+  delete [] R;
+  delete [] Rinv;
+  delete [] R2;
+  delete [] R2kin;
+  delete [] invVbin;
+  delete [] density_temp;
+  delete [] density_all;
+  delete [] tangent;
+  delete [] ephi_x;
+  delete [] ephi_y;
+  delete [] Pr_temp;
+  delete [] Pr_all;
+  delete [] Pz_temp;
+  delete [] Pz_all;
+  delete [] Pphi_temp;
+  delete [] Pphi_all;
+  delete [] PrAinv;
+  delete [] PzAinv;
+  delete [] binz;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ComputePressureCyl::init()
+{
+  if (force->pair == NULL)
+    error->all(FLERR,"No pair style is defined for compute pressure/cylinder");
+  if (force->pair->single_enable == 0)
+    error->all(FLERR,"Pair style does not support compute pressure/cylinder");
+
+  double phi;
+
+  for (int iphi = 0; iphi < nphi; iphi++) {
+    phi=((double)iphi)*MY_PI/180.0;
+    tangent[iphi]=tan(phi);
+    ephi_x[iphi]=-sin(phi);
+    ephi_y[iphi]=cos(phi);
+  }
+
+  for (int iq = 0; iq < nbins; iq++) {
+    R[iq]=((double)iq+0.5)*bin_width;
+    Rinv[iq]=1.0/R[iq];
+    R2[iq]=R[iq]*R[iq];
+    R2kin[iq]=(((double)iq)+1.0)*bin_width;
+    R2kin[iq]*=R2kin[iq];
+    PrAinv[iq]=1.0/(2.0*MY_PI*(zhi-zlo)*R[iq]);
+  }
+  PphiAinv=1.0/((zhi-zlo)*bin_width*2.0*(double)nphi);
+
+  invVbin[0]=1.0/((zhi-zlo)*MY_PI*R2kin[0]);
+  PzAinv[0]=1.0/(MY_PI*R2kin[0]*((double)nzbins));
+
+  for (int jq = 1; jq < nbins; jq++) {
+    invVbin[jq]=1.0/((zhi-zlo)*MY_PI*(R2kin[jq]-R2kin[jq-1]));
+    PzAinv[jq]=1.0/(MY_PI*(R2kin[jq]-R2kin[jq-1])*((double)nzbins));
+  }
+
+  // need an occasional half neighbor list
+  int irequest = neighbor->request(this,instance_me);
+  neighbor->requests[irequest]->pair = 0;
+  neighbor->requests[irequest]->compute = 1;
+  neighbor->requests[irequest]->occasional = 1;
+
+  for (int zzz = 0; zzz < nzbins; zzz++) binz[zzz]=(((double)zzz)+0.5)*bin_width+zlo;
+
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ComputePressureCyl::init_list(int /* id */, NeighList *ptr)
+{
+  list = ptr;
+}
+
+/* ---------------------------------------------------------------------- */
+
+
+/* ----------------------------------------------------------------------
+   count pairs and compute pair info on this proc
+   only count pair once if newton_pair is off
+   both atom I,J must be in group
+   if flag is set, compute requested info about pair
+------------------------------------------------------------------------- */
+
+void ComputePressureCyl::compute_array()
+{
+  invoked_array = update->ntimestep;
+
+  int ibin;
+
+  // clear pressures
+  for (ibin = 0; ibin < nbins; ibin++) {
+    density_temp[ibin]=0.0;
+    density_all[ibin]=0.0;
+    Pr_temp[ibin]=0.0;
+    Pr_all[ibin]=0.0;
+    Pphi_temp[ibin]=0.0;
+    Pphi_all[ibin]=0.0;
+    Pz_temp[ibin]=0.0;
+    Pz_all[ibin]=0.0;
+  }
+
+  // what processor am I?
+  int me;
+  MPI_Comm_rank(world,&me);
+
+  int i,j,ii,jj,inum,jnum,itype,jtype;
+  tagint itag,jtag;
+  double xtmp,ytmp,ztmp,delx,dely,delz;
+  double rsq,fpair,factor_coul,factor_lj;
+  int *ilist,*jlist,*numneigh,**firstneigh;
+
+  double **x = atom->x;
+  tagint *tag = atom->tag;
+  int *type = atom->type;
+  int *mask = atom->mask;
+  int nlocal = atom->nlocal;
+  double *special_coul = force->special_coul;
+  double *special_lj = force->special_lj;
+  int newton_pair = force->newton_pair;
+
+  // invoke half neighbor list (will copy or build if necessary)
+  neighbor->build_one(list);
+
+  inum = list->inum;
+  ilist = list->ilist;
+  numneigh = list->numneigh;
+  firstneigh = list->firstneigh;
+
+  // calculate number density (by radius)
+  double temp_R2;
+  for (i = 0; i < nlocal; i++) if ((x[i][2] < zhi) && (x[i][2] > zlo)) {
+    temp_R2=x[i][0]*x[i][0]+x[i][1]*x[i][1];
+    if (temp_R2 > R2kin[nbins-1]) continue; // outside of Rmax
+
+    for (j = 0; j < nbins; j++) if (temp_R2 < R2kin[j]) break;
+
+    density_temp[j]+=invVbin[j];
+  }
+  MPI_Allreduce(density_temp,density_all,nbins,MPI_DOUBLE,MPI_SUM,world);
+  for (i = 0; i < nbins; i++) array[i][1]=density_all[i]; // NEW
+
+  // loop over neighbors of my atoms
+  // skip if I or J are not in group
+  // for newton = 0 and J = ghost atom,
+  //   need to insure I,J pair is only output by one proc
+  //   use same itag,jtag logic as in Neighbor::neigh_half_nsq()
+  // for flag = 0, just count pair interactions within force cutoff
+  // for flag = 1, calculate requested output fields
+
+  Pair *pair = force->pair;
+  double **cutsq = force->pair->cutsq;
+
+  double r1=0.0;
+  double r2=0.0;
+  double risq,rjsq;
+  double A,B,C,D;
+  double alpha1,alpha2;
+  double xi,yi,zi,dx,dy,dz;
+  double xR,yR,zR,fn;
+  double alpha,xL,yL,zL,L2,ftphi,ftz;
+  double sqrtD;
+
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    if (!(mask[i] & groupbit)) continue;
+
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itag = tag[i];
+    itype = type[i];
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    r1=x[i][0]*x[i][0]+x[i][1]*x[i][1];
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      factor_lj = special_lj[sbmask(j)];
+      factor_coul = special_coul[sbmask(j)];
+      j &= NEIGHMASK;
+
+      if (!(mask[j] & groupbit)) continue;
+
+      // itag = jtag is possible for long cutoffs that include images of self
+      // do calculation only on appropriate processor
+      if (newton_pair == 0 && j >= nlocal) {
+        jtag = tag[j];
+        if (itag > jtag) {
+          if ((itag+jtag) % 2 == 0) continue;
+        } else if (itag < jtag) {
+          if ((itag+jtag) % 2 == 1) continue;
+        } else {
+          if (x[j][2] < ztmp) continue;
+          if (x[j][2] == ztmp) {
+            if (x[j][1] < ytmp) continue;
+            if (x[j][1] == ytmp && x[j][0] < xtmp) continue;
+          }
+        }
+      }
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+
+      r2=x[j][0]*x[j][0]+x[j][1]*x[j][1];
+
+      // ri is smaller of r1 and r2
+      if (r2 < r1) {
+        risq=r2;
+        rjsq=r1;
+        xi=x[j][0];
+        yi=x[j][1];
+        zi=x[j][2];
+        dx=x[i][0]-x[j][0];
+        dy=x[i][1]-x[j][1];
+        dz=x[i][2]-x[j][2];
+      } else {
+        risq=r1;
+        rjsq=r2;
+        xi=x[i][0];
+        yi=x[i][1];
+        zi=x[i][2];
+        dx=x[j][0]-x[i][0];
+        dy=x[j][1]-x[i][1];
+        dz=x[j][2]-x[i][2];
+      }
+
+      rsq = delx*delx + dely*dely + delz*delz;
+      jtype = type[j];
+      if (rsq >= cutsq[itype][jtype]) continue;
+
+      pair->single(i,j,itype,jtype,rsq,factor_coul,factor_lj,fpair);
+
+      A=dx*dx+dy*dy;
+      B=2.0*(xi*dx+yi*dy);
+
+      // normal pressure contribution P_rhorho
+      for (ibin = 0; ibin < nbins; ibin++) {
+        // completely inside of R
+        if (rjsq < R2[ibin]) continue;
+
+        C=risq-R2[ibin];
+        D=B*B-4.0*A*C;
+
+        // completely outside of R
+        if (D < 0.0) continue;
+
+        sqrtD=sqrt(D);
+        alpha1=0.5*(-B+sqrtD)/A;
+        alpha2=0.5*(-B-sqrtD)/A;
+
+        if ((alpha1 > 0.0) && (alpha1 < 1.0)) {
+          zR=zi+alpha1*dz;
+          if ((zR < zhi) && (zR > zlo))
+          {
+            xR=xi+alpha1*dx;
+            yR=yi+alpha1*dy;
+            fn=fpair*fabs(xR*dx+yR*dy);
+
+            Pr_temp[ibin]+=fn;
+          }
+        }
+        if ((alpha2 > 0.0) && (alpha2 < 1.0)) {
+          zR=zi+alpha2*dz;
+          if ((zR < zhi) && (zR > zlo)) {
+            xR=xi+alpha2*dx;
+            yR=yi+alpha2*dy;
+            fn=fpair*fabs(xR*dx+yR*dy);
+
+            Pr_temp[ibin]+=fn;
+          }
+        }
+      }
+
+      // azimuthal pressure contribution (P_phiphi)
+      for (int iphi = 0; iphi < nphi; iphi++) {
+        alpha=(yi-xi*tangent[iphi])/(dx*tangent[iphi]-dy);
+
+        // no intersection with phi surface
+        if ((alpha >= 1.0) || (alpha <= 0.0)) continue;
+
+        // no contribution (outside of averaging region)
+        zL=zi+alpha*dz;
+        if ((zL > zhi) || (zL < zlo)) continue;
+
+        xL=xi+alpha*dx;
+        yL=yi+alpha*dy;
+
+        L2=xL*xL+yL*yL;
+
+        // no intersection (outside of Rmax)
+        if (L2 > R2kin[nbins-1]) continue;
+
+        ftphi=fabs(dx*ephi_x[iphi]+dy*ephi_y[iphi])*fpair;
+
+        // add to appropriate bin
+        for (ibin = 0; ibin < nbins; ibin++) if (L2 < R2kin[ibin]) {
+          Pphi_temp[ibin]+=ftphi;
+          break;
+        }
+      }
+
+      // z pressure contribution (P_zz)
+      for (int zbin = 0; zbin < nzbins; zbin++) {
+        // check if interaction contributes
+        if ((x[i][2] > binz[zbin]) && (x[j][2] > binz[zbin])) continue;
+        if ((x[i][2] < binz[zbin]) && (x[j][2] < binz[zbin])) continue;
+
+        alpha=(binz[zbin]-zi)/dz;
+
+        xL=xi+alpha*dx;
+        yL=yi+alpha*dy;
+
+        L2=xL*xL+yL*yL;
+
+        if (L2 > R2kin[nbins-1]) continue;
+
+        ftz=fabs(dz)*fpair;
+
+        // add to appropriate bin
+        for (ibin = 0; ibin < nbins; ibin++) if (L2 < R2kin[ibin]) {
+          Pz_temp[ibin]+=ftz;
+          break;
+        }
+      }
+    }
+  }
+
+  // calculate pressure (force over area)
+  for (ibin = 0; ibin < nbins; ibin++) {
+    Pr_temp[ibin]*=PrAinv[ibin]*Rinv[ibin];
+    Pphi_temp[ibin]*=PphiAinv;
+    Pz_temp[ibin]*=PzAinv[ibin];
+  }
+
+  // communicate these values across processors
+  MPI_Allreduce(Pr_temp,Pr_all,nbins,MPI_DOUBLE,MPI_SUM,world);
+  MPI_Allreduce(Pphi_temp,Pphi_all,nbins,MPI_DOUBLE,MPI_SUM,world);
+  MPI_Allreduce(Pz_temp,Pz_all,nbins,MPI_DOUBLE,MPI_SUM,world);
+
+  // populate array
+  for (ibin = 0; ibin < nbins; ibin++) {
+    array[ibin][0]=R[ibin];
+    array[ibin][2]=Pr_all[ibin]*nktv2p;
+    array[ibin][3]=Pphi_all[ibin]*nktv2p;
+    array[ibin][4]=Pz_all[ibin]*nktv2p;
+  }
+
+}
+
+/* ----------------------------------------------------------------------
+memory usage of data
+------------------------------------------------------------------------- */
+
+double ComputePressureCyl::memory_usage()
+{
+  double bytes =
+  (3.0*(double)nphi + 16.0*(double)nbins+5.0*(double)nbins) * sizeof(double);
+  return bytes;
+}
diff --git a/src/USER-MISC/compute_pressure_cylinder.h b/src/USER-MISC/compute_pressure_cylinder.h
new file mode 100644
index 0000000000000000000000000000000000000000..7151cca6cedab19f2439a139eb895b948f0aba86
--- /dev/null
+++ b/src/USER-MISC/compute_pressure_cylinder.h
@@ -0,0 +1,74 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef COMPUTE_CLASS
+
+ComputeStyle(pressure/cylinder,ComputePressureCyl)
+
+#else
+
+#ifndef LMP_COMPUTE_PRESSURE_CYLINDER
+#define LMP_COMPUTE_PRESSURE_CYLINDER
+
+#include "compute.h"
+
+namespace LAMMPS_NS {
+
+class ComputePressureCyl : public Compute {
+ public:
+  ComputePressureCyl(class LAMMPS *, int, char **);
+  ~ComputePressureCyl();
+  void init();
+  void init_list(int, class NeighList *);
+  void compute_array();
+  double memory_usage();
+
+ private:
+  int nbins,nphi,nzbins;
+  double *Pr_temp,*Pr_all,*Pz_temp,*Pz_all,*Pphi_temp,*Pphi_all;
+  double *R,*Rinv,*R2,*PrAinv,*PzAinv,PphiAinv;
+  double Rmax,bin_width,nktv2p;
+  double *R2kin,*density_temp,*invVbin,*density_all;
+  double *tangent,*ephi_x,*ephi_y;
+  double *binz;
+
+  double zlo,zhi;
+
+  class NeighList *list;
+
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: No pair style is defined for compute pressure/cylinder
+
+Self-explanatory.
+
+E: Pair style does not support compute pressure/cylinder
+
+The pair style does not have a single() function, so it can
+not be invoked by compute pressure/cylinder.
+
+*/
+