%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 2.23 MATLAB help session notes - 2/14/07
%
% Matlab is a tool with several predefined functions that let you do
% all sorts of things, from calculating the sine of an angle to plotting
% three-dimensional streamlines around a submarine. You can read about
% how to use each function by typing at the command prompt:
% >> help function_name
%
% * * * * * * * * * * * *
%
% This is a list of functions you may need to use in this class:
%
% general: clear, close, for, if, set, get
%
% file input/output: input, disp, textread, sprintf,
% fopen, fprintf, fclose
%
% matrix manipulation: size, length, permute
%
% figures: figure, plot, title, xlabel, ylabel, hold,
% plot3, surf, surfl, view, shading, colormap,
% subplot, axis
%
% * * * * * * * * * * * *
%
% Each function has its own syntax, and the help documentation tells you
% how to call it properly.
%
% You can also create your own functions, with your own syntax. To learn
% how type at the command prompt:
% >> help function
%
% The variables within the body of the function are "local" variables; they
% are not saved in Matlab's workspace. That is, any variables you define
% within a function are not available to use outside the funciton. If you
% want to run a series of commands and have all of the results and
% variables "remembered" in the workspace, you can create a "script":
% >> help script
%
% The scripts and functions you write are simply text files (that you can
% make in Matlab's Editor window, Apple TextEdit, Microsoft Notepad, etc.),
% but you save them with the file extemsion ".m" instead of ".txt".
%
% * * * * * * * * * * * *
%
% General programming guidelines:
%
% 1. Comment your work!!! % Adding a comment telling what each line does
% % makes it infinitely easier to read your code
% % later and remember how it works!!! Matlab
% % considers anything on a line after a % sign
% % to be a comment.
%
% 2. Organize your code:
% 2a. Use carriage returns: Separate the part of code where you
% compute a variable from the part of code
% where you plot the answer.
% 2b. Use white space: Matlab does not track whitespace, so add
% an spaces to make similar equations
% align or comments legable. Example:
% L_smooth(:,j)=Cl_smooth(:,j).*((1/2)*rho*V(:,j).^2*c);
% L_bumpy(:,j)=Cl_bumpy(:,j).*((1/2)*rho*V(:,j).^2*c);
%
% versus
%
% L_smooth(:,j) = Cl_smooth(:,j) .* ((1/2)*rho*V(:,j).^2*c);
% L_bumpy (:,j) = Cl_bumpy (:,j) .* ((1/2)*rho*V(:,j).^2*c);
%
% 3. Use obvious varaible names: Is "t" time, thickness, torque,
% temperature, or what?
%
% 4. Keep notes on paper: For example, draw a picture of the geometry of
% a propeller in your notebook before you compute
% it in Matlab. Your code is an implementation of
% the picture you drew and the equations you listed
% in your notes.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all; close all;
set(0,'DefaultFigureWindowStyle','docked')
cd ../propParams
dir
prop_name = input('Propeller geometry file [blade_geometry]: >>> ','s');
geometryFile = [prop_name '.dat'];
[r_R,P_D,rake,deg_skew,C_D,F0_C,T0_D] = textread(geometryFile,'%f%f%f%f%f%f%f','headerlines',1);
numSections = length(r_R);
disp(sprintf('Propeller geometry file %s has %d sections...',prop_name,numSections));
figure('Name','cross section profiles');
title('Cross section profiles');
for section = 1:numSections
[x_sec_X x_sec_Y] = makeXsec(geometryFile,section,numPoints);
if numSections < 13
subplot (4,round(numSections/4),section);
plot(x_sec_X, x_sec_Y,'LineWidth',2);
end
end
figure('Name','cross section profiles wrapped, skewed, and raked')
subplot(1,2,1), title('front view of cross sections')
hold on;
for section=1:numSections
hold on;
plot3(localChord(section,:),localSpan(section,:),localHeight(section,:) );
end
subplot(1,2,2), title('end-on view of sections');
hold on;
for section=1:numSections
plot3(localChord(section,:),localSpan(section,:),localHeight(section,:) );
end
view(0,0)
%%%% Plot blades of a full propeller
figure('Name',sprintf('%d propeller blades',Z))
hold on;
Xsurf = permute(LocalChord,[2 1 3]);
Ysurf = permute(LocalSpan,[2 1 3]);
Zsurf = permute(localHeight,[2 1 3]);
for blade=1:Z
surfl(Xsurf(:,:,blade),Zsurf(:,:),Ysurf(:,:,blade))
end
shading interp
colormap(copper);
axis image
title('view from front of propeller')
view(180,0)
%%%% Output text files of each section that can be read in by a CAD program
fid = fopen([prop_name '-RhinoFull.txt'],'w');
for j=1:length(localChord(section,:))
fprintf(fid,'%f,%f,%f\n',Diam*localChord(section,j),...
0.95*Diam*localSpan(section,j),Diam*localHeight(section,j) );
end
fclose(fid);
disp('Use ReadCommandFile to generate the propeller.')