Package SatStress :: Module SatStress :: Class StressDef
[frames] | no frames]

Class StressDef

source code

object --+
         |
        StressDef
Known Subclasses:

A base class from which particular tidal stress field objects descend.

Different tidal forcings are specified as sub-classes of this superclass (one for each separate forcing).

In the expressions of the stress fields, the time t is specified in seconds, with zero occuring at periapse, in order to be compatible with the future inclusion of stressing mechanisms which may have explicit time dependence instead of being a function of the satellite's orbital position (e.g. a true polar wander trajectory).

Location is specified within a polar coordinate system having its origin at the satellite's center of mass, using the following variables:

Each subclass must define its own version of the three components of the membrane stress tensor, Ttt, Tpp, and Tpt (the north-south, east-west, and shear stress components) as methods.

Instance Methods
 
__str__(self)
Output information about this stress field, including frequency dependent parameters.
source code
 
forcing_period(self)
Calculate the forcing period based on the forcing frequency (omega).
source code
 
calcLove(self)
Calculate the Love numbers for the satellite and the given forcing.
source code
 
calcLoveInfinitePeriod(self)
Return a set of zero Love numbers constructed statically.
source code
 
calcLoveWahr4LayerExternal(self)
Use John Wahr's Love number code to calculate h, k, and l.
source code
float
Delta(self, layer_n=-1)
Calculate Δ, a measure of how viscous the layer's response is.
source code
float
Z(self)
Calculate the value of Z, a constant that sits in front of many terms in the potential defined by Wahr et al.
source code
complex
mu_twiddle(self, layer_n=-1)
Calculate the frequency-dependent Lame parameter μ for a Maxwell rheology.
source code
complex
lambda_twiddle(self, layer_n=-1)
Calculate the frequency-dependent Lame parameter λ for a Maxwell rheology.
source code
complex
alpha(self)
Calculate the coefficient alpha twiddle for the surface layer (see Wahr et al.
source code
complex
Gamma(self)
Calculate the coefficient capital Gamma twiddle for the surface layer (see Wahr et al.
source code
complex
b1(self)
Calculate the coefficient beta one twiddle for the surface layer (see Wahr et al.
source code
complex
g1(self)
Calculate the coefficient gamma one twiddle for the surface layer (see Wahr et al.
source code
complex
b2(self)
Calculate the coefficient beta two twiddle for the surface layer (see Wahr et al.
source code
complex
g2(self)
Calculate the coefficient gamma two twiddle for the surface layer (see Wahr et al.
source code
float
Ttt(self, theta, phi, t)
Calculates the τ_θθ (north-south) component of the stress tensor.
source code
float
Tpp(self, theta, phi, t)
Calculates the τ_φφ (east-west) component of the stress tensor.
source code
float
Tpt(self, theta, phi, t)
Calculates the τ_φθ (off-diagonal) component of the stress tensor.
source code

Inherited from object: __delattr__, __getattribute__, __hash__, __init__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__

Class Variables
float omega = 0.0
the forcing frequency associated with the stress.
Satellite satellite = None
the satellite which the stress is being applied to.
LoveNum love = LoveNum(0, 0, 0, 0, 0, 0)
the Love numbers which result from the given forcing frequency and the specified satellite structure.
Properties

Inherited from object: __class__

Method Details

__str__(self)
(Informal representation operator)

source code 

Output information about this stress field, including frequency dependent parameters.

Overrides: object.__str__

calcLove(self)

source code 

Calculate the Love numbers for the satellite and the given forcing.

If an infinite forcing period is given, return zero valued Love numbers.

This is a wrapper function, which can be used to call different Love number codes in the future.

Raises:
  • InvalidLoveNumberError - if the magnitude of the imaginary part of any Love number is larger than its real part, if the real part is ever less than zero, or if the real coefficient of the imaginary part is ever positive.

calcLoveInfinitePeriod(self)

source code 

Return a set of zero Love numbers constructed statically.

This method is included so we don't have to worry about whether the Love number code can deal with being given an infinite period. All stresses will relax to zero with an infinite period (since the shear modulus μ goes to zero), so it doesn't really matter what we set the Love numbers to here.

calcLoveWahr4LayerExternal(self)

source code 

Use John Wahr's Love number code to calculate h, k, and l.

At the moment, the code is fairly limited in the kind of input it can take. The specified satellite must:

  • use a Maxwell rheology
  • have a liquid water ocean underlying the ice shell
  • have a 4-layer structure (ice_upper, ice_lower, ocean, core)

Eventually the Love number code will be more closely integrated with this package, allowing more flexibility in the interior structure of the satellite.

A temporary directory named lovetmp-XXXXXXX (where the X's are a random hexadecimal number) is created in the current working directory, within which the Love number code is run. The directory is deleted immediately following the calculation.

Raises:

Delta(self, layer_n=-1)

source code 

Calculate Δ, a measure of how viscous the layer's response is.

Parameters:
  • layer_n (int) - indicates which satellite layer Delta should be calculated for, defaulting to the surface (recall that layer 0 is the core)
Returns: float
Δ= μ/(ω*η)

Z(self)

source code 

Calculate the value of Z, a constant that sits in front of many terms in the potential defined by Wahr et al. (2008).

Returns: float
Z, a common constant in many of the Wahr et al. potential terms.

mu_twiddle(self, layer_n=-1)

source code 

Calculate the frequency-dependent Lame parameter μ for a Maxwell rheology.

Parameters:
  • layer_n - number of layer for which we want to calculate μ, defaults to the surface (with the core being layer zero).
Returns: complex
the frequency-dependent Lame parameter μ for a Maxwell rheology

lambda_twiddle(self, layer_n=-1)

source code 

Calculate the frequency-dependent Lame parameter λ for a Maxwell rheology.

Parameters:
  • layer_n - number of layer for which we want to calculate μ, defaults to the surface (with the core being layer zero).
Returns: complex
the frequency-dependent Lame parameter λ for a Maxwell rheology.

alpha(self)

source code 

Calculate the coefficient alpha twiddle for the surface layer (see Wahr et al. 2008).

Returns: complex
Calculate the coefficient alpha twiddle for the surface layer (see Wahr et al. 2008).

Gamma(self)

source code 

Calculate the coefficient capital Gamma twiddle for the surface layer (see Wahr et al. 2008).

Returns: complex
the coefficient capital Gamma twiddle for the surface layer (see Wahr et al. 2008).

b1(self)

source code 

Calculate the coefficient beta one twiddle for the surface layer (see Wahr et al. 2008).

Returns: complex
the coefficient beta one twiddle for the surface layer (see Wahr et al. 2008).

g1(self)

source code 

Calculate the coefficient gamma one twiddle for the surface layer (see Wahr et al. (2008)).

Returns: complex
the coefficient gamma one twiddle for the surface layer (see Wahr et al. (2008)).

b2(self)

source code 

Calculate the coefficient beta two twiddle for the surface layer (see Wahr et al. (2008)).

Returns: complex
the coefficient beta two twiddle for the surface layer (see Wahr et al. (2008)).

g2(self)

source code 

Calculate the coefficient gamma two twiddle for the surface layer (see Wahr et al. (2008)).

Returns: complex
the coefficient gamma two twiddle for the surface layer (see Wahr et al. (2008)).

Ttt(self, theta, phi, t)

source code 

Calculates the τ_θθ (north-south) component of the stress tensor.

In the base class, this is a purely virtual method - it must be defined by the subclasses that describe particular tidal stresses.

Parameters:
  • theta (float) - the co-latitude of the point at which to calculate the stress [rad].
  • phi (float) - the east-positive longitude of the point at which to calculate the stress [rad].
  • t (float) - the time, in seconds elapsed since pericenter, at which to perform the stress calculation [s].
Returns: float
the τ_θθ component of the 2x2 membrane stress tensor.

Tpp(self, theta, phi, t)

source code 

Calculates the τ_φφ (east-west) component of the stress tensor.

In the base class, this is a purely virtual method - it must be defined by the subclasses that describe particular tidal stresses.

Parameters:
  • theta (float) - the co-latitude of the point at which to calculate the stress [rad].
  • phi (float) - the east-positive longitude of the point at which to calculate the stress [rad].
  • t (float) - the time, in seconds elapsed since pericenter, at which to perform the stress calculation [s].
Returns: float
the τ_φφ component of the 2x2 membrane stress tensor.

Tpt(self, theta, phi, t)

source code 

Calculates the τ_φθ (off-diagonal) component of the stress tensor.

In the base class, this is a purely virtual method - it must be defined by the subclasses that describe particular tidal stresses.

Parameters:
  • theta (float) - the co-latitude of the point at which to calculate the stress [rad].
  • phi (float) - the east-positive longitude of the point at which to calculate the stress [rad].
  • t (float) - the time in seconds elapsed since pericenter, at which to perform the stress calculation [s].
Returns: float
the τ_φθ component of the 2x2 membrane stress tensor.