From 3baad6efdbc3412a9957cab17add3b8e50f42910 Mon Sep 17 00:00:00 2001 From: RoryBarnes Date: Thu, 12 Sep 2024 15:13:10 -0700 Subject: [PATCH] Added Cumulative XUV flux, but somehow tests are not passing --- Makefile | 4 +- examples/CosmicShoreline/CosmicShoreline.png | Bin 0 -> 87564 bytes examples/CosmicShoreline/README.rst | 37 ++++++++++ examples/CosmicShoreline/earth.in | 6 ++ examples/CosmicShoreline/george.in | 6 ++ examples/CosmicShoreline/jupiter.in | 6 ++ examples/CosmicShoreline/makeplot.py | 73 +++++++++++++++++++ examples/CosmicShoreline/mars.in | 6 ++ examples/CosmicShoreline/mercury.in | 6 ++ examples/CosmicShoreline/neptune.in | 6 ++ examples/CosmicShoreline/saturn.in | 6 ++ examples/CosmicShoreline/sun.in | 18 +++++ examples/CosmicShoreline/venus.in | 29 ++++++++ examples/CosmicShoreline/vpl.in | 25 +++++++ src/atmesc.c | 35 +++++++++ src/atmesc.h | 3 + src/body.c | 7 ++ src/body.h | 1 + src/evolve.c | 18 +++++ src/evolve.h | 1 + src/output.c | 30 ++++++++ src/output.h | 1 + src/vplanet.h | 2 + 23 files changed, 324 insertions(+), 2 deletions(-) create mode 100644 examples/CosmicShoreline/CosmicShoreline.png create mode 100644 examples/CosmicShoreline/README.rst create mode 100644 examples/CosmicShoreline/earth.in create mode 100644 examples/CosmicShoreline/george.in create mode 100644 examples/CosmicShoreline/jupiter.in create mode 100644 examples/CosmicShoreline/makeplot.py create mode 100644 examples/CosmicShoreline/mars.in create mode 100644 examples/CosmicShoreline/mercury.in create mode 100644 examples/CosmicShoreline/neptune.in create mode 100644 examples/CosmicShoreline/saturn.in create mode 100644 examples/CosmicShoreline/sun.in create mode 100644 examples/CosmicShoreline/venus.in create mode 100644 examples/CosmicShoreline/vpl.in diff --git a/Makefile b/Makefile index 8e36d81f8..a0fea5c7c 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ legacy: @echo "==========================================================================================================" debug: - -gcc -g -D DEBUG -Wunused-but-set-variable -Wunused-variable -Wfloat-equal -o bin/vplanet src/*.c -lm -DGITVERSION=\"$(GITVERSION)\" + -gcc -g -D DEBUG -o bin/vplanet src/*.c -lm -DGITVERSION=\"$(GITVERSION)\" debug_no_AE: -gcc -g -o bin/vplanet src/*.c -lm -DGITVERSION=\"$(GITVERSION)\" @@ -52,7 +52,7 @@ cpp: g++ -o bin/vplanet src/*.c -lm -O3 -fopenmp -fpermissive -w -DGITVERSION=\"$(GITVERSION)\" warnings: - clang -Weverything src/*.c -lm -O3 -DGITVERSION=\"$(GITVERSION)\" + -gcc -g -D DEBUG -Wunused-but-set-variable -Wunused-variable -Wfloat-equal -o bin/vplanet src/*.c -lm -DGITVERSION=\"$(GITVERSION)\" parallel: gcc -o bin/vplanet src/*.c -lm -O3 -fopenmp -DGITVERSION=\"$(GITVERSION)\" diff --git a/examples/CosmicShoreline/CosmicShoreline.png b/examples/CosmicShoreline/CosmicShoreline.png new file mode 100644 index 0000000000000000000000000000000000000000..92370e18586003cf94526ad88815af914bb9568d GIT binary patch literal 87564 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 literal 0 HcmV?d00001 diff --git a/examples/CosmicShoreline/README.rst b/examples/CosmicShoreline/README.rst new file mode 100644 index 000000000..ff41549f3 --- /dev/null +++ b/examples/CosmicShoreline/README.rst @@ -0,0 +1,37 @@ +The "Cosmic Shoreline" +========== + +Overview +-------- + +A reproduction of Zahnle & Catling (2018)'s cosmic shoreline, +a proposed boundary between planet with and without atmosphere. + +=================== ============ +**Date** 09/12/2024 +**Author** Rory Barnes +**Modules** Atmesc, STELLAR +**Approx. runtime** 10 seonds +=================== ============ + + + + +To run this example +------------------- + +.. code-block:: bash + + python makeplot.py + + +Expected output +--------------- + +.. figure:: CosmicShoreline.png + :width: 100% + :align: center + +The blue line is the cosmic shoreline and the blue points +represent the Solar System planets. The Sun's XUV luminosity +is assumed to follow the Ribas et al. (2005) model. diff --git a/examples/CosmicShoreline/earth.in b/examples/CosmicShoreline/earth.in new file mode 100644 index 000000000..d0374ceb5 --- /dev/null +++ b/examples/CosmicShoreline/earth.in @@ -0,0 +1,6 @@ +sName Earth +saModules atmesc +dMass 3.0018090452e-06 +dRadius -1. +dSemi 1.00000321 +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/george.in b/examples/CosmicShoreline/george.in new file mode 100644 index 000000000..618508379 --- /dev/null +++ b/examples/CosmicShoreline/george.in @@ -0,0 +1,6 @@ +sName George +saModules atmesc +dMass -14.54 +dRadius -4.007 +dSemi 19.19203990 +saOutputOrder Time -fXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/jupiter.in b/examples/CosmicShoreline/jupiter.in new file mode 100644 index 000000000..d3c34bc2c --- /dev/null +++ b/examples/CosmicShoreline/jupiter.in @@ -0,0 +1,6 @@ +sName Jupiter +saModules atmesc +dMass -317.83 +dRadius -11.2 +dSemi 5.20880408 +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/makeplot.py b/examples/CosmicShoreline/makeplot.py new file mode 100644 index 000000000..e74a34504 --- /dev/null +++ b/examples/CosmicShoreline/makeplot.py @@ -0,0 +1,73 @@ +import os +import pathlib +import subprocess +import sys + +import matplotlib as mpl +import matplotlib.pyplot as plt +import numpy as np +import vplot as vpl +from matplotlib.ticker import MaxNLocator +from mpl_toolkits.axes_grid1 import make_axes_locatable + +import vplanet + +path = pathlib.Path(__file__).parents[0].absolute() +sys.path.insert(1, str(path.parents[0])) + +output = vplanet.run(units = False) + +# Plot! +fig = plt.figure(figsize=(8.5, 6)) + +fxuv_earth = output.log.final.Earth.CumulativeFXUV + +fxuv = [] +fxuv.append(output.log.final.Mercury.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.Venus.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.Earth.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.Mars.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.Jupiter.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.Saturn.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.George.CumulativeFXUV/fxuv_earth) +fxuv.append(output.log.final.Neptune.CumulativeFXUV/fxuv_earth) + +escvel = [] +escvel.append(output.log.final.Mercury.EscapeVelocity/1e3) +escvel.append(output.log.final.Venus.EscapeVelocity/1e3) +escvel.append(output.log.final.Earth.EscapeVelocity/1e3) +escvel.append(output.log.final.Mars.EscapeVelocity/1e3) +escvel.append(output.log.final.Jupiter.EscapeVelocity/1e3) +escvel.append(output.log.final.Saturn.EscapeVelocity/1e3) +escvel.append(output.log.final.George.EscapeVelocity/1e3) +escvel.append(output.log.final.Neptune.EscapeVelocity/1e3) + +shorelinex = [] +shorelinex.append(0.2) +shorelinex.append(60) + +shoreliney = [] +shoreliney.append(1e-6) +shoreliney.append(1e4) + +plt.xlabel('Escape Velocity [km/s]') +plt.ylabel('Normalized Cumulative XUV Flux') +plt.plot(shorelinex,shoreliney,color=vpl.colors.pale_blue) +plt.plot(escvel,fxuv,'o',color='k') +plt.xscale('log') +plt.yscale('log') +plt.ylim(1e-6,1e4) +plt.xlim(0.1,200) + +plt.annotate('Mercury',(2.7,9)) +plt.annotate('Venus',(10.2,2.6)) +plt.annotate('Earth',(11.5,0.5)) +plt.annotate('Mars',(5,0.2)) +plt.annotate('Jupiter',(60,0.05)) +plt.annotate('Saturn',(37,0.014)) +plt.annotate('Uranus',(22,0.0034)) +plt.annotate('Neptune',(24,0.0006)) + + +# Save figure +fig.savefig(path / f"CosmicShoreline.png", bbox_inches="tight", dpi=200) diff --git a/examples/CosmicShoreline/mars.in b/examples/CosmicShoreline/mars.in new file mode 100644 index 000000000..67b9ead8e --- /dev/null +++ b/examples/CosmicShoreline/mars.in @@ -0,0 +1,6 @@ +sName Mars +saModules atmesc +dMass -0.107 +dRadius -0.53202 +dSemi 1.52366290 +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/mercury.in b/examples/CosmicShoreline/mercury.in new file mode 100644 index 000000000..d7a13d954 --- /dev/null +++ b/examples/CosmicShoreline/mercury.in @@ -0,0 +1,6 @@ +sName Mercury +saModules atmesc +dMass -0.0553 +dRadius -0.383 +dSemi 0.38709897 +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/neptune.in b/examples/CosmicShoreline/neptune.in new file mode 100644 index 000000000..e7a477588 --- /dev/null +++ b/examples/CosmicShoreline/neptune.in @@ -0,0 +1,6 @@ +sName Neptune +saModules atmesc +dMass -17.15 +dRadius -3.883 +dSemi 30.07050641 +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/saturn.in b/examples/CosmicShoreline/saturn.in new file mode 100644 index 000000000..979218df2 --- /dev/null +++ b/examples/CosmicShoreline/saturn.in @@ -0,0 +1,6 @@ +sName Saturn +saModules atmesc +dMass -95.16 +dRadius -9.449 +dSemi 9.53999265 +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/sun.in b/examples/CosmicShoreline/sun.in new file mode 100644 index 000000000..80e98f955 --- /dev/null +++ b/examples/CosmicShoreline/sun.in @@ -0,0 +1,18 @@ +# The host star +sName Sun # Body's name +saModules stellar # Modules to apply, exact spelling required + +# Output +saOutputOrder Age -Luminosity -LXUVStellar -Radius Temperature + +# Physical Parameters +dMass 1.00 # Mass, solar masses +dAge 5e7 +dObliquity 0 +dRotPeriod -30 # Rotation period, negative -> days +dRadGyra 0.5 # Radius of gyration (moment of inertia constant) + +# STELLAR Parameters +sStellarModel baraffe # Stellar evolution model: `baraffe` or `none` +dSatXUVFrac 1.e-3 # Saturation level of the XUV luminosity +dSatXUVTime -0.1 diff --git a/examples/CosmicShoreline/venus.in b/examples/CosmicShoreline/venus.in new file mode 100644 index 000000000..7fef281d6 --- /dev/null +++ b/examples/CosmicShoreline/venus.in @@ -0,0 +1,29 @@ +# Planet a parameters +sName Venus # Body's name +saModules atmesc # Modules to apply, exact spelling required + +# Physical Properties +dMass -0.815 # Mass, negative -> Earth masses +dRadius -0.9499 # Radius, negative -> Earth radii +dRotPeriod -243. # Rotation period, negative -> days +dObliquity 180. # Retrograde rotation +dRadGyra 0.5 # Radius of gyration (moment of inertia constant) + +# ATMESC Properties +dXFrac 1.0 # X-Ray/XUV absorption radius (fraction of planet radius) +dSurfWaterMass -3.0 # Initial surface water (Earth oceans) +dEnvelopeMass 0 # Initial envelope mass (Earth masses) +bHaltSurfaceDesiccated 0 # Halt when dry? +bHaltEnvelopeGone 0 # Halt when evaporated? +dMinSurfWaterMass -1.e-5 # Planet is desiccated when water content drops below this (Earth oceans) +sWaterLossModel lbexact +sPlanetRadiusModel none +bInstantO2Sink 1 +sAtmXAbsEffH2OModel bolmont16 + +# Orbital Properties +dSemi -0.723 # Semi-major axis, negative -> AU +dEcc 0.006772 # Eccentricity + +# Output +saOutputOrder Time -FXUV -CumulativeFXUV diff --git a/examples/CosmicShoreline/vpl.in b/examples/CosmicShoreline/vpl.in new file mode 100644 index 000000000..c53e2fbce --- /dev/null +++ b/examples/CosmicShoreline/vpl.in @@ -0,0 +1,25 @@ +sSystemName solarsystem # System Name +iVerbose 5 # Verbosity level +bOverwrite 1 # Allow file overwrites? + +# List of "body files" that contain body-specific parameters +saBodyFiles sun.in mercury.in venus.in earth.in mars.in $ + jupiter.in saturn.in george.in neptune.in + +# Input/Output Units +sUnitMass solar # Options: gram, kg, Earth, Neptune, Jupiter, solar +sUnitLength aU # Options: cm, m, km, Earth, Jupiter, solar, AU +sUnitTime YEARS # Options: sec, day, year, Myr, Gyr +sUnitAngle d # Options: deg, rad + +# Input/Output +bDoLog 1 # Write a log file? +iDigits 6 # Maximum number of digits to right of decimal +dMinValue 1e-10 # Minimum value of eccentricity/obliquity + +# Evolution Parameters +bDoForward 1 # Perform a forward evolution? +bVarDt 1 # Use variable timestepping? +dEta 0.01 # Coefficient for variable timestepping +dStopTime 4.5e9 # Stop time for evolution +dOutputTime 1e8 # Output timesteps (assuming in body files) diff --git a/src/atmesc.c b/src/atmesc.c index 979afe37e..69dfa656d 100644 --- a/src/atmesc.c +++ b/src/atmesc.c @@ -2002,6 +2002,17 @@ void fnPropsAuxAtmEsc(BODY *body, EVOLVE *evolve, IO *io, UPDATE *update, } +void fvCumulativeAtmEsc(BODY *body,EVOLVE *evolve,SYSTEM *system,double dDt,int iBody) { + if (evolve->bFirstStep) { + body[iBody].dFXUVCumulative = 0; + body[iBody].dFXUVLast = fdXUVFlux(body,iBody); + } else { + body[iBody].dFXUV = fdXUVFlux(body,iBody); + body[iBody].dFXUVCumulative += fdTrapezoidalArea(body[iBody].dFXUV,body[iBody].dFXUVLast,dDt); + body[iBody].dFXUVLast = body[iBody].dFXUV; + } +} + /** Assigns functions returning the time-derivatives of each variable to the magical matrix of function pointers. @@ -3454,6 +3465,20 @@ void WriteHRefODragMod(BODY *body, CONTROL *control, OUTPUT *output, fvFormattedString(cUnit, ""); } +void WriteCumulativeFXUV(BODY *body, CONTROL *control, OUTPUT *output, + SYSTEM *system, UNITS *units, UPDATE *update, int iBody, + double *dTmp, char **cUnit) { + *dTmp = body[iBody].dFXUVCumulative; + + if (output->bDoNeg[iBody]) { + *dTmp *= output->dNeg; + fvFormattedString(cUnit, output->cNeg); + } else { + *dTmp *= fdUnitsEnergyFlux(units->iTime,units->iMass,units->iLength); + fsUnitsEnergyFlux(units,cUnit); + } +} + /** Logs the molecular oxygen mixing ratio. @@ -3693,6 +3718,16 @@ void InitializeOutputAtmEsc(OUTPUT *output, fnWriteOutput fnWrite[]) { output[OUT_FXUV].iModuleBit = ATMESC; fnWrite[OUT_FXUV] = &WriteFXUV; + fvFormattedString(&output[OUT_CUMULATIVEFXUV].cName, "CumulativeFXUV"); + fvFormattedString(&output[OUT_CUMULATIVEFXUV].cDescr, "Cumulative XUV flux"); + fvFormattedString(&output[OUT_CUMULATIVEFXUV].cNeg, "W/m^2"); + output[OUT_CUMULATIVEFXUV].bNeg = 1; + output[OUT_CUMULATIVEFXUV].dNeg = 1; + output[OUT_CUMULATIVEFXUV].iNum = 1; + output[OUT_CUMULATIVEFXUV].iModuleBit = ATMESC; + fnWrite[OUT_CUMULATIVEFXUV] = &WriteCumulativeFXUV; + + fvFormattedString(&output[OUT_HESCAPEREGIME].cName, "HEscapeRegime"); fvFormattedString(&output[OUT_HESCAPEREGIME].cDescr, "Integer flag for H envelope escape regime"); diff --git a/src/atmesc.h b/src/atmesc.h index bb4392110..89a0e740a 100644 --- a/src/atmesc.h +++ b/src/atmesc.h @@ -171,6 +171,7 @@ void FinalizeUpdateMassAtmEsc(BODY *, UPDATE *, int *, int, int, int); #define OUT_HDIFFFLUX 1238 /**< The diffusion limited flux (the true flux in the diffusion regime) */ #define OUT_HREFODRAGMOD 1239 /**< Multiply by H ref flux to get H flux with drag of oxgyen */ #define OUT_KTIDE 1240 /**< Gravitational enhancement of mass loss */ +#define OUT_CUMULATIVEFXUV 1250 void InitializeOutputAtmEsc(OUTPUT *, fnWriteOutput[]); void InitializeOutputFunctionAtmEsc(OUTPUT *, int, int); @@ -212,6 +213,8 @@ void LogBodyAtmEsc(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UPDATE *, void fnForceBehaviorAtmEsc(BODY *, MODULE *, EVOLVE *, IO *, SYSTEM *, UPDATE *, fnUpdateVariable ***, int, int); void fnPropsAuxAtmEsc(BODY *, EVOLVE *, IO *, UPDATE *, int); +void fvCumulativeAtmEsc(BODY *,EVOLVE *,SYSTEM *,double,int); + double fdDSurfaceWaterMassDt(BODY *, SYSTEM *, int *); double fdDEnvelopeMassDt(BODY *, SYSTEM *, int *); double fdDEnvelopeMassDtBondiLimited(BODY *, SYSTEM *, int *); diff --git a/src/body.c b/src/body.c index 3c31b2757..59e9b93f3 100644 --- a/src/body.c +++ b/src/body.c @@ -1528,4 +1528,11 @@ void fdHabitableZoneKopparapu2013(BODY *body, int iNumBodies, double fdEffectiveTemperature(BODY *body,int iBody) { double dTeff = pow((body[iBody].dLuminosity/(4*PI*SIGMA*body[iBody].dRadius*body[iBody].dRadius)),0.25); return dTeff; +} + +double fdEscapeVelocity(BODY *body,int iBody) { + double dEscVel; + + dEscVel = sqrt(2*BIGG*body[iBody].dMass/body[iBody].dRadius); + return dEscVel; } \ No newline at end of file diff --git a/src/body.h b/src/body.h index f50c57b24..fa3ecf016 100644 --- a/src/body.h +++ b/src/body.h @@ -110,6 +110,7 @@ double CalcDynEllipEq(BODY *, int); void fdHabitableZoneKopparapu2013(BODY *, int, double *); double fdEffectiveTemperature(BODY*,int); +double fdEscapeVelocity(BODY *,int); // RB: Move diff --git a/src/evolve.c b/src/evolve.c index 832eb495c..e4cf87efa 100644 --- a/src/evolve.c +++ b/src/evolve.c @@ -13,6 +13,11 @@ #include "vplanet.h" +double fdTrapezoidalArea(double dY1,double dY2,double dDeltaX) { + double dArea = 0.5*dDeltaX*(dY1 + dY2); + return dArea; +} + void PropsAuxGeneral(BODY *body, CONTROL *control) { /* Recompute the mean motion, necessary for most modules */ int iBody; // Dummy counting variable @@ -50,6 +55,17 @@ void PropertiesAuxiliary(BODY *body, CONTROL *control, SYSTEM *system, } } +void fvCumulative(BODY *body,CONTROL *control,SYSTEM *system,double dDt) { + int iBody; + + for (iBody=0;iBodyEvolve.iNumBodies;iBody++) { + if (body[iBody].bAtmEsc) { + fvCumulativeAtmEsc(body,&control->Evolve,system,dDt,iBody); + } + } + +} + void CalculateDerivatives(BODY *body, SYSTEM *system, UPDATE *update, fnUpdateVariable ***fnUpdate, int iNumBodies) { int iBody, iVar, iEqn; @@ -669,6 +685,8 @@ void Evolve(BODY *body, CONTROL *control, FILES *files, MODULE *module, } } + fvCumulative(body,control,system,dDt); + fdGetUpdateInfo(body, control, system, update, fnUpdate); /* Halt? */ diff --git a/src/evolve.h b/src/evolve.h index 641e4dedc..6eec7a40b 100644 --- a/src/evolve.h +++ b/src/evolve.h @@ -16,6 +16,7 @@ /* @cond DOXYGEN_OVERRIDE */ +double fdTrapezoidalArea(double,double,double); void PropertiesAuxiliary(BODY *, CONTROL *, SYSTEM *, UPDATE *); void fdGetUpdateInfo(BODY *, CONTROL *, SYSTEM *, UPDATE *, fnUpdateVariable ***); diff --git a/src/output.c b/src/output.c index 846d5a821..354386f2c 100644 --- a/src/output.c +++ b/src/output.c @@ -128,6 +128,23 @@ void WriteDensity(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, } } +/* + E +*/ + +void WriteEscapeVelocity(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, + UNITS *units, UPDATE *update, int iBody, double *dTmp, + char **cUnit) { + + *dTmp = fdEscapeVelocity(body,iBody); + if (output->bDoNeg[iBody]) { + *dTmp *= output->dNeg; + fvFormattedString(cUnit, output->cNeg); + } else { + *dTmp *= fdUnitsTime(units->iTime) / fdUnitsLength(units->iLength); + fsUnitsVel(units, cUnit); + } +} /* * H @@ -1305,6 +1322,19 @@ void InitializeOutputGeneral(OUTPUT *output, fnWriteOutput fnWrite[]) { output[OUT_DENSITY].iModuleBit = 1; fnWrite[OUT_DENSITY] = &WriteDensity; +/* + E +*/ + + fvFormattedString(&output[OUT_ESCAPEVELOCITY].cName, "EscapeVelocity"); + fvFormattedString(&output[OUT_ESCAPEVELOCITY].cDescr, "Escape Velocity"); + fvFormattedString(&output[OUT_ESCAPEVELOCITY].cNeg, "m/s"); + output[OUT_ESCAPEVELOCITY].bNeg = 1; + output[OUT_ESCAPEVELOCITY].dNeg = 1; + output[OUT_ESCAPEVELOCITY].iNum = 1; + output[OUT_ESCAPEVELOCITY].iModuleBit = 1; + fnWrite[OUT_ESCAPEVELOCITY] = &WriteEscapeVelocity; + /* * H */ diff --git a/src/output.h b/src/output.h index 369fea3a5..f5c5d3a97 100644 --- a/src/output.h +++ b/src/output.h @@ -108,6 +108,7 @@ #define OUT_LOSTENG 691 #define OUT_LOSTANGMOM 692 +#define OUT_ESCAPEVELOCITY 693 /* @cond DOXYGEN_OVERRIDE */ diff --git a/src/vplanet.h b/src/vplanet.h index de3ed3395..ff52fb16a 100644 --- a/src/vplanet.h +++ b/src/vplanet.h @@ -262,6 +262,8 @@ struct BODY { 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 */