Message Boards Message Boards

System overdetermined

Hello! I am coding the two-dimensional (2D) transient heat equation enter image description here

to simulate wood drying by radio frequency and vacuum. I defined the initial and boundary conditions as follows:

enter image description here

enter image description here

enter image description here

, but when I ran NDSolve, the following appears: NDSolveValue::overdet: There are fewer dependent variables, {T[x,y,t]}, than equations, so the system is overdetermined.

enter code here ClearAll;
ec = rho*cp*D[T[x, y, t], t] == 
  k*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]) + q; f = 6780000; e = 30000; \[Epsilon] = 55.33*10^-12;
  k = 104; h = 10; rho = 410; cp = 2.2; To = 300; Tamb = 323;
  q = f*e^2*\[Epsilon];
  alpha = k/(rho*cp); \[CapitalOmega] = Rectangle[{0, 0}, {0.02, 0.01}];
  ci = T[x, y, 0] == To;
  cc = {D[T[x, y, t], x] == 
      NeumannValue[0, x \[Element] \[CapitalOmega]], 
     D[T[x, y, t], y] == NeumannValue[0, y \[Element] \[CapitalOmega]]}; Needs["NDSolve`FEM`"]
     sln = NDSolveValue[{ec, ci, cc}, 
        T, {t, 0, 1000}, {x, y} \[Element] \[CapitalOmega], 
        Method -> {"PDEDiscretization" -> {"MethodOfLines", 
            "SpatialDiscretization" -> {"FiniteElement"}}}]; ***NDSolveValue::overdet: There are fewer dependent variables, {T[x,y,t]}, than equations, so the system is overdetermined.***

I need help, I can't solve the program. I have tried describing the domain explicitly, but I keep getting errors. Thanks in advance

POSTED BY: Yesenia Tapia
11 Replies

I do not understand your problem, and my old version of Mathematica doesn't know several of your functions. But you may want to have a look at this

ec = rho*cp*D[T[x, y, t], t] == k*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]) + q;
 f = 6780000; e = 30000; \[Epsilon] = 55.33*10^-12;
k = 104; h = 10; rho = 410; cp = 2.2; To = 300; Tamb = 323;
q = f*e^2*\[Epsilon];
alpha = k/(rho*cp); \[CapitalOmega] = Rectangle[{0, 0}, {0.02, 0.01}];
ci = T[x, y, 0] == To;
cc = {D[T[x, y, t], x] == 0 /. x -> 0, 
  D[T[x, y, t], y] == 0 /. y -> 0, D[T[x, y, t], x] == 0 /. x -> 1, 
  D[T[x, y, t], y] == 0 /. y -> 1}
sln = NDSolve[{ec, ci, cc}, T, {t, 0, 20}, {x, 0, 1}, {y, 0, 1}];
fT = T /. Flatten[sln]
Animate[
 Plot3D[fT[x, y, t], {x, 0, 1}, {y, 0, 1}, PlotRange -> {200, 9000}],
 {t, 0, 20}]
POSTED BY: Hans Dolhaine

By the way, it may be helpful if you tell to the community more of the physical problem you want to describe.

I added a source of heat at the origin of the square (your q substituted by an e-function) and you can see how the temperature there rises quite fast ( this did not work when I placed it in the middle of the square. I don't know why)

To get nice pics I changed the time domain by dividing your k by a factor of 1000.

ec = rho*cp*D[T[x, y, t], t] == 
   k*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]) + 
    1000 Exp[-5 (x^2 + y^2^2)];
f = 6780000; e = 30000; \[Epsilon] = 55.33*10^-12;
k = 104/1000; h = 10; rho = 410; cp = 2.2; To = 300; Tamb = 323;
q = f*e^2*\[Epsilon];
alpha = k/(rho*cp); \[CapitalOmega] = Rectangle[{0, 0}, {0.02, 0.01}];
ci = T[x, y, 0] == To;
cc = {D[T[x, y, t], x] == 0 /. x -> 0, 
  D[T[x, y, t], y] == 0 /. y -> 0, D[T[x, y, t], x] == 0 /. x -> 1, 
  D[T[x, y, t], y] == 0 /. y -> 1}
sln = NDSolve[{ec, ci, cc}, T, {t, 0, 1000}, {x, 0, 1}, {y, 0, 1}];
fT = T /. Flatten[sln]

and show it

Animate[Plot3D[fT[x, y, t], {x, 0, 1}, {y, 0, 1},  PlotRange -> {300, 400}], {t, 0, 500}]

If this source of heat dies away, here exponentially, the temperature rises as well, this gets slower and the temperature is equilibrated throughout the square.

ec = rho*cp*D[T[x, y, t], t] == 
   k*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]) + 
    1000 Exp[-5 (x^2 + y^2^2)] Exp[-.01 t];
f = 6780000; e = 30000; \[Epsilon] = 55.33*10^-12;
k = 104/1000; h = 10; rho = 410; cp = 2.2; To = 300; Tamb = 323;
q = f*e^2*\[Epsilon];
alpha = k/(rho*cp); \[CapitalOmega] = Rectangle[{0, 0}, {0.02, 0.01}];
ci = T[x, y, 0] == To;
cc = {D[T[x, y, t], x] == 0 /. x -> 0, 
  D[T[x, y, t], y] == 0 /. y -> 0, D[T[x, y, t], x] == 0 /. x -> 1, 
  D[T[x, y, t], y] == 0 /. y -> 1}
sln = NDSolve[{ec, ci, cc}, T, {t, 0, 1000}, {x, 0, 1}, {y, 0, 1}];
fT = T /. Flatten[sln]



Animate[Plot3D[fT[x, y, t], {x, 0, 1}, {y, 0, 1},  PlotRange -> {300, 400}], {t, 0, 1000}]
POSTED BY: Hans Dolhaine

Thank you very much, could you explain its contour condition to me? In my case I want to have a boundary condition where the heat flow transfer in the domain is by convection, using the NeummanValue command (v12.1)

POSTED BY: Yesenia Tapia

As my Mathematica doesn't know the NeumannValue command, I don't know what it means and guessed it could mean the contour conditions I used.

POSTED BY: Hans Dolhaine

There is a typo in my last post in ec. y^2^2 should read y^2.

I don't know why it didn't work (perhaps an uncleared variable), but here is the code for a heat source in the center:

ec = rho*cp*D[T[x, y, t], t] ==  k*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]) + 
1000 Exp[-5 ((x - .5)^2 + (y - .5)^2)] Exp[-.01 t];
f = 6780000; e = 30000; \[Epsilon] = 55.33*10^-12;
k = 104/1000; h = 10; rho = 410; cp = 2.2; To = 300; Tamb = 323;
q = f*e^2*\[Epsilon];
alpha = k/(rho*cp); \[CapitalOmega] = Rectangle[{0, 0}, {0.02, 0.01}];
ci = T[x, y, 0] == To;
cc = {D[T[x, y, t], x] == 0 /. x -> 0, 
  D[T[x, y, t], y] == 0 /. y -> 0, D[T[x, y, t], x] == 0 /. x -> 1, 
  D[T[x, y, t], y] == 0 /. y -> 1}
sln = NDSolve[{ec, ci, cc}, T, {t, 0, 1000}, {x, 0, 1}, {y, 0, 1}];
fT = T /. Flatten[sln]

Animate[Plot3D[fT[x, y, t], {x, 0, 1}, {y, 0, 1}, PlotRange -> {300, 400}], {t, 0, 1000}]
POSTED BY: Hans Dolhaine

And what exactly do you want to describe? The temperature within your square (a model for a piece of wood?), and what does your q mean, or the diffusion of a substance (water) our of the square?

POSTED BY: Hans Dolhaine

Dear, I want to describe the heat transfer during the drying of wood from a sample. The q means the generation of heat by radio frequency and vacuum.

regards

POSTED BY: Yesenia Tapia

When you define the boundary condition for x and y evaluated at 1, do you mean that your sample has a length of 0 to 1?

I try to replace that 1 with the value from my sample and it shows me the error:

NDSolve :: bcedge: Boundary condition (T ^ (1,0,0)) [0.02, y, t] == ​​0 is not specified on a single edge of the boundary of the computational domain.

POSTED BY: Yesenia Tapia

Yes, my sample is a square with boundaries of length 1. It should be easy do modify the code.

Where do you try to replace the 1?

But

The q means the generation of heat by radio frequency

Your q operates at each point within the square, meaning that the same amount of heat is delivered throughout the square. The temperature rises steadily and uniformly, That means you don't need your heat-conduction-equation. And this is shown in my very 1st answer. The temperature rises uniformly.

So, what do you want to calculate?

POSTED BY: Hans Dolhaine

The 1 I replace in OMEGA, cc and sln by the dimensions of my sample and I get the error:

NDSolve :: bcedge: Boundary condition (T ^ (1,0,0)) [0.02, y, t] == ​​0 is not specified on a single edge of the computational domain boundary
POSTED BY: Yesenia Tapia

I don't know what happens here. As I told you I have an old version of Mathematica, which doesn't understand many of your commands.

Here is a code in which I changed the length of the square to 3.6. As before the flow of heat at the boundaries is zero (that are your bc's) and the q gives a constant supply of energy at each point, giving rise to a uniform rise of T throughout the square (meaning. you don't need your partial diffequation)

ec = rho*cp*D[T[x, y, t], t] ==    k*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]) + q;
f = 6780000; e = 30000; \[Epsilon] = 55.33*10^-12;
k = 104; h = 10; rho = 410; cp = 2.2; To = 300; Tamb = 323;
q = f*e^2*\[Epsilon];
alpha = k/(rho*cp);
ci = T[x, y, 0] == To;
(* new Length of sides of square*)
xL = 3.6;
cc = {D[T[x, y, t], x] == 0 /. x -> 0,  D[T[x, y, t], y] == 0 /. y -> 0, 
D[T[x, y, t], x] == 0 /. x -> xL,  D[T[x, y, t], y] == 0 /. y -> xL};

sln = NDSolve[{ec, ci, cc}, T, {t, 0, 20}, {x, 0, xL}, {y, 0, xL}];
fT = T /. Flatten[sln]

Animate[Plot3D[fT[x, y, t], {x, 0, xL}, {y, 0, xL}, 
  PlotRange -> {200, 9000}], {t, 0, 20}]

My email is h.dolhaine@gmx.de

POSTED BY: Hans Dolhaine
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract