mg_get_child_offset Function

public pure function mg_get_child_offset(mg, id) result(ix_offset)

Get the offset of a box with respect to its parent (e.g. in 2d, there can be a child at offset 0,0, one at n_cell/2,0, one at 0,n_cell/2 and one at n_cell/2, n_cell/2) n_cell / 2

Arguments

Type IntentOptional Attributes Name
type(mg_t), intent(in) :: mg
integer, intent(in) :: id

Return Value integer, (3)


Called by

proc~~mg_get_child_offset~3~~CalledByGraph proc~mg_get_child_offset~3 mg_get_child_offset proc~buffer_for_fine_nb~3 buffer_for_fine_nb proc~buffer_for_fine_nb~3->proc~mg_get_child_offset~3 proc~fill_refinement_bnd~3 fill_refinement_bnd proc~fill_refinement_bnd~3->proc~mg_get_child_offset~3 proc~prolong_onto~3 prolong_onto proc~prolong_onto~3->proc~mg_get_child_offset~3 proc~prolong_set_buffer~3 prolong_set_buffer proc~prolong_set_buffer~3->proc~mg_get_child_offset~3 proc~restrict_onto~3 restrict_onto proc~restrict_onto~3->proc~mg_get_child_offset~3 proc~buffer_refinement_boundaries~3 buffer_refinement_boundaries proc~buffer_refinement_boundaries~3->proc~buffer_for_fine_nb~3 proc~mg_prolong~3 mg_prolong proc~mg_prolong~3->proc~prolong_onto~3 proc~mg_prolong~3->proc~prolong_set_buffer~3 proc~mg_restrict_lvl~3 mg_restrict_lvl proc~mg_restrict_lvl~3->proc~restrict_onto~3 proc~set_ghost_cells~3 set_ghost_cells proc~set_ghost_cells~3->proc~fill_refinement_bnd~3 proc~correct_children~3 correct_children proc~correct_children~3->proc~mg_prolong~3 proc~mg_fill_ghost_cells_lvl~3 mg_fill_ghost_cells_lvl proc~mg_fill_ghost_cells_lvl~3->proc~buffer_refinement_boundaries~3 proc~mg_fill_ghost_cells_lvl~3->proc~set_ghost_cells~3 proc~mg_ghost_cell_buffer_size~3 mg_ghost_cell_buffer_size proc~mg_ghost_cell_buffer_size~3->proc~buffer_refinement_boundaries~3 proc~mg_ghost_cell_buffer_size~3->proc~set_ghost_cells~3 proc~mg_restrict~3 mg_restrict proc~mg_restrict~3->proc~mg_restrict_lvl~3 proc~update_coarse~3 update_coarse proc~update_coarse~3->proc~mg_restrict_lvl~3 proc~update_coarse~3->proc~mg_fill_ghost_cells_lvl~3 proc~mg_allocate_storage~3 mg_allocate_storage proc~mg_allocate_storage~3->proc~mg_ghost_cell_buffer_size~3 proc~mg_copy_to_tree mg_copy_to_tree proc~mg_copy_to_tree->proc~mg_restrict~3 proc~mg_fill_ghost_cells~3 mg_fill_ghost_cells proc~mg_copy_to_tree->proc~mg_fill_ghost_cells~3 proc~mg_fas_fmg~3 mg_fas_fmg proc~mg_fas_fmg~3->proc~correct_children~3 proc~mg_fas_fmg~3->proc~mg_fill_ghost_cells_lvl~3 proc~mg_fas_fmg~3->proc~update_coarse~3 proc~mg_fas_vcycle~3 mg_fas_vcycle proc~mg_fas_fmg~3->proc~mg_fas_vcycle~3 proc~mg_fas_vcycle~3->proc~correct_children~3 proc~mg_fas_vcycle~3->proc~mg_fill_ghost_cells_lvl~3 proc~mg_fas_vcycle~3->proc~update_coarse~3 proc~smooth_boxes~3 smooth_boxes proc~mg_fas_vcycle~3->proc~smooth_boxes~3 proc~mg_fill_ghost_cells~3->proc~mg_fill_ghost_cells_lvl~3 proc~smooth_boxes~3->proc~mg_fill_ghost_cells_lvl~3 proc~diffusion_solve_acoeff~3 diffusion_solve_acoeff proc~diffusion_solve_acoeff~3->proc~mg_fas_fmg~3 proc~diffusion_solve_acoeff~3->proc~mg_fas_vcycle~3 proc~diffusion_solve_vcoeff~3 diffusion_solve_vcoeff proc~diffusion_solve_vcoeff~3->proc~mg_fas_fmg~3 proc~diffusion_solve_vcoeff~3->proc~mg_fas_vcycle~3 proc~diffusion_solve~3 diffusion_solve proc~diffusion_solve~3->proc~mg_fas_fmg~3 proc~diffusion_solve~3->proc~mg_fas_vcycle~3 proc~mg_tree_from_amrvac mg_tree_from_amrvac proc~mg_tree_from_amrvac->proc~mg_allocate_storage~3 proc~mg_setup_multigrid mg_setup_multigrid proc~mg_setup_multigrid->proc~mg_tree_from_amrvac proc~mg_update_refinement mg_update_refinement proc~mg_update_refinement->proc~mg_tree_from_amrvac proc~amr_coarsen_refine amr_coarsen_refine proc~amr_coarsen_refine->proc~mg_update_refinement proc~improve_initial_condition improve_initial_condition proc~improve_initial_condition->proc~mg_setup_multigrid proc~main main proc~main->proc~mg_setup_multigrid proc~main->proc~improve_initial_condition proc~resettree_convert resettree_convert proc~main->proc~resettree_convert proc~settree settree proc~main->proc~settree proc~timeintegration timeintegration proc~main->proc~timeintegration proc~resettree resettree proc~resettree->proc~amr_coarsen_refine proc~resettree_convert->proc~amr_coarsen_refine proc~settree->proc~amr_coarsen_refine program~agile agile program~agile->proc~main proc~timeintegration->proc~resettree

Source Code

  pure function mg_get_child_offset(mg, id) result(ix_offset)
    type(mg_t), intent(in) :: mg
    integer, intent(in)    :: id
    integer                :: ix_offset(3)

    if (mg%boxes(id)%lvl <= mg%first_normal_lvl) then
       ix_offset(:) = 0
    else
       ix_offset = iand(mg%boxes(id)%ix-1, 1) * ishft(mg%box_size, -1)
       !* n_cell / 2
    end if
  end function mg_get_child_offset