bearing.gms : Hydrostatic Thrust Bearing Design for a Turbogenerator

**Description**

The objective of this problem is to minimize the power loss during the operation of a hydrostatic thrust bearing subject to a number of constraints.

**References**

- Siddall, J N, Optimal Engineering Design: Principles and Applications. Marcel Dekker, New York, 1982.
- Deb, K, and Goyal, M, Optimizing Engineering Designs Using a Combined Genetic Search. In Bäck, T, Ed, Proceedings of the Seventh International Conference on Genetic Algorithms. 1997, pp. 521-528.
- Coello Coello, C A, Treating Constraints as Objectives for Single-Objective Evolutionary Optimization. Engineering Optimization 32, 3 (2000), 275-308.

**Small Model of Type :** NLP

**Category :** GAMS Model library

**Main file :** bearing.gms

```
$title Hydrostatic Thrust Bearing Design for a Turbogenerator (BEARING,SEQ=202)
$onText
The objective of this problem is to minimize the power loss
during the operation of a hydrostatic thrust bearing subject
to a number of constraints.
Siddall, J N, Optimal Engineering Design. Marcel Dekker,
New York, 1982.
Deb, K, and Goyal, M, Optimizing Engineering Designs Using
a Combined Genetic Search. In Back, T, Ed, Proceedings of
the Seventh International Conference on Genetic Algorithms.
1997, pp. 521-528.
Coello Coello, C A, Treating Constraints as Objectives for
Single-Objective Evolutionary Optimization. Engineering
Optimization 32 (2000), 275-308.
Keywords: nonlinear programming, engineering design
$offText
Variable
R 'bearing step radius (in.)'
R0 'recess radius (in.)'
mu 'oil viscosity in reynolds, (lb sec/in.)'
Q 'flow rate of oil (in.^3/sec)'
PL 'power loss (in. lb/sec)'
P0 'inlet pressure (psi gauge)'
Ef 'power loss due to friction (in. lb/sec)'
Ep 'pumping energy (in. lb/sec)'
h 'film thickness (in.)'
delta_t 'temperature rise (degr F)'
t 'temperature (degr F)'
W 'weight (lb)'
tmp1 'temp variable: log(R/R0)'
tmp2 'temp variable: R^2-R0^2';
Equation
power_loss 'objective function'
pumping_energy 'included pump efficiency'
friction 'friction loss'
temp_rise 'temperature rise of the oil passing through the bearing'
inlet_pressure 'relation between inlet pressure and flow rate'
load_capacity 'load-carrying capacity'
oil_viscosity 'oil viscosity is a function of temperature'
temperature 'T is mean of ambient and oil outlet temperatures'
radius 'inner radius should be the smallest'
limit1 'limit exit loss to 0.1% of the pressure drop'
limit2 'avoid surface damage in case of pressure loss'
temp1 'calculation of tmp1'
temp2 'calculation of tmp2';
Scalar
gamma 'weight density of oil (lb/in^3)' / 0.0307 /
C 'specific heat of oil (Btu/lb degr F)' / 0.5 /
N 'angular speed of shaft (rpm)' / 750 /
Ws 'thrust load (lb)' / 101000 /
Pmax 'maximum inlet pressure (psi)' / 1000 /
delta_t_max 'maximum temp change (degr F)' / 50 /
hmin 'minimum film thickness (in)' / 0.001 /
g 'gravitational constant (in/s^2)' / 386.4 /
taf 'ambient temperature (degr F)' / 100.0 /
P1 'outlet pressure, atmospheric (psi gauge)' / 0 /
pump_efficiency '70% efficiency' / 0.7 /;
Table oil_constants(*,*) 'various oil grades'
C1 n
'SAE 5' 10.85 -3.91
'SAE 10' 10.45 -3.72
'SAE 20' 10.04 -3.55
'SAE 30' 9.88 -3.48
'SAE 40' 9.83 -3.46
'SAE 50' 9.82 -3.44;
Parameter
C1 'c factor for given oil grade'
cn 'n factor for given oil grade'
gr 'specific gravity of oil'
tar 'ambient temperature (degr R)';
* calculate or extract parameters
C1 = oil_constants('SAE 20','C1');
cn = oil_constants('SAE 20','n');
gr = gamma/0.0361111;
tar = 459.7 + taf;
* model restrictions
* P0 <= pmax
* h >= hmin
* delta_t <= delta_t_max
* w >= Ws
P0.up = pmax;
h.lo = hmin;
delta_t.up = delta_t_max;
w.lo = Ws;
* bounds to keep variables in reasonable ranges
Ep.lo = 1;
Ef.lo = 1;
P0.lo = 1;
R.lo = 1;
R.up = 16;
R0.lo = 1;
R0.up = 16;
Q.lo = 1;
Q.up = 16;
mu.lo = 1.0e-6;
mu.up = 16.0e-6;
t.lo = 100;
* variable scaling
mu.scale = 1.0e-6;
h.scale = hmin;
W.scale = Ws;
PL.scale = 1.0e4;
Ep.scale = 1.0e4;
Ef.scale = 1.0e4;
* bounds to prevent multiplication by zero
tmp1.lo = 0.0001;
tmp2.lo = 0.01;
* Initial point. Some NLP solvers need a good starting point for this problem.
R.L = 6;
R0.L = 5;
mu.L = 0.000006;
Q.L = 3;
P0.L = 1000.0000;
Ef.L = 16000;
Ep.L = 3000;
h.L = 0.001;
delta_t.L = 50;
t.L = 600;
W.L = 101000;
power_loss.. PL =e= Ep + Ef;
pumping_energy.. Ep =e= Q*(P0-P1)/pump_efficiency;
* friction.. Ef =e= sqr(2*pi*N/60)*[(2*pi*mu)/h]*(r**4 - r0**4)/4;
* is reformulated into:
friction.. Ef*h =e= sqr(2*pi*N/60)*[(2*pi*mu)]*(r**4 - r0**4)/4;
* temp_rise.. delta_t =e= Ef/(12*778*Q*gamma*C);
* is reformulated into:
temp_rise.. delta_t*(12*778*Q*gamma*C) =e= Ef;
* load_capacity.. W =e= [(pi*P0)/2]*tmp2/tmp1;
* is reformulated into:
load_capacity.. W*tmp1 =e= [(pi*P0)/2]*tmp2;
* inlet_pressure.. P0 =e= (6*mu*Q)/(pi*h**3)*tmp1;
* is reformulated into:
inlet_pressure.. P0*(pi*h**3) =e= (6*mu*Q)*tmp1;
oil_viscosity.. log10(8.112e6*mu + 0.8) =e= (T**cn)*(10**C1);
temperature.. T =e= 560 + delta_t/2;
radius.. R =g= R0;
limit1.. gamma*sqr(Q) =l= 0.001*g*sqr(2*pi*R*h)*P0;
limit2.. W =l= 5000*pi*tmp2;
temp1.. tmp1 =e= log(R) - log(R0);
temp2.. tmp2 =e= sqr(R) - sqr(R0);
Model m / all /;
m.scaleOpt = 1;
solve m minimizing pl using nlp;
```