Skip to content

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

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #7883
    Fuxin He
    Participant

    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 He

    #7884
    FBukreev
    Keymaster

    Dear 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 profile

    In 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
    Fedor

    #7885
    FBukreev
    Keymaster

    Dear 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 profile

    In 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
    Fedor

    #7888
    Fuxin He
    Participant

    Dear 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 found

    The 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 He

    #7890
    FBukreev
    Keymaster

    Dear 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
    Fedor

    #7893
    Fuxin He
    Participant

    Dear 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 profil

    The 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 profile

    The 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/c3PSgbY

    sincerely,
    Fuxin He

    #7896
    FBukreev
    Keymaster

    Dear 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
    Fedor

    #7899
    Fuxin He
    Participant

    Dear 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 He

    #7900
    FBukreev
    Keymaster

    Dear 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
    Fedor

    #7902
    Fuxin He
    Participant

    Dear 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 He

    #7930
    FBukreev
    Keymaster

    Dear 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
    Fedor

    #7931
    Fuxin He
    Participant

    Dear 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 He

    #7932
    FBukreev
    Keymaster

    Dear 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
    Fedor

    #7940
    Fuxin He
    Participant

    Dear 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 He

    #7942
    FBukreev
    Keymaster

    Dear Fuxin,

    sorry, for more help from our side you need to come to the spring school.

    Best regards
    Fedor

Viewing 15 posts - 1 through 15 (of 15 total)
  • You must be logged in to reply to this topic.