Extended IDL Help

This page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? mk_html_help

at the IDL command line prompt.

Last modified: Thu Mar 24 12:22:43 2016.


List of Routines


Routine Descriptions

AAVT_README

[Next Routine] [List of Routines]
 NAME:
   AAvt_README
 PURPOSE
   Print the file 'AAvt_README.pro'
 CATEGORY:
  Volatile transport and thermophysical modeling (vt)
 CALLING SEQUENCE:
  AAvt_README
 
 ---------------------------------------------------------------------------
 FILES AND ENVIRONMENT VARIABLES
 ---------------------------------------------------------------------------
 
 None

 ---------------------------------------------------------------------------
 FUNCTIONS
 ---------------------------------------------------------------------------

 A help file was  

 mk_html_help,['.','vty16'],'AAvt.html'

 ---------------------------------------------------------------------------
 VARIABLES
 ---------------------------------------------------------------------------
 
 VT16
 ----
 In vty16, there are some common variable names used in multiple
 functions.
 ARRAY LENGTHS
 n_z : number of layers

 ---------------------------------------------------------------------------
 FUNCTIONS FROM ELSEWHERE IN THE LAYOUNG LIBRARY
 ---------------------------------------------------------------------------
 general/physconstants
 ---------------------------------------------------------------------------

(See AAvt_README.pro)


BZ1980_VP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  bz1980_vp
 PURPOSE: (one line)
  Return vapor pressure, optionally latent heat
 DESCRIPTION:
  Return vapor pressure, optionally latent heat from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  vp = bz1980_vp(species, t, latentheat, energyratio, phase)
 INPUTS:
  species: string 
    Valid species are: p-H2, O2, N2, F2, CO, CO2, Ne, Ar, Kr, Xe, CH4, C2H4, C2H6
  t : temperature, K
 OUTPUTS:
  vp : vapor pressure in microbar
 OPTIONAL OUTPUT
  latentheat : latent heat of sublimation or vaporization in erg/g
  energyratio : ratio of latent to kinetic energy, unitless.
    latent heat per molecule / (k*T)
  phase : a string representing the phase
  key: string giving designation in  bz1980_vp_table3.txt
  ap: the polynomial coefficients A0..A6 in bz1980_vp_table3.txt
 RESTRICTIONS:
  The files "bz1980_vp_table1.txt" and "bz1980_vp_table3.txt"
   must be in the same directory as bz1980_vp.pro
 PROCEDURE:
  This function implements the tables of 
   Brown, G.N., Ziegler, W.T., 1980.
   Vapor pressure and heats of vaporization and
   sublimation of liquids and solids of interest in cryogenics below 1atm
    pressure. Adv. Cryog. Eng. 25, 662–670.
   (note there is confustion about the year of this publication, as
   the conference was 1979 and the procedings were published in
   1980).
  Latent heat is calculated from the derivative of the vapor
  pressure, as John Stansberry pointed out that the BZ latent heat
  tables are incorrect.
 MODIFICATION HISTORY:
  Written 2011 Apr 10, by Leslie Young, SwRI
  2016 Mar 22 Cleaned up documentation, LAY 

(See bz1980_vp.pro)


CH4LATENTHEAT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  ch4latentheat
 PURPOSE: (one line)
  Return latent heat of sublimation of CH4 in erg/g from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  latentheat = ch4latentheat(t)
 INPUTS:
  t : temperature, K
 KEYWORD INPUTS
  None
 OUTPUTS:
  latentheat : latent heat of sublimation in erg/g
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2011 Apr 10, by Leslie Young, SwRI

(See ch4latentheat.pro)


CH4T

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  ch4t
 PURPOSE: (one line)
  Return vapor pressure of CH4 from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  t = ch4t(vp)
 INPUTS:
  vp : vapor pressure in microbar
 KEYWORD INPUTS
  None
 OUTPUTS:
  t : temperature, K
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2013 Jun 16, by Leslie Young, SwRI

(See ch4t.pro)


CH4VP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  ch4vp
 PURPOSE: (one line)
  Return vapor pressure of CH4 from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  vp = ch4vp(t)
 INPUTS:
  t : temperature, K
 KEYWORD INPUTS
  None
 OUTPUTS:
  vp : vapor pressure in microbar
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2013 Jun 13, by Leslie Young, SwRI

(See ch4vp.pro)


COLATENTHEAT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  colatentheat
 PURPOSE: (one line)
  Return latent heat of sublimation of CO in erg/g from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  latentheat = colatentheat(t)
 INPUTS:
  t : temperature, K
 KEYWORD INPUTS
  None
 OUTPUTS:
  latentheat : latent heat of sublimation in erg/g
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2011 Apr 10, by Leslie Young, SwRI

(See colatentheat.pro)


COVP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  covp
 PURPOSE: (one line)
  Return vapor pressure of CO from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  vp = covp(t)
 INPUTS:
  t : temperature, K
 KEYWORD INPUTS
  None
 OUTPUTS:
  vp : vapor pressure in microbar
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2009 Dec 7, by Leslie Young, SwRI

(See covp.pro)


N2LATENTHEAT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  n2latentheat
 PURPOSE: (one line)
  Return latent heat of sublimation of N2 in erg/g from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  latentheat = n2latentheat(t)
 INPUTS:
  t : temperature, K
 KEYWORD INPUTS
  None
 OUTPUTS:
  latentheat : latent heat of sublimation in erg/g
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2011 Jan 25, by Leslie Young, SwRI

(See n2latentheat.pro)


N2T

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  n2t
 PURPOSE: (one line)
  Return vapor pressure of N2 from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  t = n2t(vp)
 INPUTS:
  vp : vapor pressure in microbar
 KEYWORD INPUTS
  None
 OUTPUTS:
  t : temperature, K
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2013 Jun 16, by Leslie Young, SwRI

(See n2t.pro)


N2VP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  n2vp
 PURPOSE: (one line)
  Return vapor pressure of N2 from Brown & Ziegler 1980
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  vp = n2vp(t)
 INPUTS:
  t : temperature, K
 KEYWORD INPUTS
  None
 OUTPUTS:
  vp : vapor pressure in microbar
 OPTIONAL OUTPUT
  None
 RESTRICTIONS:
 PROCEDURE:
  This function implements the tables of Brown and Zeigler 
 MODIFICATION HISTORY:
  Written 2011 Aug 24, by Leslie Young, SwRI

(See n2vp.pro)


VT3D_THERMPRO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vt3d_thermpro
 PURPOSE: (one line)
  Calculate temperatures on a surface in a style
  similar to thermprojrs
 DESCRIPTION:
  vt3d_thermpro
 CATEGORY:
  VT3D
 CALLING SEQUENCE:
  vt3d_thermpro,tsurf,tod,tdeep,teq,balance,tdarr,zarr0
 INPUTS:
  rhel heliocentric distance, AU
   alb bolometric albedo
   ti  thermal inertia, erg-cgs.  Can be an array, in which case it gives the ti of each slab
   rot Rotation period, days
 KEYWORDS: 
   emvty    emissivity                   (default 1.0)
   rho      density, g cm-3.  Can be an array, giving the density of each slab. (default 1.0)
   cp       specific heat, erg g-1 K-1 (default H20)
   plat     latitude (radians)           (default 0.0)
   sunlat   Subsolar latitude (radians)  (default 0.0)
   heatflow Endogenic heat flow, erg cm-2 s-1 (default 0.0)
   zarr     Array of depths to the BASE of each slab (NOT slab thicknesses), in cm.  
            First element must be non-zero.
   zeta     array to CENTER of each slab
   nslab    Number of slabs (ignored if zarr set)        (default 30)
   ntinc    Time increments per day                      (default 5000)
   nday     Number of days per run                       (default 4)
   skdepths Model depth, in skindepths (ignored if zarr set)  (default 6)
   sol_norm_1au solar constant, erg cm-2 s-1 
   silent   If set, sends no output to the terminal (except stability warnings)
 OUTPUT
   tsurf:    diurnal surface temperature array
   tod:      time of day array (in radians)
   tdeep:    final deep temperature
   teq:      Instantaneous-equilibrium temperature array
   balance:  Thermal balance: (power out - heatflow)/(power in)
   tdarr:    temperature/depth array, with 200 diurnal increments
             (set this to a defined variable before entering thermprojrs).
   zarr0:    for convenience, returns the array of slab-bottom depths
              (same as zarr)

 MODIFICATION HISTORY:
  Written 2012 Oct 12, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in layoung library.

(See vt3d_thermpro.pro)


VTY16_ALPHA_INTERIOR

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_alpha_interior
 PURPOSE: (one line)
  Return alpha[1..J] for volatile transport timestepping
 DESCRIPTION:
  Return alpha[1..J] for volatile transport timestepping
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  alpha_i = vty16_alpha_interior(tau, del)
 INPUTS:
  tau : non-dimentionalized time step, scalar
  del : non-dimentionalized layer width, float[J]
 OPTIONAL INPUTS
  del_a : non-dimentionalized distance to layer above, float[J]
 OUTPUTS:
  alpha_i : dependance of temp[1..J] on temp[0..J-1], float[J]
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Table 4 & 5
 MODIFICATION HISTORY:
  Written 2011 Dec 30, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_alpha_interior.pro)


VTY16_BETA_INTERIOR

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_beta_interior
 PURPOSE: (one line)
  Return beta[1..J] for volatile transport timestepping
 DESCRIPTION:
  Return beta[1..J] for volatile transport timestepping
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  beta_i = vty16_beta_interior(tau, del)
 INPUTS:
  tau : non-dimentionalized time step, scalar
  del : non-dimentionalized layer width, float[J]
 OPTIONAL INPUTS
  del_b : non-dimentionalized distance to layer below, float[J]
 OUTPUTS:
  beta_i : dependance of temp[1..J] on temp[2..J+1], float[J]
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Table 4 & 5
 MODIFICATION HISTORY:
  Written 2011 Dec 30, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_beta_interior.pro)


VTY16_DFLUXDTEMP_EMIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_dfluxdtemp_emit
 PURPOSE: (one line)
  Return (d flux / d T) associated with thermal emission
 DESCRIPTION:
  Return (d flux / d T) associated with thermal emission
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  phi_e = vty16_dfluxdtemp_emit(emis, temp)
 INPUTS:
  emis : emissivity, unitless
  temp : temperature, K
 OUTPUTS:
  phi_e : d flux/d T in erg cm^-2 s^-1 K^-1
    where flux is the thermal emission
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq. 3.2-9b
 MODIFICATION HISTORY:
  Written 2011 Apr 10, by Leslie Young, SwRI
  2011-05-18 LAY.  change from e*s*T^3 to 4*e*s*T^3
  2011-12-30 LAY.  change from temp_0 to temp
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_dfluxdtemp_emit.pro)


VTY16_DFLUXDTEMP_SUBSTRATE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_dfluxdtemp_substrate
 PURPOSE: (one line)
  Return (d flux / d T) associated with thermal inertia
 DESCRIPTION:
  Return (d flux / d T) associated with thermal inertia
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  phi_s = vty16_dfluxdtemp_substrate(freq, therminertia)
 INPUTS:
  freq : frequency in s^-1
  therminertia : thermal inertia in erg cm^-2 s^-0.5 K^-1
 OUTPUTS:
  phi_gamma : d flux/d T in erg cm^-2 s^-1 K^-1
    where flux is the thermal conduction
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq. 3.2-9a
 MODIFICATION HISTORY:
  Written 2011 Apr 10, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_dfluxdtemp_substrate.pro)


VTY16_FIG3_1

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_fig3_1
 PURPOSE: (one line)
  Plot Young 2016, Fig3.1
 DESCRIPTION:
  Plot Young 2016, Fig3.1
 CATEGORY:
  VT3D
 CALLING SEQUENCE:
  vty16_fig3_1, phase, flux_sol, flux_sol_1, flux_sol_7
 INPUTS:
  none
 OPTIONAL OUTPUTS:
  phase: phase of the period running from 0 to 2 pi radian
  flux_sol : absorbed solar flux, erg/cm^2/s
  flux_sol_1 : approximate absorbed solar flux, M=1, erg/cm^2/s
  flux_sol_7 : approximate absorbed solar flux, M=7, erg/cm^2/s
 SIDE EFFECTS:
  creates vty16_fig3_1.tif and vty16_fig3_1.txt
 MODIFICATION HISTORY:
  Written 2012 Sep 29, by Leslie Young, SwRI
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_fig3_1.pro)


VTY16_FIG3_2

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_fig3_2
 PURPOSE: (one line)
  Plot Young 2016, Fig3.2
 DESCRIPTION:
  Plot Young 2016, Fig3.2
 CATEGORY:
  VT3D
 CALLING SEQUENCE:
  vty16_fig3_2
 INPUTS:
  none
 OPTIONAL OUTPUTS:
  zeta : scaled depth (zeta < 0), unitless, float[n_z]
  temp_phase0 : temperature as a function of depth for zero phase,
    when surface temperature equals its mean. K, float[n_z]
  temp_phase90 : temperature as a function of depth for 90 deg phase,
    when surface temperature equals its minimum. K, float[n_z]
  temp_envelope_max : envelope of temperature maxima, K, float[n_z]
  temp_envelope_min : envelope of temperature minima, K, float[n_z]
 SIDE EFFECTS:
  creates vty16_fig3_2.tif and vty16_fig3_2.txt
 MODIFICATION HISTORY:
  Written 2012 Sep 30, by Leslie Young, SwRI
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_fig3_2.pro)


VTY16_FIG3_3

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_fig3_3
 PURPOSE: (one line)
  Plot Young 2016, Fig3.3
 DESCRIPTION:
  Plot Young 2016, Fig3.3
 CATEGORY:
  VT3D
 CALLING SEQUENCE:
  vty16_fig3_3, tod_vt3d, tsurf_vt3d, phase, temp, temp_1, temp_7, temp
 INPUTS:
  none
 OPTIONAL OUTPUTS:
  tod_vt3d: phase of the period running from 0 to 2 pi radian
  tsurf_vt3 : absorbed solar flux, erg/cm^2/s
  flux_sol_1 : approximate absorbed solar flux, M=1, erg/cm^2/s
  flux_sol_7 : approximate absorbed solar flux, M=7, erg/cm^2/s
 SIDE EFFECTS:
  creates vty16_fig3_1.tif and vty16_fig3_1.txt
 MODIFICATION HISTORY:
  Written 2012 Sep 29, by Leslie Young, SwRI
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_fig3_3.pro)


VTY16_SKINDEPTH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
 vty16_skindepth
 PURPOSE: (one line)
  Return vty16_skindepth
 DESCRIPTION:
  Return vty16_skindepth
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  z_skin = vty16_skindepth(dens, specheat, thermcond, freq)
 INPUTS:
  dens : density of the substrate (g/cm^3)
  specheat : specific heat (erg/(g K))
  thermcond : thermal conductivity of the substrate (erg/(cm s K))
  freq : frequency of the solar forcing, 2 pi/period (1/(s))
 OUTPUTS:
  z_skin : skin depth (cm)
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq 3.2-6
 MODIFICATION HISTORY:
  Written 2011 Aug 10, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_skindepth.pro)


VTY16_SOLAR_MU

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_solar_mu
 PURPOSE: (one line)
  Return cosine of the solar incidence angle, mu >= 0
 DESCRIPTION:
  Return cosine of the solar incidence angle, mu >= 0
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  mu0 = vty16_solar_mu(lat, lon, lat0, lon0)
 INPUTS:
  lat - scalar or array of latitudes (radian)
  lon - scalar or array of longitudes (radian)
  lat0 - scalar or array of sub-solar latitude (radian)
  lon0 - scalar or array of sub-solar longitude (radian)
 KEYWORD INPUT PARAMETERS:
  lonavg - return the longitudinal average for the given lat and lat0
  coslat, sinlat, coslon, sinlon : can pass these if they've
  been already computed
 OUTPUTS:
  mu0 = cos(theta0), where theta0 is angle of the sun with respect to the zenith
  If 
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  lat and lon must be scalars or both 1-D arrays of length n_loc
  lat0 and lon0 must be scalars or both 1-D arrays of length n_time
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
  Resubmitted to Icarus.
  Eq. 3.1-5 (Eq 3.2-4a for longitudinal averaged mu0)
 MODIFICATION HISTORY:
  Written 2011 March 6, by Leslie Young, SwRI
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_solar_mu.pro)


VTY16_SOLWAVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_solwave
 PURPOSE: (one line)
  Return solar wave
 DESCRIPTION:
  Return solar wave
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  sol = vty16_solwave(sol_terms, phase)
 INPUTS:
  sol_terms = [sol_0, sol_1, ...], erg cm^-2 s^-1 : complex[n_term+1] or complex[n_loc,n_term+1]
   s.t., at the surface, sol(phase) = sol_0 + sol_1 exp(i*phase) + temp_2 exp(2*i*phase) + ...
  phase: float or float[n_t], where n_t is the number of time steps. frequency * time, radian
 OUTPUTS:
  sol: solar flux, erg cm^-2 s^-1. float, float[n_t], float[n_loc], or float[n_t,n_loc]

   sol_t           phase  sol  
   n_term+1        scalar scaler
   n_loc,n_term+1  scalar n_loc
   n_term+1        n_t    n_t
   n_loc,n_term+1  n_t    n_t,n_loc
   
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq 3.2-1
 MODIFICATION HISTORY:
  Written 2012 Jan 11, by Leslie Young, SwRI
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_solwave.pro)


VTY16_SOL_TERMS_DIURNAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_sol_terms_diurnal
 PURPOSE: (one line)
  return the diurnal solar terms in sinusoidal expansion
 DESCRIPTION:
  return the diurnal solar terms such that
    s[i,lon] = sol_terms[i,0] + Re( sol_terms[i,1]*exp(_i*  p) )$
                          + Re( sol_terms[i,2]*exp(_i*2*p) ) + 
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
   sol_terms = vty16_sol_terms_diurnal(dist_sol_au, albedo, lat, h_phase0, lat_sol, n_terms)
 INPUTS:
  dist_sol_au : sub-solar distance, in AU, float
  albedo : hemispheric albedo, unitless, float or float[n_loc]
  lat : latitude, radian, float or float[n_loc]
  h_phase0 : hour angle at zero phase
  lat_sol : subsolar latitude, radian, float
  n_terms : number of terms in the expansion
 OPTIONAL INPUTS:
  sol_norm_1au - Normal incident solar flux at 1 AU (scalar, erg/cm^2/s)
    Default 1367.6e3
 OUTPUTS:
  sol_terms : the complex diurnal solar terms in a sinusoidal expansion, 
    ergcm^2/s, complex[n_loc, n_term+1] or complex[n_term+1]
 OPTIONAL INPUTS:
  h_max - Hour angle at sunset, radian, float or float[n_loc]
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
  Resubmitted to Icarus.
  Eq 3.2-4a,  3.2-4b,  3.2-4c
 MODIFICATION HISTORY:
  Written 2012 Jan 8, by Leslie Young, SwRI
  2012 Apr 19 LAY, change offset to h_phase0
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_sol_terms_diurnal.pro)


VTY16_TEMP_TERM0_BARE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_temp_term0_bare
 PURPOSE: (one line)
  Return temperature in balance with mean absorbed solar flux
 DESCRIPTION:
  Return temperature in balance with mean absorbed solar flux
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  temp_0 = vty16_temp_term0_bare(sol_0, flux_int, emis)
 INPUTS:
  sol_0 : mean absorbed solar flux, erg/cm^2/s : float[n_term+1] or float[n_loc,n_term+1]
  flux_int : internal heat flux, erg/cm^2/s, float or float[n_loc]
  emis : thermal emissivity, unitless, float or float[n_loc]
 OUTPUTS:
  temp_0: temperature in balance with mean absorbed solar flux, float or float[n_loc]
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq 3.2-8
 MODIFICATION HISTORY:
  Written 2011 Dec 31, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_temp_term0_bare.pro)


VTY16_TEMP_TERMS_BARE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_temp_terms_bare
 PURPOSE: (one line)
  Return temperature in balance with mean absorbed solar flux
 DESCRIPTION:
  Return temperature in balance with mean absorbed solar flux
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  temp_terms = vty16_temp_terms_bare(sol_terms,flux_int,emis,freq,therminertia)
 INPUTS:
  sol_terms : absorbed solar flux, complex or real, erg/cm^2/s:
   complex[n_term+1] or complex[n_loc,n_term+1]
     defined so that (if _i = sqrt(-1) )
     sol = sol_terms[0] + sol_terms[1]*exp(   _i * freq * t) 
                        + sol_terms[2]*exp(2 *_i * freq * t) + ..
     
  flux_int : internal heat flux, erg/cm^2/s: float or float[n_loc]
  emis : thermal emissivity, unitless : float or float[n_loc]
  freq : frequency of forcing
  therminertia : thermal inertia, erg cm-2 s-1/2 K-1 : float or float[n_loc]
 OUTPUTS:
  temp_terms: terms of approximate temperture, K, such that
     temp = temp_terms[0] + temp_terms[1]*exp(   _i * freq * t + sqrt(    _i * zeta) ) 
                      + temp_terms[2]*exp(2 *_i * freq * t + sqrt(2 * _i * zeta) ) + ..
  temp_terms is complex[n_term+1] or complex[n_loc,n_term+1]
 RESTRICTIONS:
 PROCEDURE:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq 3.2-10
 MODIFICATION HISTORY:
  Written 2011 Dec 31, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_temp_terms_bare.pro)


VTY16_TEMP_TERMS_BARE_ITER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_temp_terms_bare_iter
 PURPOSE: (one line)
  Return temperature in balance with mean absorbed solar flux
 DESCRIPTION:
  Return temperature in balance with mean absorbed solar flux
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  temp_terms= vty16_temp_terms_bare_iter(sol_terms,flux_int,emis,freq,therminertia)
 INPUTS:
  sol_terms : absorbed solar flux, complex or real, erg/cm^2/s:
   complex[n_term+1] or complex[n_loc,n_term+1]
     sol = sol_terms[0] + sol_terms[1]*exp(_i * freq * t) 
                    + sol_terms[2]*exp(2 *_i freq t) + ..
     
  flux_int : internal hear flux, erg/cm^2/s: float or float[n_loc]
  emis : thermal emissivity, unitless : float or float[n_loc]
  freq : frequency of forcing
  therminertia : thermal inertia, erg cm-2 s-1/2 K-1 : float or float[n_loc]
 OUTPUTS:
  temp_t: terms of approximate temperture, K, s.t.
     temp = temp_t[0] + temp_t[1]*exp(   _i * freq * t + sqrt(    _i * zeta) ) 
                      + temp_t[2]*exp(2 *_i * freq * t + sqrt(2 * _i * zeta) ) + ..
  temp_terms is complex[n_term+1] or complex[n_loc,n_term+1]
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq. 3.2-10
 MODIFICATION HISTORY:
  Written 2011 Dec 31, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_temp_terms_bare_iter.pro)


VTY16_THERMWAVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  vty16_thermwave
 PURPOSE: (one line)
  Return thermal wave
 DESCRIPTION:
  Return thermal wave
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  temp = vty16_thermwave(temp_terms, phase, dtemp_dzeta, z_skin, zeta)
 INPUTS:
  temp_terms = [temp_0, temp_1, ...], K : complex[n_term+1] or complex[n_loc,n_term+1]
   s.t., at the surface, temp(phase) = temp_0 + temp_1 exp(i*phase) + temp_2 exp(2*i*phase) + ...
  phase: float or float[n_t]. freq * time, Hz
  dtemp_dzeta: float, float[n_loc]
   - internal heat flux / (sqrt(freq) * therminertia)
  z_skin: float or float[n_z] or float[n_loc,n_z]. 
   If z_skin is an array or matrix, then the skin depth varies with depth, and
   this attempts to modify the wave equation with the WKB approximation.
   This has no effect if z_skin is a scalar (constant with depth), so
   it is common to simply set z_skin = 1.
  zeta: scaled depth, float, float[n_z], float[n_loc, n_z]
 OUTPUTS:
  temp: float, float[n_t], float[n_z], or float[n_t,n_z]
        float[n_t,n_loc], 

   temp_terms      phase  substrate  temp  
   n_term+1        scalar scalar     scaler
   n_loc,n_term+1  scalar scalar     n_loc
   n_term+1        n_t    scalar     n_t
   n_loc,n_term+1  n_t    scalar     n_t,n_loc
   n_term+1        scalar n_z        n_z
   n_loc,n_term+1  scalar n_z        n_loc,n_z
   n_term+1        n_t    n_z        n_t,n_z
   n_loc,n_term+1  n_t    n_z        n_t,n_loc,n_z
   n_term+1        scalar n_loc,n_z  n_loc,n_z
   n_loc,n_term+1  scalar n_loc,n_z  n_loc,n_z
   n_term+1        n_t    n_loc,n_z  n_t,n_loc,n_z
   n_loc,n_term+1  n_t    n_loc,n_z  n_t,n_loc,n_z
   
 RESTRICTIONS:
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Eq 3.2-7
  If skin depth varies with z, then the wave is calculated with a wkb approximation.
 MODIFICATION HISTORY:
  Written 2011 Dec 30, by Leslie Young, SwRI
  Modified 2012 Sep 30, LAY.  Added m inside sqrt(_i) term.
  2016 Mar 22 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_thermwave.pro)


VTY16_VTSTEP_EXPL_SINGLE

[Previous Routine] [List of Routines]
 NAME:
  vty16_vtstep_expl_single
 PURPOSE: (one line)
  step the temperature one time step
 DESCRIPTION:
  step the temperature one time step
 CATEGORY:
  Volatile Transport
 CALLING SEQUENCE:
  vty16_step_sxpl_single, alpha_i, beta_0, beta_i, gamma_0, gamma_J, temp_0, temp_i
 INPUTS:
  alpha_i: dependance of temp[1..J] on temp[0..J-1], unitless, float[J]
  beta_0:  dependance of temp[0] on temp[1], unitless, float
  beta_i:  dependance of temp[1..J] on temp[2..J+1], unitless, float[J]
  gamma_0: net flux at upper boundary, K, float
  gamma_J: net flux at lower boundary, K, float
 INPUT-OUTPUTS:
  temp_0 : temperature at layer 0, K, float
  temp_i : temperature at layer 1..J, K, float[J]
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  temp_0 and temp_i are modified
 RESTRICTIONS:
  nsurf = 0 or 1
 PROCEDURE:
  Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
   Resubmitted to Icarus.
   Table 4 & 5
 MODIFICATION HISTORY:
  Written 2011 Feb 6, by Leslie Young, SwRI
  2016 Mar 24 LAY. Modified for inclusion in vty16 library.

(See vty16/vty16_step_expl_single.pro)