bearing.gms : Hydrostatic Thrust Bearing Design for a Turbogenerator
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 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.
Small Model of Type: NLP
$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.
$offtext
variables
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'
;
equations
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'
;
scalars
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 /
pi / 3.1415927 /
;
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
;
parameters
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;