code: def evaluaterforces(Pot,R,z,phi=None,t=0.,v=None):
      
      isList= isinstance(Pot,list)
      nonAxi= _isNonAxi(Pot)
      if nonAxi and phi is None:
          raise PotentialError("The (list of) Potential instances is non-axisymmetric, but you did not provide phi")
      dissipative= _isDissipative(Pot)
      if dissipative and v is None:
          raise PotentialError("The (list of) Potential instances includes dissipative, but you did not provide the 3D velocity (required for dissipative forces")
      if isList:
          sum= 0.
          for pot in Pot:
              if isinstance(pot,DissipativeForce):
                  sum+= pot.rforce(R,z,phi=phi,t=t,v=v,use_physical=False)
              else:
                  sum+= pot.rforce(R,z,phi=phi,t=t,use_physical=False)
          return sum
      elif isinstance(Pot,Potential):
          return Pot.rforce(R,z,phi=phi,t=t,use_physical=False)
      elif isinstance(Pot,DissipativeForce):
          return Pot.rforce(R,z,phi=phi,t=t,v=v,use_physical=False)
      else: #pragma: no cover 
          raise PotentialError("Input to 'evaluaterforces' is neither a Potential-instance or a list of such instances")
docs: NAME:
  
         evaluaterforces
  
      PURPOSE:
  
         convenience function to evaluate a possible sum of potentials
  
      INPUT:
  
         Pot - a potential or list of potentials
  
         R - cylindrical Galactocentric distance (can be Quantity)
  
         z - distance above the plane (can be Quantity)
  
         phi - azimuth (optional; can be Quantity)
  
         t - time (optional; can be Quantity)
  
         v - current velocity in cylindrical coordinates (optional, but required when including dissipative forces; can be a Quantity)
  
      OUTPUT:
  
         F_r(R,z,phi,t)
  
      HISTORY:
  
         2016-06-10 - Written - Bovy (UofT)