phys_get_dt Subroutine

private subroutine phys_get_dt(w, x, dx, dtnew)

Uses

    • mod_usr
  • proc~~phys_get_dt~3~~UsesGraph proc~phys_get_dt~3 phys_get_dt mod_usr mod_usr proc~phys_get_dt~3->mod_usr

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: w(nw_phys)
real(kind=dp), intent(in) :: x(1:ndim)
real(kind=dp), intent(in) :: dx(1:ndim)
real(kind=dp), intent(out) :: dtnew

Calls

proc~~phys_get_dt~3~~CallsGraph proc~phys_get_dt~3 phys_get_dt gravity_field gravity_field proc~phys_get_dt~3->gravity_field

Called by

proc~~phys_get_dt~3~~CalledByGraph proc~phys_get_dt~3 phys_get_dt proc~setdt~3 setdt proc~setdt~3->proc~phys_get_dt~3

Source Code

  subroutine phys_get_dt(w, x, dx, dtnew)
  use mod_usr, only: gravity_field
  
    real(dp), intent(in)   :: w(nw_phys), x(1:ndim), dx(1:ndim)
    real(dp), intent(out)  :: dtnew
    ! .. local ..
    integer                :: idim
    real(dp)               :: field

    dtnew = huge(1.0d0)
    
    do idim = 1, ndim
       field = gravity_field(w, x, idim)
       field = max( abs(field), epsilon(1.0d0) )
       dtnew = min( dtnew, 1_dp / sqrt( field/dx(idim) ) )
    end do
    
  end subroutine phys_get_dt