Skip to content

About

Verification and reproducibility of exact unidirectional solutions for start-up flows (Stokes and related problems) of viscoelastic fluids via Jupyter notebooks in Python/Colab.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

viscoelastic-startup

DOI Code: BSD-3-Clause Text and figures: CC BY 4.0 made with Jupyter last commit

Left: the posed plate velocity, a step, and the ramp 1 - exp(-t/t_r) that the erroneous solutions actually solve. Right: start-up of plane Couette flow of an Oldroyd-B fluid at three times, the correct profile in blue with arrows, the erroneous series vermillion dashed, lagging as if the plate were ramped

This is a GitHub repository for the verification of exact solutions for start-up flows of viscoelastic fluids, maintained by Prof. Ivan C. Christov. A plate, at rest for all $t < 0$, is suddenly set into motion at $t = 0^+$ and drags a viscoelastic fluid (modeled by the second-grade, Oldroyd-B or Gordon–Schowalter models, for example) along with it. Variants include Stokes' first and second problems on an unbounded domain, and the start-up of plane Couette flow in a channel.

Many (sometimes) highly cited papers have presented "new exact solutions" to these classical problems that are incorrect. The mathematical error is elementary and the same each time. In one case, the correction reaches past the papers and asks us to rewrite the textbook: expanding in eigenfunctions after "subtracting off" the steady state, the recipe taught for start-up problems, violates causality [1]. 🤯 Together with C. I. Christov and P. M. Jordan, I have been correcting these papers 💪, one Comment at a time, for almost two decades. I call the project, loosely, On Stokes' problems: a study in repetitive errors in the fluid mechanics literature. This is the open-source GitHub version of the project.

Nullius in verba

Although these Comments definitively settled the mathematics and solutions over a decade ago, the same errors continue to pop up and be promulgated. In this area of mechanics, everything is demonstrably true or false; there are no gray areas. So, rather than ask the reader to take my word for it, each notebook in this repository reproduces one of those corrections from scratch: the corrected solution, the erroneous published solution implemented exactly as printed, an independent check of both, and the paper's comparison figure(s), regenerated.

The Royal Society's motto (nullius in verba) asks you not to take anyone's word for it. Feynman asked for more: not to take your own.

I'm talking about a specific, extra type of integrity that is not lying, but bending over backwards to show how you're maybe wrong, that you ought to do when acting as a scientist.

— R. P. Feynman, Cargo cult science, Caltech commencement address, Engineering and Science 37(7) (1974) 10–13

🚀 Getting started: the notebooks are independent of each other, and christov_christov_2010_second_grade is the shortest route to the main idea.

ProblemReproducesCorrectsOpen
Start-up of plane Couette flow, Oldroyd-B (Jeffreys) fluid: the textbook eigenfunction expansion versus the causal one[1]—Open in nbviewer
Open In Colab
Stokes' first problem, Oldroyd-B fluid in a porous half-space[2]Tan & Masuoka (2005)Open in nbviewer
Open In Colab
Stokes' first problem, second-grade fluid[3]Fetecău & Zierep (2001)Open in nbviewer
Open In Colab
Stokes' first problem, second-grade fluid: three correct representations of the solution[4]—Open in nbviewer
Open In Colab
Stokes' first problem, Oldroyd-B fluid: three correct representations of the solution[4]—Open in nbviewer
Open In Colab
Transient Stokes' second problem (oscillating plate), second-grade fluid, half-space and strip[5]Fetecau & Fetecau (2005)Open in nbviewer
Open In Colab
Start-up of plane Couette flow, second-grade fluid[6]Hayat et al. (2004)Open in nbviewer
Open In Colab
The Laplace transform of a suddenly moved plate's velocity and Stokes' first problem, second-grade fluid in a porous half-space[7, 8]Fetecau et al. (2011)Open in nbviewer
Open In Colab
Start-up of plane Couette flow, Gordon–Schowalter fluid, Oldroyd-B and corotational (Jaumann) cases: initial data that are inconsistent with a retardation time[9]Balan (2023)Open in nbviewer
Open In Colab

One mistake, many papers

Let $V_\mathrm{plate}(t) \equiv v_x(0,t)$ be the velocity of the plate. For a plate at rest until it is suddenly set into motion at $t = 0^+$, the posed start-up condition is

$$V_\mathrm{plate}(t) = V_0 f(t)H(t),$$

where $V_0$ is the plate's speed, $f$ the shape of its motion ($f \equiv 1$ for Stokes' first problem, $\cos(\omega t)$ or $\sin(\omega t)$ for Stokes' second problem), and $H$ the Heaviside unit step function.

In the sense of distributions, the time derivative of $V_\mathrm{plate}$ contains $V_0f(0)\delta(t)$. The Dirac delta distribution, $\delta(t)$, has no point values ‼️ However, when it is the forcing term of an ODE in $t$, it contributes to the solution. (Prof. Arthur Mattuck's outstanding MIT 18.03 video lectures on discontinuous inputs and impulse inputs explain this beautifully.) The erroneous solutions reproduced here loses that $\delta(t)$: it is treated as identically zero when the Fourier sine transform meets a mixed derivative, or it is hidden in an initial condition when the steady state is "subtracted off" before an eigenfunction expansion. On the other hand, the Laplace transform in time, applied to the problem as posed, cannot make this mistake because it enforces causality!

What is lost has a clean physical meaning. For a fluid with a retardation timescale $t_r$ ($\lambda_2$ for Oldroyd-B, $\alpha/\nu$ for second grade), the erroneous solution is the exact solution for a different plate, one whose start-up jump is ramped on that timescale. These papers accidentally solved ramp-up:

$$V_\mathrm{plate}(t) = V_0\left[f(t) - f(0)\,\mathrm{e}^{-t/t_r}\right]H(t).$$

🎲 No experiment ramps a plate on the fluid's own retardation time: $t_r$ is a material property, not a setting on an apparatus, so the ramp is an artifact of the error and not a boundary condition anyone would have chosen to impose.

C. I. Christov and I realized the connection to this ramped plate for Stokes' first problem of a second-grade fluid [3]. Each notebook shows the same for its own erroneous solution. For the oscillating plate, it answers the question P. M. Jordan and I left open in [5], of "what kind of boundary condition the wrong solution satisfies, or whether it has any physical meaning."

Two consequences: (i) For a Newtonian or Maxwell fluid ($t_r = 0$), or a plate started without a jump ($f(0) = 0$, such as $f = \sin(\omega t)$), the error disappears, so reducing a solution to one of these limits does not validate it. And (ii) since the two plates agree after $t\sim$ a few $t_r$, the erroneous solution looks right at long times. The difference is in the start-up, which is what the problem is about.

Running the notebooks

Binder

Click a Colab badge in the table, launch the whole repository in Binder, or run locally:

git clone https://github.com/ichristov/viscoelastic-startup
cd viscoelastic-startup
python3 -m pip install -r requirements.txt     # or: conda env create -f environment.yml
jupyter lab notebooks/

Each notebook runs top to bottom on a fresh kernel and regenerates every number and figure it shows, except the values read off Balan's published figures, which are listed in the cell that uses them and can be re-derived with the digitizers in tools/. The notebooks themselves read no data files. On a laptop, each takes up to a few minutes. But the notebooks are likely not long-term robust: they may need updates on other platforms, or as the Python libraries evolve. ⚠️

The notebooks are committed executed, so they can also be read on GitHub without running them, with a static plot in place of each interactive one. The regenerated paper figures are also in figures/.

💡 To run a notebook as a standalone Python script (stripping all the Markdown commentary), convert it:

jupyter nbconvert notebooks/christov_christov_2010_second_grade.ipynb --to python --PythonExporter.exclude_markdown=True
ipython notebooks/christov_christov_2010_second_grade.py

Run the script with ipython, not python, because the notebooks use IPython "magic" commands such as %matplotlib inline.

Reading a notebook

  • The erroneous solutions are marked so they cannot be mistaken for correct ones. Each is bracketed by ⚠️ banners and drawn as a vermillion dashed curve. It is transcribed from the original paper, with its page, and never fixed.
  • Misprints in the Comments themselves are corrected in place, with a note saying what was printed and why it is corrected.
  • Every claim is checked twice ✅, against a numerical inversion of the Laplace transform (via mpmath) and against a finite-difference scheme, with convergence tables.
  • Anything a notebook shows that its paper does not state (the ramped-plate identifications) is marked "shown here".
  • Each notebook keeps its paper's notation, so the unit step function is $H(t)$ in some of them and $\theta(t)$ in others.
  • Oldroyd-B and Jeffreys are used interchangeably ↔️, here and in the notebooks: in these unidirectional flows the convective terms of the Oldroyd-B model drop out of the shear-stress equation, leaving the linear Jeffreys model. Only the Gordon–Schowalter slip parameter keeps the normal stresses coupled in.

Citing

To cite the notebooks themselves, cite the Zenodo archive, doi:10.5281/zenodo.22930189; each release also has its own DOI, which pins the exact code you ran.

Please cite the Comment whose results you use. Each notebook's REFERENCES cell has the full entry. The notebooks reproduce:

  1. I. C. Christov, On a difficulty in the formulation of initial and boundary conditions for eigenfunction expansion solutions for the start-up of fluid flow, Mech. Res. Commun. 51 (2013) 86–92. arXiv:1305.5999
  2. C. I. Christov, P. M. Jordan, Comment on “Stokes' first problem for an Oldroyd-B fluid in a porous half space” [Phys. Fluids 17, 023101 (2005)], Phys. Fluids 21 (2009) 069101.
  3. I. C. Christov, C. I. Christov, Comment on “On a class of exact solutions of the equations of motion of a second grade fluid” by C. Fetecău and J. Zierep (Acta Mech. 150, 135–138, 2001), Acta Mech. 215 (2010) 25–28. arXiv:1003.2188
  4. I. C. Christov, Stokes' first problem for some non-Newtonian fluids: Results and mistakes, Mech. Res. Commun. 37 (2010) 717–723. arXiv:1009.4416
  5. I. C. Christov, P. M. Jordan, Comments on: “Starting solutions for some unsteady unidirectional flows of a second grade fluid” [Int. J. Eng. Sci. 43 (2005) 781], Int. J. Eng. Sci. 51 (2012) 326–332. arXiv:1111.4464
  6. P. M. Jordan, A note on start-up, plane Couette flow involving second-grade fluids, Math. Probl. Eng. 2005 (2005) 539–545.
  7. I. C. Christov, Comments on: “Energetic balance for the Rayleigh–Stokes problem of an Oldroyd-B fluid” [Nonlinear Anal. RWA 12 (2011) 1], Nonlinear Anal. RWA 12 (2011) 3687–3690. arXiv:1107.2947
  8. P. M. Jordan, Comments on: “Exact solution of Stokes' first problem for heated generalized Burgers' fluid in a porous half-space” [Nonlinear Anal. RWA 9 (2008) 1628], Nonlinear Anal. RWA 11 (2010) 1198–1200.
  9. I. C. Christov, Comment on “Note on the start-up of Couette flow for viscoelastic fluids” [Phys. Fluids 35, 113108 (2023)] (preprint, 2026). arXiv:2609.30359

Repetitive errors, near and far

📝 Three more Comments in the same series are not (yet) reproduced here:

👉 George Santayana wrote that "Those who cannot remember the past are condemned to repeat it", a line more often misattributed to Churchill than read. Indeed.

Nor is the genre new. Reviewing a 1950 paper in Mathematical Reviews, C. Truesdell wrote:

This paper, whose intent is stated in its title, gives wrong solutions to trivial problems. The basic error, however, is not new: … the stress-strain relations used are those once proposed by St.-Venant …, whose incorrect confusion of coordinates in the deformed and undeformed states of the body was pointed out by Brill and Boussinesq …

— C. Truesdell, review of G. García, Equations of finite vibratory motions in isotropic elastic media, Actas Acad. Ci. Lima 13 (1950) 29–38, MR0039515 (12,561a)

On Truesdell himself: J. M. Ball, R. D. James, The scientific life and influence of Clifford Ambrose Truesdell III, Arch. Rational Mech. Anal. 161 (2002) 1–26. Free copy

🔁 Nor is it confined to viscoelasticity, or to me. Corrections of similar kind are written in neighboring fields, and catalogues of the genre exist:

🤔 Why such errors persist, and why mathematics corrects them more slowly than other fields, is itself a subject of research: J. F. Grcar, Errors and corrections in mathematics literature, Notices Amer. Math. Soc. 60 (2013) 418–425.

AI use

This repository—the notebooks, their organization, this README and the supporting scripts—was designed and implemented with Claude (Anthropic) as a coding and calculation assistant 🤖, working throughout from I.C.C.'s Comments and his existing Matlab and Mathematica codes, under his direction. Every number and figure is regenerated and cross-checked inside the notebook that shows it, and all results were independently verified by I.C.C., who is responsible for the content.

Licenses

Two licenses, split by what the thing is, cell by cell:

  • Code — BSD-3-Clause. The code cells of the notebooks, and the scripts and configuration files.
  • Text and figures — CC-BY-4.0. The markdown cells of the notebooks, this README, the figures and the cover art.

Neither covers the papers being reproduced or the papers they correct: those are their authors' work, cited and quoted with attribution, and not redistributed here.

About

Verification and reproducibility of exact unidirectional solutions for start-up flows (Stokes and related problems) of viscoelastic fluids via Jupyter notebooks in Python/Colab.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages