Validation

1. 射流燃烧

Jet 开启化学反应,单层网格, 160x64x64, 计算100步

  • 编译选项:

#
# Base options
#
set(EBAMR_DIM             "3"        CACHE STRING "Number of physical dimensions")
set(EBAMR_PRECISION       "DOUBLE"   CACHE STRING "Floating point precision SINGLE or DOUBLE")
set(EBAMR_CASE            "7_JET"    CACHE STRING "Case folder")
#
# Physics options
#
option(OPTION_USE_CHEM      "Enable chemical reaction"     ON)

#
# Misc options
#
option(OPTION_ENABLE_TINY_PROFILE "Enable AMReX tiny profiler" ON)
option(OPTION_ENABLE_HDF5         "Enable HDF5 PlotFiles"      OFF)
option(OPTION_ENABLE_HYPRE        "Enable Hypre"               OFF)
option(OPTION_ENABLE_SUNDIALS     "Enable Sundials integrator" OFF)

#
# HPC options
#
option(OPTION_MPI    "Enable MPI"    OFF)
option(OPTION_OPENMP "Enable OpenMP" OFF)
option(OPTION_CUDA   "Enable CUDA"   ON)
option(OPTION_HIP    "Enable HIP"    OFF)
option(OPTION_SYCL   "Enable SyCL"   OFF)

# C++ Options
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
  • 运行时输入

max_step  = 100
stop_time = 0.14

geometry.is_periodic = 0 0 0
geometry.coord_sys   = 0  # 0 => cart, 1 => RZ  2=>spherical
geometry.prob_lo     =   0.0     -0.0032  -0.0032
geometry.prob_hi     =   0.016    0.0032   0.0032
amr.n_cell           =   160      64       64

# >>>>>>>>>>>>>  BC FLAGS <<<<<<<<<<<<<<<<
# 0 = Interior           3 = Symmetry
# 1 = Inflow             4 = SlipWall
# 2 = Outflow            5 = NoSlipWall
# >>>>>>>>>>>>>  BC FLAGS <<<<<<<<<<<<<<<<
ebr.lo_bc       =  1   2   2
ebr.hi_bc       =  2   2   2

ebr.cfl = 1.0  # cfl number for hyperbolic system

ebr.v = 2
amr.v = 1

# LOAD BALANCE
amr.loadbalance_with_workestimates = 0
amr.loadbalance_level0_int = 1000

# REFINEMENT / REGRIDDING 
amr.check_input     = 1       # 
amr.max_level       = 0       # maximum level number allowed
amr.ref_ratio       = 2 2 2 2 # refinement ratio
amr.regrid_int      = 2 # how often to regrid
amr.blocking_factor = 16
amr.max_grid_size   = 256
amr.n_error_buf     = 0 # number of buffer cells in error est
amr.grid_eff        = 1     # what constitutes an efficient grid

# CHECKPOINT FILES
amr.checkpoint_files_output = 0
amr.check_file              = chk    # root name of checkpoint file
amr.check_int               = 100    # number of timesteps between checkpoints

# PLOTFILES
amr.plot_files_output = 0
amr.plot_file         = plt     # root name of plotfile
amr.plot_int          = 200     # number of timesteps between plotfiles
amr.derive_plot_vars  = pressure velocity T

ebr.refine_dengrad = 0.1
ebr.refine_max_dengrad_lev = 4
ebr.do_reflux = false
ebr.time_integration = RK2
ebr.do_visc = true

# EB parameters
eb2.geom_type = none

# Error handling
amrex.fpe_trap_invalid=0  # NaN, turn this off for GPU profiling
amrex.fpe_trap_zero=0     # devided by zero
amrex.fpe_trap_overflow=0 # overflow

On CPU: i9-12900k (mpirun -n 8) : 325.6690344 s

Hygon DCU

DCUx4

RTX 3080

Tesla V100

A10

A10x4

A10 1.6x grid

A10x4 1.6x grid

37.21853068

12.6149422

79.97765838

20.14456375

86.84865471

30.5222507

139.4827673

39.89737012