How to make an ordinary homework problem into a computational thinking exercise - Fluid Mechanics
Prerequesites (for this example)
- Students will have completed ENGR-1330; CE 2301; and be enrolled in CE 3305
- Students (by virtue of ENGR-1330) will have functioning implementations of JupyterLab
Methodology for Problem (and Solution)
-
Present problem verbatim from usual source, i.e. textbook
-
Review main principles of CT :
- Algorithm - A list of steps that you can follow to finish a task
- Decomposition - Break a problem down into smaller pieces
- Abstraction - Pulling out specific differences to make one solution work for multiple problems
- Pattern Matching - Finding similarities between things
-
CT Problem Solving Protocol (from ENGR-1330)
- Explicitly state the problem
- State:
- Input information
- Governing equations or principles, and
- The required output information.
- Work a sample problem by-hand for testing the general solution.
- Develop a general solution method (coding).
- Test the general solution against the by-hand example, then apply to the real problem.
-
Start the problem/solution example; explicitly identify CT principles as problem proceedes.
-
Choose meaningful problems
Problem Statement (Cite Source)
Jet-type pumps are often used for special applications, such as to circulate the flow in basins in which fish are farmed. The use of a jet-pump reduces mechanical injury to the fish.
Figures 1 and 2 show the basic concept for this application of a jet pump.
Figure 1 | Plan View of a fish race | |
---|---|---|
Figure 2 | Elevation detail of a fish race jet pump | |
---|---|---|
For this type of basin the jets would have to increase the water surface elevation by an amount equal to , where is the average velocity in the basin ( as shown in the figures). Propose a basic design for a jet system that would make such a recirculating system work for a channel ft wide and ft deep. That is determine the nozzle diameter, speed, and number of nozzles. The design should specify nominal diameters of nozzles using commercially available pipes (1-in., 2-in, ...). How do the specifications change if the desired water depth is to be feet deep (to accomodate more fish)
Hint This problem involves "analysis" to determine the required momentum added by the jets and the total jet area and speed The design should be based on this analysis with an understanding that the total jet area should be small as compared to the total flow area (otherwise the fish could get stuck!).
Problem Solving Protocol
Recall the problem solving protocols in ENGR-1330 https://3.137.111.182/engr-1330-webroot/1-Lessons/Lesson02/OriginalPowerpoint/ENGR-1330-Lesson2.html
- Define the problem (problem statement)
- Gather information (identify known and unknown values, and governing equations)
- Generate and evaluate potential solutions
- Refine and implement a solution
- Verify and test the solution.
We can stipulate that Step 1 is already done,
Known Values:
- Geometry
- Liquid (Water) ( if we need properties we can get them from http://theodore-odroid.ttu.edu/documents/toolbox/fluidmechanics/WaterPropertiesUS/WaterPropertiesUS.html, or something similar
Unknown Values
- Jet diameter
- Jet speed
- Jet count (number of jets)
Governing Principles
These are going to be problem and discipline specific; in this case conservation of mass and momentum are going to be required.
Abstraction -- The Control Volume Diagram
At this point we are mostly trying to develop an algorithm, but are already about to apply abstraction when we create a Control-Volume Diagram of the mixing zone depicted in Figure 2.
Figure 3 | Control Volume Diagram of Mixing Zone | |
---|---|---|
Examining the diagram, we will further abstract by defining variables for our problem:
Decomposition - Continunity Analysis
Recall the continunity result from the Reynolds Transport Theorem:
Substitute the geometry from the problem conditions into the flux integral (the volume integral vanishes because we are considering steady flow) as
where
Notice that if the channel is a constant width, and we stipulate that the liquid is incompressible so that the density is some constant, we can factor these out to obtain
Rewrite in terms of as:
Divide by to obtain (which we will substitute into momentum shortly!)
Decomposition - Momentum Analysis
Recall the momentum result from the Reynolds Transport Theorem:
Consider force diffference:
where
Stipulate hydrostatic pressure forces at upstream and downstream faces
Now substitute into the momentum balance for the control volume
Notice that if the channel is a constant width, and we stipulate that the liquid is incompressible so that the density is some constant, we can factor these out to obtain
Now arrange momentum in terms of the jet as
Substitute from continunity
This equation is our model, it is implicit in , hence almost requires a computational approach to find a solution.
As a first step, lets try a predictor-correction approach - that is we will simply guess values for cetrain unknowns, and see how close we can make thw two sides of the model agree.
Guess-Check-Refine Approach
- Verify what we know about the problem:
Keep in mind that is proportional to the jet area, and the jets are small (unless we want to make our facility into a Bass-o-Matic https://www.youtube.com/watch?v=c06HorsmhjY
We will rearrange our model equation above, by dividing by
Then gather all the terms involving onto the left hand side as
Now we are ready for computation - if we "pick" the only unknown is ; therefore solvable. If we make a set of guesses, we can compute required jet speed and jet total area.
First some preliminary coding, to use different jet speeds for a given
dy = 0.1 #delta y
width = 8.0
grav = 32.2 # gravitational acceleration constant (US Customary Units)
u1 = 1.0 #free stream approach
y1 = 4.0 #approach depth
y2 = y1 + 6.0*(u1**2)/(2.0*grav)
rhs = -u1*u1*(y1-dy)/dy + (u1*u1*(y1-dy)**2)/(y2*dy) - grav*(y1**2-y2**2)/(2*dy)
for i in range(1,200):
uj = float(i)*0.1
lhs = uj**2*(1-dy/y2) + 2*u1*(y1-dy)*uj/y2
if abs(lhs-rhs) <=2: #only print when close
print('uj = ',round(uj,2),'LHS = ',round(lhs,2),'RHS = ',round(rhs,2))
uj = 10.1 LHS = 118.76 RHS = 119.56
uj = 10.2 LHS = 120.94 RHS = 119.56
So for a of 0.1, the required jet speed is somewhere around 10.1 feet per second. Now we need to determine the total jet area, and nominal sizes.
areajet = dy*width
import math
def howManyJets(jetarea,diameter):
perjet = 0.25*math.pi*diameter**2
if jetarea%perjet == 0:
howManyJets = jetarea/perjet
elif jetarea%perjet != 0:
howManyJets = jetarea//perjet + 1
return howManyJets
inches = 1/12
howManyJets(areajet,inches)
147.0
So for of 0.1 we will need 147 1-inch diameter jets. The next step is to refine and generalize our solution so we can explore different speeds - for example a 10 ft/sec jet will probably skin a fish, not healthy for our application.
For refinement, lets improve the precision of the jet speed calculation (i.e. automate the matching of lhs and rhs)
More to come
References
- list them here, link where possible
- list them here, link where possible
- list them here, link where possible