Skip to content

Commit

Permalink
Merge pull request #281 from VirtualPlanetaryLaboratory/ConstXUV
Browse files Browse the repository at this point in the history
Added new test for O2 sinks.
  • Loading branch information
RoryBarnes committed Apr 9, 2024
2 parents 719df2a + 91c875f commit 6027395
Show file tree
Hide file tree
Showing 15 changed files with 823 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/atmesc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1191,7 +1191,9 @@ void InitializeOptionsAtmEsc(OPTIONS *options, fnReadOption fnRead[]) {
sprintf(options[OPT_FXUV].cDimension, "energyflux");
options[OPT_FXUV].iType = 2;
options[OPT_FXUV].bMultiFile = 1;
fnRead[OPT_FXUV] = &ReadFXUV;
options[OPT_FXUV].dNeg = 1;
sprintf(options[OPT_FXUV].cNeg, "W/m^2");
fnRead[OPT_FXUV] = &ReadFXUV;

sprintf(options[OPT_MINKTIDE].cName, "dMinKTide");
sprintf(options[OPT_MINKTIDE].cDescr,
Expand Down
30 changes: 30 additions & 0 deletions tests/Atmesc/WaterELimConstXUVLB15NoO2SinkBolmont16/earth.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Planet a parameters
sName earth # Body's name
saModules atmesc # Modules to apply, exact spelling required

# Physical Properties
dMass -1 # Mass, negative -> Earth masses
dRadius -1 # Radius, negative -> Earth radii
dRotPeriod -1 # Rotation period, negative -> days
dObliquity 23.5 # Retrograde rotation
dRadGyra 0.5 # Radius of gyration (moment of inertia constant)

# ATMESC Properties
dFXUV -100 # Incident XUV flux (constant)
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 lb15
sPlanetRadiusModel none
bInstantO2Sink 0
sAtmXAbsEffH2OModel bolmont16

# Orbital Properties
dSemi -1 # Semi-major axis, negative -> AU
dEcc 0.0167 # Eccentricity

# Output
saOutputOrder Time -SurfWaterMass -RGLimit -OxygenMass -FXUV
24 changes: 24 additions & 0 deletions tests/Atmesc/WaterELimConstXUVLB15NoO2SinkBolmont16/vpl.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
sSystemName solarsystem # System Name
iVerbose 5 # Verbosity level
bOverwrite 1 # Allow file overwrites?

# List of "body files" that contain body-specific parameters
saBodyFiles earth.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.1 # Coefficient for variable timestepping
dStopTime 1e8 # Stop time for evolution
dOutputTime 1e8 # Output timesteps (assuming in body files)
29 changes: 29 additions & 0 deletions tests/Atmesc/WaterELimNoXUVLB15SinkO2Bolmont16/earth.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Planet a parameters
sName earth # Body's name
saModules atmesc # Modules to apply, exact spelling required

# Physical Properties
dMass -1 # Mass, negative -> Earth masses
dRadius -1 # Radius, negative -> Earth radii
dRotPeriod -1 # Rotation period, negative -> days
dObliquity 23.5 # 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 lb15
sPlanetRadiusModel none
bInstantO2Sink 1
sAtmXAbsEffH2OModel bolmont16

# Orbital Properties
dSemi -1 # Semi-major axis, negative -> AU
dEcc 0.0167 # Eccentricity

# Output
saOutputOrder Time -SurfWaterMass -RGLimit -OxygenMass
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
import astropy.units as u
from benchmark import Benchmark, benchmark


@benchmark(
{
"log.initial.system.Age": {"value": 0.000000, "unit": u.sec},
"log.initial.system.Time": {"value": 0.000000, "unit": u.sec},
"log.initial.system.TotAngMom": {
"value": 4.416946e33,
"unit": (u.kg * u.m**2) / u.sec,
},
"log.initial.system.TotEnergy": {"value": -2.237790e32, "unit": u.Joule},
"log.initial.system.PotEnergy": {"value": -2.239397e32, "unit": u.Joule},
"log.initial.system.KinEnergy": {"value": 1.606047e29, "unit": u.Joule},
"log.initial.system.DeltaTime": {"value": 0.000000, "unit": u.sec},
"log.initial.earth.Mass": {"value": 5.972186e24, "unit": u.kg},
"log.initial.earth.Radius": {"value": 6.378100e06, "unit": u.m},
"log.initial.earth.RadGyra": {"value": 0.500000},
"log.initial.earth.BodyType": {"value": 0.000000},
"log.initial.earth.Density": {"value": 5495.038549, "unit": u.kg / u.m**3},
"log.initial.earth.HZLimitDryRunaway": {"value": -1.000000, "unit": u.m},
"log.initial.earth.HZLimRecVenus": {"value": -1.000000},
"log.initial.earth.HZLimRunaway": {"value": -1.000000},
"log.initial.earth.HZLimMoistGreenhouse": {"value": -1.000000},
"log.initial.earth.HZLimMaxGreenhouse": {"value": -1.000000},
"log.initial.earth.HZLimEarlyMars": {"value": -1.000000},
"log.initial.earth.Instellation": {
"value": -1.000000,
"unit": u.kg / u.sec**3,
},
"log.initial.earth.MeanMotion": {"value": -1.000000, "unit": 1 / u.sec},
"log.initial.earth.OrbPeriod": {"value": -1.000000, "unit": u.sec},
"log.initial.earth.SemiMajorAxis": {"value": -1.000000, "unit": u.m},
"log.initial.earth.LXUVTot": {"value": -1.000000, "unit": u.kg / u.sec**3},
"log.initial.earth.SurfWaterMass": {"value": 3.000000, "unit": u.TO},
"log.initial.earth.EnvelopeMass": {"value": 0.000000, "unit": u.kg},
"log.initial.earth.OxygenMass": {"value": 0.000000, "unit": u.bar},
"log.initial.earth.RGLimit": {"value": 0.000000, "unit": u.au},
"log.initial.earth.XO": {"value": 0.333333},
"log.initial.earth.EtaO": {"value": 0.000000},
"log.initial.earth.PlanetRadius": {"value": 6.378100e06, "unit": u.m},
"log.initial.earth.OxygenMantleMass": {"value": 0.000000, "unit": u.kg},
"log.initial.earth.RadXUV": {"value": -1.000000, "unit": u.m},
"log.initial.earth.RadSolid": {"value": -1.000000, "unit": u.m},
"log.initial.earth.PresXUV": {"value": 5.000000},
"log.initial.earth.ScaleHeight": {"value": -1.000000, "unit": u.m},
"log.initial.earth.ThermTemp": {"value": 400.000000, "unit": u.K},
"log.initial.earth.AtmGasConst": {"value": 4124.000000},
"log.initial.earth.PresSurf": {"value": -1.000000, "unit": u.Pa},
"log.initial.earth.DEnvMassDt": {"value": 0.000000, "unit": u.kg / u.sec},
"log.initial.earth.FXUV": {"value": 0.000000, "unit": u.W / u.m**2},
"log.initial.earth.AtmXAbsEffH2O": {"value": 0.001000},
"log.initial.earth.RocheRadius": {"value": 1.037254e11, "unit": u.m},
"log.initial.earth.BondiRadius": {"value": 1.249016e08, "unit": u.m},
"log.initial.earth.HEscapeRegime": {"value": 8.000000},
"log.initial.earth.RRCriticalFlux": {
"value": 53.697959,
"unit": u.W / u.m**2,
},
"log.initial.earth.CrossoverMass": {"value": 0.000000, "unit": u.kg},
"log.initial.earth.WaterEscapeRegime": {"value": 8.000000},
"log.initial.earth.FXUVCRITDRAG": {"value": 53.272144, "unit": u.W / u.m**2},
"log.initial.earth.HREFFLUX": {"value": 0.000000, "unit": 1 / u.m**2 / u.sec},
"log.initial.earth.XO2": {"value": 0.000000},
"log.initial.earth.XH2O": {"value": 1.000000},
"log.initial.earth.HDiffFlux": {
"value": 1.264874e17,
"unit": 1 / u.m**2 / u.sec,
},
"log.initial.earth.HRefODragMod": {"value": 0.007752},
"log.initial.earth.KTide": {"value": 0.999908},
"log.initial.earth.RGDuration": {"value": 0.00000e00, "unit": u.yr},
"log.final.system.Age": {"value": 3.155760e13, "unit": u.sec},
"log.final.system.Time": {"value": 3.155760e13, "unit": u.sec},
"log.final.system.TotAngMom": {
"value": 4.416946e33,
"unit": (u.kg * u.m**2) / u.sec,
},
"log.final.system.TotEnergy": {"value": -2.237790e32, "unit": u.Joule},
"log.final.system.PotEnergy": {"value": -2.239397e32, "unit": u.Joule},
"log.final.system.KinEnergy": {"value": 1.606047e29, "unit": u.Joule},
"log.final.system.DeltaTime": {"value": 3.155760e13, "unit": u.sec},
"log.final.earth.Mass": {"value": 5.972186e24, "unit": u.kg},
"log.final.earth.Radius": {"value": 6.378100e06, "unit": u.m},
"log.final.earth.RadGyra": {"value": 0.500000},
"log.final.earth.BodyType": {"value": 0.000000},
"log.final.earth.Density": {"value": 5495.038549, "unit": u.kg / u.m**3},
"log.final.earth.HZLimitDryRunaway": {"value": -1.000000, "unit": u.m},
"log.final.earth.HZLimRecVenus": {"value": -1.000000},
"log.final.earth.HZLimRunaway": {"value": -1.000000},
"log.final.earth.HZLimMoistGreenhouse": {"value": -1.000000},
"log.final.earth.HZLimMaxGreenhouse": {"value": -1.000000},
"log.final.earth.HZLimEarlyMars": {"value": -1.000000},
"log.final.earth.Instellation": {"value": -1.000000, "unit": u.kg / u.sec**3},
"log.final.earth.MeanMotion": {"value": -1.000000, "unit": 1 / u.sec},
"log.final.earth.OrbPeriod": {"value": -1.000000, "unit": u.sec},
"log.final.earth.SemiMajorAxis": {"value": -1.000000, "unit": u.m},
"log.final.earth.LXUVTot": {"value": -1.000000, "unit": u.kg / u.sec**3},
"log.final.earth.SurfWaterMass": {"value": 3.000000, "unit": u.TO},
"log.final.earth.EnvelopeMass": {"value": 0.000000, "unit": u.kg},
"log.final.earth.OxygenMass": {"value": 0.000000, "unit": u.bar},
"log.final.earth.RGLimit": {"value": 0.000000, "unit": u.au},
"log.final.earth.XO": {"value": 0.333333},
"log.final.earth.EtaO": {"value": 0.000000},
"log.final.earth.PlanetRadius": {"value": 6.378100e06, "unit": u.m},
"log.final.earth.OxygenMantleMass": {"value": 0.000000, "unit": u.kg},
"log.final.earth.RadXUV": {"value": -1.000000, "unit": u.m},
"log.final.earth.RadSolid": {"value": -1.000000, "unit": u.m},
"log.final.earth.PresXUV": {"value": 5.000000},
"log.final.earth.ScaleHeight": {"value": -1.000000, "unit": u.m},
"log.final.earth.ThermTemp": {"value": 400.000000, "unit": u.K},
"log.final.earth.AtmGasConst": {"value": 4124.000000},
"log.final.earth.PresSurf": {"value": -1.000000, "unit": u.Pa},
"log.final.earth.DEnvMassDt": {"value": 0.000000, "unit": u.kg / u.sec},
"log.final.earth.FXUV": {"value": 0.000000, "unit": u.W / u.m**2},
"log.final.earth.AtmXAbsEffH2O": {"value": 0.001000},
"log.final.earth.RocheRadius": {"value": 1.037254e11, "unit": u.m},
"log.final.earth.BondiRadius": {"value": 1.249016e08, "unit": u.m},
"log.final.earth.HEscapeRegime": {"value": 8.000000},
"log.final.earth.RRCriticalFlux": {"value": 53.697959, "unit": u.W / u.m**2},
"log.final.earth.CrossoverMass": {"value": 0.000000, "unit": u.kg},
"log.final.earth.WaterEscapeRegime": {"value": 8.000000},
"log.final.earth.FXUVCRITDRAG": {"value": 53.272144, "unit": u.W / u.m**2},
"log.final.earth.HREFFLUX": {"value": 0.000000, "unit": 1 / u.m**2 / u.sec},
"log.final.earth.XO2": {"value": 0.000000},
"log.final.earth.XH2O": {"value": 1.000000},
"log.final.earth.HDiffFlux": {
"value": 1.264874e17,
"unit": 1 / u.m**2 / u.sec,
},
"log.final.earth.HRefODragMod": {"value": 0.007752},
"log.final.earth.KTide": {"value": 0.999908},
"log.final.earth.RGDuration": {"value": 1.00000e06, "unit": u.yr},
}
)
class Test_WaterELimNoXUVLB15SinkO2Bolmont16(Benchmark):
pass
24 changes: 24 additions & 0 deletions tests/Atmesc/WaterELimNoXUVLB15SinkO2Bolmont16/vpl.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
sSystemName solarsystem # System Name
iVerbose 5 # Verbosity level
bOverwrite 1 # Allow file overwrites?

# List of "body files" that contain body-specific parameters
saBodyFiles earth.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.1 # Coefficient for variable timestepping
dStopTime 1e6 # Stop time for evolution
dOutputTime 1e6 # Output timesteps (assuming in body files)
30 changes: 30 additions & 0 deletions tests/Atmesc/WaterELimNoXUVLB15SinkO2ConstXAbsEffH2O/earth.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Planet a parameters
sName earth # Body's name
saModules atmesc # Modules to apply, exact spelling required

# Physical Properties
dMass -1 # Mass, negative -> Earth masses
dRadius -1 # Radius, negative -> Earth radii
dRotPeriod -1 # Rotation period, negative -> days
dObliquity 23.5 # 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 lb15
sPlanetRadiusModel none
bInstantO2Sink 1
sAtmXAbsEffH2OModel none
dAtmXAbsEffH2O 0.1

# Orbital Properties
dSemi -1 # Semi-major axis, negative -> AU
dEcc 0.0167 # Eccentricity

# Output
saOutputOrder Time -SurfWaterMass -RGLimit -OxygenMass
Loading

0 comments on commit 6027395

Please sign in to comment.