This program collection contains a semi-implicit one-dimensional thermal model for planetary surfaces, an explicit subsurface vapor diffusion and deposition model, models for the equilibrium ice table on Mars, a fast method for subsurface-atmosphere vapor exchange for Mars, and a Monte-Carlo model for ballistic hops on the lunar surface.
Basic Models for Planetary Surfaces
|Basic Thermal Model||flux_noatm.f90||Insolation on horizontal or sloped surface without atmosphere||function flux_noatm|
|conductionQ.f||1D thermal conduction with heterogeneous thermal properties and flux/radiation boundary condition, semi-implicit solver||conductionQ|
|tridag.f||from Numerical Recipes (©), without stop and pause statements, NMAX=1000||tridag|
|asteroid_thermal.f90||main program||module constants|
|oneasteroid_thermal1d.f90||1D diffusion of temperture for asteroid||oneasteroid|
|grids.f||creates appropriate 1D grids, calculates thermal properties of soil with ice||setgrid|
|General Purpose||psv.f||vapor pressure of H2O||function psv|
|psvco2.f||vapor pressure of CO2||function psvco2|
|generalorbit.f||distance, longitude, and declination of the sun from orbital elements||generalorbit|
|julday.for||from Numerical Recipes (©), but without the pause statement||function julday|
|derivs.f90||first and second derivatives on irregular grid||deriv1|
|makefile||Example makefile; shows file dependencies|| |
Mars Subsurface Ice Model (M-SIM)
|Mars Thermal Model||flux.f||Insolation on horizontal or sloped surface with a poor man's Mars atmosphere||function flux|
|marsorbit.f||position of the sun as seen from Mars; data from Allison & McEwen (2000)||marsorbit|
|conductionT.f||1D thermal conduction with heterogeneous thermal properties and temperature boundary condition, semi-implicit solver||conductionT|
|tprofile.m||Matlab script that compares temperature profile with analytic solution|| |
|modeldescription.pdf||Notes on Numerics (see Part 1)|| |
|mars_thermal1d.f||1D diffusion of temperature for Mars; prototype example of how to call conductionQ/T with seasonal CO2 frost cover||main|
|input.par||Example input file for mars_thermal1d.f|
|Diffusion Model||vapordiffusioni.f||Diffusion of water vapor with phase transitions on irregular grid, explicit solver, (adsorption is turned off)||vapordiffusioni|
|adsorption.f||amount of adsorbed H2O and more||adsorption|
|modeldescription.pdf||Notes on Numerics (see Part 2)|| ||exper_thermal1d.f||1D diffusion of temperature and optionally also vapor with prescribed surface temperature||main|
|exper.par||Example input file for exper_thermal1d.f|
|jsub.f||net flux between ice table and surface, includes thermal model||jsub|
|jsubv.f90||vectorized version of jsub, includes emission from one surface to another||jsubv|
|mars_mapi.f||determines equilibrium ice table depth for a list of locations (such as the entire globe); contains leftover Numerical Recipes code (©)||main|
|mapgrid.dat||Example input file for mars_mapi.f|
|mars_mapt2.f||calls jsub for a list of locations (such as the entire globe)||main|
|mars_mapiqh2v.f90||version of mars_mapi that uses jsubv and slope coupling, configured for cluster||main|
|fast_modules.f90||numerically accelerated routines for growth and depletion of subsurfac ice, Fortran modules||module miscparameters|
|fast_subs_univ.f90||numerically accelerated routines for growth and depletion of subsurface ice, general subroutines||
|fast_subs_exper.f90||numerically accelerated routines for growth and depletion of subsurface ice||
|fast_subs_mars.f90||numerically accelerated routines for growth and depletion of subsurface ice||
|stabgrow_fast.f90||numerically accelerated growth of pore ice||main|
|exper_fast.f90||numerically accelerated growth and depletion of subsurface ice||main|
|input_fast.par||Example input file for stabgrow_fast.f90 and exper_fast.f90|
|mars_fast.f90||numerically accelerated growth and depletion of subsurface ice||main|
|lats.ph||Example input file for mars_fast.f90|
|moon4.f90||main program; event driven Monte Carlo model for ballistic hops of water molecules on the lunar surface||module grid|
|montecarlo.f90||ballistic hops, event scheduler||
|subl_subs.f90||miscellaneous physical parametrizations||
|gasdev.for||Gaussian probability distribution, Numerical Recipes(©)||function gasdev|
|ran2.for||random number generator, Numerical Recipes(©)||function ran2|
5 Feb 2015: added lunar Monte Carlo model for exospheric transport of water molecules
3/4 Jun 2014: changed NMAX=2000 to NMAX=1000 almost everywhere
31 May 2014: added a few simple routines for thermal modeling of asteroids; reorganized webpage
4 Sep 2011: better implementation of "mode 2" ice growth, affecting fast_subs_mars.f90 and fast_subs_univ.f90
25 Aug 2011: generalizations to mars_fast.f90, fast_modules.f90, and fast_subs_mars.f90
20 Jul 2011: technical updates (generalizations) to grids.f, jsub.f, mars_mapt2.f, and mars_mapi.f
28 Mar 2010: updated fast_subs_mars.f90; icelayer_mars has been parallelized, but parallelization is disabled by default; fewer calls to conductionT in ajsub_mars
27 Mar 2010: minor polish of the very old program mars_thermal1d.f
9 Feb 2010: grids.f has an additional subroutine and the default for the parametrization of thermal conductivity has changed.
4 Feb 2010: From now on, old versions will be archived in directory OldVersions.
2 Jan 2010: routines for fast method have been added. Their filenames contain the string fast.
Summer 2009: switched from g95/g77 to gfortran compiler.
31 Oct 2008: added deriv1_onesided to derivs.f90
2006: Troy Hudson discovered a grid-point offset in conductionT and conductionQ, which has been corrected.
2005: Thanks to Mischa Kreslavsky for providing correct formulas for energy balance on a slope.
Many Thanks to Andy Vaught for developing an open-source Fortran 95 compiler (www.g95.org). The early versions of this code were developed with this compiler.