Pre-calculations

preCalc.f90

Description

This module is used to handle some pre-calculations of constants (moment of inertia, mass, volumes), determine the timesteps for I/O and fix boundary values for temperature/entropy and chemical composition

Quick access

Variables:

get_hit_times

Routines:

precalc(), precalctimes(), writeinfo()

Needed modules

Variables

  • precalculations/get_hit_times [private]

Subroutines and functions

subroutine  precalculations/precalc(tscheme)

Purpose of this subroutine is to initialize the calc values, arrays, constants that are used all over the code.

Parameters:

tscheme [real ]

Called from:

magic

Call to:

radial(), transportproperties(), horizontal(), rint_r(), abortrun(), logwrite()

subroutine  precalculations/precalctimes(time, n_time_step)

Precalc. after time, time and dt has been read from startfile.

Parameters:
  • time [real ,inout] :: Current time

  • n_time_step [integer ,inout] :: Index of time loop

Called from:

magic

subroutine  precalculations/writeinfo(n_out)

Purpose of this subroutine is to write the namelist to file unit n_out. This file has to be open before calling this routine.

Parameters:

n_out [integer ,in] :: Normalized OC surface :’’,ES14.6)’) surf_cmb

Called from:

magic

Call to:

abortrun()

radial.f90

Description

This module initiates all the radial functions (transport properties, density, temperature, cheb transforms, etc.)

Quick access

Variables:

alpha0, alpha1, alpha2, beta, cheb_ic, cheb_int, cheb_int_ic, cheb_norm_ic, chebt_ic, chebt_ic_even, d2cheb_ic, d2temp0, dbeta, dcheb_ic, ddbeta, ddlalpha0, ddltemp0, ddlvisc, dentropy0, divktemp0, dlalpha0, dlkappa, dllambda, dltemp0, dlvisc, dr_fac_ic, dr_top_ic, dxicond, epscprof, getbackground, getentropygradient, jvarcon, kappa, l_r, lambda, ndd_costf1, ndd_costf1_ic, ndd_costf2_ic, ndi_costf2_ic, o_r_ic, o_r_ic2, ogrun, or1, or2, or3, or4, orho1, orho2, otemp1, polynomialbackground, r, r_cmb, r_ic, r_icb, r_surface, rgrav, rho0, sigma, temp0, visc

Routines:

finalize_radial_functions(), initialize_radial_functions(), radial(), transportproperties()

Needed modules

Variables

  • radial_functions/alpha0 (*) [real,allocatable/public]

    d log (alpha) / dr

  • radial_functions/alpha1 [real,public]

    Input parameter for non-linear map to define degree of spacing (0.0:2.0)

  • radial_functions/alpha2 [real,public]

    Input parameter for non-linear map to define central point of different spacing (-1.0:1.0)

  • radial_functions/beta (*) [real,allocatable/public]

    Inverse of density scale height drho0/rho0

  • radial_functions/cheb_ic (*,*) [real,allocatable/public]

    Chebyshev polynomials for IC

  • radial_functions/cheb_int (*) [real,allocatable/public]

    Array for cheb integrals

  • radial_functions/cheb_int_ic (*) [real,allocatable/public]

    Array for integrals of cheb for IC

  • radial_functions/cheb_norm_ic [real,public]

    Chebyshev normalisation for IC

  • radial_functions/chebt_ic [costf_odd_t,public]
  • radial_functions/chebt_ic_even [costf_even_t,public]
  • radial_functions/d2cheb_ic (*,*) [real,allocatable/public]

    Second radial derivative cheb_ic

  • radial_functions/d2temp0 (*) [real,allocatable/private]

    Second rad. derivative of background temperature

  • radial_functions/dbeta (*) [real,allocatable/public]

    Radial gradient of beta

  • radial_functions/dcheb_ic (*,*) [real,allocatable/public]

    First radial derivative of cheb_ic

  • radial_functions/ddbeta (*) [real,allocatable/public]

    2nd derivative of beta

  • radial_functions/ddlalpha0 (*) [real,allocatable/public]

    \(d/dr(1/alpha d\alpha/dr)\)

  • radial_functions/ddltemp0 (*) [real,allocatable/public]

    \(d/dr(1/T dT/dr)\)

  • radial_functions/ddlvisc (*) [real,allocatable/public]

    2nd derivative of kinematic viscosity

  • radial_functions/dentropy0 (*) [real,allocatable/public]

    Radial gradient of background entropy

  • radial_functions/divktemp0 (*) [real,allocatable/public]

    Term for liquid anelastic approximation

  • radial_functions/dlalpha0 (*) [real,allocatable/public]

    \(1/\alpha d\alpha/dr\)

  • radial_functions/dlkappa (*) [real,allocatable/public]

    Derivative of thermal diffusivity

  • radial_functions/dllambda (*) [real,allocatable/public]

    Derivative of magnetic diffusivity

  • radial_functions/dltemp0 (*) [real,allocatable/public]

    Inverse of temperature scale height

  • radial_functions/dlvisc (*) [real,allocatable/public]

    Derivative of kinematic viscosity

  • radial_functions/dr_fac_ic [real,public]

    For IC: \(2/(2 r_i)\)

  • radial_functions/dr_top_ic (*) [real,allocatable/public]

    Derivative in real space for r=r_i

  • radial_functions/dxicond (*) [real,allocatable/public]

    Radial gradient of chemical composition

  • radial_functions/epscprof (*) [real,allocatable/public]

    Sources in heat equations

  • radial_functions/getbackground [private]

    ‘)

  • radial_functions/getentropygradient [private]
  • radial_functions/jvarcon (*) [real,allocatable/public]

    Analytical solution for toroidal field potential aj (see init_fields.f90)

  • radial_functions/kappa (*) [real,allocatable/public]

    Thermal diffusivity

  • radial_functions/l_r (*) [integer,allocatable/public]

    Variable degree with radius

  • radial_functions/lambda (*) [real,allocatable/public]

    Array of magnetic diffusivity

  • radial_functions/ndd_costf1 [integer,public]

    Radii for transform

  • radial_functions/ndd_costf1_ic [integer,private]

    Radii for transform

  • radial_functions/ndd_costf2_ic [integer,private]

    Radii for transform

  • radial_functions/ndi_costf2_ic [integer,private]

    Radii for transform

  • radial_functions/o_r_ic (*) [real,allocatable/public]

    Inverse of IC radii

  • radial_functions/o_r_ic2 (*) [real,allocatable/public]

    Inverse of square of IC radii

  • radial_functions/ogrun (*) [real,allocatable/public]

    \(1/\Gamma\)

  • radial_functions/or1 (*) [real,allocatable/public]

    \(1/r\)

  • radial_functions/or2 (*) [real,allocatable/public]

    \(1/r^2\)

  • radial_functions/or3 (*) [real,allocatable/public]

    \(1/r^3\)

  • radial_functions/or4 (*) [real,allocatable/public]

    \(1/r^4\)

  • radial_functions/orho1 (*) [real,allocatable/public]

    \(1/\tilde{\rho}\)

  • radial_functions/orho2 (*) [real,allocatable/public]

    \(1/\tilde{\rho}^2\)

  • radial_functions/otemp1 (*) [real,allocatable/public]

    Inverse of background temperature

  • radial_functions/polynomialbackground [private]
  • radial_functions/r (*) [real,allocatable/public]

    radii

  • radial_functions/r_cmb [real,public]

    OC radius

  • radial_functions/r_ic (*) [real,allocatable/public]

    IC radii

  • radial_functions/r_icb [real,public]

    IC radius

  • radial_functions/r_surface [real,public]

    Surface radius for extrapolation in units of (r_cmb-r_icb)

  • radial_functions/rgrav (*) [real,allocatable/public]

    Buoyancy term dtemp0/Di

  • radial_functions/rho0 (*) [real,allocatable/public]

    Inverse of background density

  • radial_functions/sigma (*) [real,allocatable/public]

    Electrical conductivity

  • radial_functions/temp0 (*) [real,allocatable/public]

    Background temperature

  • radial_functions/visc (*) [real,allocatable/public]

    Kinematic viscosity

Subroutines and functions

subroutine  radial_functions/initialize_radial_functions()

Initial memory allocation

Called from:

magic

subroutine  radial_functions/finalize_radial_functions()

Memory deallocation of radial functions

Called from:

magic

subroutine  radial_functions/radial()

Calculates everything needed for radial functions, transforms etc.

Called from:

precalc()

Call to:

logwrite(), cheb_grid(), get_chebs_even()

subroutine  radial_functions/transportproperties()

Calculates the transport properties: electrical conductivity, kinematic viscosity and thermal conductivity.

Called from:

precalc()

Call to:

abortrun()

horizontal.f90

Description

Module containing functions depending on longitude and latitude plus help arrays depending on degree and order

Quick access

Variables:

cosn_theta_e2, costheta, dlh, dphi, dpl0eq, dtheta1a, dtheta1s, dtheta2a, dtheta2s, dtheta3a, dtheta3s, dtheta4a, dtheta4s, gauss, hdif_b, hdif_s, hdif_v, hdif_xi, n_theta_cal2ord, n_theta_ord2cal, o_sin_theta, o_sin_theta_e2, phi, sintheta, sintheta_e2, theta_ord

Routines:

finalize_horizontal_data(), gauleg(), horizontal(), initialize_horizontal_data()

Needed modules

Variables

  • horizontal_data/cosn_theta_e2 (*) [real,allocatable/public]

    \(\cos\theta/\sin^2\theta\)

  • horizontal_data/costheta (*) [real,allocatable/public]

    \(\cos\theta\)

  • horizontal_data/dlh (*) [real,allocatable/public]

    \(\ell(\ell+1)\)

  • horizontal_data/dphi (*) [complex,allocatable/public]

    \(\mathrm{i} m\)

  • horizontal_data/dpl0eq (*) [real,allocatable/public]
  • horizontal_data/dtheta1a (*) [real,allocatable/public]
  • horizontal_data/dtheta1s (*) [real,allocatable/public]
  • horizontal_data/dtheta2a (*) [real,allocatable/public]
  • horizontal_data/dtheta2s (*) [real,allocatable/public]
  • horizontal_data/dtheta3a (*) [real,allocatable/public]
  • horizontal_data/dtheta3s (*) [real,allocatable/public]
  • horizontal_data/dtheta4a (*) [real,allocatable/public]
  • horizontal_data/dtheta4s (*) [real,allocatable/public]
  • horizontal_data/gauss (*) [real,allocatable/public]
  • horizontal_data/hdif_b (*) [real,allocatable/public]
  • horizontal_data/hdif_s (*) [real,allocatable/public]
  • horizontal_data/hdif_v (*) [real,allocatable/public]
  • horizontal_data/hdif_xi (*) [real,allocatable/public]
  • horizontal_data/n_theta_cal2ord (*) [integer,allocatable/public]
  • horizontal_data/n_theta_ord2cal (*) [integer,allocatable/public]
  • horizontal_data/o_sin_theta (*) [real,allocatable/public]

    \(1/\sin\theta\)

  • horizontal_data/o_sin_theta_e2 (*) [real,allocatable/public]

    \(1/\sin^2\theta\)

  • horizontal_data/phi (*) [real,allocatable/public]
  • horizontal_data/sintheta (*) [real,allocatable/public]

    \(\sin\theta\)

  • horizontal_data/sintheta_e2 (*) [real,allocatable/public]

    \(\sin^2\theta\)

  • horizontal_data/theta_ord (*) [real,allocatable/public]

    Gauss points (unscrambled)

Subroutines and functions

subroutine  horizontal_data/initialize_horizontal_data()

Memory allocation of horizontal functions

Called from:

magic

subroutine  horizontal_data/finalize_horizontal_data()

Memory deallocation of horizontal functions

Called from:

magic

Call to:

finalize_fft()

subroutine  horizontal_data/horizontal()

Calculates functions of \(\theta\) and \(\phi\), for example the Legendre functions, and functions of degree \(\ell\) and order \(m\) of the legendres.

Called from:

precalc()

Call to:

gauleg(), plm_theta(), init_fft()

subroutine  horizontal_data/gauleg(sinthmin, sinthmax, theta_ord, gauss)

Subroutine is based on a NR code. Calculates N zeros of legendre polynomial P(l=N) in the interval [sinThMin,sinThMax]. Zeros are returned in radiants theta_ord(i) The respective weights for Gauss-integration are given in gauss(i).

Parameters:
  • sinthmin [real ,in] :: lower bound in radiants

  • sinthmax [real ,in] :: upper bound in radiants

  • theta_ord (*) [real ,out] :: zeros cos(theta)

  • gauss (*) [real ,out] :: associated Gauss-Legendre weights

Called from:

horizontal(), initialize_transforms()