Skip to content

Commit

Permalink
Merge pull request #36 from symbiotic-engineering/opexscalingfix
Browse files Browse the repository at this point in the history
Opex exponential scaling with number of WECs to better match data
  • Loading branch information
rebeccamccabe authored Feb 23, 2024
2 parents 4bb0105 + ca0418b commit 49bee41
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 17 deletions.
12 changes: 6 additions & 6 deletions mdocean/optimization/multiobjective/pareto_curve_heuristics.m
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ function pareto_curve_heuristics()
P_var_solar = 125;

% balanced design
[~,idx_balanced] = min(abs(Pvar-40));
[~,idx_balanced] = min(abs(Pvar-100));
LCOE_balanced = LCOE(idx_balanced);
P_var_balanced = Pvar(idx_balanced);

Expand Down Expand Up @@ -126,32 +126,32 @@ function pareto_curve_heuristics()
if showSingleObj
text(LCOE(idx_best_LCOE)+.03,Pvar(idx_best_LCOE),'Cheapest','FontSize',sz)
text(LCOE(idx_best_Pvar)+.03,Pvar(idx_best_Pvar)-3,'Least Variable','FontSize',sz)
text(LCOE_balanced+.02,P_var_balanced+5,'Balanced Design','FontSize',sz)
text(LCOE_balanced-.15,P_var_balanced+5,'Balanced Design','FontSize',sz)
end

if showImages
mini_plot_size = [.2 .22];
% small corner pictures of best geometries
% upper left
axes('Position',[.28 .7 mini_plot_size])
axes('Position',[.28 .6 mini_plot_size])
box on
visualize_geometry(x_best_LCOE,p,true);
set(gca,'XTickLabel',[],'YTickLabel',[])

% lower right
axes('Position',[.52 .15 mini_plot_size])
axes('Position',[.51 .23 mini_plot_size])
box on
visualize_geometry(x_best_Pvar,p,true);
set(gca,'XTickLabel',[],'YTickLabel',[])

% balanced
axes('Position',[.22 .25 mini_plot_size])
axes('Position',[.10 .28 mini_plot_size])
box on
visualize_geometry(x_balanced,p,true);
set(gca,'XTickLabel',[],'YTickLabel',[])

% RM3
axes('Position',[.7 .5 mini_plot_size])
axes('Position',[.7 .53 mini_plot_size])
box on
visualize_geometry(x_nom,p,true);
set(gca,'XTickLabel',[],'YTickLabel',[])
Expand Down
4 changes: 2 additions & 2 deletions mdocean/simulation/modules/dynamics/dynamics.m
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
X_unsat = get_response(w,m,b,k,Fd);

% confirm unsaturated response doesn't exceed maximum capture width
P_unsat = 1/2 * in.B_p * w.^2 .* X_unsat.^2;
P_unsat = 1/8 * 1/2 * in.B_p * w.^2 .* X_unsat.^2;

F_ptrain_over_x = sqrt( (in.B_p * w).^2 + (K_p).^2 );
F_ptrain_unsat = F_ptrain_over_x .* X_unsat;
Expand All @@ -54,7 +54,7 @@
X_sat = get_response(w,m,b_sat,k_sat,Fd);

% calculate power
P_matrix = 1/2 * (mult * in.B_p) .* w.^2 .* X_sat.^2;
P_matrix = 1/8 * 1/2 * (mult * in.B_p) .* w.^2 .* X_sat.^2;

X_max = max(X_sat,[],'all');
h_s_extra = (in.h_s - in.T_s - (in.h_f - in.T_f) - X_max) / in.h_s; % extra height on spar after accommodating float displacement
Expand Down
13 changes: 4 additions & 9 deletions mdocean/simulation/modules/econ.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,10 @@
capex = development + infrastructure + mooring + devicestructure + pto ...
+ profitmargin + installation + contingency;

operations = N_WEC * 27000;
postinstall = 710000;
shoreoperations = 142000;
replacement = N_WEC * 54000;
consumables = N_WEC * 8000;
insurance = (.8 + .2*N_WEC) * 227000;

opex = operations + postinstall + shoreoperations + replacement ...
+ consumables + insurance;
% opex reflects cost of operation, postinstall, replacement, consumables, and
% insurance
% opex equation was generated by Casio online power regression calculator
opex = 1193000 * N_WEC^0.4433;

hr_per_yr = 8766;
P_avg = N_WEC * P_elec * efficiency;
Expand Down

0 comments on commit 49bee41

Please sign in to comment.