gravity_simple

Module

Description

$Id$

This module takes care of simple types of gravity, i.e. where

gx=gx(x) or gy=gy(y) or gz=gz(z)

Here the gravity master pencils gravx_xpencil, gravy_ypencil and gravz_zpencil only need to be calculated once, and then these can simply be added to the equations of motion again and again.

** AUTOMATIC CPARAM.INC GENERATION ************************ Declare (for generation of cparam.inc) the number of f array variables and auxiliary variables added by this module

CPARAM logical, parameter :: lgrav = .true.

MVAR CONTRIBUTION 0 MAUX CONTRIBUTION 0

PENCILS PROVIDED gg(3); epot


Quick access

Variables:

acceleration, acceleration_penc, acceleration_penc_1d, acceleration_point, accretor_grav, accretor_rsoft, accretor_speed, calc_diagnostics_gravity, cdt_accretor, cpot, cpot2, cs0hs, dgravx, dustbeta, enum_grav_type, enum_gravx_profile, enum_gravy_profile, enum_gravz_profile, enum_ipotential_secondary, enum_iramp_function, g0, g01, g4pi, g_a, g_a_cgs, g_a_factor, g_b, g_b_cgs, g_b_factor, g_c, g_c_cgs, g_c_factor, g_d, g_d_cgs, g_d_factor, g_e, g_e_cgs, g_e_factor, g_f, g_f_cgs, g_f_factor, g_ref, get_gravity_field, grav_amp, grav_tilt, grav_type, gravity_sphersym, gravx_xpencil, gravx_xpencil_0, gravy, gravy_profile, gravy_ypencil, gravz_const, gravz_zpencil, gsum, h0hs, idiag_epot, idiag_epotmx, idiag_epotmxy, idiag_epotmy, idiag_epotmz, idiag_epottot, idiag_epotuxmx, idiag_epotuxmxy, idiag_epotuzmz, idiag_fgravx, idiag_rgxm, idiag_rugm, idiag_torque, idiag_ugm, idiag_wgrav, indirect_plus_inertial_terms, interpolate_grav_profile, ipotential, ipotential_secondary, iramp_function, kaccretor, kappa_x1, kappa_x2, kappa_z1, kappa_z2, ky_gg, laccretor_peri, ladjust_sphersym, lboussinesq_grav, lcalc_zinfty, lcentrifugal_force_gravity, lconservative_gravity, lcoriolis_force_gravity, lgravity_dust, lgravity_gas, lgravity_neutrals, lindirect_terms, lnrho_bot, lnrho_top, lnumerical_equilibrium, lxyzdependence, mass_cent_body, n_adjust_sphersym, n_pot1, non_conservative_gravity, non_conservative_index, nux_epicycle, nux_epicycle2, pot_ratio, potential, potential_global, potential_penc, potential_point, potx_const, potx_xpencil, poty_const, poty_ypencil, potz_const, potz_zpencil, r1_pot1, rampup_secondary_mass, read_grav_profile, reduced_top, rgal, rp1_pot, rp1_smooth1, rpot, rsol, rsol_cgs, secondary_body_gravity, sphere_rad, ss_bot, ss_top, t1_ramp_mass, xdep, xgrav, xinfty, xref, ygrav, yinfty, z1, z2, zclip, zdep, zgrav, zinfty, zref

Routines:

addgravity(), calc_diagnostics_gravity(), calc_pencils_gravity(), compute_gravity_star(), get_xgravity(), gravity_after_boundary(), init_gg(), initialize_gravity(), is_constant_zgrav(), pencil_criteria_gravity(), pencil_interdep_gravity(), read_gravity_init_pars(), read_gravity_run_pars(), register_gravity(), rprint_gravity(), set_consistent_gravity(), write_gravity_init_pars(), write_gravity_run_pars()

Needed modules

Variables

  • gravity/acceleration [public]
  • gravity/acceleration_penc [private]
  • gravity/acceleration_penc_1d [private]
  • gravity/acceleration_point [private]
  • gravity/accretor_grav [real,private/optional/default=0.0]
  • gravity/accretor_rsoft [real,private/optional/default=0.0]
  • gravity/accretor_speed [real,private/optional/default=0.0]
  • gravity/cdt_accretor [real,private/optional/default=0.0]
  • gravity/cs0hs [real,private/optional/default=0.0]
  • gravity/dgravx [real,private/optional/default=0.0]
  • gravity/enum_grav_type [integer,private/optional/default=0]
  • gravity/enum_gravx_profile [integer,private/optional/default=0]
  • gravity/enum_gravy_profile [integer,private/optional/default=0]
  • gravity/enum_gravz_profile [integer,private/optional/default=0]
  • gravity/g0 [real,public/optional/default=0.0]
  • gravity/g4pi [real,private]
  • gravity/g_a [real,private]
  • gravity/g_a_cgs [real,private/parameter/optional/default=4.4e-09]
  • gravity/g_a_factor [real,private/optional/default=1.0]
  • gravity/g_b [real,private]
  • gravity/g_b_cgs [real,private/parameter/optional/default=6.172d20]
  • gravity/g_b_factor [real,private/optional/default=1.0]
  • gravity/g_c [real,private]
  • gravity/g_c_cgs [real,private/parameter/optional/default=1.7e-09]
  • gravity/g_c_factor [real,private/optional/default=1.0]
  • gravity/g_d [real,private]
  • gravity/g_d_cgs [real,private/parameter/optional/default=3.086d21]
  • gravity/g_d_factor [real,private/optional/default=1.0]
  • gravity/g_e [real,private]
  • gravity/g_e_cgs [real,private/parameter/optional/default=6.7892d20]
  • gravity/g_e_factor [real,private/optional/default=1.0]
  • gravity/g_f [real,private]
  • gravity/g_f_cgs [real,private/parameter/optional/default=1.512d22]
  • gravity/g_f_factor [real,private/optional/default=1.0]
  • gravity/g_ref [real,private/optional/default=0.0]
  • gravity/grav_amp [real,private/optional/default=0.0]
  • gravity/grav_tilt [real,private/optional/default=0.0]
  • gravity/grav_type [character,private/optional/default='default']
  • gravity/gravitational_const [real,private/optional/default=0.0]
  • gravity/gravity_sphersym [private]
  • gravity/gravx [real,private/optional/default=0.0]
  • gravity/gravx_profile [character,private/optional/default='zero']
  • gravity/gravx_xpencil (mx) [real,private/optional/default=0.0]
  • gravity/gravx_xpencil_0 (mx) [real,private]
  • gravity/gravy [real,private/optional/default=0.0]
  • gravity/gravy_profile [character,private/optional/default='zero']
  • gravity/gravy_ypencil (my) [real,private/optional/default=0.0]
  • gravity/gravz [real,public/optional/default=0.0]
  • gravity/gravz_const [real,public/optional/default=1.0]
  • gravity/gravz_profile [character,public/optional/default='zero']
  • gravity/gravz_zpencil (mz) [real,private/optional/default=0.0]
  • gravity/h0hs [real,private/optional/default=0.0]
  • gravity/idiag_epot [integer,private/optional/default=0]
  • gravity/idiag_epotmx [integer,private/optional/default=0]
  • gravity/idiag_epotmxy [integer,private/optional/default=0]
  • gravity/idiag_epotmy [integer,private/optional/default=0]
  • gravity/idiag_epotmz [integer,private/optional/default=0]
  • gravity/idiag_epottot [integer,private/optional/default=0]
  • gravity/idiag_epotuxmx [integer,private/optional/default=0]
  • gravity/idiag_epotuxmxy [integer,private/optional/default=0]
  • gravity/idiag_epotuzmz [integer,private/optional/default=0]
  • gravity/idiag_fgravx [integer,private/optional/default=0]
  • gravity/idiag_rgxm [integer,private/optional/default=0]
  • gravity/idiag_rugm [integer,private/optional/default=0]
  • gravity/idiag_ugm [integer,private/optional/default=0]
  • gravity/idiag_wgrav [integer,private/optional/default=0]
  • gravity/interpolate_grav_profile [private]
  • gravity/kaccretor [real,private]
  • gravity/kappa_x1 [real,private/optional/default=0.0]
  • gravity/kappa_x2 [real,private/optional/default=0.0]
  • gravity/kappa_z1 [real,private/optional/default=0.0]
  • gravity/kappa_z2 [real,private/optional/default=0.0]
  • gravity/kx_gg [real,private/optional/default=1.0]
  • gravity/ky_gg [real,private/optional/default=1.0]
  • gravity/kz_gg [real,private/optional/default=1.0]
  • gravity/laccretor_peri [logical,private/optional/default=.false.]
  • gravity/ladjust_sphersym [logical,private/optional/default=.false.]
  • gravity/lboussinesq_grav [logical,private/optional/default=.false.]
  • gravity/lcalc_zinfty [logical,private/optional/default=.false.]
  • gravity/lnrho_bot [real,public/optional/default=0.0]
  • gravity/lnrho_top [real,public/optional/default=0.0]
  • gravity/lnumerical_equilibrium [logical,public/optional/default=.false.]
  • gravity/lxyzdependence [logical,private/optional/default=.false.]
  • gravity/mass_cent_body [real,private/optional/default=0.0]
  • gravity/n_adjust_sphersym [integer,private/optional/default=0]
  • gravity/n_pot [integer,private/optional/default=10]
  • gravity/nu_epicycle [real,public/optional/default=1.0]
  • gravity/nu_epicycle2 [real,private/optional/default=1.0]
  • gravity/nux_epicycle [real,private/optional/default=0.0]
  • gravity/nux_epicycle2 [real,private/optional/default=0.0]
  • gravity/pot_ratio [real,private/optional/default=1.0]
  • gravity/potential [public]
  • gravity/potential_global [private]
  • gravity/potential_penc [private]
  • gravity/potential_point [private]
  • gravity/potx_const [real,private/optional/default=0.0]
  • gravity/potx_xpencil (mx) [real,private/optional/default=0.0]
  • gravity/poty_const [real,private/optional/default=0.0]
  • gravity/poty_ypencil (my) [real,private/optional/default=0.0]
  • gravity/potz_const [real,private/optional/default=0.0]
  • gravity/potz_zpencil (mz) [real,private/optional/default=0.0]
  • gravity/read_grav_profile [private]
  • gravity/reduced_top [real,public/optional/default=1.0]
  • gravity/reference_state (*,*) [real,private/pointer]
  • gravity/rgal [real,private/optional/default=impossible]
  • gravity/rsol [real,private/optional/default=impossible]
  • gravity/rsol_cgs [real,private/parameter/optional/default=2.6231e+22]
  • gravity/sphere_rad [real,private/optional/default=0.0]
  • gravity/ss_bot [real,public/optional/default=0.0]
  • gravity/ss_top [real,public/optional/default=0.0]
  • gravity/xdep (mx) [real,private/optional/default=0.0]
  • gravity/xgrav [real,private/optional/default=impossible]
  • gravity/xinfty [real,private/optional/default=0.0]
  • gravity/xref [real,private/optional/default=0.0]
  • gravity/ygrav [real,private/optional/default=impossible]
  • gravity/yinfty [real,private/optional/default=0.0]
  • gravity/z1 [real,public/optional/default=0.0]
  • gravity/z2 [real,public/optional/default=1.0]
  • gravity/zclip [real,private/optional/default=impossible]
  • gravity/zdep (mz) [real,private/optional/default=0.0]
  • gravity/zgrav [real,public/optional/default=impossible]
  • gravity/zinfty [real,public/optional/default=impossible]
  • gravity/zref [real,public/optional/default=impossible]

Subroutines and functions

subroutine  gravity/register_gravity()

Initialise gravity variables (currently none).

12-nov-04/anders: coded

Identify version number (generated automatically by SVN).

Use :

sharedvariables (put_shared_variable())

Call to:

svn_id(), warning(), fatal_error(), not_implemented(), calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), is_constant_zgrav()

subroutine  gravity/initialize_gravity(f)

Calculate master pencils for gravity. These are put into gravity pencils in the subroutine calc_pencils_grav.

12-nov-04/anders: coded, copied init conds from grav_x, grav_y and grav_y.
9-jun-15/MR: added parameter n_adjust_sphersym: if > 0 after each n_adjust_sphersym

timesteps the spherically symmetric part of gravity is adjusted according to the actual density distribution. Only in effect for spherical co-ordinates.

12-jun-15/MR: added (alternative) parameters gravitational_const and mass_cent_body for

gravity adjustment. For Kepler profile, gravitational_const is calculated from gravx and mass_cent_body.

Parameters:

f (mx,my,mz,mfarray) [real]

Use :

general (notanumber()), sub (cubic_step()), mpicomm (mpibcast_real(), mpi_comm_pencil()), sharedvariables (get_shared_variable())

Call to:

warning(), fatal_error(), not_implemented(), calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), is_constant_zgrav()

subroutine  gravity/set_consistent_gravity(ginput, gtype, gprofile, lsuccess)

This subroutine checks, if the gravity paramters as type, profile and values are set consistently with initial condition for example.

ginput = value for the gravity, GM : 4, 10, 200 gtype = type of gravity : ‘gravx’,’gravy’,’gravz’ gprofile = profile of the gravity : ‘kepler’,’const’ lsuccess = switch, if it was successful : .true., .false.

13-jun-12/dhruba+joern: coded

Parameters:
  • ginput [real]

  • gtype [character]

  • gprofile [character]

  • lsuccess [logical]

Call to:

fatal_error(), calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), not_implemented(), is_constant_zgrav()

subroutine  gravity/init_gg(f)

Initialise gravity; called from start.f90.

12-nov-04/anders: coded

Parameters:

f (mx,my,mz,mfarray) [real]

Call to:

calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/pencil_criteria_gravity()

All pencils that the Gravity module depends on are specified here.

20-nov-04/anders: coded 20-jan-15/MR: pencil request for rho1 added when reference_state is used

Call to:

calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/pencil_interdep_gravity(lpencil_in)

Interdependency among pencils from the Gravity module is specified here.

20-11-04/anders: coded

Parameters:

lpencil_in (npencils) [logical]

Call to:

calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/calc_pencils_gravity(f, p)

Calculate Gravity pencils. Most basic pencils should come first, as others may depend on them.

12-nov-04/anders: coded

Parameters:
Call to:

calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/addgravity(df, p)

Add gravitational acceleration to gas and dust.

The special option lboussinesq_grav=T is applicable when |z|/H << 1. However, in the present formulation the resulting equations, du/dt = -lnrho, and dlnrho/dt=-du/dz, lead to an instability with the growth rate lambda = (1+i)*sqrt(k/2).

12-nov-04/anders: coded

5-dec-06/petri: added Boussinesq approximation

20-jan-15/MR: changes for use of reference state

Parameters:
  • df (mx,my,mz,mvar) [real,inout]

  • p [pencil_case,in]

Call to:

calc_diagnostics_gravity(), integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/calc_diagnostics_gravity(p)
Parameters:

p [pencil_case,in]

Use :

diagnostics

Call to:

integrate_mn_name(), yzsum_mn_name_x(), xzsum_mn_name_y(), xysum_mn_name_z(), fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/gravity_after_boundary(f)

For actions outside mn-loop. At the moment only adjustment of spherically symmetric gravity.

9-jun-15/MR: coded

Parameters:

f (mx,my,mz,mfarray) [real]

Call to:

fatal_error(), not_implemented(), is_constant_zgrav()

subroutine  gravity/read_gravity_init_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

is_constant_zgrav()

subroutine  gravity/write_gravity_init_pars(unit)
Parameters:

unit [integer,in]

Call to:

is_constant_zgrav()

subroutine  gravity/read_gravity_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

is_constant_zgrav()

subroutine  gravity/write_gravity_run_pars(unit)
Parameters:

unit [integer,in]

Call to:

is_constant_zgrav()

subroutine  gravity/rprint_gravity(lreset[, lwrite])

Reads and registers print parameters relevant for gravity advance.

12-jun-04/axel: adapted from grav_z

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics (parse_name()), farraymanager (farray_index_append())

Call to:

is_constant_zgrav()

subroutine  gravity/compute_gravity_star(f, wheat, luminosity, star_cte)

5-jan-10/boris: coded

Parameters:
  • f (mx,my,mz,mfarray) [real]

  • wheat [real]

  • luminosity [real]

  • star_cte [real]

Call to:

is_constant_zgrav()

subroutine  gravity/get_xgravity(xgrav)

Used from the initial conditions

04-oct-10/bing: coded

Parameters:

xgrav (mx) [real]

Call to:

is_constant_zgrav()

function  gravity/is_constant_zgrav()

15-apr-15/MR: coded

Return:

is_constant_zgrav [logical]

subroutine  gravity/pushpars2c(p_par)
Parameters:

p_par (50) [integer]

Use :

syscalls (copy_addr()), general (pos_in_array(), string_to_enum())