sync_positions_host Subroutine

public subroutine sync_positions_host(igrid)

Uses

  • proc~~sync_positions_host~~UsesGraph proc~sync_positions_host sync_positions_host module~mod_global_parameters mod_global_parameters proc~sync_positions_host->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Return cell-centre positions from the device to the host.

fill_geometry_device builds a block's geometry on the GPU and leaves it there. Positions are the part host code asks for most often - the initial condition, the user hooks and the output all read ps(igrid)%x - but it asks rarely compared to how often blocks are (re)allocated, so the copy back does not belong in alloc_node: with AMR that would pay for it on every regrid, for blocks nothing on the host is going to look at.

Call this instead immediately before host code that reads ps(igrid)%x, passing igrid when it is about to read a single block. Every such site is listed in CLAUDE.md; a missed one reads whatever the host copy held for the block that previously occupied that slot.

Arguments

Type IntentOptional Attributes Name
integer, intent(in), optional :: igrid

Called by

proc~~sync_positions_host~~CalledByGraph proc~sync_positions_host sync_positions_host proc~alloc_node alloc_node proc~alloc_node->proc~sync_positions_host proc~alloc_node~2 alloc_node proc~alloc_node~2->proc~sync_positions_host proc~alloc_node~3 alloc_node proc~alloc_node~3->proc~sync_positions_host proc~alloc_node~4 alloc_node proc~alloc_node~4->proc~sync_positions_host proc~getintbc getintbc proc~getintbc->proc~sync_positions_host proc~initial_condition initial_condition proc~initial_condition->proc~sync_positions_host proc~modify_ic modify_IC proc~modify_ic->proc~sync_positions_host proc~process process proc~process->proc~sync_positions_host proc~getbc getbc proc~process->proc~getbc proc~process_advanced process_advanced proc~process_advanced->proc~sync_positions_host proc~process_advanced->proc~getbc proc~prolong_2nd prolong_2nd proc~prolong_2nd->proc~sync_positions_host proc~prolong_grid prolong_grid proc~prolong_grid->proc~sync_positions_host proc~prolong_grid->proc~prolong_2nd proc~timeintegration timeintegration proc~timeintegration->proc~sync_positions_host proc~timeintegration->proc~process proc~timeintegration->proc~process_advanced proc~saveamrfile saveamrfile proc~timeintegration->proc~saveamrfile proc~resettree resettree proc~timeintegration->proc~resettree proc~advance advance proc~timeintegration->proc~advance proc~coarsen_grid_siblings coarsen_grid_siblings proc~coarsen_grid_siblings->proc~initial_condition proc~getbc->proc~getintbc proc~initlevelone initlevelone proc~initlevelone->proc~initial_condition proc~initlevelone->proc~getbc proc~main main proc~main->proc~modify_ic proc~main->proc~process proc~main->proc~timeintegration proc~main->proc~getbc proc~main->proc~initlevelone proc~improve_initial_condition improve_initial_condition proc~main->proc~improve_initial_condition proc~resettree_convert resettree_convert proc~main->proc~resettree_convert proc~settree settree proc~main->proc~settree proc~refine_grids refine_grids proc~refine_grids->proc~initial_condition proc~refine_grids->proc~prolong_grid proc~add_split_source add_split_source proc~add_split_source->proc~getbc proc~add_split_source~2 add_split_source proc~add_split_source~2->proc~getbc proc~add_split_source~3 add_split_source proc~add_split_source~3->proc~getbc proc~add_split_source~4 add_split_source proc~add_split_source~4->proc~getbc proc~advect1 advect1 proc~advect1->proc~getbc proc~amr_coarsen_refine amr_coarsen_refine proc~amr_coarsen_refine->proc~coarsen_grid_siblings proc~amr_coarsen_refine->proc~getbc proc~amr_coarsen_refine->proc~refine_grids proc~global_implicit_update global_implicit_update proc~global_implicit_update->proc~getbc proc~improve_initial_condition->proc~getbc proc~recalculateb recalculateB proc~improve_initial_condition->proc~recalculateb proc~recalculateb->proc~getbc proc~resettree_convert->proc~getbc proc~resettree_convert->proc~amr_coarsen_refine proc~saveamrfile->proc~getbc program~agile agile program~agile->proc~main proc~advect advect proc~advect->proc~advect1 proc~resettree->proc~amr_coarsen_refine proc~settree->proc~amr_coarsen_refine proc~advance->proc~advect

Source Code

  subroutine sync_positions_host(igrid)
    use mod_global_parameters

    integer, intent(in), optional :: igrid

    integer :: iigrid

    if (present(igrid)) then
       
    else
       do iigrid = 1, igridstail
          
       end do
    end if

  end subroutine sync_positions_host