version 0.6.0
mod_immersed_boundary_condition_tools Module Reference

Tools to manipulate immersed boundaries variables. More...

Functions/Subroutines

pure subroutine get_field_ghost_nodes_to_node_values_double (field, ib_metrics, node_values)
 Get ghost nodes nalues of field.
 
pure subroutine get_field_ghost_nodes_to_node_values_integer (field, ib_metrics, node_values)
 Get ghost nodes nalues of field.
 
pure subroutine get_field_ghost_nodes_to_node_values_logical (field, ib_metrics, node_values)
 Get ghost nodes nalues of field.
 
pure subroutine set_field_ghost_nodes_to_node_values_double (field, ib_metrics, node_values)
 Set ghost node values of double field to node_values.
 
pure subroutine set_field_ghost_nodes_to_node_values_integer (field, ib_metrics, node_values)
 Set ghost node values of integer field to node_values.
 
pure subroutine set_field_ghost_nodes_to_node_values_logical (field, ib_metrics, node_values)
 Set ghost node values of logical field to node_values.
 
subroutine set_field_ghost_nodes_to_boundary_value (field, ib_metrics, ibc_interp)
 Set ghost nodes of field to field values interpolated by ibc_interp. More...
 
subroutine set_field_ghost_nodes_to_boundary_value_face (field, ib_metrics, ibc_variable)
 
pure subroutine set_field_ghost_nodes_to_outer_value_base (field, ib_metrics, outer_value)
 Set ghost nodes of field to outer_value of ibc_variable.
 
pure subroutine set_field_ghost_nodes_to_outer_value_cell (field, equation_isd_target, ibc_variable, outer_value)
 
pure subroutine set_field_ghost_nodes_to_outer_value_face (field, equation_isd_target, ibc_variable, outer_value)
 
pure subroutine set_field_outer_nodes_to_outer_value_base (field, ib_metrics, outer_value)
 Set outer nodes of field to outer_value of ibc_variable.
 
pure subroutine set_field_outer_nodes_to_outer_value_cell (field, equation_isd_target, ibc_variable, outer_value)
 Set outer nodes of field to outer_value of ibc_variable.
 
pure subroutine set_field_outer_nodes_to_outer_value_face (field, equation_isd_target, ibc_variable, outer_value)
 
pure subroutine set_field_outer_nodes_to_outer_value_penalization (field, ib_metrics)
 
subroutine extrapolate_ibc_cell (field, ib_metrics, ibc_variable, solver, equation_stencil, ls_map, boundary_condition)
 
subroutine extrapolate_ibc_face (field, face_immersed_boundary, ibc_variable, solver, face_equation_stencil, face_ls_map, cell_ls_map, face_field_boundary_condition, ibm_explicit_extrapolation)
 Extrapolate field over the ghost nodes and apply bc.
 
subroutine ibc_extrapolate_dual (primal_node_type, dual_node_type, ib_metrics, ib_metrics_dual, dual_field)
 Mixed face-cell extrapolation. More...
 
subroutine ibc_extrapolate_dual_cell (ib_metrics_cell, face_immersed_boundary, face_field_)
 
subroutine ibc_extrapolate_dual_face (face_immersed_boundary, ib_metrics_cell, cell_field)
 

Detailed Description

In the meantime, the following routines can be used to set ghost / outer node values in different ways:

  • set_field_ghost_nodes_to_condition: Replace ghost node values to the corresponding boundary value using ibc_interpolate. This is used to compute integrals.
  • set_field_ghost_nodes_to_outer / set_field_outer_nodes_to_outer: Replace ghost / outer node values to outer_value of the given ibc_variable argument.

Ghost nodes values can be extracted into some 1D array and put back using:

  • get_field_ghost_nodes_to_node_values
  • ibc_set_ghost_nodes

Interpolation of some field value at boundary points

The following routine does exactly that:

  • ibc_interpolate: Interpolate the given field to the boundary points.

Modification of ghost node values

Ghost nodes values can be extracted into some 1D array and put back using:

  • get_field_ghost_nodes_to_node_values
  • ibc_set_ghost_nodes

Function/Subroutine Documentation

◆ ibc_extrapolate_dual()

subroutine mod_immersed_boundary_condition_tools::ibc_extrapolate_dual ( type(t_node_type), intent(in)  primal_node_type,
type(t_node_type), intent(in)  dual_node_type,
type(t_immersed_boundary_metrics), intent(in)  ib_metrics,
type(t_immersed_boundary_metrics), intent(in)  ib_metrics_dual,
double precision, dimension(:,:,:), intent(inout)  dual_field 
)

This routine set outer nodes of a dual field to apply discrete operator without harm. For instance, on a cell-centered ghost node:

─┼─∧─┼─
 > o >
─┼─∧─┼─

There may be a face-centered node which is an outer node. In that case, it is not possible to apply discrete operator such as face-to-cell interpolation or face-to-cell divergence. This routine extrapolate the dual field to make discrete operators appliable. Note that the opposite face-centered node is always a ghost node. The same problem occurs around the three face-centered ghost nodes:

───┼───     │ o │
 o > o     ─┼─∧─┼─    …
───┼───     │ o │

which are handled as well.

Currently, this routine simply copy the opposite-side ghost node value to the outer node value. A more elaborate extrapolation may be designed in the future.

◆ set_field_ghost_nodes_to_boundary_value()

subroutine mod_immersed_boundary_condition_tools::set_field_ghost_nodes_to_boundary_value ( double precision, dimension(:,:,:), intent(inout)  field,
type(t_immersed_boundary_metrics), intent(in)  ib_metrics,
type(t_immersed_boundary_condition), intent(in)  ibc_interp 
)
Warning
Be sure to have an extrapolated field before using this!