Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified dev/structures/damping-plate/BoedoPrantilAnnularPlate.mlx
Binary file not shown.
50 changes: 25 additions & 25 deletions dvc.lock
Original file line number Diff line number Diff line change
Expand Up @@ -621,17 +621,17 @@ stages:
size: 5662
- path: ./mdocean/simulation/modules/structures/structures.m
hash: md5
md5: ab0450a9b4e934c7459fbd1e4cc9b11c
size: 15488
md5: 9305a5e2bd2a23183327f172eefb17e5
size: 13360
- path: ./mdocean/simulation/simulation.m
hash: md5
md5: ab665c28e85b454ba399f4d87df0ccd5
size: 10847
md5: 4ef3e1de6586d04953ef7e98a72dc7f7
size: 10848
outs:
- path: results/Comparison/intermed.mat
hash: md5
md5: af4aa628a0342b4e0876dec1a0bb97df
size: 739536
md5: 7eecbd31511cbae8b7c008d0b68c4d8c
size: 739828
postpro-Comparison:
cmd: matlab -batch "add_mdocean_path(); obj=Comparison;
obj.run_all_from_load();"
Expand Down Expand Up @@ -763,45 +763,45 @@ stages:
size: 5662
- path: ./mdocean/simulation/modules/structures/structures.m
hash: md5
md5: ab0450a9b4e934c7459fbd1e4cc9b11c
size: 15488
md5: 9305a5e2bd2a23183327f172eefb17e5
size: 13360
- path: ./mdocean/simulation/simulation.m
hash: md5
md5: ab665c28e85b454ba399f4d87df0ccd5
size: 10847
md5: 4ef3e1de6586d04953ef7e98a72dc7f7
size: 10848
- path: results/Comparison/intermed.mat
hash: md5
md5: af4aa628a0342b4e0876dec1a0bb97df
size: 739536
md5: 7eecbd31511cbae8b7c008d0b68c4d8c
size: 739828
outs:
- path: results/Comparison/comparison_power_matrix.pdf
hash: md5
md5: 94c24e7f1a78ea7772bf8e64b17acc5c
size: 24580
md5: f055c7574735ad2d17261d891d23de1a
size: 24649
- path: results/Comparison/end.mat
hash: md5
md5: 5da0284f80ebbd58427f98e84a2fdcaa
md5: df8d2aed88af9040188ca7806ade4e68
size: 191
- path: results/Comparison/optimal_design_vars.tex
hash: md5
md5: fce8a85daa819df83f86fc2a8f20ecc2
size: 922
md5: 9d2f86c3cf5883756b57a50da688d28a
size: 949
- path: results/Comparison/optimal_outputs.tex
hash: md5
md5: 822413ae8a07f5d72668286564cf571f
size: 2522
md5: 63034c9707d55c0611e60580e3130b8e
size: 2494
- path: results/Comparison/overlaid_geometry.pdf
hash: md5
md5: 144a1925c3013731989fdaae735b29f4
size: 6225
md5: 306e49e55fd56eef0b22953b9c9f8448
size: 5902
- path: results/Comparison/overlaid_hydro_coeffs.pdf
hash: md5
md5: 152aca3205587c40f90bbfad3afbe114
size: 17220
md5: 9489b4ad52bdc4acf6340abb9c66ed50
size: 17339
- path: results/Comparison/probability_CDF.pdf
hash: md5
md5: 679cee36650b20ec418f6f7818e2d2cd
size: 18160
md5: ac03a20fc46f3dc29996eff4dd3e8a0f
size: 18401
analysis-Constraints:
cmd: matlab -batch "add_mdocean_path(); obj=Constraints;
obj.run_analysis();"
Expand Down
31 changes: 10 additions & 21 deletions dvc.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
stages:
_check-env-tex:
cmd: calkit check environment --name tex
deps: []
outs:
- .calkit/env-locks/tex.json:
cache: false
persist: true
always_changed: true
desc: Automatically generated by Calkit. Changes made here will be
overwritten.
analysis-AllFigCompare:
cmd: matlab -batch "add_mdocean_path(); obj=AllFigCompare;
obj.run_analysis();"
Expand Down Expand Up @@ -1498,20 +1488,20 @@ stages:
desc: Automatically generated from the 'move-results' stage in
calkit.yaml. Changes made here will be overwritten.
build-RE-paper:
cmd: calkit xenv -n tex --no-check -- latexmk -cd -norc
-interaction=nonstopmode -r pubs/renewable-energy-mdo/.latexmkrc
-silent -synctex=1 -pdf pubs/renewable-energy-mdo/mdocean.tex
cmd: calkit latex build -e tex --no-check -r
pubs/renewable-energy-mdo/.latexmkrc
pubs/renewable-energy-mdo/mdocean.tex
deps:
- pubs/renewable-energy-mdo/mdocean.tex
- pubs/renewable-energy-mdo/.latexmkrc
- pubs/renewable-energy-mdo/figs/from-matlab/
- pubs/renewable-energy-mdo/figs/manual/
- pubs/renewable-energy-mdo/sections/
- pubs/renewable-energy-mdo/tables/
- pubs/renewable-energy-mdo/references.bib
- pubs/renewable-energy-mdo/numbers.tex
- pubs/elsarticle-num-names.bst
- .calkit/env-locks/tex.json
- pubs/renewable-energy-mdo/.latexmkrc
- .calkit/env-locks/tex
outs:
- pubs/renewable-energy-mdo/mdocean.pdf
- pubs/renewable-energy-mdo/mdocean.synctex.gz:
Expand All @@ -1523,13 +1513,11 @@ stages:
desc: Automatically generated from the 'build-RE-paper' stage in
calkit.yaml. Changes made here will be overwritten.
build-AOR-paper:
cmd: calkit xenv -n tex --no-check -- latexmk -cd -norc
-interaction=nonstopmode -r
pubs/applied-ocean-research-model/.latexmkrc -silent -synctex=1
-pdf pubs/applied-ocean-research-model/main.tex
cmd: calkit latex build -e tex --no-check -r
pubs/applied-ocean-research-model/.latexmkrc
pubs/applied-ocean-research-model/main.tex
deps:
- pubs/applied-ocean-research-model/main.tex
- pubs/applied-ocean-research-model/.latexmkrc
- pubs/applied-ocean-research-model/sections/
- pubs/applied-ocean-research-model/figs/from-matlab/
- pubs/applied-ocean-research-model/figs/manual/
Expand All @@ -1538,7 +1526,8 @@ stages:
- pubs/applied-ocean-research-model/numbers.tex
- pubs/elsarticle-num-names.bst
- mdocean/simulation/modules/OpenFLASH/pubs/src/meem-appendix.tex
- .calkit/env-locks/tex.json
- pubs/applied-ocean-research-model/.latexmkrc
- .calkit/env-locks/tex
outs:
- pubs/applied-ocean-research-model/main.pdf
- pubs/applied-ocean-research-model/main.synctex.gz:
Expand Down
51 changes: 31 additions & 20 deletions mdocean/plots/matlab_figs/structures/viz_damping_plate.m
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
rho = linspace(lam,1,15);
N = 100;

[w_nondim,Mr_nondim] = calc_plate(lam,nu,theta,rho,N);
[w_nondim,Mr_nondim] = concentrated_plate_nondim(lam,nu,theta,rho,N);

Mr_dim = Mr_nondim * P/(2*pi);
sigma_dim = Mr_nondim * 3/pi * P/h^2;
Expand Down Expand Up @@ -101,25 +101,36 @@
end

function [w_nondim,Mr_nondim] = calc_plate_superposed(a,b,F_heave,nu,theta,rho,N)
% fixme: this assumes that F_tube = F_heave/4, ie that all force goes into
% the tubes and none goes into the bottom of the spar, which is wrong.
% Should actually use compatibility and tube stiffness to get F_tube, as in
% damping_plate_structures() in structures.m.
lam = b/a;
[w_nondim_conc,Mr_nondim_conc] = calc_plate(lam,nu,theta,rho,N);
[w_nondim_dist,Mr_nondim_dist] = plate_distributed(a,b,F_heave,nu,rho);
w_nondim = w_nondim_conc + w_nondim_dist';
Mr_nondim = Mr_nondim_conc + Mr_nondim_dist';
end
% fixme: this assumes that F_tube = F_heave/4, ie that all force goes into
% the tubes and none goes into the bottom of the spar, which is wrong.
% Should actually use compatibility and tube stiffness to get F_tube, as in
% damping_plate_structures() in structures.m.
% lam = b/a;
% [w_nondim_conc,Mr_nondim_conc] = calc_plate(lam,nu,theta,rho,N);
% [w_nondim_dist,Mr_nondim_dist] = plate_distributed(a,b,F_heave,nu,rho);
% w_nondim = w_nondim_conc + w_nondim_dist';
% Mr_nondim = Mr_nondim_conc + Mr_nondim_dist';

vb = var_bounds();

function [w_nondim,Mr_nondim,Mt_nondim] = plate_distributed(a,b,F_heave,nu,rho)
[w_nondim,Mr_nondim,Mt_nondim] = distributed_plate_nondim(a,b,F_heave/4,nu,rho);
w_nondim = -w_nondim;
Mr_nondim = -Mr_nondim;
Mt_nondim = -Mt_nondim; % different sign convention on all three outputs
end
D_d = 2*a;
D_s = 2*b;
[P_hydrostatic,A_dt,theta_dt,h_d,A_c] = deal(0); % not used, so set to 0
t_d = vb.t_d_nom * 1e-3;
L_dt = (D_d - D_s) / (2*cos(theta_d_tu)); % formula copy-pasted from geometry.m
h_stiff = p.h_over_h1_stiff_d * vb.h1_stiff_d;
width_stiff = p.w_over_h1_stiff_d * vb.h1_stiff_d;

[sigma_vm,delta_max] = damping_plate_structures(F_heave, D_d, D_s,P_hydrostatic,t_d,A_dt,...
theta_dt, L_dt, h_d, A_c, p.E(1), nu, h_stiff, width_stiff,...
p.D_d_tu, p.t_d_tu, p.num_terms_plate, p.radial_mesh_plate, ...
p.num_stiff_d, true);


[Mr_over_F_heave, ...
Mt_over_F_heave, ...
Q_nondim, ...
delta_over_a2Fheave_2piDeq, ...
F_tube_over_F_heave] = combined_plate_nondim(rho, b, a, nu, N, plate_tube_K_ratio);

function [w_nondim,Mr_nondim,abcd] = calc_plate(lam,nu,theta,rho,N)
[w_nondim,Mr_nondim,abcd] = concentrated_plate_nondim(lam,nu,theta,rho,N);
w_nondim = -w_nondim; % different sign convention on w but same convention on M
end
63 changes: 47 additions & 16 deletions mdocean/simulation/modules/structures/distributed_plate_nondim.m
Original file line number Diff line number Diff line change
@@ -1,51 +1,82 @@
function [w_nondim,Mr_nondim,Mt_nondim] = distributed_plate_nondim(a,b,F_heave,nu,rho)
A = pi*a^2;
q = F_heave/A;
P = F_heave;
function [w_nondim,Mr_nondim,Mt_nondim,Q_nondim] = distributed_plate_nondim(a,b,q,nu,rho)
% Roark's table 11.2, case 2L (page 467)
% a: outer radius
% b: inner radius
% r0: radius at which the distributed loading begins

% A = pi*a^2;
% q = F_heave/A;
% P = F_heave;
v = nu;
r = rho*a;
r0 = b;

C2 = 1/4*(1-(b/a)^2*(1+2*log(a/b)));
C2 = 1/4 * ( 1 - (b/a)^2 * (1 + 2*log(a/b)) );
C3 = b/4/a*(((b/a)^2+1)*log(a/b)+(b/a)^2-1);
C8 = 1/2*(1+v+(1-v)*(b/a)^2);
C9 = b/a*((1+v)/2*log(a/b)+(1-v)/4*(1-(b/a)^2));
C8 = 1/2 * (1+v+(1-v)*(b/a)^2);
C9 = b/a * ( (1+v)/2*log(a/b) + (1-v)/4*(1-(b/a)^2) );
%L3 = r0/4/a*(((r0/a)^2+1)*log(a/r0)+(r0/a)^2-1); % for case 1L
%L9 = r0/a*((1+v)/2*log(a/r0)+(1-v)/4*(1-(r0/a)^2)); % for case 1L
L11 = 1/64*(1+4*(r0/a)^2-5*(r0/a)^4-4*(r0/a)^2*(2+(r0/a)^2)*log(a/r0)); % for end deflection only
L17 = 1/4*(1-(1-v)/4*(1-(r0/a)^4)-(r0/a)^2*(1+(1+v)*log(a/r0)));
L11 = 1/64 * (1+4*(r0/a)^2-5*(r0/a)^4-4*(r0/a)^2*(2+(r0/a)^2)*log(a/r0)); % for end deflection only
L17 = 1/4 * (1-(1-v)/4*(1-(r0/a)^4)-(r0/a)^2*(1+(1+v)*log(a/r0)));
F2 = 1/4 * (1 - (b./r).^2.*(1+2*log(r/b)));
F3 = b./(4*r) .* ( ( (b./r).^2 + 1 ).*log(r/b) + (b./r).^2 - 1);
F5 = 1/2 * (1 - (b./r).^2);
F6 = b./(4*r) .* ( (b./r).^2 - 1 + 2*log(r/b) );
F8 = 1/2 * (1+v+(1-v)*(b./r).^2);
F9 = b./r .* (1/2*(1+v)*(log(r/b)) + 1/4*(1-v)*(1-(b./r).^2));


bracket = zeros(size(r));
bracket(r > r0) = 1;

ratio = r0./r;
G11 = 1/64 * (1 + 4*ratio.^2 - 5*ratio.^4 - 4*ratio.^2.*(2+ratio.^2).*log(1./ratio) ) .* bracket;
G14 = 1/16 * (1 - (r0./r).^4 - 4*(r0./r).^2 .* log(r/r0)) .* bracket;
G17 = 1/4 * (1 - ((1-v)/4)*(1-ratio.^4) - (ratio).^2.*(1+(1+v)*log(1./ratio))) .* bracket;

% Mrb: reaction moment per unit length on inner edge
Mrb = -q*a^2/C8 * (C9*(a^2-r0^2)/(2*a*b) - L17);
% Qb: shear reaction force per unit length on inner edge
Qb = q/2/b * (a^2 - r0^2);
E = 0;% fixme - only needed for Mt
D = 0; % fixme E*h^3/12/(1-v^2); - only needed for Mt

y_over_D = Mrb * r.^2 .* F2 ...
% case 2 general deflection equation p463, with first two terms
% ommitted since yb and theta_b are zero for case 2L
y_times_D = Mrb * r.^2 .* F2 ...
+ Qb * r.^3 .* F3 ...
- q * r.^4 .* G11;
w_nondim = y_over_D * 2*pi/(P*a^2);
tilt_angle = 0; % fixme use equation for theta on p463

theta_times_D = Mrb * r .* F5 ...
+ Qb * r.^2 .* F6 ...
- q * r.^3 .* G14;

Mr = Mrb * F8 ...
+ Qb * r .* F9 ...
- q * r.^2 .* G17;
Mt = theta_times_D * (1-nu^2) ./ r ...
+ nu * Mr;
Q = Qb * b./r ...
- q./(2*r).*(r.^2 - r0.^2) .* bracket;

Mr = Mrb*F8 + Qb*r.*F9 - q*r.^2.*G17;
Mt = tilt_angle*D*(1-nu^2)./r + nu*Mr;
% Roark's p463 nondimensionalization
K_y = y_times_D / (q * a^4);
K_Mt = Mt / (q * a^2);
K_Mr = Mr / (q * a^2);
K_theta = theta_times_D / (q * a^3);
K_Q = Q / (q * a);

% nondimensionalize to be consistent with concentrated loading plate in Boedo and Prantil
% note: w_nondim = 2*Ky/(1-(b/a)^2)
P = q * pi * (a^2-b^2); % equivalent concentrated load
w_nondim = y_times_D * 2*pi/(P*a^2);
Mr_nondim = Mr * 2*pi/P;
Mt_nondim = Mt * 2*pi/P;
Q_nondim = Q * 2*pi/(P*a);
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

units here are wrong: Q is force per length, P is force, the a would need to be in the numerator not denominator


% use sign convention that positive F_heave results in positive
% deflection at outer end and positive moment at inner end
w_nondim = -w_nondim;
Mr_nondim = -Mr_nondim;
Mt_nondim = -Mt_nondim;
Q_nondim = -Q_nondim;
end
Loading
Loading