Depending on the pre-processor flags considered, different input files are required. In the following, descriptions of the input files are provided. Important premises:
-
FluTAS strictly employs dimensional inputs based on the SI units. The user should choose the input (physical) quantities to match the desired dimensionless parameters of the study.
-
Example A: for a channel flow configuration, the user should input the forcing bulk velocity (or the imposed pressure gradient)
$U_b$ , the height of the channel$l_z$ , the dynamic viscosity$\mu$ , and the density of the fluid$\rho$ to match the desired Reynolds number, i.e.$Re = \rho U_bl_z/\mu$ ; -
Example B: for a heat transfer problem, the user should input the dynamic viscosity
$\mu$ , the specific heat capacity$c_p$ , and the thermal conductivity$k$ to match the desired Prandtl number, i.e.$Pr=\mu c_p/k$ .
The above reasoning applies to any other physical dimensionless parameter of the problem under consideration.
-
Example A: for a channel flow configuration, the user should input the forcing bulk velocity (or the imposed pressure gradient)
-
Line position is essential when constructing the input files. As a reference, use and, if necessary, modify the provided templates available in the
examplesfolder.
The input file dns.in must be always provided. It contains:
itot,jtot,ktot: grid points in each directionlx,ly,lz: domain dimensions in each directiongr: stretching parameter (SUPPORTED only in single-phase)cfl,dt_input: CFL and employed constant time-step. Note thatdt_inputis used only ifconstant_dtis trueconstant_dt: prescribe a constant dt (T) or constant CFL (F)time_scheme,space_scheme_mom: scheme for the time and space discretization of the momentum equationrho_sp,mu_sp: density and dynamic viscosity of the fluid (relevant only single-phase, i.e.,!defined(_USE_VOF). If the flag_USE_VOFis employed during the compilation, the values ofrho_spandmu_spare overwritten by the corresponding ones defined invof.infor phase 2)inivel,is_noise_vel,noise_vel: type of initialized velocity field. If the logical variableis_noise_velis true, a random noise of absolute maximum magnitudenoise_velis superimposed on the initial velocity fieldis_wallturb: initializes velocity conditions for faster turbulence transition in wall-bounded flowswallturb_type: initial condition for triggering turbulent transition in wall-bounded flowsbulk_ftype: type of forcing to sustain the flow in canonical wall-bounded domainsnstep,time_max,tw_max: stopping criteria, i.e. maximum number of time-steps, maximum simulation time, maximum wall-timestop_type(1),stop_type(2),stop_type(3): enables stopping criteria for the simulationrestart, num_max_chkpt, input_chkpt, latest:restartis a logical variable, which is true when the user wants to restart the simulation from a dump file (restarting files are printed indata/restart_dir/restart_subdir_???).num_max_chkptis the maximum number of saved checkpoint files for restarting.input_chkptis a user-chosen checkpoint file from which the simulation should be restarted (if available). If the logical variablelatestis true, the simulation restarts from the latest available/saved checkpoint and, therefore, the variableinput_chkptis not usedicheck,iout0d,iout1d,iout2d,iout3d,isave: set the time-step frequency employed to: i) perform numerical stability checks, i.e., time-step restriction and velocity divergence (icheck), ii) print zero, one, two, three dimensional outputs (iout0d,iout1d,iout2d,iout3d) and iii) save the restarting files (isave)cbcvel(0,1,1),cbcvel(1,1,1),cbcvel(0,2,1),cbcvel(1,2,1),cbcvel(0,3,1),cbcvel(1,3,1): U velocity BC typecbcvel(0,1,2),cbcvel(1,1,2),cbcvel(0,2,2),cbcvel(1,2,2),cbcvel(0,3,2),cbcvel(1,3,2): V velocity BC typecbcvel(0,1,3),cbcvel(1,1,3),cbcvel(0,2,3),cbcvel(1,2,3),cbcvel(0,3,3),cbcvel(1,3,3): W velocity BC typecbcpre(0,1 ),cbcpre(1,1 ),cbcpre(0,2 ),cbcpre(1,2 ),cbcpre(0,3 ),cbcpre(1,3 ): pressure BC typebcvel(0,1,1), bcvel(1,1,1), bcvel(0,2,1), bcvel(1,2,1), bcvel(0,3,1), bcvel(1,3,1): U velocity BC valuebcvel(0,1,2), bcvel(1,1,2), bcvel(0,2,2), bcvel(1,2,2), bcvel(0,3,2), bcvel(1,3,2): V velocity BC valuebcvel(0,1,3), bcvel(1,1,3), bcvel(0,2,3), bcvel(1,2,3), bcvel(0,3,3), bcvel(1,3,3): W velocity BC valuebcpre(0,1 ), bcpre(1,1 ), bcpre(0,2 ), bcpre(1,2 ), bcpre(0,3 ), bcpre(1,3 ): pressure BC valueis_forced(1),is_forced(2),is_forced(3): choose the direction along which a velocity (bulk_ftype='cfr') or pressure gradient (bulk_ftype='cpg') is imposed to sustain the flowgacc_x,gacc_y,gacc_z: gravity accelerationbvel_x,bvel_y,bvel_z: value of the imposed velocitydpdl_x,dpdl_y,dpdl_z: value of the imposed pressure gradientis_outflow(0,1),is_outflow(1,1),is_outflow(0,2),is_outflow(1,2),is_outflow(0,3),is_outflow(1,3): set if the physical boundary is an outflow (T) or not (F)dims_in(1),dims_in(2): number of CPU cores or GPUs per parallelized direction. Note that FluTAS employs a two-dimensional parallelization with pencils aligned along the non-parallelized direction. Three options are available:- Pencils oriented along the x direction. The pre-processor flag
_DECOMP_Xcontrols this option. In this case, a number ofdims_in(1)anddims_in(2)processors are distributed along the y and the z directions, respectively. This option should be typically preferred both for CPUs and GPUs runs since it minimizes the number ofall-to-alloperations in the Poisson solver. For GPUs runs, the option_DECOMP_Xallows to employ a slab-decomposition only; - Pencils oriented along the y direction. The pre-processor flag
_DECOMP_Ycontrols this option. In this case, a number ofdims_in(1)anddims_in(2)processors are distributed along the x and the z directions, respectively. For GPUs runs, the option_DECOMP_Yallows to employ a slab-decomposition only; - Pencils oriented along the z direction. The pre-processor flag
_DECOMP_Zcontrols this option. In this case, a number ofdims_in(1)anddims_in(2)processors are distributed along the x and the y directions, respectively. For GPUs runs, the option_DECOMP_Zallows both a slab and a pencil decomposition.
- Pencils oriented along the x direction. The pre-processor flag
nthreadsmax: maximum number of threads for OpenMP (UNTESTED)
The input file vof.in is required when _USE_VOF is used. It contains:
rho1,rho2andmu1,mu2: density and dynamic viscosity for phase 1 and 2inivof: type of vof initializationnbub: number of bubbles/droplet initialized ifinivof='bub'. Note that ifnbub>1the file bub.in is required with the center coordinates and radii of each emulsion, droplet or bubble. Otherwise, ifnbub=1, this information is provided in the next line.xc(1), yc(1), zc(1), r(1): center and radius of the single emulsion, droplet or bubble present in the domaincbcvof(0,1 ),cbcvof(1,1 ),cbcvof(0,2 ),cbcvof(1,2 ),cbcvof(0,3 ),cbcvof(1,3 ): VoF BC typebcvof(0,1 ),bcvof(1,1 ),bcvof(0,2 ),bcvof(1,2 ),bcvof(0,3 ),bcvof(1,3 ): VoF BC valuessigma: surface tension coefficientlate_init, i_late_init: iflate_initis true, the VoF field is initialized at time-stepi_late_initinstead of atistep=0. This option is typically useful when the user wants to run a precursor single-phase simulation and add the disperse phase at later stage.
Note that by convention phase 1 and 2 represent the dispersed and the continous phase, respectively.
The input file bub.in is required when _USE_VOF is used, inivof='bub' and bub>1 in vof.in. It contains:
xc(i), yc(i), zc(i), r(i): center and radius for the i-th bubble/droplet. This line should be repeated for as many elements asnbub. The user can either manually provide the center coordinates and radius of each droplet or, alternatively, generate a random distribution of droplets with equal radius using the scriptrandomDroplet.pyavailablehere.
The input file forcing.in is required when _TURB_FORCING is used. It contains:
turb_type: type of turbulence forcing. Currently available: Arnold-Beltrami-Childress ('abc') and Taylor-Green Vortex ('tgv')u0_t: initial velocity magnitudef0_t: intensity of the forcing termk0_t: wavenumber at which energy is injectedabc_x, abc_y, abc_z: values of A, B and C coefficients for ABC forcingadd_noise_abc: add disturbances to the initial condition to trigger transition
The input file heat_transfer.in is required if _HEAT_TRANSFER is used. It contains:
initmp,is_noise_tmp,noise_tmp: type of initialized temperature field. If the logical variableis_noise_tmpis true, a random noise of absolute maximum magnitudenoise_tmpis superimposed on the initial temperature fieldtl0,tg0: initial liquid and gas temperaturecp1,cp2: specific heat capacity at constant pressure of phase 1 and 2cv1,cv2: specific heat capacity at constant volume of phase 1 and 2kappa1,kappa2: thermal conductivity of phase 1 and 2cbctmp(0,1 ),cbctmp(1,1 ),cbctmp(0,2 ),cbctmp(1,2 ),cbctmp(0,3 ),cbctmp(1,3 ): temperature BC typebctmp(0,1 ),bctmp(1,1 ),bctmp(0,2 ),bctmp(1,2 ),bctmp(0,3 ),bctmp(1,3 ): temperature BC valuetmp0,beta1_th,beta2_th: if_BOUSSINESQis enabled, the code requires also to provide a reference temperature (e.g. the arithmetic mean between top and bottom wall), the thermal expansion coefficient for phase 1 and phase 2
Note that in case the app single_phase is chosen and heat transfer effects are included, i.e.,HEAT_TRANSFER=1, the input file heat_transfer_sp.in must be provided together with dns.in. In particular, heat_transfer_sp.in contains:
initmp,is_noise_tmp,noise_tmp: type of initialized temperature field. If the logical variableis_noise_tmpis true, a random noise of absolute maximum magnitudenoise_tmpis superimposed on the initial temperature fieldtmp0: initial temperaturecp_sp: specific heat capacity at constant pressurecv_sp: specific heat capacity at constant volumekappa_sp: thermal conductivity of the fluidcbctmp(0,1 ),cbctmp(1,1 ),cbctmp(0,2 ),cbctmp(1,2 ),cbctmp(0,3 ),cbctmp(1,3 ): temperature BC typebctmp(0,1 ),bctmp(1,1 ),bctmp(0,2 ),bctmp(1,2 ),bctmp(0,3 ),bctmp(1,3 ): temperature BC valuebeta_th: if_BOUSSINESQis enabled, the code requires also to provide the thermal expansion coefficient of the fluid