CFD_DOMAIN

CFD
*CFD_DOMAIN
"Optional title"
coid
entype, enid, $\Delta$, air, geo_update, xsmooth, blocking_update
$x_0$, $y_0$, $z_0$, $x_1$, $y_1$, $z_1$
bc${}_{x0}$, bc${}_{y0}$, bc${}_{z0}$, bc${}_{x1}$, bc${}_{y1}$, bc${}_{z1}$
$t_{end}$
Parameter definition
VariableDescription
coid Command ID
entype Structure entity type for fluid structure interaction
options: P, PS, ALL
enid Structure entity ID
$\Delta$ Cell size
air Option to begin with an air filled domain (before adding other materials)
options:
0 $\rightarrow$ domain is empty
1 $\rightarrow$ domain is filled with air
geo_update Coupling geometry update interval (number of time steps)
default: no update (geometry is assumed to be fixed in space)
xsmooth Spatial pressure smoothing level
default: inactive
blocking_update Blocking update interval (number of time steps)
default: no blocking
$x_0$ CFD domain minimum x-coordinate
$y_0$ CFD domain minimum y-coordinate
$z_0$ CFD domain minimum z-coordinate
$x_1$ CFD domain maximum x-coordinate
$y_1$ CFD domain maximum y-coordinate
$z_1$ CFD domain maximum z-coordinate
bc${}_{x0}$ Boundary condition at $x=x_0$
options:
0 $\rightarrow$ non-reflecting boundary
1 $\rightarrow$ reflecting boundary
bc${}_{y0}$ Boundary condition at $y=y_0$
options:
0 $\rightarrow$ non-reflecting boundary
1 $\rightarrow$ reflecting boundary
bc${}_{z0}$ Boundary condition at $z=z_0$
options:
0 $\rightarrow$ non-reflecting boundary
1 $\rightarrow$ reflecting boundary
bc${}_{x1}$ Boundary condition at $x=x_1$
options:
0 $\rightarrow$ non-reflecting boundary
1 $\rightarrow$ reflecting boundary
bc${}_{y1}$ Boundary condition at $y=y_1$
options:
0 $\rightarrow$ non-reflecting boundary
1 $\rightarrow$ reflecting boundary
bc${}_{z1}$ Boundary condition at $z=z_1$
options:
0 $\rightarrow$ non-reflecting boundary
1 $\rightarrow$ reflecting boundary
$t_{end}$ Deactivation time
default: no CFD deactivation time
Description

CFD_DOMAIN activates a built-in CFD solver for compressible flow. The command is used to define the computational domain (location in space and boundary conditions), grid size, and to specify the interaction with embedded FE parts.

Accompanying commands are CFD_GAS, CFD_HE and CFD_DETONATION. These commands are used to fill the CFD domain with gases and high explosives and to define detonation points (if applicable).

The spatial pressure smoothing option is used to filter noise in the CFD-FE coupling interface. Typical xsmooth values range between 0 (no smooting) and 10 (strong smoothing).

CFD cells that are intersected by the Finite Element structure are treated as dead (empty). The geo_update parameter controls the interval (number of time steps) at which the intersection is updated.

The blocking_update parameter activates a check that prevents interaction between CFD cells and Finite Element faces shielded by (located behind) other faces. For performance reasons, this check is inactive by deafult.

Full coupling is automatically activated between CFD and SPH and between CFD and discrete soil particles.

Example
Air blast loaded rigid plate

A simple example with a TNT charge (diameter $60mm$) detonated above a rigid plate at stand-off distance $200mm$.


Alternative 1 - air is defined with the command CFD_GAS

*UNIT_SYSTEM
SI
*PARAMETER
L = 1.0, "CFD domain size"
W = 0.3, "plate size"
h = 0.05, "plate thickness"
soff = 0.2, "stand-off distance"
R = 0.03, "charge radius"
delta = 0.008, "grid size"
*TIME
2.0e-4
#
# --- MESH ---
#
*COMPONENT_BOX
"plate"
1, 1, 10, 10, 1
[-%W/2], [-%W/2], [-%h], [%W/2], [%W/2], 0
#
# --- MATERIAL ---
#
*MAT_RIGID
1, 7800.0
#
# --- PART ---
#
*PART
"plate"
1, 1
#
# --- CFD ---
#
*CFD_DOMAIN
"air blast"
1
ALL, 0, [%delta]
[-%L/2], [-%L/2], [-%L/2], [%L/2], [%L/2], [%L/2]
*CFD_GAS
"air"
1
AIR, 1
*GEOMETRY_BOX
1
[-%L/2], [-%L/2], [-%L/2], [%L/2], [%L/2], [%L/2]
*CFD_HE
"TNT"
2
TNT, 2
*GEOMETRY_SPHERE
2
0, 0, [%soff], [%R]
*CFD_DETONATION
1
0, 0, [%soff]
*END

Alternative 2 - global domain is filled with air by setting air=1 in CFD_DOMAIN

*UNIT_SYSTEM
SI
*PARAMETER
L = 1.0, "CFD domain size"
W = 0.3, "plate size"
h = 0.05, "plate thickness"
soff = 0.2, "stand-off distance"
R = 0.03, "charge radius"
delta = 0.008, "grid size"
air = 1, "fill global domain with air"
*TIME
2.0e-4
#
# --- MESH ---
#
*COMPONENT_BOX
"plate"
1, 1, 10, 10, 1
[-%W/2], [-%W/2], [-%h], [%W/2], [%W/2], 0
#
# --- MATERIAL ---
#
*MAT_RIGID
1, 7800.0
#
# --- PART ---
#
*PART
"plate"
1, 1
#
# --- CFD ---
#
*CFD_DOMAIN
"air blast"
1
ALL, 0, [%delta], [%air]
[-%L/2], [-%L/2], [-%L/2], [%L/2], [%L/2], [%L/2]
*CFD_HE
"TNT"
2
TNT, 2
*GEOMETRY_SPHERE
2
0, 0, [%soff], [%R]
*CFD_DETONATION
1
0, 0, [%soff]
*END
Restart and mapping from fine to coarse grid

Large scaled distances are computationally challenging. The initial shock wave formation might require a grid resolution that is too fine to be used for the global domain. A possible solution is to model the process in two steps:

Step 1 - detonation and initial blast wave formation

This initial part of the process is modeled with a fine grid. Symmetry conditions are utilized. At termination a file impetus_state_cfd1.bin is generated. This file contains information about the final CFD state, i.e. densities, energies and velocities in all cells of the CFD grid.


*UNIT_SYSTEM
SI
*PARAMETER
L = 0.5, "CFD domain size"
R = 0.03, "charge radius"
delta = 0.005, "grid size"
air = 1, "fill global domain with air"
*TIME
2.0e-4
#
# --- CFD ---
#
*CFD_DOMAIN
"air blast"
1
ALL, 0, [%delta], [%air]
0, 0, 0, [%L], [%L], [%L]
1, 1, 1, 0, 0, 0
*CFD_HE
"C4"
1
C4, 1
*GEOMETRY_SPHERE
1
0, 0, 0, [%R]
*CFD_DETONATION
1
0, 0, 0
*END

Step 2 - blast wave propagation

The results from Step 1 are imported and mapped to a corser grid and the shock wave propagation can be tracked over larger distances. Note that the solver identifies the 1/8 symmetry conditions from Step 1 and automatically mirrors the results to full 3D. The binary state file from Step 1 (impetus_state_cfd1.bin) is included from cfd_data.k. Hence, the positioning parameters in the INCLUDE command will also control the positioning of the data in the binary state file.


*UNIT_SYSTEM
SI
*PARAMETER
L = 4.0, "CFD domain size"
W = 1.0, "plate size"
h = 0.05, "plate thickness"
soff = 1.0, "stand-off distance"
delta = 0.02, "grid size"
air = 1, "fill global domain with air"
*TIME
2.0e-3
#
# --- MESH ---
#
*COMPONENT_BOX
"plate"
1, 1, 10, 10, 1
[-%W/2], [-%W/2], [-%soff/2-%h], [%W/2], [%W/2], [-%soff/2]
#
# --- MATERIAL ---
#
*MAT_RIGID
1, 7800.0
#
# --- PART ---
#
*PART
"plate"
1, 1
#
# --- CFD ---
#
*INCLUDE
cfd_data.k
1, 1, 1
0, 0, 0, 0, 0, [%soff/2]
*CFD_DOMAIN
"air blast"
1
ALL, 0, [%delta], [%air]
[-%L/2], [-%L/2], [-%L/2], [%L/2], [%L/2], [%L/2]
*END
#
# File: cfd_data.k
*INCLUDE_BINARY
../Step_1/impetus_state_cfd1.bin
*END