Part 5: Hydrodynamics and Swimming
Yes we have a stat for movement speed now, but it’s a generic stat that is not tied to the organism’s body or the environment in any way. In this part we will look at the hydrodynamics of swimming and how to make movement speed realistically determined. There are no specific assumptions from our list that we are breaking down, instead we are just adding detail to the movement calculations from Part 3. Let’s find out how to make a creature’s swimming speed depend on its size, shape, and surroundings.
Undulation
Modelus Specius is a simple, spherical creature comprised of simple tissue. We’ll assume that this simple tissue has basic abilities to perform various tasks, such as in this case contracting to act like a muscle. We’ll classify Modelus Specius as using the type of swimming referred to as undulation, meaning it flexes the sides of its spherical body back and forth to propel itself forward. Thus we’ll say only the tissue on the sides of its body are contributing their force towards the swimming motion.
It’s hard to imagine how a solid sphere would use undulation, so imagine it as similar to the motion used by jellyfish (except that there is no hollow cavity or tentacles in the bottom).
Online, it says that the fastest recorded speed of a jellyfish is 8 kph. Dividing by ten I think gives us a more realistic top speed for small and simple jellies that are similar to Modelus Specius, so a top speed of 0.8 kph or 0.2 m/s. Now, for the next step, let’s take a look at Forces.
Force
Force is a simple concept in physics. It’s basically an interaction or energy that changes the motion of an object. When an object experiences a net force in a direction, it accelerates in that direction. When an object experiences no net forces in a direction, it maintains its motion in that direction (which could be maintaining its current speed without decelerating, or it could be being completely motionless). Keep in mind that accelerating in one direction (such as backwards) is the same as decelerating in the opposite direction (forwards). Why “net” force by the way? Because you can have multiple forces that act in opposing directions, but the ones that are greater will determine how the object’s motion changes.
For Modelus Specius’ swimming, we will consider its motion as an interplay of two forces: The “thrust” or “swim” force that the organism produces to propel itself forwards, and the drag force of water pushing back against it as it swims. We can visually display these using a diagram common in physics, a free-body diagram
Drag Force
At top speed, the swim force and the drag force will perfectly balance each other out, resulting in top speed being achieved and no more forward acceleration. Why is this the case? Because when you first start swimming, your Swim Force greatly outweighs your Drag Force. However, Drag Force increases with your speed, so as you speed up your Drag Force increased but your Swim Force stays the same. Eventually your Drag Forces reaches the value of your Swim Force, and that’s when you hit top speed and stop accelerating.
We already know the top speed of the Modelus Specius, which we’ve estimated at 0.2 m/s. But what if the ocean’s temperature changed and made water more resistant to swimming (higher drag)? What if Modelus Specius’ size got larger and less hydrodynamically shaped? Since drag force can vary so much, we should use our estimate of 0.2 m/s top speed to find the actual Swim Force produced by the jellyfish.
To find the Swim Force, we will find the Drag Force and know that by definition the Swim Force has to be the same value. Drag Force can be calculated using the following equation:
Let’s break this equation down variable by variable to see how drag will be calculated in Thrive.
Relative Flow Velocity
This refers to the difference of velocity (remember that velocity is just a physics term for speed with a direction) between the fluid and the object.
If the fluid flows in the opposite direction to the organism’s motion, then you add the velocities to find the relative velocity. If flowing in the same direction like the 2nd panel, you subtract them (if you and the water are both moving the same way, it feels like you’re not moving). If the water is motionless, you only consider the velocity of the organism. Okay, simple enough, but this brings us to a dilemma.
The Dilemma
Now obviously ocean currents are a very real phenomenon that play a big role in life, but I simply cannot imagine how to make an algorithm that takes into account the role of water currents, especially when most of the values being used are averages. Water currents flow in different directions at different speeds all over the ocean. Do we just take an average direction and average speed for the entire patch’s water current?
Okay, say we do that, how do we factor that into the algorithm? Do we apply that to the speed of the organism when he is hunting? How do we know when the water current is flowing in the same direction as the movement? In the opposite direction? How do we know when it’s flowing at a 30 degree angle from the organism’s motion. We could theoretically get an “average direction” for all hunts, but how would that be calculated? We’d have to get an average position for the predator population, and an average position for the prey population. And keeping track of the positions of objects in the patch opens a WHOLE new can of worms…
There are two possible solutions I see to this problem:
- Completely ignore ocean currents and always assume the fluid’s velocity is 0.
- Completely ignore ocean currents within a patch, but consider ocean currents between patches.
Ignoring Ocean Currents
This is a simple solution that makes it so that we always only consider the velocity of the organism.
Ocean Currents Between Patches
In this scenario, you do the same as in the first solution, but instead you track ocean currents between patches. This means that ocean currents can affect things like migrations between patches, or even moving to another patch to hunt (if that is intended to be possible), but not any interactions within a patch. I feel like this solution doesn’t sacrifice too much realism since ocean currents play a more important role on the larger scale (between patches) than the smaller scale (within patches).
For our purposes, we will proceed using the 2nd solution, which means the relative fluid velocity is equal to the velocity of the organism, which is 0.2 m/s. This gives us so far:
Drag Force = 0.2^2
Density of the Fluid
Next we must consider the density of the ocean. The density of ocean water on the surface is 1027 kg/m^3. As you go deeper, the density of seawater increases. However, it increases at different rates depending on what latitude you are at. Seawater at latitudes of around 30-40 degrees south (a region called the Pycnocline) follow this pattern:
Modelus Specius lives at the bottom of the ocean, so let’s say the depth of the patch is 4000m. Assuming similar conditions to Earth at 30-40 degrees south, this gives us a density of 1028 kg/m^3. This means drag force is now:
Drag Force = 1028 * 0.2^2
We can simplify this and divide it by 2 (to get rid of the fraction in the formula) to get:
Drag Force = 20.56
Reference Area
When you swim into a certain direction, even though you are a 3D shape you are presenting a 2D profile or “silhouette” to the water. This “side” or “face” depends on which side you swim with, aka where is your front. Since Modelus Specius is a sphere, the frontal surface area is just a circle. In fact for a sphere any direction you look at it its 2D profile is just an equally shaped circle. Using the radius of Modelus Specius which we earlier defined as 0.5 cm, that gives us a circle area of 0.000079 m^2. This gives us:
Drag Force = 20.56 * 0.000079<U+202C> = 0.0016
Drag Coefficient
The drag coefficient is a value that takes into account the shape and texture of the object for how much drag it experiences. Many tests have already been done to find the Drag Coefficients for many reference shapes:
The Organism Editor will look at any species and assign the nearest approximation of drag coefficient based on what shape the front-side is closest to. Evolutions to skin (like hydrodynamically shaped scales) can increase or reduce the drag coefficient. Since Modelus Specius is a solid sphere, we’ll use the drag coefficient of 0.47.
Drag Force = 0.0016 * 0.47 = 0.00076
And that’s it! Our Drag Force is 0.00076 Newtons (the unit for force, also shortened to N). This means Modelus Specius must generate 0.00076 N of Swim Force.
Swim Force
When a muscle flexes, it produces a certain amount of force based off of the cross-sectional area of the muscle. Therefore if you know the area of the muscle, and since we know the force produced per area, you know the force the whole area can produce. Well for Modelus Specius it’s backwards, since we know the total force it can produce, and the total area involved in undulation, we can work backwards to find the force produced per area.
An example of cross-sectional area of human muscles.
A total of 0.00076N of force is being produced to swim when at top speed. The cross-sectional area of Modelus Specius is 0.000079 m^2. However, for realism’s purposes I would say that perhaps only 50% of the cells in the sphere are flexing and unflexing to produce the swimming motion, so that means half of that area so 0.000039 m^2. This gives a force per area of 19.5 N/m^2. Human muscle has a force per area of 350000 N/m^2. Yes, a lot more, but humans have also had millions of years to evolve their muscles to become incredibly efficient, whereas Modelus Specius is a very primitive species with very simple muscle fiber cells.
Updating the Algorithm
So now we have some values that we can put into the algorithm. Muscle Area (the area of cells involved in undulation), and Muscle Strength (the Newtons produced per area of the muscle). An organism uses these to produce Swim Force. Swim Force is then compared to the Drag Force caused by the environment, and the result determines the top speed of the organism.
One assumption this is making is that the organism will accelerate so quickly to its top speed that we can just use the top speed for its hunting speed, and ignore the time spent accelerating. For now we will have to make this assumption for simplicity’s sake, but in the future we can revisit this to try to flesh it out.
Demo
Running the updated algorithm gives us results very similar to Parts 4 and 3:
Starting Conditions
- Simulation Time = 24 months
- Modelus Specius
- Starting Population = 100
- Available Reproducers = 1.0
- Mating Frequency = 1/month
- Litter Size = 1
- Lifespan = 3 months
- Base Metabolism = 300 calories/month
- Clustering = 0
- Locomotion = Undulation
- Muscle Area = 0.000039 m^2
- Muscle Strength = 19.5 N/m^2
- Drag Coefficient = 0.47
- Frontal Surface Area = 0.000079 m^2
- Swim Speed = 20cm/s (Derived from above above traits)
- Body Radius = 0.5cm
- Body Volume = 0.52cm^3
- Food
Starting Amount = 50000
Energy Yield = 1 calories
Regeneration Rate = 50000/month
Body Radius = 5cm
Body Volume = 523.6cm^3
The population stabilizes around 277. The reason not much changed is that many of the changes we’ve made were under the hood, supporting more advanced interactions with other species and the environment in future parts. For example, we can now make environmental changes to the density of the oceans, or evolutionary changes to Modelus Specius’ body, and it will change the speed of its swimming. Something that did change though is that the speed of Modelus Specius is now around 20cm/s instead of 1cm/s, which has reduced the time they spend hunting every month to even less (0.22%).
Glad to be done with this pretty technical and not very rewarding part. Next time, we will finally, finally add in the main ingredient of evolution that we all love… Other species!
Summary
New Performance Stats
None
New Traits
Locomotion Type
Muscle Area (Swimming)
Muscle Strength (Swimming)
Coefficient of Drag
Frontal Surface Area
Topics for Discussion
- How do we model ocean currents?