extern_corotate

Module

Description

Implementation of external forces needed to perform

simulations in a corotating frame (i.e. coriolis & centrifugal forces)

Kinetic energy is 0.5*(v + Omega x r)^2

= 0.5*v^2 + v.(Omega x r) + 0.5*(Omega x r)^2

References:

e.g. Tong (2015) classical dynamics lecture notes

Owner:

Daniel Price

Runtime parameters:
  • companion_mass : mass of companion

  • companion_xpos : x-position of companion

  • hsoft : softening radius of companion gravity

  • icompanion_grav : 1=add companion potential, 2=add companion and primary core potential

  • omega_corotate : angular speed of corotating frame

  • primarycore_hsoft : softening radius of primary core

  • primarycore_mass : mass of primary

  • primarycore_xpos : x-position of primary

Dependencies:

infile_utils, io, kernel, physcon, vectorutils

Quick access

Variables:

companion_mass, companion_xpos, get_omega, hsoft, icompanion_grav, omega_corotate, primarycore_hsoft, primarycore_mass, primarycore_xpos

Routines:

get_centrifugal_force(), get_companion_force(), get_coriolis_force(), read_options_corotate(), update_coriolis(), write_options_corotate()

Variables

  • extern_corotate/companion_mass [real,public/optional/default=1.0]
  • extern_corotate/companion_xpos [real,public/optional/default=1.0]
  • extern_corotate/get_omega [private]
  • extern_corotate/hsoft [real,public/optional/default=1.0]
  • extern_corotate/icompanion_grav [integer,public/optional/default=0]
  • extern_corotate/omega_corotate [real,public/optional/default=1.0]
  • extern_corotate/primarycore_hsoft [real,public/optional/default=1.0]
  • extern_corotate/primarycore_mass [real,public/optional/default=1.0]
  • extern_corotate/primarycore_xpos [real,public/optional/default=1.0]

Subroutines and functions

subroutine  extern_corotate/get_centrifugal_force(r, fextxi, fextyi, fextzi, phi)
Parameters:
  • r (3) [real,in]

  • fextxi [real,inout]

  • fextyi [real,inout]

  • fextzi [real,inout]

  • phi [real,inout]

Use :

vectorutils (cross_product3d())

Called from:

test_corotate()

Call to:

cross_product3d()

subroutine  extern_corotate/get_coriolis_force(r, vel, f_cor, poti)
Parameters:
  • r (3) [real,in]

  • vel (3) [real,in]

  • f_cor (3) [real,out]

  • poti [real,inout]

Use :

vectorutils (cross_product3d())

Called from:

test_corotate()

Call to:

cross_product3d()

subroutine  extern_corotate/update_coriolis(vhalfx, vhalfy, vhalfz, fxi, fyi, fzi, vcrossomega, dkdt)
Parameters:
  • vhalfx [real,in]

  • vhalfy [real,in]

  • vhalfz [real,in]

  • fxi [real,inout]

  • fyi [real,inout]

  • fzi [real,inout]

  • vcrossomega (3) [real,out]

  • dkdt [real,in]

Use :

vectorutils (cross_product3d(), matrixinvert3d()), io (fatal())

Call to:

matrixinvert3d(), cross_product3d()

subroutine  extern_corotate/get_companion_force(r, fextxi, fextyi, fextzi, phi)
Parameters:
  • r (3) [real,in]

  • fextxi [real,inout]

  • fextyi [real,inout]

  • fextzi [real,inout]

  • phi [real,inout]

Use :

kernel (kernel_softening())

subroutine  extern_corotate/write_options_corotate(iunit)
Parameters:

iunit [integer,in]

Use :

infile_utils (write_inopt())

subroutine  extern_corotate/read_options_corotate(name, valstring, imatch, igotall, ierr)
Parameters:
  • name [character,in]

  • valstring [character,in]

  • imatch [logical,out]

  • igotall [logical,out]

  • ierr [integer,out]

Use :

io (fatal()), physcon (pi())