particle solver