
[Sponsors] 
January 19, 2021, 05:41 
Multiphase nonNewtonian viscosity of blood

#1 
New Member
Nederland
Join Date: Sep 2020
Posts: 9
Rep Power: 2 
Dear users,
I am working on multiphase blood simulations in patientspecific aortas using ansys FLUENT (version 19.1). I have succesfully implemented a twophase model on different geometries, but am struggling with the interpretation of some results. I model the blood as being nonNewtonian using a modified CarreauYasuda 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 postprocessing) 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 nonNewtonian 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 twophase 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 twophase model has the granular eulereuler multiphase approach enabled. Here, RBCs are assumed to be the granular phase with a diameter of 8e6 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 nonNewtonian 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 = (n1)/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 twophase 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.) ),((n1.)/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! Mixture_Viscosity.jpg RBC_Viscosity.PNG Velocity Magnitude.jpg 

January 20, 2021, 12:05 
Multiphase blood

#2  
Member
Dave
Join Date: Mar 2019
Posts: 35
Rep Power: 4 
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
Quote:
Furthermore you are trying to derive an expression for rbc viscosity from the weighted average of volume fractions given as: Quote:
Quote:
murbc = (mumix (1rps_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 QuemadaDas and MKM5 approaches to multiphase rheology as they are more widely used than the CY hematocrit model that Yilmaz et al. presented. I hope this helped. 

January 21, 2021, 08:12 
Multiphase blood rheology

#3 
New Member
Nederland
Join Date: Sep 2020
Posts: 9
Rep Power: 2 
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! 

January 22, 2021, 06:09 

#4  
Member
Dave
Join Date: Mar 2019
Posts: 35
Rep Power: 4 
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 nonSI 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: Quote:
Quote:
Quote:


Tags 
blood, granular phase, multiphase, shear rate, shearthinning 
Thread Tools  Search this Thread 
Display Modes  


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 NonNewtonian Viscosity  vagaikwa  FLUENT  0  April 17, 2013 20:46 