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
cdata: $Id$general(keep_compiler_quiet()): $Id$messages: $Id$
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/gravy [real,private/optional/default=0.0]
- gravity/gravy_profile [character,private/optional/default='zero']
- 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/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/poty_const [real,private/optional/default=0.0]
- gravity/potz_const [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/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/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).
- 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:
- 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
- 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
- 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
- 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
- subroutine gravity/calc_diagnostics_gravity(p)
- Parameters:
p [pencil_case,in]
- Use :
- 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:
- Call to:
- subroutine gravity/read_gravity_init_pars(iomsg)
- Parameters:
iomsg [character,out]
- Use :
- Call to:
- subroutine gravity/write_gravity_init_pars(unit)
- Parameters:
unit [integer,in]
- Call to:
- subroutine gravity/read_gravity_run_pars(iomsg)
- Parameters:
iomsg [character,out]
- Use :
- Call to:
- subroutine gravity/write_gravity_run_pars(unit)
- Parameters:
unit [integer,in]
- Call to:
- 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:
- subroutine gravity/compute_gravity_star(f, wheat, luminosity, star_cte)
5-jan-10/boris: coded
- Parameters:
- Call to:
- subroutine gravity/get_xgravity(xgrav)
Used from the initial conditions
04-oct-10/bing: coded
- Parameters:
xgrav (mx) [real]
- Call to:
- 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())