MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

NDSolve: Wrong Diagnosis as Delay Differential-Algebraic Equations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg105820] NDSolve: Wrong Diagnosis as Delay Differential-Algebraic Equations
  • From: blamm64 <blamm64 at charter.net>
  • Date: Sun, 20 Dec 2009 06:55:30 -0500 (EST)

Hi All,

Firs let me express my gratitude to all those who responded to my
previous post regarding a more efficient way to "knock holes" in list
of lists, your responses, both on and off-line, were truly impressive.

I'm still dealing with an analysis of a pneumatic/hydraulic system.  I
have advanced it to modeling the hydraulic side, and therein lies my
current issue.

Before I modeled hydraulics, I was specifying a (piston) displacement
via an integration of a velocity profile.  The velocity v[t_] profile
was: zero (inches/second) from zero seconds to 1/10 second, a linear
rise from 1/10 second to 2/10 second to a value of 1 inch/second, 1
inch/second from there to 4.5 seconds, and from there dead stop (back
to zero inches/second).  I then described the displacement as xP[t_] =
Integrate[v[s],{s,0,t}], making sure t was not set anywhere in the
notebook. I did it that way because I knew I was going to incorporate
a hydraulic component that regulated volumetric flow rate constraining
xP'[t], and therefore also constraining xP[t].  Now the reason I did
not use NIntegrate is because I have some forcing functions and xP[t]
dependent deformable control volumes taking xP[t] as arguments in my
(ordinary, non-linear) differential equations in time t, and
SetDelayed with NIntegrate would have been no help (I believe) since
in the differential equation xP[t] would be evaluated, and being still
symbolic at that point NIntegrate would have bombed.  I don't know how
to delay that evaluation until the diffeqs are submitted to NDSolve.

First question: how could I do that? (use NIntegrate such as xP[t_] :=
NIntegrate[v[s], {s,0,t}] and then delay the evaluation in a
differential equation such as eqn = ... forcingFunc[xP[t]] ... == 0,
until the differential equation is submitted to NDSolve).

Once I incorporated hydraulics, there is one component that regulates
volumetric flow rate as a function of pressure *difference* across
it.  I have the performance characteristic for that component
(volumetric flow rate versus pressure difference).  I import the
performance characteristic data and create an InterpolationFunction,
and call it qFCon.  So qFCon[p1[t] - p2[t]] would yield the volumetric
flow rate at the instant t of the pressure difference p1[t] - p2[t]
across it.

To make it easier, for me, I define another function: qFC[tau_] = qFCon
[ (p3[tau] - p4[tau]) ], since p3 and p4 are always the pressures to
be "differenced" across it.  Since I'm not yet including the bulk
modulus of the liquid (captures slight compressibility of hydraulic
fluid which yields pretty dramatic effects once entrained air is
considered), absolute incompressibility mandates the relationship xP
[t_] = Integrate[qFC[s],{s,0,t}]/areaPh, where areaPh is the area of
the hydraulic side of the piston pushing fluid through this flow
regulating device ("pressure compensated flow control valve").  areaPh
does not change with time t.  Again, I still have xP[t] dependent
control volumes (they change volume as the piston moves, three of
them, in fact) and xP[t] dependent forcing functions (loads on the
piston), so I'm still in the "integrate" situation I had before
incorporating hydraulics.  I should add the stuff I did before
incorporating hydraulics worked just fine and the results looked very
reasonable.

Now I have five pressures that are the (time) dependent variables and
I have *four* diffeqs and *one* algebraic equation; the last pressure
(p5[t]) has no derivative term (since I'm not yet modeling bulk
modulus effects).  No big deal, I think, since before incorporating
hydraulics I've submitted the (non-hydraulic) diffeqs both with
"SolveDelayed -> True" and "SolveDelayed -> False" and never received
an issue from NDSolve.

With my new hydraulics stuff incorporated, if I submit the 5 diffeqs
to NDSolve with "SolveDelayed -> False" NDSolve comes back with one of
the functions has a zero order derivative so the set will be treated
as a system of differential-algebraic equations.  So far so good since
that's correct.  The next message I get is NDSolve does not currently
solve *DELAYED* differential-algebraic equations!  and quits with an
echo of the submission to it.  I looked (and looked and looked)
through the echo and *nowhere* in sight is there a term with
somefunction[somevariable[t - c]], where c is a constant.

Yeah, sure, there are some terms in the echoed diffeqs that have
something like " InterpolatingFunction[ ... ,<>] [p3[t] - p4[t]] " and
" InterpolatingFunction[ ... ,<>] [p3[t] - p4[t]] (p3'[t] - p4'[t]) "
in them, and some with that integral expression with p3[s] - p4[s] in
it (with limits zero and t), but absolutely, unequivocally no delay
terms.

As I wrote above, the integral terms never gave NDSolve problems
before, so I don't think that's where NDSovle is "tripping up" and
making, I believe, a mistake.

Now, has *anyone* experienced that??

Does *anyone* have an idea why NDSolve would "think" some or all the
equations are delay type when in fact NOWHERE is there an explicit
delay argument?  What else besides an explicit delay argument might
lead NDSolve to decide (incorrectly in my opinion) it's been handed
delay differential-algebraic equations?

Last note: when I do use "SolveDelayed -> True", NDSolve skips the
first message about this set being differential-algebraic, and goes
straight to the bomb off of it does not currently solve delay
differential-algebraic equations.

Once again, if you waded through this, thanks.  And if you care to
respond with assistance, it would be greatly appreciated.

-Brian L.



  • Prev by Date: ChartLabels for Stacked, Grouped BarCharts?
  • Next by Date: Solving a list of equations saved in a file
  • Previous by thread: Re: ChartLabels for Stacked, Grouped BarCharts?
  • Next by thread: Solving a list of equations saved in a file