petrobras / ross

ROSS is a library written in Python for rotordynamic analysis.
https://ross.readthedocs.io
Apache License 2.0
127 stars 101 forks source link

New tilting-pad hidrodynamic bearing models #691

Open rodrigomoliveira1 opened 3 years ago

rodrigomoliveira1 commented 3 years ago

PR #690 is about implementing new types of bearing models to ROSS. Certainly it'll bring a lot of discussion along, so I'm opening this issue for this purpose. Any suggestions, enhancements, new bearing models, references, examples (how to use), etc, please, report here to keep track of what's happening on ROSS.

Moreover, always add a brief summary in each commit, it helps a lot to understand the changes in the code.

(@verg1lio, @hiagopinacio, @bela-bs, @marcusfilipesr, @JuliaMota, @davidjgm)

verg1lio commented 3 years ago

Great to know @rodrigomoliveira1, and it's a pleasure to meet you @JuliaMota and @davidjgm. Our team will be working on it, mostly @elyqg, @marcusfilipesr and myself (@verg1lio). @bela-bs should be busy finishing the defect models for a while, and @hiagopinacio is our Python/GIT guy when we have critical decisions to make.

Other pull requests will be made for the other bearing types, in total those are: 1) Cylindrical (still to be opened); 2) Tilting-pad (open!) and 3) Thrust (being validated in Matlab), all being thermo-hydro-dynamic bearing models. We will be going for a object-oriented and modular code, using the same iterative procedures to converge the temperature, pressure and velocity fields whenever possible, so it should prove to be a very interesting code to work on. Also, an abstract bearing class with shared properties for the others to inherit is the current go-to idea, but we are open to your inputs as always. We will have a more clear view of the problem as things progress further.

Anyways, we are currently doing the hard translation of the Matlab code to Python, and will follow that with its validation and conference against the working Matlab version. After this procedure is done, we will modularize and make it object-oriented instead of linear.

It is a pleasure to be working on a challenging problem such as this, and with a capable team to top it off! Let's get to it guys.

JuliaMota commented 3 years ago

Good Morning!

The initiative to include a hydrodynamic tilting bearing model is very good. Currently, we have a functional code validated with the literature that calculates the pressure field, forces, equilibrium position and dynamic coefficients for a cylindrical hydrodynamic bearing. Recently, the possibility of two new geometries has been added: the elliptical bearing (or lemon bearing) and the worn bearing. Both validated and with the same returns as the cylindrical bearing.

Including the hydrodynamic tilting bearing is one of the objectives that we have not yet achieved. I believe that the code already implemented in FluidFlow can be used in some way also for this case. Anyway, I think your model should be in the FluidFlow directory, not in a separate location.

I am available for any clarification.

(@verg1lio, @hiagopinacio, @bela-bs, @marcusfilipesr )

rodrigomoliveira1 commented 3 years ago

I agree with @JuliaMota. These new files should be located in fluidflow folder, because:

  1. it belongs to the same group of classes and functions. Separating them could lead to repeated code.
  2. you could take advantage of several existing methods in FluidFlow package.
  3. adding new folders require adding __init__.py files to install and start the package.
davidjgm commented 3 years ago

Hi @verg1lio, @hiagopinacio, @bela-bs and @marcusfilipesr, I would be pleased to help.
As your code is being committed, we can see how the currently code can be integrated with yours, since we have already done some work related to cylindrical bearings. Indeed, a model of tilting-pad bearings is a must-have in the repository; existing methods in the FluidFlow package should help.

verg1lio commented 3 years ago

Oh that would be all the better @JuliaMota. Our code should be compatible, or at least adaptable, to a standardized formulation without too much trouble. It is our focus at the moment, and the translation should progress quickly too. @davidjgm assistance would also be greatly appreciated, since we do our formulations ourselves, and despite knowing the physics behind it we do not have much, if any, experience with the FluidFlow package.

I believe that we should dedicate some time to familiarize ourselves with what's available at FluidFlow, before commiting to a full conversion of the more extensive convergence methods. That could save us some time and redundant work at the very least.

What is you take on the matter @marcusfilipesr, @elyqg and @hiagopinacio?

marcusfilipesr commented 3 years ago

I am delighted to know that you guys are going to be around us through this process, I'm sure that your help will be essential.

And I agree with @verg1lio when saying that we should dedicate some time to understand your FluidFlow package.

JuliaMota commented 3 years ago

We published an article at an event of the National Laboratory for Scientific Computing. It contains all the initial formulation for the pressure field and checks with the models used for short and infinitely long bearings. It is still an initial study, but it can help them better understand the formulation.

You can access the article in the proceedings of the XIII EAMC - 2020 event, available at: [http://www.eamc.lncc.br/PastEditions.php]

The article is called "Simplifications of Navier-Stokes in Journal Bearing Simulation", it was written by me, by professor @juvianna and by @flaviorangel , who contributed a lot with all the initial part of the code.

verg1lio commented 3 years ago

We published an article at an event of the National Laboratory for Scientific Computing. It contains all the initial formulation for the pressure field and checks with the models used for short and infinitely long bearings. It is still an initial study, but it can help them better understand the formulation.

You can access the article in the proceedings of the XIII EAMC - 2020 event, available at: [http://www.eamc.lncc.br/PastEditions.php]

The article is called "Simplifications of Navier-Stokes in Journal Bearing Simulation", it was written by me, by professor @juvianna and by @flaviorangel , who contributed a lot with all the initial part of the code.

Alright, and thanks for the reference @JuliaMota! I will check it out now and see if it is compatible to what we have implemented here. Out material is based mostly on a Thesis and a Dissertation, and on some smaller works, which we can provide here should you wish it.

verg1lio commented 3 years ago

Ok, so apparently your model solves the Navier-Stokes equation for the pressure and fluid velocity fields correct? Starting from the geometry, then making the dimensionless analysis with pressure field and finally moving to the Poisson formulation to get the fluid velocity field.

Our model have some differences, but we will evaluate them better tomorrow morning in an internal meeting (@marcusfilipesr @hiagopinacio @verg1lio @elyqg), and get back to you guys after we have a consensus on how to proceed. Again, thanks a lot @JuliaMota @rodrigomoliveira1 and @davidjgm for the assistance, and we will keep updating our course of action and progress here.

Have a good evening!

JuliaMota commented 3 years ago

We published an article at an event of the National Laboratory for Scientific Computing. It contains all the initial formulation for the pressure field and checks with the models used for short and infinitely long bearings. It is still an initial study, but it can help them better understand the formulation. You can access the article in the proceedings of the XIII EAMC - 2020 event, available at: [http://www.eamc.lncc.br/PastEditions.php] The article is called "Simplifications of Navier-Stokes in Journal Bearing Simulation", it was written by me, by professor @juvianna and by @flaviorangel , who contributed a lot with all the initial part of the code.

Alright, and thanks for the reference @JuliaMota! I will check it out now and see if it is compatible to what we have implemented here. Out material is based mostly on a Thesis and a Dissertation, and on some smaller works, which we can provide here should you wish it.

Of course! You can give me the references. I see it as soon as possible. As I said, this is an initial study. We've done a lot of things after that. But I believe that by synthesizing FluidFlow modeling well, it will be of great help in this beginning. Whenever I want to pass other references, including some that justify the use of this model. The parameterization of the FluidFlow is a little different from the others in order to facilitate the implementation of other types of bearings and, in the future, to enable an adaptation also for seals. However, it is different only in the way it is described, as it follows the same premises as the classic lubrication theory.

JuliaMota commented 3 years ago

Ok, so apparently your model solves the Navier-Stokes equation for the pressure and fluid velocity fields correct? Starting from the geometry, then making the dimensionless analysis with pressure field and finally moving to the Poisson formulation to get the fluid velocity field.

Our model have some differences, but we will evaluate them better tomorrow morning in an internal meeting (@marcusfilipesr @hiagopinacio @verg1lio @elyqg), and get back to you guys after we have a consensus on how to proceed. Again, thanks a lot @JuliaMota @rodrigomoliveira1 and @davidjgm for the assistance, and we will keep updating our course of action and progress here.

Have a good evening!

That's right! This is basically the way. Any questions, I'm here.

verg1lio commented 3 years ago

Hello there, and good afternoon!

I will keep working on the hard translation of the matlab code into python for the moment, since there's still a lot to go. But we will soon be having the meeting to define our path from this point on. We hope to clarify some doubts on what and how should we implement the bearing models, and their integration and functioning together with the main ROSS code.

Should you (@rodrigomoliveira1 , @JuliaMota , @davidjgm or @raphaeltimbo) need any info, just ask away anytime. We also had a general updating of our LMEst fork to the latest ROSS version recently, and i just pushed it here.

So cheers, and have a great week! Vergilio

verg1lio commented 3 years ago

@JuliaMota , good afternoon!

You marked me in the Petrobrás MS Teams, but unfortunately I do not have access to that. I saw the mention, but cannot see the message. If possible, could you either give me access or resend the message here?

Thanks, and have a good week!

JuliaMota commented 3 years ago

@JuliaMota , good afternoon!

You marked me in the Petrobrás MS Teams, but unfortunately I do not have access to that. I saw the mention, but cannot see the message. If possible, could you either give me access or resend the message here?

Thanks, and have a good week!

Hi @verg1lio! Good evening!

Unfortunately I don't know how to give you access through Teams, so I'll rewrite the message here:

"I made a simple report with a numerical simulation in FluidFlow for a cylindrical bearing and placed some of the main returns. If you have any doubts on how to generate these results or want some other information, just talk." (The report is attached) report_fluidflow.pdf

verg1lio commented 3 years ago

@JuliaMota , good afternoon! You marked me in the Petrobrás MS Teams, but unfortunately I do not have access to that. I saw the mention, but cannot see the message. If possible, could you either give me access or resend the message here? Thanks, and have a good week!

Hi @verg1lio! Good evening!

Unfortunately I don't know how to give you access through Teams, so I'll rewrite the message here:

"I made a simple report with a numerical simulation in FluidFlow for a cylindrical bearing and placed some of the main returns. If you have any doubts on how to generate these results or want some other information, just talk." (The report is attached) report_fluidflow.pdf

Ah alright! Thanks for the message here, but I am figuring out the loops at the moment, trying to make them run smoothly has not been an easy task.

JuliaMota commented 3 years ago

@JuliaMota , good afternoon! You marked me in the Petrobrás MS Teams, but unfortunately I do not have access to that. I saw the mention, but cannot see the message. If possible, could you either give me access or resend the message here? Thanks, and have a good week!

Hi @verg1lio! Good evening! Unfortunately I don't know how to give you access through Teams, so I'll rewrite the message here: "I made a simple report with a numerical simulation in FluidFlow for a cylindrical bearing and placed some of the main returns. If you have any doubts on how to generate these results or want some other information, just talk." (The report is attached) report_fluidflow.pdf

Ah alright! Thanks for the message here, but I am figuring out the loops at the moment, trying to make them run smoothly has not been an easy task.

I understand! My first task here at Ross was to translate an initial Matlab code into Python. Loops can cause a lot of headaches. Good luck!

LeifParr commented 3 years ago

I am delighted to see that steps are taken to implement bearing codes in ROSS.

Below are some thoughts and suggestions specifically for the tilting-pad bearings, based on my experience using the commercial software NSTILT in the RAPPID package from RSR.

NSTILT supports calculation of different pivot models, e.g. tilting mechanisms:

Litterature on tilting-pad design, and the manual of NSTILT states that the dynamic response of tilting-pad bearings is frequency dependent. NSTILT deals with this by linarizing the dynamic coefficients (Kxx, Kyy etc) around a frequency. The default is to linearize about the speed frequency, so that the results should give accurate critical speeds, but not necessarily accurate sub-synchronous or higher-order modes. E.g. Kxx @ 500 rpm and 500 cpm = 1.8e9 N/m, Kxx @ 500 rpm and 1000 cpm = 1.7e9 N/m. Alternatively, I have read that it is possible to use a transfer function to capture this behaviour, but it was not possible in RAPPID.

I am also interested in what kind of other geometric and lubrication input you are considering.

If you want to cross-check the Python routines with output from NSTILT, I can run through some of our previously calculated bearings and compare output.

LeifParr commented 3 years ago

As a follow-up to my previous post, I have attached the input and output for a typical hydropower large tilting-pad bearing. Here, input, operating parameters and output is fairly well defined, and may be used for comparison.

Tilting_Pad_Example.txt

verg1lio commented 3 years ago

I am delighted to see that steps are taken to implement bearing codes in ROSS.

Below are some thoughts and suggestions specifically for the tilting-pad bearings, based on my experience using the commercial software NSTILT in the RAPPID package from RSR.

NSTILT supports calculation of different pivot models, e.g. tilting mechanisms:

  • Rocker, where the pad back rolls on the casing, the pad back radius smaller than casing radius.
  • Ball/Socket, where the segment rolls on a pin inserted inside of the segment.
  • Pivot, where the segment may pivot about an axial pin. Do you consider pivot models to be relevant, will the calculations take this kind of input?

Litterature on tilting-pad design, and the manual of NSTILT states that the dynamic response of tilting-pad bearings is frequency dependent. NSTILT deals with this by linarizing the dynamic coefficients (Kxx, Kyy etc) around a frequency. The default is to linearize about the speed frequency, so that the results should give accurate critical speeds, but not necessarily accurate sub-synchronous or higher-order modes. E.g. Kxx @ 500 rpm and 500 cpm = 1.8e9 N/m, Kxx @ 500 rpm and 1000 cpm = 1.7e9 N/m. Alternatively, I have read that it is possible to use a transfer function to capture this behaviour, but it was not possible in RAPPID.

I am also interested in what kind of other geometric and lubrication input you are considering.

If you want to cross-check the Python routines with output from NSTILT, I can run through some of our previously calculated bearings and compare output.

Hello @LeifParr, and thanks for the interest! I will try to answer your questions here...

Regarding the pivot, yes, our tilting-pad model does consider the pivot movement. It is a 3D, thermo-hidro-dynamic model, with "n" pads. Currently I am working on the radial pads model, and we will later move on to a thrust bearing model, with similar capabilities. I believe the pivot coefficients and dimensions can be modified in order to simulate any configuration that you cited, but I am not a specialist in bearings.

As to the acquisition of the K and C coefficients, the model produces the complete pressure, temperature, velocity, etc. fields inside the oil films, and those are converted to coefficients around a number of points, depending on the rotation speed, in steady state. These points are later interpolated by the ROSS software, producing reliable bearing coefficients for any given speed within the simulated operating range.

The lubrication is via any fluid (i.e. oil), and we are not considering active control via lubrication. Nevertheless, we do consider temperature and consequently viscosity shifts in the injection regions.

We have a number of experimental and numerical results from our company partners and from our own laboratory test-rigs, but another data set is a great addition to check the results! Thank you very much for it!

ross-bott commented 3 years ago

Hi there! I have marked this issue as stale because it has not had activity for 45 days. Consider the following options:

raphaeltimbo commented 6 months ago

Code implemented in #982. Check with @elyqg to see when can we merge it.

ross-bott commented 4 months ago

Hi there! I have marked this issue as stale because it has not had activity for 45 days. Consider the following options: