Payload update
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| double precision, | intent(in) | :: | xpart(1:ndir) | |||
| double precision, | intent(in) | :: | upart(1:ndir) | |||
| double precision, | intent(in) | :: | qpart | |||
| double precision, | intent(in) | :: | mpart | |||
| double precision, | intent(out) | :: | mypayload(mynpayload) | |||
| integer, | intent(in) | :: | mynpayload | |||
| double precision, | intent(in) | :: | particle_time |
subroutine advect_update_payload(igrid,xpart,upart,qpart,mpart,mypayload,& mynpayload,particle_time) use mod_global_parameters integer, intent(in) :: igrid,mynpayload double precision, intent(in) :: xpart(1:ndir),upart(1:ndir),qpart,mpart,& particle_time double precision, intent(out) :: mypayload(mynpayload) double precision :: rho, rho1, rho2, td td = (particle_time - global_time) / dt ! Payload 1 is density if (mynpayload > 0 ) then if (time_advance) then call interpolate_var(igrid,ixGlo1,ixGlo2,ixGlo3,ixGhi1,ixGhi2,ixGhi3,& ixMlo1,ixMlo2,ixMlo3,ixMhi1,ixMhi2,ixMhi3,& gridvars(igrid)%wold(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,& rhop),ps(igrid)%x,xpart,rho1) call interpolate_var(igrid,ixGlo1,ixGlo2,ixGlo3,ixGhi1,ixGhi2,ixGhi3,& ixMlo1,ixMlo2,ixMlo3,ixMhi1,ixMhi2,ixMhi3,& gridvars(igrid)%w(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,rhop),& ps(igrid)%x,xpart,rho2) rho = rho1 * (1.0d0 - td) + rho2 * td else call interpolate_var(igrid,ixGlo1,ixGlo2,ixGlo3,ixGhi1,ixGhi2,ixGhi3,& ixMlo1,ixMlo2,ixMlo3,ixMhi1,ixMhi2,ixMhi3,& gridvars(igrid)%w(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,rhop),& ps(igrid)%x,xpart,rho) end if mypayload(1) = rho * w_convert_factor(1) end if end subroutine advect_update_payload