Lesson05.mw
ORDINARY DIFFERENTIAL EQUATIONS POWERTOOL
Lesson 5  Application: Mixing Problems
Prof. Douglas B. Meade
Industrial Mathematics Institute
Department of Mathematics
University of South Carolina
Columbia, SC 29208
URL: http://www.math.sc.edu/~meade/
Email: meade@math.sc.edu
Copyright 2001 by Douglas B. Meade
All rights reserved

Outline of Lesson 5
5.A OneTank Mixing Problem
5.B Variable Volume Mixing Problem
5.C TwoTank Mixing Problem
Initialization
Warning, the name changecoords has been redefined
5.A OneTank Mixing Problem
Problem Statement
A tank initially contains 40 gal of sugar water having a concentration of 3 lb of sugar for each gallon of water. At time zero, sugar water with a concentration of 4 lb of sugar per gal begins pouring into the tank at a rate of 2 gal per minute. Simultaneously, a drain is opened at the bottom of the tank so that the volume of the sugarwater solution in the tank remains constant.
(a) How much sugar is in the tank after 15 minutes?
(b) How long will it take the sugar content in the tank to reach 150 lb? 170 lb?
(c) What will be the eventual sugar content in the tank?
Solution
The mathematical formulation of this problem must express the physical requirement that
( amount of sugar in tank) = ( rate sugar is added to tank )  ( rate sugar is removed from tank )
Let
denote the amount of sugar (pounds) in the tank at time
(minutes). Then, the rates in and out are respectively
> 
rate_out := (x(t)/40) * 2; 
so that the governing ODE is
> 
ode := diff( x(t), t ) = rate_in  rate_out; 
The amount of sugar in the tank initially, that is, when
, gives the initial condition
The ODE in this IVP is firstorder and linear. The integrating factor is
> 
mu(t) = intfactor( ode ); 
The solution to the IVP is
> 
sol := dsolve( { ode, ic }, x(t), [linear] ); 
(a)
The amount of sugar (in pounds) in the tank after 15 minutes is
(b)
The tank will contain 150 pounds of sugar at a time
(in minutes) satisfying
> 
eq150 := eval( sol, x(t)=150 ); 
Thus, the desired time is found by the calculations
> 
t150 := solve( eq150, t ): 
Repeating the same steps for the time when 170 pounds of sugar are in the tank leads to the equation
> 
eq170 := eval( sol, x(t)=170 ); 
whose solution is
> 
t170 := solve( eq170, t ): 
> 
t[`170 lbs`] = t170;
`` = evalf(t170);

This complexvalued solution is clearly not physically realistic. A quick inspection of the solution, graphed in Figure 5.1,
> 
plot( rhs(sol), t=0..120, title="Figure 5.1" ); 
shows that the amount of sugar in the tank reaches a steadystate limit that is well below 170 pounds. Therefore, at no time is there ever 170 pounds of sugar in the tank.
(c)
In (b) it was noted that the amount of sugar in the tank levels off below 170 pounds. The exact limit can be determined from the solution by looking at the limit as
, that is, at
> 
steady_state := map( Limit, sol, t=infinity ); 
whose value is
Note that
is an equilibrium solution for this ODE. However, be careful to avoid the common error of concluding that the limit is 160 pounds because
is an equilibrium solution. (Recall the logistic growth model, Lesson 3, Section B , which has two equilibria.)
5.B Variable Volume Mixing Problem
Problem Statement
Consider the previous problem, except that the outflow from the tank is at a rate of 3 gallons per minute.
(a) Find the formula for the volume of sugar water in the tank at any time. When is the tank empty?
(b) Find the IVP for the amount of sugar in the tank.
(c) Find the IVP for the concentration of sugar in the water.
(d) When is the tank empty? What is the concentration of sugar immediately before the tank is empty? How much sugar is in the tank at this time?
(e) Plot the amount of sugar and concentration of sugar in the tank up to the time the tank becomes empty. What happens to these solutions at later times?
Solution
(a)
The volume starts at 40 gallons. Every minute 2 gallons of sugar water are added to the tank and 3 gallons are removed; the net change is a loss of 1 gallon per minute. The rates "in" and "out" are respectively
so the timevarying volume in the tank is
> 
V := 40 + (Vrate_inVrate_out)*t; 
Note that
is the solution of the IVP
> 
odeV := diff( v(t), t ) = 2  3; 
as confirmed via
> 
dsolve( { odeV, icV }, v(t), [separable] ); 
(b)
The IVP for the amount of sugar in the tank is similar to the one in the previous example. There is no difference in the rate at which sugar enters the tank. The concentration of sugar exiting the tank is
and this is different because
is no longer constant. The rates "in" and "out" are now respectively
> 
Srate_out := (x(t)/V) * 3; 
Thus, the governing ODE is
> 
ode2 := diff( x(t), t ) = Srate_in  Srate_out; 
The initial condition is unchanged:
(c)
The IVP for the concentration of sugar in the tank is obtained from the ODE in (b) and the definition of the concentration,
, which is
> 
conc_eq := c(t) = x(t)/'V'; 
Rather than deriving the differential equation for
manually, the
dchange
command from the
PDEtools
package will be used to automate the process. It gives
> 
odeC := dchange( x(t) = c(t)*V, ode2, [c] ); 
The initial condition for the concentration is
(d)
The tank is empty when the volume of sugar water is zero. This occurs after 40 minutes, as obtained by
> 
t_empty := solve( V=0, {t} ); 
The concentration is found by solving the (linear) IVP found in (c), which is done via
> 
solC := dsolve( { odeC, icC }, c(t), [linear] ); 
Thus, the concentration at the instant the tank empties is
The amount of sugar in the tank as the tank empties is obtained by evaluating the solution
> 
sol2 := dsolve( {ode2,ic2}, x(t), [linear] ); 
at the time the tank empties. This gives
which is exactly what one would expect. (If not, think about it!)
(e)
The requested plots are
> 
plot( rhs(sol2), t=0..40, title=`Amount of sugar` ); 
and
> 
plot( rhs(solC), t=0..40, title=`Concentration of sugar` ); 
The concentration remains positive until
, but after
, the volume and amount of sugar become negative. Even though the IVPs have solutions for all time, for
these results are not physically meaningful.
5.C TwoTank Mixing Problem
Problem Statement
Two tanks, tank I and tank II, are filled with
gal of pure water. A solution containing
lb of salt per gallon is poured into tank I at a rate of
gal per minute. The solution leaves tank I at a rate of
gal/min and enters tank II at the same rate (
gal/min). A drain is adjusted on tank II and the solution leaves tank II at a rate of
gal/min. This keeps the volume of solution constant in both tanks (
gal). Show that the amount of salt solution in tank II, as a function of time t, is given by
.
NOTE: This is Exercise 14 (p. 73) from Differential Equations,
by Polking, Boggess, and Arnold (PrenticeHall, 2001).
Solution
Let
and
denote the amount of salt, in pounds, in tanks I and II, respectively, at time
. The initial conditions for the two tanks are respectively
The "rate in" for tank I is
lb/gal *
gal/min and the outflow is
lb/gal at a rate of
gal/min. Therefore, the ODE governing the amount of salt in tank I is
> 
odeI := diff( x(t), t ) = a*b  b*(x(t)/V); 
For tank II, the inflow is the same as the outflow from tank I and the outflow exactly matches the inflow. Thus, the ODE governing the amount of salt in tank II is
> 
odeII := diff( y(t), t ) = b*(x(t)/V)  b*(y(t)/V); 
The first equation in this pair is independent of the variable
. Hence, it can be solved first for
, and that result substituted into the second equation, making the second equation depend only on
. In general, both equations of a system will contain both variables, and the equations will then be coupled. Solution techniques for such systems will be developed in succeeding lessons.
In this example, the first equation is a firstorder linear ODE with integrating factor
> 
mu[1](t) = intfactor( odeI ); 
The solution to the IVP for tank I is therefore
> 
solI := dsolve( {odeI,icI}, x(t), [linear] ); 
To find the amount of salt in tank II, substitute the solution for tank I into the ODE for tank II, obtaining
> 
odeIIa := subs( solI, odeII ); 
Despite the somewhat complicated appearance of this ODE, note that it is linear, as is verified by
The integrating factor is then found to be
> 
mu[2](t) = intfactor( odeIIa ); 
The solution to the IVP for tank II is
> 
solII := dsolve( {odeIIa,icII}, y(t), [linear] ); 
Thus, the amount of salt in tank II at any time
, is
[Back to ODE Powertool Table of Contents]