⚑ Fortran 90 / 2008 Double Precision
πŸ“₯ 399 Downloads

Cavity Enclosure Natural Convection (Catton)

Standalone, self-contained numerical routine. Verify algorithms, inspect boundary condition equations, or compile locally for batch parametric runs.

πŸ”¬

Solver Purpose & Physical Scope

Model natural convection in differentially heated vertical cavity enclosures (double glazing, solar gaps), computing Rayleigh number, average Nusselt, total heat flow Q, and boundary layer thickness.

πŸ“‚ Discipline: Convection ⚑ Precision: IEEE-754 64-bit Real(`real(8)`) πŸ“₯ Total Downloads: 399 times πŸ“„ Source File: natural_convection_cavity_enclosure.f90
πŸ“ calcul/Convection / natural_convection_cavity_enclosure.f90
program natural_convection_cavity_enclosure
    implicit none
    integer :: iostat_val
    double precision :: H_height_m, W_width_m, L_depth_m, Th_hot_C, Tc_cold_C
    double precision :: rho_dens, mu_cP, k_cond, cp_spec, beta_exp
    double precision :: mu_Pas, nu_visc, alpha_diff, DeltaT, Ra_W, Pr_num, AspectRatio
    double precision :: Nu_avg, h_avg, Q_dot_W, delta_bl_mm, u_buoy_ms
    double precision, parameter :: G_GRAV = 9.80665d0

    ! Read inputs
    read(*,*,iostat=iostat_val) H_height_m    ! Cavity Height [m] (e.g. 1.0)
    read(*,*,iostat=iostat_val) W_width_m     ! Cavity Spacing Width [m] (e.g. 0.05)
    read(*,*,iostat=iostat_val) L_depth_m     ! Cavity Depth [m] (e.g. 1.0)
    read(*,*,iostat=iostat_val) Th_hot_C      ! Hot Wall Temp [deg C] (e.g. 50.0)
    read(*,*,iostat=iostat_val) Tc_cold_C     ! Cold Wall Temp [deg C] (e.g. 10.0)
    read(*,*,iostat=iostat_val) rho_dens      ! Fluid Density [kg/m3] (e.g. 1.164 for air)
    read(*,*,iostat=iostat_val) mu_cP         ! Fluid Viscosity [cP] (e.g. 0.0185 for air)
    read(*,*,iostat=iostat_val) k_cond        ! Thermal Conductivity [W/(m.K)] (e.g. 0.026)
    read(*,*,iostat=iostat_val) cp_spec       ! Specific Heat [J/(kg.K)] (e.g. 1005.0)
    read(*,*,iostat=iostat_val) beta_exp      ! Volumetric Expansion Coeff [1/K] (e.g. 0.00333)

    if (iostat_val /= 0) then
        write(*,*) 'ERROR: Invalid input data for cavity natural convection calculation.'
        stop
    end if

    if (H_height_m <= 0.0d0 .or. W_width_m <= 0.0d0 .or. L_depth_m <= 0.0d0) then
        write(*,*) 'ERROR: Geometry dimensions must be positive.'
        stop
    end if

    DeltaT = abs(Th_hot_C - Tc_cold_C)
    if (DeltaT <= 0.0d0) DeltaT = 1.0d-3

    mu_Pas = mu_cP * 1.0d-3
    nu_visc = mu_Pas / rho_dens
    alpha_diff = k_cond / (rho_dens * cp_spec)
    Pr_num = nu_visc / alpha_diff
    AspectRatio = H_height_m / W_width_m

    Ra_W = (G_GRAV * beta_exp * DeltaT * (W_width_m**3)) / (nu_visc * alpha_diff)

    ! Catton / Berkovsky-Polevikov Correlation for Vertical Enclosure
    if (Ra_W < 1000.0d0) then
        Nu_avg = 1.0d0 ! Pure conduction
    else if (Ra_W < 1.0d4) then
        Nu_avg = 0.18d0 * ((Ra_W * Pr_num / (0.2d0 + Pr_num))**0.29d0)
    else
        Nu_avg = 0.22d0 * ((Ra_W * Pr_num / (0.2d0 + Pr_num))**0.28d0) * (AspectRatio**(-0.25d0))
    end if
    if (Nu_avg < 1.0d0) Nu_avg = 1.0d0

    h_avg = (Nu_avg * k_cond) / W_width_m
    Q_dot_W = h_avg * (H_height_m * L_depth_m) * DeltaT
    delta_bl_mm = (W_width_m / (max(1.0d0, Ra_W)**0.25d0)) * 1000.0d0
    u_buoy_ms = sqrt(G_GRAV * beta_exp * DeltaT * H_height_m)

    ! Output Results
    write(*,'(A)') '============================================================'
    write(*,'(A)') ' THERMOFLUIDCALC β€” CAVITY NATURAL CONVECTION ENGINE'
    write(*,'(A)') '============================================================'
    write(*,'(A,F10.2,A,F10.2,A)') 'Cavity H x W (Aspect A)   = ', H_height_m, ' m x ', W_width_m, ' m (A = ', AspectRatio, ')'
    write(*,'(A,F10.1,A,F10.1,A)') 'Hot Wall Th / Cold Wall Tc= ', Th_hot_C, ' deg C / ', Tc_cold_C, ' deg C'
    write(*,'(A,E12.4,A,F10.2)')   'Cavity Rayleigh Ra_W / Pr = ', Ra_W, ' / ', Pr_num
    write(*,'(A)') '------------------------------------------------------------'
    write(*,'(A,F10.2)')           'AVERAGE NUSSELT (Nu_avg)  = ', Nu_avg
    write(*,'(A,F10.2,A)')  'Heat Transfer Coeff h_avg = ', h_avg, ' W/(m2.K)'
    write(*,'(A,F10.2,A,F10.2,A)') 'TOTAL HEAT FLOW (Q_dot)   = ', Q_dot_W, ' W (', Q_dot_W/1000.0d0, ' kW)'
    write(*,'(A,F10.2,A,F10.3,A)') 'BL Thickness / Max Buoy U = ', delta_bl_mm, ' mm / ', u_buoy_ms, ' m/s'
    write(*,'(A)') '============================================================'

end program natural_convection_cavity_enclosure


πŸ’» How to Compile & Run Locally

1. Compilation (GNU Fortran / Intel oneAPI):

gfortran -O3 natural_convection_cavity_enclosure.f90 -o natural_convection_cavity_enclosure

2. Execution with input.txt redirection:

natural_convection_cavity_enclosure < input.txt

πŸ“„ Sample input.txt File Structure

Sample Data:
1.20
0.016
1.00
20.0
0.0
1.24
0.0178
0.025
1005.0
0.00353
Parameter Description:
Cavity Height H [m]\nCavity Spacing W [m]\nCavity Depth L [m]\nHot Wall Temp [Β°C]\nCold Wall Temp [Β°C]\nDensity [kg/mΒ³]\nViscosity [cP]\nConductivity [W/(mΒ·K)]\nSpecific Heat [J/(kgΒ·K)]\nExpansion Coeff beta [1/K]