Fluxes, scalars, vectors, tensors…. and, running in circles about them!

0. This post is written for those who know something about Thermal Engineering (i.e., fluid dynamics, heat transfer, and transport phenomena) say up to the UG level at least. [A knowledge of Design Engineering, in particular, the tensors as they appear in solid mechanics, would be helpful to have but not necessary. After all, contrary to what many UGC and AICTE-approved (Full) Professors of Mechanical Engineering teaching ME (Mech – Design Engineering) courses in SPPU and other Indian universities believe, tensors not only appear also in fluid mechanics, but, in fact, the fluids phenomena make it (only so slightly) easier to understand this concept. [But all these cartoons characters, even if they don’t know even this plain and simple a fact, can always be fully relied (by anyone) about raising objections about my Metallurgy background, when it comes to my own approval, at any time! [Indians!!]]]

In this post, I write a bit about the following question:

Why is the flux \vec{J} of a scalar \phi a vector quantity, and not a mere number (which is aka a “scalar,” in certain contexts)? Why is it not a tensor—whatever the hell the term means, physically?

And, what is the best way to define a flux vector anyway?


One easy answer is that if the flux is a vector, then we can establish a flux-gradient relationship. Such relationships happen to appear as statements of physical laws in all the disciplines wherever the idea of a continuum was found useful. So the scope of the applicability of the flux-gradient relationships is very vast.

The reason to define the flux as a vector, then, becomes: because the gradient of a scalar field is a vector field, that’s why.

But this answer only tells us about one of the end-purposes of the concept, viz., how it can be used. And then the answer provided is: for the formulation of a physical law. But this answer tells us nothing by way of the very meaning of the concept of flux itself.


Another easy answer is that if it is a vector quantity, then it simplifies the maths involved. Instead of remembering having to take the right \theta and then multiplying the relevant scalar quantity by the \cos of this \theta, we can more succinctly write:

q = \vec{J} \cdot \vec{S} (Eq. 1)

where q is the quantity of \phi, an intensive scalar property of the fluid flowing across a given finite surface, \vec{S}, and \vec{J} is the flux of \Phi, the extensive quantity corresponding to the intensive quantity \phi.

However, apart from being a mere convenience of notation—a useful shorthand—this answer once again touches only on the end-purpose, viz., the fact that the idea of flux can be used to calculate the amount q of the transported property \Phi.

There also is another problem with this, second, answer.

Notice that in Eq. 1, \vec{J} has not been defined independently of the “dotting” operation.

If you have an equation in which the very quantity to be defined itself has an operator acting on it on one side of an equation, and then, if a suitable anti- or inverse-operator is available, then you can apply the inverse operator on both sides of the equation, and thereby “free-up” the quantity to be defined itself. This way, the quantity to be defined becomes available all by itself, and so, its definition in terms of certain hierarchically preceding other quantities also becomes straight-forward.

OK, the description looks more complex than it is, so let me illustrate it with a concrete example.

Suppose you want to define some vector \vec{T}, but the only basic equation available to you is:

\vec{R} = \int \text{d} x \vec{T}, (Eq. 2)

assuming that \vec{T} is a function of position x.

In Eq. 2, first, the integral operator must operate on \vec{T}(x) so as to produce some other quantity, here, \vec{R}. Thus, Eq. 2 can be taken as a definition for \vec{R}, but not for \vec{T}.

However, fortunately, a suitable inverse operator is available here; the inverse of integration is differentiation. So, what we do is to apply this inverse operator on both sides. On the right hand-side, it acts to let \vec{T} be free of any operator, to give you:

\dfrac{\text{d}\vec{R}}{\text{d}x} = \vec{T} (Eq. 3)

It is the Eq. 3 which can now be used as a definition of \vec{T}.

In principle, you don’t have to go to Eq. 3. In principle, you could perhaps venture to use a bit of notation abuse (the way the good folks in the calculus of variations and integral transforms always did), and say that the Eq. 2 itself is fully acceptable as a definition of \vec{T}. IMO, despite the appeal to “principles”, it still is an abuse of notation. However, I can see that the argument does have at least some point about it.

But the real trouble with using Eq. 1 (reproduced below)

q = \vec{J} \cdot \vec{S} (Eq. 1)

as a definition for \vec{J} is that no suitable inverse operator exists when it comes to the dot operator.


Let’s try another way to attempt defining the flux vector, and see what it leads to. This approach goes via the following equation:

\vec{J} \equiv \dfrac{q}{|\vec{S}|} \hat{n} (Eq. 4)

where \hat{n} is the unit normal to the surface \vec{S}, defined thus:

\hat{n} \equiv \dfrac{\vec{S}}{|\vec{S}|} (Eq. 5)

Then, as the crucial next step, we introduce one more equation for q, one that is independent of \vec{J}. For phenomena involving fluid flows, this extra equation is quite simple to find:

q = \phi \rho \dfrac{\Omega_{\text{traced}}}{\Delta t} (Eq. 6)

where \phi is the mass-density of \Phi (the scalar field whose flux we want to define), \rho is the volume-density of mass itself, and \Omega_{\text{traced}} is the volume that is imaginarily traced by that specific portion of fluid which has imaginarily flowed across the surface \vec{S} in an arbitrary but small interval of time \Delta t. Notice that \Phi is the extensive scalar property being transported via the fluid flow across the given surface, whereas \phi is the corresponding intensive quantity.

Now express \Omega_{\text{traced}} in terms of the imagined maximum normal distance from the plane \vec{S} up to which the forward moving front is found extended after \Delta t. Thus,

\Omega_{\text{traced}} = \xi |\vec{S}| (Eq. 7)

where \xi is the traced distance (measured in a direction normal to \vec{S}). Now, using the geometric property for the area of parallelograms, we have that:

\xi = \delta \cos\theta (Eq. 8)

where \delta is the traced distance in the direction of the flow, and \theta is the angle between the unit normal to the plane \hat{n} and the flow velocity vector \vec{U}. Using vector notation, Eq. 8 can be expressed as:

\xi = \vec{\delta} \cdot \hat{n} (Eq. 9)

Now, by definition of \vec{U}:

\vec{\delta} = \vec{U} \Delta t, (Eq. 10)

Substituting Eq. 10 into Eq. 9, we get:

\xi = \vec{U} \Delta t \cdot \hat{n} (Eq. 11)

Substituting Eq. 11 into Eq. 7, we get:

\Omega_{\text{traced}} = \vec{U} \Delta t \cdot \hat{n} |\vec{S}| (Eq. 12)

Substituting Eq. 12 into Eq. 6, we get:

q = \phi \rho \dfrac{\vec{U} \Delta t \cdot \hat{n} |\vec{S}|}{\Delta t} (Eq. 13)

Cancelling out the \Delta t, Eq. 13 becomes:

q = \phi \rho \vec{U} \cdot \hat{n} |\vec{S}| (Eq. 14)

Having got an expression for q that is independent of \vec{J}, we can now use it in order to define \vec{J}. Thus, substituting Eq. 14 into Eq. 4:

\vec{J} \equiv \dfrac{q}{|\vec{S}|} \hat{n} = \dfrac{\phi \rho \vec{U} \cdot \hat{n} |\vec{S}|}{|\vec{S}|} \hat{n} (Eq. 16)

Cancelling out the two |\vec{S}|s (because it’s a scalar—you can always divide any term by a scalar (or even  by a complex number) but not by a vector), we finally get:

\vec{J} \equiv \phi \rho \vec{U} \cdot \hat{n} \hat{n} (Eq. 17)

4. Comments on Eq. 17

In Eq. 17, there is this curious sequence: \hat{n} \hat{n}.

It’s a sequence of two vectors, but the vectors apparently are not connected by any of the operators that are taught in the Engineering Maths courses on vector algebra and calculus—there is neither the dot (\cdot) operator nor the cross \times operator appearing in between the two \hat{n}s.

But, for the time being, let’s not get too much perturbed by the weird-looking sequence. For the time being, you can mentally insert parentheses like these:

\vec{J} \equiv \left[ \left( \phi \rho \vec{U} \right) \cdot \left( \hat{n} \right) \right] \hat{n} (Eq. 18)

and see that each of the two terms within the parentheses is a vector, and that these two vectors are connected by a dot operator so that the terms within the square brackets all evaluate to a scalar. According to Eq. 18, the scalar magnitude of the flux vector is:

|\vec{J}| = \left( \phi \rho \vec{U}\right) \cdot \left( \hat{n} \right) (Eq. 19)

and its direction is given by: \hat{n} (the second one, i.e., the one which appears in Eq. 18 but not in Eq. 19).


We explained away our difficulty about Eq. 17 by inserting parentheses at suitable places. But this procedure of inserting mere parentheses looks, by itself, conceptually very attractive, doesn’t it?

If by not changing any of the quantities or the order in which they appear, and if by just inserting parentheses, an equation somehow begins to make perfect sense (i.e., if it seems to acquire a good physical meaning), then we have to wonder:

Since it is possible to insert parentheses in Eq. 17 in some other way, in some other places—to group the quantities in some other way—what physical meaning would such an alternative grouping have?

That’s a delectable possibility, potentially opening new vistas of physico-mathematical reasonings for us. So, let’s pursue it a bit.

What if the parentheses were to be inserted the following way?:

\vec{J} \equiv \left( \hat{n} \hat{n} \right) \cdot \left( \phi \rho \vec{U} \right) (Eq. 20)

On the right hand-side, the terms in the second set of parentheses evaluate to a vector, as usual. However, the terms in the first set of parentheses are special.

The fact of the matter is, there is an implicit operator connecting the two vectors, and if it is made explicit, Eq. 20 would rather be written as:

\vec{J} \equiv \left( \hat{n} \otimes \hat{n} \right) \cdot \left( \phi \rho \vec{U} \right) (Eq. 21)

The \otimes operator, as it so happens, is a binary operator that operates on two vectors (which in general need not necessarily be one and the same vector as is the case here, and whose order with respect to the operator does matter). It produces a new mathematical object called the tensor.

The general form of Eq. 21 is like the following:

\vec{V} = \vec{\vec{T}} \cdot \vec{U} (Eq. 22)

where we have put two arrows on the top of the tensor, to bring out the idea that it has something to do with two vectors (in a certain order). Eq. 22 may be read as the following: Begin with an input vector \vec{U}. When it is multiplied by the tensor \vec{\vec{T}}, we get another vector, the output vector: \vec{V}. The tensor quantity \vec{\vec{T}} is thus a mapping between an arbitrary input vector and its uniquely corresponding output vector. It also may be thought of as a unary operator which accepts a vector on its right hand-side as an input, and transforms it into the corresponding output vector.

6. “Where am I?…”

Now is the time to take a pause and ponder about a few things. Let me begin doing that, by raising a few questions for you:

Q. 6.1:

What kind of a bargain have we ended up with? We wanted to show how the flux of a scalar field \Phi must be a vector. However, in the process, we seem to have adopted an approach which says that the only way the flux—a vector—can at all be defined is in reference to a tensor—a more advanced concept.

Instead of simplifying things, we seem to have ended up complicating the matters. … Have we? really? …Can we keep the physical essentials of the approach all the same and yet, in our definition of the flux vector, don’t have to make a reference to the tensor concept? exactly how?

(Hint: Look at the above development very carefully once again!)

Q. 6.2:

In Eq. 20, we put the parentheses in this way:

\vec{J} \equiv \left( \hat{n} \hat{n} \right) \cdot \left( \phi \rho \vec{U} \right) (Eq. 20, reproduced)

What would happen if we were to group the same quantities, but alter the order of the operands for the dot operator?  After all, the dot product is commutative, right? So, we could have easily written Eq. 20 rather as:

\vec{J} \equiv \left( \phi \rho \vec{U} \right) \cdot \left( \hat{n} \hat{n} \right) (Eq. 21)

What could be the reason why in writing Eq. 20, we might have made the choice we did?

Q. 6.3:

We wanted to define the flux vector for all fluid-mechanical flow phenomena. But in Eq. 21, reproduced below, what we ended up having was the following:

\vec{J} \equiv \left( \phi \rho \vec{U} \right) \cdot \left( \hat{n} \otimes \hat{n} \right) (Eq. 21, reproduced)

Now, from our knowledge of fluid dynamics, we know that Eq. 21 seemingly stands only for one kind of a flux, namely, the convective flux. But what about the diffusive flux? (To know the difference between the two, consult any good book/course-notes on CFD using FVM, e.g. Jayathi Murthy’s notes at Purdue, or Versteeg and Malasekara’s text.)

Q. 6.4:

Try to pursue this line of thought a bit:

Start with Eq. 1 again:

q = \vec{J} \cdot \vec{S} (Eq. 1, reproduced)

Express \vec{S} as a product of its magnitude and direction:

q = \vec{J} \cdot |\vec{S}| \hat{n} (Eq. 23)

Divide both sides of Eq. 23 by |\vec{S}|:

\dfrac{q}{|\vec{S}|} = \vec{J} \cdot \hat{n} (Eq. 24)

“Multiply” both sides of Eq. 24 by \hat{n}:

\dfrac{q} {|\vec{S}|} \hat{n} = \vec{J} \cdot \hat{n} \hat{n} (Eq. 25)

We seem to have ended up with a tensor once again! (and more rapidly than in the development in section 4. above).

Now, looking at what kind of a change the left hand-side of Eq. 24 undergoes when we “multiply” it by a vector (which is: \hat{n}), can you guess something about what the “multiplication” on the right hand-side by \hat{n} might mean? Here is a hint:

To multiply a scalar by a vector is meaningless, really speaking. First, you need to have a vector space, and then, you are allowed to take any arbitrary vector from that space, and scale it up (without changing its direction) by multiplying it with a number that acts as a scalar. The result at least looks the same as “multiplying” a scalar by a vector.

What then might be happening on the right hand side?


Recall your knowledge (i) that vectors can be expressed as single-column or single-row matrices, and (ii) how matrices can be algebraically manipulated, esp. the rules for their multiplications.

Try to put the above developments using an explicit matrix notation.

In particular, pay particular attention to the matrix-algebraic notation for the dot product between a row- or column-vector and a square matrix, and the effect it has on your answer to question Q.6.2. above. [Hint: Try to use the transpose operator if you reach what looks like a dead-end.]


Suppose I introduce the following definitions: All single-column matrices are “primary” vectors (whatever the hell it may mean), and all single-row matrices are “dual” vectors (once again, whatever the hell it may mean).

Given these definitions, you can see that any primary vector can be turned into its corresponding dual vector simply by applying the transpose operator to it. Taking the logic to full generality, the entirety of a given primary vector-space can then be transformed into a certain corresponding vector space, called the dual space.

Now, using these definitions, and in reference to the definition of the flux vector via a tensor (Eq. 21), but with the equation now re-cast into the language of matrices, try to identify the physical meaning the concept of “dual” space. [If you fail to, I will sure provide a hint.]

As a part of this exercise, you will also be able to figure out which of the two \hat{n}s forms the “primary” vector space and which \hat{n} forms the dual space, if the tensor product \hat{n}\otimes\hat{n} itself appears (i) before the dot operator or (ii) after the dot operator, in the definition of the flux vector. Knowing the physical meaning for the concept of the dual space of a given vector space, you can then see what the physical meaning of the tensor product of the unit normal vectors (\hat{n}s) is, here.

Over to you. [And also to the UGC/AICTE-Approved Full Professors of Mechanical Engineering in SPPU and in other similar Indian universities. [Indians!!]]

A Song I Like:

[TBD, after I make sure all LaTeX entries have come out right, which may very well be tomorrow or the day after…]


Machine “Learning”—An Entertainment [Industry] Edition

Yes, “Machine ‘Learning’,” too, has been one of my “research” interests for some time by now. … Machine learning, esp. ANN (Artificial Neural Networks), esp. Deep Learning. …

Yesterday, I wrote a comment about it at iMechanica. Though it was made in a certain technical context, today I thought that the comment could, perhaps, make sense to many of my general readers, too, if I supply a bit of context to it. So, let me report it here (after a bit of editing). But before coming to my comment, let me first give you the context in which it was made:

Context for my iMechanica comment:

It all began with a fellow iMechanician, one Mingchuan Wang, writing a post of the title “Is machine learning a research priority now in mechanics?” at iMechanica [^]. Biswajit Banerjee responded by pointing out that

“Machine learning includes a large set of techniques that can be summarized as curve fitting in high dimensional spaces. [snip] The usefulness of the new techniques [in machine learning] should not be underestimated.” [Emphasis mine.]

Then Biswajit had pointed out an arXiv paper [^] in which machine learning was reported as having produced some good DFT-like simulations for quantum mechanical simulations, too.

A word about DFT for those who (still) don’t know about it:

DFT, i.e. Density Functional Theory, is “formally exact description of a many-body quantum system through the density alone. In practice, approximations are necessary” [^]. DFT thus is a computational technique; it is used for simulating the electronic structure in quantum mechanical systems involving several hundreds of electrons (i.e. hundreds of atoms). Here is the obligatory link to the Wiki [^], though a better introduction perhaps appears here [(.PDF) ^]. Here is a StackExchange on its limitations [^].

Trivia: Kohn and Sham received a Physics Nobel for inventing DFT. It was a very, very rare instance of a Physics Nobel being awarded for an invention—not a discovery. But the Nobel committee, once again, turned out to have put old Nobel’s money in the right place. Even if the work itself was only an invention, it did directly led to a lot of discoveries in condensed matter physics! That was because DFT was fast—it was fast enough that it could bring the physics of the larger quantum systems within the scope of (any) study at all!

And now, it seems, Machine Learning has advanced enough to be able to produce results that are similar to DFT, but without using any QM theory at all! The computer does have to “learn” its “art” (i.e. “skill”), but it does so from the results of previous DFT-based simulations, not from the theory at the base of DFT. But once the computer does that—“learning”—and the paper shows that it is possible for computer to do that—it is able to compute very similar-looking simulations much, much faster than even the rather fast technique of DFT itself.

OK. Context over. Now here in the next section is my yesterday’s comment at iMechanica. (Also note that the previous exchange on this thread at iMechanica had occurred almost a year ago.) Since it has been edited quite a bit, I will not format it using a quotation block.

[An edited version of my comment begins]

A very late comment, but still, just because something struck me only this late… May as well share it….

I think that, as Biswajit points out, it’s a question of matching a technique to an application area where it is likely to be of “good enough” a fit.

I mean to say, consider fluid dynamics, and contrast it to QM.

In (C)FD, the nonlinearity present in the advective term is a major headache. As far as I can gather, this nonlinearity has all but been “proved” as the basic cause behind the phenomenon of turbulence. If so, using machine learning in CFD would be, by the simple-minded “analysis”, a basically hopeless endeavour. The very idea of using a potential presupposes differential linearity. Therefore, machine learning may be thought as viable in computational Quantum Mechanics (viz. DFT), but not in the more mundane, classical mechanical, CFD.

But then, consider the role of the BCs and the ICs in any simulation. It is true that if you don’t handle nonlinearities right, then as the simulation time progresses, errors are soon enough going to multiply (sort of), and lead to a blowup—or at least a dramatic departure from a realistic simulation.

But then, also notice that there still is some small but nonzero interval of time which has to pass before a really bad amplification of the errors actually begins to occur. Now what if a new “BC-IC” gets imposed right within that time-interval—the one which does show “good enough” an accuracy? In this case, you can expect the simulation to remain “sufficiently” realistic-looking for a long, very long time!

Something like that seems to have been the line of thought implicit in the results reported by this paper: [(.PDF) ^].

Machine learning seems to work even in CFD, because in an interactive session, a new “modified BC-IC” is every now and then is manually being introduced by none other than the end-user himself! And, the location of the modification is precisely the region from where the flow in the rest of the domain would get most dominantly affected during the subsequent, small, time evolution.

It’s somewhat like an electron rushing through a cloud chamber. By the uncertainty principle, the electron “path” sure begins to get hazy immediately after it is “measured” (i.e. absorbed and re-emitted) by a vapor molecule at a definite point in space. The uncertainty in the position grows quite rapidly. However, what actually happens in a cloud chamber is that, before this cone of haziness becomes too big, comes along another vapor molecule, and “zaps” i.e. “measures” the electron back on to a classical position. … After a rapid succession of such going-hazy-getting-zapped process, the end result turns out to be a very, very classical-looking (line-like) path—as if the electron always were only a particle, never a wave.

Conclusion? Be realistic about how smart the “dumb” “curve-fitting” involved in machine learning can at all get. Yet, at the same time, also remain open to all the application areas where it can be made it work—even including those areas where, “intuitively”, you wouldn’t expect it to have any chance to work!

[An edited version of my comment is over. Original here at iMechanica [^]]


“Boy, we seem to have covered a lot of STEM territory here… Mechanics, DFT, QM, CFD, nonlinearity. … But where is either the entertainment or the industry you had promised us in the title?”

You might be saying that….

Well, the CFD paper I cited above was about the entertainment industry. It was, in particular, about the computer games industry. Go check out SoHyeon Jeong’s Web site for more cool videos and graphics [^], all using machine learning.

And, here is another instance connected with entertainment, even though now I am going to make it (mostly) explanation-free.

Check out the following piece of art—a watercolor landscape of a monsoon-time but placid sea-side, in fact. Let me just say that a certain famous artist produced it; in any case, the style is plain unmistakable. … Can you name the artist simply by looking at it? See the picture below:

A sea beach in the monsoons. Watercolor.

If you are unable to name the artist, then check out this story here [^], and a previous story here [^].

A Song I Like:

And finally, to those who have always loved Beatles’ songs…

Here is one song which, I am sure, most of you had never heard before. In any case, it came to be distributed only recently. When and where was it recorded? For both the song and its recording details, check out this site: [^]. Here is another story about it: [^]. And, if you liked what you read (and heard), here is some more stuff of the same kind [^].


I am of the Opinion that 99% of the “modern” “artists” and “music composers” ought to be replaced by computers/robots/machines. Whaddya think?

[Credits: “Endgame” used to be the way Mukul Sharma would end his weekly Mindsport column in the yesteryears’ Sunday Times of India. (The column perhaps also used to appear in The Illustrated Weekly of India before ToI began running it; at least I have a vague recollection of something of that sort, though can’t be quite sure. … I would be a school-boy back then, when the Weekly perhaps ran it.)]


See, how hard I am trying to become a (Full) Professor of Mechanical Engineering in SPPU?

Currently, I am not only cashless but also jobless. That’s why, I try harder.

I am trying very hard to be a (Full) Professor of Mechanical Engineering, especially at the Savitribai Phule Pune University (or SPPU for short).

That’s right.

And that’s why, I have decided to adopt an official position whereby I abandon all my other research and study interests, especially those related to the mechanics of the quanta. Instead, I have officially decided to remain interested only in the official problems from the Mechanical Engineering discipline proper—not only for my studies, but also for my research interests.

… If only I were to have my first degree in Mechanical Engineering, instead of in Metallurgy! (It was some 37.5–33.5 years ago, with my decision to choose Metallurgy being from some 36.5 years ago.) … If only I were to choose Mechanical right back then, this problem wouldn’t have arisen today. …

Tch! …

…But, well, thinking of my first degree, its circumstances—where I got it from (COEP, the engineering college with the highest cut-off merit in the entire Maharashtra state), in what class (First Class with Distinction, the highest class possible), and, most crucially, for spending all my time at what place (The Boat Club)… You know, looking back some 3.5 decades later of all those circumstances—the circumstances of how I chose Metallurgy, back then, as I was sitting at the Boat Club… Hmmm… Boat Club. … Boat Club! Boat Club!!

It gives me some ideas.

So, to better support my current endeavors of becoming an Officially Approved Full Professor of Mechanical Engineering in SPPU, may be, I should solve some Mechanical Engineering problems related to boats. Preferably, those involving not just fluid mechanics, but also mechanisms and machine design—and vibrations! [Oh yes. I must not forget them! Vibrations are, Officially, a Mechanical Engineering topic. In fact even Acoustics. …]

Thinking along such lines, I then thought of one problem, and sort of solved it too. Though I am not going to share my answer with you, I certainly want to share the problem itself with you. (Don’t ask me for answers until I get the job as an Officially Approved Full Professor in Mechanical Engineering at SPPU.)

OK, so here we go.

The Problem Description:

Consider a boat floating on a stand-still lake. The boat has a very simple shape; it is in the shape of a rectangular parallelpiped (i.e., like a shoe-box, though not quite exactly like a punt).

In the plan (i.e. the top view), the boat looks like this:






As shown in the figure, at the centers of the front- and back-sides of the boat, there are two circular cylindrical cavities of identical dimensions, both being fitted with reciprocating pistons. These pistons are being driven by two completely independent mechanisms. The power-trains and the prime-movers are not shown in the diagram; in this analysis, both may be taken to be mass-less and perfectly rigid. However, the boat is assumed to have some mass.

We will try to solve for the simplest possible case: perfectly rigid boat walls (with some mass), perfectly rigid but mass-less pistons, complete absence of friction between the pistons and the cylinder walls, etc.

Assume also that both the boat and the lake water are initially stand-still, and that there are no other influences affecting the motions (such as winds or water currents).

Now, let’s put the pistons in oscillatory motions. In general, the frequencies of their oscillations are not equal. Let the frequency for the left- and right-side pistons be f_L and f_R Hz, respectively.

Problem 1:

Build a suitable Mechanical Engineering model, and predict how the boat would move, in each of the following three scenarios:

  • f_L = f_R
  • f_L > f_R
  • f_L < f_R

In each case, determine (i) whether the boat as a whole (i.e. its center of mass or CM) would at all undergo any motion at all or not, (ii) if yes, whether the motion of the CM would have an element of oscillations to it or not, and finally, (iii) whether the boat (i.e. its CM) would undergo a net displacement over a large number of pistons oscillations or not (i.e., the question asks whether the so-called “time-averaged” net displacement occurs in any one direction or not), and if yes, in which direction.

You may make other minor assumptions. For instance, in each of the above 3 cases, you may assume that at time t = 0, both the pistons are at their innermost positions, with each piston beginning its motion by pushing outwards. Also check out the effect of assuming, some other, suitable, values for the initial phases.

Though not at all necessary, if it will help you, you may perhaps consider the case where the higher frequency is an integer multiple of the lower frequency, e.g., in the second of the three cases, assume f_L = n f_R, where n \in \mathcal{N}. However, note that eventually, you are expected to solve the problem in the general case, the one in which the ratio of the frequencies may be any real number. The cases of practical interest may be where the ratio ranges from 0.0 to a real number up to, say, 2.67 or 3.14 (or, may be, 5.25).

Notice that nowhere thus far have we said that the oscillatory motion of the pistons would be SHM (i.e. simple harmonic). You may begin with an SHM, but as a further problem below illustrates, the piston motion may neither be simple-harmonic, nor even symmetrical in the to- and fro-directions.

On the fluid mechanics side: In your analysis, assume that the length of the boat is much, much greater than the stroke-lengths of the pistons. Essentially, we want to ensure that the water waves produced at one end do not significantly affect the local dynamics at the other end.

You may assume a highly simplified model for the fluid—the problem is not supposed to have a crucial bearing on what kind of a fluid you assume. I mean to say, we are not looking for so detailed a model that you would have to perform a CFD analysis. (That task, we will leave to the Naval Architecture engineers.) However, do make sure to note how your model behaves for an inviscid flow vs. for a viscous flow.

So, in short, the problem is to determine the nature of the motion of the boat, if there is any—i.e., to determine if its CM undergoes a net displacement in the time-averaged sense or not, and if yes, in which direction it occurs.

Problem 2:

Assume a relatively smaller stroke-length for one of the pistons, and repeat the problem.

Problem 3:

Assume that one of the frequencies is zero, which is as good as saying that the boat is fitted with only one cylinder-and-piston. Repeat the analysis.

Problem 4:

Continue to assume that one of the frequencies is zero. Now, also assume that the outward stroke of the moving piston happens faster than its inward stroke. Determine the nature of the motion, if any, for the CM of the boat.

Problem 5 (Optional):

Assuming that the prime mover outputs a uniform circular (or rotary) motion, design a suitable mechanism which will help implement the idea of having non-SHM motions—e.g., different stroke-times in the outward and inward directions. Conduct an informal (or a more formal, calculus-based) displacement-, velocity- and acceleration-analysis, if you wish.

Give it a thought whether this entire idea of transforming a circular motion to a nonuniform reciprocating motion can be done away with, thereby saving on energy—in real life, there is friction—using certain ideas from electrical engineering and electronics.


No, no, no! No!! Throw out that horrendous idea! I mean the very last one!!

We want to remain concerned only with the Mechanical Engineering Problems proper. That is the Official position I have adopted, remember?

That’s right. What I described above was, really, really, really only a Mechanical Engineering Problem.

It really, really, really has nothing to do with anything else such as electrical engineering or quantum physics.

[And if even Prof. Thanu Padmanabhan (IUCAA) does not know quantum physics (he told me so once, right in person), why should I be concerned with it, anyway?]

Anyway, so, Officially speaking, I made up this problem only because I want to become an Officially Approved Full Professor of Mechanical Engineering at SPPU.

If you are interested in some other Mechanical Engineering problems, especially on the fluids-thermal side, check out my recent posts on the Eco-Cooler, and see if you can take further the analysis given in them.

I myself had made a much more advanced engineering analysis right at that time, but I am not going to give it—or its results—until some time after I land and join the kind of job I am looking for—a Full Professor’s. (And I hope that you do have the sense to see that this is not a “prestige issue” on my part.)

The post having a preliminary (quantitative) fluids-thermal analysis is here [^], though the qualitative analysis of the problem begins with an earlier post, here [^].

[Guess the problem, as given, is enough for the time being. I may even come back and add one or two variations on the problem! But no guarantees.]

Update right on 2016.12.02: OK, here are a couple of minor variations. What happens if, when a piston comes to a rest at the extreme stroke, it continues staying idle for a while, before resuming its towards-the-center motion? What if the piston motion is such that the point of zero displacement does not occur exactly at the middle of its overall stroke-length?

I may post some further variations on the problem, or suggest alternative analogous problems, in future.

Currently, I am not just cashless but also jobless. That’s why, I try harder.

More, may be later. As to the Song I Like section, I don’t have anything playing at the back of my mind right away, so let me see if something strikes me by the time I come back tomorrow to give a final editing touch to this post. In that case, I will add this section; else, I will not!

[After the update right on 2016.12.02: I am done with this post now, and if there are any errors, I will let them stay. If you find the post confusing somewhere, please do drop me a line, though. Best, and take care.]



Analyzing the Eco-Cooler, part 1

OK, that was ample time for you to have hit your fluid mech/heat transfer/thermo books, and to have it verified whether the 5 deg. C drop was believable or not… You must have made your notes, too, no?…  So, in this post, let’s cross-check our notes.

On my part, I will first present the simplest (and the most approximate) model, and also give you a simple Python script to play with, to see what kind of predictions this model makes. Then, we will go on considering more and more complicated but still approximate “engineering” models that hopefully become more and more realistic. We will cross-check their predictions too. We may eventually find that a full-fledged CFD analysis is called for. However, I will save that—I mean doing a full-fledged CFD analysis—for another day. (I in fact plan to write a paper on this problem, using CFD. (…Some day…).)

The reason we follow this method—from the simplest and crudest models to the more complicated and better ones—is because for problems related to fluid mechanics, it is this method which works best!

I mean to say, the full-fledged Navier-Stokes equations are too complicated to solve for, even when they are applied to the simplest of practically encountered geometries—e.g., the flow of air through the Eco-Cooler bottle. Since the NS equations cannot be solved exactly, the traditional engineering models (which are based on analytical or semi-analytical solutions) fall short, and then, a CFD analysis is called for.

But the fact of the matter also is, even CFD itself is only an approximate technique. CFD solutions sometimes even happen to carry more numerical artifacts than real physics. We therefore cannot approach CFD blindly. We ourselves have to have some good idea in the first place of what the desired solution should look like. We should have this idea right before we even think of setting up a CFD model/simulation. The traditional engineering models provide precisely these insights.

Yes, that’s right.

The traditional engineering models actually are more approximate than CFD. Yet, since they are also simpler than CFD, and since they explicitly carry conceptual connections with the major fluid mechanical phenomena in a more direct manner, they also make it easier to gain insights about both the nature of the problem, and the nature of the expected solution. No similar insights can be had by directly using CFD, for several reasons. The CFD theory itself is too complicated, and the CFD practice involves too many different analysis options. In the jungle of all those parameters, iterations, and convergence requirements, CFD happens to loose the directness of the conceptual connections with the basic analytical theory—with the fluid dynamical phenomena.

That’s why we first deal with the simplest engineering models, even though they are known to be approximate—and therefore, they are easily capable of giving us wrong results. But this way, we can build insights. Building insights is an art, and the process progresses slowly.

As I said, we will follow an iterative scheme of model building. In each phase or iteration of the model building activity, we will actually be applying the same set of principles: the conservation of mass, momentum, and energy. However, in going from a model-building phase to the next, we will aim to incorporate an increasing level of complexity or sophistication—and accuracy, hopefully.

Actually, in the fluid dynamics theory, all the three conservation equations come coupled to each other. You cannot solve for conservation of only the mass, or the momentum, or the energy, by neglecting any of the other two. However, for this particular problem (of the Eco-Cooler), for various reasons (which you will come to appreciate slowly), it so turns out that we can get away considering the mass, momentum and energy equations in a decoupled manner, and in the order stated: first mass, then momentum, and then energy. (It’s no accident that text-books spell out these three principles in this order. Many fluids-related phenomena with which we are well familiar through our direct experience of the world are such that for solving problems involving these phenomena, this order happens to be the best one to follow.)

So, with that big introduction, let’s now get going calculating—even though we will not shut up even while performing those calculations.

Model-Building Phase I: The Simplest Possible Model:


Consider the plastic-bottles used in the Eco-Cooler; they all lie horizontally. Consider one of these bottles. A tube has been obtained by cutting off the base of the bottle. Let the base-plane be identified by the subscript 1 and the neck-plane by 2. See the figure below:






Air flows from the base-plane (1) to the neck-plane (2).

Conservation of mass:

The simplest possible expression for mass conservation, applied to the bottle geometry, would be the continuity equation, given below:
A_1 U_1 = A_2 U_2
where A_1 and A_2 are cross-sectional areas of the bottle, and U_1 and U_2 are wind velocities, at the base and the neck, respectively. Rearranging for U_2, we get:
U_2 = \dfrac{A_1}{A_2} U_1             …(1)

We can use this simple an equation for mass conservation only if the flow is incompressible. To determine if our flow is incompressible or not, we have to calculate the Mach number for the flow. To do that, we have to first know the expected wind velocities.

Referring to the Wiki article on the Beaufort scale [^], we may make an assumption that the inlet speed can go up to about 60 kmph. Actually, the wind-speeds covered by the Beaufort scale go much higher (in excess of 118 kmph). However, practically speaking, the only times such high wind-speeds (gales etc.) occur in India is when rains also accompany them. The rains bring down the ambient temperature anyway, thereby obviating the need for any form of a cooler. Thus, we have to consider only the lower range of speeds.

Assuming the speed of sound in air to be about 340 m/s, we find that the Mach number (for the range of the winds we consider) goes up to about 0.65. Now, for \text{Ma} < 0.33, the flow is sub-sonic, and can be regarded as incompressible. For 0.33 < \text{Ma} < 1.0, the flow is trans-sonic, meaning, the changes in pressures do not adjust “instantaneously” everywhere in the flow, and so, it is increasingly not possible to even idealize the flow as incompressible.

Therefore, in the interest of simplicity, for our first solution cut, we choose to consider only the wind-speeds up to 100 m/s, i.e. 28 kmph, so that the incompressibility assumption can be justified. Making this assumption about the highest possible wind-speed, we are then free to use the simplest form of mass conservation equation given above as Eq. (1).

For a typical one liter bottle, the base diameter is 7.5 cm, and the neck diameter is 2 cm (both referring to IDs i.e. inner diameters). (I measured them myself!) So, the area ratio \frac{A_1}{A_2} turns out to be about 14.

Thus, the wind accelerates inside the bottle; the outlet velocity is about 14 times the inlet velocity!

This looks like a remarkable bit of acceleration to happen over just some 20 cm of length. (The bottle is cut somewhere in the middle.) More on it, later.

Conservation of momentum:

The simplest possible equation to use for momentum conservation is the steady-state Bernoulli’s equation:
\dfrac{P_1}{\rho} + \dfrac{U_1^2}{2} = \dfrac{P_2}{\rho} + \dfrac{U_2^2}{2}        …(2)
where we have ignored the potential head term (gz) because the tube is horizontal as well as symmetrical about its central horizontal axis (and because the air is so thin that its weight can be easily neglected here).

Carefully note the assumptions behind Eq (2). It holds only for a steady-state and laminar flow, and only after neglecting viscosity.

Since we are in a hurry, we will assume them all, and proceed!

Rearranging Eq (2) for P_2, we obtain:
P_2 = P_1 + \dfrac{\rho}{2} \left( U_1^2 - U_2^2 \right)

Conservation of energy:

We basically need the equation of energy conservation only in order to calculate the temperature at the neck (T_2), from a knowledge of: (i) the temperature at the base, T_1, and (ii) the pressures P_1 and P_2.

In the last line, I said “from.” This usage implies that there already is an assumption I made, viz., that the energy equation can be decoupled from the momentum equation. How reasonable is this assumption? It seems pretty OK. Think: can air flowing through a 7.5 cm or a 2.0 cm diameter tube at under 100 m/s get heated up to a significant fraction of 5 deg. C, over a length of just a foot or less? Not likely. Can heating up the neck region cause the air flow to come a halt, say because it helps build up a sufficient amount of pressure? Not even remotely likely. So, we may get away by decoupling the two.

The simplest equation to compute T_2 from the other three quantities would be: the ideal gas law, given as:
\dfrac{P_1 V_1}{T_1} = \dfrac{P_2 V_2}{T_2}.

We have already found that the flow can be considered incompressible (at least up to 28 kmph of wind-speeds). Hence, the volume of each fluid part remains constant, i.e., V_1 = V_2. (Note, in this equation, we have to consider the volume of a fluid element or a part, not the volume for a unit axial length at a given cross-section of the bottle.) For constant volume, the ideal gas law reduces to:
\dfrac{P_1}{T_1} = \dfrac{P_2}{T_2},
from which we can conclude:
T_2 = P_2 \dfrac{T_1}{P_1}.

But we have to know whether the assumption of the ideal gas itself can be used in our problem—for the real air—or not. For doing that, we have to know the critical pressure and temperature of air. Cengel (“Thermodynamics: An Engineering Approach,” 8th SI units edition) lists them (Appendix A1) as 132.5 K, and 3.77 MPa. Using these values, the reduced temperature and the reduced pressure of air turn out to be T_{1_R} = (30 + 273.15)/132.5 \approx 2.29, and P_{1_R} = (101.32\times10^3)/(3.77\times 10^6) \approx 0.027. Further, the expected drops in the pressure and temperature would be just small fractions of the inlet values. Hence, the reduced quantities for the outlet also would not differ significantly from those for the inlet. Referring to the chart and the remarks on p. 139 in Cengel, it seems like we can get away using the ideal gas law.

Note, we are using the ideal gas law not as an approximation to the energy equation, but in place of it, simply because looking at the variables, we noticed that T_2 had to be determined from the other three variables, and this set of variables reminded us of the ideal gas law! Then, referring to the reduced pressure and temperature, the ideal gas approximation seemed to be OK. In short, we have not directly considered the energy conservation principle at all. We may subsequently have an occasion to revisit this issue.

Assumed data:

Now, let us make assumptions about the data to be used for our calculations.

Suppose that the ambient temperature is 30 deg C, and the Eco-Cooler is kept at the mean sea level (MSL), say by the sea-side (rather than somewhere on a slope going down into the Death Valley [^]). Now, seated at a sea-side, the evaporative cooler isn’t going to be feasible because of humidity, and that’s the reason why we are at all considering using the Eco-Cooler. Alright. So to wrap up this point, we have to use data values at the MSL.

Suppose that we can use the ambient MSL atmospheric pressure for the inlet of the bottle; it would then mean that P_1 = 101330 Pa. (Note, this is an assumption; like with many other assumptions, we may have occasion to revisit it later on.) The air density at MSL and at 30 deg. C may be taken to be \rho = 1.169 kg/m^3. (Minor changes to this value turn out to have minimal impact on the predictions, so it’s OK to use, even if we might have made a mistake in looking it up hurriedly.)

For wind-speeds, let’s assume that the speed at the inlet (i.e., at the base of the bottle, which is exposed to the outside) is the same as the ambient wind-speed. (Again, this is an assumption; we may have the occasion to revisit it later on.)

Since the wind-speeds vary, and since the pressure drop (and hence the temperature drop) obviously depends on the inlet wind-speed, we will have to repeat our calculations for each wind-speed, again and again.

Referring again to the Wiki article for the Beaufort scale [^], to have representative wind-speed values, we choose to take the averages of the lower and upper wind speeds which together define the range for each wind-grade on the Beaufort scale. Thus, our U_1 could be one of: 0.5, 3.0, 8.5, 15.5, 24.0, 33.5, 44.0, all in kmph.

We are now ready to do our calculations. To recap: First, we calculate U_2 from U_1 using the continuity (mass conservation) equation and the known area ratio (which is about 14). Then we substitute the data in the re-arranged Bernoulli’s equation (which brings in its own assumptions) and obtain P_2, the pressure at the outlet (i.e. the neck of the bottle). From the ideal gas law (being used in place of the energy equation proper), we then calculate T_2.

Python script:

We use a Python script only because the calculations for T_2 have to be repeated again and again for different wind-speeds. Anyway, here is the Python script:

This Python script calculates the expected
outlet temperature for a bottle in the Eco-Cooler.
See the relevant blog posts by Ajit R. Jadhav.
All units are in SI.

d1 = 7.5 # ID at the inlet (i.e. at the base), in cm
d2 = 2.0 # ID at the outlet (i.e. at the neck), in cm
AR = (d1*d1)/(d2*d2) # Area ratio for the bottle

T1 = 30.0 # Ambient temp., in deg. C
T1 = T1 + 273.15 # Conversion from deg. C to K
rho = 1.169 # Density of air, in kg/m^3
P1 = 101330 # Ambient pressure, in Pa

# The Beaufort Scale wind speeds in kmph, and their text descriptions
bsa = [0.5, 3.0, 8.5, 15.5, 24.0, 33.5, 44.0]
bsta = ["Calm","Light air", "Light breeze", "Gentle breeze", "Moderate breeze", "Fresh breeze", "Strong breeze"]

# Calculate the expected temperatures for various wind-speeds
for i in range(7):
    s1 = bsa[i] # wind-speed, in kmph
    sText = bsta[i] # wind-speed description

    U1 = s1 / 3.6 # conversion from kmph to m/s
    U2 = U1*AR

    # Calculate P2 using Bernoulli's equation
    P2 = P1 + rho*(U1*U1 - U2*U2)/2.0

    # Calculate T2 using the ideal gas law
    T2 = T1*P2/P1
    TC = T2 - 273.15 # conversion from K to deg. C
    print( "%20s %6.1f %6.2lf %10.0f %6.1f" % (sText, s1, U1, P2, TC) )

The program written using Python is so simple, that you can very easily modify it, say to report any additional calculations that were made along the way.

Output data:

Here is the output data I get. The columns are: wind description in words, wind speed in kmph, wind speed in m/s, outlet pressure, and outlet temperature:

    Wind Description        U_1        P2, Pa   T2, deg. C                     
                        kmph  m/s      
                Calm    0.5   0.14     101328   30.0
           Light air    3.0   0.83     101250   29.8
        Light breeze    8.5   2.36     100689   28.1
       Gentle breeze   15.5   4.31      99198   23.6
     Moderate breeze   24.0   6.67      96219   14.7
        Fresh breeze   33.5   9.31      91372    0.2
       Strong breeze   44.0  12.22      84151  -21.4

Interpretation of results:

Our model predicts that when the breeze is strong (but less strong than when the tube is held near the window of a car that is traveling on an expressway), we should get ice formation at the neck of the bottle—in fact, it should be a super-cooled ice!

From your knowledge of what happens on the Indian sea-side, do you expect a mere half-foot tube of variable diameter, to begin to have ice-formation at its neck?

Obviously, the model we dreamt up has gone wrong somewhere. …

… But precisely where? … We have made so many assumptions…. Which of these assumptions are likely to have impacted our analysis the most? In what all places should we bring in the corrections to our model?

I have already given a lot of explicit notes—not just hints—while writing down the analysis above. So, go through the entire post once again, now pausing especially at the assumptions, and think how we may go on to improve our model.

I will return to the business of improving our model, in my next post.

And as always, sure drop me a line if you think I am going wrong somewhere.

… For instance, also give it a thought as to whether my analysis scheme, based on fluid mechanics, itself is wrong or what. … Here, you may want to refer to the comments on the blog post I had linked to last time [^], esp. the comments made there by Arnaut Jaspers and others. (Jaspers’ and others’ comments appear somewhere in the middle of all the comments, so you have to ask the Web page to load more comments some 3–4 times; the exact URL where the comments in question begin is this: [^]).

Alright, enjoy!

Ummm… Since I have given you Python scripts to play with, guess the usual section on a song I like has become redundant. So, let me mention the “other” song (re. my last post) when I finish this series of posts—which will take one, or at the most two more posts).

[I may come back and cross-check the latex entries in this post, grammar, etc., later on today itself, when I may perhaps edit this post just a bit, but not much. Done on 2016.10.02 itself.]