refine_grids Subroutine

public subroutine refine_grids(child_igrid, child_ipe, igrid, ipe, active)

Uses

  • proc~~refine_grids~~UsesGraph proc~refine_grids refine_grids mod_amr_solution_node mod_amr_solution_node proc~refine_grids->mod_amr_solution_node module~mod_global_parameters mod_global_parameters proc~refine_grids->module~mod_global_parameters module~mod_initialize_amr mod_initialize_amr proc~refine_grids->module~mod_initialize_amr 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

refine one block to its children blocks

Arguments

Type IntentOptional Attributes Name
integer, intent(in), dimension(2,2,2) :: child_igrid
integer, intent(in), dimension(2,2,2) :: child_ipe
integer, intent(in) :: igrid
integer, intent(in) :: ipe
logical, intent(in) :: active

Calls

proc~~refine_grids~~CallsGraph proc~refine_grids refine_grids alloc_node alloc_node proc~refine_grids->alloc_node dealloc_node dealloc_node proc~refine_grids->dealloc_node proc~initial_condition initial_condition proc~refine_grids->proc~initial_condition proc~prolong_grid prolong_grid proc~refine_grids->proc~prolong_grid proc~mpistop mpistop proc~initial_condition->proc~mpistop proc~sync_positions_host sync_positions_host proc~initial_condition->proc~sync_positions_host phys_to_conserved phys_to_conserved proc~prolong_grid->phys_to_conserved phys_to_primitive phys_to_primitive proc~prolong_grid->phys_to_primitive proc~old_neighbors old_neighbors proc~prolong_grid->proc~old_neighbors proc~prolong_2nd prolong_2nd proc~prolong_grid->proc~prolong_2nd proc~prolong_grid->proc~sync_positions_host mpi_abort mpi_abort proc~mpistop->mpi_abort proc~prolong_2nd->phys_to_conserved proc~prolong_2nd->proc~sync_positions_host proc~already_fine already_fine proc~prolong_2nd->proc~already_fine proc~prolong_2nd_stg prolong_2nd_stg proc~prolong_2nd->proc~prolong_2nd_stg phys_face_to_center phys_face_to_center proc~prolong_2nd_stg->phys_face_to_center

Called by

proc~~refine_grids~~CalledByGraph proc~refine_grids refine_grids proc~amr_coarsen_refine amr_coarsen_refine proc~amr_coarsen_refine->proc~refine_grids proc~resettree resettree proc~resettree->proc~amr_coarsen_refine proc~resettree_convert resettree_convert proc~resettree_convert->proc~amr_coarsen_refine proc~settree settree proc~settree->proc~amr_coarsen_refine proc~main main proc~main->proc~resettree_convert proc~main->proc~settree proc~timeintegration timeintegration proc~main->proc~timeintegration proc~timeintegration->proc~resettree program~agile agile program~agile->proc~main

Source Code

  subroutine refine_grids(child_igrid,child_ipe,igrid,ipe,active)
    use mod_global_parameters
    use mod_initialize_amr, only: initial_condition
    use mod_amr_solution_node, only: alloc_node, dealloc_node

    integer, dimension(2,2,2), intent(in) :: child_igrid, child_ipe
    integer, intent(in) :: igrid, ipe
    logical, intent(in) :: active

    integer :: ic1,ic2,ic3

    ! allocate solution space for new children
    do ic3=1,2
       do ic2=1,2
          do ic1=1,2
             call alloc_node(child_igrid(ic1,ic2,ic3))
          end do
       end do
    end do

    if ((time_advance .and. active).or.convert.or.reset_grid) then
       ! prolong igrid to new children
       call prolong_grid(child_igrid,child_ipe,igrid,ipe)
    else
       ! Fill new created children with initial condition, which fetches each
       ! child's positions back from the device itself.
       do ic3=1,2
       do ic2=1,2
       do ic1=1,2
          call initial_condition(child_igrid(ic1,ic2,ic3))
       end do
       end do
       end do
    end if

    ! remove solution space of igrid to save memory when converting data
    if(convert) call dealloc_node(igrid)
  end subroutine refine_grids