When solving the Poisson equation numerically, you can use any programming language that allows for multi-dimensional arrays (C/C++, Fortran, Rust, Python, ....). While I imagine OpenFOAM and PETSc can be used, they are not required.1
You have a relatively simple PDE that you can apply discretization to use in a numerical model. In this way, your PDE would appear as, assuming a cylindrical model,2
\begin{align}\nabla^2\Phi\triangleq &
\frac{1}{r_i}\left(r_{i+1/2}\frac{\Phi_{i+1,j,k}-\Phi_{i,j,k}}{dr^2}-r_{i-1/2}\frac{\Phi_{i,j,k}-\Phi_{i-1,j,k}}{dr^2}\right) \\ &\quad+\frac{1}{r_i^2}\frac{\Phi_{i,j+1,k}+\Phi_{i,j-1,k}-2\Phi_{i,j,k}}{d\phi^2}\\
&\quad+\frac{\Phi_{i,j,k+1}+\Phi_{i,j,k-1}-2\Phi_{i,j,k}}{dz^2}=\rho(r_i,\,\phi_j,\,z_k)\tag{1}
\end{align}
This would require a 3D array for $\Phi$ and some tricks for handling $r\simeq0$. Note that under axial symmetry, the middle term vanishes as,
$$\Phi_{i,j+1,k}=\Phi_{i,j-1,k}=\Phi_{i,j,k},$$
which would require only a 2D array to solve since $j$ index wouldn't matter anymore. In either case, you need to solve Equation (1) for $\Phi_{i,j,k}$, which can then be used in a relaxation method (or any of the "See also" links in this Wikipedia entry) to find the potential to the given density profile.
Once you have that solution, you can use the same discretization to determine the velocity profile,
$$v(r_i)^2\simeq r_i\frac{\Phi_{i+1,j,k}-\Phi_{i-1,j,k}}{2\cdot dr}.$$
where the $j$ and $k$ indices on $\Phi$ would either be used to average over all heights or for a single slice.
1. My proverbial \$0.02 would be to not use those modules as knowing how to numerically solve PDEs and ODEs is a good tool to have in your possession.
2. For spherical systems, the radial term is of the form $r^{-2}\partial_r\left(r^2\partial_r\Phi\right)$; most sources I've seen prefer writing it as the split operator, $\partial^2_r\Phi+\frac{2}{r}\partial_r\Phi$, and deriving the finite difference stencil from that. It might be easier to just use Cartesian coordinates and compute the spherical/cylindrical/etc coordinates from the positions when computing the mass density.