A new symplectic N-body integrator is introduced , one designed to calculate the global 360 ^ { \circ } evolution of a self-gravitating planetary ring that is in orbit about an oblate planet . This freely-available code is called epi_int , and it is distinct from other such codes in its use of streamlines to calculate the effects of ring self-gravity . The great advantage of this approach is that the perturbing forces arise from smooth wires of ring matter rather than discreet particles , so there is very little gravitational scattering and so only a modest number of particles are needed to simulate , say , the scalloped edge of a resonantly confined ring or the propagation of spiral density waves . The code is applied to the outer edge of Saturn ’ s B ring , and a comparison of Cassini measurements of the ring ’ s forced response to simulations of Mimas ’ resonant perturbations reveals that the B ring ’ s surface density at its outer edge is \sigma _ { 0 } = 195 \pm 60 gm/cm ^ { 2 } which , if the same everywhere across the ring would mean that the B ring ’ s mass is about 90 \% of Mimas ’ mass . Cassini observations show that the B ring-edge has several free normal modes , which are long-lived disturbances of the ring-edge that are not driven by any known satellite resonances . Although the mechanism that excites or sustains these normal modes is unknown , we can plant such a disturbance at a simulated ring ’ s edge , and find that these modes persist without any damping for more than \sim 10 ^ { 5 } orbits or \sim 100 yrs despite the simulated ring ’ s viscosity \nu _ { s } = 100 cm ^ { 2 } /sec . These simulations also indicate that impulsive disturbances at a ring can excite long-lived normal modes , which suggests that an impact in the recent past by perhaps a cloud of cometary debris might have excited these disturbances which are quite common to many of Saturn ’ s sharp-edged rings .