Propagation Module

The propagation module contains site response analysis calculators and wave propagation methods.

Classes

LinearElasticCalculator

Class for performing linear elastic site response.

EquivalentLinearCalculator

Class for performing equivalent-linear elastic site response.

FrequencyDependentEqlCalculator

Class for performing equivalent-linear elastic site response with frequency- dependent modulii and damping.

Linear Methods

class pystrata.propagation.LinearElasticCalculator[source]

Bases: AbstractCalculator

Class for performing linear elastic site response.

__call__(motion: Motion, profile: Profile, loc_input: Location, reset_layers=True, **kwds)[source]

Perform the wave propagation.

Parameters:
  • motion (Motion) – Input motion.

  • profile (Profile) – Site profile.

  • loc_input (Location) – Location of the input motion.

wave_at_location(loc: Location) ndarray[source]

Compute the wave field at specific location.

Parameters:

loc (site.Location) – site.Location of the input

Returns:

Amplitude and phase of waves

Return type:

np.ndarray

calc_accel_tf(lin, lout)[source]

Compute the acceleration transfer function.

Parameters:
  • lin (Location) – Location of input

  • lout (Location) – Location of output. Note that this would typically be midheight of the layer.

calc_stress_tf(lin, lout, damped)[source]

Compute the stress transfer function.

Parameters:
  • lin (Location) – Location of input

  • lout (Location) – Location of output. Note that this would typically be midheight of the layer.

calc_strain_tf(lin, lout)[source]

Compute the strain transfer function from lout to location_in.

The strain transfer function from the acceleration at layer n (outcrop) to the mid-height of layer m (within) is defined as

Parameters:
  • lin (Location) – Location of input

  • lout (Location) – Location of output. Note that this would typically be midheight of the layer.

Returns:

strain_tf – Transfer function to be applied to an acceleration FAS.

Return type:

numpy.ndarray

Nonlinear Methods

class pystrata.propagation.EquivalentLinearCalculator(strain_ratio=0.65, tolerance=0.01, max_iterations=15, strain_limit=0.05)[source]

Bases: LinearElasticCalculator

Class for performing equivalent-linear elastic site response.

__call__(motion: Motion, profile: Profile, loc_input: Location, reset_layers=True, **kwds)[source]

Perform the wave propagation.

Parameters:
  • motion (Motion) – Input motion.

  • profile (Profile) – Site profile.

  • loc_input (Location) – Location of the input motion.

classmethod calc_strain_ratio(mag)[source]

Compute the effective strain ratio using Idriss and Sun (1992).

Parameters:

mag (float) – Magnitude of the input motion.

Returns:

strain_ratio – Effective strain ratio

Return type:

float

References

class pystrata.propagation.FrequencyDependentEqlCalculator(method: str = 'ka02', strain_ratio: float = 0.65, tolerance: float = 0.01, max_iterations: int = 15, strain_limit: float = 0.05)[source]

Bases: EquivalentLinearCalculator

Class for performing equivalent-linear elastic site response with frequency- dependent modulii and damping.

Parameters:
  • method (str) –

    method for computing the strain spectrum:
    • ka02: use the Kausel & Assimaki (2002) defined shape for a smooth spectrum for the strain.

    • zr15: use Zalachoris & Rathje (2015) approach of the strain

    spectrum - ko:##: use Konno-Omachi with a bandwith of ## to compute the smooth spectrum. The strain is then computed as a running maximum from high to low frequencies. A value of 20 or 30 is recommended based on limited studies.

  • strain_ratio (float, default=1.00) – ratio between the maximum strain and effective strain used to compute strain compatible properties. There is not clear guidance the use of the effective strain ratio. For the ka02 the recommended value is 0.65 – or consistent with an EQL approach. For zr15 and ko:##, there is no clear guidance but a value of 1.0 might make sense.

  • tolerance (float, default=0.01) – tolerance in the iterative properties, which would cause the iterative process to terminate.

  • max_iterations (int, default=15) – maximum number of iterations to perform.

  • strain_limit (float, default=0.05) – Limit of strain in calculations. If this strain is exceed, the iterative calculation is ended.

References

property name

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to ‘strict’.