CFD Online Logo CFD Online URL
Home > Forums > Software User Forums > ANSYS > FLUENT > Fluent Multiphase

Multiphase non-Newtonian viscosity of blood

Register Blogs Members List Search Today's Posts Mark Forums Read

LinkBack Thread Tools Search this Thread Display Modes
Old   January 19, 2021, 05:41
Default Multiphase non-Newtonian viscosity of blood
New Member
Join Date: Sep 2020
Posts: 9
Rep Power: 4
mdmtramper is on a distinguished road
Dear users,

I am working on multiphase blood simulations in patient-specific aortas using ansys FLUENT (version 19.1). I have succesfully implemented a two-phase model on different geometries, but am struggling with the interpretation of some results.

I model the blood as being non-Newtonian using a modified Carreau-Yasuda model with two phases: plasma + RBC (as a granular phase). The UDF uses the shear rate of the RBCs and RBC volume fraction to calculate the RBC viscosity and this is then implemented in FLUENT under the specific settings for the RBCs in the granular phase. The bulk viscosity is assumed to be zero. The mixture viscosity is then (when post-processing) calculated according to: mu_mix = mu_rbc*VOF_rbc + mu_plasma*VOF_plasma. The plasma viscosity is assumed to be constant.

To compare and verify my results, I did a single phase non-Newtonian simulation with the same UDF, but using a fixed VOF of 0.45 (therefore, the viscosity is only dependent on the strain rate magnitude.

When I compare the mixture viscosities for the single and multiphase model, I encounter lower viscosity magnitude values for the multiphase model. I have trouble finding a reason why this is the case, since (for as far as I know), the strain rate magnitude is only dependent on the velocity of the particles. There are no differences in the velocity contour plots, so I would expect the viscosity contours to be the same as well (at least during steady state). I listed the differences between the simulations below:
1. Single phase has overall plasma viscosity of 0.0037 Pa s, whereas the two-phase has a plasma viscosity of 0.001 Pa s and the RBC viscosity is determined by the UDF.
2. The single phase model has an overall density of 1080 kg/m3 and the two phase model uses 1025 kg/m3 for the plasma + 1125 kg/m3 for the RBCs.
3. Obviously, the two-phase model has the granular euler-euler multiphase approach enabled. Here, RBCs are assumed to be the granular phase with a diameter of 8e-6 m. Granular bulk viscosity is assumed to be zero, only drag is enabled (Gidaspow model).

All other convergence settings are similar, and the results presented below are from converged steady state solutions.

Also, the UDF for 1) the single phase non-Newtonian model:
DEFINE_PROPERTY(cy_viscosity_singlephase, c, t)
float mu_plasma = 0.001;
float eps_RBC = 0.45;
float lambda = 0.110;
float n = (0.8092 * pow(eps_RBC,3)) - (0.8246 * pow(eps_RBC,2)) - (0.3503 * eps_RBC) + 1;
float m = (122.28 * pow(eps_RBC,3)) - (51.213 *pow(eps_RBC,3)) + (16.305 * eps_RBC) + 1;
float exp = (n-1)/2;
double gamma;
double mu;
gamma = C_STRAIN_RATE_MAG(c, t);
mu = mu_plasma*m*pow((1+ pow((lambda*gamma),2)),exp);
return mu;

And the UDF for the two-phase model:
#include "udf.h"
DEFINE_PROPERTY(granular_viscosity_rbc , cell , thread_rbc)
int phase_domain_index , ID=9;
Thread *mixthread;
Thread *subthread;
Domain *mixture_domain;
mixture_domain = Get_Domain(1);
mixthread = Lookup_Thread(mixture_domain ,ID);
/* predefine variables */
real muplasma=0.001;
real murbc;
real mumix;
real eps_rbc;
real lambda=0.110;
real m;
real n;
real sr;
Domain *plasma_domain;
Domain *rbc_domain;
/* get domain numbers of plasma and rbc */
plasma_domain = Get_Domain(2);
rbc_domain = Get_Domain(3);
/* loop over all threads */
sub_thread_loop(subthread , mixthread , phase_domain_index)
/* viscosity in plasma thread is muplasma */
if ( subthread == Lookup_Thread(plasma_domain ,ID) )
muplasma = C_MU_L(cell , subthread);
else if ( subthread == Lookup_Thread(rbc_domain ,ID) )
sr = C_STRAIN_RATE_MAG(cell ,subthread); /* shear rate from rbc, could be the
wrong one */
eps_rbc = C_VOF(cell , subthread);
n = 0.8092*pow(eps_rbc ,3.) - 0.8246*pow(eps_rbc ,2.) - 0.3503*eps_rbc + 1.;
m = 122.28*pow(eps_rbc ,3.) - 51.213*pow(eps_rbc ,2.) + 16.305*eps_rbc + 1.;
mumix = m* pow( (1.+ pow((lambda*sr) ,2.) ),((n-1.)/2.) );
murbc = (mumix*muplasma -(1.-eps_rbc)*muplasma)/eps_rbc;
/*if (cell %50000==0)
Message("muplasma = %f\n", muplasma);
Message("strainrate = %f\n",sr);
Message("vof = %f\n",eps_rbc);
Message("n = %f\n",n);
Message("m = %f\n",m);
Message("mumix %f\n",mumix);
Message("murbc %f\n",murbc);
Message(" %f\n",);
return murbc;

Furthermore, I investigated the effect of taking the strain rate magnitude for the two phase model from the plasma phase / from the plasma + rbc phase. However, this gave no different viscosity magntide if deducted from the plasma phase, and if it was deducted from the plasma + rbc phase, the mixture viscosity was even lower (due to the shear thinning effect).

Therefore, I was wondering: what exactly are all the parameters effecting the shear rate magnitude (and this the mixture viscosity) in a multiphase model? Since everything I read / research leads to the conclusion that it's only a function of the velocity field, whereas those are similar for the different simulations.

I included images of the different Velocity Fields + RBC viscosities + mixture viscosities.

Thanks in advance!



Velocity Magnitude.jpg
mdmtramper is offline   Reply With Quote

Old   January 20, 2021, 12:05
Default Multiphase blood
Join Date: Mar 2019
Posts: 34
Rep Power: 6
bloodflow is on a distinguished road
As well as having a few issues with your implementation, I think there are some simple mistakes in you udf's which may result in different viscous predictions.You are using inconsistent definitions of mixture viscosity in your UDF's

Originally Posted by mdmtramper View Post

mu = mu_plasma*m*pow((1+ pow((lambda*gamma),2)),exp);


mumix = m* pow( (1.+ pow((lambda*sr) ,2.) ),((n-1.)/2.) );
Your single phase definition is multiplying your mixture viscosity value (incorrectly) by the plasma viscosity which is not required as in Yilmaz et al's paper - and your multiphase model (correctly) is not.

Furthermore you are trying to derive an expression for rbc viscosity from the weighted average of volume fractions given as:

mu_mix = mu_rbc*VOF_rbc + mu_plasma*VOF_plasma
which you re-arrange to:

murbc = (mumix*muplasma -(1.-eps_rbc)*muplasma)/eps_rbc;
Which I do not believe are equivalent and should instead be:

murbc = (mumix -(1-rps_rbc)*muplasma)/(eps_rbc);

In terms of general strategy, it is unnecessary (and slow) to include your plasma definition in the multiphase code. You are giving it a newtonian viscosity - define this simply in fluent without a UDF. This reduces the work you have to do looping in your UDF.

You are correct that shear in Fluent is a function of viscosity filed and hence each phase will have (similar) but slightly different shear rates and you should be using the rbc shear in all your multiphase codes.

As a side note, I have a personal preference for the Quemada-Das and MKM5 approaches to multiphase rheology as they are more widely used than the C-Y hematocrit model that Yilmaz et al. presented.

I hope this helped.
bloodflow is offline   Reply With Quote

Old   January 21, 2021, 08:12
Default Multiphase blood rheology
New Member
Join Date: Sep 2020
Posts: 9
Rep Power: 4
mdmtramper is on a distinguished road
Thank you for your elaborate answer! It helps a lot.

The reason I multiply the mixture viscosity with the plasma viscosity is because the definition in the paper itself is dimensionless, and for proper implementation in fluent it should be dimensionless (to my knowlegde).

That's also why it's rearranged to:
murbc = (mumix*muplasma -(1.-eps_rbc)*muplasma)/eps_rbc;

since mumix*muplasma is de dimensional definition vs mumix being dimenionsless

I'm running new simulations atm but your answer has already been very useful, so thanks!
mdmtramper is offline   Reply With Quote

Old   January 22, 2021, 06:09
Join Date: Mar 2019
Posts: 34
Rep Power: 6
bloodflow is on a distinguished road
I don't quite understand what you mean, Fluent uses S.I units by default and so the number you are returning should be in Pa.s or N.s/m^2 etc. The equation's in Yilmaz paper may be fitted to data which uses non-SI units and therefore requires adjusting by a constant factor - but implying this is the viscosity of plasma is misleading I guess?

As an idea, I think it is easier to specify your phase threads as:

Thread** pt;
As now you can access normal flow variable macros for each phase a little easier, [0] being primary (Plasma) and [1] being secondary (RBC).

is Hematocrit, and

is Plasma Shear Rate etc
bloodflow is offline   Reply With Quote


blood, granular phase, multiphase, shear rate, shear-thinning

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Viscosity of Mixture multiphase modeling rezaamininiaki FLUENT 0 June 29, 2020 02:53
Running in batch mode and in GUI hocon FLUENT 0 July 23, 2019 07:53
non newtonian viscosity mina.p CFX 3 October 10, 2014 01:40
Multiphase and Non Newtonian fluid wanna88 FLUENT 0 May 27, 2013 00:09
Multiphase Non-Newtonian Viscosity vagaikwa FLUENT 0 April 17, 2013 20:46

All times are GMT -4. The time now is 12:26.