field_shift_blend_x_band_base Subroutine

public subroutine field_shift_blend_x_band_base(self, f, lambda, i_start, i_offset, nshift, z_plane_rank)

Blend an x band of a DIR_X vertex field towards a spanwise-shifted copy of an upstream band (the ABL shifted periodic fringe): f(i + i_offset, j, k) = lambdaf(i, j, k - nshift) + (1 - lambda)f(i + i_offset, j, k) for i = i_start, ..., i_start + size(lambda) - 1, with k circular over the global z planes. x and y must not be decomposed; z_plane_rank(kg) is the rank holding global z plane kg.

This default works on the host through get_field_data and set_field_data, so it suits a host backend; a device backend should override it to keep the field on the device.

Type Bound

base_backend_t

Arguments

Type IntentOptional Attributes Name
class(base_backend_t) :: self
class(field_t), intent(inout) :: f
real(kind=dp), intent(in) :: lambda(:)
integer, intent(in) :: i_start
integer, intent(in) :: i_offset
integer, intent(in) :: nshift
integer, intent(in) :: z_plane_rank(:)

Calls

proc~~field_shift_blend_x_band_base~~CallsGraph proc~field_shift_blend_x_band_base m_base_backend::base_backend_t%field_shift_blend_x_band_base mpi_waitall mpi_waitall proc~field_shift_blend_x_band_base->mpi_waitall proc~get_dims m_mesh::mesh_t%get_dims proc~field_shift_blend_x_band_base->proc~get_dims proc~get_field_data m_base_backend::base_backend_t%get_field_data proc~field_shift_blend_x_band_base->proc~get_field_data proc~get_padded_dims m_allocator::allocator_t%get_padded_dims proc~field_shift_blend_x_band_base->proc~get_padded_dims proc~post_z_shift_exchange m_base_backend::post_z_shift_exchange proc~field_shift_blend_x_band_base->proc~post_z_shift_exchange proc~set_field_data m_base_backend::base_backend_t%set_field_data proc~field_shift_blend_x_band_base->proc~set_field_data proc~shifted_z_source m_base_backend::shifted_z_source proc~field_shift_blend_x_band_base->proc~shifted_z_source proc~get_dims_dataloc m_mesh::get_dims_dataloc proc~get_dims->proc~get_dims_dataloc proc~copy_f_to_data_base m_base_backend::base_backend_t%copy_f_to_data_base proc~get_field_data->proc~copy_f_to_data_base proc~get_block m_allocator::allocator_t%get_block proc~get_field_data->proc~get_block proc~get_rdr_from_dirs m_common::get_rdr_from_dirs proc~get_field_data->proc~get_rdr_from_dirs proc~release_block m_allocator::allocator_t%release_block proc~get_field_data->proc~release_block proc~reorder_base m_base_backend::base_backend_t%reorder_base proc~get_field_data->proc~reorder_base proc~post_z_shift_exchange->proc~shifted_z_source mpi_irecv mpi_irecv proc~post_z_shift_exchange->mpi_irecv mpi_isend mpi_isend proc~post_z_shift_exchange->mpi_isend proc~copy_data_to_f_base m_base_backend::base_backend_t%copy_data_to_f_base proc~set_field_data->proc~copy_data_to_f_base proc~set_field_data->proc~get_block proc~set_field_data->proc~get_rdr_from_dirs proc~set_field_data->proc~release_block proc~set_field_data->proc~reorder_base proc~abort_run m_logger::abort_run proc~copy_data_to_f_base->proc~abort_run proc~copy_f_to_data_base->proc~abort_run proc~create_block m_allocator::allocator_t%create_block proc~get_block->proc~create_block proc~set_shape m_field::field_t%set_shape proc~get_block->proc~set_shape proc~reorder_base->proc~abort_run interface~str m_logger::str proc~abort_run->interface~str mpi_abort mpi_abort proc~abort_run->mpi_abort mpi_barrier mpi_barrier proc~abort_run->mpi_barrier mpi_comm_rank mpi_comm_rank proc~abort_run->mpi_comm_rank mpi_comm_size mpi_comm_size proc~abort_run->mpi_comm_size mpi_finalized mpi_finalized proc~abort_run->mpi_finalized mpi_initialized mpi_initialized proc~abort_run->mpi_initialized

Called by

proc~~field_shift_blend_x_band_base~~CalledByGraph proc~field_shift_blend_x_band_base m_base_backend::base_backend_t%field_shift_blend_x_band_base none~apply_shifted_periodic m_abl::abl_t%apply_shifted_periodic none~apply_shifted_periodic->proc~field_shift_blend_x_band_base proc~define_bc_abl m_case_abl::case_abl_t%define_BC_abl proc~define_bc_abl->none~apply_shifted_periodic