code: def _evaluatephiforces(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._phiforce_nodecorator(R,z,phi=phi,t=t,v=v)
              else:
                  sum+= pot._phiforce_nodecorator(R,z,phi=phi,t=t)
          return sum
      elif isinstance(Pot,Potential):
          return Pot._phiforce_nodecorator(R,z,phi=phi,t=t)
      elif isinstance(Pot,DissipativeForce):
          return Pot._phiforce_nodecorator(R,z,phi=phi,t=t,v=v)
      else: #pragma: no cover 
          raise PotentialError("Input to 'evaluatephiforces' is neither a Potential-instance, DissipativeForce-instance or a list of such instances")
docs: Raw, undecorated function for internal use