Skip to content

Yuji

Due to recent bot attacks we have changed the sign-up process. If you want to participate in our forum please send a message via our contact form.

Forum Replies Created

Viewing 15 posts - 1 through 15 (of 39 total)
  • Author
    Posts
  • in reply to: Temporal averaged velocity field #11046
    Yuji
    Participant

    OK, you can ask me anytime in this forumu.

    in reply to: Temporal averaged velocity field #11039
    Yuji
    Participant

    If you use wall function as well as channel case, you need setting true in wallModelParameters.turbulenceStatistics

    in reply to: Temporal averaged velocity field #11038
    Yuji
    Participant

    Hello,
    Thank you for your post in the forum.
    Could you please show me which dynamics you use?

    in reply to: SuperLatticeTimeAveragedCrossCorrelationF3D problem #10054
    Yuji
    Participant

    Dear 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,
    Yuji

    in reply to: strain rate tensor #9919
    Yuji
    Participant

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

    in reply to: Method to generate effective relaxation time as output in VTK #9866
    Yuji
    Participant

    OK. I can suggest another step No.3.

    Step 3-1. Implemetate new struct SmagorinskyEffectiveOmegaToWatchSGSv in src/dynamics/collisionLES.h

    
    struct 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,
    Yuji

    in reply to: Method to generate effective relaxation time as output in VTK #9858
    Yuji
    Participant

    I forgot mentioning important thing
    #define DISABLE_CSE is
    prior to including the OpenLB header files.

    in reply to: Method to generate effective relaxation time as output in VTK #9854
    Yuji
    Participant

    Sorry and you need to add
    vtmWriter.addFunctor(viscosiy);
    after viscosiy.getName() = "viscosiy";

    in reply to: Method to generate effective relaxation time as output in VTK #9849
    Yuji
    Participant

    Thank you for commenting.
    I can suggest how to get vtk files below steps.

    1.Add #define DISABLE_CSE in your cpp file.
    2.Add FILED in DESCRIPTOR. for example, using DESCRIPTOR = D3Q19<SCALAR>; in your cpp file.
    3.Add cell.template setField<descriptors::SCALAR>(tauEff);in src/dynamics directory file where you want to see tauEff.
    4.Add SuperLatticeField3D<T, DESCRIPTOR, SCALAR> viscosiy(sLattice);
    viscosiy.getName() = "viscosiy";
    in your cpp in getResult function.

    Best regards,
    Yuji

    • This reply was modified 1 year, 5 months ago by Yuji.
    • This reply was modified 1 year, 5 months ago by Yuji.
    • This reply was modified 1 year, 5 months ago by Yuji.
    • This reply was modified 1 year, 5 months ago by Yuji.
    Yuji
    Participant

    Dear @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.
    Yuji
    Participant

    Thank 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 from STLreader<T> stlReader( "cylinder3d.stl", converter.getConversionFactorLength(), 0.001 ); to stlReader( “cylinder3d.stl”, converter.getConversionFactorLength(), 1,2,true )

    Thank you for your supports.

    Yuji
    Participant

    Thank 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.

    in reply to: Communication between BlockLattices #7859
    Yuji
    Participant

    Sorry 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.

    in reply to: Communication between BlockLattices #7858
    Yuji
    Participant

    Thank 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?

    in reply to: Check point using GPU #7850
    Yuji
    Participant

    I could do implemention. Thank you for your comments.

Viewing 15 posts - 1 through 15 (of 39 total)