underworld.scaling module

The scaling module provides units and scaling capabilities.

Functions

underworld.scaling.dimensionalise Dimensionalise a value.
underworld.scaling.get_coefficients Returns the global scaling dictionary.
underworld.scaling.non_dimensionalise Non-dimensionalize (scale) provided quantity.
underworld.scaling.dimensionalise(value, units)[source]

Dimensionalise a value.

Parameters:
  • value (float, int) – The value to be assigned units.
  • units (pint units) – The units to be assigned.
Returns:

pint quantity

Return type:

dimensionalised value.

Example

>>> import underworld as uw
>>> A = uw.scaling.dimensionalise(1.0, u.metre)
underworld.scaling.get_coefficients()[source]

Returns the global scaling dictionary.

underworld.scaling.non_dimensionalise(dimValue)[source]

Non-dimensionalize (scale) provided quantity.

This function uses pint to perform a dimension analysis and return a value scaled according to a set of scaling coefficients.

Parameters:dimValue (pint.Quantity) – A pint quantity.
Returns:The scaled value.
Return type:float

Example

>>> import underworld as uw
>>> u = uw.scaling.units
>>> # Characteristic values of the system
>>> half_rate = 0.5 * u.centimeter / u.year
>>> model_height = 600e3 * u.meter
>>> refViscosity = 1e24 * u.pascal * u.second
>>> surfaceTemp = 0. * u.kelvin
>>> baseModelTemp = 1330. * u.kelvin
>>> baseCrustTemp = 550. * u.kelvin
>>> KL_meters = model_height
>>> KT_seconds = KL_meters / half_rate
>>> KM_kilograms = refViscosity * KL_meters * KT_seconds
>>> Kt_degrees = (baseModelTemp - surfaceTemp)
>>> K_substance = 1. * u.mole
>>> scaling_coefficients = uw.scaling.get_coefficients()
>>> scaling_coefficients["[time]"] = KT_seconds
>>> scaling_coefficients["[length]"] = KL_meters
>>> scaling_coefficients["[mass]"] = KM_kilograms
>>> scaling_coefficients["[temperature]"] = Kt_degrees
>>> scaling_coefficients["[substance]"] -= K_substance
>>> # Get a scaled value:
>>> gravity = uw.scaling.non_dimensionalise(9.81 * u.meter / u.second**2)