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
97 ixgext^
l=ixg^
ll^ladd1;
105 if(.not.
allocated(ps(igrid)%w))
then
110 call alloc_state_coarse(igrid, psc(igrid), ixcog^
l, ixcog^
l)
131 ps(igrid)%level=level
132 psc(igrid)%level=level-1
133 if(
phys_trac) ps(igrid)%special_values=0.d0
135 ps1(igrid)%level=level
138 ps2(igrid)%level=level
140 ps2(igrid)%level=level
141 ps3(igrid)%level=level
143 ps2(igrid)%level=level
144 ps3(igrid)%level=level
145 ps4(igrid)%level=level
172 {
do ix=ixmhi^d-nghostcells+1,ixghi^d
173 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmax^d_,igrid)+(dble(ix-ixmhi^d)-half)*dx^d
176 ^d&dx^d=2.0d0*rnode(rpdx^d_,igrid)\
177 {
do ix=ixcogmin^d,ixcogmax^d
178 psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmin^d_,igrid)+(dble(ix-nghostcells)-half)*dx^d
181 ^d&ps(igrid)%dx(ixgext^s,^d)=rnode(rpdx^d_,igrid);
182 ^d&psc(igrid)%dx(ixcog^s,^d)=2.0d0*rnode(rpdx^d_,igrid);
183 ^d&dx^d=rnode(rpdx^d_,igrid)\
184 {
do ix=ixgextmin^d,ixgextmax^d
185 xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)+(dble(ix-nghostcells)-half)*dx^d
188 if(any(stretched_dim))
then
189 {
if(stretch_type(^d) == stretch_uni)
then
190 imin=(ig^d-1)*block_nx^d
192 rnode(rpxmin^d_,igrid)=xprobmin^d+dxfirst_1mq(level,^d) &
193 *(1.0d0-qstretch(level,^d)**imin)
194 rnode(rpxmax^d_,igrid)=xprobmin^d+dxfirst_1mq(level,^d) &
195 *(1.0d0-qstretch(level,^d)**imax)
197 if(rnode(rpxmax^d_,igrid)>xprobmax^d) rnode(rpxmax^d_,igrid)=xprobmax^d
198 ixshift=(ig^d-1)*block_nx^d-nghostcells
199 do ix=ixgextmin^d,ixgextmax^d
201 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(index-1)
204 ixshift=igco^d*block_nx^d+(1-modulo(ig^d,2))*block_nx^d/2-nghostcells
205 do ix=ixcogmin^d,ixcogmax^d
207 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(index-1)
208 psc(igrid)%x(ix^d%ixCoG^s,^d)=xprobmin^d+dxfirst_1mq(level-1,^d)&
209 *(1.0d0-qstretch(level-1,^d)**(index-1))&
210 + 0.5d0*dxfirst(level-1,^d)*qstretch(level-1,^d)**(index-1)
216 do ix=ixmlo^d,ixmhi^d
217 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
218 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
222 do ix=nghostcells,1,-1
223 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
224 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
228 do ix=ixghi^d-nghostcells+1,ixghi^d
229 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
230 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
235 xext(ixgext^s,^d)=ps(igrid)%x(ixgext^s,^d)
239 do ix=ixmlo^d,ixmhi^d
240 xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
241 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
245 do ix=nghostcells,ixgextmin^d,-1
246 xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
247 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
251 do ix=ixghi^d-nghostcells+1,ixgextmax^d
252 xext(ix^d%ixGext^s,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
253 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
256 call mpistop(
"no such case")
259 {
if(stretch_type(^d) == stretch_symm)
then
265 if(ig^d<=nstretchedblocks(level,^d)/2)
then
267 offset=block_nx^d*nstretchedblocks(level,^d)/2
268 imin=(ig^d-1)*block_nx^d
270 rnode(rpxmin^d_,igrid)=xprobmin^d+xstretch^d-dxfirst_1mq(level,^d) &
271 *(1.0d0-qstretch(level,^d)**(offset-imin))
272 rnode(rpxmax^d_,igrid)=xprobmin^d+xstretch^d-dxfirst_1mq(level,^d) &
273 *(1.0d0-qstretch(level,^d)**(offset-imax))
275 if(rnode(rpxmin^d_,igrid)<xprobmin^d) rnode(rpxmin^d_,igrid)=xprobmin^d
276 ixshift=(ig^d-1)*block_nx^d-nghostcells
277 do ix=ixgextmin^d,ixgextmax^d
279 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(offset-index)
281 ixshift=(nstretchedblocks(level,^d)/2-ig^d)*(block_nx^d/2)+block_nx^d/2+nghostcells
282 do ix=ixcogmin^d,ixcogmax^d
284 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**index
287 if(ig^d==nstretchedblocks(level,^d)/2)
then
288 if(ng^d(level)==nstretchedblocks(level,^d))
then
290 do ix=ixghi^d-nghostcells+1,ixgextmax^d
291 ps(igrid)%dx(ix^d%ixGext^s,^d)= &
292 ps(igrid)%dx(2*(ixghi^d-nghostcells)+1-ix^d%ixGext^s,^d)
294 do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
295 psc(igrid)%dx(ix^d%ixCoG^s,^d)= &
296 psc(igrid)%dx(2*(ixcogmax^d-nghostcells)+1-ix^d%ixCoG^s,^d)
300 do ix=ixghi^d-nghostcells+1,ixgextmax^d
301 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxmid(level,^d)
303 do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
304 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxmid(level-1,^d)
310 do ix=ixgextmin^d,nghostcells
311 ps(igrid)%dx(ix^d%ixGext^s,^d)=ps(igrid)%dx(2*nghostcells+1-ix^d%ixGext^s,^d)
314 psc(igrid)%dx(ix^d%ixCoG^s,^d)=psc(igrid)%dx(2*nghostcells+1-ix^d%ixCoG^s,^d)
318 if(ig^d<=ng^d(level)-nstretchedblocks(level,^d)/2)
then
320 ps(igrid)%dx(ixgext^s,^d)=dxmid(level,^d)
321 psc(igrid)%dx(ixcog^s,^d)=dxmid(level-1,^d)
322 rnode(rpxmin^d_,igrid)=xprobmin^d+xstretch^d+(ig^d-nstretchedblocks(level,^d)/2-1)*block_nx^d*dxmid(level,^d)
323 rnode(rpxmax^d_,igrid)=xprobmin^d+xstretch^d+(ig^d-nstretchedblocks(level,^d)/2) *block_nx^d*dxmid(level,^d)
325 if(ig^d==nstretchedblocks(level,^d)/2+1)
then
326 do ix=ixgextmin^d,nghostcells
327 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(nghostcells-ix)
330 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(nghostcells-ix)
333 if(ig^d==ng^d(level)-nstretchedblocks(level,^d))
then
334 do ix=ixghi^d-nghostcells+1,ixgextmax^d
335 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(ix-block_nx^d-nghostcells-1)
337 do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
338 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(ix-ixcogmax^d+nghostcells-1)
343 offset=block_nx^d*(ng^d(level)-nstretchedblocks(level,^d)/2)
344 sizeuniformpart^d=dxmid(1,^d)*(domain_nx^d-nstretchedblocks_baselevel(^d)*block_nx^d)
345 imin=(ig^d-1)*block_nx^d-offset
346 imax=ig^d*block_nx^d-offset
347 rnode(rpxmin^d_,igrid)=xprobmin^d+xstretch^d+sizeuniformpart^d+dxfirst_1mq(level,^d) &
348 *(1.0d0-qstretch(level,^d)**imin)
349 rnode(rpxmax^d_,igrid)=xprobmin^d+xstretch^d+sizeuniformpart^d+dxfirst_1mq(level,^d) &
350 *(1.0d0-qstretch(level,^d)**imax)
352 if(rnode(rpxmax^d_,igrid)>xprobmax^d) rnode(rpxmax^d_,igrid)=xprobmax^d
353 ixshift=(ig^d-1)*block_nx^d-nghostcells-offset
354 do ix=ixgextmin^d,ixgextmax^d
356 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxfirst(level,^d)*qstretch(level,^d)**(index-1)
358 ixshift=(ig^d+nstretchedblocks(level,^d)/2-ng^d(level)-1)*(block_nx^d/2)-nghostcells
359 do ix=ixcogmin^d,ixcogmax^d
361 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxfirst(level-1,^d)*qstretch(level-1,^d)**(index-1)
364 if(ig^d==ng^d(level)-nstretchedblocks(level,^d)+1)
then
365 if(ng^d(level)==nstretchedblocks(level,^d))
then
367 do ix=ixgextmin^d,nghostcells
368 ps(igrid)%dx(ix^d%ixGext^s,^d)=ps(igrid)%dx(2*nghostcells+1-ix^d%ixGext^s,^d)
371 psc(igrid)%dx(ix^d%ixCoG^s,^d)=psc(igrid)%dx(2*nghostcells+1-ix^d%ixCoG^s,^d)
375 do ix=ixgextmin^d,nghostcells
376 ps(igrid)%dx(ix^d%ixGext^s,^d)=dxmid(level,^d)
379 psc(igrid)%dx(ix^d%ixCoG^s,^d)=dxmid(level-1,^d)
384 if(ig^d==ng^d(level))
then
385 do ix=ixghi^d-nghostcells+1,ixgextmax^d
386 ps(igrid)%dx(ix^d%ixGext^s,^d)=ps(igrid)%dx(2*(ixghi^d-nghostcells)+1-ix^d%ixGext^s,^d)
388 do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
389 psc(igrid)%dx(ix^d%ixCoG^s,^d)=psc(igrid)%dx(2*(ixcogmax^d-nghostcells)+1-ix^d%ixCoG^s,^d)
398 do ix=ixmlo^d,ixmhi^d
399 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
400 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
404 do ix=nghostcells,1,-1
405 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
406 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
410 do ix=ixghi^d-nghostcells+1,ixghi^d
411 ps(igrid)%x(ix^d%ixG^t,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixG^t,^d)
412 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
417 do ix=nghostcells+1,ixcogmax^d-nghostcells
418 psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*psc(igrid)%dx(ix^d%ixCoG^s,^d)
419 summeddx=summeddx+psc(igrid)%dx(ix^d%ifirst,^d)
423 do ix=nghostcells,1,-1
424 psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*psc(igrid)%dx(ix^d%ixCoG^s,^d)
425 summeddx=summeddx+psc(igrid)%dx(ix^d%ifirst,^d)
429 do ix=ixcogmax^d-nghostcells+1,ixcogmax^d
430 psc(igrid)%x(ix^d%ixCoG^s,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*psc(igrid)%dx(ix^d%ixCoG^s,^d)
431 summeddx=summeddx+psc(igrid)%dx(ix^d%ifirst,^d)
436 xext(ixgext^s,^d)=ps(igrid)%x(ixgext^s,^d)
440 do ix=ixmlo^d,ixmhi^d
441 xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
442 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
446 do ix=nghostcells,ixgextmin^d,-1
447 xext(ix^d%ixGext^s,^d)=rnode(rpxmin^d_,igrid)-summeddx-0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
448 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
452 do ix=ixghi^d-nghostcells+1,ixgextmax^d
453 xext(ix^d%ixGext^s,^d)=rnode(rpxmax^d_,igrid)+summeddx+0.5d0*ps(igrid)%dx(ix^d%ixGext^s,^d)
454 summeddx=summeddx+ps(igrid)%dx(ix^d%ifirst,^d)
457 call mpistop(
"no such case")
463 call get_surface_area(ps(igrid),ixg^ll)
465 call get_surface_area(psc(igrid),ixcog^l)
468 select case (coordinate)
470 ps(igrid)%dvolume(ixgext^s)= {^d&rnode(rpdx^d_,igrid)|*}
471 ps(igrid)%ds(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
472 ps(igrid)%dsC(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
473 psc(igrid)%dvolume(ixcog^s)= {^d&2.d0*rnode(rpdx^d_,igrid)|*}
474 psc(igrid)%ds(ixcog^s,1:ndim)=psc(igrid)%dx(ixcog^s,1:ndim)
475 case (cartesian_stretched)
476 ps(igrid)%dvolume(ixgext^s)= {^d&ps(igrid)%dx(ixgext^s,^d)|*}
477 ps(igrid)%ds(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
478 ps(igrid)%dsC(ixgext^s,1:ndim)=ps(igrid)%dx(ixgext^s,1:ndim)
479 psc(igrid)%dvolume(ixcog^s)= {^d&psc(igrid)%dx(ixcog^s,^d)|*}
480 psc(igrid)%ds(ixcog^s,1:ndim)=psc(igrid)%dx(ixcog^s,1:ndim)
481 case (cartesian_expansion)
483 delx_ext(ixgext^s) = ps(igrid)%dx(ixgext^s,1)
484 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))
485 ps(igrid)%dvolume(ixgext^s)= exp_factor_primitive_ext(ixgext^s)
486 ps(igrid)%ds(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
487 ps(igrid)%dsC(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
488 xc(ixcog^s) = psc(igrid)%x(ixcog^s,1)
489 delxc(ixcog^s) = psc(igrid)%dx(ixcog^s,1)
490 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))
491 psc(igrid)%dvolume(ixcog^s)= exp_factor_primitive_coarse(ixcog^s)
492 psc(igrid)%ds(ixcog^s,1)=psc(igrid)%dx(ixcog^s,1)
495 ps(igrid)%dvolume(ixgext^s)=(xext(ixgext^s,1)**2 &
496 +ps(igrid)%dx(ixgext^s,1)**2/12.0d0)*&
497 ps(igrid)%dx(ixgext^s,1){^nooned &
498 *two*dabs(dsin(xext(ixgext^s,2))) &
499 *dsin(half*ps(igrid)%dx(ixgext^s,2))}{^ifthreed*ps(igrid)%dx(ixgext^s,3)}
500 psc(igrid)%dvolume(ixcog^s)=(psc(igrid)%x(ixcog^s,1)**2 &
501 +psc(igrid)%dx(ixcog^s,1)**2/12.0d0)*&
502 psc(igrid)%dx(ixcog^s,1){^nooned &
503 *two*dabs(dsin(psc(igrid)%x(ixcog^s,2))) &
504 *dsin(half*psc(igrid)%dx(ixcog^s,2))}{^ifthreed*psc(igrid)%dx(ixcog^s,3)}
505 ps(igrid)%ds(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
506 {^nooned ps(igrid)%ds(ixgext^s,2)=xext(ixgext^s,1)*ps(igrid)%dx(ixgext^s,2)}
507 {^ifthreed ps(igrid)%ds(ixgext^s,3)=xext(ixgext^s,1)*dabs(dsin(xext(ixgext^s,2)))*&
508 ps(igrid)%dx(ixgext^s,3)}
509 ps(igrid)%dsC(ixgext^s,1)=ps(igrid)%dx(ixgext^s,1)
510 {^nooned ps(igrid)%dsC(ixgext^s,2)=(xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1))*&
511 ps(igrid)%dx(ixgext^s,2)
513 ps(igrid)%dsC(ixgext^s,3)=(xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1))*&
514 dabs(dsin(xext(ixgext^s,2)+half*ps(igrid)%dx(ixgext^s,2)))
517 {^ifthreed ps(igrid)%dsC(ixgext^s,3)=(xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1))*&
518 dabs(dsin(xext(ixgext^s,2)+half*ps(igrid)%dx(ixgext^s,2)))*&
519 ps(igrid)%dx(ixgext^s,3)}
521 ps(igrid)%dvolume(ixgext^s)=dabs(xext(ixgext^s,1)) &
522 *ps(igrid)%dx(ixgext^s,1){^de&*ps(igrid)%dx(ixgext^s,^de) }
523 psc(igrid)%dvolume(ixcog^s)=dabs(psc(igrid)%x(ixcog^s,1)) &
524 *psc(igrid)%dx(ixcog^s,1){^de&*psc(igrid)%dx(ixcog^s,^de) }
525 ps(igrid)%ds(ixgext^s,r_)=ps(igrid)%dx(ixgext^s,r_)
526 ps(igrid)%dsC(ixgext^s,r_)=ps(igrid)%dx(ixgext^s,r_)
527 if(z_>0.and.z_<=ndim)
then
528 ps(igrid)%ds(ixgext^s,z_)=ps(igrid)%dx(ixgext^s,z_)
529 ps(igrid)%dsC(ixgext^s,z_)=ps(igrid)%dx(ixgext^s,z_)
530 if(phi_>z_.and.ndir>ndim)
then
531 ps(igrid)%dsC(ixgext^s,phi_)=xext(ixgext^s,1)+half*ps(igrid)%dx(ixgext^s,1)
534 if(phi_>0.and.phi_<=ndim)
then
535 ps(igrid)%ds(ixgext^s,phi_)=dabs(xext(ixgext^s,1))*ps(igrid)%dx(ixgext^s,phi_)
536 ps(igrid)%dsC(ixgext^s,phi_)=dabs(xext(ixgext^s,1)+&
537 half*ps(igrid)%dx(ixgext^s,1))*ps(igrid)%dx(ixgext^s,phi_)
538 if(z_>phi_.and.ndir>ndim) ps(igrid)%dsC(ixgext^s,z_)=1.d0
541 call mpistop(
"Sorry, coordinate unknown")
545 if (b0field)
call set_b0_grid(igrid)
546 if (number_equi_vars>0)
call phys_set_equi_vars(igrid)
549 ps(igrid)%is_physical_boundary=.false.
556 if (periodb(^d)) ign^d=1+modulo(ign^d-1,ng^d(level))
557 if (ign^d > ng^d(level))
then
558 if(phi_ > 0 .and. poleb(2,^d))
then
560 ps(igrid)%is_physical_boundary(2*^d)=.false.
562 ps(igrid)%is_physical_boundary(2*^d)=.true.
564 else if (ign^d < 1)
then
565 if(phi_ > 0 .and. poleb(1,^d))
then
567 ps(igrid)%is_physical_boundary(2*^d-1)=.false.
569 ps(igrid)%is_physical_boundary(2*^d-1)=.true.
574 if(any(ps(igrid)%is_physical_boundary))
then
575 phyboundblock(igrid)=.true.
577 phyboundblock(igrid)=.false.