Module weac.inverse

Class for the elastic analysis of layered snow slabs.

Expand source code
"""Class for the elastic analysis of layered snow slabs."""
# pylint: disable=invalid-name

# Project imports
from weac.mixins import FieldQuantitiesMixin
from weac.mixins import SolutionMixin
from weac.mixins import AnalysisMixin
from weac.mixins import OutputMixin
from weac.eigensystem import Eigensystem


class Inverse(FieldQuantitiesMixin, SolutionMixin, AnalysisMixin,
              OutputMixin, Eigensystem):
    """
    Fit the elastic properties of the layers of a snowpack.

    Allows for the inverse identification of the elastic properties
    of the layers of a snowpack from full-field displacement
    measurements.

    Inherits methods for the eigensystem calculation from the base
    class Eigensystem(), methods for the calculation of field
    quantities from FieldQuantitiesMixin(), methods for the solution
    of the system from SolutionMixin() and methods for the output
    analysis from AnalysisMixin().
    """

    def __init__(
            self, system='pst-', layers=None, parameters=(6.0, 4.6, 0.25)):
        """
        Initialize model with user input.

        Arguments
        ---------
        system : str, optional
            Type of system to analyse. Default is 'pst-'.
        layers : list, optional
            List of layer densities and thicknesses. Default is None.
        parameters : tuple, optional
            Fitting parameters C0, C1, and Eweak. Multiplicative constant
            of Young modulus parametrization, exponent constant of Young
            modulus parametrization, and weak-layer Young modulus,
            respectively. Default is (6.0, 4.6, 0.25).
        """
        # Call parent __init__
        super().__init__(system=system)

        # Unpack fitting parameters
        C0, C1, Eweak = parameters

        # Set material properties
        self.set_beam_properties(layers=layers, C0=C0, C1=C1)
        self.set_foundation_properties(E=Eweak)

        # Set up model
        self.calc_foundation_stiffness()
        self.calc_laminate_stiffness_matrix()
        self.calc_system_matrix()
        self.calc_eigensystem()

Classes

class Inverse (system='pst-', layers=None, parameters=(6.0, 4.6, 0.25))

Fit the elastic properties of the layers of a snowpack.

Allows for the inverse identification of the elastic properties of the layers of a snowpack from full-field displacement measurements.

Inherits methods for the eigensystem calculation from the base class Eigensystem(), methods for the calculation of field quantities from FieldQuantitiesMixin(), methods for the solution of the system from SolutionMixin() and methods for the output analysis from AnalysisMixin().

Initialize model with user input.

Arguments

system : str, optional
Type of system to analyse. Default is 'pst-'.
layers : list, optional
List of layer densities and thicknesses. Default is None.
parameters : tuple, optional
Fitting parameters C0, C1, and Eweak. Multiplicative constant of Young modulus parametrization, exponent constant of Young modulus parametrization, and weak-layer Young modulus, respectively. Default is (6.0, 4.6, 0.25).
Expand source code
class Inverse(FieldQuantitiesMixin, SolutionMixin, AnalysisMixin,
              OutputMixin, Eigensystem):
    """
    Fit the elastic properties of the layers of a snowpack.

    Allows for the inverse identification of the elastic properties
    of the layers of a snowpack from full-field displacement
    measurements.

    Inherits methods for the eigensystem calculation from the base
    class Eigensystem(), methods for the calculation of field
    quantities from FieldQuantitiesMixin(), methods for the solution
    of the system from SolutionMixin() and methods for the output
    analysis from AnalysisMixin().
    """

    def __init__(
            self, system='pst-', layers=None, parameters=(6.0, 4.6, 0.25)):
        """
        Initialize model with user input.

        Arguments
        ---------
        system : str, optional
            Type of system to analyse. Default is 'pst-'.
        layers : list, optional
            List of layer densities and thicknesses. Default is None.
        parameters : tuple, optional
            Fitting parameters C0, C1, and Eweak. Multiplicative constant
            of Young modulus parametrization, exponent constant of Young
            modulus parametrization, and weak-layer Young modulus,
            respectively. Default is (6.0, 4.6, 0.25).
        """
        # Call parent __init__
        super().__init__(system=system)

        # Unpack fitting parameters
        C0, C1, Eweak = parameters

        # Set material properties
        self.set_beam_properties(layers=layers, C0=C0, C1=C1)
        self.set_foundation_properties(E=Eweak)

        # Set up model
        self.calc_foundation_stiffness()
        self.calc_laminate_stiffness_matrix()
        self.calc_system_matrix()
        self.calc_eigensystem()

Ancestors

Inherited members