vplanet

Contents

vplanet.c

The main entry point for the code. All the magic starts here.

Author

Rory Barnes (RoryBarnes)

Date

May 7 2014

Functions

int main_impl(int argc, char *argv[])

Actual implementation of the main function; called from in int main() below. We need this wrapper so we can call main_impl from Python.

int main(int argc, char *argv[])

Variables

const double dHUGE = DBL_MAX
const double dTINY = 1. / DBL_MAX

vplanet.h

The main entry point for the code. All the magic starts here.

Author

Rory Barnes (RoryBarnes)

Date

May 7 2014

Defines

M_PI
EQTIDE

Top-level declarations

RADHEAT
ATMESC
DISTORB
DISTROT
STELLAR
THERMINT
POISE
FLARE
BINARY
GALHABIT
SPINBODY
DISTRES
MAGMOC
BIGG
PI
KGAUSS
EPS
AUM
AUPC
LIGHTSPEED
MEARTH
MSUN
RSUN
YEARSEC
DAYSEC
REARTH
RJUP
RNEP
MNEP
RHOEARTH
eEARTH
MJUP
YEARDAY
MSAT
DEGRAD
TOMASS
ATOMMASS
OXYMASS
PROTONMASS
SIGMA
RGAS
KBOLTZ
ALPHA_STRUCT
U_RADIANS
U_DEGREES
U_METER
U_CENTIMETER
U_KILOMETER
U_SOLARRADIUS
U_EARTHRADIUS
U_JUPRADIUS
U_AU
U_GRAM
U_KILOGRAM
U_SOLARMASS
U_EARTHMASS
U_JUPITERMASS
U_NEPTUNEMASS
U_KELVIN
U_CELSIUS
U_FARENHEIT
U_SECOND
U_DAY
U_YEAR
U_MYR
U_GYR
OPTLEN
OPTDESCR
OPTLONDESCR
LINE
NAMELEN
MAXFILES
MAXARRAY
NUMOPT
MAXLINES
OUTLEN
OUTDESCR
OUTLONDESCR
MODULEOPTEND
MODULEOUTEND

Typedefs

typedef struct BODY BODY
typedef struct CONTROL CONTROL
typedef struct EVOLVE EVOLVE
typedef struct FILES FILES
typedef struct HALT HALT
typedef struct INFILE INFILE
typedef struct IO IO
typedef struct MODULE MODULE
typedef struct OPTIONS OPTIONS
typedef struct OUTFILE OUTFILE
typedef struct OUTPUT OUTPUT
typedef struct SYSTEM SYSTEM
typedef struct UNITS UNITS
typedef struct UPDATE UPDATE
typedef struct VERIFY VERIFY
typedef double (*fnLaplaceFunction)(double, int)
typedef void (*fnBodyCopyModule)(BODY*, BODY*, int, int, int)
typedef double (*fnUpdateVariable)(BODY*, SYSTEM*, int*)
typedef void (*fnPropsAuxModule)(BODY*, EVOLVE*, IO*, UPDATE*, int)
typedef void (*fnForceBehaviorModule)(BODY*, MODULE*, EVOLVE*, IO*, SYSTEM*, UPDATE*, fnUpdateVariable***, int, int)
typedef int (*fnHaltModule)(BODY*, EVOLVE*, HALT*, IO*, UPDATE*, fnUpdateVariable***, int)
typedef void (*fnReadOption)(BODY*, CONTROL*, FILES*, OPTIONS*, SYSTEM*, int)
typedef void (*fnWriteOutput)(BODY*, CONTROL*, OUTPUT*, SYSTEM*, UNITS*, UPDATE*, int, double*, char**)
typedef void (*fnInitializeOptions)(OPTIONS*, fnReadOption*)
typedef void (*fnInitializeBodyModule)(BODY*, CONTROL*, UPDATE*, int, int)
typedef void (*fnInitializeControlModule)(CONTROL*, int)
typedef void (*fnInitializeOptionsModule)(OPTIONS*, fnReadOption*)
typedef void (*fnInitializeUpdateModule)(BODY*, UPDATE*, int)
typedef void (*fnInitializeUpdateTmpBodyModule)(BODY*, CONTROL*, UPDATE*, int)
typedef void (*fnFinalizeUpdateVelXModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateVelYModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateVelZModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdatePositionXModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdatePositionYModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdatePositionZModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate26AlNumCoreModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate26AlNumManModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate40KNumCoreModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate40KNumCrustModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate40KNumManModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate232ThNumCoreModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate232ThNumCrustModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate232ThNumManModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate235UNumCoreModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate235UNumCrustModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate235UNumManModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate238UNumCoreModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate238UNumCrustModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdate238UNumManModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCBPRModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCBPZModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCBPRDotModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCBPPhiModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCBPZDotModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCBPPhiDotModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateDynEllipModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateEnvelopeMassModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateHeccModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateIceMassModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateKeccModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateLuminosityModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateLXUVModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateMassModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdatePincModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateQincModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateRadiusModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateRadGyraModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateRotModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateSemiModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateSurfaceWaterMassModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateOxygenMassModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateOxygenMantleMassModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateTemperatureModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateTCoreModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateTManModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateXoblModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateYoblModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateZoblModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateEccXModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateEccYModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateEccZModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateAngMXModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateAngMYModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateAngMZModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateMeanLModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateLostAngMomModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateLostEngModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateWaterMassMOAtmModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateWaterMassSolModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateSurfTempModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdatePotTempModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateSolidRadiusModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateOxygenMassMOAtmModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateOxygenMassSolModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateHydrogenMassSpaceModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateOxygenMassSpaceModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCO2MassMOAtmModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnFinalizeUpdateCO2MassSolModule)(BODY*, UPDATE*, int*, int, int, int)
typedef void (*fnReadOptionsModule)(BODY*, CONTROL*, FILES*, OPTIONS*, SYSTEM*, fnReadOption*, int)
typedef void (*fnVerifyModule)(BODY*, CONTROL*, FILES*, OPTIONS*, OUTPUT*, SYSTEM*, UPDATE*, int, int)
typedef void (*fnManageModuleDerivatives)(BODY*, EVOLVE*, UPDATE*, fnUpdateVariable***, int)
typedef void (*fnVerifyHaltModule)(BODY*, CONTROL*, OPTIONS*, int, int*)
typedef void (*fnCountHaltsModule)(HALT*, int*)
typedef void (*fnInitializeOutputModule)(OUTPUT*, fnWriteOutput*)
typedef void (*fnLogBodyModule)(BODY*, CONTROL*, OUTPUT*, SYSTEM*, UPDATE*, fnWriteOutput*, FILE*, int)
typedef void (*fnLogModule)(BODY*, CONTROL*, OUTPUT*, SYSTEM*, UPDATE*, fnWriteOutput*, FILE*)
typedef void (*fnIntegrate)(BODY*, CONTROL*, SYSTEM*, UPDATE*, fnUpdateVariable***, double*, int)

Variables

const double dHUGE
const double dTINY
struct BODY
#include <vplanet.h>

BODY contains all the physical parameters for every object in the system.

Public Members

char *cName

Body’s Name

char *sColor

Body color (for plotting)

int bMantle

Is there a mantle?

int bOcean

Is there an ocean?

int bEnv

Is there an envelope?

int iBodyType

Type of object: 0=star, 1=rocky planet, 2 = giant

double dAge

Body’s Age

double dMass

Body’s Mass

double dSolidMass

Mass of a body’s solid component

double dRadius

Radius of body

double dDensity

Bulk density of body

double dGravAccel

Body’s gravitational acceleration

double dK2

Body’s Total Love number

double dImK2

Imaginary part of Love’s k_2 (total)

double dObliquity

Body’s Obliquity

double dCosObl

Cosine of body’s obliquity

double dRotRate

Body’s Rotation Rate

double dRotPer

Body’s Rotation Period

double dRotVel

Body’s Rotational Velocity

double dRadGyra

Body’s Radius of Gyration

double dSemi

Body’s Semi-major Axis

double dEcc

Body’s Eccentricity

double dMeanMotion

Body’s Mean Motion

double dOrbPeriod

Body’s Orbital Period

double dEccSq

Eccentricity squared

int bAtmEsc

Apply Module ATMESC?

int bInstantO2Sink

Is oxygen absorbed instantaneously at the surface?

int bRunaway

Is the planet experiencing a runaway greenhouse?

int bCalcFXUV

Does incidenx XUV flow need to be calculated every time step?

int bEnvelopeLostMessage

Has the envelope lost message been printed?

int bIgnoreRocheLobe

Ignore Roche lobe overflow?

int bUseEnergyLimited

Use energy-limited escape

int bUseBondiLimited

Use Bondi-limited H mass loss

int bUseRRLimited

Use radiation/recombination-limited H mass loss

int bAtmEscAuto

Transition H escape regime depending on physics

int bAutoThermTemp

Calculate thermal temperature from environemnt?

int bStopWaterLossInHZ

Stop water loss once planet enters habitable zone?

int iWaterLossModel

Water Loss and Oxygen Buildup Model

int iAtmXAbsEffH2OModel

Water X-ray/XUV absorption efficiency evolution model

int iPlanetRadiusModel

Planet Radius model.

int iWaterEscapeRegime

Track water escape regime

int iHEscapeRegime

Tracks H escape regime

double dSurfaceWaterMass

Surface water mass

double dMinSurfaceWaterMass

Minimum surface water to avoid a halt

double dOxygenMass

Atmospheric oxygen mass

double dOxygenMantleMass

Mass of oxygen in the mantle

double dEnvelopeMass

Envelope mass

double dMinEnvelopeMass

Minimum envelope mass to avoid a halt

double dXFrac

XUV radius in units of planet’s radius

double dAtmXAbsEffH

Effective XUV absorpation efficiency for hydrogen

double dAtmXAbsEffH2O

Effective XUV absorpation efficiency for water

double dRGDuration

Duration of runaway greenhouse phase

double dKTide

Tidal enhancement factor for mass loss

double dMinKTide

Minimum allowed value for KTide

double dAtmEscXi

Ratio of Roche radius to XUV radius

double dMDotWater

Water mass loss rate

double dFHRef

Reference hydrogen escape value

double dOxygenEta

Factor for drag of oxygen by hydrogen

double dCrossoverMass

Atomic mass at which drag begins

double dFHDiffLim

Diffusion-limited H escape rate

double dRadXUV

XUV Radius in Lehmer-Catling model

double dRadSolid

Solid planet radius in Lehmer-Catling model

double dPresSurf

Surface Pressure in Lehmer-Catling model

double dPresXUV

Pressure at XUV radius in Lehmer-Catling model

double dScaleHeight

Scale Height used in Lehmer-Catling model

double dThermTemp

Thermosphere’s temperature in Lehmer-Catling model

double dAtmGasConst

Atmosphere’s gas constant in Lehmer-Catling model

double dFXUV

XUV Flux at planet’s atmosphere

double dFXUVLast

XUV at planet during last time step

double dFXUVCumulative
double dJeansTime

Jeans timescale for atmospheric escape

double dFlowTemp

Temperature of the hydrodynamic flow

double dRocheRadius

Radius of the Roche lobe

double dBondiRadius

Bondi (Sonic) Radius

double dEnvMassDt

Time derivative of H envelope mass

int bBinary

Apply BINARY module?

double dR0

Guiding Radius,initially equal to dSemi

double dCBPR

CBP orbital radius

double dCBPZ

CBP height above/below the orbital plane

double dCBPPhi

CBP azimuthal angle in orbital plane

double dCBPRDot

CBP radial orbital velocity

double dCBPZDot

CBP z orbital velocity

double dCBPPhiDot

CBP phi angular orbital velocity

double dFreeEcc

CBP’s free eccentricity

double dFreeInc

CBP’s free inclination, or binary’s inclination

double dInc

Orbital inclication

double dLL13N0

CBP’s Mean motion defined in LL13 eqn 12

double dLL13K0

CBP’s radial epicyclic frequency defined in LL13 eqn 26

double dLL13V0

CBP’s vertical epicyclic frequency defined in LL13 eqn 36

double dLL13PhiAB

Binary’s initial mean anomaly

double dCBPM0

CBP’s initial mean anomaly

double dCBPZeta

CBP’s z oscillation angle (see LL13 eqn 35)

double dCBPPsi

CBP’s R, phi oscillation phase angle (see LL13 eqn 27)

int bSpiNBody

Has module SPINBODY been implemented

double dVelX

x Component of the body’s velocity

double dVelY

y Component of the body’s velocity

double dVelZ

z Component of the body’s velocity

double dPositionX

x Component of the body’s position

double dPositionY

y Component of the body’s position

double dPositionZ

z Component of the body’s position

double bUseOrbParams

Boolean flag to use orbital parameters as inputs

double *dDistance3

Distance cubed to different perturbers

double *dDistanceX

X Distance between two bodies

double *dDistanceY

Y Distance between two bodies

double *dDistanceZ

Z Distance between two bodies

double *dHCartPos

Heliocentric Cartesian Position used for orbital element calculations

double *dHCartVel

Heliocentric Cartesian Velocity used for orbital element calculations

double *dBCartPos

Barycentric Cartesian Position used for orbital element calculations

double *dBCartVel

Barycentric Cartesian Velocity used for orbital element calculations

double dGM

GM for the star

double dMu

G(M+m)

int iGravPertsSpiNBody

Number of bodies that are orbitally relevent (equal to for evolve->iNumBodies)

int bDistOrb

Has module DISTORB been implemented

double dHecc

Poincare H

double dKecc

Poincare K

double dPinc

Poincare P

double dQinc

Poincare Q

double dSinc

sin(0.5*Inclination)

double dLongA

Longitude of ascending node

double dArgP

Argument of pericenter

double dLongP

Longitude of pericenter

double dMeanA

Mean anomaly (only used for inv plane calculation)

double dTrueL

True longitude (only used for insolation calculation

double dEccA

Eccentric anomaly (only used for inv plane calculation)

double *daCartPos

Cartesian position of body (only used for inv plane calc)

double *daCartVel

Cartesian velocity of body (only used for inv plane calc)

int iGravPerts

Number of bodies which perturb the body

int *iaGravPerts

Which bodies are perturbers of the body

int iEigFreqs

Number of eigenfrequencies that control the body’s motion

int *iaEigFreqs

Indices of eigenfrequencies

int bGRCorr

Use general relativistic correction in DistOrb+DistRot?

int iDistOrbModel

Which orbital model to use (RD4 or LL2)

double dSemiPrev

Semi-major axis at which LL2 eigensolution was calc’d

double dEigenvalue

User input eigenvalue (diagnostic only)

double dEigenvector

User input eigenvector amplitude (diagnostic only)

int bEigenSet

Manually set an eigenvalue/frequency

double *daLOrb

Orbital angular momentum

double *daLOrbTmp

Temp copy of orbital angular momentum

double dRPeri

Pericenter distance

double dRApo

Apocenter distance

int bDistRot
double dPrecA

Precession angle

double dTrueApA

True anomaly at equinox (used for invariable plane conversion)

double dDynEllip

Dynamical ellipticity

double dYobl

sin(obliq)*sin(preca)

double dXobl

sin(obliq)*cos(preca)

double dZobl

cos(obliq)

double *daLRot

Spin angular momentum vector

double *daLRotTmp

Temp copy of spin angular momentum vector

int bForcePrecRate

Set precession rate to a fixed value

double dPrecRate

Value to set fixed precession rate to

int bCalcDynEllip

Calc dyn ellipticity from spin, radius, mass, inertia?

int bRelaxDynEllip

shape of planet relaxes when spun down

int bReadOrbitData

Use orbit data from file rather than distorb

char *cFileOrbitData

read orbital data from this file (distorb=0)

double *daTimeSeries

time series for orbital data

double *daSemiSeries

time series for orbital data

double *daEccSeries

time series for orbital data

double *daIncSeries

time series for orbital data

double *daArgPSeries

time series for orbital data

double *daLongASeries

time series for orbital data

double *daMeanASeries

time series for orbital data

int iCurrentStep

index for time series arrays

double *daHeccSeries

time series for orbital data

double *daKeccSeries

time series for orbital data

double *daPincSeries

time series for orbital data

double *daQincSeries

time series for orbital data

double dPdot

inclination derivative used for obliquity evol

double dQdot

inclination derivative used for obliquity evol

int iNLines

Number of lines of orbital data file

double dSpecMomInertia

C/M/R^2 used for dynamical ellipticity calculation

int bEqtide

Apply Module EQTIDE?

int bTideLock

Is a body tidally locked?

double dLockTime

Time when body tidally-locked

int bUseTidalRadius

Set a fixed tidal radius?

int bUseOuterTidalQ

Set total Q to outer layer’s value?

double dTidalRadius

Radius used by tidal evoltion equations (CPL only currently)

int iTidePerts

Number of Tidal Perturbers

int *iaTidePerts

Body #’s of Tidal Perturbers

char *saTidePerts[MAXARRAY]

Names of Tidal Perturbers

double dK2Man

Mantle k2 love number

double dK2Ocean

Ocean’s Love Number

double dK2Env

Envelope’s Love Number

double dTidalQMan

Tidal Q of the Mantle

double dTidalQOcean

Body’s Ocean Component to Tidal Q

double dTidalQEnv

Body’s Envelope Component to Tidal Q

double dImK2Man

Mantle Im(k2) love number

double dImK2ManOrbModel

Mantle Im(k2) model for DB15 orbital eqns

double dImK2Ocean

Envelope Component to Imaginary part of Love’s K_2

double dImK2Env

Envelope Component to Imaginary part of Love’s K_2

double dTidalQ

Body’s Tidal Q

double dTidalTau

Body’s Tidal Time Lag

double *dTidalZ

As Defined in HellerEtal2011

double *dTidalChi

As Defined in HellerEtal2011

double **dTidalF

As Defined in HellerEtal2011

double *dTidalBeta

As Defined in HellerEtal2011

int **iTidalEpsilon

Signs of Phase Lags

double dDeccDtEqtide

Eccentricity time rate of change

double *daDoblDtEqtide

Obliquity time rate of change

int bRadheat

Apply Module RADHEAT?

double d26AlConstMan

Body’s Mantle 26Al Decay Constant

double d26AlMassMan

Body’s Mantle Mass of 26Al

double d26AlNumMan

Body’s Mantle Number of 26Al Atoms

double d26AlPowerMan

Body’s Mantle Internal Power Due to 26Al Decay

double d26AlConstCore

Body’s Core 26Al Decay Constant

double d26AlMassCore

Body’s Core Mass in 26Al

double d26AlNumCore

Body’s Core Number of 26Al Atoms

double d26AlPowerCore

Body’s Core Power from 26Al

double d40KConstMan

Body’s Mantle 40K Decay Constant

double d40KMassMan

Body’s Mantle Mass of 40K

double d40KNumMan

Body’s Mantle Number of 40K Atoms

double d40KPowerMan

Body’s Mantle Internal Power Due to 40K Decay

double d40KConstCore

Body’s Core 40K Decay Constant

double d40KNumCore

Body’s Core Number of 40K Atoms

double d40KPowerCore

Body’s Core Power due to 40K

double d40KMassCore

Body’s Core Mass of 40K

double d40KConstCrust

Body’s Crust 40K Decay Constant

double d40KNumCrust

Body’s Crust Number of 40K Atoms

double d40KPowerCrust

Body’s Crust Power due to 40K

double d40KMassCrust

Body’s Crust Mass of 40K

double d232ThConstMan

Body’s Thorium-232 Decay Constant

double d232ThNumMan

Body’s Number of Thorium-232 Atoms

double d232ThPowerMan

Body’s Internal Power Due to Thorium-232 Decay

double d232ThMassMan

Body’s Total Mass of Thorium-232 Atoms

double d232ThConstCore
double d232ThNumCore
double d232ThPowerCore
double d232ThMassCore
double d232ThConstCrust
double d232ThNumCrust
double d232ThPowerCrust
double d232ThMassCrust
double d238UConstMan

Body’s Uranium-238 Decay Constant

double d238UNumMan

Body’s Number of Uranium-238 Atoms

double d238UPowerMan

Body’s Internal Power Due to Uranium-238 Decay

double d238UMassMan

Body’s Total Mass of Uranium-238 Atoms

double d238UConstCore
double d238UNumCore
double d238UPowerCore
double d238UMassCore
double d238UConstCrust
double d238UNumCrust
double d238UPowerCrust
double d238UMassCrust
double d235UConstMan
double d235UNumMan
double d235UPowerMan
double d235UMassMan
double d235UConstCore
double d235UNumCore
double d235UPowerCore
double d235UMassCore
double d235UConstCrust
double d235UNumCrust
double d235UPowerCrust
double d235UMassCrust
double dRadPowerTotal

Total planet Radiogenic Power

double dRadPowerMan

Total Mantle Radiogenic Power

double dRadPowerCore

Total Core Radiogenic Power

double dRadPowerCrust

Total Crust Radiogenic Power

int bThermint

Apply Module THERMINT?

double dTSurf

Surface Temperature

double dTMan

Temperature Mantle AVE

double dTCore

Temperature Core AVE

double dTUMan

Temperature UMTBL

double dTLMan

Temperature LMTBL

double dTCMB

Temperature CMB

double dTICB

Temperature ICB

double dBLUMan

UM TBL thickness

double dBLLMan

LM TBL thickness

double dTJumpUMan

Abs Temperature Jump across UMTBL

double dTJumpLMan

Abs Temperature Jump across LMTBL

double dSignTJumpUMan

Sign of Temperature Jump across UMTBL

double dSignTJumpLMan

Sign of Temperature Jump across LMTBL

double dViscUManArr

Viscosity UMTBL Arrhenius Law

double dViscUMan

Viscosity UMTBL

double dViscLMan

Viscosity LMTBL

double dViscMMan

Viscosity Mid (ave) mantle

double dDynamViscos

Dynamic viscosity of the mantle

double dViscJumpMan

Viscosity Jump UM to LM

double dShmodUMan

Shear modulus UMTBL

double dShmodLMan

Shear modulus LMTBL

double dTsolUMan

Solidus Temperature UMTBL

double dTliqUMan

Liquidus Temperature UMTBL

double dTsolLMan

Solidus Temperature LMTBL

double dTliqLMan

Liquidus Temperature LMTBL

double dFMeltUMan

Melt fraction UMTBL

double dFMeltLMan

Melt fraction LMTBL

double dMeltfactorUMan

Melt Phase Factor for Rheology

double dMeltfactorLMan

Melt Phase Factor for Rheology

double dFixMeltfactorUMan

Melt Phase Factor for Rheology

double dViscMeltB

Viscosity Melt Factor B

double dViscMeltGamma

Viscosity Melt Factor Gamma

double dViscMeltDelta

Viscosity Melt Factor Delta

double dViscMeltXi

Viscosity Melt Factor Xi

double dViscMeltPhis

Viscosity Melt Factor Phis

double dDepthMeltMan

Depth to base of UM Melt layer

double dTDepthMeltMan

Temp at base of UM Melt layer

double dTJumpMeltMan

Temp Jump to base of UM Melt layer

double dMeltMassFluxMan

Mantle upwelling melt mass flux

double dRayleighMan

Mantle Rayleigh Number

double dTDotMan

Time deriv of mean mantle temp

double dTDotCore

time deriv of mean core temp

double dHfluxUMan

hflux upper mantle thermal boundary layer (UMTBL)

double dHflowUMan

hflow UMTBL

double dHfluxLMan

hflux lower mantle thermal boundary layer (UMTBL)

double dHflowLMan

hflow LMTBL

double dHfluxCMB

hflux CMB

double dHflowCMB

hflow CMB

double dHflowTidalMan

hflow tidal dissipation in mantle

double dHflowTidalCore

hflow tidal dissipation in core

double dHflowLatentMan

latent hflow from solidification of mantle

double dHflowMeltMan

Eruptive Melt Hflow from mantle

double dHflowSecMan

Mantle Secular Heat flow

double dMassICDot

Mass Growth Rate of IC

double dHflowLatentIC

latent hflow from solidification of IC

double dPowerGravIC

latent hflow from solidification of IC

double dHflowICB

hflow across ICB

double dHfluxSurf

hflux surface of mantle

double dHflowSurf

hflow surface of mantle

double dTidalPowMan

Tidal Dissipation Power in Mantle

double dRIC

IC radius

double dDRICDTCMB

d(R_ic)/d(T_cmb)

double dDOC

OC shell thickness

double dThermConductOC

Thermal conductivity OC

double dThermConductIC

Thermal conductivity IC

double dChiOC

OC light element concentration chi.

double dChiIC

IC light element concentration chi.

double dMassOC

OC Mass.

double dMassIC

IC Mass.

double dMassChiOC

OC Chi Mass.

double dMassChiIC

IC Chi Mass.

double dDTChi

Core Liquidus Depression

double dHfluxCMBAd

CMB Adiabatic Heat flux.

double dHfluxCMBConv

CMB Convective (super-adiabatic) Heat flux.

double dCoreBuoyTherm

Core Thermal buoyancy flux

double dCoreBuoyCompo

Core Compositional buoyancy flux

double dCoreBuoyTotal

Core total (therm+compo) buoyancy flux

double dGravICB

Gravity at ICB

double dDensAnomICB

Density anomaly across ICB (Delta rho_chi in DB14).

double dRICDot

Inner core growth rate

double dMagMom

Core Dynamo Magnetic Moment scaling law.

double dMagMomCoef

Dynamo magnetic moment scaling law dipolarity coefficient (gamma_d in DB14)

double dPresSWind

Stellar wind pressure at planets orbit.

double dMagPauseRad

Magnetopause stand-off radius from center of planet

double dViscRatioMan

Viscosity Ratio Man

double dEruptEff

Mantle melt eruption efficiency

double dViscRef

Mantle Viscosity Reference (coefficient)

double dTrefLind

Core Liquidus Lindemann Reference (coefficient)

double dDTChiRef

Core Liquidus Depression Reference (E)

double dStagLid

Stagnant Lid heat flow switch (0 or 1)

double dManHFlowPref

Mantle Hflow Prefix

double dActViscMan

Mantle viscosity activation energy

double dShModRef

reference kinematic mantle shear modulus

double dStiffness

effective stiffness of mantle

double dDLind

lindemann’s law length scale for iron liquidus

double dDAdCore

liq iron core adiabatic length scale

double dAdJumpM2UM

adiabatic temp jump from ave mantle to UM

double dAdJumpM2LM

adiabatic temp jump from ave mantle to LM

double dAdJumpC2CMB

adiabatic temp jump from ave core to CMB

double dElecCondCore

electrical conductivity of core

int bStellar
double dLuminosity
double dTemperature
double dSatXUVFrac
double dSatXUVTime
double dXUVBeta
int iStellarModel
int iMagBrakingModel
int iWindModel
int iXUVModel
double dLXUV
double iHZModel
double dLostAngMom

Angular momemntum lost to space via magnetic braking

double dLostEng

Energy lost to space, i.e. via stellar contraction

int bRossbyCut

Whether or not to shut off magnetic braking for Ro>ROSSBYCRIT

int bEvolveRG

Whether or not to evolve radius of gyration? Defaults to 0

double dLuminosityInitial
double dLuminosityAmplitude
double dLuminosityFrequency
double dLuminosityPhase
int bPoise

Apply POISE module?

double dAblateFF

Scaling factor for ice ablation rate

int bAccuracyMode

This forces EBM to re-invert matrix every time step

double dAlbedoGlobal

Global average albedo (Bond albedo)

double dAlbedoGlobalTmp

A copy of global average albedo (sometimes needed)

double dAlbedoLand

Sets base albedo of land (sea model)

double dAlbedoWater

Sets base albedo of water (sea model)

int bAlbedoZA

Use albedo based on zenith angle (ann model)

double dAreaIceCov

Tracks area of surface covered in permanent ice

double dAstroDist

Distance between primary and planet

int bCalcAB

Calc A and B from Williams & Kasting 1997

int iClimateModel

Which EBM to be used (ann or sea)

int bColdStart

Start from global glaciation (snowball) conditions

double dCw_dt

Heat capacity of water / EBM time step

double dDiffCoeff

Diffusion coefficient set by user

int bDiffRot

Adjust heat diffusion for rotation rate

int bElevFB

Apply elevation feedback to ice ablation

double dFixIceLat

Fixes ice line latitude to user set value

double dFluxInGlobal

Global mean of incoming flux

double dFluxInGlobalTmp

Copy of global mean incoming flux

double dFluxOutGlobal

Global mean of outgoing flux

double dFluxOutGlobalTmp

Copy of global mean outgoing flux

int bForceObliq

Force obliquity to evolve sinusoidally

int bForceEcc

Force eccentricity to evolve sinusoidally

double dFrzTSeaIce

Freezing temperature of sea water

int iGeography

Type of geography to use (uni3 or modn)

int bHadley

Use Hadley circ in tropics when calc’ing diffusion?

double dHeatCapAnn

Surface heat capacity in annual model

double dHeatCapLand

Heat capacity of land

double dHeatCapWater

Heat capacity of water

double dIceAlbedo

Base albedo of ice covered surfaces

double dIceBalanceTot

Total gain/loss in ice globally

double dIceDepRate

Snow deposition rate when below freezing

double dIceFlowTot

Total flow of ice (should be zero)

double dIceMassTot

Total ice mass over entire globe

int bIceSheets

Use ice sheet model?

int iIceTimeStep

Time step of ice sheet model (should be > iNumYears)

double dInitIceHeight

Initial height of ice sheet

double dInitIceLat

Initial latitude of ice line (ice cap only)

double dLapseR

Lapse rate used for elevation feedback of ice sheet

double dLatentHeatIce

Latent heat of fusion of ice over mixing depth

double dLatFHeatCp

Latent heat of ice/heat capacity

int bMEPDiff

Compute diff from maximum entropy prod (D = B/4)

double dMixingDepth

Depth of mixing layer of ocean (for thermal inertia)

int iNDays

Number of days in planet’s year/orbit

int iNStepInYear

Number of time steps in a year/orbit

double dNuLandWater

Land-ocean interaction term

int iNumLats

Number of latitude cells

int iNumYears

Number of orbits!!! to run seasonal model

double dObliqAmp

Amplitude of forced obliquity oscillation

double dObliqPer

Period of force obliquity oscillation

double dObliq0

Start obliquity for forced oscillation

double dEccAmp

Amplitude of forced eccentricity oscillation

double dEccPer

Period of force eccentricity oscillation

double dEcc0

Start eccentricity for forced oscillation

int iOLRModel

OLR fit (use with bCalcAB=1) from Kasting or Spiegel

double dpCO2

Partial pressure of CO2 (only if bCalcAB = 1)

double dPlanckA

Constant term in Blackbody linear approximation

double dPlanckB

Linear coeff in Blackbody linear approx (sensitivity)

double dPrecA0

Initial pA value used when distrot is not called

int bReadOrbitOblData

Use orbit and obliquity data from file rather than distrot

char *sFileOrbitOblData

read orbital and obliquity data from this file (distorb=0)

double *daOblSeries

time series for obliquity data

double *daPrecASeries

time series for obliquity data

double dRefHeight

Ref height of “surface” in elevation feedback

int iReRunSeas

When to rerun EBM in ice sheet model

double dSeaIceConduct

Conductivity of sea ice

int bSeaIceModel

Use sea ice model?

double dSeasDeltat

Time step of seasonal model

double dSeasDeltax

Spacing of grid points in seasonal model

double dSeasOutputTime

When to output seasonal data

double dSeasNextOutput

Next time step to output seasonal data

int bSkipSeas

Ann model will be used if in snowball state

int bSkipSeasEnabled

Allow ann model to be used if in snowball state?

int bSnowball

Is planet in snowball state (oceans are frozen)?

double dSpinUpTol

Tolerance for mean global temp change during spin up

double dSurfAlbedo

Base surface albedo used in ann model

double dTGlobal

Global mean temperature at surface

double dTGlobalInit

Initial estimate of global surface temperature

double dTGlobalTmp

Mean global surface temp

int iWriteLat

Stores index of latitude to be written in write fxn

double dMinIceHeight

Minimum ice thickness to count as icy

double *daAnnualInsol

Annually averaged insolation at each latitude

double *daDivFlux

Divergence of surface flux

double *daDMidPt

Diffusion at edges of grid points

double **daInsol

Daily insolation at each latitude

double *daFlux

Meridional surface heat flux

double *daFluxIn

Incoming surface flux (insolation)

double *daFluxOut

Outgoing surface flux (longwave)

double *daLats

Latitude of each cell (centered); South Pole is 0

double *daPeakInsol

Annually averaged insolation at each latitude

double *daTGrad

Gradient of temperature (meridional)

double *daAlbedoAnn

Albedo of each cell

double *daDiffusionAnn

Diffusion coefficient of each latitude boundary

double **daMEulerAnn

Matrix used for Euler step in annual model

double **daMEulerCopyAnn

Temp copy of Euler matrix

double **daInvMAnn

Inverted matrix for annual model

double *daLambdaAnn

Diffusion terms for annual matrix

double **daMClim

Raw climate matrix for annual model

double **daMDiffAnn

Diffusion matrix for annual model

double *daPlanckAAnn

Array of Planck A values for ann model

double *daPlanckBAnn

Array of Planck B values for ann model

int *iaRowswapAnn

Array of interchanged rows in matrix inversion

double *daScaleAnn

Used in matrix inversion routine

double *daSourceF

Heating terms in EBM

double *daTempAnn

Surface temperature in each cell

double *daTempTerms

Temperature dependent terms in matrix

double *daTmpTempAnn

Temporary copy of temperature

double *daTmpTempTerms

Temporary copy of temp dependent terms

double *daUnitVAnn

Unit vector used in matrix inversion

double *daAlbedoAvg

Orbit average albedo by latitude

double *daAlbedoAvgL

Orbit average albedo by latitude on land

double *daAlbedoAvgW

Orbit average albedo by latitude on water

double *daAlbedoLand

Albedo of land by latitude

double *daAlbedoLW

Land-water averaged albedo

double *daAlbedoWater

Albedo of land by latitude

double *daBasalFlow

Basal flow of ice = d(u*h)/dy

double *daBasalFlowMid

Basal flow of ice d(u*h)/dy (midpoints)

double *daBasalVel

Basal velocity of ice

double *daBedrockH

Height of bedrock (can be negative)

double *daBedrockHEq

Equilibrium height of bedrock

double *daDeclination

Daily solar declination

double *daDeltaTempL

Keeps track of temp change on land for energy check

double *daDeltaTempW

Keeps track of temp change on water for energy check

double *daDIceHeightDy

Gradient of ice height

double *daDiffusionSea

Diffusion coefficient for seasonal model

double *daDivFluxAvg

Divergence of flux averaged over orbit

double **daDivFluxDaily

Daily values of divergence of flux

double *daEnergyResL

Energy residuals on land

double *daEnergyResW

Energy residuals over water

double *daEnerResLAnn

Annually averaged energy residuals on land

double *daEnerResWAnn

Annually averaged energy residuals over water

double *daFluxAvg

Annually averaged meridional flux

double *daFluxOutAvg

Annually averaged outgoing flux

double **daFluxDaily

Daily meridional flux values

double *daFluxInAvg

Annually averaged incoming flux

double **daFluxInDaily

Daily incoming flux values

double *daFluxInLand

Annually averaged incoming flux on land

double *daFluxInWater

Annually averaged incoming flux on water

double **daFluxOutDaily

Daily outgoing flux values

double *daFluxOutLand

Annually averaged outgoing flux on land

double *daFluxOutWater

Annually averaged outgoing flux on water

double *daFluxSeaIce

Heat flux through sea ice

double **daIceBalance

Gain/loss of ice at each latitude and day

double *daIceAblateTot

Total ice loss per orbit

double *daIceAccumTot

Total ice gain per orbit

double *daIceBalanceAnnual

Net ice gain/loss over orbit

double *daIceBalanceAvg

Average ice gain/loss over orbit

double *daIceBalanceTmp

Temporary (current) ice gain/loss

double *daIceFlow

Flow of ice

double *daIceFlowAvg

Average flow of ice over orbit

double *daIceFlowMid

Flow of ice at boundaries of grid points

double *daIceGamTmp

Temporary variable used in ice sheet matrix

double *daIceHeight

Height of ice sheet

double *daIceMass

Ice mass per area

double *daIceMassTmp

Temporary copy of ice mass per area

double *daIcePropsTmp

Temporary array used in ice sheet matrix

double *daIceSheetDiff

Diffusion coefficient of ice sheet flow

double **daIceSheetMat

Matrix used in ice sheet flow

double **daInvMSea

Inverted matrix in seasonal EBM

double *daLambdaSea

Diffusion terms in seasonal EBM matrix

double dLandFrac

Land fraction input by user

double *daLandFrac

Fraction of cell which is land

double **daMDiffSea

Diffusion only matrix in seasonal EBM

double **daMEulerCopySea

Temporary copy of Euler time step matrix (seasonal)

double **daMEulerSea

Euler time step matrix in seasonal EBM

double **daMInit

Temporary matrix used in constructing Euler matrix

double **daMLand

Land terms in seasonal matrix

double **daMWater

Water terms in seasonal matrix

double *daPlanckASea

Array of Planck A values in seasonal model

double *daPlanckBSea

Array of Planck B values in seasonal model

double **daPlanckBDaily

Array of Planck B values over seasonal cycle

double *daPlanckBAvg

Orbit averaged Planck B values in seasonal model

int *iaRowswapSea

Interchanged rows in seasonal matrix inversion

double *daScaleSea

Used in matrix inversion routine

double *daSeaIceHeight

Sea ice height by latitude

double *daSeaIceK

Heat conductivity of sea ice

double *daSedShear

sediment shear stress (for ice sheets)

double *daSourceL

Land heating terms: PlanckA - (1-albedo)*Insol

double *daSourceLW

Combined heat terms what inverser matrix operates on

double *daSourceW

Water heating terms: PlanckA - (1-albedo)*Insol

double *daTempAvg

Temperature averaged over orbit and land/water

double *daTempAvgL

Land temp averaged over orbit

double *daTempAvgW

Water temp averaged over orbit

double **daTempDaily

Daily temp over seasonal cycle

double *daTempLand

Temperature over land (by latitude)

double *daTempLW

Surface temperature (avg over land & water)

double *daTempMaxLW

Maximum temperature over year

double *daTempMaxLand

Maximum temperature over year over land

double *daTempMaxWater

Maximum temperature over year over water

double *daTempMinLW

Minimum temperature over year

double *daTempWater

Temperature over ocean (by lat)

double *daTmpTempSea

Temporary copy of temp dependent terms (sea EBM)

double *daUnitVSea

Unit vector used in matrix routines

double *daWaterFrac

Fraction of cell which is water

double *daXBoundary

Locations of grid boundaries in x = sin(lat)

double *daYBoundary

Locations of grid boundaries in y = R*lat

int bFlare
double dFlareYInt

Flare function Y intercept /FFD linear coefficient

double dFlareSlope

Flare function slope /FFD angular coefficient

double dFlareMinEnergy

Flare minimum energy value to calculate the FFD

double dFlareMaxEnergy

Flare maximum energy value to calculate the FFD

double dFlareFreq1

First value of flare frequency range

double dFlareFreq2

Second value of flare frequency range

double dFlareFreq3

Third value of flare frequency range

double dFlareFreq4

Fourth value of flare frequency range

double dFlareFreqMin

Flare frequency of the flares with the lowest energy

double dFlareFreqMid

Flare frequency of the flares with the central energy value in the energy range

double dFlareFreqMax

Flare frequency of the flares with the highest energy

double dFlareEnergy1

First value of flare energy range

double dFlareEnergy2

Second value of flare energy range

double dFlareEnergy3

Third value of flare energy range

double dFlareEnergy4

Fourth value of flare energy range

double dFlareEnergyMin

Minimum value of flare energy in the energy range

double dFlareEnergyMid

Central value of flare energy in the energy range

double dFlareEnergyMax

Maximum value of flare energy in the energy range

double dLXUVFlare

XUV luminosity by flare

double dLXUVTot

XUV luminosity total, flare + stellar

double dLXUVFlareConst

XUV luminosity given by the user

int iFlareFFD

Flare mode

int iFlareBandPass

Option to choose in which band pass the input energy are

int iFlareSlopeUnits

Mode to choose in which units the FFD slopes are

int iEnergyBin

Number of energies consider between the minimum and maximum energies to calculate the luminosity by flares

double *daEnergyERG
double *daEnergyJOU
double *daLogEner
double *daEnerJOU
double *daEnergyJOUXUV
double *daEnergyERGXUV
double *daLogEnerXUV
double *daFFD
double *daLXUVFlare
int bGalHabit

Use galhabit module

double dPeriQ

Pericenter distance

int iDisrupt

Secondary body has been disrupted

int bGalacTides

Enable galactic tides

double dHostBinSemi

Semi-major axis of host binary

double dHostBinEcc

Eccentricity of host binary

double dHostBinInc

Inclination of host binary

double dHostBinArgP

Arg pericenter of host binary

double dHostBinLongA

Long asc node of host binary

double dHostBinMass1

Mass of large host binary star

int bHostBinary

Model dynamics of inner host binary

double *daRelativeImpact

Impact param of passing star relative to body

double *daRelativeVel

Velocity of passing star relative to body

double dEccX

X component of eccentricity vector

double dEccY

Y component of eccentricity vector

double dEccZ

Z component of eccentricity vector

double dAngMX

X component of orbital momentum vector

double dAngMY

Y component of orbital momentum vector

double dAngMZ

Z component of orbital momentum vector

double dAngM

Magnitude of orbital momentum vector

double dEccXTmp

Ecc X in the host binary reference plane

double dEccYTmp

Ecc Y in the host binary reference plane

double dEccZTmp

Ecc Z in the host binary reference plane

double dAngMXTmp

AngM X in the host binary reference plane

double dAngMYTmp

AngM Y in the host binary reference plane

double dAngMZTmp

AngM Z in the host binary reference plane

double dArgPTmp

Arg pericenter in the host binary reference plane

double dLongATmp

Long asc node in the host binary reference plane

double dIncTmp

Inclination in the host binary reference plane

double dCosArgP

Cosine of arg pericenter

double dMinStellarApproach

minimum allowed close approach of body to host

double dMassInterior

Total mass of bodies interior to body

int iBadImpulse

Was there a bad impulse?

double dMeanL

Body’s mean longitude

int bMagmOc

Use magmoc model

int bManSolid

Mantle solidified

int bAllFeOOxid

All FeO in manlte oxidized to Fe2O3

int bLowPressSol

Switch to low pressure treatment of solidus

int bManStartSol

Mantle starts to solidify

int bCalcFugacity

Need to calc oxygen fugacity

int bPlanetDesiccated

Atmosphere desiccated

int bManQuasiSol

Atmosphere desiccated & T_surf below 1000K

int bMagmOcHaltSolid

Mantle solidifed or atm desiccated

int bMagmOcHaltDesicc

Atm desiccated or escape stopped

int bEscapeStop

Atmospheric escaped stopped

int bCO2InAtmosphere

Is CO2 present in the atmopshere?

int iRadioHeatModel

Which Radiogenic Heating model to use

int iMagmOcAtmModel

Which Atmopsheric Flux model to use

int bOptManQuasiSol

Solidify mantle inst. when melt frac = 0.4 at surf

double dPotTemp

Potential Temp of the mantle [K]

double dSurfTemp

Surface Temp of the planet [K]

double dSolidRadius

Solidification radius of the mantle [m]

double dWaterMassMOAtm

Water mass in magma ocean and atmosphere [kg]

double dWaterMassSol

Water mass in the solidified mantle [kg]

double dOxygenMassMOAtm

Water mass in magma ocean and atmosphere [kg]

double dOxygenMassSol

Water mass in the solidified mantle [kg]

double dHydrogenMassSpace

Mass of hydrogen that is lost to space

double dOxygenMassSpace

Mass of oxygen that is lost to space

double dCO2MassMOAtm

Mass of CO2 in magma ocean and atmosphere [kg]

double dCO2MassSol

Mass of CO2 in solidified mantle [kg]

double dCoreRadius

Core radius of the planet [m]

double dWaterMassAtm

Water mass in the atmosphere [kg]

double dManMeltDensity

Density of the molten mantle [km/m^3]

double dMassFracFeOIni

Initial FeO mass fraction in the mantle

double dWaterPartCoeff

Water partition coefficient between melt and solid

double dDepthMO

Initial depth of Magma Ocean [km]

double dGravAccelSurf

Graviational acceleration at the surface [m/s^2]

double dSolidRadiusLocal

Local variable for solidification radius of the mantle [m]

double dTransDepthSol

Depth of transition from low to high pressure solidus [Pa]

double dPrefactorA

Prefactor for linear solidus

double dPrefactorB

Prefactor for linear solidus

double dMeltFraction

Melt fraction of the mantle

double dMeltFracSurf

Melt fraction at the surface

double dKinemViscos

Kinematic viscosity of the mantle [m/s^2]

double dFactorDerivative

Factor to calculate the derivatives of Tpot and Rsol

double dManHeatFlux

Mantle heat flux [W/m^2]

double dRadioHeat

Radiogenic heating rate GET FROM RADHEAT [W/kg]

double dTidalHeat

Tidal heating rate GET FROM EQTIDE [W/kg]

double dNetFluxAtmo

Net atmospheric flux OLR-ASR [W/m^2]

double dAlbedo

Albedo of the planet

double dEffTempAtm

Effective temperature of the planet’s atmosphere

double dPressWaterAtm

Water pressure in atmosphere [Pa]

double dPartialPressWaterAtm

Partial Water pressure in atmosphere [Pa]

double dPressCO2Atm

CO2 pressure in atmosphere [Pa]

double dPartialPressCO2Atm

Partial CO2 pressure in atmosphere [Pa]

double dPressOxygenAtm

Oxygen pressure in atmosphere [Pa]

double dMassMagmOcLiq

liquid mass of magma ocean [kg]

double dMassMagmOcCry

crystal mass of magma ocean [kg]

double dWaterFracMelt

Mass fraction of water in the magma ocean

double dCO2FracMelt

Mass fraction of CO2 in the magma ocean

double dFracFe2O3Man

Mass fraction of Fe2O3 in the mantle

double dOxygenMassAtm

Oxygen mass in the atmosphere [kg]

double dAveMolarMassMan

Average molar mass of the mantle

double dWaterMassEsc

Water mass escaped per time

double dOxygenMassEsc

Oxygen mass escaped per time

double dHZInnerEdge

Inner edge of habitable zone (runaway)

struct SYSTEM

Public Members

char *cName

System’s Name

int iNumBodies
double dTotAngMomInit

Number of bodies in the system; redundant with Evolve! System’s Initial Angular Momentum

double dTotAngMom

System’s Current Angular Momentum

fnLaplaceFunction **fnLaplaceF

Pointers to semi-major axis functions

fnLaplaceFunction **fnLaplaceDeriv

Pointers to semi-major axis derivatives

double ***daLaplaceC

Values of semi-major axis functions

double ***daLaplaceD

Values of semi-major axis derivatives

double ***daAlpha0

Semi-major axis ratio at the time LaplaceC is determined

int **iaLaplaceN

Indices for dmLaplaceC corresponding to iBody, jBody

double dDfcrit

Semi-maj functions will be updated based on this value

double dThetaInvP

Azimuthal angle of inv plane relative to input plane

double dPhiInvP

Altitude angle of inv plane relative to input plane

double **daEigenValEcc

Matrix of eccentricity Eigenvalues in Laplace-Lagrange

double **daEigenValInc

Matrix of inclination Eigenvalues in Laplace-Lagrange

double **daEigenVecEcc

Matrix of eccentricity Eigenvectors in Laplace-Lagrange

double **daEigenVecInc

Matrix of inclination Eigenvectors in Laplace-Lagrange

double **daEigenPhase

Phase angles used in Laplace-Lagrange solution

double **daA

Matrix used for finding eigenvalues for eccentricity

double **daB

Matrix used for finding eigenvalues for inclination

double *daAsoln

RHS of eigenvalue problem for ecc

double *daBsoln

RHS of eigenvalue problem for inc

double **daetmp

Temporary matrix used in eigenvalue routine

double **daitmp

Temporary matrix used in eigenvalue routine

double *dah0

Initial value of Hecc in LL2 solution

double *dak0

Initial value of Kecc in LL2 solution

double *dap0

Initial value of Pinc in LL2 solution

double *daq0

Initial value of Qinc in LL2 solution

double *daS

Scaling factor for ecc eigenvectors

double *daT

Scaling factor for inc eigenvectors

int *iaRowswap

Row interchange array used in eigenvector routine

double **daAcopy

Copy of eigenvalue matrix for eccentricity

double *daScale

Used in matrix inversion

double *daLOrb

Total angular momentum of system

double dTotEnInit

System’s Initial Energy

double dTotEn
double dGalacDensity

< System’s total energy Density of galactic environment (for GalHabit)

double *daPassingStarR

Initial location of passing star

double *daPassingStarV

Initial velocity of passing star

double dPassingStarVRad

Radial velocity of passing star (wrt origin)

double dPassingStarRMag

Distance to passing star

double *daPassingStarImpact

3D impact parameter for passing star

double dPassingStarMass

Mass of passing star

double dPassingStarSigma

Velocity dispersion of passing stars

double dPassingStarMagV

Magnitude of passing star

double dEncounterRad

User-set encounter radius (box size)

double dDeltaTEnc

time since last encounter

double dEncounterRate

characteristic encounter time

double dCloseEncTime

time of new close encounter

double dLastEncTime

time of last encounter

double dNextEncT

Time of next encounter

int iNEncounters

Number of encounters

double dRForm

galactocentric formation radius

double dTMigration

time of radial migration

int bRadialMigr

use radial migration

double dScalingFTot

scaling factor for radial migration

double dScalingFStars

scaling factor for radial migration

double dScalingFVelDisp

scaling factor for radial migration (velocity disp)

double dGasDensity

density of local ism

double dDMDensity

density of local dark matter

double dStarScaleL

scale length of stellar disk

double dVelDispSolar

Velocity dispersion in solar neighborhood

double dHostApexVelMag

Magnitude of host star apex velocity

double *daHostApexVel

Host star apex velocity vector

double *daRelativeVel

Relative velocity b/w passing star and orbiter

double *daRelativePos

Distance b/w passing star and orbiter

double dRelativeVelRad

Radial component of velocity b/w passing star & orbiter

double dRelativeVelMag

Magnitude relative velocity b/w passing star & orbiter

double *daGSNumberDens

Number density of stars in solar neighborhood

double *daGSBinMag

Magnitude bins of stars in solar neighborhood

double *daEncounterRateMV

Encounter rate of passing stars

int iSeed

RNG seed for stellar encounters

double dGalaxyAge

present day age of galaxy

int bStellarEnc

model stellar encounters?

int bTimeEvolVelDisp

scale velocity dispersion of passing stars w/ sqrt(t)?

int bOutputEnc

output stell encounter info (beware large output!)

double dEncDT

time b/w stell encounter impulses on primary/2ndary

double dTStart

time that encounter begins relative to time step

int **iaResIndex

j values for resonance (-1 deactivates the resonance)

int *iaResOrder

order of resonance

int bResAvg

Average over resonant arguments (suitable for circulation)

double **daLibrFreq2

Libration frequency of exact resonance via linear theory

double **daCircFreq

Circulation frequency of near resonance

double **daDistCos

Cosine prefactors of disturbing fxn resonant terms

double **daDistSin

Sine prefactors of disturbing fxn resonant terms

double **daDistSec

Pyth sum of prefactors of disturbing fxn resonant terms

struct UPDATE

Public Members

double **pdVar

Pointers to Primary Variables

int iNumVars

Number of Update-able Variables

int **iaType

The “type” refers to how the variable is updated. If 0, then the variable is assumed to be an explicit function of age. The first timestep is then a bit dodgy as the rate is not initially known. The suggested timestep will be dEta*dTimestep, so runs with a Type 0 variable must account for the evolution with dTimeStep. Variable type affecting timestep (0 = explicit function of age, 1 = normal quantity with time derivative, 2 = polar/sinusoidal quantity with time derivative, 3 = sinusoidal quantity with explicit function of age)

double *daDeriv

Array of Total Derivative Values for each Primary Variable

double **daDerivProc

Array of Derivative Values Due to a Process

double *dVar
double dZero

Sometimes you need a pointer to zero

int ***iaBody

The body numbers to calculate the derivative. First dimension is the Primary variable number, second is the process #, third is the list body numbers.

int **iNumBodies

Number of Bodies Affecting a Process