Womersley profile in CFX 11
Hello Everyone,
I am attempting to implement the transient Womersley profile as an inlet velocity boundary condition in CFX 11 and have begun to write some user Fortran subroutines to accomplish this task. My google searches of implementing this profile in CFX have not resulted in any substantial results. Thus, I was wondering if any of the CFX users in this forum have successfully implemented this profile within CFX (versions 5 through 11) and if they have any tips, tricks, pointers, or snippets they would be willing to share. Thanks in advance for any assistance you can provide. 
Re: Womersley profile in CFX 11
Why not use a CELexpression instead? The Bessel function is available under Expressions/CEL/besselJ
What are you modelling? Blood flow? Cheers Liza 
Re: Womersley profile in CFX 11
Thanks for the response Liza. Yeah, you guessed it, modeling blood flow. I have looked into using a CELexpression but my equations for the Womersley profile require imaginary numbers and an array of values that would represent the Fourier transform of a physiological pressure pulse. To my knowledge, CELexpressions are not able to include these two features in the expression language. I had been trying to think of a method to sidestep these issues and still use a CELexpression, but havenot had any success and since then switched to begin a user fortran function. Let me know if you have any ideas or suggestions to overcome these two issues because I would prefer using a CELexpression.

Re: Womersley profile in CFX 11
Hi Sir Chris Basciano,
do you use fixed and static (without moving) boundary condition for your blood vessel? How is the boundary condition for blood vessel? (wall=adiabatic?,...). Best regards. "A Womersley number is a dimensionless number in biofluid mechanics. It is a dimensionless expression of the of pulsatile flow frequency in relation to viscous effects. It is named after John R. Womersley (19071958). The Womersley number, usually denoted α, can be written as α = R (ω μ^1)^0.5 = R (ω ρ μ^1)^0.5 where R is an appropriate length scale (for example the radius of a pipe), ω (omega) is the angular frequency of the oscillations, and ν (ni), ρ, μ are the kinematic viscosity, density, and dynamic viscosity of the fluid, respectively. It can also be written in terms of the dimensionless Reynolds number (Re) and Strouhal number (Sr): α = (2 pi Re Sr)^0.5, being pi = 3.1415. The Womersley number arises in the solution of the linearized Navier Stokes equations for oscillatory flow (presumed to be laminar and incompressible) in a tube. When α is small (1 or less), it means the frequency of pulsations is sufficiently low that a parabolic velocity profile has time to develop during each cycle, and the flow will be very nearly in phase with the pressure gradient, and will be given to a good approximation by Poiseuille's law, using the instantaneous pressure gradient. When α is large (10 or more), it means the frequency of pulsations is sufficiently large that the velocity profile is relatively flat or pluglike, and the mean flow lags the pressure gradient by about 90 degrees. In a flow distribution network that progresses from a large tube to many small tubes (e.g. a blood vessel network), the frequency, density, and dynamic viscosity are (usually) the same throughout the network, but the tube radii change. Therefore the Womersley number is large in large vessels and small in small vessels. It has been argued (West et al., 1997) that universal biological scaling laws (powerlaw relationships that describe variation of quantities such as metabolic rate, lifespan, length, etc., with body mass) are a consequence of the need for energy minimization, the fractal nature of vascular networks, and the crossover from high to low Womersley number flow as one progresses from large to small vessels. References: Nichols, W. W., and O'Rourke, M. F., 2005, "McDonald's Blood Flow in Arteries", London, HodderArnold. West, G. B., Brown, J. H., and Enquist, B. J., 1997, "A General Model for the Origin of Allometric Scaling Laws in Biology", Science, Vol. 276, pp. 122126. Womersley, J. R., 1955, "Method for the Calculation of Velocity, Rate Flow, and Viscous Drag in Arteries when the Pressure Gradient is Known", Journal of Physiology, Vol. 127, pp. 553â€"563." Source: from Wikipedia, the free world encyclopedia through the internet: http://en.wikipedia.org/wiki/Womersley_number/ 
Re: Womersley profile in CFX 11
Rogerio,
Thankyou for your response. I am confused by your first question if my boundary conditions (BCs) are fixed, but I will provide as much details as I can. My first round of simulations will be transient simulations with physiological flow waveforms for the average velocity implemented on the inlet boundary and physiological pressure waveforms implemented on the outlet/opening boundary. They will not include any wall motion in the first round of experiments so, measuring wave reflection is not the goal of the study. Eventually, the walls will include fluidstructure interaction (FSI) which results in mesh displacement/motion, but this will not be implemented in these first round results, and will focus on the displacement normal to the wall rather than axial displacement required for wave reflection analysis. Also, the Womersley profile is different than the Womersley number. The profile is an expression for the velocity across the the radial distance of a tube. It is a dynamic equilibrium state that is achieved after a certain length and time of transient flow in a tube. The goal of the profile is to be more representative of the blood velocity as it enters my region of interest (abdominal aorta) rather than a uniform or parabolic velocity profile. While on a large scale, the actual profile and oscillatory effects may not be overtly significant. However, my study is focusing on the local velocity field where the inlet profile will play a large role in determining fluid streamlines. Thanks again for the response. 
Re: Womersley profile in CFX 11
I am assuming you have and expression for
v = f(radius,time) that is given as a fourier series. I suppose if there are only a few harmonics in the series then you could type the fully expanded expression in CEL. Otherwise you need a bit of user fortran. Just write a User FORTRAN function where you pass the radius and time in as arguments. By default the solver uses "r = sqrt(x*x+y*y)" so if your boundary is perpendicular to the zaxis then you can just use "r" and "t" as arguments. Otherwise you need to define a local coordinate system. 
Hi,
Does anyone have a Womersley Fortran code to share? I would write it myself, if I knew how to... :/ 
Hi,
Hekler's post pretty much sums it up  most functions can be done as CEL expressions or possibly interpolation functions. If that does not give you enough power only then consider fortran. The tutorial examples explain both using CEL expressions and fortran subroutines which could be adapted to this task. Glenn Horrocks 
Hi Glenn,
Yes, I've read Hekler's post and I know in principle how to do it, it's just that my Fortran skills could be better. I didnt find the tutorials on Fortran to be useful at all, since the .F files were already written. So before I take a Fortran training course I just wanted to ask if someone done this before. Fortran in neccessary since CEL cannot handle imaginary numbers... Lance 
Womersley profile
the answer for your question is exacting. I just can give you a little tip, to the best of my knowledge the program named Mathcad may produce Fortran and C++ codes from Mathcad Interface( which I guess very user friendly) and then you can utilize that code in the subroutine which is good for CFX.
I wish some day you will be able to implement the Wormsely velocity profile, then you must share on this forum. I feel this velocity profile(having Bessel functions) is the analytical solution of some unsteady Navier stokes problem. wishing u good luck Hashmi 
Quote:
Glenn 
Hi Chris
I am also attempting to model womersley flow in a vessel, using ANSYS CFX. It would be a great help to me if you could briefly let me know if you made any progress. 
I tried to do it in Fortran, but ended up doing it in Matlab instead and exported the profile to a.csv file which was read into CFX using "initialize profile data".
I would give you the matlab hack if I could find it... Lance 
I have my own program to generate womersley flow profile as a .csv file. However, how is it that you entered the .csv as an initial condition?
At the moment, I use an oscillating pressure gradient as the boundary conditions, and want to apply womersley flow profile as an initial condition, so I can simulate womersley flow as it develops from halfway through its period. 
I didnt enter the womersley profile as an inital condition. I assigned it to the inlet and then let the simulation run for a couple of pulses.

Hi Lance,
I am also trying to run a blood flow simulation using the Womersley velocity profile( in fluent though). In fluent, I am supposed to write a user defined function for the Womersley velocity profile, but I am confused about the bessel function terms. Therefore, I was wondering if you have figured out the problem by now? Thanks, Rohini 
"I am also trying to run a blood flow simulation using the Womersley velocity profile( in fluent though). In fluent, I am supposed to write a user defined function for the Womersley velocity profile, but I am confused about the bessel function terms. Therefore, I was wondering if you have figured out the problem by now?"
Just a quick tip, that may or may not help. If your Wormersley number is fairly low (<3 or ~2 which is about right for smaller animal blood flow) you can approximate it using a parabola, there is less that 1% difference, I found. 
Thanks ylm054.
Do you mean that instead of using the bessel function term, I use the parabolic velocity term? I believe there are scientific libraries for incorporating the bessel function terms. Has anyone used those? Thank you Rohini 
yup, instead of bessel functions I used a parabola, because it was much simpler. Later I did implement Womersley profile since I wanted to look at higher Womersley numbers, but I used CFX not fluent, so I'm not sure how to do it.

Hi ylm054
How did you implement womersley profile in your simulation? Did you use CEL or user fortran? 
All times are GMT 4. The time now is 23:13. 