Skip to content

developing turbulent channel flow with radiative heat transfer. Heterogeneous CUDA/Fortran code with MPI and GPU parallelization

Notifications You must be signed in to change notification settings

simone-silvestri/RadChan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

----------------------------------------------------------

  •   						   *
    
  • ██████╗ █████╗██████╗ ████████╗ ██╗█████╗███╗ ██╗ *
  • ██╔══████╔══████╔══████╔════██║ ████╔══██████╗ ██║ *
  • ██████╔█████████║ ████║ ████████████████╔██╗ ██║ *
  • ██╔══████╔══████║ ████║ ██╔══████╔══████║╚██╗██║ *
  • ██║ ████║ ████████╔╚████████║ ████║ ████║ ╚████║ *
  • ╚═╝ ╚═╚═╝ ╚═╚═════╝ ╚═════╚═╝ ╚═╚═╝ ╚═╚═╝ ╚═══╝ *
  •   					   *
    

----------------------------------------------------------

  • Developing low Mach number channel flow with radiative heat transfer. Heterogeneous CUDA/Fortran code with MPI and GPU parallelization

  • the spectral discretization is produced by the narrow band correlated-k code found in

  • nbcorrk (self standing program)


DIRECT NUMERICAL SIMULATION:

second order fully staggered.

Source code in src/dns

Requires an installation of decomp2d for 2D parallelization

parameters in src/param/param.txt

imaxjmaxkmax --> domain size (in x-, y- and z-direction, respectively)

p_col --> column discretization of the DNS code,

p_row --> row discretization of the DNS code,


NARROWBAND MONTE CARLO OERM GPU:

Source code in src/montecarlo

parameters in src/param/param.h and src/param/NarrowBand.h

runs on p_col*num_gpu GPUs in p_col nodes

imaxjmaxkmax --> domain size (in x-, y- and z-direction, respectively)

num_gpu --> number of GPUs available in one node

p_col --> column discretization of the DNS code, must match with the number of nodes employed!

Lx, Ly, Lz --> length of the domain

fact_mesh --> parameter for grid streching in x-direction

nVar --> number of independent MC runs for variance calculation (set to 1 if variance on a particular grid has already been assessed)

photmax --> number of statistical sampled per cell in one MC run

grid_num --> number of coarsened grids employed for MC simulations The mesh dimension are specified in maxi[],maxj[],maxk[] each mesh should be an integer multiple of its coarser version

maxs[] --> number of steps employed in each grid the last one should be large enought to ensure total absorption

num_steams --> number of streams used for the domain MC routine should divide exactly imax

num_steams --> number of streams used for the surface MC routine should divide exactly jmax

blockdim --> thread number in a block. keep it an integer multiple of the warpsize (32)

nblocks --> minimum number of blocks employed. The actual number of blocks used is calculated as MIN(nblocks, Domain/blockdim)

srt --> if equal to 1 it triggers the narrow-band sorting procedure

grey --> if equal to 1 ignores the narrow-band formulation and performs a grey gas MC simulation

calcwalls --> if equal to 1 (with at least one of the adiab option enabled) calculates the radiative heat flux at the enables wall with a grey/narrow-band OERMC formulation

floatpoint --> if equal to 1 single precision, if equal to 0 double precision texture memory is not yet implemented in double precision, thus always keep this equal to 1 (if want to change to 0 the memory_copy.cu file needs an update). Advisable anyway equal to 1 for speed related issues. If a higher accuracy is required, it is advised to increase photmax.

epsx --> emissivity of wall x (where x=w,e,n,s,t,b) w,e: west , east (i=0,i=imax+1) t,b: top , bottom (k=0,k=kmax+1) n,s: north, south (j=0,j=jmax+1)

Twx --> temperature of wall x Used only if adiabx == 0

adiabx --> if equal to 1, then Twx is taken from the temperature field and is not a parameter. At least one among w,e should be 1 to enable the calculation of radiative heat flux at the walls

toll,tollS --> tollerances for ray marching for domain and surface, respectively (higher than 1e-3 is not advisable)

bdx --> flag for boundary condition for wall x 1 : periodic wall 2 : black wall 3 : specularly reflecting wall 4 : adiabatic black wall conditions (implemented only for outlet) 5 : lost ray (temperature equal to the emitter)

The constraints on the parameters are:

  • imax must be an integer multiple of num_streams
  • jmax must be a multiple integer of num_gpu
  • kmax must be a multiple integer of p_col
  • if wall radiative flux is to be calculated (calcwalls==1) then jmax must be also an integer multiple of num_strS
  • num_strS must be smaller than num_streams

About

developing turbulent channel flow with radiative heat transfer. Heterogeneous CUDA/Fortran code with MPI and GPU parallelization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published