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. | |
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. | |
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) |
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
The following routine does exactly that:
ibc_interpolate
: Interpolate the given field to the boundary points.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
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.
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 ) |