From 64abb7628cd13a21383eb310906ad9037946a55f Mon Sep 17 00:00:00 2001 From: RoryBarnes Date: Tue, 5 Dec 2023 11:45:39 -0800 Subject: [PATCH] Added two new Atmesc tests. --- docs/tests.rst | 45 ++---- .../earth.in | 30 ++++ ...terELimNoXUVLB15NoO2SinkConstXAbsEffH2O.py | 139 ++++++++++++++++++ .../vpl.in | 24 +++ .../earth.in | 30 ++++ ...ELimNoXUVLBExactNoO2SinkConstXAbsEffH2O.py | 139 ++++++++++++++++++ .../vpl.in | 24 +++ 7 files changed, 396 insertions(+), 35 deletions(-) create mode 100644 tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/earth.in create mode 100644 tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O.py create mode 100644 tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/vpl.in create mode 100644 tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/earth.in create mode 100644 tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O.py create mode 100644 tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/vpl.in diff --git a/docs/tests.rst b/docs/tests.rst index 6e97d6acd..14e943d51 100644 --- a/docs/tests.rst +++ b/docs/tests.rst @@ -13,43 +13,18 @@ is sufficient time to ensure that integration is accurate. Unit tests are also used to track the amount of the code that is executed over the sum of all tests, further enabling confidence in the code's accuracy. -Test scripts live in the :code:`tests/` directory in the top-level repo folder. -Tests are executed automatically on Travis using :code:`py.test`, which will +Test scripts live in the :code:`tests/` directory and are executed automatically +on every pull request with GitHub Actions. To perform the tests, we use :code:`pytest`, which will find all Python files with the word :code:`test` somewhere in their name (side note: if it's not meant to be a test, don't put :code:`test` in the file name!). -The :code:`py.test` suite specifically checks for cases where an :code:`AssertionError` -is raised, so in your tests you should use :code:`assert` statements to check whether -the output is equal to (or very close to) a benchmarked value. - -To write a test, create a directory in :code:`tests/` with a descriptive name -(such as the modules it's meant to test or a specific application of the code). -Include the :code:`.in` files needed to run the test and create a Python -file :code:`test_.py`. This file should follow this basic structure: - -.. code-block:: python - - import vplanet - import numpy as np - import pathlib - - # Path to this directory - path = pathlib.Path(__file__).parents[0].absolute() - - def test_something(): - """Brief description of what we're testing.""" - # Run vplanet - output = vplanet.run(path / "vpl.in") - - # Run our comparisons - assert np.isclose(output.log.final.planet.Eccentricity, 0) - assert np.isclose(output.log.final.system.TotEnergy, output.log.initial.system.TotEnergy) - assert np.allclose(output.star.Luminosity, np.array([0.0672752 , 0.0672752 , 0.0080845...])) - -In the example above, we're checking three things: that the final planet -eccentricity (from the log file) is zero; that the final system energy -(from the log file) is equal to the initial system energy; and that -the star's luminosity (from the forward file) is equal to some array of -values. + +The VPLanet team has made it easy to add or revise tests. Inside the :code:`tests/` directory +is a file called :code:`maketest.py`, which will generate a unit test from a set of valid infiles. +So a typical procedure to create a new test is to: + +- Create a simulation that executes previously untested functionality +- Verify the results are accurate! (Obvious, we know, but please don't forget!) +- Copy the .in files t These unit tests not only ensure new modification don't break parts of the code that already work. In addition, they are used to compute the fraction of the code diff --git a/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/earth.in b/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/earth.in new file mode 100644 index 000000000..6998542d9 --- /dev/null +++ b/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/earth.in @@ -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 0 +sAtmXAbsEffH2OModel none +dAtmXAbsEffH2O 0.1 + +# Orbital Properties +dSemi -1 # Semi-major axis, negative -> AU +dEcc 0.0167 # Eccentricity + +# Output +saOutputOrder Time -SurfWaterMass -RGLimit -OxygenMass diff --git a/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O.py b/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O.py new file mode 100644 index 000000000..6a24eb0fc --- /dev/null +++ b/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O.py @@ -0,0 +1,139 @@ +import astropy.units as u +import pytest +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.100000}, + "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": 0.532721, "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.155760e15, "unit": u.sec}, + "log.final.system.Time": {"value": 3.155760e15, "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.155760e15, "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.100000}, + "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": 0.532721, "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.00000e08, "unit": u.yr}, + } +) +class Test_WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O(Benchmark): + pass diff --git a/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/vpl.in b/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/vpl.in new file mode 100644 index 000000000..f40cbe23e --- /dev/null +++ b/tests/Atmesc/WaterELimNoXUVLB15NoO2SinkConstXAbsEffH2O/vpl.in @@ -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) diff --git a/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/earth.in b/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/earth.in new file mode 100644 index 000000000..2ae3d0444 --- /dev/null +++ b/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/earth.in @@ -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 lbexact +sPlanetRadiusModel none +bInstantO2Sink 0 +sAtmXAbsEffH2OModel none +dAtmXAbsEffH2O 0.1 + +# Orbital Properties +dSemi -1 # Semi-major axis, negative -> AU +dEcc 0.0167 # Eccentricity + +# Output +saOutputOrder Time -SurfWaterMass -RGLimit -OxygenMass diff --git a/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O.py b/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O.py new file mode 100644 index 000000000..a5115e620 --- /dev/null +++ b/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/test_WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O.py @@ -0,0 +1,139 @@ +import astropy.units as u +import pytest +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.100000}, + "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": 0.532721, "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.155760e15, "unit": u.sec}, + "log.final.system.Time": {"value": 3.155760e15, "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.155760e15, "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.100000}, + "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": 0.532721, "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.00000e08, "unit": u.yr}, + } +) +class Test_WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O(Benchmark): + pass diff --git a/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/vpl.in b/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/vpl.in new file mode 100644 index 000000000..f40cbe23e --- /dev/null +++ b/tests/Atmesc/WaterELimNoXUVLBExactNoO2SinkConstXAbsEffH2O/vpl.in @@ -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)