phys_get_dt Subroutine

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

Uses

  • proc~~phys_get_dt~2~~UsesGraph proc~phys_get_dt~2 phys_get_dt mod_usr mod_usr proc~phys_get_dt~2->mod_usr module~mod_global_parameters mod_global_parameters proc~phys_get_dt~2->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

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~2~~CallsGraph proc~phys_get_dt~2 phys_get_dt gravity_field gravity_field proc~phys_get_dt~2->gravity_field

Called by

proc~~phys_get_dt~2~~CalledByGraph proc~phys_get_dt~2 phys_get_dt proc~setdt~2 setdt proc~setdt~2->proc~phys_get_dt~2

Source Code

  subroutine phys_get_dt(w, x, dx, dtnew)
  use mod_usr, only: gravity_field
  use mod_global_parameters, only: dtdiffpar
  
  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
    
    do idim = 1,ndim
       dtnew=min(dtnew, dtdiffpar*dx(idim)**2/mhd_eta)
    enddo

  end subroutine phys_get_dt