hemelb-codes / hemelb

A high performance parallel lattice-Boltzmann code for large scale fluid flow in complex geometries
GNU Lesser General Public License v3.0
36 stars 12 forks source link

Prepare configuration files for PV Womersley flow runs #353

Closed schmie closed 9 years ago

schmie commented 9 years ago

Reported by miguel on 25 Jul 2012 13:28 UTC None

schmie commented 9 years ago

Modified by miguel on 26 Jul 2012 08:40 UTC

schmie commented 9 years ago

Modified by hywel on 2 Aug 2012 10:38 UTC

schmie commented 9 years ago

Comment by miguel on 3 Aug 2012 16:20 UTC Done in 77c17ef06452/Resources. Hywel, please CR.

Some tech debt moved to #508.

schmie commented 9 years ago

Modified by miguel on 3 Aug 2012 16:20 UTC

schmie commented 9 years ago

Comment by miguel on 6 Aug 2012 16:26 UTC I've done a bit of literature research and I found a collection of Womersley number values for different parts of the human cardiovascular system in Bronzino, J.D. "The biomedical engineering handbook (3rd ed)". A snapshot of the relevant table is attached.

I also found a paper with similar values obtained with Dopler analysis:http://www.ncbi.nlm.nih.gov/pubmed/20659826

Womersley numbers ranging 3-21 would be representative of what happens in the main human veins and arteries.

schmie commented 9 years ago

Comment by hywel on 7 Aug 2012 08:26 UTC This looks good.

Is there another changeset somewhere that lets us read in and use the sinusoidal period?

womersley_list in the main generating file should probably be updated to [1,2,5,10,20], or similar.

Cheers

schmie commented 9 years ago

Modified by hywel on 7 Aug 2012 08:32 UTC

schmie commented 9 years ago

Comment by miguel on 7 Aug 2012 09:27 UTC Replying to hywel:

Is there another changeset somewhere that lets us read in and use the sinusoidal period?

Looking at the SimConfig class, it appears to me that the machinery to read in iolet periods is in place (and also unit tested). There's however no functional/regression tests exercising this functionality.

womersley_list in the main generating file should probably be updated to [1,2,5,10,20], or similar.

Updated in a853f961d63b/Resources

Anything else before I close the ticket?

schmie commented 9 years ago

Comment by hywel on 7 Aug 2012 09:52 UTC Can't close this while it's marked as being blocked by #494...

schmie commented 9 years ago

Comment by hywel on 7 Aug 2012 09:52 UTC Replying to miguel:

Replying to hywel:

Is there another changeset somewhere that lets us read in and use the sinusoidal period?

Looking at the SimConfig class, it appears to me that the machinery to read in iolet periods is in place (and also unit tested). There's however no functional/regression tests exercising this functionality.

Cool, I had no idea.

womersley_list in the main generating file should probably be updated to [1,2,5,10,20], or similar.

Updated in a853f961d63b/Resources

Anything else before I close the ticket?

Looks good to me, cheers.

schmie commented 9 years ago

Modified by miguel on 7 Aug 2012 14:17 UTC

schmie commented 9 years ago

Comment by miguel on 7 Aug 2012 14:19 UTC Defining only the inlet period is not enough to get a sinusoidal pressure profile. Done properly in aae55d88b295/Resources.

Hywel, please CR.

schmie commented 9 years ago

Comment by hywel on 7 Aug 2012 14:25 UTC Well spotted. Sorry the review didn't catch this.

Do we have a good reason behind deciding that min(input pressure) == constant output pressure. I.e., that output = 80, and input = from 80 to 80 + pressure_diff? I don't object, just want to check.

Your work looks fine, thanks.

schmie commented 9 years ago

Comment by miguel on 7 Aug 2012 15:22 UTC There's not a lot of thought put behind that choice, I'm afraid. It was just a starting point with a personal bias against back flow.

The textbook on Cardiovascular Mathematics that I have in the office gives an analytical solution of Womersley flow that assumes pressure differences of the form \delta P = A * cos(w*t) (i.e. no shift). Unless you have found anything better, I suggest we go with that expression and therefore; I will modify the inlets accordingly.

schmie commented 9 years ago

Comment by miguel on 7 Aug 2012 15:43 UTC Done in 4471c16b54a4/Resources.

schmie commented 9 years ago

Comment by hywel on 8 Aug 2012 09:40 UTC http://en.wikipedia.org/wiki/Pulsatile_flow gives the general solution for Fourier-decomposed boundary conditions. It might be nice to write our scripts in such a way that we can specify a constant difference and a sinusoidal magnitude at the inlet.

The diff looks right but...

I think we need to be careful about setting the pressure boundary conditions. We get to set (mean_pressure_diff, amplitude_pressure_diff, pressure_frequency) and will determine v_max (and hence Re) and omega (and hence Wo). So we have 3 params to determine two constraints. I'd suggest a third constraint of V_min = 0 to avoid backflow. Anyway, my point is, we should be using the analytical solution to determine these. Specifying Wo and Re will determine the pressure_frequency but the solution will be needed to specify mean_pressure_diff, amplitude_pressure_diff in order to get the right Re and to make sure V_min = 0.

I don't think we're doing that at the moment, but we should. Can talk about this more in scrum.

schmie commented 9 years ago

Comment by miguel on 8 Aug 2012 13:13 UTC Replying to hywel:

http://en.wikipedia.org/wiki/Pulsatile_flow gives the general solution for Fourier-decomposed boundary conditions. It might be nice to write our scripts in such a way that we can specify a constant difference and a sinusoidal magnitude at the inlet.

Great, that's more general that what I found.

I think we need to be careful about setting the pressure boundary conditions. We get to set (mean_pressure_diff, amplitude_pressure_diff, pressure_frequency) and will determine v_max (and hence Re) and omega (and hence Wo). So we have 3 params to determine two constraints. I'd suggest a third constraint of V_min = 0 to avoid backflow. Anyway, my point is, we should be using the analytical solution to determine these. Specifying Wo and Re will determine the pressure_frequency but the solution will be needed to specify mean_pressure_diff, amplitude_pressure_diff in order to get the right Re and to make sure V_min = 0.

Let's discuss this during the mid-spring meeting tomorrow to make sure that the systems we simulate are sensible and representative. We need to revisit the question of entrance length (and hence min pipe length) in the Womersley framework. I've got some preliminary results that suggest that having 0 mean pressure does not necessarily translate into back flow in a Wo=4 run. See velocity profile attached (Re=1, Wo=4, sampled half way down the pipe, for t s.t. cos(wt)=-1).

schmie commented 9 years ago

Comment by miguel on 9 Aug 2012 10:01 UTC I've written a bit Python to compute and plot analytical solutions of Womersley flow. At the moment, the velocity profile I uploaded yesterday is looking nowhere near where it should, unfortunately.

schmie commented 9 years ago

Comment by miguel on 11 Aug 2012 19:31 UTC The issue regarding no back flow in comment:17 was me getting confused by plotting the magnitude of the velocity vector instead of the z component (!). As discussed on 10/08/2012, the shape of the velocity profiles is good although the magnitude is off.

I'm reassigning this ticket to Hywel while I'm on holiday.

schmie commented 9 years ago

Modified by miguel on 11 Aug 2012 19:31 UTC

schmie commented 9 years ago

Comment by jamespjh on 16 Aug 2012 13:15 UTC H. busy, back to Mig for 0.2.12

schmie commented 9 years ago

Comment by miguel on 24 Aug 2012 13:27 UTC 7a31da7bed12/Resources add flow type identifier strings in .smy files. This will be later used in the analysis tool to pick the right analytical solution to compare against.

schmie commented 9 years ago

Comment by miguel on 24 Aug 2012 15:19 UTC 83de91cf218d loads flow type in analysis tool.

schmie commented 9 years ago

Comment by hywel on 28 Aug 2012 07:13 UTC Yep, looks good to me.

schmie commented 9 years ago

Comment by miguel on 29 Aug 2012 12:26 UTC The scripts necessary to launch the Womersley runs were added in e6129b1dc252/Resources. Hywel, please CR.

schmie commented 9 years ago

Comment by miguel on 29 Aug 2012 14:04 UTC Small refactor in 8127b2cb1c63 towards being able to handle multiple types of flow

schmie commented 9 years ago

Comment by hywel on 29 Aug 2012 20:05 UTC Thanks for that refactor, looks much nicer.

What is inlet_radius? Its definition seems nonsensical to me, looks like how far an inlet site is from (0,0,0). It's never used, so we're safe to delete it, if you agree that it doesn't calculate anything useful.

Scripts look good too. Did you have a chance to compare how we're doing against analytical solution? Or are we waiting until Womersley analysis scripts are in place?

schmie commented 9 years ago

Comment by hywel on 30 Aug 2012 10:22 UTC I'm going to take this ticket now.

schmie commented 9 years ago

Comment by hywel on 30 Aug 2012 13:12 UTC 21e4f172a40e gets ride of the inlet_radius field. I'd put it there and it's unused, so I think there's no problem in removing it.

schmie commented 9 years ago

Comment by miguel on 31 Aug 2012 12:46 UTC Added Womersley velocity analytical solution in 08907340e87f and bug fixed in 73e7eb99f879.

schmie commented 9 years ago

Modified by hywel on 28 Sep 2012 21:21 UTC

schmie commented 9 years ago

Comment by hywel on 28 Sep 2012 21:21 UTC If there are no issues with the review, feel free to close.

schmie commented 9 years ago

Comment by miguel on 11 Oct 2012 13:31 UTC Hywel, I'm a bit confused with this ticket. The changesets in comment:30 were mine, so I guess they need reviewing by you before closing. Does that make sense?

schmie commented 9 years ago

Comment by hywel on 11 Oct 2012 13:38 UTC Yep, that all looks good to me.

schmie commented 9 years ago

Comment by miguel on 11 Oct 2012 13:46 UTC Thanks!