store_edge Subroutine

public subroutine store_edge(igrid, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, fE, idimmin, idimmax)

Uses

  • proc~~store_edge~~UsesGraph proc~store_edge store_edge module~mod_global_parameters mod_global_parameters proc~store_edge->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

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: igrid
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
double precision, intent(in) :: fE(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,sdim:3)
integer, intent(in) :: idimmin
integer, intent(in) :: idimmax

Called by

proc~~store_edge~~CalledByGraph proc~store_edge store_edge proc~fake_advance fake_advance proc~fake_advance->proc~store_edge proc~recalculateb recalculateB proc~recalculateb->proc~fake_advance proc~improve_initial_condition improve_initial_condition proc~improve_initial_condition->proc~recalculateb proc~main main proc~main->proc~improve_initial_condition program~agile agile program~agile->proc~main

Source Code

   subroutine store_edge(igrid,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3,&
      fE,idimmin,idimmax)
     use mod_global_parameters

     integer, intent(in)          :: igrid, ixImin1,ixImin2,ixImin3,ixImax1,&
        ixImax2,ixImax3, idimmin,idimmax
     double precision, intent(in) :: fE(ixImin1:ixImax1,ixImin2:ixImax2,&
        ixImin3:ixImax3,sdim:3)

     integer :: idims, idir, iside, i1,i2,i3
     integer :: pi1,pi2,pi3, mi1,mi2,mi3, ph1,ph2,ph3, mh1,mh2,mh3 !To detect corners
     integer :: ixMcmin1,ixMcmin2,ixMcmin3,ixMcmax1,ixMcmax2,ixMcmax3

     !!do idims = idimmin,idimmax  !loop over face directions
     !!  !! Loop over block faces
     !!  do iside=1,2
     !!    i1=kr(1,idims)*(2*iside-3);i2=kr(2,idims)*(2*iside-3)
     !!    i3=kr(3,idims)*(2*iside-3);
     !!    if (neighbor_pole(i1,i2,i3,igrid)/=0) cycle
     !!    select case (neighbor_type(i1,i2,i3,igrid))
     !!    case (neighbor_fine)
     !!      ! The neighbour is finer
     !!      ! Face direction, side (left or right), restrict ==ired?, fE
     !!      call flux_to_edge(igrid,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,&
     !!         ixImax3,idims,iside,.false.,fE)
     !!    case(neighbor_coarse)
     !!      ! The neighbour is coarser
     !!      call flux_to_edge(igrid,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,&
     !!         ixImax3,idims,iside,.true.,fE)
     !!    case(neighbor_sibling)
     !!      ! If the neighbour is at the same level,
     !!      ! check if there are corners
     !!      ! If there is any corner, store the fluxes from that side
     !!      do idir=idims+1,ndim
     !!        pi1=i1+kr(idir,1);pi2=i2+kr(idir,2);pi3=i3+kr(idir,3);
     !!        mi1=i1-kr(idir,1);mi2=i2-kr(idir,2);mi3=i3-kr(idir,3);
     !!        ph1=pi1-kr(idims,1)*(2*iside-3);ph2=pi2-kr(idims,2)*(2*iside-3)
     !!        ph3=pi3-kr(idims,3)*(2*iside-3);
     !!        mh1=mi1-kr(idims,1)*(2*iside-3);mh2=mi2-kr(idims,2)*(2*iside-3)
     !!        mh3=mi3-kr(idims,3)*(2*iside-3);
     !!        if (neighbor_type(pi1,pi2,pi3,igrid)==4.and.neighbor_type(ph1,ph2,&
     !!           ph3,igrid)==3) then
     !!          call flux_to_edge(igrid,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,&
     !!             ixImax3,idims,iside,.false.,fE)
     !!        end if
     !!        if (neighbor_type(mi1,mi2,mi3,igrid)==4.and.neighbor_type(mh1,mh2,&
     !!           mh3,igrid)==3) then
     !!          call flux_to_edge(igrid,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,&
     !!             ixImax3,idims,iside,.false.,fE)
     !!        end if
     !!      end do
     !!    end select
     !!  end do
     !!end do

   end subroutine store_edge