I am essentially wanting to solve Navier Stokes in the [z,r,t] dimensions (2D+Unsteady Flow) for pressure driven flow. However, I keep getting an error I am unable to resolve in my Dsolve such as:

"To avoid possible ambiguity, the arguments of the dependent variable in u[z,r,t] should literally match the independent variables. "

R = .5;
rc = .47;
\[Mu] = 1;
\[Rho] = 1;

fz = {u[z, r, t]*D[u[z, r, t], z] - \[Mu]*D[u[z, r, t], z, z] + 
    D[P[z], z] == \[Mu]*(1/r*D[r*D[u[z, r, t], r], r]) - 
    v[z, r, t]*D[u[z, r, t], r] - \[Rho]*D[u[z, r, t], t]}

fr = {\[Rho]*(D[v[z, r, t], t] + v*D[v[z, r, t], r] + 
      u[z, r, t]*D[v[z, r, t], z]) == \[Mu]*(1/r*
       D[r*D[v[z, r, t], r], r] - v[z, r, t]/r^2 + D[v[z, r, t], z])}
contEqu = {D[u[z, r, t], z] == -1/r*D[r*v[z, r, t], r]};

eq = {fz, fr}  

bcs = {u[1, R, t] == 0, v[1, R, t] == 0, u[1, rc, t] == 0, 
  v[1, rc, t] == 0, u[0, rc, t] == 0, v[0, rc, t] == 0, 
  u[0, R, t] == 0, u[z, r, 0] == newIC[z]}  

**DSolve[{eq}, {u[z, r, t], v[z, r, t]}, {z, 0, 5}, {r, rc, R}, {t, 0, 

Any help would be greatly appreciated.

  • $\begingroup$ Welcome to Mathematica.SE! I hope you will become a regular contributor. To get started, 1) take the introductory Tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise. $\endgroup$
    – bbgodfrey
    Aug 21, 2015 at 15:47
  • $\begingroup$ 1) Your DSolve syntax incorrect; you seem to be using syntax that would be more appropriate for NDSolve. 2) your function v appears once without arguments in fr: it should probably appear as v[z, r, t] instead. Maybe you could start from there. $\endgroup$
    – MarcoB
    Aug 21, 2015 at 16:27

1 Answer 1


It is highly unlikely that your equations can be solved with DSolve, because they are nonlinear. Instead use, NDSolve To do so, P[z] and newIC[z] must be defined. For now, I set them to zero. Also, boundary conditions must be defined at surfaces, not corners, which I also fixed. Finally, there was one occurrence of v without arguments in fr, which I fixed. With these changes,

R = .5; rc = .47; μ = 1; ρ = 1;

fz = u[z, r, t]*D[u[z, r, t], z] - μ*D[u[z, r, t], z, z] == 
    μ*(1/r*D[r*D[u[z, r, t], r], r]) - v[z, r, t]*D[u[z, r, t], r] - ρ*D[u[z, r, t], t];
fr = ρ*(D[v[z, r, t], t] + v[z, r, t]*D[v[z, r, t], r] + u[z, r, t]*D[v[z, r, t], z]) == 
    μ*(1/r*D[r*D[v[z, r, t], r], r] - v[z, r, t]/r^2 + D[v[z, r, t], z]);
contEqu = D[u[z, r, t], z] == -1/r*D[r*v[z, r, t], r];
eq = {fz, fr}  

bcs = {u[z, R, t] == 0, v[z, R, t] == 0, u[z, rc, t] == 0, v[z, rc, t] == 0, 
       u[0, r, t] == 0, v[0, r, t] == 0, u[5, r, t] == 0, v[5, r, t] == 0, 
       u[z, r, 0] == 1, v[z, r, 0] == 1} 

{su, sv} = NDSolveValue[{eq, bcs}, {u, v}, {z, 0, 5}, {r, rc, R}, {t, 0, 1}]


Plot3D[su[z, r, 1], {z, 0, 5}, {r, rc, R}, AxesLabel -> {z, r, u}]

enter image description here

Define your two functions and provide alternative boundary conditions for more interesting results.

  • $\begingroup$ Thank you for the direction bbgodfrey, that is what I needed to get off the ground. $\endgroup$
    – A Stone
    Aug 21, 2015 at 18:24
  • $\begingroup$ @AStone Glad I could help. By the way, my sample answer generates a warning message that boundary conditions are incompatible. This happens at corners, where one boundary might have a value of one and the other of zero, for instance. Usually, not a problem but sometimes it is. Try to avoid this with your real boundary conditions. Thanks for accepting the answer. $\endgroup$
    – bbgodfrey
    Aug 22, 2015 at 2:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.