prolong_grid Subroutine

private subroutine prolong_grid(child_igrid, child_ipe, igrid, ipe)

Uses

  • proc~~prolong_grid~~UsesGraph proc~prolong_grid prolong_grid mod_physics mod_physics proc~prolong_grid->mod_physics module~mod_amr_fct mod_amr_fct proc~prolong_grid->module~mod_amr_fct module~mod_geometry mod_geometry proc~prolong_grid->module~mod_geometry module~mod_global_parameters mod_global_parameters proc~prolong_grid->module~mod_global_parameters module~mod_mpi_wrapper mod_mpi_wrapper module~mod_amr_fct->module~mod_mpi_wrapper module~mod_comm_lib mod_comm_lib module~mod_geometry->module~mod_comm_lib 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_mpi_wrapper->mpi module~mod_variables->module~mod_basic_types

prolong one block

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

Calls

proc~~prolong_grid~~CallsGraph proc~prolong_grid prolong_grid 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~sync_positions_host sync_positions_host proc~prolong_grid->proc~sync_positions_host 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~~prolong_grid~~CalledByGraph proc~prolong_grid prolong_grid proc~refine_grids refine_grids proc~refine_grids->proc~prolong_grid 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 prolong_grid(child_igrid,child_ipe,igrid,ipe)
    use mod_physics, only: phys_to_primitive, phys_to_conserved
    use mod_global_parameters
    use mod_geometry, only: sync_positions_host
    use mod_amr_fct, only: old_neighbors

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

    integer :: ixmin1,ixmin2,ixmin3,ixmax1,ixmax2,ixmax3, ichild, ixComin1,&
       ixComin2,ixComin3,ixComax1,ixComax2,ixComax3, ic1,ic2,ic3
    double precision :: dxCo1,dxCo2,dxCo3, xComin1,xComin2,xComin3, dxFi1,&
       dxFi2,dxFi3, xFimin1,xFimin2,xFimin3

    ixmin1=ixMlo1-1;ixmin2=ixMlo2-1;ixmin3=ixMlo3-1;ixmax1=ixMhi1+1
    ixmax2=ixMhi2+1;ixmax3=ixMhi3+1;

    ! phys_to_primitive/phys_to_conserved below read ps(igrid)%x on the host
    if(prolongprimitive) call sync_positions_host(igrid)
    if(prolongprimitive) call phys_to_primitive(ixGlo1,ixGlo2,ixGlo3,ixGhi1,&
       ixGhi2,ixGhi3,ixmin1,ixmin2,ixmin3,ixmax1,ixmax2,ixmax3,ps(igrid)%w,&
       ps(igrid)%x)

    xComin1=rnode(rpxmin1_,igrid)
    xComin2=rnode(rpxmin2_,igrid)
    xComin3=rnode(rpxmin3_,igrid)
    dxCo1=rnode(rpdx1_,igrid)
    dxCo2=rnode(rpdx2_,igrid)
    dxCo3=rnode(rpdx3_,igrid)

    if(stagger_grid) call old_neighbors(child_igrid,child_ipe,igrid,ipe)

    do ic3=1,2
       do ic2=1,2
          do ic1=1,2
             ichild=child_igrid(ic1,ic2,ic3)

             ixComin1=ixMlo1+(ic1-1)*block_nx1/2
             ixComin2=ixMlo2+(ic2-1)*block_nx2/2
             ixComin3=ixMlo3+(ic3-1)*block_nx3/2
             ixComax1=ixMhi1+(ic1-2)*block_nx1/2
             ixComax2=ixMhi2+(ic2-2)*block_nx2/2
             ixComax3=ixMhi3+(ic3-2)*block_nx3/2

             xFimin1=rnode(rpxmin1_,ichild)
             xFimin2=rnode(rpxmin2_,ichild)
             xFimin3=rnode(rpxmin3_,ichild)
             dxFi1=rnode(rpdx1_,ichild)
             dxFi2=rnode(rpdx2_,ichild)
             dxFi3=rnode(rpdx3_,ichild)
             call prolong_2nd(ps(igrid),ixComin1,ixComin2,ixComin3,ixComax1,ixComax2,&
                  ixComax3,ps(ichild), dxCo1,dxCo2,dxCo3,xComin1,xComin2,xComin3,dxFi1,&
                  dxFi2,dxFi3,xFimin1,xFimin2,xFimin3,igrid,ichild)
             !      call prolong_1st(ps(igrid)%w,ixComin1,ixComin2,ixComin3,ixComax1,ixComax2,&
             !         ixComax3,ps(ichild)%w,ps(ichild)%x)
          end do
       end do
    end do

    if (prolongprimitive) call phys_to_conserved(ixGlo1,ixGlo2,ixGlo3,ixGhi1,&
       ixGhi2,ixGhi3,ixmin1,ixmin2,ixmin3,ixmax1,ixmax2,ixmax3,ps(igrid)%w,&
       ps(igrid)%x)

  end subroutine prolong_grid