9
$\begingroup$

Executing the program below I get the

... is not a polynomial

error message. I don't have an idea why I am getting this -- any suggestions?

ClearAll["Global`*"]

Needs["NDSolve`FEM`"]

Q = 60;

A = 4000;

nb = 0.42;

dens = 1.48;

Co = 0.05;

Vx = Q/A;

Dx = 73.51*Vx + 0.282;

R = 1 + (dens/nb)*(0.9292/(1 + 0.092*Ccu[x, t])^2);

reator = Dx*D[Ccu[x, t], x, x] - Vx*D[Ccu[x, t], x] - 
   R*D[Ccu[x, t], t];

initial = Ccu[x, 0] == 0;

b1 = {Ccu[0, t] == Co, Ccu[300000, t] == 0};

regiao = ImplicitRegion[True, {{x, 0, 500000}}];

solucao = 
 NDSolve[{reator == 0, initial, 
   DirichletCondition[Ccu[x, t] == Co, x == 0], 
   DirichletCondition[Ccu[x, t] == 0, x == 100000]}, 
   Ccu, {t, 0, 100000}, {x} ∈ regiao]

CoefficientArrays::poly: -(1+3.27432/(1+0.092 Ccu)^2) Ccu\$11498-(3 Ccu\$11499)/200 + 1.38465 Ccu\$11500 is not a polynomial. >>

NDSolve::femper: PDE parsing error of {-(1+3.27432/(1+0.092 Ccu)^2) Ccu\$11498-(3 Ccu\$11499)/200+1.38465 Ccu\$11500}. Inconsistent equation dimensions. >>

$\endgroup$
  • $\begingroup$ Welcome to Mathematica.SE! I suggest the following: 1) As you receive help, try to give it too, by answering questions in your area of expertise. 2) Read the faq! 3) 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. Also, please remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign! $\endgroup$ – Michael E2 Jul 8 '15 at 4:12
10
$\begingroup$

A small remark on the error:

CoefficientArrays::poly: -(1 + 3.27432/(1 + 0.092 Ccu)^2) Ccu11498 - (3 Ccu11499)/200 + 1.38465 Ccu$11500 is not a polynomial. >>

First note that Ccu is your dependent variable in your PDE. The expression being complained about has several variables, Ccu and ones like Ccu$11498.. (The ones like Ccu$11498 are internal, localized variables representing the derivatives of Ccu in the PDE). Since Ccu appears in the denominator, the expression is not a polynomial. You can call CoefficientArrays on the expression to see the identical message.

As Michael Siefert has pointed out, FEM handles only linear PDEs currently (V10.1).

As I pointed out in Kernel quits without error in NDSolveValue, this error should be caught internally and the more useful error NDSolve::femnonlinear returned in its place.

$\endgroup$
8
$\begingroup$

Mathematica's finite element PDE methods only work for linear PDEs as of v10.1. See here or here for some other tips on how to deal with this. Given the form of your equation (some kind of non-linear reaction-diffusion equation?), I would suspect that you're better off using Mathematica's default "Method of Lines" algorithm than trying to use finite element methods.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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