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 Jul 7 23:39:43 2016.
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)
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
2016 June 25 enforce output to be same dimensions as t
(See bz1980_vp.pro)
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)
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)
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)
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)
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)
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)
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)
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)
NAME:
vt3d_1loc_diurnal_local
PURPOSE: (one line)
Calculate the diurnal variation at a single non-interacting location
DESCRIPTION:
Calculate the diurnal variation at a single non-interacting location
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
vt3d_1loc_diurnal_bare, constants, input, grid, program, output
INPUTS:
constants: constants structure, with
i ; sqrt(-1)
deg ; radian per deg
hour ; s per hour
year ; s per year
km ; cm per km
ti_SI ; [cgs thermal inertia] per [SI thermal inertia]
m_u ; atomic mass constant, g
N_a ; Avogadro constant, mol^-1
k ; Boltzmann constant, erg K^-1
sigma ; Stefan-Boltzmann constant erg cm^-2 K^-4 s^-1
G ; gravitational constant, cm^3 g^-1 s^-2
sol_norm_1au ; solar flux at 1 AU, erg/cm^2/s
input : inputs defining the problem
dist_sol_au ; heliocentric distance in AU
albedo ; bond albedo, assumed equal to hemispheric
emis ; emissivity, scalar
flux_int ; internal heat flux, erg cm^-2 s^-1
therminertia ; thermal inertia in erg cm^-2 s^1/2 K^-1, scalar
dens ; density, g cm^-3, scalar
specheat ; specific heat in erg g^-1 K^-1, scalar
thermcond ; thermal conductivity in erg cm^-1 s^-1 K^-1, scalar
lon_sol_ref ; reference sub-solar longitude, radian
t_lon_sol_ref ; time of lon_sol_ref, s
dlon_sol_dt ; rate of change of lon_sol, radian/s
; (negative for rotation N pole, E longitude)
lat_sol ; sub-solar latitude, radian
is_volatile ; 1 if has a volatile, 0 if bare. flag. scalar
mass_volatile ; mass of the volatile slab, g cm^-2, scalar
specheat_volatile ; specific heat of the volatile slab, erg g^-1 K^-1, scalar
gravacc ; gravitational acceleration, cm s^-2
name_species ; name of the species. String. "N2", "CO", or "CH4"
mflux_esc ; escape rate in g cm^-2 s^-1, constant with time
grid : grids
lat ; latitude of spot, radian, scalar
lon ; longitude of spot, radian, scalar
t_start ; time of calculation start, s, scalar
t_end ; time of calculation end, s, scalar
tau ; unitless timestep, (delta time) * (frequency)
zeta ; unitless depths of layers, cm, [nz]
program : program control
n_terms ; number of terms in the sinusoidal expansion
iterate_temp_terms ; 1 to iterate the explicit temp terms
iterate_dfluxdtemp_e ; iterate the flux-per-temperature for emission
explicit ; 1 if explicit timestep, 0 if implicit (Crank-Nicholson)
debug ; 1 to print debug statements, 0 otherwise
OUTPUT:
output: output
sol_terms : terms in solar expansion, erg cm^-2 s^-1, complex[nterm+1]
temp_terms : terms in temperature expansion, K, complex[nterm+1]
s : array of states
t : time
temp_0 : temperature of layer 0, K, scalar
temp_1J : temperature of layers 1..J, K, [nz]
SIDE EFFECTS:
RESTRICTIONS:
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Section 3 (is_volatile=0) & 4 (is_volatile=1)
(See vt3d/vt3d_1loc_diurnal_local.pro)
NAME: vt3d_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 = vt3d_alpha_interior(tau, del, del_a) INPUTS: tau : non-dimentionalized time step, scalar del : non-dimentionalized layer width, float[J+1] OPTIONAL INPUTS del_a : non-dimentionalized distance to layer above, float[J+1] 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 vt3d library.
(See vt3d/vt3d_alpha_interior.pro)
NAME: vt3d_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 = vt3d_beta_interior(tau, del, del_b) INPUTS: tau : non-dimentionalized time step, scalar del : non-dimentionalized layer width, float[J+1] OPTIONAL INPUTS del_b : non-dimentionalized distance to layer below, float[J+1] OUTPUTS: beta_i : dependance of temp[1..J] on temp[2..J+1], float[J] beta_[0:n_z-3] are defined; final element is zero. 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 vt3d library.
(See vt3d/vt3d_beta_interior.pro)
NAME:
vt3d_cn_tridc
PURPOSE: (one line)
Upper-Lower decomposition of the substrate matrix, S''
DESCRIPTION:
Upper-Lower decomposition of the substrate matrix, S''
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
spp_tridc = vt3d_cn_tridc(alpha_i, beta_i, spp_indx)
INPUTS:
alpha_i: dependance of temp[1..J] on temp[0..J-1], unitless, float[n_j]
beta_i: dependance of temp[1..J] on temp[2..J+1], unitless, float[n_j]
OUTPUTS:
spp_tridc - the tridiagonal LU decomposition of the substrate matrix, S.
spp_tridc[0,0:n_j-2] = spp_al
lower bidiagonal array. float[n_j]
spp_tridc[1,0:n_j-1] = spp_a
diagonal elements of the upper array. float[n_j+1]
spp_tridc[2,0:n_j-2] = spp_au
superdiagonal elements of the upper array. float[n_j]
spp_tridc[3,0:n_j-3] = u2
Second superdiagonal of the upper array. float(n_j-1)
spp_index An output vector that records the row permutations which occurred as a result of partial pivoting.
PROCEDURE:
Solve Crank Nickleson implicit equation
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
This is used as part of the Crank-Nicholson time step. See:
Table 4 & 5, Figure 3-6, Figure 3-8
The LU decomposition is done using LA_TRIDC
MODIFICATION HISTORY:
Written 2011 Feb 6, by Leslie Young, SwRI
2016 Mar 25 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_cn_tridc.pro)
NAME: vt3d_dfluxdtemp_atm PURPOSE: (one line) Return (d flux / d T) associated with atmosphere DESCRIPTION: Return (d flux / d T) associated with atmosphere, latent heat CATEGORY: Volatile Transport CALLING SEQUENCE: phi_a = vt3d_dfluxdtemp_atm(freq, temp_v, frac_varea, gravacc, name_species) INPUTS: freq : frequency in s^-1 temp_v : volatile frost temperature, frav_varea : fraction of area covered by volatiles, unitless Always 1 for local mass conservation (isolated volatile-covered areas) gravacc : effective grav. accelleration, cm/s^2, defined as mass_atm / p_surface gravacc = (GM/R^2) * (1 - 2 H/R) where G is the gravitational constant M is the mass of the body R is the surface radius H is the scale height name_species : string. "N2", "CO", or "CH4" OUTPUTS: phi_a : d flux/d T in erg cm^-2 s^-1 K^-1 OPTIONAL OUTPUTS: latheat : latent heat (erg/g) a : latent heat / kinetic energy ratio, ( (erg/molecule) / (k T) ) RESTRICTIONS: name_species must be one of 'N2', 'CO', 'CH4' PROCEDURE: Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 4.1-5 and 4.2-4b for isolated areas (frac_varea = 1) Eq. 4.1-5 and 5.2-2d for interactive areas (frac_varea = 0 to 1) MODIFICATION HISTORY: Written 2011 Apr 10, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_dfluxdtemp_atm.pro)
NAME:
vt3d_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 = vt3d_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 vt3d library.
(See vt3d/vt3d_dfluxdtemp_emit.pro)
NAME:
vt3d_dfluxdtemp_slab
PURPOSE: (one line)
Return (d flux / d T) associated with slab
DESCRIPTION:
Return (d flux / d T) associated with slab specific heat
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
phi_v = vt3d_dfluxdtemp_slab(freq, mass_0, specheat)
INPUTS:
freq : frequency in s^-1
mass_0 : time-averaged slab mass, averaged over the volatiles. g cm^-2
specheat : specific heat, averaged over the volatiles, erg g^-1 K^-1
specheat is defined as
total( specheat * mass_0 * angarea_delta ) / total( mass_0 * angarea_delta )
OUTPUTS:
phi_v : d flux/d T in erg cm^-2 s^-1 K^-1
RESTRICTIONS:
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Eq. 4.2-4a
MODIFICATION HISTORY:
Written 2011 Apr 10, by Leslie Young, SwRI
2011-11-05 LAY slightly changed documentation
2016 Jul 3 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_dfluxdtemp_slab.pro)
NAME:
vt3d_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 = vt3d_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 vt3d library.
(See vt3d/vt3d_dfluxdtemp_substrate.pro)
NAME:
vt3d_eflux_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:
flux_terms = vt3d_eflux_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]
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:
flux_terms: terms of approximate emitted flux, erg cm^-2 s^-1, s.t.
flux = flux_terms[0] + flux_terms[1]*exp( _i * freq * t + sqrt( _i * zeta) )
+ flux_terms[2]*exp(2 *_i * freq * t + sqrt(2 * _i * zeta) ) + ..
flux_terms is complex[n_term+1] or complex[n_loc,n_term+1]
OPTIONAL OUTPUTS:
temp_terms: terms of approximate temperture, K, s.t.
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:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Eq 3.2-17
MODIFICATION HISTORY:
Written 2011 Dec 31, by Leslie Young, SwRI
(See vt3d/vt3d_eflux_terms_bare.pro)
NAME:
vt3d_eflux_terms_local
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:
flux_terms = vt3d_eflux_terms_local(sol_terms,flux_int,emis,freq,therminertia, $
is_volatile, mass_volatile, specheat_volatile, gravacc, name_species)
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]
is_volatile : 1 if has a volatile, 0 if bare. flag. int or int[n_loc]
mass_volatile : mass of the volatile slab, g cm^-2 : float or float[n_loc]
specheat_volatile : specific heat of the volatile slab, erg g^-1 K^-1, scalar
gravacc : gravitational acceleration, cm s^-2
name_species : name of the species. String. "N2", "CO", or "CH4"
OPTIONAL INPUTS:
mflux_esc_terms ; escape rate in g cm^-2 s^-1
complex[n_term+1] or complex[n_loc,n_term+1]
defined so that (if _i = sqrt(-1) )
mflux_esc = mflux_esc_terms[0] + mflux_esc_terms[1]*exp( _i * freq * t)
+ mflux_esc_terms[2]*exp(2 *_i * freq * t) + ..
OUTPUTS:
flux_terms: terms of approximate emitted flux, erg cm^-2 s^-1, s.t.
flux = flux_terms[0] + flux_terms[1]*exp( _i * freq * t + sqrt( _i * zeta) )
+ flux_terms[2]*exp(2 *_i * freq * t + sqrt(2 * _i * zeta) ) + ..
flux_terms is complex[n_term+1] or complex[n_loc,n_term+1]
OPTIONAL OUTPUTS:
temp_terms: terms of approximate temperture, K, s.t.
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:
If defined, mflux_esc_terms must be the same dimensions as sol_terms
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Eq 4.2-10
MODIFICATION HISTORY:
Written 2011 Dec 31, by Leslie Young, SwRI
(See vt3d/vt3d_eflux_terms_local.pro)
NAME:
vt3d_locavg
PURPOSE: (one line)
Return spatial average over location
DESCRIPTION:
Return spatial average over location
CATEGORY:
Util
CALLING SEQUENCE:
avg = vt3d_locavg(val, weight, indx=indx, default=default)
INPUTS:
val = a scalar, array[n_loc], or array[n_loc,n_time]
weight = array float[n_loc]
- usually angular area of surface elements (ster)
OPTIONAL INPUT PARAMETER
indx = array long[n_indx], 0 <= indx < nloc.
If not passed, all indices are used.
If indx = -1, use "default"
default = returned value if indx = -1 (e.g., do not choose any elements)
OUTPUTS:
average of val or val[indx], weighted by area (weight)
PROCEDURE
At its core this is just total(val * weight)/ total(weight)
This is very similar to wmean, except:
1. it accepts weights instead of errors
2. it can accpet the indx keyword
3. the names are taylored for weighting a map
4. If val is 2-D, then average over the first dimension only
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Eq. 5.3-3
MODIFICATION HISTORY:
Written 2011 Aug 3, by Leslie Young, SwRI
2016 Apr 21, moved into layoung IDL library
(See vt3d/vt3d_locavg.pro)
NAME: vt3d_skindepth PURPOSE: (one line) Return vt3d_skindepth DESCRIPTION: Return vt3d_skindepth CATEGORY: Volatile Transport CALLING SEQUENCE: z_skin = vt3d_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 vt3d library.
(See vt3d/vt3d_skindepth.pro)
NAME: vt3d_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 = vt3d_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 vt3d library.
(See vt3d/vt3d_solar_mu.pro)
NAME: vt3d_solwave PURPOSE: (one line) Return solar wave DESCRIPTION: Return solar wave CATEGORY: Volatile Transport CALLING SEQUENCE: sol = vt3d_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 vt3d library.
(See vt3d/vt3d_solwave.pro)
NAME:
vt3d_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 = vt3d_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 OUTPUTS:
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 vt3d library.
(See vt3d/vt3d_sol_terms_diurnal.pro)
NAME: vt3d_step_cn_1loc PURPOSE: (one line) step the temperature one time step at a single location DESCRIPTION: step the temperature one time step at a single location CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_cn_1loc, 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] PROCEDURE: Solve Crank-Nicholson equation Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 3.4-9a, 3.4-9b MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_step_cn_1loc.pro)
NAME: vt3d_step_cn_nloc PURPOSE: (one line) step the temperature one time step DESCRIPTION: step the temperature one time step for multiple locations with local mass balance CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_cnl_nloc, 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[n_loc] beta_i: dependance of temp[1..J] on temp[2..J+1], unitless, float[J] gamma_0: net flux at upper boundary, K, float, float[n_loc] gamma_J: net flux at lower boundary, K, float INPUT-OUTPUTS: temp_0 : temperature at layer 0, K, float[n_loc] temp_i : temperature at layer 1..J, K, float[n_loc,J] COMMON BLOCKS: None SIDE EFFECTS: RESTRICTIONS: nsurf = 0 or 1 PROCEDURE: Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 3.4-18 MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI
(See vt3d/vt3d_step_cn_nloc.pro)
NAME: vt3d_step_cn_trisol_1loc PURPOSE: (one line) step the temperature one time step at a single location DESCRIPTION: step the temperature one time step at a single location CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_cn_trisol_1loc, alpha_i, beta_0, beta_i, gamma_0, gamma_J, spp_tridc, spp_indx, 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] PROCEDURE: Solve Crank-Nicholson equation Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 3.4-9a, 3.4-9b MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_step_cn_trisol_1loc.pro)
NAME:
vt3d_step_cn_trisol_nloc
PURPOSE: (one line)
step the temperature one time step
DESCRIPTION:
step the temperature one time step for multiple locations with
local mass balance
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
vt3d_step_cn_trisol_nloc, alpha_i, beta_0, beta_i, gamma_0, gamma_J, spp_tridc, spp_index, 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[n_loc]
beta_i: dependance of temp[1..J] on temp[2..J+1], unitless, float[J]
spp_tridc : LU decomposition of the S'' ("spp") matrix, made by vt3d_cn_tridc
spp_tridc : row permutations for partial pivoting to invert S'' ("spp"), made by vt3d_cn_tridc
gamma_0: net flux at upper boundary, K, float, float[n_loc]
gamma_J: net flux at lower boundary, K, float
INPUT-OUTPUTS:
temp_0 : temperature at layer 0, K, float[n_loc]
temp_i : temperature at layer 1..J, K, float[n_loc,J]
COMMON BLOCKS:
None
SIDE EFFECTS:
RESTRICTIONS:
nsurf = 0 or 1
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Eq. 3.4-18
MODIFICATION HISTORY:
Written 2011 Feb 6, by Leslie Young, SwRI
(See vt3d/vt3d_step_cn_trisol_nloc.pro)
NAME: vt3d_step_expl_nloc PURPOSE: (one line) step the temperature one time step DESCRIPTION: step the temperature one time step for multiple locations with local mass balance CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_expl_nloc, 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[n_loc] beta_i: dependance of temp[1..J] on temp[2..J+1], unitless, float[J] gamma_0: net flux at upper boundary, K, float, float[n_loc] gamma_J: net flux at lower boundary, K, float INPUT-OUTPUTS: temp_0 : temperature at layer 0, K, float[n_loc] temp_i : temperature at layer 1..J, K, float[n_loc,J] COMMON BLOCKS: None SIDE EFFECTS: RESTRICTIONS: nsurf = 0 or 1 PROCEDURE: Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 3.4-8a, 3.4-8b MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI
(See vt3d/vt3d_step_expl_nloc.pro)
NAME: vt3d_step_impl_1loc PURPOSE: (one line) step the temperature one time step at a single location DESCRIPTION: step the temperature one time step at a single location CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_impl_1loc, 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: RESTRICTIONS: nsurf = 0 or 1 PROCEDURE: Solve implicit equation Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. This is not used directly in Young 2016, but is used as part of the Crank-Nicholson time step. See: Eq. 3.4-9b MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_step_impl_1loc.pro)
NAME: vt3d_step_impl_nloc PURPOSE: (one line) step the temperature one time step DESCRIPTION: step the temperature one time step for multiple locations with local mass balance CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_impl_nloc, 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[n_loc] beta_i: dependance of temp[1..J] on temp[2..J+1], unitless, float[J] gamma_0: net flux at upper boundary, K, float, float[n_loc] gamma_J: net flux at lower boundary, K, float INPUT-OUTPUTS: temp_0 : temperature at layer 0, K, float[n_loc] temp_i : temperature at layer 1..J, K, float[n_loc,J] COMMON BLOCKS: None SIDE EFFECTS: RESTRICTIONS: nsurf = 0 or 1 PROCEDURE: Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 3.4-18 MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI
(See vt3d/vt3d_step_impl_nloc.pro)
NAME:
vt3d_step_impl_trisol_1loc
PURPOSE: (one line)
step the temperature one time step at a single location
DESCRIPTION:
step the temperature one time step at a single location
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
vt3d_step_impl_trisol_1loc, alpha_1, beta_0,
gamma_0, gamma_J, spp_tridc, spp_indx, temp_0, temp_i
INPUTS:
alpha_1: dependance of temp[1] on temp[0], unitless, float
beta_0: dependance of temp[0] on temp[1], unitless, float
gamma_0: net flux at upper boundary, K, float
gamma_J: net flux at lower boundary, K, float
spp_tridc : LU decomposition of the S'' matrix, made by vt3d_cn_tridc
spp_tridc : row permutations for partial pivoting to invert S'', made by vt3d_cn_tridc
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:
RESTRICTIONS:
nsurf = 0 or 1
PROCEDURE:
Solve implicit equation
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
This is not used directly in Young 2016, but is used as part of
the Crank-Nicholson time step, in vt3d_step_cn_trisol_1loc.
See: Eq. 3.4-9b
The banded tridiagonal solution is described in Eq. 3.4-12a-6 and 3.4-13a-b
MODIFICATION HISTORY:
Written 2011 Feb 6, by Leslie Young, SwRI
2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_step_impl_trisol_1loc.pro)
NAME: vt3d_step_impl_trisol_nloc PURPOSE: (one line) step the temperature one time step DESCRIPTION: step the temperature one time step for multiple locations with local mass balance CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_impl_trisol_nloc, alpha_i, beta_0, gamma_0, gamma_J, spp_tridc, spp_index, 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[n_loc] gamma_0: net flux at upper boundary, K, float, float[n_loc] gamma_J: net flux at lower boundary, K, float spp_tridc : LU decomposition of the S'' matrix, made by vt3d_cn_tridc spp_tridc : row permutations for partial pivoting to invert S'', made by vt3d_cn_tridc INPUT-OUTPUTS: temp_0 : temperature at layer 0, K, float[n_loc] temp_i : temperature at layer 1..J, K, float[n_loc,J] COMMON BLOCKS: None SIDE EFFECTS: RESTRICTIONS: nsurf = 0 or 1 PROCEDURE: Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq. 3.4-18 MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI
(See vt3d/vt3d_step_impl_trisol_nloc.pro)
NAME: vt3d_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 = vt3d_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 vt3d library.
(See vt3d/vt3d_temp_term0_bare.pro)
NAME: vt3d_temp_term0_local 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 = vt3d_temp_term0_local(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] latheat : latent heat of sublimation, erg/g, loat or float[n_loc] mflux_esc : mass flux due to escape, g/cm^2/s, 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 4.2-3 MODIFICATION HISTORY: Written 2011 Dec 31, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_temp_term0_local.pro)
NAME:
vt3d_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 = vt3d_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:
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 vt3d library.
(See vt3d/vt3d_temp_terms_bare.pro)
NAME:
vt3d_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= vt3d_temp_terms_bare_iter(sol_terms,flux_int,emis,freq,therminertia, thermcond)
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]
thermcond : thermal conductivity, erg 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 vt3d library.
(See vt3d/vt3d_temp_terms_bare_iter.pro)
NAME:
vt3d_temp_terms_local
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 = vt3d_temp_terms_local(sol_terms,flux_int,emis,freq,therminertia, $
is_volatile, mass_volatile, specheat_volatile, gravacc, $
name_species)
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]
is_volatile ; 1 if has a volatile, 0 if bare. flag. scalar
mass_slab ; mass of the volatile slab, g cm^-2, scalar
specheat_slab ; specific heat of the volatile slab, erg g^-1 K^-1, scalar
gravacc ; gravitational acceleration, cm s^-2
name_species ; name of the species. String. "N2", "CO", or "CH4"
OPTIONAL INPUTS:
mflux_esc_terms ; escape rate in g cm^-2 s^-1
complex[n_term+1] or complex[n_loc,n_term+1]
defined so that (if _i = sqrt(-1) )
mflux_esc = mflux_esc_terms[0] + mflux_esc_terms[1]*exp( _i * freq * t)
+ mflux_esc_terms[2]*exp(2 *_i * freq * t) + ..
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:
If defined, mflux_esc_terms must be the same dimensions as sol_terms
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Eq 4.2-5
MODIFICATION HISTORY:
Written 2011 Dec 31, by Leslie Young, SwRI
2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_temp_terms_local.pro)
NAME:
vt3d_temp_terms_local_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 = vt3d_temp_terms_local_iter(sol_terms,flux_int,emis,freq,therminertia, thermcond, $
is_volatile, mass_volatile, specheat_volatile, gravacc, name_species)
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]
thermcond : thermal conductivity, erg K-1 : float or float[n_loc]
is_volatile ; 1 if has a volatile, 0 if bare. flag. scalar
mass_slab ; mass of the volatile slab, g cm^-2, scalar
specheat_slab ; specific heat of the volatile slab, erg g^-1 K^-1, scalar
gravacc ; gravitational acceleration, cm s^-2
name_species ; name of the species. String. "N2", "CO", or "CH4"
mflux_esc ; escape rate in g cm^-2 s^-1
OPTIONAL INPUTS:
mflux_esc_terms ; escape rate in g cm^-2 s^-1
complex[n_term+1] or complex[n_loc,n_term+1]
defined so that (if _i = sqrt(-1) )
mflux_esc = mflux_esc_terms[0] + mflux_esc_terms[1]*exp( _i * freq * t)
+ mflux_esc_terms[2]*exp(2 *_i * freq * t) + ..
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:
If defined, mflux_esc_terms must be the same dimensions as sol_terms
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 vt3d library.
(See vt3d/vt3d_temp_terms_local_iter.pro)
NAME: vt3d_thermalinertia PURPOSE: (one line) Return thermal inertia DESCRIPTION: Return thermal inertia CATEGORY: Volatile Transport CALLING SEQUENCE: therminertia = vt3d_thermalinertia(dens, specheat, thermcond) INPUTS: dens : density of the substrate (g/cm^3) specheat : specific heat (erg/(g K)) thermcond : temperature of the substrate (erg/(cm s K)) OUTPUTS: therminertia : thermal inertia, cgs units (erg cm^-2 s^-1/2 K^-1) RESTRICTIONS: PROCEDURE: Many, many places, including: Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. Eq 3.2-5 MODIFICATION HISTORY: Written 2011 Aug 10, by Leslie Young, SwRI 2016-04-28 Moved to vt3d library
(See vt3d/vt3d_thermalinertia.pro)
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/vt3d_thermpro.pro)
NAME:
vt3d_thermwave
PURPOSE: (one line)
Return thermal wave
DESCRIPTION:
Return thermal wave
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
temp = vt3d_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. Radian
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 vt3d library.
(See vt3d/vt3d_thermwave.pro)
NAME: vt3d_thermwave_1loc_p0_nz PURPOSE: (one line) Return thermal wave, one location, phase=0, n depths DESCRIPTION: Return thermal wave, one location, phase=0, n depths CATEGORY: Volatile Transport CALLING SEQUENCE: temp = vt3d_thermwave_1loc_p0_nz(temp_terms, dtemp_dzeta, zeta) INPUTS: temp_terms : complex[n_terms + 1] phase : float[n_t] = 0. dtemp_dzeta : scalar zeta : float[n_z] OUTPUTS: temp: float[n_z] RESTRICTIONS: PROCEDURE: MODIFICATION HISTORY: Written 2011 Dec 30, by Leslie Young, SwRI Modified 2012 Sep 30, LAY. Added m inside sqrt(_i) term.
(See vt3d/vt3d_thermwave_1loc_p0_nz.pro)
NAME: vt3d_thermwave_nloc_p0_nz PURPOSE: (one line) Return thermal wave, multiple locations, phase=0, n depths DESCRIPTION: Return thermal wave, multiple locations, phase=0, n depths CATEGORY: Volatile Transport CALLING SEQUENCE: temp = vt3d_thermwave_nloc_p0_nz(temp_terms, dtemp_dzeta, zeta) INPUTS: temp_terms : complex[nloc, n_terms + 1] phase : float[n_t] = 0. dtemp_dzeta : scalar zeta : float[n_z] OUTPUTS: temp: float[n_z] RESTRICTIONS: PROCEDURE: MODIFICATION HISTORY: Written 2011 Dec 30, by Leslie Young, SwRI Modified 2012 Sep 30, LAY. Added m inside sqrt(_i) term.
(See vt3d/vt3d_thermwave_nloc_p0_nz.pro)
NAME: vt3d_vtstep_expl_1loc PURPOSE: (one line) step the temperature one time step DESCRIPTION: step the temperature one time step CATEGORY: Volatile Transport CALLING SEQUENCE: vt3d_step_expl_1loc, alpha_i, beta_0, beta_i, gamma_0, gamma_J, temp_0, temp_i INPUTS: alpha_i: dependance of new temp[1..J] on old temp[0..J-1], unitless, float[J] beta_0: dependance of new temp[0] on old temp[1], unitless, float beta_i: dependance of new temp[1..J] on old 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] Old temperatures are passed, new temperatures are returned. 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. Eq. 3.4-2 MODIFICATION HISTORY: Written 2011 Feb 6, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vt3d library.
(See vt3d/vt3d_step_expl_1loc.pro)
NAME:
vt3d_zdelta
PURPOSE: (one line)
Return depths and layer widths for volatile transport
DESCRIPTION:
Return depths and layer widths for volatile transport
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
vt3d_zdelta, z, z_delta, z_delta_top, z_delta_bot, k=k, z_delta_z0 = z_delta_z0
INPUTS:
z - cm. depth of grid points (z <= 0)
1-D, length n_z, if skindepth is a scalar,
2-D, [n_loc, n_z] if skindepth is an array
OPTIONAL INPUT PARAMETERS:
k - thermal conductivity
z_delta0 - width of the top layer
KEYWORD INPUT PARAMETERS:
KEYWORD OUTPUT PARAMETERS:
none
OUTPUTS:
z_delta[i] (cm) is the spacing between the top and bottom of layer i.
z_delta_top[i] (cm) is s.t.
flux = - k[i] (T[i-1] - T[i]) / z_delta_top[i]
is continuous at the boundary.
z_delta_bot[i] (cm) is s.t.
flux = - k[i] (T[i] - T[i+1]) / z_delta_bot[i]
is continuous at the boundary.
COMMON BLOCKS:
None
SIDE EFFECTS:
RESTRICTIONS:
nsurf = 0 or 1
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Section 3.3
MODIFICATION HISTORY:
Written 2011 Feb 6, by Leslie Young, SwRI
2014 May 18 Modify for z being 1D. LAY.
(See vt3d/vt3d_zdelta.pro)
NAME:
vt3d_zgrid
PURPOSE: (one line)
Return depths and layer widths for volatile transport
DESCRIPTION:
Return depths and layer widths for volatile transport
CATEGORY:
Volatile Transport
CALLING SEQUENCE:
z = vt3d_zgrid(skindepth,z_delta,n_z,nsurf=nsurf,fsurf=fsurf,ntop=ntop, $
dtop=dtop,nbot=nbot,dbot=dbot,fbot=fbot,hp96=hp96,sm92=sm92)
INPUTS:
skindepth - cm. A scalar or 1-D array of length n_loc
skin depth = sqrt(k/(rho c omega)), where
k = thermal conductivity
rho = density
c = specific heat
omega = 2 pi/period = frequency
OPTIONAL INPUT PARAMETERS:
none
KEYWORD INPUT PARAMETERS:
nsurf = 1 or 0. Number of "surface" layers, with the
grid point defined at the top of the layer (z=0).
DEFAULT 1
fsurf = if positive, there is a surface layer with width
fsurf * dtop * skindepth. DEFAULT 0.5
ntop = number of layers in the top region DEFAULT 4
dtop = width of layers in the top region, normalized
by the skin depth (so that width = dtop * skindepth)
DEFAULT 0.25
nbot = number of layers in the bottom region DEFAULT 20
dbot = width of the first layer in the bottom region, normalized.
DEFAULT fbot * dtop
fbot = fractional growth of the width of successive layers
DEFAULT 1.13
hp96 - set all parameters to mimic Hansen and Paige 1996
nsurf=0, fsurf=0.0, ntop=3, dtop=0.25, nbot=57, fbot=1.13
sm92 - set all parameters to mimic Spencer and Moore 1992
nsurf=1, fsurf=0.5, ntop=60, dtop=0.1, nbot=0, fbot=1.00
KEYWORD OUTPUT PARAMETERS:
none
OUTPUTS:
n_z - number of layers (nsurf + ntop + nbot)
z - cm. depth of grid points (z <= 0)
1-D, length n_z, if skindepgth is a scalar,
2-D, [n_loc, n_z] if skindepth is an array
z_delta - cm. width of layers, same dim. as z
COMMON BLOCKS:
None
SIDE EFFECTS:
RESTRICTIONS:
nsurf = 0 or 1
PROCEDURE:
Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D)
Resubmitted to Icarus.
Section 3.3
MODIFICATION HISTORY:
Written 2011 Feb 6, by Leslie Young, SwRI
(See vt3d/vt3d_zgrid.pro)
NAME: vty16_fig3_1 PURPOSE: (one line) Plot Young 2016, Fig3.1 DESCRIPTION: Plot Young 2016, Fig3.1 Young, L. A. 2016, Volatile transport on inhomogeneous surfaces: II. Numerical calculations (VT3D) Resubmitted to Icarus. 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 files vty16_fig3_1.png - as in Young 2016 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)
NAME:
vty16_fig3_14
PURPOSE: (one line)
Plot Young 2016, Fig3-14
DESCRIPTION:
Plot Young 2016, Fig3-14
CATEGORY:
VT3D
CALLING SEQUENCE:
vty16_fig3_14
INPUTS:
none
OPTIONAL OUTPUTS:
temp_0_map float[n_lon,n_lat,n_t]
surface temperature as a function of longitude, latitude and
time (aka sub-solar longitude)
latitudes at cell center are [-88, -84, ... 84, 88]
longitudes at cell center are [2, 6, ... 354, 358]
sub-solar longitudes are [0, -1, -2, ... -1079, -1080]
(mod 360, this is [0, -1, -2, ... -359, 0]
SIDE EFFECTS:
creates the plot in the Young 2016.
vty16_fig3_14_043.png, vty16_fig3_14_087.png, vty16_fig3_14_0167.png, vty16_fig3_14_cb.png
vty16_fig3_14.fits - output of vt3s_thermpro
MODIFICATION HISTORY:
Written 2013 Jun 5, by Leslie Young, SwRI
Based on ms_plutoseason/figs/__working_copy/_mimas.pro
2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig3_14.pro)
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.png and vty16_fig3_2.txt
MODIFICATION HISTORY:
Written 2012 Sep 30, by Leslie Young, SwRI
2016 Mar 22 LAY. Modified for inclusion in vt3d library.
(See vty16/vty16_fig3_2.pro)
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
INPUTS:
none
OPTIONAL OUTPUTS:
phase_num - phase for the numeric calculation, radian
temp_num - surface temperature from the numeric calculation, K
phase - phase for the approximations, radian
temp_1_zeta0 - approximate surface temperature, M=1, K
temp_7_zeta0 - approximate surface temperature, M=7, K
temp_7_iter_zeta0 - approximate surface temperature,
M=7 with iterated T0, K
SIDE EFFECTS:
creates vty16_fig3_3.png, the plot in the Young 2016.
vty16_fig3_3_table1.txt - output of vt3s_thermpro
vty16_fig3_3_table2.txt - approximations
vty16_fig3_3_table3.txt - temperature terms
MODIFICATION HISTORY:
Written 2012 Sep 29, by Leslie Young, SwRI
2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig3_3.pro)
NAME: vty16_fig3_7a PURPOSE: (one line) Plot Young 2016, Fig3.7a DESCRIPTION: Plot Young 2016, Fig3.7a CATEGORY: VT3D CALLING SEQUENCE: vty16_fig3_7a INPUTS: none OPTIONAL OUTPUTS: SIDE EFFECTS: creates vty16_fig3_7a.png MODIFICATION HISTORY: Written 2012 Sep 29, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig3_7a.pro)
NAME: vty16_fig3_7b PURPOSE: (one line) Plot Young 2016, Fig3.7b DESCRIPTION: Plot Young 2016, Fig3.7b CATEGORY: VT3D CALLING SEQUENCE: vty16_fig3_7b INPUTS: none OPTIONAL OUTPUTS: SIDE EFFECTS: creates vty16_fig3_7b.png MODIFICATION HISTORY: Written 2012 Sep 29, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig3_7b.pro)
NAME: vty16_fig3_7c PURPOSE: (one line) Plot Young 2016, Fig3.7c DESCRIPTION: Plot Young 2016, Fig3.7c CATEGORY: VT3D CALLING SEQUENCE: vty16_fig3_7c INPUTS: none OPTIONAL OUTPUTS: SIDE EFFECTS: creates vty16_fig3_7c.png MODIFICATION HISTORY: Written 2012 Sep 29, by Leslie Young, SwRI 2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig3_7c.pro)
NAME: vty16_fig4_2 PURPOSE: (one line) Plot Young 2016, Fig4-2 DESCRIPTION: Plot Young 2016, Fig4-2 CATEGORY: VT3D CALLING SEQUENCE: vty16_fig4_2 INPUTS: none OPTIONAL OUTPUTS: SIDE EFFECTS: creates vty16_fig_14.png, the plot in the Young 2016. vty16_fig3_14_temp_surf.fits - output of vt3s_thermpro MODIFICATION HISTORY: Written 2013 Jun 5, by Leslie Young, SwRI Based on ms_plutoseason/figs/__working_copy/_mimas.pro 2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig4_2.pro)
NAME:
vty16_fig4_2_plot
PURPOSE: (one line)
Plot Young 2016, Fig4-2
DESCRIPTION:
Plot Young 2016, Fig4-2
CATEGORY:
VT3D
CALLING SEQUENCE:
vty16_fig4_2_plot, dist_sol_au, tod, theta_sva, temp_term_0, temp, p, $
name_therminertia, n_per_period
INPUTS:
none
OPTIONAL OUTPUTS:
SIDE EFFECTS:
creates vty16_fig_14.png, the plot in the Young 2016.
vty16_fig3_14_temp_surf.fits - output of vt3s_thermpro
MODIFICATION HISTORY:
Written 2013 Jun 5, by Leslie Young, SwRI
Based on ms_plutoseason/figs/__working_copy/_mimas.pro
2016 Mar 24 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig4_2_plot.pro)
NAME: vty16_fig5_7 PURPOSE: (one line) Plot Young 2016, Fig5.7 DESCRIPTION: Plot Young 2016, Fig5.7 CATEGORY: VT3D CALLING SEQUENCE: vty16_fig5_7 INPUTS: none OPTIONAL OUTPUTS: SIDE EFFECTS: creates vty16_fig5_7.png and vty16_fig5_7.txt MODIFICATION HISTORY: Written 2012 Sep 29, by Leslie Young, SwRI 2016 Mar 22 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig5_7.pro)
NAME:
vty16_fig5_7_func
PURPOSE: (one line)
Make the data for a Pluto movie for Young 2013 ApJL resubmission
DESCRIPTION:
Make the data for a Pluto movie for Young 2013 ApJL resubmission
CATEGORY:
VT
CALLING SEQUENCE:
res = vty16_fig5_7_func(run, av, ev, as, es, ti, mvtot, n_off, res_all)
INPUTS:
run - name of this run. If "", then construct from parameters
av - hemispheric albedo of the volatile
ev - emissivity of the volatile
as - hemispheric albedo of the substrate
es - emissivity of the substrate
ti - thermal inertia of the substrate, cgs units
mvtot - total inventory of volatiles
n_off - number of time periods to offset start by.
If n_off = 0, start at aphelion.
If n_off > 0, start n_off timesteps before aphelion
OPTIONAL INPUT PARAMETERS:
none
KEYWORD INPUT PARAMETERS:
none
KEYWORD OUTPUT PARAMETERS:
none
OUTPUTS:
res: structure with the results of the run, suitable for plotting.
ALBEDO_COMP FLOAT Array[3] albedo of composition types, unitless
EMIS_COMP FLOAT Array[3] albedo of composition types, unitless
AV FLOAT albedo of volatile, unitless
EV FLOAT emissivity of volatile, unitless
AS FLOAT albedo of substrate, unitless
ES FLOAT emissivity of substrate, unitless
THERMINERTIA DOUBLE Array[60, 19]
thermal inertia, [loc, depth], cgs
MVTOT INT 32 total volatile, g/cm^2
LAT DOUBLE Array[60] latitude of locations, radian
N_LAT_EDGE LONG 59 number of latitude edges
N_TIME_PER_PERIOD
LONG 240 timesteps per period
N_TIME LONG 720 number of timesteps
A FLOAT Array[240] geometric albedo, [time]
TV FLOAT Array[240] temperature of volatile, K, [time]
TS FLOAT Array[60, 240] temperature of layer 0, K, [loc,time]
MS FLOAT Array[60, 240]
mass of slab, g/cm^2, [loc, time]
V FLOAT Array[59, 240]
velocity across lat boundary, cm/s, [lat_edge]
VS FLOAT Array[59, 240]
sound speed at lat boundary, cm/s, [lat_edge]
P FLOAT Array[240] pressure, microbar, [time]
YR DOUBLE Array[240] time, year, [time]
LAT0 FLOAT Array[240] subsolar lat, radian, [time]
R FLOAT Array[240] helioc. dist, AU, [time]
ANG FLOAT Array[240] true anomoly, radian, [time]
ISV INT Array[60, 240]
is volatile-covered, boolean, [loc, time]
res_all: structure with the results of the run, suitable for full output.
All the tags in res, PLUS
COMMON BLOCKS:
None
SIDE EFFECTS:
RESTRICTIONS:
None
PROCEDURE:
MODIFICATION HISTORY:
Written 2012 October 13, by Leslie Young, SwRI (pluto_dps12_2.pro)
Oct 21 2012. Make function (pluto_mssearch_func.pro)
Dec 13 2012. Add start phase as options
2016 Apr 06 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig5_7_func.pro)
NAME:
vty16_fig5_7_mat
PURPOSE: (one line)
Calculate matrix elements for Young 2013 ApJL resubmission
DESCRIPTION:
Calculate matrix elements that change with time for Young 2013 ApJL resubmission
CATEGORY:
VT
CALLING SEQUENCE:
vty16_fig5_7_mat, flag_frostslab, time_delta, n_loc, n_z, $
emis, temp_surf, eflux_sol, mass_slab, specheat_frost, $
z_delta, z_delta_bot, dens, specheat, thermcond, eflux_int, $
beta,alpha_bot, alpha_mid,
INPUTS:
flag_frostslab ; byte. 1 to include frost slab in matrix calc
time_delta ; float. duration of timestep (s)
n_loc ; long. number of locations
n_z ; long, number of layers
emis ; float[n_loc], emissivity (uniteless)
temp_surf ; float[n_loc], temp at start of timestep (K)
eflux_sol ; float[n_loc], solar absorption, erg/cm^2/s
mass_slab ; float[n_loc], mass of volatile slab, g/cm^2
specheat_frost ; float[n_loc], specific heat of volatile slab erg/g/K
z_delta ; float[n_loc, n_z]. Width of layer. cm
z_delta_bot ; float[n_loc, n_z], Distance from this layer to lower layer. cm.
dens ; float[n_loc, n_z]. Density, g/cm^3
specheat ; float[n_loc, n_z]. specific heat of substrate erg/g/K
thermcond ; float[n_loc, n_z]. thermal conductivity of substrate erg/cm/s/K
eflux_int ; float[n_loc]. internal heat flux, erg/cm^2/s
INPUT/OUTPUTS:
beta ; float[n_loc, n_z]. constant arrays in T_new = alpha * T + beta
This is written as "gamma" in Young 2016. Just to keep you
alert.
Only the top layer (beta[*,0]) and bottom layer (beta[*,n_z-1]) are altered
alpha_bot ; float[n_loc, n_z]. upper tridiagonal of alpha in
T_new = alpha * T + beta
called "bot" because it relates the current temperature layer
and the one below it.
This is written as "beta" in Young 2016, just to keep you alert.
Only the top layer (alpha_bot[*,0]) is altered
alpha_mid ; float[n_loc, n_z]. Related to the diagonal of
T_new = alpha * T + beta
alpha_mid is eta in Young 2016, just to keep you alert.
Only the top layer (alpha_mid[*,0]) is altered
OUTPUTS:
denom
eflux_net
COMMON BLOCKS:
None
SIDE EFFECTS:
RESTRICTIONS:
None
PROCEDURE:
MODIFICATION HISTORY:
Written 2012 October 13, by Leslie Young, SwRI (pluto_dps12_2.pro)
Oct 21 2012. Make function (pluto_mssearch_func.pro)
Dec 13 2012. Add start phase as options
2016 Apr 06 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig5_7_mat.pro)
NAME:
vty16_fig5_7_write
PURPOSE: (one line)
Write the data for a Pluto movie for Young 2013 ApJL resubmission
DESCRIPTION:
Write the data for a Pluto movie for Young 2013 ApJL resubmission
CATEGORY:
VT
CALLING SEQUENCE:
vty16_fig5_7_write, run, res_all
INPUTS:
run : name of this run.
res: structure with the results of the run, suitable for plotting.
See vty16_fig5_7_func
SIDE EFFECTS:
write files _.png
where is tag in the structure res_all
RESTRICTIONS:
None
PROCEDURE:
MODIFICATION HISTORY:
Written 2012 October 13, by Leslie Young, SwRI (pluto_dps12_2.pro)
Oct 21 2012. Make function (pluto_mssearch_func.pro)
Dec 13 2012. Add start phase as options
2016 Apr 06 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig5_7_write.pro)
NAME:
vty16_pluto_mssearch_resub_func
PURPOSE: (one line)
Make the data for a Pluto movie for Young 2013 ApJL resubmission
DESCRIPTION:
Make the data for a Pluto movie for Young 2013 ApJL resubmission
CATEGORY:
VT
CALLING SEQUENCE:
vty16_fig5_7_still, run, res, yr_still
INPUTS:
run : name of this run.
res: structure with the results of the run, suitable for plotting.
See vty16_pluto_mssearch_resub_func
yr_still : year for which to make the plot
SIDE EFFECTS:
write a file fig//mov/_.png
where is the time index relative to the start of the last period
RESTRICTIONS:
None
PROCEDURE:
MODIFICATION HISTORY:
Written 2012 October 13, by Leslie Young, SwRI (pluto_dps12_2.pro)
Oct 21 2012. Make function (pluto_mssearch_func.pro)
Dec 13 2012. Add start phase as options
2016 Apr 06 LAY. Modified for inclusion in vty16 library.
(See vty16/vty16_fig5_7_still.pro)