subroutine forcedrefine_grid() use mod_usr, only: usr_refine_grid use mod_forest, only: coarsen, refine use mod_global_parameters integer :: igrid, iigrid integer :: level logical :: refineflag, coarsenflag, norefineflag, nocoarsenflag double precision :: qt integer :: ix1, ix2, ix3 if (time_advance) then qt=global_time+dt else qt=global_time end if do iigrid=1,igridstail; igrid=igrids(iigrid); level=node(plevel_,igrid) refineflag = .false. coarsenflag = .true. norefineflag = .true. nocoarsenflag = .false. do ix3 = ixMlo3, ixMhi3 do ix2 = ixMlo2, ixMhi2 do ix1 = ixMlo1, ixMhi1 call usr_refine_grid(level,qt, & bg(1)%w(ix1, ix2, ix3, :, igrid), bgeo%x(ix1, ix2, ix3, :, igrid), & refineflag, coarsenflag, norefineflag, nocoarsenflag) end do end do end do if (coarsenflag) then if (level>1) then refine(igrid,mype)=.false. coarsen(igrid,mype)=.true. else refine(igrid,mype)=.false. coarsen(igrid,mype)=.false. end if end if if (nocoarsenflag) then coarsen(igrid,mype)=.false. end if if (refineflag) then if (level<refine_max_level) then refine(igrid,mype)=.true. coarsen(igrid,mype)=.false. else refine(igrid,mype)=.false. coarsen(igrid,mype)=.false. end if end if if (norefineflag) then refine(igrid,mype)=.false. end if end do end subroutine forcedrefine_grid