mgaedtke
Forum Replies Created
-
AuthorPosts
-
mgaedtkeKeymaster
Hey Mamin,
it sounds as you want to combine two of openLB’s example cases here:
– for the particles you can have a look at the bifurication example.
– for the temperature field solved by advection diffusion equation you can have a look at the thermal example.As soon as you have your channel with the thermal flow as well as the particles going through, you will want to modify the coupling postprocessor in order to account for the particle temperature and its interaction with the fluid.
Best Max
mgaedtkeKeymasterHey Ben,
you would need to implement any kind of coupling between the phase status and the tempereature in the LBM’s equation of state. There are some papers about that, but, for now, we do not have any of those methods in openLB. One student of mine is currently working on that topic, and we will see want we can do here, but please do not expect us to publish that too soon.
If you like to discuss the thermal phase changing coupling implementation in detail, we would like to call your attention to come to our spring school 🙂
Best, Max
mgaedtkeKeymasterHey Ben,
energy equations or, to be more specific, advection diffusion equation for the temperature is implemented openLB and its usage is shown in example thermal2d and thermal3d, see also here: https://youtu.be/buskqZlPdvI
By deformation after cooling you mean changes in the geometry resulting from the results of the simulation? There isn’t any kind of fluid structure interaction implement, yet.
Best, Max
mgaedtkeKeymasterHey, yes you are right, sorry for the missunderstanding. We set LatticeU here, which is the converterted physical CharU. So if you change the CharU in the converter construction, you will end up with this value beeing the physical velocity for your simulation.
Best, Max
mgaedtkeKeymasterHello,
in aorta.cpp line 174 and following the boundary velocity is set with SinusStartScale<T,int> nSinusStartScale( iTperiod,converter.getCharU() ); So, after the start time period of 0.5s, the velocity at the inlet is a circular poiseuille profile with CharU beein the maximum velocity. Change CharU in the converter, and you will get this velocity at your inlet.
Best, Max
mgaedtkeKeymasterHey Mamin,
0 pressure at the outlet is fine, I think, as this suppose to be your outflow condition. For the inlet to be at 100 Pa, you could set the pressureLevel to 90 Pa to achieve a pressure value of 100 Pa.
mgaedtkeKeymasterHello Alan,
I am currently working on the thermal LBM in OpenLB and this part of the code is under heavy development at the moment. We hope to publish a revised version of the Advection-Diffusion-Equiation implementation till the end of the year.
However, you can set a constant temperature boundary by the function .addTemperatureBoundary() in AdvectionDiffusionBoundarys. Have a look at the example RayleighBenard2d or 3d, which are simulations of the rayleigh benard convection between a hot plate at the bottom and a cold plate on top (https://en.wikipedia.org/wiki/Rayleigh%E2%80%93B%C3%A9nard_convection)
Best regards,
MaxmgaedtkeKeymasterNo, at the moment we do not have any compressible model.
mgaedtkeKeymasterHey Mamin,
thank you for mentioning. Basicly, you are right, we should be more precise here, but as we calculate a pressure drop instead of an absolute pressure in the code example on page 27, it does not make a difference.
The function phyPressureFromRho() calculates the pressure in SI units as p = c_s^2 * (rho -1) * C_p + p_0, where c_s^2=1/3 is the speed of sound in lattice units, rho is the density in lattice units, C_p = C_F / C_L^3 is the confersion factor for the pressure derived from the conversion factors of the force and length in their SI units respectively and p_0 is the charactistic pressure level in SI units.
We shift the lattice density by 1 here, to achieve that for rho=1 we get p = p_0.
April 18, 2017 at 10:19 am in reply to: How to rewrite temperature in a zone with a certain material number by another in a same size zone ? #2593mgaedtkeKeymasterHello happyday,
I think, changing material numbers or their corresponding temperatures is not nessasary in your case. You should be able to simulate the transient heat transfer of one of your billets by assuming that its relative velocitiy to the casing is constant. Thereby you could just simulate a steady billet, that is constantly heated from above.
Regards,
MaxmgaedtkeKeymasterHello Gao,
how about this:
Code:double T_cold = 273.15;
double T_hot = 274.15;double latticeTemperature(double physTemperature) {
return (physTemperature – T_cold) / (T_hot – T_cold);
}This is untested but you should be able to achieve the conversion with something like it very easily.
Best, Max
mgaedtkeKeymasterQuote:dear guys
i want to change the dynamic classes to compressible by changing the collision equation for compressible flow
i had the equation of lattice boltzmann in compressible ( feq )
then i don’t know how to change the dynamics classes !
its just too complicated
is there anybody can help me ?
thanks .hey cloner,
I would suggest you start with simple cases first. Do you have a STL-file for the building? You could try an incompressible flow around that geometry first. If you want to see how STL import to geometry is done in OpenLB, have a look at the example cylinder3d.
What compressible modell do you plan to implement?
So, you found the f^eq definition in the dynamics files. Copy and pasting a whole dynamic class until you get a compiling version without any changes exept for the classes name should be the first step. Afterward you should be able to change the collision step towards your needs.
Best, Max
mgaedtkeKeymasterHey Gao,
apparently, the converter of version 1.0 is not capable of converting physical temperatures. I worked on a new converter capabale of that for quite some time and it will hopefully be published soon with the next release version. Until then, I fear you have to do it your self directly in your application’s code.
Using several converters is okay. I do that too for example in order to have different kappas for solid and fluid.
I hope, i helped you,
Best, MaxmgaedtkeKeymasterHello happyday,
for the different temperature boundaries:
First you assign a constant temperature boundary condition to your material number:
Code:TboundaryCondition.addTemperatureBoundary(superGeometry, 3, Tomega);For that material number you define a specific temperature by setting the rho value:
Code:AnalyticalConst2D<T,T> Cold(Tcold);
…
ADlattice.defineRho(superGeometry, 3, Cold);Here Tcold is the dimensionless Temperature = (T – T_lowest) / (T_highest – T_lowest), so usually the colder one will be 0 and the highest 1.
For conjugated heat transfer you define two AD dynamics, one for the fluid, one for the solid:
Code:AdvectionDiffusionRLBdynamics<T, TDESCRIPTOR> TbulkDynamics (
converter.getOmegaT(),
instances::getAdvectionDiffusionBulkMomenta<T,TDESCRIPTOR>()
);AdvectionDiffusionRLBdynamics<T, TDESCRIPTOR> TbulkDynamicsSolid (
converter[code]Code:Solid.getOmegaT(),
instances::getAdvectionDiffusionBulkMomenta<T,TDESCRIPTOR>()
);[/code]You can see that there are different omegas from different converters, so there have to be two converters as well, or you calculate the omega directly in the code as seen in example bifurication3d/eulerEuler:
Code:T omegaAD = 1. / (4. * ( diffusion * (converter.getDeltaT()/(converter.getDeltaX()*converter.getDeltaX()))
* (1./(converter.getCharU()*converter.getCharL())) ) + 0.5);After that you can assign your fluid and solid dynamics to material numbers defined in the geometry (here: 5 = fluid, 6 = solid):
Code:ADlattice.defineDynamics(superGeometry, 5, &advectionDiffusionBulkDynamics);
ADlattice.defineDynamics(superGeometry, 6, &advectionDiffusionBulkDynamicsSolid);
…
NSlattice.defineDynamics(superGeometry, 5, &bulkDynamics);
NSlattice.defineDynamics(superGeometry, 6, &instances::getNoDynamics<T, NSDESCRIPTOR>());You need a boundary condition for the velocity field at the fluid/solid interface, but no boundary condition for the temperature field is needed here (as the temperature is allowed in both regions 5 and 6):
Code:NSboundaryCondition.addVelocityBoundary(superGeometry, 5, NSomega);It’s a bit hacky but as it seems it works. Please make sure to validate this method before acuatlly using it!
I hope i could help you and happy coding,
MaxmgaedtkeKeymasterHello happyday,
Have a look for the thermal2d or thermal3d example cases. You can see the thermal dynamics coupled via the boussinesq approximation already set up in order to simulate the raighley benard convection.
This model is not capable of simulating internal heat sources so far, but by applying certain boundary conditions you can simulate heat input to the system.
I did some test with conjugated heat transfer by simply defining another material number with another thermal dynamics using a different diffusion coefficient than the fluid. If you are interested in this setup I can send you some more details.
Best, Max
-
AuthorPosts