Swimming Efficiency

When the microbe stage ends the oceanic multicellular begins. In this stage the player will design an aquatic organism and then swim around an ocean. This raises the following questions;

  • What is the top speed of your organism? This is important in predation.
  • What is the energy efficiency of your locomotion?

How the player will design their organism is not completely fixed however there are clearly going to be some important factors. The organism might be skinned using something similar to the microbe stage cell membrane algorithm and so we need some way of determining drag from the shape with a minimum of computation (because there will be many species to do this calculation for). This is complicated because the fluid dynamics has two different regimes, a low Reynolds number regime where the flow is largely laminar and a high Reynolds number regime where the flow becomes turbulent, creating a wake and greatly increasing the drag.

It is possible there will be different types of muscle which can be connected in different places to different skeletons so we need a way of calculating the force the fish can produce and the energy consumed in producing such a force.

Moreover there may be many different types of locomotion to be considered, as described on this page, https://en.wikipedia.org/wiki/Aquatic_locomotion and we need to determine if there are more which we would like to include because they are physically possible but not seen on earth.

Overall we will need to settle on a model which suits our usual needs; that it uses reasonable computation, that it is reasonably scientifically accurate and, most importantly, that interacting with the model gives deep and compelling gameplay.

So far I have made no progress on these problems but these are a couple of interesting sources:

This review is very interesting and points the way to a lot of sources which might help.

This paper raises the additional complication that swimming in a shoal may be more efficient than swimming alone, so we may wish to take that into account.

So I found some useful wikipedia pages to add to this thread.

First for anyone who is interested I thought I might explain a bit about Reynolds numbers. So it’s defined as

Re = (velocity)*(characteristic length scale) / (viscosity)

Thee characteristic length scale is not very well defined so neither is the Reynolds number. Viscosity is how sticky or gloupy something is, water is less viscous than honey, you can measure it by putting it in a cup with a hole in and seeing how long it takes to flow out. So an aeroplane has high Reynolds number, it’s going fast, it’s big and it’s moving through air which is not very viscous. A Bacterium swimming in water is small and going slowly and the viscocity of water is higher than that of air so the Reynolds number works out really low.

Fluid flow generally has two regimes. When the Reynolds number is low the flow is laminar (things which start close stay close) and as the Reynolds number grows there is a transition to turbulent flow (lots of mixing where things that start close end up far apart) and trying to understand this transition is a big problem which many people are working on. There’s a million dollar prize associated with it.

Here is a good video which illustrates the transition. The length scale stays the same and so does the viscosity (same fluid in the same tube) and so as the velocity increases the flow switches from laminar to turbulent.

Here’s a video showing how laminar flow is reversible. Note how they use a thin cavity and a high viscosity fluid to keep the Reynolds number low. Turbulent flow is not reversible, there’s a lot of mixing going on.

Anyway how does this relate to the above problems? Well there are some nice formulae for drag on wikipedia which will be useful for working towards answers to the above questions, and the formula depends of the regime. Now for the microbe stage (small scale, low speed in medium viscosity) the Reynolds number is low so the following formula is the right one for the drag force F;

F = - 6pi(fluid viscosity)(radius)(velocity)

on the page there was this very helpful sentence;

“For example, consider a small sphere with radius r = 0.5 micrometre (diameter = 1.0 µm) moving through water at a velocity v of 10 µm/s. Using 10^−3 Pa·s as the dynamic viscosity of water in SI units, we find a drag force of 0.09 pN. This is about the drag force that a bacterium experiences as it swims through water.”

Which is pretty helpful as someone’s basically done a calculation for us :smile:

When the Reynolds number is higher there is the transition to a turbulent regime and this page has an equation for just such a situation;

F = (1/2)(mass density)(velocity^2)(reference area)(drag coefficient)

Here is a page with a list of drag coefficients, you can see that a well sculpted shape (like a fish) can have an extremely low drag coefficient. We will have to decide, when implementing, how to assign each procedural skin a drag coefficient.

This formula has the same problem as the “characteristic length scale” in the definition of the Reynolds number in that “reference Area” is rather arbitrary. So the formula will give a result that scales correctly when an object speeds up, but will deviate slightly between objects when different reference areas are chosen.

Notice how the formula depends on the square of the velocity now, so it will ramp up much faster as the velocity increases, going very fast is going to take a lot of energy.

It is interesting to think how to paste these two equations together. A fish will cross between regimes as it changes speed (and length and viscosity stay constant) so are we going to create a continuous drag where as you speed up the drag increases smoothly or are we going to have a jump where you start suddenly creating a turbulent wake and your drag increases significantly?

An interesting feature of turbulence is that it has a thermostatic property. So as you increase speed you reach speed X before the turbulence begins but then to fall back into a laminar regime you have to reduce speed down to Y, where X > Y. This could make for interesting gameplay.

1 Like