Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. def visco_P():
  2. global P; global p; global pos; global N; global m
  3. ret = np.zeros([3, N])
  4. for i in range(N):
  5. for j in range(N):
  6. v_pis=v_pi(i,j)
  7. b=m*(2*np.sqrt(P[j]*P[i])/(p[j]*p[i])+v_pis)*1/2*(gradker(pos[:, i], pos[:, j], i) + gradker(pos[:, i], pos[:, j], j))
  8. ret[:, i] += b
  9. ret[:, j] -= b
  10. return ret
  11. #speed sound
  12. def v_pis(i, j):
  13. global p; global pos; global vel; global N; global c
  14. global h;
  15. alpha=1
  16. beta=2
  17. nu=0.01
  18. pij=(p[j]+p[i])/2
  19. mu=0
  20. h=(h[i]+h[j])/2
  21. r=pos[:, i]-pos[:, j]
  22. v=vel[:, i]-vel[:, j]
  23. if(np.dot(r, v)<0):
  24. mu=np.dot(r, v)/(h*((r/h)**2+nu))
  25. return (-alpha*mu*c+beta*(mu**2))/pij
  26.  
  27. def grad_v():
  28. global P; global p; global pos; global vel; global N; global m;
  29. grad = np.zeros([1, N])
  30. for i in range(N):
  31. for j in range(i):
  32. vij=vel[:,i]-vel[:, j]
  33. b1=-1/p[i]*m*1/2*(np.dot(gradker(pos[:, i], pos[:, j], i), vel) + np.dot(gradker(pos[:, i], pos[:, j], j), vel))
  34. b2=-1/p[i]*m*1/2*(np.dot(gradker(pos[:, j], pos[:, i], i), -vel) + np.dot(gradker(pos[:, j], pos[:, i], j)), -vel)
  35. grad[i] += b1
  36. grad[j] += b2
  37. return grad
  38.  
  39.  
  40.  
  41. def v_pis_al(i,j):
  42. global P; global p; global gradv; global pos; global vel; global N; global m;
  43. global c; global h;
  44. qi=0
  45. qj=0
  46. alpha=1
  47. beta=2
  48. if gradv[i]<0:
  49. qi=alpha*h[i]*p[i]*c*abs(gradv[i])+ beta*(h[i]**2)*p[i]*(gradv[i]**2)
  50. qi=qi/(p[i]**2)
  51. if gradv[j]<0:
  52. qj=alpha*h[j]*p[j]*c*abs(gradv[j])+ beta*(h[j]**2)*p[j]*(gradv[j]**2)
  53. qj=qj/(p[j]**2)
  54. return qi+qj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement