process is a user entry in time loop, before output and advance allows to modify solution, add extra variables, etc. Warning: CFL dt already determined (and is not recomputed)!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iit | |||
| double precision, | intent(in) | :: | qt |
subroutine process(iit,qt) use mod_usr_methods, only: usr_process_grid, usr_process_global use mod_global_parameters use mod_geometry, only: sync_positions_host use mod_ghostcells_update use mod_physics, only: phys_req_diagonal ! .. scalars .. integer,intent(in) :: iit double precision, intent(in):: qt integer:: iigrid, igrid if (associated(usr_process_global)) then call usr_process_global(iit,qt) end if if (associated(usr_process_grid)) then ! usr_process_grid reads ps(igrid)%x on the host call sync_positions_host() do iigrid=1,igridstail; igrid=igrids(iigrid); ! next few lines ensure correct usage of routines like divvector etc dxlevel(1)=rnode(rpdx1_,igrid);dxlevel(2)=rnode(rpdx2_,igrid) dxlevel(3)=rnode(rpdx3_,igrid); block=>ps(igrid) call usr_process_grid(igrid,node(plevel_,igrid),ixGlo1,ixGlo2,ixGlo3,& ixGhi1,ixGhi2,ixGhi3,ixMlo1,ixMlo2,ixMlo3,ixMhi1,ixMhi2,ixMhi3, qt,& ps(igrid)%w,ps(igrid)%x) end do call getbc(qt,dt,ps,iwstart,nwgc,phys_req_diagonal) end if end subroutine process