channel3d in olb1.6 and olb1.5
OpenLB – Open Source Lattice Boltzmann Code › Forums › on OpenLB › General Topics › channel3d in olb1.6 and olb1.5
- This topic has 13 replies, 2 voices, and was last updated 1 year, 4 months ago by FBukreev.
-
AuthorPosts
-
November 4, 2023 at 5:50 am #7883Fuxin HeParticipant
Dear OpenLB community,
I found that channel3d will run differently in olb1.6 and olb1.5, running channel3d under olb1.6, geometry0 will appear at the entrance in X and Y direction, and the velocity and pressure at geometry2 are 0, why won’t geometry0 appear under olb1.5, and the Why does geometry0 not appear under olb1.5 and velocity and pressure at geometry2 are not 0, what should I look out for if I want to set it to Retau=180, U=1, PhysNu=1.5/100000 as I am not getting the correct pressures under olb1.6 in whichever version I set these.
sincerely,
Fuxin HeNovember 5, 2023 at 10:23 pm #7884FBukreevKeymasterDear Fuxin,
I tested the channel3d case with your ReTau, U and Nu with the following wall model parameters:
const int rhoMethod = 2; // method for density reconstruction
// 0: Zou-He
// 1: extrapolation
// 2: constant
const int fneqMethod = 3; // method for fneq reconstruction
// 0: regularized NEBB (Latt)
// 1: extrapolation NEQ (Guo Zhaoli)
// 2: regularized second order finite Differnce
// 3: equilibrium scheme
const int wallProfile = 1; // wallfunction profile
// 0: Musker profile
// 1: power law profileIn olb 1.5 and 1.6 I have seen the same results. The simulation diverges after some time, but if you choose a fine enough resolution it will converge I think.
Best regards
FedorNovember 5, 2023 at 10:23 pm #7885FBukreevKeymasterDear Fuxin,
I tested the channel3d case with your ReTau, U and Nu with the following wall model parameters:
const int rhoMethod = 2; // method for density reconstruction
// 0: Zou-He
// 1: extrapolation
// 2: constant
const int fneqMethod = 3; // method for fneq reconstruction
// 0: regularized NEBB (Latt)
// 1: extrapolation NEQ (Guo Zhaoli)
// 2: regularized second order finite Differnce
// 3: equilibrium scheme
const int wallProfile = 1; // wallfunction profile
// 0: Musker profile
// 1: power law profileIn olb 1.5 and 1.6 I have seen the same results. The simulation diverges after some time, but if you choose a fine enough resolution it will converge I think.
Best regards
FedorNovember 6, 2023 at 10:54 am #7888Fuxin HeParticipantDear Fedor
First of all thank you for your reply, and because of the time difference I want to apologize for not being able to get back to you in time.
Please allow me to ask you two more questions:
1. I found that when only adjusting “N, lx, ly, lz”, for example setting N=19 or ly=2L, the “geometry” is different from the original one. The main difference is that the “geometry 0” disappears at the x and y entrances and exits, and is also displayed in the terminal:
[setWallFunctionBoundary] Warning: Could not setWallFunctionBoundary (59, 10, 18), discreteNormal=(0,0,0,0), set to bounceBack
[BlockGeometryStatistics3D] WARNING: no discreteNormal is found
[setWallFunctionBoundary] Warning: Could not setWallFunctionBoundary (59, 11, 0), discreteNormal=(0,0,0,0), set to bounceBack
[BlockGeometryStatistics3D] WARNING: no discreteNormal is found
[setWallFunctionBoundary] Warning: Could not setWallFunctionBoundary (59, 11, 18), discreteNormal=(0,0,0,0), set to bounceBack
[BlockGeometryStatistics3D] WARNING: no discreteNormal is found
[setWallFunctionBoundary] Warning: Could not setWallFunctionBoundary (59, 12, 0), discreteNormal=(0,0,0,0), set to bounceBack
[BlockGeometryStatistics3D] WARNING: no discreteNormal is found
[setWallFunctionBoundary] Warning: Could not setWallFunctionBoundary (59, 12, 18), discreteNormal=(0,0,0,0), set to bounceBack
[BlockGeometryStatistics3D] WARNING: no discreteNormal is foundThe original code, modifying only N=28 and modifying only ly = 2. * physRefL; is displayed in paraview as follows:
https://postimg.cc/gallery/Y2XKts2
After selecting the Y normal slice, I found out that “geometry 0” is the medium to realize the cycle boundary, does the presence or absence of geometry 0 in the XY direction have any effect on the simulation?2.May I ask if you modified physRefL based on the parameters I provided?I modified physRefL based on const T charPhysU = ( util::pow((8.0/0.073), (4.0/7.0)) * util::pow((T)ReTau, (8.0/7.0)) ) * charPhysNu / (2. * physRefL); calculated physRefL = 0.0415. Since I want to study the motion of the particles in the boundary layer, set N=59, for a large eddy simulation, does this satisfy enough resolution for the first layer Y+=3.
sincerely,
Fuxin HeNovember 6, 2023 at 11:38 am #7890FBukreevKeymasterDear Fuxin,
The 0 material number has no influence on the simulation, so you don’t need to check it.
I have now set the Resolution of 50 and the charPhysU I set in the converter instead of 1 m/s. In this case the simulation remains stable. But if you want to make a real LES I would calculate a finer resolution, check the Kolmogorov scale by the current Reynolds number and make the resolution 3-10 * Kolmogorov.
Best regards
FedorNovember 6, 2023 at 2:33 pm #7893Fuxin HeParticipantDear Fedor
Are you still setting physRefL = 1.0, so charPhysU = 0.0415? I thank you for providing me with the proper resolution for charPhysU = 1. Also I set these as you said:
const int rhoMethod = 2; // method for density reconstruction
// 0: Zou-He
// 1: extrapolation
// 2: constant
const int fneqMethod = 3; // method for fneq reconstruction
// 0: regularized NEBB (Latt)
// 1: extrapolation NEQ (Guo Zhaoli)
// 2: regularized second order finite Differnce
// 3: equilibrium scheme
const int wallProfile = 1; // wallfunction profile
// 0: Musker profile
// 1: power law profilThe processed pressure still shows the presence of negative values, and based on the relationship between pressure and density, I’m guessing it’s because of the calculated negative density, which is not the same as if I followed the parameters:
const T latticeWallDistance = 0.5; // lattice distance to boundary
const int rhoMethod = 0; // method for density reconstruction
// 0: Zou-He
// 1: extrapolation
// 2: constant
const int fneqMethod = 1; // method for fneq reconstruction
// 0: regularized NEBB (Latt)
// 1: extrapolation NEQ (Guo Zhaoli)
// 2: regularized second order finite Differnce
// 3: equilibrium scheme
const int wallProfile = 0; // wallfunction profile
// 0: Musker profile
// 1: power law profileThe two wall model parameters I named 231 and 010 and the processed pressures are as follows, I think the pressure field is unphysical.
https://postimg.cc/gallery/c3PSgbYsincerely,
Fuxin HeNovember 6, 2023 at 3:23 pm #7896FBukreevKeymasterDear Fuxin,
yes, I had these values in converter. I would use the first setup because it is more stable.
The negative values in the turbulent vortexes are ok. You need to perform a convergency study to be sure that the pressure values are correct.Best regards
FedorNovember 6, 2023 at 4:03 pm #7899Fuxin HeParticipantDear Fedor
So how do I set this up so that the correct pressure appears, I understand that performing convergence judgments is based on the relationship between Y+ and U+, and RMS, but the pressure I don’t know much about, and I can’t find out what causes this pressure to appear, so I’m hoping you can give me some help.
sincerely,
Fuxin HeNovember 6, 2023 at 4:09 pm #7900FBukreevKeymasterDear Fuxin,
I have not investigated this topic about pressure detailled myself, so you nead to look for the reference values in some literature.
Best regards
FedorNovember 7, 2023 at 4:08 am #7902Fuxin HeParticipantDear Fedor
Thank you for your help, so do you think I can simulate gas-solid two-phase flow using the point-particle method without taking into account the results simulated by pressure, which I do see no indication of in much of the relevant literature. Also I found the output templates for Y+ and RMS, when I add Y+, it requires me to define the indicator, is there a problem with “IndicatorF3D<T> indicator(cuboidGeometry)”, and I didn’t find a template for U+. , how should I export U+?
sincerely,
Fuxin HeNovember 21, 2023 at 11:57 am #7930FBukreevKeymasterDear Fuxin,
yes, you can simulate your case using only velocity validation.
The indicator is the wall where you want to calculate y+. It would be the cuboid in your case. IndicatorCuboid3D than.
For U+ you need to write a new lattice functor starting with the existing y+ functor.
If you need mor help for your project you can come to our spring school in Heidelberg.Best regards
FedorNovember 21, 2023 at 1:32 pm #7931Fuxin HeParticipantDear Fedor
I have solved the verification of u+ and rms, thank you again for your help, and the verification of Prms seems to be good, but I don’t know whether I did it right. The literature I refer to is KIM’s universally recognized literature:Kim J, Moin P, Moser R. Turbulence statistics in fully developed channel flow at low Reynolds number[J]. Journal of fluid mechanics, 1987, 177: 133-166.
https://postimg.cc/gallery/Ywxs0C7
My wall function is 200 (rhoMethod = 2;fneqMethod = 0;wallProfile = 0).Because it seems that only in this way can the results be more consistent, I hope you can check whether this is correct
sincerely,
Fuxin HeNovember 21, 2023 at 2:19 pm #7932FBukreevKeymasterDear Fuxin,
for me it seems ok.
If you want more help from us, we need a common project or come to the spring school.Best regards
FedorNovember 22, 2023 at 2:24 pm #7940Fuxin HeParticipantDear Fedor
I also hope very much to attend the spring school and communicate with you who are excellent, but I can only communicate with you here because of the distance. If in my reference poiseuille3d.h SuperLatticePhysWallShearStress3D < T, DESCRIPTOR > & WSS added to the channel3d to output shear stress, can I change the original these to this correct:
poiseuille3d.h :
// set up size-increased indicator and instantiate wall shear stress functor (wss)
Vector<T, 3> center0Extended(-converter.getPhysDeltaX() * 0.2, radius, radius);
Vector<T, 3> center1Extended(length, radius, radius);
if (flowType == forced) {
center0Extended[0] -= 4.*converter.getPhysDeltaX();
center1Extended[0] += 4.*converter.getPhysDeltaX();
}
IndicatorCylinder3D<T> pipeExtended(center0Extended, center1Extended, radius);
IndicatorLayer3D<T> indicatorExtended (pipeExtended, 0.9*converter.getConversionFactorLength()*N/11.);
SuperLatticePhysWallShearStress3D<T,DESCRIPTOR> wss(sLattice, superGeometry, 2, converter, indicatorExtended);channel3d.cpp:
// set up size-increased indicator and instantiate wall shear stress functor (wss)
Vector<T, 3> originExtended(-converter.getPhysDeltaX() , 0, 0);
Vector<T,3> extendExtended(lx+converter.getPhysDeltaX(), ly, adaptedPhysSimulatedLength);IndicatorCuboid3D<T> cubiodExtended(extendExtended, originExtended );
IndicatorLayer3D<T> indicatorExtended (cubiodExtended, 0.9*converter.getConversionFactorLength()*N/11.);
SuperLatticePhysWallShearStress3D<T,DESCRIPTOR> wss(sLattice, superGeometry, 2, converter, indicatorExtended);I have two questions, first: what is the function of the setting of “0.9*converter.getConversionFactorLength()*N/11.”. Second: Is the wss I output like this “tau_w_ini_scaled” in the channel?
sincerely,
Fuxin HeNovember 23, 2023 at 11:19 am #7942FBukreevKeymasterDear Fuxin,
sorry, for more help from our side you need to come to the spring school.
Best regards
Fedor -
AuthorPosts
- You must be logged in to reply to this topic.