Skip to main content

ross-Report

Project description

ROSS Report

This package aims to build a report for ROSS, a rotordynamics python package.

Quick start to graphics submodule

The ross-report's structure is very simple, in the highest level we have an object called Layout, which constructs the whole html page.
Layout is composed of Pages which is composed of Content objects (like Text or PlotlyFigure), to arrange all the components on the html version you can simply put them in order. For a static PDF version of the report you can use CTRL + P on a browser like chrome.

In this first example we're going to see how to construct a simple hello_world.html with some text and an Plotly Figure.

from report.graphics import *
import plotly.graph_objects as go

simple_text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"""
another_simple_text = simple_text[:-2][::-1].capitalize() + '.'   # actually the same

fig = go.FigureWidget(data=go.Bar(y=[2, 3, 1]))
fig.layout["title"]["text"] = "Boring bars"
fig.layout["height"] = 500
fig.layout["width"] = 750

page = Page(content=[
                     Text(simple_text),
                     PlotlyFigure(fig),
                     Text(another_simple_text),
                     ]
            )

layout = Layout(pages=page, main_title="Hello World")
html_str = layout.render_html_str()

with open("hello_world.html", "w") as f:
    f.write(html_str)

The hello_world.html should look like this.

Complete example

In this example we first instantiate a ross.Report, run some analysis with the analysis subpackage and then export an html file containing the graphical report.

from report.analysis import *
from report.graphics import *
import ross as rs

i_d = 0
o_d = 0.05
n = 6
L = [0.25 for _ in range(n)]

shaft_elem = [
    rs.ShaftElement(
        l,
        i_d,
        o_d,
        material=rs.steel,
        shear_effects=True,
        rotary_inertia=True,
        gyroscopic=True,
    )
    for l in L
]

disk0 = rs.DiskElement.from_geometry(
    n=2, material=steel, width=0.07, i_d=0.05, o_d=0.28
)
disk1 = rs.DiskElement.from_geometry(
    n=4, material=steel, width=0.07, i_d=0.05, o_d=0.28
)

stfx = [0.4e7, 0.5e7, 0.6e7, 0.7e7]
stfy = [0.8e7, 0.9e7, 1.0e7, 1.1e7]
freq = [400, 800, 1200, 1600]
bearing0 = rs.BearingElement(0, kxx=stfx, kyy=stfy, cxx=2e3, frequency=freq)
bearing1 = rs.BearingElement(6, kxx=stfx, kyy=stfy, cxx=2e3, frequency=freq)

rotor = rs.Rotor(shaft_elem, [disk0, disk1], [bearing0, bearing1])

# coefficients for minimum clearance
stfx = [0.7e7, 0.8e7, 0.9e7, 1.0e7]
dampx = [2.0e3, 1.9e3, 1.8e3, 1.7e3]
freq = [400, 800, 1200, 1600]
bearing0 = rs.BearingElement(0, kxx=stfx, cxx=dampx, frequency=freq)
bearing1 = rs.BearingElement(6, kxx=stfx, cxx=dampx, frequency=freq)
min_clearance_brg = [bearing0, bearing1]

# coefficients for maximum clearance
stfx = [0.4e7, 0.5e7, 0.6e7, 0.7e7]
dampx = [2.8e3, 2.7e3, 2.6e3, 2.5e3]
freq = [400, 800, 1200, 1600]
bearing0 = rs.BearingElement(0, kxx=stfx, cxx=dampx, frequency=freq)
bearing1 = rs.BearingElement(6, kxx=stfx, cxx=dampx, frequency=freq)
max_clearance_brg = [bearing0, bearing1]

bearings = [min_clearance_brg, max_clearance_brg]
report = Report(
        rotor=rotor,
        speed_range=(400, 1000),
        tripspeed=1200,
        bearing_stiffness_range=(5, 8),
        bearing_clearance_lists=bearings,
        speed_units="rad/s",
    )

D = [0.35, 0.35]
H = [0.08, 0.08]
HP = [10000, 10000]
RHO_ratio = [1.11, 1.14]
RHOd = 30.45
RHOs = 37.65
oper_speed = 1000.0
data = report.run(D, H, HP, oper_speed, RHO_ratio, RHOs, RHOd)

plot_rotor_1, ucs_fig_1, mode_fig_1 = report.assets_prep(data)["figs"]

text1 = """This is a report automatically generated using <a href= https://github.com/ross-rotordynamics/ross> ROSS</a>, a python package for rotordynamics analysis.
<br>Below there's a graphical representation of the rotor analyzed."""
text2 = """In this section the calculations carried out to evaluate the critical speed map and the rotor response to unbalance are described.
 The results of each calculation are shown at the end of this paragraph."""
text3 = """The undamped critical speed analysis is carried out according to API 617 7th edition para. 2.6.2.3. The rotor system as described in Appendix 1 is used. The bearings are represented by an equivalent spring constant between rotor and pedestals, which may then be considered as elastically mounted. Isotropic, linear bearing characteristics are assumed and no damping is considered present in the system. The stiffness range selected for the calculation is such to properly describe the behavior of the rotor and provide the required information to perform the next analysis steps. The actual stiffness range (achievable by adjusting bearing clearance) is much more limited and always inside the calculation range. The rotordynamic system is solved and the undamped lateral critical speeds are calculated as a function of support equivalent stiffness over the user defined stiffness range. The results are summarized in the critical speed maps as shown in the following pages. Superimposed on the same plot are the horizontal and vertical Bearing Clearance curves (Kxx and Kzz ) either for maximum and minimum Bearing Clearance. The intersections of the vertical Bearing Clearance and critical speed curves provide the undamped critical speed values and give, in a preliminary way, a rough estimation of the critical speed and Bearing Clearance range in operation. The 1st and 2nd mode shapes for maximum and minimum Bearing Clearance are also attached, with the only intent of mode shape identification. Therefore, the vibration amplitudes are normalized with respect to the maximum level.
"""
page1 = Page(
    content=[Text(text=text1),
             PlotlyFigure(figure=plot_rotor_1),
             Title(title="Critical Speed Analysis"),
             Text(text=text2),
             Title("Undamped Critical Speed Analysis"),
             Text(text=text3),
             ]
             )
page2 = Page(content=[PlotlyFigure(figure=ucs_fig_1), PlotlyFigure(figure=mode_fig_1),])
pages = [page1, page2]

html = Layout(pages=pages).render_html_str()

with open("report.html", "w") as f:
    f.write(html)

The report.html file should look like this.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ross-report-0.0.1.tar.gz (30.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ross_report-0.0.1-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file ross-report-0.0.1.tar.gz.

File metadata

  • Download URL: ross-report-0.0.1.tar.gz
  • Upload date:
  • Size: 30.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for ross-report-0.0.1.tar.gz
Algorithm Hash digest
SHA256 7176bea302246fb6eb77d7106f077dd6ff21a49826e3eae20a814f1be421b599
MD5 57915cdecec7fc116de722151d49e042
BLAKE2b-256 2b3587ae7b0676668009b077c98f2af89b73beca67e08884d992aad08826563a

See more details on using hashes here.

File details

Details for the file ross_report-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: ross_report-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for ross_report-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f40c551dc58b8bb9c962ac7583234da25e031bdd67a030754d84ff8406cedc5
MD5 d03acc2010fd4c15979aabac1af7d051
BLAKE2b-256 d5f496a8ad1352636a4af9b2e05c1e5e3f9c16d6e4db0a28fe8fe0328c7a9d6a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page