Yuji
Forum Replies Created
-
AuthorPosts
-
YujiParticipant
OK, you can ask me anytime in this forumu.
YujiParticipantIf you use wall function as well as channel case, you need setting true in wallModelParameters.turbulenceStatistics
YujiParticipantHello,
Thank you for your post in the forum.
Could you please show me which dynamics you use?YujiParticipantDear Liu,
Thank you for your posting your questions.
I dont understand your concering exactly.
Could you please express your questions and worries in detail?Best,
YujiYujiParticipantDear Liu,
Thank you for your comments.
This tensor is symmetric because the rotational moment of stress is balanced.
So trace-free part is twice to calculate norm.February 6, 2025 at 3:26 pm in reply to: Method to generate effective relaxation time as output in VTK #9866YujiParticipantOK. I can suggest another step No.3.
Step 3-1. Implemetate new struct
SmagorinskyEffectiveOmegaToWatchSGSvin src/dynamics/collisionLES.hstruct SmagorinskyEffectiveOmegaToWatchSGSv { using MomentaF = typename MOMENTA::template type<DESCRIPTOR>; using CollisionO = typename COLLISION::template type<DESCRIPTOR, MOMENTA, EQUILIBRIUM>; template <concepts::Cell CELL, concepts::Parameters PARAMETERS, typename V=typename CELL::value_t> V computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform { V piNeqNormSqr { }; MomentaF().computePiNeqNormSqr(cell, piNeqNormSqr); const V rho = MomentaF().computeRho(cell); const V omega = parameters.template get<descriptors::OMEGA>(); const V smagorinsky = parameters.template get<collision::LES::SMAGORINSKY>(); V piNeqNorm = util::sqrt(piNeqNormSqr); V preFactor = smagorinsky*smagorinsky * descriptors::invCs2<V,DESCRIPTOR>()*descriptors::invCs2<V,DESCRIPTOR>() * 2 * util::sqrt(2); /// Molecular realaxation time V tauMol = V{1} / omega; /// Turbulent realaxation time V tauTurb = V{0.5} * (util::sqrt(tauMol*tauMol + preFactor / rho * piNeqNorm) - tauMol); /// Effective realaxation time V tauEff = tauMol + tauTurb; cell.template setField<descriptors::SCALAR>(tauEff); return V{1} / tauEff; } template <concepts::Cell CELL, concepts::Parameters PARAMETERS, typename V=typename CELL::value_t> CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform { parameters.template set<descriptors::OMEGA>( computeEffectiveOmega(cell, parameters)); return CollisionO().apply(cell, parameters); } }; template <typename COLLISION> struct SmagorinskyEffectiveOmegaToWatchSGSv { using parameters = typename COLLISION::parameters::template include< descriptors::OMEGA, LES::SMAGORINSKY >; static_assert(COLLISION::parameters::template contains<descriptors::OMEGA>(), "COLLISION must be parametrized using relaxation frequency OMEGA"); static std::string getName() { return "SmagorinskyEffectiveOmegaToWatchSGSv<" + COLLISION::getName() + ">"; } template <typename DESCRIPTOR, typename MOMENTA, typename EQUILIBRIUM> using type = detail::SmagorinskyEffectiveOmegaToWatchSGSv<COLLISION,DESCRIPTOR,MOMENTA,EQUILIBRIUM>; };Step 3-2. Define BulkDynamics in your cpp, for example
using BulkDynamics = SmagorinskyEffectiveOmegaToWatchSGSv<T,DESCRIPTOR>;If you get something, let me know.
Best regards,
YujiFebruary 6, 2025 at 3:52 am in reply to: Method to generate effective relaxation time as output in VTK #9858YujiParticipantI forgot mentioning important thing
#define DISABLE_CSEis
prior to including the OpenLB header files.February 6, 2025 at 1:09 am in reply to: Method to generate effective relaxation time as output in VTK #9854YujiParticipantSorry and you need to add
vtmWriter.addFunctor(viscosiy);
afterviscosiy.getName() = "viscosiy";February 6, 2025 at 1:02 am in reply to: Method to generate effective relaxation time as output in VTK #9849YujiParticipantThank you for commenting.
I can suggest how to get vtk files below steps.1.Add
#define DISABLE_CSEin your cpp file.
2.Add FILED in DESCRIPTOR. for example,using DESCRIPTOR = D3Q19<SCALAR>;in your cpp file.
3.Addcell.template setField<descriptors::SCALAR>(tauEff);in src/dynamics directory file where you want to see tauEff.
4.AddSuperLatticeField3D<T, DESCRIPTOR, SCALAR> viscosiy(sLattice);
viscosiy.getName() = "viscosiy";
in your cpp in getResult function.Best regards,
YujiJune 4, 2024 at 1:40 pm in reply to: Multiple GPU on HPC Calculation Signal: Segmentation fault (11) #8761YujiParticipantDear @aseidler
could you try mpirun with ” -mca btl_smcuda_use_cuda_ipc 0″? for example $mpirun -np 2 –mca btl_smcuda_use_cuda_ipc 0 bash -c ‘export CUDA_VISIBLE_DEVICES=${OMPI_COMM_WORLD_LOCAL_RANK}; ./cavity3d’we disscused similar topic in https://www.openlb.net/forum/topic/multi-gpus-calculation/
- This reply was modified 2 years, 1 month ago by Yuji.
December 6, 2023 at 1:55 pm in reply to: About the distance between the boundary node and stl in “setBouzidiBoundary” #7988YujiParticipantThank you for your comments.
I have understood the conncept of stlreader;) I cannot understand this codes in detail though.For your questions,
A) Yes, I changed the characteristic length to 100 from 0.1.
B) No, I did not changed the stl file. I just replaced the arguments fromSTLreader<T> stlReader( "cylinder3d.stl", converter.getConversionFactorLength(), 0.001 );tostlReader( “cylinder3d.stl”, converter.getConversionFactorLength(), 1,2,true )Thank you for your supports.
December 5, 2023 at 4:04 pm in reply to: About the distance between the boundary node and stl in “setBouzidiBoundary” #7983YujiParticipantThank you for your reply.
How did you mark the interior of the STL file in the material geometry?
>> I did same cpp file in example/cylinder3d because I used it.Just to be sure: Did you take into consideration that the Bouzidi boundary distances are computed in lattice units while the distance you see in Paraview is in physical units?
>> Yes I did.YujiParticipantSorry I got an additional question.
4. On the specific process(SuperLattice), can 2 blockLatices in this process be separated into openMP and CUDA for intra-block calclation.YujiParticipantThank you for your kind reply.
Sorry I counld not understand I said “However, this is an implementation detail that may change in the future and has no impact on application / model code.” What is “application / model code”?And,I get other 3 questions.
1.In the only CPU communication, I recon that the intra-process communication of BlockLattice is used by refer to the memory on the ovelapping cell for synchronizing BlockLattice. Is it right and where are the codes written on release1.6?
2.The inter-process communication of BlockLattice is used by MPI on any platformas on release1.6?
3. Dose the number of MPI match the number of SuperLattice?
YujiParticipantI could do implemention. Thank you for your comments.
-
AuthorPosts
