NDSolve, coupled equations, different number of variables

• To: mathgroup at smc.vnet.net
• Subject: [mg48736] NDSolve, coupled equations, different number of variables
• From: "Stergios J. Papadakis" <stergios.papadakis at jhuapl.edu>
• Date: Fri, 11 Jun 2004 23:59:05 -0400 (EDT)
• Organization: Johns Hopkins University Applied Physics Lab, Laurel, MD, USA
• Sender: owner-wri-mathgroup at wolfram.com

```Dear group,
I am trying to numerically solve a set of two coupled equations.  I'll
describe how they come about to motivate this.  I have a harmonic
oscillator (z''[t] + gamma*z'[t]+(omegbarmod[T])^2*z[t] == 0).  However,
the spring constant of that oscillator depends on its temperature
(omegabarmod is a funtion of T: omegabarmod[T]).
The temperature of the spring depends on the heat flow into the spring,
which depends on the position of the oscillator.  Using the 1-D heat
equation with boundary/initial conditions:

D[T[x, t], {t, 1}] == tdiff*D[T[x, t], {x, 2}],
T[x, 0] == 0,
T[0, t] == 0,
(D[T[x, t], {x, 1}] /. x -> barlength/2) == heatin[z[t]]

So, the position of the oscillating beam governs the heat input, which
is a time-varying Neumann boundary condition on the homogenous heat
equation governing the temperature of the bar, and the spring constant
of the oscillator is a function of the temperature of the bar at its center.

If I try:

result = NDSolve[{D[z[t], {t, 2}] + gamma*D[z[t], {t, 1}] ==
-(omegabarmod[T[barlength/2, t]])^2*z[t],
D[T[x, t], {t, 1}] == tdiff*D[T[x, t], {x, 2}],
T[x, 0] == 0,
T[0, t] == 0,
(D[T[x, t], {x, 1}] /. x -> barlength/2) == (1 -
E^(-t/(Pi/10^8)))*heatin[z[t]]/2,
z[0] == initialposition,
(D[z[t], {t, 1}] /. t -> 0) == 0},
{z, T}, {t, 0, numperiods*2*Pi/omegadrive}, {x, 0, barlength/2}];

(with all of the constants and the functions heatin[T] and
omegabarmod[T] defined previously, or course)

I get:

NDSolve::derlen:The length of the derivative operator Derivative[1] in
z'[t] is not the same as the number of arguments

Basically, it looks like it will not let me solve a system of equations
where z is a function of t only and T is a function of x and t.
I have also tried using the total derivative Dt in place of D for the
oscillator equation, but I get the same result.

I've run a bunch of test cases where I put independent equations and
boundary conditions into NDSolve.  It only solves them if they are
functions of the same number of variables.  Then I couple them together
in some way, and it still solves them.  So, the problem really seems
to be that I can't solve for z[t] and T[x,t].  I have spent a lot
of time trying things like making z[x,t] a function of both x and t
anyway, and trying to set up the boundary conditions in a way that
makes z essentially independent of x. If I decouple the equations and
use z[x,t] and T[x,t], it solves them, giving the solution that z is
independent of x, which would be fine.  However, when I couple the
equations again, I get underdetermined or overdetermined system errors.

If you have any ideas on how to pose this problem to Mathematica
I'd appreciate your help.

Thanks very much,

Stergios

```

• Prev by Date: Re: LogIntegral^(-1)
• Next by Date: Rotated X-Labels
• Previous by thread: RE: Creating combinations from a group of sets, PART 2
• Next by thread: Rotated X-Labels