0
$\begingroup$

I am trying to solve the following hyperbolic equation with given boundary conditions:

two muppets

I choose as initial condition $u=1$, and evolve the above hyperbolic equation until reaching a stationary state with some predetermined tolerance.

Spatial derivatives are approximated by taking standard centered differences everywhere.

The Mathematica input is:

φ[z] = q*(1/z + (-1*q)/(-1*z));
η[z] := k* (1/z + (-1*q)/(-1*z)); 
r[ρ, z] := sqrt[ρ^2 + z^2];

NDSolve[ {Derivative[u[t, ρ, z], {t, 2}] == 
   Derivative[u[t, ρ, z], {ρ, 2}] + (1/ρ)*
     Derivative[u[t, ρ, z], {ρ, 1}] +  
    Derivative[
     u[t, ρ, z], {z, 2}] - ((φ[z]^4)/4)* ( 
      Derivative[(η[z] + u[t, ρ, z]  - 1)/φ[
           z], {ρ, 
          1}] Derivative[(η[z] + u[t, ρ, z]  + 
            1)/φ[z], {ρ, 1}] + 
       Derivative[(η[z] + u[t, ρ, z]  - 1)/φ[
           z], {z, 
          1}] Derivative[(η[z] + u[t, ρ, z]  + 
            1)/φ[z], {z, 1}]) *((η[z] + 
          u[t, ρ, 
           z])*((η[z] + u[t, ρ, z])^2 - (φ[z]^2)/
           2) )^(-1), u[0, ρ, z] = 0, u[t, 6, z] = 1, 
  u[t, ρ, -6] = u[t, ρ, 6]}, 
 u[t, ρ, z], {t, 0, 10}, {ρ, 0, 6}, {z, -6, 6}, 
 Method -> {"MethodOfLines", 
   "SpatialDiscretization" -> {"TensorProductGrid", 
     "DifferenceOrder" -> "Pseudospectral"}}]

which gives errors.

I would like to ask if you could help me to solve this problem.

$\endgroup$
8
  • 3
    $\begingroup$ Irina, could you please retype Mathematica's input in a form one could copy to notebook? $\endgroup$ Jul 7, 2014 at 22:05
  • $\begingroup$ Gregory Rut, I'm new at this website, and couldn't find a way to appropriate form. I'll be glad if you make changes for any convenience. $\endgroup$
    – Dilaton
    Jul 7, 2014 at 22:51
  • $\begingroup$ @Irina, copy the code directly from the notebook and paste it into the edit window. Then select the code and press the code button, which looks like two braces, {}, above the edit window. $\endgroup$
    – Michael E2
    Jul 8, 2014 at 3:12
  • $\begingroup$ And don't TeX $ on the code. $\endgroup$
    – Michael E2
    Jul 8, 2014 at 3:20
  • $\begingroup$ @Michael E2, thanks for the tip. Now, please, can someone help me to handle this problem? $\endgroup$
    – Dilaton
    Jul 8, 2014 at 12:39

1 Answer 1

3
$\begingroup$

Comment: I think you want D instead of Derivative. Also == instead of =. And you probably want the functions defined with patterns z_ etc. But there are errors that you'll have to address. (Or perhaps someone else.)

ClearAll[φ, η, r, u];
φ[z_] = q*(1/z + (-1*q)/(-1*z));
η[z_] := k*(1/z + (-1*q)/(-1*z));
r[ρ_, z_] := Sqrt[ρ^2 + z^2];

pde = D[u[t, ρ, z], {t, 2}] == 
   D[u[t, ρ, z], {ρ, 2}] + (1/ρ)*D[u[t, ρ, z], {ρ, 1}] + 
    D[u[t, ρ, z], {z, 2}] - ((φ[z]^4)/4)*
      (D[(η[z] + u[t, ρ, z] - 1)/φ[z], {ρ, 1}] D[(η[z] + u[t, ρ, z] + 1)/φ[z], {ρ, 1}] + 
       D[(η[z] + u[t, ρ, z] - 1)/φ[z], {z, 1}] D[(η[z] + u[t, ρ, z] + 1)/φ[z], {z, 1}])*
         ((η[z] + u[t, ρ, z])*((η[z] + u[t, ρ, z])^2 - (φ[z]^2)/2))^(-1);
bc = {u[0, ρ, z] == 0,
   u[t, 0, z] == 1,
   u[t, ρ, -6] == u[t, ρ, 6]};

NDSolve[{pde, bc}, 
 u[t, ρ, z], {t, 0, 10}, {ρ, 0, 6}, {z, -6, 6}, 
 Method -> {"MethodOfLines", 
   "SpatialDiscretization" -> {"TensorProductGrid", 
     "DifferenceOrder" -> "Pseudospectral"}}]

NDSolve::ivone: Boundary values may only be specified for one independent variable. Initial values may only be specified at one value of the other independent variable. >>

I'll leave this up for a while, but I'll probably delete it since it is not an answer. :( Unless I forget. Maybe someone else can use it.

Update

q and k have to be given numeric values for NDSolve to work. In NDSolve, ρ starts at 0 and there's a 1/ρ in the PDE, which will give you a 1/0 error (when the NDSolve finally works). There may be other such singularities to deal with, but this one was obvious.

Here NDSolve goes to work but gives the 1/0 error. The trick to get it to work is to give a complete IVP for t. The highest order derivative is two, so initial values for u and its t derivative have to be given. (I do not know if this is how you should fix your problem.)

q = 2; k = 1/10; (* random values)
bc = {u[0, ρ, z] == 0, 
   Derivative[1, 0, 0][u][0, ρ, z] == 1,
   u[t, 0, z] == 1,
   u[t, ρ, -6] == u[t, ρ, 6]};
NDSolve[{pde, bc},
 u[t, ρ, z],
 {t, 0, 10}, {ρ, 0, 6}, {z, -6, 6}, 
 Method -> {"MethodOfLines", 
   "SpatialDiscretization" -> {"TensorProductGrid", 
     "DifferenceOrder" -> "Pseudospectral"}}]

At this point, I believe I am stuck. The problem, I believe, is now a mathematical/scientific one of what the appropriate boundary and initial conditions are. It is also possible that there is an error (typo) in the PDE.

If you need to vary q and k as parameters, consider using ParametricNDSolve. But the basic NDSolve problem should be fixed first.

Sorry I can't be more help.

$\endgroup$
3
  • 2
    $\begingroup$ Maybe someone more familiar with the solver for PDEs can. In any case I think the way to go with these things is to start small and build up, not write a big piece of code and then start trying to weed out various syntax errors, only to encounter algorithmic errors. $\endgroup$
    – acl
    Jul 8, 2014 at 12:54
  • $\begingroup$ @Michael E2, thanks. I got the same error message and have no idea how to correct. $\endgroup$
    – Dilaton
    Jul 8, 2014 at 12:55
  • $\begingroup$ @Irina Sqrt instead of sqrt $\endgroup$
    – eldo
    Jul 8, 2014 at 13:00

Your Answer

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

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