68    integer, 
intent(in) :: igrid
 
   70    double precision :: 
dx^
d, summeddx, sizeuniformpart^
d 
   72    double precision :: delx_ext(ixglo1-1:ixghi1+1)
 
   73    double precision :: exp_factor_ext(ixglo1-1:ixghi1+1),del_exp_factor_ext(ixglo1-1:ixghi1+1),exp_factor_primitive_ext(ixglo1-1:ixghi1+1)
 
   74    double precision :: xc(ixglo1:ixghi1),delxc(ixglo1:ixghi1)
 
   75    double precision :: exp_factor_coarse(ixglo1:ixghi1),del_exp_factor_coarse(ixglo1:ixghi1),exp_factor_primitive_coarse(ixglo1:ixghi1)
 
   76    integer :: level, ig^
d, ign^
d, ixcog^
l, ix, i^
d 
   77    integer :: imin, imax, index, igco^
d, ixshift, offset, ifirst
 
   78    integer :: icase, ixgext^
l 
   92        ixgext^
l=ixg^
ll^ladd1;
 
  100    if(.not. 
allocated(ps(igrid)%w)) 
then 
  105      call alloc_state_coarse(igrid, psc(igrid), ixcog^
l, ixcog^
l)
 
  126    ps(igrid)%level=level
 
  127    psc(igrid)%level=level-1
 
  128    if(
phys_trac) ps(igrid)%special_values=0.d0
 
  130      ps1(igrid)%level=level
 
  133        ps2(igrid)%level=level
 
  135        ps2(igrid)%level=level
 
  136        ps3(igrid)%level=level
 
  138        ps2(igrid)%level=level
 
  139        ps3(igrid)%level=level
 
  140        ps4(igrid)%level=level
 
  167   {
do ix=ixmhi^d-nghostcells+1,ixghi^d
 
  168      ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmax^d_,igrid)+(dble(ix-ixmhi^d)-half)*dx^d
 
  171    ^d&dx^d=2.0d0*rnode(rpdx^d_,igrid)\
 
  172   {
do ix=ixcogmin^d,ixcogmax^d
 
  173      psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmin^d_,igrid)+(dble(ix-nghostcells)-half)*dx^d
 
  176    ^d&ps(igrid)%dx(ixgext^s,^d)=rnode(rpdx^d_,igrid);
 
  177    ^d&psc(igrid)%dx(ixcog^s,^d)=2.0d0*rnode(rpdx^d_,igrid);
 
  178    ^d&dx^d=rnode(rpdx^d_,igrid)\
 
  179   {
do ix=ixgextmin^d,ixgextmax^d
 
  180      xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)+(dble(ix-nghostcells)-half)*dx^d
 
  183    if(any(stretched_dim)) 
then 
  184     {
if(stretch_type(^d) == stretch_uni)
then 
  185        imin=(ig^d-1)*block_nx^d
 
  187        rnode(rpxmin^d_,igrid)=xprobmin^d+dxfirst_1mq(level,^d) &
 
  188                     *(1.0d0-qstretch(level,^d)**imin)
 
  189        rnode(rpxmax^d_,igrid)=xprobmin^d+dxfirst_1mq(level,^d) &
 
  190                     *(1.0d0-qstretch(level,^d)**imax)
 
  192        if(rnode(rpxmax^d_,igrid)>xprobmax^d) rnode(rpxmax^d_,igrid)=xprobmax^d
 
  193        ixshift=(ig^d-1)*block_nx^d-nghostcells
 
  194        do ix=ixgextmin^d,ixgextmax^d
 
  196          ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(index-1)
 
  199        ixshift=igco^d*block_nx^d+(1-modulo(ig^d,2))*block_nx^d/2-nghostcells
 
  200        do ix=ixcogmin^d,ixcogmax^d
 
  202          psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(index-1)
 
  203          psc(igrid)%x(ix^d%ixCoG^s,^d)=xprobmin^d+dxfirst_1mq(level-1,^d)&
 
  204                                  *(1.0d0-qstretch(level-1,^d)**(index-1))&
 
  205                      + 0.5d0*dxfirst(level-1,^d)*qstretch(level-1,^d)**(index-1)
 
  211        do ix=ixmlo^d,ixmhi^d
 
  212          ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
 
  213          summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  217        do ix=nghostcells,1,-1
 
  218          ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
 
  219          summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  223        do ix=ixghi^d-nghostcells+1,ixghi^d
 
  224          ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
 
  225          summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  230            xext(ixgext^s,^d)=ps(igrid)%x(ixgext^s,^d)
 
  234            do ix=ixmlo^d,ixmhi^d
 
  235              xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
 
  236             summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  240            do ix=nghostcells,ixgextmin^d,-1
 
  241              xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
 
  242              summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  246            do ix=ixghi^d-nghostcells+1,ixgextmax^d
 
  247               xext(ix^d%ixGext^s,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
 
  248               summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  251            call mpistop(
"no such case")
 
  254      {
if(stretch_type(^d) == stretch_symm)
then 
  260         if(ig^d<=nstretchedblocks(level,^d)/2)
then 
  262           offset=block_nx^d*nstretchedblocks(level,^d)/2
 
  263           imin=(ig^d-1)*block_nx^d
 
  265           rnode(rpxmin^d_,igrid)=xprobmin^d+xstretch^d-dxfirst_1mq(level,^d) &
 
  266                                      *(1.0d0-qstretch(level,^d)**(offset-imin))
 
  267           rnode(rpxmax^d_,igrid)=xprobmin^d+xstretch^d-dxfirst_1mq(level,^d) &
 
  268                                      *(1.0d0-qstretch(level,^d)**(offset-imax))
 
  270           if(rnode(rpxmin^d_,igrid)<xprobmin^d) rnode(rpxmin^d_,igrid)=xprobmin^d
 
  271           ixshift=(ig^d-1)*block_nx^d-nghostcells
 
  272           do ix=ixgextmin^d,ixgextmax^d
 
  274             ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(offset-index)
 
  276           ixshift=(nstretchedblocks(level,^d)/2-ig^d)*(block_nx^d/2)+block_nx^d/2+nghostcells
 
  277           do ix=ixcogmin^d,ixcogmax^d
 
  279             psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**index
 
  282           if(ig^d==nstretchedblocks(level,^d)/2)
then 
  283             if(ng^d(level)==nstretchedblocks(level,^d))
then 
  285               do ix=ixghi^d-nghostcells+1,ixgextmax^d
 
  286                  ps(igrid)%dx(ix^d%ixGext^s,^d)= &
 
  287                  ps(igrid)%dx(2*(ixghi^d-nghostcells)+1-ix^d%ixGext^s,^d)
 
  289               do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
 
  290                  psc(igrid)%dx(ix^d%ixCoG^s,^d)= &
 
  291                  psc(igrid)%dx(2*(ixcogmax^d-nghostcells)+1-ix^d%ixCoG^s,^d)
 
  295               do ix=ixghi^d-nghostcells+1,ixgextmax^d
 
  296                  ps(igrid)%dx(ix^d%ixGext^s,^d)=dxmid(level,^d)
 
  298               do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
 
  299                  psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxmid(level-1,^d)
 
  305             do ix=ixgextmin^d,nghostcells
 
  306               ps(igrid)%dx(ix^d%ixGext^s,^d)=ps(igrid)%dx(2*nghostcells+1-ix^d%ixGext^s,^d)
 
  309               psc(igrid)%dx(ix^d%ixCoG^s,^d)=psc(igrid)%dx(2*nghostcells+1-ix^d%ixCoG^s,^d)
 
  313           if(ig^d<=ng^d(level)-nstretchedblocks(level,^d)/2) 
then 
  315             ps(igrid)%dx(ixgext^s,^d)=dxmid(level,^d)
 
  316             psc(igrid)%dx(ixcog^s,^d)=dxmid(level-1,^d)
 
  317             rnode(rpxmin^d_,igrid)=xprobmin^d+xstretch^d+(ig^d-nstretchedblocks(level,^d)/2-1)*block_nx^d*dxmid(level,^d)
 
  318             rnode(rpxmax^d_,igrid)=xprobmin^d+xstretch^d+(ig^d-nstretchedblocks(level,^d)/2)  *block_nx^d*dxmid(level,^d)
 
  320             if(ig^d==nstretchedblocks(level,^d)/2+1)
then 
  321               do ix=ixgextmin^d,nghostcells
 
  322                 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(nghostcells-ix)
 
  325                 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(nghostcells-ix)
 
  328             if(ig^d==ng^d(level)-nstretchedblocks(level,^d))
then 
  329               do ix=ixghi^d-nghostcells+1,ixgextmax^d
 
  330                 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(ix-block_nx^d-nghostcells-1)
 
  332               do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
 
  333                 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(ix-ixcogmax^d+nghostcells-1)
 
  338             offset=block_nx^d*(ng^d(level)-nstretchedblocks(level,^d)/2)
 
  339             sizeuniformpart^d=dxmid(1,^d)*(domain_nx^d-nstretchedblocks_baselevel(^d)*block_nx^d)
 
  340             imin=(ig^d-1)*block_nx^d-offset
 
  341             imax=ig^d*block_nx^d-offset
 
  342             rnode(rpxmin^d_,igrid)=xprobmin^d+xstretch^d+sizeuniformpart^d+dxfirst_1mq(level,^d) &
 
  343                                     *(1.0d0-qstretch(level,^d)**imin)
 
  344             rnode(rpxmax^d_,igrid)=xprobmin^d+xstretch^d+sizeuniformpart^d+dxfirst_1mq(level,^d) &
 
  345                                     *(1.0d0-qstretch(level,^d)**imax)
 
  347             if(rnode(rpxmax^d_,igrid)>xprobmax^d) rnode(rpxmax^d_,igrid)=xprobmax^d
 
  348             ixshift=(ig^d-1)*block_nx^d-nghostcells-offset
 
  349             do ix=ixgextmin^d,ixgextmax^d
 
  351               ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(index-1)
 
  353             ixshift=(ig^d+nstretchedblocks(level,^d)/2-ng^d(level)-1)*(block_nx^d/2)-nghostcells
 
  354             do ix=ixcogmin^d,ixcogmax^d
 
  356               psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(index-1)
 
  359             if(ig^d==ng^d(level)-nstretchedblocks(level,^d)+1)
then 
  360               if(ng^d(level)==nstretchedblocks(level,^d))
then 
  362                 do ix=ixgextmin^d,nghostcells
 
  363                   ps(igrid)%dx(ix^d%ixGext^s,^d)=ps(igrid)%dx(2*nghostcells+1-ix^d%ixGext^s,^d)
 
  366                   psc(igrid)%dx(ix^d%ixCoG^s,^d)=psc(igrid)%dx(2*nghostcells+1-ix^d%ixCoG^s,^d)
 
  370                 do ix=ixgextmin^d,nghostcells
 
  371                   ps(igrid)%dx(ix^d%ixGext^s,^d)=dxmid(level,^d)
 
  374                   psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxmid(level-1,^d)
 
  379             if(ig^d==ng^d(level))
then 
  380               do ix=ixghi^d-nghostcells+1,ixgextmax^d
 
  381                 ps(igrid)%dx(ix^d%ixGext^s,^d)=ps(igrid)%dx(2*(ixghi^d-nghostcells)+1-ix^d%ixGext^s,^d)
 
  383               do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
 
  384                 psc(igrid)%dx(ix^d%ixCoG^s,^d)=psc(igrid)%dx(2*(ixcogmax^d-nghostcells)+1-ix^d%ixCoG^s,^d)
 
  393         do ix=ixmlo^d,ixmhi^d
 
  394           ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
 
  395           summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  399         do ix=nghostcells,1,-1
 
  400           ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
 
  401           summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  405         do ix=ixghi^d-nghostcells+1,ixghi^d
 
  406           ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
 
  407           summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  412         do ix=nghostcells+1,ixcogmax^d-nghostcells
 
  413           psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*psc(igrid)%dx(ix^d%ixCoG^s,^d)
 
  414           summeddx=summeddx+psc(igrid)%dx(ix^d%ifirst,^d)
 
  418         do ix=nghostcells,1,-1
 
  419           psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*psc(igrid)%dx(ix^d%ixCoG^s,^d)
 
  420           summeddx=summeddx+psc(igrid)%dx(ix^d%ifirst,^d)
 
  424         do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
 
  425           psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*psc(igrid)%dx(ix^d%ixCoG^s,^d)
 
  426           summeddx=summeddx+psc(igrid)%dx(ix^d%ifirst,^d)
 
  431             xext(ixgext^s,^d)=ps(igrid)%x(ixgext^s,^d)
 
  435             do ix=ixmlo^d,ixmhi^d
 
  436               xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
 
  437              summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  441             do ix=nghostcells,ixgextmin^d,-1
 
  442               xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
 
  443               summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  447            do ix=ixghi^d-nghostcells+1,ixgextmax^d
 
  448               xext(ix^d%ixGext^s,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
 
  449               summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
 
  452             call mpistop(
"no such case")
 
  458    call get_surface_area(ps(igrid),ixg^ll)
 
  460    call get_surface_area(psc(igrid),ixcog^l)
 
  463    select case (coordinate)
 
  465        ps(igrid)%dvolume(ixgext^s)= {^d&rnode(rpdx^d_,igrid)|*}
 
  466        ps(igrid)%ds(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
 
  467        ps(igrid)%dsC(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
 
  468        psc(igrid)%dvolume(ixcog^s)= {^d&2.d0*rnode(rpdx^d_,igrid)|*}
 
  469        psc(igrid)%ds(ixcog^s,1:ndim)=psc(igrid)%dx(ixcog^s,1:ndim)
 
  470      case (cartesian_stretched)
 
  471        ps(igrid)%dvolume(ixgext^s)= {^d&ps(igrid)%dx(ixgext^s,^d)|*}
 
  472        ps(igrid)%ds(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
 
  473        ps(igrid)%dsC(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
 
  474        psc(igrid)%dvolume(ixcog^s)= {^d&psc(igrid)%dx(ixcog^s,^d)|*}
 
  475        psc(igrid)%ds(ixcog^s,1:ndim)=psc(igrid)%dx(ixcog^s,1:ndim)
 
  476      case (cartesian_expansion)
 
  478        delx_ext(ixgext^s) = ps(igrid)%dx(ixgext^s,1)
 
  479        if(
associated(usr_set_surface)) 
call usr_set_surface(ixgext^l,xext(ixgext^s,1),delx_ext(ixgext^s),exp_factor_ext(ixgext^s),del_exp_factor_ext(ixgext^s),exp_factor_primitive_ext(ixgext^s))
 
  480        ps(igrid)%dvolume(ixgext^s)= exp_factor_primitive_ext(ixgext^s)
 
  481        ps(igrid)%ds(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
 
  482        ps(igrid)%dsC(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
 
  483        xc(ixcog^s) = psc(igrid)%x(ixcog^s,1)
 
  484        delxc(ixcog^s) = psc(igrid)%dx(ixcog^s,1)
 
  485        if(
associated(usr_set_surface)) 
call usr_set_surface(ixcog^l,xc(ixcog^s),delxc(ixcog^s),exp_factor_coarse(ixcog^s),del_exp_factor_coarse(ixcog^s),exp_factor_primitive_coarse(ixcog^s))
 
  486        psc(igrid)%dvolume(ixcog^s)= exp_factor_primitive_coarse(ixcog^s)
 
  487        psc(igrid)%ds(ixcog^s,1)=psc(igrid)%dx(ixcog^s,1)
 
  490        ps(igrid)%dvolume(ixgext^s)=(xext(ixgext^s,1)**2 &
 
  491                                  +ps(igrid)%dx(ixgext^s,1)**2/12.0d0)*&
 
  492                ps(igrid)%dx(ixgext^s,1){^nooned &
 
  493               *two*dabs(dsin(xext(ixgext^s,2))) &
 
  494               *dsin(half*ps(igrid)%dx(ixgext^s,2))}{^ifthreed*ps(igrid)%dx(ixgext^s,3)}
 
  495        psc(igrid)%dvolume(ixcog^s)=(psc(igrid)%x(ixcog^s,1)**2 &
 
  496                                         +psc(igrid)%dx(ixcog^s,1)**2/12.0d0)*&
 
  497                psc(igrid)%dx(ixcog^s,1){^nooned &
 
  498               *two*dabs(dsin(psc(igrid)%x(ixcog^s,2))) &
 
  499               *dsin(half*psc(igrid)%dx(ixcog^s,2))}{^ifthreed*psc(igrid)%dx(ixcog^s,3)}
 
  500        ps(igrid)%ds(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
 
  501        {^nooned   ps(igrid)%ds(ixgext^s,2)=xext(ixgext^s,1)*ps(igrid)%dx(ixgext^s,2)}
 
  502        {^ifthreed ps(igrid)%ds(ixgext^s,3)=xext(ixgext^s,1)*dsin(xext(ixgext^s,2))*&
 
  503                                            ps(igrid)%dx(ixgext^s,3)}
 
  504        ps(igrid)%dsC(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
 
  505        {^nooned   ps(igrid)%dsC(ixgext^s,2)=(xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1))*&
 
  506                                            ps(igrid)%dx(ixgext^s,2)
 
  508          ps(igrid)%dsC(ixgext^s,3)=(xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1))*&
 
  509                                         dsin(xext(ixgext^s,2)+half*ps(igrid)%dx(ixgext^s,2))
 
  512        {^ifthreed ps(igrid)%dsC(ixgext^s,3)=(xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1))*&
 
  513                                         dsin(xext(ixgext^s,2)+half*ps(igrid)%dx(ixgext^s,2))*&
 
  514                                         ps(igrid)%dx(ixgext^s,3)}
 
  516        ps(igrid)%dvolume(ixgext^s)=dabs(xext(ixgext^s,1)) &
 
  517             *ps(igrid)%dx(ixgext^s,1){^de&*ps(igrid)%dx(ixgext^s,^de) }
 
  518        psc(igrid)%dvolume(ixcog^s)=dabs(psc(igrid)%x(ixcog^s,1)) &
 
  519             *psc(igrid)%dx(ixcog^s,1){^de&*psc(igrid)%dx(ixcog^s,^de) }
 
  520        ps(igrid)%ds(ixgext^s,r_)=ps(igrid)%dx(ixgext^s,r_)
 
  521        ps(igrid)%dsC(ixgext^s,r_)=ps(igrid)%dx(ixgext^s,r_)
 
  522        if(z_>0.and.z_<=ndim) 
then 
  523          ps(igrid)%ds(ixgext^s,z_)=ps(igrid)%dx(ixgext^s,z_)
 
  524          ps(igrid)%dsC(ixgext^s,z_)=ps(igrid)%dx(ixgext^s,z_)
 
  525          if(phi_>z_.and.ndir>ndim) 
then 
  526            ps(igrid)%dsC(ixgext^s,phi_)=xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1)
 
  529        if(phi_>0.and.phi_<=ndim) 
then 
  530          ps(igrid)%ds(ixgext^s,phi_)=xext(ixgext^s,1)*ps(igrid)%dx(ixgext^s,phi_)
 
  531          ps(igrid)%dsC(ixgext^s,phi_)=(xext(ixgext^s,1)+&
 
  532                     half*ps(igrid)%dx(ixgext^s,1))*ps(igrid)%dx(ixgext^s,phi_)
 
  533          if(z_>phi_.and.ndir>ndim) ps(igrid)%dsC(ixgext^s,z_)=1.d0
 
  536        call mpistop(
"Sorry, coordinate unknown")
 
  540    if (b0field) 
call set_b0_grid(igrid)
 
  541    if (number_equi_vars>0) 
call phys_set_equi_vars(igrid)
 
  544    ps(igrid)%is_physical_boundary=.false.
 
  551      if (periodb(^d)) ign^d=1+modulo(ign^d-1,ng^d(level))
 
  552      if (ign^d > ng^d(level)) 
then 
  553         if(phi_ > 0 .and. poleb(2,^d)) 
then 
  555           ps(igrid)%is_physical_boundary(2*^d)=.false.
 
  557           ps(igrid)%is_physical_boundary(2*^d)=.true.
 
  559      else if (ign^d < 1) 
then 
  560         if(phi_ > 0 .and. poleb(1,^d)) 
then 
  562           ps(igrid)%is_physical_boundary(2*^d-1)=.false.
 
  564           ps(igrid)%is_physical_boundary(2*^d-1)=.true.
 
  569    if(any(ps(igrid)%is_physical_boundary)) 
then 
  570      phyboundblock(igrid)=.true.
 
  572      phyboundblock(igrid)=.false.