# Structural Optimization

TomSym implementation of GAMS Example (SHIP,SEQ=22)

This model designs a vertically corrugated transverse bulkhead of an oil tanker. The objective is to design for minimum weight and meet stress, moment of inertia and plate thickness constraints.

Bracken, J, and McCormick, G P, Chapter 6. In Selected Applications of Nonlinear Programming. John Wiley and Sons, New York, 1968.

```% s: bulkhead sections (top, middle, bottom)

toms 3x1 s

gam = 0.001; % specific gravity of water
sig = 1200;  % maximum bending stress
dnv = 3.9;   % det norske veritas factor
ha = 250;    % height above panel
gamsteel = .0078; % specific weight of steel

% Length of panel
l = [495; 385; 315];

% Height at the base of panel
hb = ha+sum(full(spdiags(repmat(l',3,1),[0 1 2],3,3)))';

% Height at the middle of panel
h = hb - l/2;

% Constant number one
k1 = gam*h.*l.*l/12/sig;

% Constant number two
k2 = dnv*1.05e-4*sqrt(hb);

e = 0.8;
width = 500;
ca = 0.2;
tlow = 1.05;

toms 3x1 z t % module, plate thickness
% width of flange, length of web, depth of corrugation, width of
% corrugation, weight of structure
toms wl lw d wc w

% Module definition
eq1 = {z == d*t*(lw/3+wl*e)/2};

% Width of corrugation - definition
eq2 = {(wc-wl)^2 == lw^2 - d^2};

% Bending stress
eq3 = {z >= k1*wc};

% Moment of inertia
eq4 = {z*d/2 >= 2.2*(k1*wc).^(4/3)};

% Plate thickness - width of flange
eq5 = {t >= k2*wl + ca};

% Plate thickness - length of web
eq6 = {t >= k2*lw + ca};

% Geometric constraint
eq7 = {lw >= d};

% Total weight of structure

obj = gamsteel*width*(wl+lw)*sum(t.*l)/wc/1000;

% Bound on t
cbnd = {t >= tlow};

% Starting point
x0 = {t == [1.2;1.2;1.3]; wl == 45.8; lw == 43.2
d == 30.5; wc == wl+sqrt(lw^2-d^2)
z == d*t*(lw/3+wl*e)/2};

cons = {cbnd; eq1; eq2; eq3; eq4; eq5; eq6; eq7};
solution = ezsolve(obj,cons,x0);
```
```Problem type appears to be: con
===== * * * =================================================================== * * *
TOMLAB - Tomlab Optimization Inc. Development license  999001. Valid to 2010-02-05
=====================================================================================
Problem: ---  1: Problem 1                      f_k       5.540914709534572300
sum(|constr|)      0.000000000717364057
f(x_k) + sum(|constr|)      5.540914710251936300
f(x_0)      6.658577357100706500

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv   16 GradEv   14 ConstrEv   14 ConJacEv   14 Iter   13 MinorIter   19
CPU time: 0.031250 sec. Elapsed time: 0.031000 sec.
```