Repository: ross-rotordynamics/ross
Pull request #790 (2021-04-17 23:37:38)

Add new seal args to check units


Patch:
diff --git a/docs/_static/style.css b/docs/_static/style.css
index a0c3a6c1..6d42a0c2 100644
--- a/docs/_static/style.css
+++ b/docs/_static/style.css
@@ -22,6 +22,3 @@ dt:target, span.highlighted {
     background-color: #f5f5f5
 }
 
-dl.citation dt.label {
-    color: black;
-}
diff --git a/docs/api.rst b/docs/api.rst
index 19fd7030..304c30f9 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -66,5 +66,3 @@ These are classes used to store results and to provide useful methods such as pl
     SummaryResults
     ConvergenceResults
     TimeResponseResults
-    Level1Results
-    UCSResults
diff --git a/docs/conf.py b/docs/conf.py
index e382b25d..57a46541 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -26,7 +26,7 @@ sys.path.append(os.path.abspath("../../ross"))
 # -- Project information -----------------------------------------------------
 
 project = "ross"
-copyright = "2021, Team ROSS"
+copyright = "2020, Team ROSS"
 author = "Team ROSS"
 
 
@@ -64,9 +64,6 @@ extensions = [
 autosummary_generate = True
 numpydoc_show_class_members = False
 
-# bibtex
-bibtex_bibfiles = ["refs.bib"]
-
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ["_templates"]
 
diff --git a/docs/releases/version-1.0.0.rst b/docs/releases/version-1.0.0.rst
index b14a57ae..c9004735 100644
--- a/docs/releases/version-1.0.0.rst
+++ b/docs/releases/version-1.0.0.rst
@@ -28,7 +28,6 @@ Add minor and major axes to response plots
 We can now select the major and minor axis when plotting responses:
 
 .. code-block:: python
-
     # plot response for major or minor axis:
     >>> probe_node = 3
     >>> probe_angle = "major"   # for major axis
@@ -69,7 +68,6 @@ The plot_level1 and plot_ucs methods were refactore so that they behave as other
 Now we the run* prefix to call them and they will return Results objects.
 
 .. code-block:: python
-
     ucs = rotor.run_ucs(...)
     ucs.plot(...)
 
diff --git a/ross/bearing_seal_element.py b/ross/bearing_seal_element.py
index 099feb3e..9b9d0d8f 100644
--- a/ross/bearing_seal_element.py
+++ b/ross/bearing_seal_element.py
@@ -1230,8 +1230,7 @@ class BallBearingElement(BearingElement):
 
     References
     ----------
-    .. bibliography::
-        :filter: docname in docnames
+    .. bibliography:: ../../../docs/refs.bib
 
     Examples
     --------
@@ -1348,8 +1347,7 @@ class RollerBearingElement(BearingElement):
 
     References
     ----------
-    .. bibliography::
-        :filter: docname in docnames
+    .. bibliography:: ../../../docs/refs.bib
 
     Examples
     --------
diff --git a/ross/results.py b/ross/results.py
index 445599fb..d14a772c 100644
--- a/ross/results.py
+++ b/ross/results.py
@@ -29,8 +29,6 @@ __all__ = [
     "SummaryResults",
     "ConvergenceResults",
     "TimeResponseResults",
-    "UCSResults",
-    "Level1Results",
 ]
 
 
@@ -126,6 +124,7 @@ class Results(ABC):
         >>> from tempfile import tempdir
         >>> from pathlib import Path
         >>> import ross as rs
+
         >>> # Running an example
         >>> rotor = rs.rotor_example()
         >>> freq_range = np.linspace(0, 500, 31)
@@ -133,9 +132,11 @@ class Results(ABC):
         >>> m = 0.01
         >>> p = 0.0
         >>> results = rotor.run_unbalance_response(n, m, p, freq_range)
+
         >>> # create path for a temporary file
         >>> file = Path(tempdir) / 'unb_resp.toml'
         >>> results.save(file)
+
         >>> # Loading file
         >>> results2 = rs.ForcedResponseResults.load(file)
         >>> abs(results2.forced_resp).all() == abs(results.forced_resp).all()
@@ -1248,17 +1249,13 @@ class FrequencyResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
-            Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+            Units for the y axis.
+            Acceptable units are:
+                '[length]/[force]' - Displays the displacement;
+                '[speed]/[force]' - Displays the velocity;
+                '[acceleration]/[force]' - Displays the acceleration.
             Default is "m/N" 0 to peak.
-            To use peak to peak use '<unit> pkpk' (e.g. 'm/N pkpk')
+            To use peak to peak use '<units> pkpk' (e.g. 'm/N pkpk')
         fig : Plotly graph_objects.Figure()
             The figure object with the plot.
         mag_kwargs : optional
@@ -1347,17 +1344,13 @@ class FrequencyResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
-            Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+            Units for the y axis.
+            Acceptable units are:
+                '[length]/[force]' - Displays the displacement;
+                '[speed]/[force]' - Displays the velocity;
+                '[acceleration]/[force]' - Displays the acceleration.
             Default is "m/N" 0 to peak.
-            To use peak to peak use '<unit> pkpk' (e.g. 'm/N pkpk')
+            To use peak to peak use '<units> pkpk' (e.g. 'm/N pkpk')
         phase_units : str, optional
             Units for the x axis.
             Default is "rad"
@@ -1454,17 +1447,13 @@ class FrequencyResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
-            Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+            Units for the y axis.
+            Acceptable units are:
+                '[length]/[force]' - Displays the displacement;
+                '[speed]/[force]' - Displays the velocity;
+                '[acceleration]/[force]' - Displays the acceleration.
             Default is "m/N" 0 to peak.
-            To use peak to peak use '<unit> pkpk' (e.g. 'm/N pkpk')
+            To use peak to peak use '<units> pkpk' (e.g. 'm/N pkpk')
         phase_units : str, optional
             Units for the x axis.
             Default is "rad"
@@ -1588,17 +1577,13 @@ class FrequencyResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
-            Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+            Units for the y axis.
+            Acceptable units are:
+                '[length]/[force]' - Displays the displacement;
+                '[speed]/[force]' - Displays the velocity;
+                '[acceleration]/[force]' - Displays the acceleration.
             Default is "m/N" 0 to peak.
-            To use peak to peak use '<unit> pkpk' (e.g. 'm/N pkpk')
+            To use peak to peak use '<units> pkpk' (e.g. 'm/N pkpk')
         phase_units : str, optional
             Units for the x axis.
             Default is "rad"
@@ -1738,17 +1723,16 @@ class ForcedResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be add a DataFrame column title.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
@@ -1758,20 +1742,16 @@ class ForcedResponseResults(Results):
         amplitude_units : str, optional
             Units for the response magnitude.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
 
         Returns
         -------
         df : pd.DataFrame
-            DataFrame storing magnitude data arrays. The columns are set based on the
+            DataFrame storing magnitude data arrays. They columns are set based on the
             probe's tag.
         """
         frequency_range = Q_(self.speed_range, "rad/s").to(frequency_units).m
@@ -1815,17 +1795,16 @@ class ForcedResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be add a DataFrame column title.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
@@ -1833,15 +1812,11 @@ class ForcedResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         phase_units : str, optional
@@ -1893,17 +1868,16 @@ class ForcedResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be displayed at the legend.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
@@ -1911,15 +1885,11 @@ class ForcedResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         fig : Plotly graph_objects.Figure()
@@ -1978,17 +1948,16 @@ class ForcedResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be displayed at the legend.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
@@ -1996,15 +1965,11 @@ class ForcedResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         phase_units : str, optional
@@ -2066,17 +2031,16 @@ class ForcedResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be displayed at the legend.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
@@ -2084,15 +2048,11 @@ class ForcedResponseResults(Results):
             Units for the x axis.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         phase_units : str, optional
@@ -2174,17 +2134,16 @@ class ForcedResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be displayed at the legend.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
@@ -2192,15 +2151,11 @@ class ForcedResponseResults(Results):
             Frequency units.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         phase_units : str, optional
@@ -2286,23 +2241,15 @@ class ForcedResponseResults(Results):
         angle : float, str
             The orientation angle of the axis.
             Options are:
-
-            float : angle in rad capture the response in a probe orientation;
-
-            str : "major" to capture the response for the major axis;
-
-            str : "minor" to capture the response for the minor axis.
-
+                float : angle in rad capture the response in a probe orientation;
+                str : "major" to capture the response for the major axis;
+                str : "minor" to capture the response for the minor axis.
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
 
@@ -2389,15 +2336,11 @@ class ForcedResponseResults(Results):
             The rotor rotation speed. Must be an element from the speed_range argument
             passed to the class (rad/s).
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
 
@@ -2551,15 +2494,11 @@ class ForcedResponseResults(Results):
             Frequency units.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         rotor_length_units : str, optional
@@ -2651,15 +2590,11 @@ class ForcedResponseResults(Results):
             Frequency units.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
             Default is "m" 0 to peak.
             To use peak to peak use '<unit> pkpk' (e.g. 'm pkpk')
         rotor_length_units : str, optional
@@ -2952,17 +2887,13 @@ class ForcedResponseResults(Results):
             Frequency units.
             Default is "rad/s"
         amplitude_units : str, optional
-            Units for the response magnitude.
+            Units for the y axis.
             Acceptable units dimensionality are:
-
-            '[length]' - Displays the displacement;
-
-            '[speed]' - Displays the velocity;
-
-            '[acceleration]' - Displays the acceleration.
-
-            Default is "m/N" 0 to peak.
-            To use peak to peak use '<unit> pkpk' (e.g. 'm/N pkpk')
+                '[length]' - Displays the displacement;
+                '[speed]' - Displays the velocity;
+                '[acceleration]' - Displays the acceleration.
+            Default is "m" 0 to peak.
+            To use peak to peak use '<units> pkpk' (e.g. 'm/N pkpk')
         rotor_length_units : str, optional
             Rotor length units.
             Default is 'm'.
@@ -3856,17 +3787,16 @@ class TimeResponseResults(Results):
 
         Parameters
         ----------
-        probe : list
+        probe : list of tuples
             List with tuples (node, orientation angle, tag).
-
-            node : int -> Indicate the node where the probe is located.
-
-            orientation : float -> Probe orientation angle about the shaft.
-            The 0 refers to +X direction.
-            The strings 'major' and 'minor' can also be used to reference the major
-            and minor axis.
-
-            tag : str, optional -> Probe tag to be add a DataFrame column title.
+            node : int
+                Indicate the node where the probe is located.
+            orientation : float
+                Probe orientation angle about the shaft. The 0 refers to +X direction.
+                The strings 'major' and 'minor' can also be used to reference the major
+                and minor axis.
+            tag : str, optional
+                Probe tag to be displayed at the legend.
         probe_units : str, option
             Units for probe orientation.
             Default is "rad".
diff --git a/ross/rotor_assembly.py b/ross/rotor_assembly.py
index a48dd9e2..fbec14dd 100644
--- a/ross/rotor_assembly.py
+++ b/ross/rotor_assembly.py
@@ -669,9 +669,13 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.CriticalSpeedResults
-            For more information on attributes and methods available see:
-            :py:class:`ross.CriticalSpeedResults`
+        CriticalSpeedResults : An instance of CriticalSpeedResults class, which is
+        used to post-process results. Attributes stored:
+            CriticalSpeedResults.wn() : undamped critical speeds.
+            CriticalSpeedResults.wd(): damped critical speeds.
+            CriticalSpeedResults.log_dec : log_dec for each critical speed.
+            CriticalSpeedResults.damping_ratio : damping ratio for each critical speed.
+            CriticalSpeedResults.whirl_direction : whirl dir. for each critical speed.
 
         Examples
         --------
@@ -1419,9 +1423,20 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.FrequencyResponseResults
-            For more information on attributes and methods available see:
-            :py:class:`ross.FrequencyResponseResults`
+        results : object
+            An instance of ForcedResponseResult class, which is used to post-process
+            results. Attributes stored:
+            freq_resp : array
+                Array with the frequency response for each node for each pair
+                input/output.
+            speed_range : array
+                Array with the frequencies.
+            velc_resp : array
+                Array with the velocity response for each node for each pair
+                input/output.
+            accl_resp : array
+                Array with the acceleration response for each node for each pair
+                input/output.
 
         Examples
         --------
@@ -1560,9 +1575,17 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.ForcedResponseResult
-            For more information on attributes and methods available see:
-            :py:class:`ross.ForcedResponseResult`
+        forced_resp : object
+            An instance of ForcedResponseResult class, which is used to post-process
+            results. Attributes stored:
+            forced_resp : array
+                Array with the forced response for each node for each frequency.
+            speed_range : array
+                Array with the frequencies.
+            velc_resp : array
+                Array with the velocity response for each node for each frequency.
+            accl_resp : array
+                Array with the acceleration response for each node for each frequency.
 
         Examples
         --------
@@ -1725,9 +1748,17 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.ForcedResponseResult
-            For more information on attributes and methods available see:
-            :py:class:`ross.ForcedResponseResult`
+        forced_response : object
+            An instance of ForcedResponseResult class, which is used to post-process
+            results. Attributes stored:
+            forced_resp : array
+                Array with the forced response for each node for each frequency.
+            speed_range : array
+                Array with the frequencies.
+            velc_resp : array
+                Array with the velocity response for each node for each frequency.
+            accl_resp : array
+                Array with the acceleration response for each node for each frequency.
 
         Examples
         --------
@@ -2027,9 +2058,10 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.CampbellResults
-            For more information on attributes and methods available see:
-            :py:class:`ross.CampbellResults`
+        results : array
+            Array with the damped natural frequencies, log dec and precessions
+            corresponding to each speed of the speed_rad array.
+            It will be returned if plot=False.
 
         Examples
         --------
@@ -2109,12 +2141,6 @@ class Rotor(object):
             If True a synchronous analysis is carried out and the frequency of
             the first forward model will be equal to the speed.
             Default is False.
-
-        Returns
-        -------
-        results : ross.UCSResults
-            For more information on attributes and methods available see:
-            :py:class:`ross.UCSResults`
         """
         if stiffness_range is None:
             if self.rated_w is not None:
@@ -2214,9 +2240,8 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.Level1Results
-            For more information on attributes and methods available see:
-            :py:class:`ross.Level1Results`
+        fig : Plotly graph_objects.Figure()
+            The figure object with the plot.
 
         Example
         -------
@@ -2299,9 +2324,10 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.TimeResponseResults
-            For more information on attributes and methods available see:
-            :py:class:`ross.TimeResponseResults`
+        results : array
+            Array containing the time array, the system response, and the
+            time evolution of the state vector.
+            It will be returned if plot=False.
 
         Examples
         --------
@@ -2318,11 +2344,14 @@ class Rotor(object):
         >>> dof = 13
         >>> response.yout[:, dof] # doctest: +ELLIPSIS
         array([ 0.00000000e+00,  1.86686693e-07,  8.39130663e-07, ...
-        >>> # plot time response for a given probe:
+
+        # plot time response for a given probe:
         >>> fig1 = response.plot_1d(probe=[probe1])
-        >>> # plot orbit response - plotting 2D nodal orbit:
+
+        # plot orbit response - plotting 2D nodal orbit:
         >>> fig2 = response.plot_2d(node=node)
-        >>> # plot orbit response - plotting 3D orbits - full rotor model:
+
+        # plot orbit response - plotting 3D orbits - full rotor model:
         >>> fig3 = response.plot_3d()
         """
         t_, yout, xout = self.time_response(speed, F, t)
@@ -2669,9 +2698,8 @@ class Rotor(object):
 
         Returns
         -------
-        results : ross.StaticResults
-            For more information on attributes and methods available see:
-            :py:class:`ross.StaticResults`
+        results: object
+            An instance of StaticResult class, which is used to create plots.
 
         Raises
         ------
diff --git a/ross/shaft_element.py b/ross/shaft_element.py
index 4c4a5c30..b766ce73 100644
--- a/ross/shaft_element.py
+++ b/ross/shaft_element.py
@@ -29,7 +29,7 @@ class ShaftElement(Element):
 
     .. math::
 
-        [x_0, y_0, \alpha_0, \beta_0, x_1, y_1, \alpha_1, \beta_1]^T
+        [x_0, y_0, \alpha_0, \beta_0, x_1, y_1, \alpha_1, \beta_1]**T
     Where :math:`\alpha_0` and :math:`\alpha_1` are the bending on the yz plane
     and :math:`\beta_0` and :math:`\beta_1` are the bending on the xz plane.
 
@@ -47,7 +47,7 @@ class ShaftElement(Element):
     odr : float, pint.Quantity, optional
         Outer diameter of the element at the right position (m).
         Default is equal to odl value (cylindrical element).
-    material : ross.Material
+    material : ross.material
         Shaft material.
     n : int, optional
         Element number (coincident with it's first node).
@@ -67,7 +67,7 @@ class ShaftElement(Element):
     gyroscopic : bool, optional
         Determine if gyroscopic effects are taken into account.
         Default is True.
-    shear_method_calc : str, optional
+    shear_method_calc : string, optional
         Determines which shear calculation method the user will adopt
         Default is 'cowper'
     tag : str, optional
@@ -76,8 +76,7 @@ class ShaftElement(Element):
 
     Returns
     -------
-    shaft_element : ross.ShaftElement
-        A shaft_element object.
+    A shaft element
 
     Attributes
     ----------
@@ -107,8 +106,7 @@ class ShaftElement(Element):
 
     References
     ----------
-    .. bibliography::
-        :filter: docname in docnames
+    .. bibliography:: ../../../docs/refs.bib
 
     Examples
     --------
@@ -654,6 +652,7 @@ class ShaftElement(Element):
         Returns
         -------
         K : np.ndarray
+
             Stiffness matrix for the shaft element.
 
         Examples
@@ -1171,22 +1170,16 @@ class ShaftElement6DoF(ShaftElement):
     The matrices will be defined considering the following local
     coordinate vector:
 
-    .. math::
+    :math:`[u_0, v_0, w_0, \theta_0, \psi_0, \phi_0, u_1, v_1, w_1, \theta_1, \psi_1, \phi_1]**T`
 
-        [u_0, v_0, w_0, \theta_0, \psi_0, \phi_0, u_1, v_1, w_1, \theta_1, \psi_1, \phi_1]^T
     Being the following their ordering for an element:
 
-    :math:`x_0,u_0`  - horizontal translation;
-
-    :math:`y_0,v_0`  - vertical translation;
-
-    :math:`z_0,w_0`  - axial translation;
-
-    :math:`\theta_0` - rotation around horizontal, bending on the yz plane;
-
-    :math:`\psi_0`   - rotation around vertical, bending on the xz plane;
-
-    :math:`\phi_0`   - torsion around axial, z direction.
+        :math:`x_0,u_0`  - horizontal translation;
+        :math:`y_0,v_0`  - vertical translation;
+        :math:`z_0,w_0`  - axial translation;
+        :math:`\theta_0` - rotation around horizontal, bending on the yz plane;
+        :math:`\psi_0`   - rotation around vertical, bending on the xz plane;
+        :math:`\phi_0`   - torsion around axial, z direction.
 
     Parameters
     ----------
@@ -1202,7 +1195,7 @@ class ShaftElement6DoF(ShaftElement):
     odr : float, pint.Quantity, optional
         Outer diameter of the element at the right node (m).
         Default is equal to odl value for cylindrical element.
-    material : ross.Material
+    material : ross.material
         Shaft material.
     alpha : float, optional
         Proportional damping coefficient, associated to the element Mass matrix
@@ -1234,8 +1227,8 @@ class ShaftElement6DoF(ShaftElement):
 
     Returns
     -------
-    shaft_element : rs.ShaftElement6DoF
-        A 6 degrees of freedom shaft element, with available gyroscopic, shear and rotary inertia effects.
+    A 6 degrees of freedom shaft element, with available gyroscopic, shear and rotary
+    inertia effects.
 
     Attributes
     ----------
@@ -1247,8 +1240,7 @@ class ShaftElement6DoF(ShaftElement):
 
     References
     ----------
-    .. bibliography::
-        :filter: docname in docnames
+    .. bibliography:: ../../../docs/refs.bib
 
     Examples
     --------
@@ -1291,6 +1283,7 @@ class ShaftElement6DoF(ShaftElement):
             raise AttributeError("Material is not defined.")
 
         if type(material) is str:
+            # os.chdir(Path(os.path.dirname(ross.__file__)))
             self.material = Material.load_material(material)
         else:
             self.material = material
@@ -1787,20 +1780,18 @@ class ShaftElement6DoF(ShaftElement):
     def Kst(self):
         """Dynamic stiffness matrix for an instance of a 6 DoF shaft element.
 
-        Dynamic stiffness matrix for the 6 DoF shaft element. This is
-        directly dependent on the rotation speed Omega. It needs to be
-        multiplied by the adequate Omega value when used in time depen-
-        dent analyses. The matrix multiplier term is:
-
-        [(Iz*Omega*rho)/(15*L)] * [Kst]
-
-        and here the Omega value has been suppressed and must be added
-        in the adequate analyses.
-
         Returns
         -------
         Kst : np.ndarray
-            Dynamic stiffness matrix for the 6 DoF shaft element.
+            Dynamic stiffness matrix for the 6 DoF shaft element. This is
+            directly dependent on the rotation speed Omega. It needs to be
+            multiplied by the adequate Omega value when used in time depen-
+            dent analyses. The matrix multiplier term is:
+
+            [(Iz*Omega*rho)/(15*L)] * [Kst]
+
+            and here the Omega value has been suppressed and must be added
+            in the adequate analyses.
 
         Examples
         --------
@@ -1864,15 +1855,13 @@ class ShaftElement6DoF(ShaftElement):
     def G(self):
         """Gyroscopic matrix for an instance of a 6 DoFs shaft element.
 
-        Gyroscopic matrix for the 6 DoF shaft element. Similar to the Kst
-        stiffness matrix, this Gyro matrix is also multiplied by the value
-        of the rotating speed Omega. It is omitted from this and must be
-        added in the respective analyses.
-
         Returns
         -------
         G : np.ndarray
-            Gyroscopic matrix for the 6 DoF shaft element.
+            Gyroscopic matrix for the 6 DoF shaft element. Similar to the Kst
+            stiffness matrix, this Gyro matrix is also multiplied by the value
+            of the rotating speed Omega. It is omitted from this and must be
+            added in the respective analyses.
 
         Examples
         --------
diff --git a/ross/units.py b/ross/units.py
index eb643fe0..6141a744 100644
--- a/ross/units.py
+++ b/ross/units.py
@@ -36,10 +36,18 @@ units = {
     "Id": "kg*m**2",
     "width": "meter",
     "depth": "meter",
+    "pitch": "meter",
+    "height": "meter",
+    "shaft_radius": "meter",
+    "radial_clearance": "meter",
     "i_d": "meter",
     "o_d": "meter",
     "unbalance_magnitude": "kg*m",
     "unbalance_phase": "rad",
+    "inlet_pressure": "pascal",
+    "outlet_pressure": "pascal",
+    "inlet_temperature": "degK",
+    "inlet_swirl_velocity": "m/s",
 }
 for i, unit in zip(["k", "c"], ["N/m", "N*s/m"]):
     for j in ["x", "y", "z"]:
diff --git a/setup.py b/setup.py
index 09fbb0dc..758d29e9 100644
--- a/setup.py
+++ b/setup.py
@@ -53,7 +53,7 @@ EXTRAS = {
         "sphinx_bootstrap_theme",
         "nbsphinx",
         "numpydoc==0.9.2",
-        "sphinxcontrib-bibtex>=2.2",
+        "sphinxcontrib-bibtex==1.0.0",
         "black",
         "isort",
     ]


Test patch:
diff --git a/ross/tests/test_units.py b/ross/tests/test_units.py
index e9884b58..073e6cff 100644
--- a/ross/tests/test_units.py
+++ b/ross/tests/test_units.py
@@ -11,35 +11,215 @@ def test_new_units_loaded():
 
 @pytest.fixture
 def auxiliary_function():
-    # fmt: off
     @check_units
-    def func(E, G_s, rho, L, idl, idr, odl, odr, speed, frequency, frequency_range, m, mx, my, Ip, Id,
-             width, depth, i_d, o_d, kxx, kxy, kxz, kyx, kyy, kyz, kzx, kzy, kzz, cxx, cxy,
-             cxz, cyx, cyy, cyz, czx, czy, czz, unbalance_magnitude, unbalance_phase):
+    def func(
+        E,
+        G_s,
+        rho,
+        L,
+        idl,
+        idr,
+        odl,
+        odr,
+        speed,
+        frequency,
+        frequency_range,
+        m,
+        mx,
+        my,
+        Ip,
+        Id,
+        width,
+        depth,
+        pitch,
+        height,
+        shaft_radius,
+        radial_clearance,
+        i_d,
+        o_d,
+        unbalance_magnitude,
+        unbalance_phase,
+        inlet_pressure,
+        outlet_pressure,
+        inlet_temperature,
+        inlet_swirl_velocity,
+        kxx,
+        kxy,
+        kxz,
+        kyx,
+        kyy,
+        kyz,
+        kzx,
+        kzy,
+        kzz,
+        cxx,
+        cxy,
+        cxz,
+        cyx,
+        cyy,
+        cyz,
+        czx,
+        czy,
+        czz,
+    ):
         return (
-            E, G_s, rho, L, idl, idr, odl, odr, speed, frequency, frequency_range,m, mx, my, Ip, Id,
-            width, depth, i_d, o_d, kxx, kxy, kxz, kyx, kyy, kyz, kzx, kzy, kzz, cxx, cxy,
-            cxz, cyx, cyy, cyz, czx, czy, czz, unbalance_magnitude, unbalance_phase
+            E,
+            G_s,
+            rho,
+            L,
+            idl,
+            idr,
+            odl,
+            odr,
+            speed,
+            frequency,
+            frequency_range,
+            m,
+            mx,
+            my,
+            Ip,
+            Id,
+            width,
+            depth,
+            pitch,
+            height,
+            shaft_radius,
+            radial_clearance,
+            i_d,
+            o_d,
+            unbalance_magnitude,
+            unbalance_phase,
+            inlet_pressure,
+            outlet_pressure,
+            inlet_temperature,
+            inlet_swirl_velocity,
+            kxx,
+            kxy,
+            kxz,
+            kyx,
+            kyy,
+            kyz,
+            kzx,
+            kzy,
+            kzz,
+            cxx,
+            cxy,
+            cxz,
+            cyx,
+            cyy,
+            cyz,
+            czx,
+            czy,
+            czz,
         )
-    # fmt: on
+
     return func
 
 
 def test_units(auxiliary_function):
-    # fmt: off
     results = auxiliary_function(
-        E=1, G_s=1, rho=1, L=1, idl=1, idr=1, odl=1, odr=1, speed=1, frequency=1, frequency_range=(1, 1),
-        m=1, mx=1, my=1, Ip=1, Id=1, width=1,  depth=1, i_d=1, o_d=1, kxx=1, kxy=1, kxz=1, kyx=1,
-        kyy=1, kyz=1, kzx=1, kzy=1, kzz=1, cxx=1, cxy=1, cxz=1, cyx=1, cyy=1, cyz=1,
-        czx=1, czy=1, czz=1, unbalance_magnitude=1, unbalance_phase=1
+        E=1,
+        G_s=1,
+        rho=1,
+        L=1,
+        idl=1,
+        idr=1,
+        odl=1,
+        odr=1,
+        speed=1,
+        frequency=1,
+        frequency_range=(1, 1),
+        m=1,
+        mx=1,
+        my=1,
+        Ip=1,
+        Id=1,
+        width=1,
+        depth=1,
+        pitch=1,
+        height=1,
+        shaft_radius=1,
+        radial_clearance=1,
+        i_d=1,
+        o_d=1,
+        unbalance_magnitude=1,
+        unbalance_phase=1,
+        inlet_pressure=1,
+        outlet_pressure=1,
+        inlet_temperature=1,
+        inlet_swirl_velocity=1,
+        kxx=1,
+        kxy=1,
+        kxz=1,
+        kyx=1,
+        kyy=1,
+        kyz=1,
+        kzx=1,
+        kzy=1,
+        kzz=1,
+        cxx=1,
+        cxy=1,
+        cxz=1,
+        cyx=1,
+        cyy=1,
+        cyz=1,
+        czx=1,
+        czy=1,
+        czz=1,
     )
     # check if all available units are tested
     assert len(results) == len(units)
 
-    (E, G_s, rho, L, idl, idr, odl, odr, speed, frequency, frequency_range,m, mx, my, Ip, Id,
-     width, depth, i_d, o_d, kxx, kxy, kxz, kyx, kyy, kyz, kzx, kzy, kzz, cxx, cxy,
-     cxz, cyx, cyy, cyz, czx, czy, czz, unbalance_magnitude, unbalance_phase) = results
-    # fmt: on
+    (
+        E,
+        G_s,
+        rho,
+        L,
+        idl,
+        idr,
+        odl,
+        odr,
+        speed,
+        frequency,
+        frequency_range,
+        m,
+        mx,
+        my,
+        Ip,
+        Id,
+        width,
+        depth,
+        pitch,
+        height,
+        shaft_radius,
+        radial_clearance,
+        i_d,
+        o_d,
+        unbalance_magnitude,
+        unbalance_phase,
+        inlet_pressure,
+        outlet_pressure,
+        inlet_temperature,
+        inlet_swirl_velocity,
+        kxx,
+        kxy,
+        kxz,
+        kyx,
+        kyy,
+        kyz,
+        kzx,
+        kzy,
+        kzz,
+        cxx,
+        cxy,
+        cxz,
+        cyx,
+        cyy,
+        cyz,
+        czx,
+        czy,
+        czz,
+    ) = results
 
     assert E == 1
     assert G_s == 1
@@ -59,8 +239,18 @@ def test_units(auxiliary_function):
     assert Id == 1
     assert width == 1
     assert depth == 1
+    assert pitch == 1
+    assert height == 1
+    assert shaft_radius == 1
+    assert radial_clearance == 1
     assert i_d == 1
     assert o_d == 1
+    assert unbalance_magnitude == 1
+    assert unbalance_phase == 1
+    assert inlet_pressure == 1
+    assert outlet_pressure == 1
+    assert inlet_temperature == 1
+    assert inlet_swirl_velocity == 1
     assert kxx == 1
     assert kxy == 1
     assert kxz == 1
@@ -79,8 +269,6 @@ def test_units(auxiliary_function):
     assert czx == 1
     assert czy == 1
     assert czz == 1
-    assert unbalance_magnitude == 1
-    assert unbalance_phase == 1
 
 
 def test_unit_Q_(auxiliary_function):
@@ -103,8 +291,18 @@ def test_unit_Q_(auxiliary_function):
         Id=Q_(1, "kg*m**2"),
         width=Q_(1, "meter"),
         depth=Q_(1, "meter"),
+        pitch=Q_(1, "meter"),
+        height=Q_(1, "meter"),
+        shaft_radius=Q_(1, "meter"),
+        radial_clearance=Q_(1, "meter"),
         i_d=Q_(1, "meter"),
         o_d=Q_(1, "meter"),
+        unbalance_magnitude=Q_(1, "kg*m"),
+        unbalance_phase=Q_(1, "rad"),
+        inlet_pressure=Q_(1, "pascal"),
+        outlet_pressure=Q_(1, "pascal"),
+        inlet_temperature=Q_(1, "degK"),
+        inlet_swirl_velocity=Q_(1, "m/s"),
         kxx=Q_(1, "N/m"),
         kxy=Q_(1, "N/m"),
         kxz=Q_(1, "N/m"),
@@ -123,17 +321,60 @@ def test_unit_Q_(auxiliary_function):
         czx=Q_(1, "N*s/m"),
         czy=Q_(1, "N*s/m"),
         czz=Q_(1, "N*s/m"),
-        unbalance_magnitude=Q_(1, "kg*m"),
-        unbalance_phase=Q_(1, "rad"),
     )
 
     # check if all available units are tested
     assert len(results) == len(units)
-    # fmt: off
-    (E, G_s, rho, L, idl, idr, odl, odr, speed, frequency, frequency_range,m, mx, my, Ip, Id,
-     width, depth, i_d, o_d, kxx, kxy, kxz, kyx, kyy, kyz, kzx, kzy, kzz, cxx, cxy,
-     cxz, cyx, cyy, cyz, czx, czy, czz, unbalance_magnitude, unbalance_phase) = results
-    # fmt: on
+    (
+        E,
+        G_s,
+        rho,
+        L,
+        idl,
+        idr,
+        odl,
+        odr,
+        speed,
+        frequency,
+        frequency_range,
+        m,
+        mx,
+        my,
+        Ip,
+        Id,
+        width,
+        depth,
+        pitch,
+        height,
+        shaft_radius,
+        radial_clearance,
+        i_d,
+        o_d,
+        unbalance_magnitude,
+        unbalance_phase,
+        inlet_pressure,
+        outlet_pressure,
+        inlet_temperature,
+        inlet_swirl_velocity,
+        kxx,
+        kxy,
+        kxz,
+        kyx,
+        kyy,
+        kyz,
+        kzx,
+        kzy,
+        kzz,
+        cxx,
+        cxy,
+        cxz,
+        cyx,
+        cyy,
+        cyz,
+        czx,
+        czy,
+        czz,
+    ) = results
 
     assert E == 1
     assert G_s == 1
@@ -153,8 +394,18 @@ def test_unit_Q_(auxiliary_function):
     assert Id == 1
     assert width == 1
     assert depth == 1
+    assert pitch == 1
+    assert height == 1
+    assert shaft_radius == 1
+    assert radial_clearance == 1
     assert i_d == 1
     assert o_d == 1
+    assert unbalance_magnitude == 1
+    assert unbalance_phase == 1
+    assert inlet_pressure == 1
+    assert outlet_pressure == 1
+    assert inlet_temperature == 1
+    assert inlet_swirl_velocity == 1
     assert kxx == 1
     assert kxy == 1
     assert kxz == 1
@@ -173,8 +424,6 @@ def test_unit_Q_(auxiliary_function):
     assert czx == 1
     assert czy == 1
     assert czz == 1
-    unbalance_magnitude == 1
-    unbalance_phase == 1
 
 
 def test_unit_Q_conversion(auxiliary_function):
@@ -197,8 +446,18 @@ def test_unit_Q_conversion(auxiliary_function):
         Id=Q_(1, "lb*in**2"),
         width=Q_(1, "inches"),
         depth=Q_(1, "inches"),
+        pitch=Q_(1, "inches"),
+        height=Q_(1, "inches"),
+        shaft_radius=Q_(1, "inches"),
+        radial_clearance=Q_(1, "inches"),
         i_d=Q_(1, "inches"),
         o_d=Q_(1, "inches"),
+        unbalance_magnitude=Q_(1, "lb*in"),
+        unbalance_phase=Q_(1, "deg"),
+        inlet_pressure=Q_(1, "kgf/cm²"),
+        outlet_pressure=Q_(1, "kgf/cm²"),
+        inlet_temperature=Q_(1, "degC"),
+        inlet_swirl_velocity=Q_(1, "ft/s"),
         kxx=Q_(1, "lbf/in"),
         kxy=Q_(1, "lbf/in"),
         kxz=Q_(1, "lbf/in"),
@@ -217,18 +476,61 @@ def test_unit_Q_conversion(auxiliary_function):
         czx=Q_(1, "lbf*s/in"),
         czy=Q_(1, "lbf*s/in"),
         czz=Q_(1, "lbf*s/in"),
-        unbalance_magnitude=Q_(1, "lb*in"),
-        unbalance_phase=Q_(1, "deg"),
     )
 
     # check if all available units are tested
     assert len(results) == len(units)
 
-    # fmt: off
-    (E, G_s, rho, L, idl, idr, odl, odr, speed, frequency, frequency_range,m, mx, my, Ip, Id,
-     width, depth, i_d, o_d, kxx, kxy, kxz, kyx, kyy, kyz, kzx, kzy, kzz, cxx, cxy,
-     cxz, cyx, cyy, cyz, czx, czy, czz, unbalance_magnitude, unbalance_phase) = results
-    # fmt: on
+    (
+        E,
+        G_s,
+        rho,
+        L,
+        idl,
+        idr,
+        odl,
+        odr,
+        speed,
+        frequency,
+        frequency_range,
+        m,
+        mx,
+        my,
+        Ip,
+        Id,
+        width,
+        depth,
+        pitch,
+        height,
+        shaft_radius,
+        radial_clearance,
+        i_d,
+        o_d,
+        unbalance_magnitude,
+        unbalance_phase,
+        inlet_pressure,
+        outlet_pressure,
+        inlet_temperature,
+        inlet_swirl_velocity,
+        kxx,
+        kxy,
+        kxz,
+        kyx,
+        kyy,
+        kyz,
+        kzx,
+        kzy,
+        kzz,
+        cxx,
+        cxy,
+        cxz,
+        cyx,
+        cyy,
+        cyz,
+        czx,
+        czy,
+        czz,
+    ) = results
 
     assert E == 6894.7572931683635
     assert G_s == 6894.7572931683635