PyREC scaffolding (from YREC development, 7be4133)/ oversh.fGlossary

oversh.f

179 lines · 1 definitions · on GitHub (7be4133)

Python version: oversh.py, 136 lines, on the right (switch to Python above the code).

Variables on this page (15)

alphac, alphae, alpham, betac, cln, iov1, iov2, ishort, json, linstb, lovmax, lovstc, lovste, lovstm, lrot

Purpose

Extends each convection zone by convective overshoot. Its comment: it "computes the local pressure scale height at both edges of a given convective region and locates the boundaries of overshoot regions based on the user-specified extent."

How it fits

  • Inputs: the model (HCOMP, HD, HP, HR, HS, HT, M), the convection zones MXZONE and MXZON0 (without overshoot) and NZONE; from NMLPAR_MOD the switches LOVSTC, LOVSTE, LOVSTM (core, envelope, intermediate zones), the extents ALPHAC, ALPHAE, ALPHAM (in pressure scale heights), LOVMAX with BETAC, and the flags LROT and LINSTB.
  • Who calls it: only CONVEC.
  • What it calls: HSUBP, the pressure scale height at a zone's edge.
  • Outputs: MXZONE with the new edges (CONVEC then merges zones that overshoot made overlap); IOV1, IOV2 in DPMIX_MOD ("store position of overshoot for adiabatic extension," DBG 8/94): the new and the formal lower edge of a zone overshooting downward. With LADOV, TPGRAD gives every radiative point with index IOVIM between them the adiabatic gradient, $\nabla = \nabla_\mathrm{ad}$ (IOVIM is the point being computed, set by COEFFT and PHYSIC). The zones with and without overshoot are printed to ISHORT, four to a line; more zones continue on new lines without the label, by Fortran's reuse of the format (lines 170–176↗).

The method

For each zone, by type:

  • Core (starts at the centre): overshoot upward by $d = \alpha_c H_p$; with LOVMAX, $d = \min(\alpha_c H_p,\ \beta_c\, r_\mathrm{edge})$, which limits overshoot above small convective cores "as per Woo & Demarque 2001." A fully convective star gets no overshoot: OVERSH has an exit for it that prints the first zone and returns (lines 70–76↗), but it is never reached, since CONVEC, its only caller, returns before calling OVERSH when one zone covers the whole star (convec.f, lines 131–138↗) (unused?).
  • Envelope (reaches the surface): downward by $\alpha_e H_p$.
  • Intermediate: both ways by $\alpha_m H_p$, each with the scale height at that edge.

Here $H_p = P r^2/(\rho\, G m)$ is the pressure scale height at the zone's formal (Schwarzschild) edge, from HSUBP, in cm, like $d$ and $r$. LOVMAX (off by default), which the documentation calls a test "to avoid pathologies in overshoot of small cores," caps the distance at $\beta_c r_\mathrm{edge}$ (BETAC, "maximum overshoot in fraction of physical size of core"). The new edge is the last model point within $d$ in radius of the formal edge: downward, the innermost point with $r \ge r_\mathrm{edge} - d$; upward, the outermost point with $r \le r_\mathrm{edge} + d$; or the centre or surface if $d$ reaches beyond. For rotating models with LINSTB, the zone is widened by one more point if overshoot moved no edge (MHP 11/91), so that each overshoot region has at least one radiative point.

From YREC's documentation

Physics Options (Convective mixing & overshoot): LOVSTC with ALPHAC overshoots convective cores, by ALPHAC pressure scale heights; unless LADOV is on, this is overmixing only and does not change the thermal structure. LOVMAX (checked only with LOVSTC) is an alternative test that avoids pathologies above small cores, limiting overshoot to the fraction BETAC (default 0.15) of the core's size. LOVSTE with ALPHAE overshoots the envelope; LOVSTM with ALPHAM overshoots intermediate convection zones above and below, which the documentation recommends leaving off ("needs to be checked"). All extents default to 0. LADOV is listed among the experimental options.

Definitions

subroutineOVERSH

lines 6–179 · GitHub

Moves each convection zone's edges by $\alpha H_p$ (core, envelope or intermediate parameters), optionally limited by $\beta_c r$ for convective cores.

Uses modules CONSTANTS_MOD, DIMENSIONS_MOD, DPMIX_MOD, IOUNITS_MOD, NMLPAR_MOD

Called by CONVEC

Flowchart of its calls, in order (4)
for I = 1,NZONE (DO 100), lines 63–170
if (MXZONE(I,1).EQ.1), lines 68–93
else if (MXZONE(I,2).EQ.M), lines 94–104

Change log

The changes since rp_1

Changed since rp_1. Declarations only: COMMON blocks to modules (the settings of /DPMIX/ and /ROT/ to NMLPAR_MOD, IOV1, IOV2 to DPMIX_MOD, /CONST1/ to CONSTANTS_MOD, /LUOUT/ to IOUNITS_MOD), JSON from DIMENSIONS_MOD, IMPLICIT NONE.