|
[Sponsors] |
![]() |
![]() |
#1 |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Hey community
![]() I'm working on the validation of a single-phase CFD model of a stirred tank. I did a tracer injection experiment in the model to get the mixing time at different stirring speeds. Besides, I have the mixing time of different rpm in from the target bioreactor in the laboratory, where the mixing time was assessed following the conductivity after a NaCl addition. Now I have compared the mixing time from borh methodlogies but there is a huge difference. The times from the laboratory are much longer than the CFD results (which is faster homogenised). I have tried sever turbulence models, such as k-epsilon, SSt, LES, RNG-k-epsilon, k-omega...) and all of them give similar mixing time (shorter than the laboratory). Did anyone here worked in a similar problem? I don't know what else to try to refine the CFD to get closer to the real setup and validate it ![]() Btw, I'm working on CFX. Any help, experience or advice is more than welcome ![]() |
|
![]() |
![]() |
![]() |
![]() |
#2 |
Super Moderator
Glenn Horrocks
Join Date: Mar 2009
Location: Sydney, Australia
Posts: 17,816
Rep Power: 144 ![]() ![]() ![]() ![]() |
There are many things you need to check if you want an accurate simulation. See FAQ: https://www.cfd-online.com/Wiki/Ansy..._inaccurate.3F
Have a read of the FAQ and check you have confirmed everything in the list is under control. If after that you still do not know what to do then post back here some details of your simulation, including the geometry, mesh and convergence. Also attach the output file.
__________________
Note: I do not answer CFD questions by PM. CFD questions should be posted on the forum. |
|
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
There are many things.
1. Please share a picture of the simulation setup. 2. I presume you have two domains connected using interfaces. One is standing still, the second is rotating with the impeller. Can you confirm? 3. Do you run steady state with frozen rotor or fully transient simulations? 4. How large is the rotating domain and how large is the stationary domain? Additionally 4. Do you only compare average residence time? Or do you also want to determine the Residence Time Distribution? 5. What RTD curve do you expect? If it is like an ideal CSTR, then you will have a sharp initial peak and a very long the tail. Or is it more like a PFR? Can you determine these residence times accurately from an experiment in practice? 6. If in the simulation you use a scalar reflecting the residence time, your scalar is subjected to a lot of mixing. As a result, the average might be in line, the RTD will be way off. So what do you expect? Last edited by Gert-Jan; June 26, 2024 at 09:51. |
|
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Marcin
Join Date: May 2014
Location: Poland, Swiebodzin
Posts: 313
Rep Power: 13 ![]() |
I can definitely help you with refining your CFD model for stirred tank mixing time validation. Here are some potential reasons for the discrepancy between your CFD results and the laboratory measurements, along with suggestions for improvement:
**Possible Reasons for Discrepancy:** * **Model Simplifications:** * Single-phase vs. Multiphase flow: Real bioreactors might have phenomena like gas bubbles or cell suspensions that affect mixing. Consider a multiphase model if relevant. * Idealized Geometry: The real bioreactor might have imperfections or surface roughness affecting flow. Ensure your geometry accurately reflects the real setup. * Boundary Conditions: Double-check the boundary conditions, especially for walls and the impeller. Are they accurately representing the real setup (no-slip walls, accurate impeller motion)? * **Tracer Selection:** The conductivity of NaCl might be more sensitive to local variations compared to the tracer used in the CFD simulation. Consider using a tracer with similar sensitivity in your simulation. * **Mesh Quality:** A coarse mesh can lead to underestimation of mixing times. Try refining the mesh, especially near the impeller and walls, and see if the mixing time increases. * **Turbulence Model Limitations:** RANS models (like k-ε, SST) have limitations in capturing complex mixing phenomena. Consider using a Large Eddy Simulation (LES) model if computational resources allow. However, even LES might not capture all the intricacies of real turbulence, especially at lower Reynolds numbers. * **Numerical Errors:** Check for convergence criteria and ensure your simulation is well-converged. Residuals should be sufficiently low before analyzing results. **Additional Tips for Validation:** * **Literature Review:** Look for similar stirred tank validation studies and compare your approach with published works. * **Sensitivity Analysis:** Perform a sensitivity analysis for key parameters like mesh size, turbulence model, and boundary conditions to understand their impact on mixing time. * **Visualization:** Use CFD post-processing tools to visualize velocity and concentration profiles to gain insights into the mixing behavior in your simulation. * **Experimental Uncertainties:** Consider the experimental uncertainties associated with the laboratory measurements. **Specific to CFX:** * **CFX Documentation:** Consult CFX documentation for best practices on simulating stirred tanks, including recommendations for turbulence models, meshing, and validation procedures. * **CFX Support:** If you're using commercial CFX software, consider contacting their support team for specific advice related to your setup and challenges. By systematically addressing these potential issues, you can improve the accuracy of your CFD model and get closer to the mixing times observed in your laboratory experiments. Remember, achieving perfect agreement might not always be possible due to inherent limitations of models and experimental uncertainties. However, a well-refined and validated model can still provide valuable insights into the mixing behavior of your stirred tank.
__________________
Quick Tips and Tricks, Tutorials FLuent/ CFX (CFD) https://howtooansys.blogspot.com/ |
|
![]() |
![]() |
![]() |
![]() |
#5 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
Many thanks ![]() |
||
![]() |
![]() |
![]() |
![]() |
#6 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
![]() |
||
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
Thanks for the picture and the answers. Since you have 3 compartments, it is not a CSTR, nor a PFR. It is a mixture. I wonder, is it a Batch reactor for the liquid, or do you really have a CSTR with inlets and outlets......
In your case I would recommend to perform only a steady state calculation with Frozen Rotor. For a Msc Thesis this should be sufficient (unless your thesis contains only CFD. Don't think so.....). In this setup, make absolutely sure your velocity is developed well enough throughout your reactor. You can assure this by creating multiple monitoring points (Output Control in CFX-Pre) throughout your reactor where you monitor the velocity. Especially on locations where the velocity will be low. Monitor the velocities in the CFX-Solver manager! Make sure the calculation lasts long enough to see no development in velocities any more. If it takes too long, you can temporarily increase the timestep size from 1 to 10. Don't forget to set it back for your final result. Most likely you will see fluctuations of the velocity in all monitoring points. There is nothing you can do about this. I expect transient effects that can only be solved using transient analysis. I assume this will take too long In order to determine the residence time using your NaCl tracer, this has been asked multiple times on this forum. Best to look for "Residence Time" in this forum to find help. On how to setup this, follow an old query of mine: new variable defination I would recommend to perform this tracer calculation after the flow calculation. For this, I would setup a dedicated calculation in CFX-Pre: - setup your tracer calculations like in my old query. - set Expert parameter "solve fluids = f" - set Expert parameter "solve turbulence = f" - set Auto Time scale factor to 100 - set convergence criterium equal to 1e-7 - monitor the tracer variable in all your monitoring points. In the solver manager, you must: - use your flow solution as initial guess - monitor imbalance of the tracer variable. Make sure the imbalance of the tracer is zero. - monitor the tracer in all monitoring points. Make sure the tracer shows flatliners everywhere. In this way, you solve the residence time (i.e. tracer NaCl) in a frozen flow field in the fastest way possible. Note: using this method, you will determine only the time for the tracer to reach each position in your reactor. Using this method, you cannot create a responce curve like in the experiments. Neither will this generate a residence time distribution. To obtain this, transient analyses and/or tracking massless particles is required. It is all possible, but not within a quick and dirty MSc calculation for verification of lab experiment. |
|
![]() |
![]() |
![]() |
![]() |
#8 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
1- It a 1,5L stirred tank modified with two cylindrical plates. At this moment, it is a batch where water is just stirred and a tracer injected. I'm aiming to validate the CFD against the laboratory setup to further simulate fermentations. No inlets or outlets Right now, for instance, from the CFD the mixing time is around 15s while in the lab it was assessed as 30s. 2- I started with steady-state simulations to establish the flow field, however as you are pointing out, it never reached a good convergence criteria. My university supervisor suggested I should move to a transient simulation to establish the fluid profile (convergence reached). Right now I'm running 15s (no tracer) while monitoring the velocities in different MP. Based on the attached screenshot I'm assuming that after 15s the flow fluctuations are cyclic following a pattern so the flow profile is established. In the picture there is one monitoring point in each of the three compartments. Is it correct? My current time step is around 0,005 s in SST model due to convergence. 2- Regarding using a frozen field, I tried several times but when it come to solve the second sim with the tracer with initial values, the equations for the tracer remains at 0 in the solver as shown in the screenshot. There is also a screenshot with the expert parameter modified in CFX-pre. Either turning on "solve scalar" or results in the same failure. I will try modifying the autotimescale and criteria as you said. 3- So far I have been calculating the 95% mixing time exporting the data from a unique monitoring point to Excel where the time to reached the 95% of the final concentration is determined. Screenshot attached. Many thanks ![]() |
||
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
With a batch reator, there are no inlet or outlet. Then you have no residence time nor residence time distribution. You have only a mixing time.
Then you can run a full transient calculation where velocity and scalar are solved simultaneously. This is what you do already, only the scalar is missing. The extra computational effort is limited. An alternative is to only solve the scalar in a frozen velocity field. But this is less accurate. How much? I dont know. I would do both calculations to find out how large the difference is. Now your main problem. Why is the scalar not solved? I don't know. Given your graph of the transient response, it appears that you have set everything correct. Not? Nevertheless, I have some questions: - I expect that your initial guess is that the tracer concentration is zero everywhere? Where and how do you inject the tracer? Do you use a point source for a few seonds on injection time? - As an test for your setup, you can set different initial conditions for the stationary domain and the rotating domain, i.e. tracer=0 and tracer=1. Then see if it mixes. - Why the difference in mixing time? This might be a result of the turbulence model. Regardless of the Turbulence model, CFX assumes isotopic turbulent mixing everywhere. Not sure if that is applicable in your tank. This could overestimate the mixing time. If the turbulence is anisotropic, you need to switch to a different software package like Fluent or Star-CCM+ and run with a RSM model. |
|
![]() |
![]() |
![]() |
![]() |
#10 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
2- The initialization is done with no tracer (0) either in the stationary or rotating domain. Therefore, 0.02 kg/s of scalar is injected for 1 s from a source point in the stationary domain, placed in the bottom compartment. The monitoring is done in the top compartment because it's expected to be the slowest region to homogenise. Besides, the laboratory presented similar locations for injection and conductivity probe. 3- I'm afraid that at this point moving to a completely solving package is not feasible. However, I will use your comments to discuss it on the Thesis. Thank you a lot !!!!!! ![]() ![]() |
||
![]() |
![]() |
![]() |
![]() |
#11 | |
Super Moderator
Glenn Horrocks
Join Date: Mar 2009
Location: Sydney, Australia
Posts: 17,816
Rep Power: 144 ![]() ![]() ![]() ![]() |
Quote:
__________________
Note: I do not answer CFD questions by PM. CFD questions should be posted on the forum. |
||
![]() |
![]() |
![]() |
![]() |
#12 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
On the other hand, I'm still researching how to correct the experimental conductivity values using a transfer equation and controls systems calculations. Maybe the experimental data is overestimated due to sensor issues. I'm curious because the experimental tmix is approximately the double of the CFD ones. Does it says anything to you guys? |
||
![]() |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
Quote:
This is what ANSYS support explained: "You can run an anisotropic turbulence model like RSM, but the turbulent scalar mixing remains isotropic." The velocity profiles will be different when using different turbulence fields. Therefore the convection part in mixing will be different, but the dispersion part by turbulent mixing remains isotropic. Must say that I tested this more than 10 years ago. But since CFX hasn't developed much lately, I expect this still is the case. |
||
![]() |
![]() |
![]() |
![]() |
#14 |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
There are many sources of error. This could be:
- Do you monitor the imbalances? Is this zero for the tracer? - Did you achieve convergence within your time step? What is the criteria? - Did you check time step size of your transient calculation? How many inner iterations are required to achieve convergence? - A mesh issue. Maybe your's it too course. - A mesh type might also introduce an error. Probably you have Tets and prisms? A Hex mesh performs much better in these cases. - How many prisms layer do you use to solve the boundary layers? What is your Yplus? - It looks like you have small gaps going from bottom to top. How does your mesh look here? Is this accurately represented? - It could be the anisotopic part that is missing in the turbulence. - Did you estimate if you can ignore the density difference of the tracer? Might be relevant if this is injected at a location with still water conditions. Unlikely, but I don;t know your system......... |
|
![]() |
![]() |
![]() |
![]() |
#15 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
2- I would say that momentums convegence is achieved based on a RMS e-04 criterium. Just Turbulence (KO) is not comletely okay. Screenshots. 3- A timestep analysis was done = 0,01 s / 0,005 s / 0,001 s. The comparison of the velocities on a few MPoints is attached. Not sure which conclusion from it... Between 10 and 2 iterations are required. 4- Mesh is done in Mesh tool from Ansys Workbench. A mesh size analysis was done at 0,025 / 0,05 / 0,1 / 0,5 m. 0,025 / 0,05 / 0,1 m gave similar curve on the tracer in the monitoring points. Therefore, 0,1 m was selected as the mesh size. "Capture curvature and proximity" are activated while inflation layers are not. Screenshots. 5- I will try to define the scalar with the density of NaCl 1 M... 6- Do you have experience with transfer equation of sensors in Control Systems field? I'm trying to correct the experiemental values to assess any overestimation... I don't know the mesh type used default in Mesh Workbench. You are so awesome ![]() |
||
![]() |
![]() |
![]() |
![]() |
#16 |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
- You need inflation layers. Espescially on the impeller and in the small gaps.
- Don't include density of NaOH. Then you cannot run is as a scalar anymore, See this as last resort if case you inject in still water conditions. - For the timestep size, you need to refer to the impeller. You have a 6-blades Rushtion Turbine. I would go for a timestep that makes the impeller rotate 10°, 5° and 2.5°. Best if you have 2-3 inner loops per timestep. RMS 1e-4 woule be fine. |
|
![]() |
![]() |
![]() |
![]() |
#17 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
![]() I don't understand your suggestion about the timestep and the º rotation of the 6-bladed impeller. It's a new concept for me. Thanks ![]() |
||
![]() |
![]() |
![]() |
![]() |
#18 |
Senior Member
Gert-Jan
Join Date: Oct 2012
Location: Europe
Posts: 1,885
Rep Power: 27 ![]() |
You mentioned that you use timestep sizes like 0,01 s / 0,005 s / 0,001 s
I have no idea if that is small or large compared to the rotation of the impeller. Does the impeller rotate once per 0.01 s (i.e. 100 Hz, i.e. 6000 rpm)? Or is it 1° per 0.01 s. That would mean that your impeller rotates once per 3.6s (i.e. 0.278 Hz, i.e. 16.67 rpm.) You tell me...... The concept is that you cannot run transient calcualtions with 1 rotation over 360° per timestep. Neither 60° per timestep. I think CFX will let you, but it won't converge. The concept is that you relate the timestep size to a rotation in degrees. |
|
![]() |
![]() |
![]() |
![]() |
#19 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
The stirring speeds assessed are, for instance: 500 / 700 / 900 / 1000 / 1300 / 1500 / 1700 / 2000 rpm It's flexible while 500 rpm (min speed) and 2000 rpm (max speed) are covered. How many time should it rotate per timestep? |
||
![]() |
![]() |
![]() |
![]() |
#20 | |
New Member
Upa
Join Date: Mar 2024
Posts: 25
Rep Power: 2 ![]() |
Quote:
![]() ![]() In CFD-post, how would you determine the 95% mixing time? Based on CFX-pre monitoring points of the tracer? In that case, how many MP would you use? With a new volume, isoform or plain created in CFD-post? Which strategy is better? I assume that the idea is to get a the data of a curve tracer concentration vs time and use it to find the time when the conc is the 95% of the final point. Which is you opinion? Many thanks for all your answers ![]() |
||
![]() |
![]() |
![]() |
Tags |
bioreactor, cfx, mixing time, stirred tank, validation |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
bash script for pseudo-parallel usage of reconstructPar | kwardle | OpenFOAM Post-Processing | 42 | May 7, 2024 23:17 |
Postprocess: sampleDict works but creates no output folder | shock77 | OpenFOAM Post-Processing | 14 | November 15, 2021 08:27 |
laplacianFoam with source term | Herwig | OpenFOAM Running, Solving & CFD | 17 | November 19, 2019 13:47 |
pressure in incompressible solvers e.g. simpleFoam | chrizzl | OpenFOAM Running, Solving & CFD | 13 | March 28, 2017 05:49 |
Upgraded from Karmic Koala 9.10 to Lucid Lynx10.04.3 | bookie56 | OpenFOAM Installation | 8 | August 13, 2011 04:03 |