prolong one block
| Type | Intent | Optional | 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 |
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