advect_update_payload Subroutine

private subroutine advect_update_payload(igrid, xpart, upart, qpart, mpart, mypayload, mynpayload, particle_time)

Uses

  • proc~~advect_update_payload~~UsesGraph proc~advect_update_payload advect_update_payload module~mod_global_parameters mod_global_parameters proc~advect_update_payload->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Payload update

Arguments

Type IntentOptional 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

Calls

proc~~advect_update_payload~~CallsGraph proc~advect_update_payload advect_update_payload proc~interpolate_var interpolate_var proc~advect_update_payload->proc~interpolate_var proc~mpistop mpistop proc~interpolate_var->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Called by

proc~~advect_update_payload~~CalledByGraph proc~advect_update_payload advect_update_payload proc~advect_create_particles advect_create_particles proc~advect_create_particles->proc~advect_update_payload proc~advect_integrate_particles advect_integrate_particles proc~advect_integrate_particles->proc~advect_update_payload proc~particles_create particles_create proc~particles_create->proc~advect_create_particles proc~main main proc~main->proc~particles_create program~agile agile program~agile->proc~main

Source Code

  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