Looking for a Three.js Developer that is Comfortable with Navier-Stokes equations

Hi,

I am interested in having someone modify:
https://threejs.org/examples/webgl_gpgpu_water.html

where:
a) the wave is bounded by the vertical walls of circle instead of a square.
b) the overall diameter can be varied relative to the grid/element size
c) instead of the movement of a mouse initiating the the generation of waves, the sample is driven by a vertical movement (e.g. virtual vibrating plate) that is based on one or more combined sinusoidal frequencies.

I am interested to see if these changes might result in generating standing Faraday waves such as these:
https://www.google.com/search?q=cymatic+images&tbm=isch&hl=en&chips=q:cymatic+images,g_1:water:_ewiwtfl_kg%3D,online_chips:sound+waves,online_chips:linden+gledhill&rlz=1C1OKWM_enUS778US778&hl=en&ved=2ahUKEwjqwuvcm4zoAhU7IDQIHVgIDvQQ4lYoBXoECAEQHw&biw=1903&bih=937

Reach out to me: samsen@3xplr.com if interested in discussing further

I look forward to hearing from you.

Samsen

1 Like

A few relevant pointers.

The original example is a heightmap approximation of the water surface, given an infinitesimal point perturbation. It does not use the correct Navier-Stokes simulation for rendering the fluid surface.

Using a circular bounding constraint would very likely result in a noticeable aliasing of the resulted simulation, unless a very fine grid is used. In which case, the computation necessary for the simulation would be very demanding, only very few PCs would be able to render at a decent frame rate.

Adding to the last point, in order for the influence of a vertical moving plate to be correctly considered. It is necessary to utilize a 3D grid ( preferably staggered ) in other to achieve a satisfactory result. Which further complicates the high-computation nature of the problem.

I believe using FLIP fluid method approximation might be recommended to make the computational load at least manageable. But it does comes with a few caveats, like producing a particle based simulation, instead of grid-base solution like you might be thinking of.

Just some things that might be worth to consider.
Good luck.

2 Likes

Thank-you Guilherme,

for providing a clearer understanding of the math that the:
https://github.com/yomboprime/GPGPU-threejs-demos/blob/713c555c9e539d5a62e8ef4d8c91a43a9169de01/webgl_gpgpu_water.html
sample incorporates.

Based on a recent analysis of generating standing Faraday waves in actual water:
See: https://www.sheldrake.org/files/pdfs/papers/WATER.2017.10.Sheldrake.pdf ,

it appears that the organic looking standing waves that are formed are not dependent on the depth of the water, only the:

  • viscosity of the fluid,
  • driving frequency/waveform, and
  • diameter of the circular container/dish (boundary conditions).
    My thoughts were that since depth is not a factor, maybe a 2D surface might still produce interesting organic patterns. To color them one might assign color to the different heights of the surface being generated. In that study, the diameter of the dish that could be relied on to produce results was only 10mm, so we are not talking about simulating waves on a large body of water.

For myself, I have under development a sound healing web app to bring the exploration of healing oneself using sound to the public. Over the last 100 years, many researchers have found that certain waveforms of sound at certain frequencies provide information to the body to direct resources to areas that require healing. Smart phones and tablets, are now powerful and accurate enough to deliver these waveforms. This means that the current $5,000 - $10,000 price tag for machines that their developers claim are needed to make this research available, may no longer be needed. This could make this technology more widely available. The app being developed makes these (in the public domain), frequencies/waveforms easily accessible.

image003.jpg

(Attachment Dr. Peter Guy Manners Muscle Joint Wave_1036.wav is missing)

1 Like

Hi @Samsen

I am interested in your requirement and will be glad to assist you an an Three js expert.

Email sent please check

Can we have a detailed discussion over Skype : cis.am3

Regards
Frank

If all you want is a web app bakground, the 3js example and Navier-Stokes mumbo-jumbo is really poor choice, sorry :smiley: Try something like this instead:

2 Likes

Thank-you for your recommendation ‘makc3d’.

However I am not looking for a simulated background. I am looking for something that simulates the actual fluid physics involved. So shaders may not provide the result I am hoping to achieve. If I am incorrect on the point, please let me know.

well you wrote your app is about sound so I thought it has nothing to do with “actual fluid physics”.

Circle is a very specific shape, so probably exist a solution to simplify calculations.

The purpose of the Faraday Waves is to make the sound visible. The expectation is that every frequency or combination of frequencies of sinusoidal waveforms will create a unique (repeatable) organic shape. What will be required is that viscosity of the fluid, and the diameter of the disk be varied until resonance occurs and standing (Faraday) wave presents itself.

When this done with physical dishes, hi-speed cameras, and water and other fluids, only a a few specific frequencies/waveforms will produce Faraday waves for a specific dish diameter and fluid viscosity. By creating a simulation that (hopefully) mimics the physics using a PIC-FLIP implementation of the Navier-Stokes equations, instead of the dish size and viscosity being fixed, we can fix the sinusoidal frequencies of any chosen waveform, and incrementally vary the dish size and the viscosity to find values that will create Faraday waves for any waveform. It would interesting to be able to have the app automatically incrementally vary the diameter and the the viscosity and have it detect at what values resonance arises. But I am not sure how this could be done (yet).

So no, this is not a background. The exercise here is to make sound visible, or to show how sound can shape matter. So the sound and the visual image are meant to be directly correlated. And most importantly reliably reproducible.

In a earlier message in this chain, Sciecode wrote:
“Using a circular bounding constraint would very likely result in a noticeable aliasing of the resulted simulation, unless a very fine grid is used. In which case, the computation necessary for the simulation would be very demanding, only very few PCs would be able to render at a decent frame rate.”

so you mean people would calculate this in the app, and then actually reproduce in school science lab or something like that?

That would be ideal, but unlikely. It is enough to show that every sound waveform produces a unique Faraday wave in the model.

The idea is to demonstrate that specific frequencies will produce a Faraday wave from the Navier-Stokes equations. And that the same shape can be reproduced at any time from the same combination of sinusoidal frequencies, dish diameter, and fluid viscosity.

So much on the web showing the application of Navier-Stokes demonstrates the controlled chaos (mostly due to gravity) of waves, and in other cases the never to be exactly reproduced colorful 2D psychedelic images.

The interest here is to produce reproducible standing (Faraday) waves, and be able to marvel about the wide variety of orgranic looking structures that can be created (and reproduced).

Like these:
https://www.google.com/search?q=cymatic+images&tbm=isch&hl=en&chips=q:cymatic+images,g_1:water:_ewiwtfl_kg%3D,online_chips:sound+waves,online_chips:linden+gledhill&rlz=1C1OKWM_enUS778US778&hl=en&ved=2ahUKEwjqwuvcm4zoAhU7IDQIHVgIDvQQ4lYoBXoECAEQHw&biw=1903&bih=937

so in the most general terms, every picture generated from sound waveform alone without using other variables like time, user input or random numbers, would be “reproducible” in this context? if so, I still dont see why you need the simulated physics specifically, but well the reason could be “just because I want it so” I guess

edit: take this shader https://www.shadertoy.com/view/XslGz7 for example - if you replace the “rand” part with soundwave data lookup, you get an unique picture per sound as well, at almost no cost

Okay makc3d. I had a look at your shader.

Here is a link to an example of a complex waveform made up of 5 Sinusoidal Frequencies:

https://mega.nz/#!hLpHCCpR!68URQz5Y8GLnDIhzM2JmZrQKof4cbvy18Pi_Pb-Bzl0

Dr. Peter Guy Manners Muscle Joint Wave_1036

Using this as an input, it’s not clear how the shader would provide images like those I shared in a previous link.