Skip to content

thermal fluid and conjugate heat transfer

OpenLB – Open Source Lattice Boltzmann Code Forums on OpenLB General Topics thermal fluid and conjugate heat transfer

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #1894
    happyday
    Member

    Hi,i am working on heat transfer in a walking beam type reheat furnace by LBM.I have some questions about openlb which i can not find answer in user guide and examples.
    a)How can i set thermal fluid?Can i do it by setting a heat source ?
    b)If i want to write some codes for conjugate heat transfer (solid and fluid),where should i insert them ?write a new dynamic ?

    #2537
    mgaedtke
    Keymaster

    Hello 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

    #2539
    happyday
    Member
    Quote:
    Quote from mgaedtke on February 17, 2017, 13:03
    Hello 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

    Thank you Max,I will read the code of the thermal2d or thermal3d carefully,and I would appreciate it if you send the details for me 🙂 .Here is my Gmail:gaobo3698741@gmail.com.

    Best Gao

    #2543
    mgaedtke
    Keymaster

    Hello 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,
    Max

    #2545
    happyday
    Member

    Think you Max,

    You save a lot time for me,I would add this in my codes.In recent days,I almost finish my coding,and I find it is difficult for me to set up boundary values.

    Well,I konw the T is the dimensionless Temperature = (T – T_lowest) / (T_highest – T_lowest), so usually the colder one will be 0 and the highest 1.but how can I set T_highest and T_lowest ?Are they physical parameters?And how about the different values of thermal conductivity in fluid and solid?In the function in AdvectionDiffusionUnitLB:getKappa=sqrt((T)1/(getPr()*getRa()))*getDeltaT()/(getDeltaX()*getDeltaX()),it seems there is no difference between fluid and solid.

    Parameters are connected in lattice world ,and it is not easy to converter physical parameters to lattice parameters especially for my research which has 6 different speed and temperature boundary inlets.I use LBconverter<T> converter1 and AdvectionDiffusionUnitLB<T,NSDESCRIPTOR,TDESCRIPTOR> converter at same time. LBconverter for
    converting lattice velocity to physical velocity and AdvectionDiffusionUnitLB for temperature.Is it okey?

    I am looking forward to your earlier advise.

    Best Gao

    #2550
    mgaedtke
    Keymaster

    Hey 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, Max

    #2541
    happyday
    Member

    Holle Max,

    Thanks for your working for next release version! I hope it comes soon.For now,how can i do it in my code?I just know the dimensionless Temperature = (T – T_lowest) / (T_highest – T_lowest).Yes, I find my lack of theoretical knowledge,and in recent days, I am reading the book The Lattice Boltzmann Method Principles and Practice

    Best,Gao

    #2548
    mgaedtke
    Keymaster

    Hello 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

    #2552
    happyday
    Member

    Hi Max,

    I got it,you save a lot time for me,thanks.

    Best,Gao

    #2553
    happyday
    Member

    Hi Max,

    In olb::AdvectionDiffusionUnitLB< T, NSLattice, ADLattice >::getTcold ( ) const,ithe temperature is dimensionless Temperature? I do some test in example thermal3d with Thot=1000 Tcold=288.15,it seems it works well.

    Best Gao

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