version 0.6.0
No Matches
Immersed Boundaries

Implement boundaries of arbitrary shapes in PDEs. More...


 Immersed Boundary Condition
 Initialize and prepare resolution of immersed boundary conditions.


module  variables_explicit_weno_fd
 Compile-time settings for immersed boundaries.
module  mod_update_variable_ib_b_ghost
 Update fields on boundary and immersed boundary ghost cells.
module  mod_immersed_boundary_surface_integrals
 Tools to compute surface integrals.
module  mod_apply_immersed_boundary_condition_cell
 Apply immersed boundaries, cell version.
module  mod_apply_immersed_boundary_condition_face
 Apply immersed boundaries, face version.
module  mod_eval_ibm_matrix_coefficients
 Preparation routine building blocks for immersed boundaries.
module  variables_immersed_boundary_condition
 Compile-time settings for immersed boundaries.
module  mod_set_ib_mask
 Tools to manipulate immersed boundaries.

Detailed Description

In Notus, complex, non-Cartesian, boundaries can be set using the popular immersed boundary technique. The computational domain is split into an inner and an outer domains.

Immersed boundaries in the computational domain.

Basically, the present Implementation will use a distance field and the current grid to define a set of boundary points. Boundary conditions are then be defined at these points for each resolved equation. Since the geometry is not Cartesian, additional interpolations are needed to define the boundary conditions, which can be parametrized to obtain the desired accuracy. A number of routines modifies Notus processing and post-processing to account for the immersed boundary, while using its Cartesian framework.

Creation of immersed boundaries

The variables required to define immersed boundaries are grouped into two derived types:

Thus one instance of the former corresponds to a grid (cell-centered, etc.), and one instance of the latter corresponds to a resolved field (temperature, pressure, etc.)

See immersed_boundary_types for detailed information.

Boundary definition

The Implementation use a distance field description of the immersed boundary, yet it is more easy and flexible to use the Shapes API directly in the domain/immersed_boundary block of the NTS file.

Notice that the interior of the shape corresponds to the outer domain. The invert keyword easily swaps inner and outer domains.

Metric-related variables definition

The global variables fields_immersed_subdomain::ib_metrics, fields_immersed_subdomain::face_immersed_boundary%u, fields_immersed_subdomain::face_immersed_boundary%v, fields_immersed_subdomain::face_immersed_boundary%w contains the metric-related variables of the cell-centered, x-face-centered, y-face-centered, z-face-centered grids, respectively. These fields are initialized by the routines defined in mod_initialize_immersed_subdomain.

See mod_immersed_boundary_prepare for detailed initialization information.

Numerical considerations

The Implementation needs ghost boundary cells to work properly. Be sure that the appropriate <equation>_has_ghost_boundary_cells is set to .true..
Square stencils are often required when immersed boundary is activated.
Depending on the boundary condition parameters described below, the nghost variable may require a sufficiently high value.

Boundary condition definition

Boundary condition are set in the block modeling/equations/<equation>/immersed_boundary_condition. Two equations are currently supported. Types and description of immersed boundary conditions follows the syntax of domain boundary condition, allowing constants, instructions and shapes instructions.

Energy equation

The energy equation supports the Dirichlet and Neumann boundary conditions. The global variable fields_immersed_subdomain::ibc_temperature contains field-related variables.

Navier equation

The navier equation supports the wall and inlet boundary conditions. The global variables fields_immersed_subdomain::ibc_velocity and fields_immersed_subdomain::ibc_pressure contains field-related variables.

Numerical parameters

Numerical parameters are set in the block numerical_parameters/<equation>/immersed_boundary. There is three parameters:

For the Navier equation, two values can be set for method and order, which will be applied to the momentum and pressure increment equations. The enum_ibc_method lists the available methods.

Volume Penalization

Alternatively, the method numerical parameter can be set to volume_penalization to quickly replace the immersed boundary by a 1st-order accurate penalization method.

The penalization method considers that fields are defined in both the inner and outer domain, the latter being penalized.

4. Internal and debug constants

1. Boundary thickness.

As described above, the resolution of the modified linear system may become prohibitive when an inner node becomes very close to the boundary. To prevent such thing, a thickness is given to the boundary. When a node is found to be in the boundary thickness, it is considered as a boundary point.

The boundary thickness is computed as a fraction of the minimum cell size in the parameter thickness