From dfa00b964ea8721d38ce6b6631aaf36984979b1c Mon Sep 17 00:00:00 2001 From: rlhatton Date: Thu, 14 Jul 2016 19:51:15 -0700 Subject: [PATCH 1/6] Added gait drawing fully into the GUI. --- .../Utilities/gait_gui_draw/gait_gui_draw.m | 45 +++++++++----- ProgramFiles/v4.2/Utilities/ginputc.m | 56 +++++++++++++----- .../sys_calcsystem_fcns/four_way_symmetry.m | 52 +++++++++++++++- ProgramFiles/v4.2/sys_draw.m | 4 +- ProgramFiles/v4.2/sysplotter.fig | Bin 124279 -> 126807 bytes ProgramFiles/v4.2/sysplotter.m | 2 +- .../plotpushbutton_Callback.m | 4 +- 7 files changed, 128 insertions(+), 35 deletions(-) diff --git a/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m b/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m index e683d65..8ecc681 100644 --- a/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m +++ b/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m @@ -1,13 +1,26 @@ -function gait_gui_draw +function gait_gui_draw(hAx) % Load the sysplotter configuration information load sysplotter_config -% Bring current axis to foreground -figure(gcf) +% Bring selected axis to foreground (use gca if this is not specified) +if ~exist('hAx','var') || isempty(hAx) + hAx = gca; +end +found_figure = 0; +hSearch = hAx; +while ~found_figure + hSearch = get(hSearch,'Parent'); + if strcmpi(get(hSearch,'type'),'figure') + found_figure = 1; + hFig = hSearch; + end +end +figure(hFig) + % Use the mouse to select a series of points -[alpha1,alpha2,button] = ginputc('ShowPoints',true,'Color',Colorset.spot); +[alpha1,alpha2,button] = ginputc('AxHandle',hAx,'ShowPoints',true,'Color',Colorset.spot); % Unless a non-primary button was used for the last click, copy the first % point to the end to make a closed loop @@ -46,7 +59,18 @@ alpha1_plot = fnval(spline_alpha1,t_plot); alpha2_plot = fnval(spline_alpha2,t_plot); -gaitline = line(alpha1_plot,alpha2_plot,'Color',Colorset.spot,'LineWidth',5); +% Provide zdata to line if necessary +maxZ = 0; +hAxChildren = get(hAx,'Children'); +if ~isempty(hAxChildren) + for idx = 1:numel(hAxChildren) + if ~isempty(hAxChildren(idx).ZData) + maxZ = max(maxZ,max(hAxChildren(idx).ZData(:))); + end + end +end + +gaitline = line('Parent',hAx,'XData',alpha1_plot,'YData',alpha2_plot,'ZData',maxZ*ones(size(alpha1_plot)),'Color',Colorset.spot,'LineWidth',5); %%%% Ask the user for a filename current_dir = pwd; % Remember where we started @@ -97,15 +121,8 @@ end - % Refresh the sysplotter gui - try - set(groot,'ShowHiddenHandles','on'); % Crack open the sysplotter visibility - refresh_handle = findobj('tag','refresh_gui'); % Get the handle for the button - refresh_handle.Callback(refresh_handle,0) % Push the refresh button - set(groot,'ShowHiddenHandles','off'); % Reseal the sysplotter - catch - set(groot,'ShowHiddenHandles','off'); % Make sure the sysplotter goes back to hidden handles - end + refresh_handle = findall(0,'tag','refresh_gui'); % Get the handle for the button + refresh_handle.Callback(refresh_handle,0) % Push the refresh button end diff --git a/ProgramFiles/v4.2/Utilities/ginputc.m b/ProgramFiles/v4.2/Utilities/ginputc.m index 407a034..690f0bf 100644 --- a/ProgramFiles/v4.2/Utilities/ginputc.m +++ b/ProgramFiles/v4.2/Utilities/ginputc.m @@ -59,6 +59,8 @@ % Jiro Doke % October 19, 2012 % Copyright 2012 The MathWorks, Inc. +% +% Small modifications by Ross Hatton, 2016 try if verLessThan('matlab', '7.5') @@ -75,21 +77,23 @@ addOptional(p, 'N', inf, @(x) validateattributes(x, {'numeric'}, ... {'scalar', 'integer', 'positive'})); -addParamValue(p, 'FigHandle', [], @(x) numel(x)==1 && ishandle(x)); -addParamValue(p, 'Color', 'k', @colorValidFcn); -addParamValue(p, 'LineWidth', 0.5 , @(x) validateattributes(x, ... +addParameter(p, 'FigHandle', [], @(x) numel(x)==1 && ishandle(x)); +addParameter(p, 'AxHandle', [], @(x) numel(x)==1 && ishandle(x)); +addParameter(p, 'Color', 'k', @colorValidFcn); +addParameter(p, 'LineWidth', 0.5 , @(x) validateattributes(x, ... {'numeric'}, {'scalar', 'positive'})); -addParamValue(p, 'LineStyle', '-' , @(x) validatestring(x, ... +addParameter(p, 'LineStyle', '-' , @(x) validatestring(x, ... {'-', '--', '-.', ':'})); -addParamValue(p, 'ShowPoints', false, @(x) validateattributes(x, ... +addParameter(p, 'ShowPoints', false, @(x) validateattributes(x, ... {'logical'}, {'scalar'})); -addParamValue(p, 'ConnectPoints', true, @(x) validateattributes(x, ... +addParameter(p, 'ConnectPoints', true, @(x) validateattributes(x, ... {'logical'}, {'scalar'})); parse(p, varargin{:}); N = p.Results.N; hFig = p.Results.FigHandle; +hAx = p.Results.AxHandle; color = p.Results.Color; linewidth = p.Results.LineWidth; linestyle = p.Results.LineStyle; @@ -118,13 +122,25 @@ end % Try to get the current axes even if it has a hidden handle. -hAx = get(hFig, 'CurrentAxes'); if isempty(hAx) - allAx = findall(hFig, 'Type', 'axes'); - if ~isempty(allAx) - hAx = allAx(1); - else - hAx = axes('Parent', hFig); + hAx = get(hFig, 'CurrentAxes'); + if isempty(hAx) + allAx = findall(hFig, 'Type', 'axes'); + if ~isempty(allAx) + hAx = allAx(1); + else + hAx = axes('Parent', hFig); + end + end +else + found_figure = 0; + hSearch = hAx; + while ~found_figure + hSearch = get(hSearch,'Parent'); + if strcmpi(get(hSearch,'type'),'figure') + found_figure = 1; + hFig = hSearch; + end end end @@ -166,14 +182,25 @@ % Create an invisible axes for displaying the full crosshair cursor hInvisibleAxes = axes(... - 'Parent', hFig, ... + 'Parent', get(hAx,'Parent'), ... 'Units', 'normalized', ... - 'Position', [0 0 1 1], ... + 'Position', [0 0 1 1],...get(hAx,'Position'), ... 'XLim', [0 1], ... 'YLim', [0 1], ... 'HitTest', 'off', ... 'HandleVisibility', 'off', ... 'Visible', 'off'); +%uistack(hInvisibleAxes,'top') + +% hInvisibleAxes = axes(... +% 'Parent', hFig, ... +% 'Units', 'normalized', ... +% 'Position', [0 0 1 1], ... +% 'XLim', [0 1], ... +% 'YLim', [0 1], ... +% 'HitTest', 'off', ... +% 'HandleVisibility', 'off', ... +% 'Visible', 'off'); % Create line object for the selected points if showpoints @@ -304,7 +331,6 @@ function keyPressFcn(obj, edata) %#ok function updatePoints(clickType) % This function captures the information for the selected point - hAx = gca; pt = get(hAx, 'CurrentPoint'); x = [x; pt(1)]; y = [y; pt(3)]; diff --git a/ProgramFiles/v4.2/sys_calcsystem_fcns/four_way_symmetry.m b/ProgramFiles/v4.2/sys_calcsystem_fcns/four_way_symmetry.m index b6addae..f445db9 100644 --- a/ProgramFiles/v4.2/sys_calcsystem_fcns/four_way_symmetry.m +++ b/ProgramFiles/v4.2/sys_calcsystem_fcns/four_way_symmetry.m @@ -110,7 +110,57 @@ f.theta2.original = At2; f.theta2.reflect_even = At2; f.theta2.reflect_odd = At2; - f.theta2.rotate_180 = At2; + f.theta2.rotate_180 = At2; + + case 'None' + + % Shape reflections + f.a1.original = a1; + f.a1.reflect_even = a1; + f.a1.reflect_odd = a1; + f.a1.rotate_180 = a1; + + f.a2.original = a2; + f.a2.reflect_even = a2; + f.a2.reflect_odd = a2; + f.a2.rotate_180 = a2; + + % X field + f.x1.original = Axa1; + f.x1.reflect_even = Axa1; + f.x1.reflect_odd = Axa1; + f.x1.rotate_180 = Axa1; + + f.x2.original = Axa2; + f.x2.reflect_even = Axa2; + f.x2.reflect_odd = Axa2; + f.x2.rotate_180 = Axa2; + + % Y field + f.y1.original = Aya1; + f.y1.reflect_even = Aya1; + f.y1.reflect_odd = Aya1; + f.y1.rotate_180 = Aya1; + + f.y2.original = Aya2; + f.y2.reflect_even = Aya2; + f.y2.reflect_odd = Aya2; + f.y2.rotate_180 = Aya2; + + % Theta field + f.theta1.original = At1; + f.theta1.reflect_even = At1; + f.theta1.reflect_odd = At1; + f.theta1.rotate_180 = At1; + + f.theta2.original = At2; + f.theta2.reflect_even = At2; + f.theta2.reflect_odd = At2; + f.theta2.rotate_180 = At2; + + otherwise + + error('Invalid symmetry averaging mode') end diff --git a/ProgramFiles/v4.2/sys_draw.m b/ProgramFiles/v4.2/sys_draw.m index c653262..9bc4410 100644 --- a/ProgramFiles/v4.2/sys_draw.m +++ b/ProgramFiles/v4.2/sys_draw.m @@ -1,4 +1,4 @@ -function sys_draw(plot_structure,sys,shch,progress,update,resolution,handles) +function plot_info = sys_draw(plot_structure,sys,shch,progress,update,resolution,handles) %make sure plot data file is up to date if update @@ -40,7 +40,7 @@ function sys_draw(plot_structure,sys,shch,progress,update,resolution,handles) eval(['plot_command = @' plot_structure(i).category '_draw;']); %call that plot command - plot_info = plot_command(s,p,plot_structure(i),sys,shch,convert,resolution); + plot_info(i,1) = plot_command(s,p,plot_structure(i),sys,shch,convert,resolution); end diff --git a/ProgramFiles/v4.2/sysplotter.fig b/ProgramFiles/v4.2/sysplotter.fig index 8b8d4222ae40b6a87606e2ef2bcaa01f6d2564f1..ec47089437740353281c96fb02d27e32a5bba9c7 100644 GIT binary patch literal 126807 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%0A>lSJJVXIvf8 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 _imGv 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

kWI?@>KQw+}xC>i1|Dg-#}&+ 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

>^AOBnHm)6;T0$hi} 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

i$23ermOPq^Ngta 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 diff --git a/ProgramFiles/v4.2/sysplotter.m b/ProgramFiles/v4.2/sysplotter.m index 89eb4c5..feaa6f3 100644 --- a/ProgramFiles/v4.2/sysplotter.m +++ b/ProgramFiles/v4.2/sysplotter.m @@ -22,7 +22,7 @@ % Edit the above text to modify the response to help sysplotter -% Last Modified by GUIDE v2.5 02-Dec-2015 17:23:09 +% Last Modified by GUIDE v2.5 13-Jul-2016 14:49:31 %path to gui functions addpath(genpath('sysplotter_gui_fcns'), genpath('sys_calcpath_fcns'),... diff --git a/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m b/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m index 828e9a9..324370b 100644 --- a/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m +++ b/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m @@ -1,5 +1,5 @@ % --- Executes on button press in any plotpushbutton. -function plotpushbutton_Callback(hObject, eventdata, handles) +function plot_info = plotpushbutton_Callback(hObject, eventdata, handles) % hObject handle to plotpushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) @@ -64,7 +64,7 @@ function plotpushbutton_Callback(hObject, eventdata, handles) %Call the draw function % test_plot(plots_to_make,current_system,current_shch) -sys_draw(plots_to_make,current_system,current_shch,handles.progresspanel,1,resolution,handles) +plot_info = sys_draw(plots_to_make,current_system,current_shch,handles.progresspanel,1,resolution,handles) %Show full progress bar waitbar2a(1,handles.progresspanel,'Finished plotting') From 7a973b64a06c6a68fe90425490095a5a1fe72922 Mon Sep 17 00:00:00 2001 From: rlhatton Date: Thu, 14 Jul 2016 19:52:49 -0700 Subject: [PATCH 2/6] callback function for gait drawing button --- .../sysplotter_gui_fcns/gait_gui_draw_Callback.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 ProgramFiles/v4.2/sysplotter_gui_fcns/gait_gui_draw_Callback.m diff --git a/ProgramFiles/v4.2/sysplotter_gui_fcns/gait_gui_draw_Callback.m b/ProgramFiles/v4.2/sysplotter_gui_fcns/gait_gui_draw_Callback.m new file mode 100644 index 0000000..2f25de1 --- /dev/null +++ b/ProgramFiles/v4.2/sysplotter_gui_fcns/gait_gui_draw_Callback.m @@ -0,0 +1,13 @@ +% --- Executes on button press in gait_gui_draw. +function gait_gui_draw_Callback(hObject, eventdata, handles) +% hObject handle to gait_gui_draw (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Plot whatever gaits are selected in the third checkbox column +plot_info = plotpushbutton_Callback(findall(0,'tag','plotpushbutton3'), eventdata, handles); + +% Execute the gait_gui_draw command + gait_gui_draw(plot_info.axes(1)); + +end From f5a70eb4111bd56f3dba7aec9182f0146a064b0a Mon Sep 17 00:00:00 2001 From: rlhatton Date: Thu, 14 Jul 2016 19:59:59 -0700 Subject: [PATCH 3/6] suppressing a output from a function that didn't have any before --- ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m b/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m index 324370b..fc7955b 100644 --- a/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m +++ b/ProgramFiles/v4.2/sysplotter_gui_fcns/plotpushbutton_Callback.m @@ -64,7 +64,7 @@ %Call the draw function % test_plot(plots_to_make,current_system,current_shch) -plot_info = sys_draw(plots_to_make,current_system,current_shch,handles.progresspanel,1,resolution,handles) +plot_info = sys_draw(plots_to_make,current_system,current_shch,handles.progresspanel,1,resolution,handles); %Show full progress bar waitbar2a(1,handles.progresspanel,'Finished plotting') From 2d1f52f67070fd22e29726aaa633affa17595aa0 Mon Sep 17 00:00:00 2001 From: rlhatton Date: Thu, 14 Jul 2016 20:17:00 -0700 Subject: [PATCH 4/6] fixed the bug in ginputc that passed the last keystroke to the console. --- ProgramFiles/v4.2/Utilities/ginputc.m | 55 ++++++++++++++++++--------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/ProgramFiles/v4.2/Utilities/ginputc.m b/ProgramFiles/v4.2/Utilities/ginputc.m index 690f0bf..89825a1 100644 --- a/ProgramFiles/v4.2/Utilities/ginputc.m +++ b/ProgramFiles/v4.2/Utilities/ginputc.m @@ -260,6 +260,25 @@ % Wait until enter is pressed. uiwait(hFig); + for idx = 1:length(propsToChange) + set(allHG(validObjects(:, idx)), propsToChange(idx), curCallbacks{idx}); + end + + % Restore window functions and pointer + % set(hFig, 'WindowButtonDownFcn', curWBDF); + % set(hFig, 'WindowButtonMotionFcn', curWBMF); + % set(hFig, 'WindowButtonUpFcn', curWBUF); + % set(hFig, 'KeyPressFcn', curKPF); + % set(hFig, 'KeyReleaseFcn', curKRF); + % set(hFig, 'ResizeFcn', curRF); + + % Restore pointer + set(hFig, 'Pointer', curPointer); + set(hFig, 'PointerShapeCData', curPointerShapeCData); + + % Delete invisible axes and return control + delete(hInvisibleAxes); + %-------------------------------------------------------------------------- function mouseMoveFcn(varargin) @@ -410,24 +429,24 @@ function resizeFcn(varargin) function exitFcn() % This function exits GINPUTC and restores previous figure settings - for idx = 1:length(propsToChange) - set(allHG(validObjects(:, idx)), propsToChange(idx), curCallbacks{idx}); - end - - % Restore window functions and pointer - % set(hFig, 'WindowButtonDownFcn', curWBDF); - % set(hFig, 'WindowButtonMotionFcn', curWBMF); - % set(hFig, 'WindowButtonUpFcn', curWBUF); - % set(hFig, 'KeyPressFcn', curKPF); - % set(hFig, 'KeyReleaseFcn', curKRF); - % set(hFig, 'ResizeFcn', curRF); - - % Restore pointer - set(hFig, 'Pointer', curPointer); - set(hFig, 'PointerShapeCData', curPointerShapeCData); - - % Delete invisible axes and return control - delete(hInvisibleAxes); +% for idx = 1:length(propsToChange) +% set(allHG(validObjects(:, idx)), propsToChange(idx), curCallbacks{idx}); +% end +% +% % Restore window functions and pointer +% % set(hFig, 'WindowButtonDownFcn', curWBDF); +% % set(hFig, 'WindowButtonMotionFcn', curWBMF); +% % set(hFig, 'WindowButtonUpFcn', curWBUF); +% % set(hFig, 'KeyPressFcn', curKPF); +% % set(hFig, 'KeyReleaseFcn', curKRF); +% % set(hFig, 'ResizeFcn', curRF); +% +% % Restore pointer +% set(hFig, 'Pointer', curPointer); +% set(hFig, 'PointerShapeCData', curPointerShapeCData); +% +% % Delete invisible axes and return control +% delete(hInvisibleAxes); uiresume(hFig); end %-------------------------------------------------------------------------- From 5223ddc3578e56f02b3994dcd0cba3b12b75488b Mon Sep 17 00:00:00 2001 From: rlhatton Date: Mon, 26 Sep 2016 15:15:51 -0700 Subject: [PATCH 5/6] lots of changes made while building in gait-drawing --- ProgramFiles/v4.2/Utilities/GetFullPath.m | 326 ++++++++++++++++++ ...issipation_metric_from_general_curvature.m | 42 +++ ..._local_connection_from_general_curvature.m | 122 +++++++ .../backbone_from_curvature_bases.m | 2 - .../backbone_from_general_curvature.m | 88 +++++ .../backbone_from_general_curvature.m~ | 88 +++++ .../curvatures/curv_serpenoid_unit.m | 37 ++ .../curvatures/curv_serpenoid_varfreq.m | 42 +++ .../fatbackbone_from_general_curvature.m | 9 + .../curvature_mode_toolbox/make_curvdef.m | 41 +++ .../make_curvdef_template.txt | 11 + .../Utilities/gait_gui_draw/gait_gui_draw.m | 29 +- .../gait_gui_draw/gait_gui_draw_template.txt | 28 +- ProgramFiles/v4.2/Utilities/ppdiff.m | 52 +++ .../v4.2/Utilities/waypoints_along_gait.m | 23 ++ ProgramFiles/v4.2/sys_calcpath.m | 1 + .../optimize_coordinate_choice.m | 79 +++-- .../sys_draw_fcns/overlay_shape_change_2d.m | 7 +- .../v4.2/sys_draw_fcns/xy_draw_helper.m | 4 +- ProgramFiles/v4.2/sysplotter.fig | Bin 126807 -> 123878 bytes ProgramFiles/v4.2/sysplotter.m | 8 +- ProgramFiles/v4.2/sysplotter_config.m | 2 +- .../gait_gui_draw_Callback.m | 2 +- .../optimalgait_serpenoid_varfreq.mat | Bin 0 -> 3214 bytes .../v4/rlhatton/Shape_Changes/params_.mat | Bin 0 -> 690 bytes .../v4/rlhatton/Shape_Changes/params_10.mat | Bin 0 -> 368 bytes .../v4/rlhatton/Shape_Changes/params_11.mat | Bin 0 -> 365 bytes .../v4/rlhatton/Shape_Changes/params_12.mat | Bin 0 -> 529 bytes .../v4/rlhatton/Shape_Changes/params_13.mat | Bin 0 -> 566 bytes .../v4/rlhatton/Shape_Changes/params_6.mat | Bin 0 -> 492 bytes .../v4/rlhatton/Shape_Changes/params_7.mat | Bin 0 -> 450 bytes .../v4/rlhatton/Shape_Changes/params_8.mat | Bin 0 -> 419 bytes .../v4/rlhatton/Shape_Changes/params_9.mat | Bin 0 -> 370 bytes .../Shape_Changes/params_edgegait.mat | Bin 0 -> 449 bytes .../params_mudskipper_curved.mat | Bin 0 -> 335 bytes .../params_mudskipper_direct.mat | Bin 0 -> 306 bytes .../shchf_optimalgait_serpenoid_varfreq.m | 84 +++++ .../v4/rlhatton/Shape_Changes/shchf_params_.m | 82 +++++ .../rlhatton/Shape_Changes/shchf_params_10.m | 82 +++++ .../rlhatton/Shape_Changes/shchf_params_11.m | 98 ++++++ .../rlhatton/Shape_Changes/shchf_params_12.m | 98 ++++++ .../rlhatton/Shape_Changes/shchf_params_13.m | 98 ++++++ .../rlhatton/Shape_Changes/shchf_params_6.m | 82 +++++ .../rlhatton/Shape_Changes/shchf_params_7.m | 84 +++++ .../rlhatton/Shape_Changes/shchf_params_8.m | 82 +++++ .../rlhatton/Shape_Changes/shchf_params_9.m | 82 +++++ .../Shape_Changes/shchf_params_edgegait.m | 98 ++++++ .../shchf_params_mudskipper_curved.m | 82 +++++ .../shchf_params_mudskipper_direct.m | 82 +++++ .../shchf_serpenoid_varfreq_test1.m | 61 ++++ .../shchf_serpenoid_varfreq_test2.m | 61 ++++ .../Systems/Ross_vector_fields_00.mat | Bin 0 -> 1547 bytes .../Systems/Ross_vector_fields_20.mat | Bin 0 -> 1663 bytes .../Systems/constrained_high_adduction_20.mat | Bin 0 -> 59149 bytes .../rlhatton/Systems/floatsnake_connection.m | 35 ++ .../Systems/floatsnake_connection_elie.m | 35 ++ .../v4/rlhatton/Systems/sysf_float_snake.m | 17 +- .../v4/rlhatton/Systems/sysf_float_snake.mat | Bin 1072 -> 1066 bytes .../Systems/sysf_float_snake_generated.m | 112 ++++++ .../Systems/sysf_float_snake_generated.mat | Bin 0 -> 671 bytes .../Systems/sysf_float_snake_generated_elie.m | 112 ++++++ .../sysf_float_snake_generated_elie.mat | Bin 0 -> 675 bytes .../sysf_honey_swimmer_piecewise_2modes.m | 120 +++++++ .../Systems/sysf_honey_swimmer_serpenoid.m | 2 +- .../sysf_honey_swimmer_serpenoid_general.m | 128 +++++++ .../sysf_honey_swimmer_serpenoid_varfreq.m | 128 +++++++ .../v4/rlhatton/Systems/sysf_mudskipper.m | 144 ++++++++ .../v4/rlhatton/Systems/sysf_mudskipper_00.m | 144 ++++++++ .../v4/rlhatton/Systems/sysf_mudskipper_20.m | 144 ++++++++ 69 files changed, 3358 insertions(+), 62 deletions(-) create mode 100755 ProgramFiles/v4.2/Utilities/GetFullPath.m create mode 100644 ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m create mode 100644 ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/fatbackbone_from_general_curvature.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt create mode 100644 ProgramFiles/v4.2/Utilities/ppdiff.m create mode 100644 ProgramFiles/v4.2/Utilities/waypoints_along_gait.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/optimalgait_serpenoid_varfreq.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_10.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_11.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_12.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_13.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_6.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_7.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_8.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_9.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_edgegait.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_mudskipper_curved.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_mudskipper_direct.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_optimalgait_serpenoid_varfreq.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_10.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_11.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_12.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_13.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_6.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_7.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_8.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_9.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_edgegait.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_curved.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_direct.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test2.m create mode 100644 UserFiles/v4/rlhatton/Systems/Ross_vector_fields_00.mat create mode 100644 UserFiles/v4/rlhatton/Systems/Ross_vector_fields_20.mat create mode 100644 UserFiles/v4/rlhatton/Systems/constrained_high_adduction_20.mat create mode 100644 UserFiles/v4/rlhatton/Systems/floatsnake_connection.m create mode 100644 UserFiles/v4/rlhatton/Systems/floatsnake_connection_elie.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.mat create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.mat create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_piecewise_2modes.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_general.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_mudskipper.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_mudskipper_00.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_mudskipper_20.m diff --git a/ProgramFiles/v4.2/Utilities/GetFullPath.m b/ProgramFiles/v4.2/Utilities/GetFullPath.m new file mode 100755 index 0000000..79788af --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/GetFullPath.m @@ -0,0 +1,326 @@ +function File = GetFullPath(File, Style) +% GetFullPath - Get absolute canonical path of a file or folder +% Absolute path names are safer than relative paths, when e.g. a GUI or TIMER +% callback changes the current directory. Only canonical paths without "." and +% ".." can be recognized uniquely. +% Long path names (>259 characters) require a magic initial key "\\?\" to be +% handled by Windows API functions, e.g. for Matlab's FOPEN, DIR and EXIST. +% +% FullName = GetFullPath(Name, Style) +% INPUT: +% Name: String or cell string, absolute or relative name of a file or +% folder. The path need not exist. Unicode strings, UNC paths and long +% names are supported. +% Style: Style of the output as string, optional, default: 'auto'. +% 'auto': Add '\\?\' or '\\?\UNC\' for long names on demand. +% 'lean': Magic string is not added. +% 'fat': Magic string is added for short names also. +% The Style is ignored when not running under Windows. +% +% OUTPUT: +% FullName: Absolute canonical path name as string or cell string. +% For empty strings the current directory is replied. +% '\\?\' or '\\?\UNC' is added on demand. +% +% NOTE: The M- and the MEX-version create the same results, the faster MEX +% function works under Windows only. +% Some functions of the Windows-API still do not support long file names. +% E.g. the Recycler and the Windows Explorer fail even with the magic '\\?\' +% prefix. Some functions of Matlab accept 260 characters (value of MAX_PATH), +% some at 259 already. Don't blame me. +% The 'fat' style is useful e.g. when Matlab's DIR command is called for a +% folder with les than 260 characters, but together with the file name this +% limit is exceeded. Then "dir(GetFullPath([folder, '\*.*], 'fat'))" helps. +% +% EXAMPLES: +% cd(tempdir); % Assumed as 'C:\Temp' here +% GetFullPath('File.Ext') % 'C:\Temp\File.Ext' +% GetFullPath('..\File.Ext') % 'C:\File.Ext' +% GetFullPath('..\..\File.Ext') % 'C:\File.Ext' +% GetFullPath('.\File.Ext') % 'C:\Temp\File.Ext' +% GetFullPath('*.txt') % 'C:\Temp\*.txt' +% GetFullPath('..') % 'C:\' +% GetFullPath('..\..\..') % 'C:\' +% GetFullPath('Folder\') % 'C:\Temp\Folder\' +% GetFullPath('D:\A\..\B') % 'D:\B' +% GetFullPath('\\Server\Folder\Sub\..\File.ext') +% % '\\Server\Folder\File.ext' +% GetFullPath({'..', 'new'}) % {'C:\', 'C:\Temp\new'} +% GetFullPath('.', 'fat') % '\\?\C:\Temp\File.Ext' +% +% COMPILE: +% Automatic: InstallMex GetFullPath.c uTest_GetFullPath +% Manual: mex -O GetFullPath.c +% Download: http://www.n-simon.de/mex +% Run the unit-test uTest_GetFullPath after compiling. +% +% Tested: Matlab 6.5, 7.7, 7.8, 7.13, WinXP/32, Win7/64 +% Compiler: LCC2.4/3.8, BCC5.5, OWC1.8, MSVC2008/2010 +% Assumed Compatibility: higher Matlab versions +% Author: Jan Simon, Heidelberg, (C) 2009-2013 matlab.THISYEAR(a)nMINUSsimon.de +% +% See also: CD, FULLFILE, FILEPARTS. + +% $JRev: R-G V:032 Sum:7Xd/JS0+yfax Date:15-Jan-2013 01:06:12 $ +% $License: BSD (use/copy/change/redistribute on own risk, mention the author) $ +% $UnitTest: uTest_GetFullPath $ +% $File: Tools\GLFile\GetFullPath.m $ +% History: +% 001: 20-Apr-2010 22:28, Successor of Rel2AbsPath. +% 010: 27-Jul-2008 21:59, Consider leading separator in M-version also. +% 011: 24-Jan-2011 12:11, Cell strings, '~File' under linux. +% Check of input types in the M-version. +% 015: 31-Mar-2011 10:48, BUGFIX: Accept [] as input as in the Mex version. +% Thanks to Jiro Doke, who found this bug by running the test function for +% the M-version. +% 020: 18-Oct-2011 00:57, BUGFIX: Linux version created bad results. +% Thanks to Daniel. +% 024: 10-Dec-2011 14:00, Care for long names under Windows in M-version. +% Improved the unittest function for Linux. Thanks to Paul Sexton. +% 025: 09-Aug-2012 14:00, In MEX: Paths starting with "\\" can be non-UNC. +% The former version treated "\\?\C:\\file" as UNC path and +% replied "\\?\UNC\?\C:\\file". +% 032: 12-Jan-2013 21:16, 'auto', 'lean' and 'fat' style. + +% Initialize: ================================================================== +% Do the work: ================================================================= + +% ############################################# +% ### USE THE MUCH FASTER MEX ON WINDOWS!!! ### +% ############################################# + +% Difference between M- and Mex-version: +% - Mex does not work under MacOS/Unix. +% - Mex calls Windows API function GetFullPath. +% - Mex is much faster. + +% Magix prefix for long Windows names: +if nargin < 2 + Style = 'auto'; +end + +% Handle cell strings: +% NOTE: It is faster to create a function @cell\GetFullPath.m under Linux, but +% under Windows this would shadow the fast C-Mex. +if isa(File, 'cell') + for iC = 1:numel(File) + File{iC} = GetFullPath(File{iC}, Style); + end + return; +end + +% Check this once only: +isWIN = strncmpi(computer, 'PC', 2); +MAX_PATH = 260; + +% Warn once per session (disable this under Linux/MacOS): +persistent hasDataRead +if isempty(hasDataRead) + % Test this once only - there is no relation to the existence of DATAREAD! + %if isWIN + % Show a warning, if the slower Matlab version is used - commented, because + % this is not a problem and it might be even useful when the MEX-folder is + % not inlcuded in the path yet. + % warning('JSimon:GetFullPath:NoMex', ... + % ['GetFullPath: Using slow Matlab-version instead of fast Mex.', ... + % char(10), 'Compile: InstallMex GetFullPath.c']); + %end + + % DATAREAD is deprecated in 2011b, but still available. In Matlab 6.5, REGEXP + % does not know the 'split' command, therefore DATAREAD is preferred: + hasDataRead = ~isempty(which('dataread')); +end + +if isempty(File) % Accept empty matrix as input: + if ischar(File) || isnumeric(File) + File = cd; + return; + else + error(['JSimon:', mfilename, ':BadTypeInput1'], ... + ['*** ', mfilename, ': Input must be a string or cell string']); + end +end + +if ischar(File) == 0 % Non-empty inputs must be strings + error(['JSimon:', mfilename, ':BadTypeInput1'], ... + ['*** ', mfilename, ': Input must be a string or cell string']); +end + +if isWIN % Windows: -------------------------------------------------------- + FSep = '\'; + File = strrep(File, '/', FSep); + + % Remove the magic key on demand, it is appended finally again: + if strncmp(File, '\\?\', 4) + if strncmpi(File, '\\?\UNC\', 8) + File = ['\', File(7:length(File))]; % Two leading backslashes! + else + File = File(5:length(File)); + end + end + + isUNC = strncmp(File, '\\', 2); + FileLen = length(File); + if isUNC == 0 % File is not a UNC path + % Leading file separator means relative to current drive or base folder: + ThePath = cd; + if File(1) == FSep + if strncmp(ThePath, '\\', 2) % Current directory is a UNC path + sepInd = strfind(ThePath, '\'); + ThePath = ThePath(1:sepInd(4)); + else + ThePath = ThePath(1:3); % Drive letter only + end + end + + if FileLen < 2 || File(2) ~= ':' % Does not start with drive letter + if ThePath(length(ThePath)) ~= FSep + if File(1) ~= FSep + File = [ThePath, FSep, File]; + else % File starts with separator: + File = [ThePath, File]; + end + else % Current path ends with separator: + if File(1) ~= FSep + File = [ThePath, File]; + else % File starts with separator: + ThePath(length(ThePath)) = []; + File = [ThePath, File]; + end + end + + elseif FileLen == 2 && File(2) == ':' % "C:" current directory on C! + % "C:" is the current directory on the C-disk, even if the current + % directory is on another disk! This was ignored in Matlab 6.5, but + % modern versions considers this strange behaviour. + if strncmpi(ThePath, File, 2) + File = ThePath; + else + try + File = cd(cd(File)); + catch % No MException to support Matlab6.5... + if exist(File, 'dir') % No idea what could cause an error then! + rethrow(lasterror); + else % Reply "K:\" for not existing disk: + File = [File, FSep]; + end + end + end + end + end + +else % Linux, MacOS: --------------------------------------------------- + FSep = '/'; + File = strrep(File, '\', FSep); + + if strcmp(File, '~') || strncmp(File, '~/', 2) % Home directory: + HomeDir = getenv('HOME'); + if ~isempty(HomeDir) + File(1) = []; + File = [HomeDir, File]; + end + + elseif strncmpi(File, FSep, 1) == 0 + % Append relative path to current folder: + ThePath = cd; + if ThePath(length(ThePath)) == FSep + File = [ThePath, File]; + else + File = [ThePath, FSep, File]; + end + end +end + +% Care for "\." and "\.." - no efficient algorithm, but the fast Mex is +% recommended at all! +if ~isempty(strfind(File, [FSep, '.'])) + if isWIN + if strncmp(File, '\\', 2) % UNC path + index = strfind(File, '\'); + if length(index) < 4 % UNC path without separator after the folder: + return; + end + Drive = File(1:index(4)); + File(1:index(4)) = []; + else + Drive = File(1:3); + File(1:3) = []; + end + else % Unix, MacOS: + isUNC = false; + Drive = FSep; + File(1) = []; + end + + hasTrailFSep = (File(length(File)) == FSep); + if hasTrailFSep + File(length(File)) = []; + end + + if hasDataRead + if isWIN % Need "\\" as separator: + C = dataread('string', File, '%s', 'delimiter', '\\'); %#ok + else + C = dataread('string', File, '%s', 'delimiter', FSep); %#ok + end + else % Use the slower REGEXP, when DATAREAD is not available anymore: + C = regexp(File, FSep, 'split'); + end + + % Remove '\.\' directly without side effects: + C(strcmp(C, '.')) = []; + + % Remove '\..' with the parent recursively: + R = 1:length(C); + for dd = reshape(find(strcmp(C, '..')), 1, []) + index = find(R == dd); + R(index) = []; + if index > 1 + R(index - 1) = []; + end + end + + if isempty(R) + File = Drive; + if isUNC && ~hasTrailFSep + File(length(File)) = []; + end + + elseif isWIN + % If you have CStr2String, use the faster: + % File = CStr2String(C(R), FSep, hasTrailFSep); + File = sprintf('%s\\', C{R}); + if hasTrailFSep + File = [Drive, File]; + else + File = [Drive, File(1:length(File) - 1)]; + end + + else % Unix: + File = [Drive, sprintf('%s/', C{R})]; + if ~hasTrailFSep + File(length(File)) = []; + end + end +end + +% "Very" long names under Windows: +if isWIN + if ~ischar(Style) + error(['JSimon:', mfilename, ':BadTypeInput2'], ... + ['*** ', mfilename, ': Input must be a string or cell string']); + end + + if (strncmpi(Style, 'a', 1) && length(File) >= MAX_PATH) || ... + strncmpi(Style, 'f', 1) + % Do not use [isUNC] here, because this concerns the input, which can + % '.\File', while the current directory is an UNC path. + if strncmp(File, '\\', 2) % UNC path + File = ['\\?\UNC', File(2:end)]; + else + File = ['\\?\', File]; + end + end +end + +% return; diff --git a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m new file mode 100644 index 0000000..7eb5946 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m @@ -0,0 +1,42 @@ +function Mp = LowRE_dissipation_metric_from_general_curvature(curvdef,cparams,L,c,drag_ratio) +% Calculate the dissipation power metric for a set of curvature bases + + % Specified integration limits + int_limit = L*[-0.5 0.5]; + + % Define the tangential, lateral drag matrix for unit/double drag + drag = [1 0; 0 2]*c; + + % Get the backbone locus, Jacobian, and Local Connection functions + [A, h, J] = LowRE_local_connection_from_general_curvature(curvdef,cparams,L,c,drag_ratio); + + % Integrate along the body for the power metric + Mp_sol = ode_multistart(@ode45,@(s,Mp) dMetric(s,Mp,A,h,J,drag),int_limit,int_limit(1),zeros(length(cparams)^2,1)); + + Mp = reshape(Mp_sol(int_limit(end)),length(cparams),[]); + +end + + +function localJ = local_body_velocity_J(A,h,J) +% Calculate the Jacobian from shape parameter velocity to local tangential +% and normal velocity + + R = [cos(h(3)) sin(h(3)); + -sin(h(3)) cos(h(3))]; + + %Velocity is sum of body velocity and velocity within body frame + localJ = R*(-A(1:2,:) + J(1:2,:) + [-h(2)*(-A(3,:)); h(1)*(-A(3,:))]); + +end + +function dMp = dMetric(s,Mp,A,h,J,drag) %#ok +% Calculate the local contribution to the power metric + + localJ = local_body_velocity_J(A,h(s),J(s)); + + dMp = localJ.'*drag*localJ; + + dMp = dMp(:); + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m new file mode 100644 index 0000000..c0bfa2f --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m @@ -0,0 +1,122 @@ +function [A, h, J] = LowRE_local_connection_from_general_curvature(curvdef,cparams,L,c,drag_ratio) +% Calculate the local connection for a set of curvature bases +% +% Inputs: +% kappa_basis_input: cell vector of handles to basis functions +% r: coefficients for basis functions +% L: total length of swimmer +% c: drag per unit length +% drag_ratio: ratio of lateral to longitudinal drag + +% Specified integration limits +int_limit = L*[-0.5 0.5]; + +% First, get the backbone locus and Jacobian functions +[h, J] = backbone_from_general_curvature(curvdef,cparams,L); + +% Now integrate to get the pfaffian +%Omega_sol = ode45( @(s,Omega) connection_helper(s,h(s),J(s)),int_limit,zeros(3,3+length(r))); +Omega_sol = ode_multistart(@ode45,@(s,Omega) connection_helper(s,h(s),J(s),c,drag_ratio),int_limit,int_limit(1),zeros(3,3+length(cparams))); + +Omega = reshape(Omega_sol(int_limit(end)),3,[]); + +A = Omega(:,1:3)\Omega(:,4:end); + +end + +function dOmega = connection_helper(s,h,J,c,drag_ratio) %#ok +% Calculate the derivative of the local connection as it's built up along +% the backbone + + % Midpoint-tangent-frame force jacobian + gdot_to_xi_local = [cos(h(3)) sin(h(3)) 0; + -sin(h(3)) cos(h(3)) 0; + 0 0 1]; + + % Local drag, based on unit longitudinal drag, lateral according to the ratio, no local + % torsional drag, multiplied by drag coefficient + xi_local_to_F_local = [-1 0 0;0 -drag_ratio 0;0 0 0]*c; + + % Force local element applies at midpoint-tangent-frame + F_local_to_F_midpoint = [cos(h(3)) -sin(h(3)) 0; + sin(h(3)) cos(h(3)) 0; + 0 0 1]; + + % Moment around midpoint frame induced by force + F_midpoint_to_FM_midpoint = [1 0 0; 0 1 0; -h(2) h(1) 1]; + + % shape component of pfaffian + omega2 = F_midpoint_to_FM_midpoint * F_local_to_F_midpoint... + * xi_local_to_F_local * gdot_to_xi_local * J; + + % body velocity component of pfaffian + omega1 = F_midpoint_to_FM_midpoint * F_local_to_F_midpoint... + * xi_local_to_F_local * gdot_to_xi_local * [1 0 -h(2); 0 1 h(1); 0 0 1]; + + dOmega = [omega1 omega2]; + dOmega = dOmega(:); + +% % local contribution to the local connection +% dA = omega1\omega2; +% +% % reshape into a vector +% dA = dA(:); + + + +end + +function X = torow( X ) +% +% TOROW Converts a vector or a matrix into a row vector. +% If input is already a row vector, it is returned with no change. +% If input is a column vector, it is converted into a row vector and +% returned. +% If input is a matrix, each column is converted into a row, and all +% resulting rows are placed in series into a single row which is +% returned. +% +% Input: +% X - input vector or matrix +% +% Output: +% X - row vector +% +% Examples: +% torow([ 0 1 2 3 ]) +% returns [ 0 1 2 3 ] +% torow([ 0 1 2 3 ]') +% returns [ 0 1 2 3 ] +% torow([ 0 1; 2 3 ]) +% returns [ 0 2 1 3 ] +% torow([ 0 1; 2 3 ]') +% returns [ 0 1 2 3 ] +% +% Author: Tashi Ravach +% Version: 1.0 +% Date: 07/07/2010 +% + + % check if input is a vector + [ m, n ] = size(X); + if m == 1 + return % input is already a row vector with n columns + elseif n==1 + X = X'; % input is converted from column vector to row vector + elseif (m*n>n) || (m*n>m) + X = X(:)'; % input is converted from matrix to row vector by column + else + X = []; % input is unknown and an empty output is returned + end + +end + +function Y = toz( X ) + + %first, make X a row + X = torow(X); + + % then, make it a 3rd-dimension column + Y(1,1,:) = X; + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_curvature_bases.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_curvature_bases.m index 43ae91f..5884d3b 100644 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_curvature_bases.m +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_curvature_bases.m @@ -110,8 +110,6 @@ % delta-functions and the like %summed integral of the curvature functions -%theta_fun = @(s) sum(cell2mat(cellfun( @(k,r) [0 -%r]*(k(torow(s))-k(torow(zeros(size(s))))), kappa_basis,num2cell(r),'UniformOutput',false)),1); theta_fun = @(s) sum(cell2mat(cellfun( @(k,r) theta_fun_helper(k,r,s), kappa_basis,num2cell(r),'UniformOutput',false)),1); diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m new file mode 100644 index 0000000..a2e37c8 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m @@ -0,0 +1,88 @@ +function [h, J] = backbone_from_general_curvature(curvdef,cparams,L) + +% Set the integration limits. Internally, everything uses [-0.5 0.5], and +% then scales by the length factor at the end. +all_limits = [-0.5 0 0.5]; + +% Get backbone theta as a function of s +theta_fun = @(s) curvdef(s,cparams,'angle'); + +% Get the x and y locations of points on the backbone +locus_sol = ode_multistart(@ode45, @(s,h) locus_helper(s,theta_fun),all_limits,0,[0;0]); + +% Return the locus data as 3xn matrix with x,y,theta at each of n points +%h = @(s) [L*(deval(locus_sol,torow(s)/L)-deval(locus_sol,0*torow(s))); theta_fun(torow(s)/L)]; +h_norm = @(s) [locus_sol(torow(s)); theta_fun(torow(s))]; % in normalized internal coordinates +h = @(s) [L*locus_sol(torow(s)/L); theta_fun(torow(s)/L)]; % with actual length + +%%%%%%%%%%%%%% +% Get the jacobian to body point velocities + +dcurvdef = @(s) curvdef(s,cparams,'dcurvature_int'); + +%Jacobian of theta function is the derivative of the curvature with respect +%to each of the parameters, as definded in the curvdef function +J_theta_fun = dcurvdef; %ode_multistart(@ode45,@(s,J) dcurvdef(s),all_limits,0,zeros(length(dcurvdef(0)),1)); + +% SE(2) adjoint integration to get the x and y jacobians +jacobian_sol = ode_multistart(@ode45,@(s,J) J_helper(s,J,dcurvdef,h_norm(s)),all_limits,0,zeros(2*length(dcurvdef(0)),1)); + +% Concatenate xy and theta jacobians. +J = @(s) cat(1,reshape(L*jacobian_sol(toz(s/L)),2,[],length(s)),ipermute(J_theta_fun(s/L),[2,3,1])); + + + +end + + +% Get the derivative of the locus along the backbone length +function dh = locus_helper(s,theta_fun) + + % Build the rotation matrix + theta = theta_fun(s); + R = [cos(theta) -sin(theta);sin(theta) cos(theta)]; + + % Rotate the basic tangent vector to point along the backbone + dh = R * [1; 0]; + +end + +% get the derivative of the jacobian along the backbone length (note that J +% is only here for ODE45, and isn't actually used) +function dJ = J_helper(s,J,dcurvdef,h) %#ok + + nvars = length(dcurvdef(0)); + + dJ = zeros(2,nvars); + + dcurvdef_eval = dcurvdef(s); + + for i = 1:nvars + + int_basis = dcurvdef_eval(i,:); + + dJ(:,i) = [-sin(h(3)) -cos(h(3)); + cos(h(3)) -sin(h(3))] * [int_basis; 0]; + + end + + %Reshape into a vector for ODE + dJ = dJ(:); + +end + +function X = torow( X ) % Make the argument a row + + X = X(:).'; + +end + +function Y = toz( X ) + + %first, make X a row + X = torow(X); + + % then, make it a 3rd-dimension column + Y(1,1,:) = X; + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ new file mode 100644 index 0000000..36ceaf3 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ @@ -0,0 +1,88 @@ +function [h, J] = backbone_from_general_curvature(curvdef,cparams,L) + +% Set the integration limits. Internally, everything uses [-0.5 0.5], and +% then scales by the length factor at the end. +all_limits = [-0.5 0 0.5]; + +% Get backbone theta as a function of s +theta_fun = @(s) curvdef(s,cparams,'angle'); + +% Get the x and y locations of points on the backbone +locus_sol = ode_multistart(@ode45, @(s,h) locus_helper(s,theta_fun),all_limits,0,[0;0]); + +% Return the locus data as 3xn matrix with x,y,theta at each of n points +%h = @(s) [L*(deval(locus_sol,torow(s)/L)-deval(locus_sol,0*torow(s))); theta_fun(torow(s)/L)]; +h_norm = @(s) [locus_sol(torow(s)); theta_fun(torow(s))]; % in normalized internal coordinates +h = @(s) [L*locus_sol(torow(s)/L); theta_fun(torow(s)/L)]; % with actual length + +%%%%%%%%%%%%%% +% Get the jacobian to body point velocities + +dcurvdef = @(s) curvdef(s,cparams,'dcurvature'); + +%Jacobian of theta function is the derivative of the curvature with respect +%to each of the parameters, as definded in the curvdef function +J_theta_fun = ode_multistart(@ode45,@(s,J)dcurvdef; + +% SE(2) adjoint integration to get the x and y jacobians +jacobian_sol = ode_multistart(@ode45,@(s,J) J_helper(s,J,dcurvdef,h_norm(s)),all_limits,0,zeros(2*length(dcurvdef(0)),1)); + +% Concatenate xy and theta jacobians. +J = @(s) cat(1,reshape(L*jacobian_sol(toz(s/L)),2,[],length(s)),ipermute(J_theta_fun(s/L),[2,3,1])); + + + +end + + +% Get the derivative of the locus along the backbone length +function dh = locus_helper(s,theta_fun) + + % Build the rotation matrix + theta = theta_fun(s); + R = [cos(theta) -sin(theta);sin(theta) cos(theta)]; + + % Rotate the basic tangent vector to point along the backbone + dh = R * [1; 0]; + +end + +% get the derivative of the jacobian along the backbone length (note that J +% is only here for ODE45, and isn't actually used) +function dJ = J_helper(s,J,dcurvdef,h) %#ok + + nvars = length(dcurvdef(0)); + + dJ = zeros(2,nvars); + + dcurvdef_eval = dcurvdef(s); + + for i = 1:nvars + + int_basis = dcurvdef_eval(i,:); + + dJ(:,i) = [-sin(h(3)) -cos(h(3)); + cos(h(3)) -sin(h(3))] * [int_basis; 0]; + + end + + %Reshape into a vector for ODE + dJ = dJ(:); + +end + +function X = torow( X ) % Make the argument a row + + X = X(:).'; + +end + +function Y = toz( X ) + + %first, make X a row + X = torow(X); + + % then, make it a 3rd-dimension column + Y(1,1,:) = X; + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m new file mode 100644 index 0000000..ac9aed2 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m @@ -0,0 +1,37 @@ +function output = curv_serpenoid_unit(s,params,mode) + +% Parse inputs +a1 = params(1); % cosine amplitude +a2 = params(2); % sine amplitude +omega = 1; + +switch mode + + case 'curvature' + + kappa = a1*cos(2*pi*s*omega) + a2*sin(2*pi*s*omega); + + output = kappa; + + case 'angle' + + theta = 1/(2*pi*omega) * (a1*sin(2*pi*s*omega) + a2*(1-cos(2*pi*s*omega))); + + output = theta; + + case 'dcurvature' + + dkappa = [cos(2*pi*s*omega); + sin(2*pi*s*omega)]; + %-a1*omega*sin(2*pi*s*omega) + a2*omega*cos(2*pi*s*omega)]; + + output = dkappa; + + case 'dcurvature_int' + + dkappa_int = 1/(2*pi*omega) * [sin(2*pi*s*omega); + 1-cos(2*pi*s*omega)]; % plus one for definite integral + + + output = dkappa_int; +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m new file mode 100644 index 0000000..bd1c7cd --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m @@ -0,0 +1,42 @@ +function output = curv_serpenoid_varfreq(s,params,mode) + +% Parse inputs +a1 = params(1); % cosine amplitude +a2 = params(2); % sine amplitude +omega = params(3); % Frequency + +switch mode + + case 'curvature' + + %kappa = a1*cos(2*pi*s*omega) + a2*sin(2*pi*s*omega); + kappa = omega.*(a1*cos(2*pi*s*omega) + a2*sin(2*pi*s*omega)); + + output = kappa; + + case 'angle' + +% theta = 1/(2*pi*omega) * (a1*sin(2*pi*s*omega) + a2*(1-cos(2*pi*s*omega))); + theta = 1/(2*pi) * (a1*sin(2*pi*s*omega) + a2*(1-cos(2*pi*s*omega))); + + output = theta; + + case 'dcurvature' + + dkappa = [omega*cos(2*pi*s*omega); + omega*sin(2*pi*s*omega); + omega.*(2.*a2.*s.*pi.*cos(2.*omega.*s.*pi) - 2.*a1.*s.*pi.*sin(2.*omega.*s.*pi)) + a1.*cos(2.*omega.*s.*pi) + a2.*sin(2.*omega.*s.*pi)]; + %(2*pi*s) * (-a1*sin(2*pi*s*omega) + a2*cos(2*pi*s*omega))]; + + output = dkappa; + + case 'dcurvature_int' + + dkappa_int = [sin(2*pi*s*omega)/(2*pi*omega); + (1-cos(2*pi*s*omega))/(2*pi*omega); + a1.*s.*cos(2.*omega.*s.*pi) + a2.*s.*sin(2.*omega.*s.*pi)]; + %-((a1-2*pi*a2*s*omega).*sin(2*pi*s*omega) - (2*pi*a1*s*omega + a2).*cos(2*pi*s*omega) + a2)./(2*pi*omega.^2)]; + + + output = dkappa_int; +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/fatbackbone_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/fatbackbone_from_general_curvature.m new file mode 100644 index 0000000..6cd3227 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/fatbackbone_from_general_curvature.m @@ -0,0 +1,9 @@ +function B = fatbackbone_from_general_curvature(curvdef,cparams,L,width) + + [h, J] = backbone_from_general_curvature(curvdef,cparams,L); + + + B = fatbackbone(h,L*[-.5 .5],width); + + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m new file mode 100644 index 0000000..f8c3ac1 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m @@ -0,0 +1,41 @@ +function make_curvdef(curv_fun_string,paramlist) + +% Turn the curvature function from a string into a symbolic expression +curv_fun = sym(curv_fun_string); + +% Integrate the curvature function along the backbone +int_curv_fun_ds = int(curv_fun,'s',0,'s'); + +% Take the derivative of the curvature with respect to each parameter +d_curv_fun_dp = diff(curv_fun,paramlist + + + +load sysplotter_config + +% Open the template file +fidi = fopen(fullfile(sysplotterpath,'Utilities','gait_gui_draw',... + 'gait_gui_draw_template.txt')); + +% Create the output file +fido = fopen(fullfile(shchpath,['curv_' paramfilename '.m']),'w'); + + +while ~feof(fidi) + + % Read the next line from the input file + s = fgetl(fidi); + + % Insert the shchf filename + s = strrep(s,'AA_SHCHFILENAME',['shchf_' paramfilename]); + + % Give this file the correct paramfile + s = strrep(s,'AA_PARAMSNAME',paramfilename); + + % Insert the displayname + s = strrep(s,'AA_DISPLAYNAME',displayname); + + % Copy put the line into the new file + fprintf(fido,'%s\n',s); + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt new file mode 100644 index 0000000..ee66500 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt @@ -0,0 +1,11 @@ +function output = AA_CURVFILENAME(s,params,mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'AA_PARAMSNAME'; \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m b/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m index 8ecc681..4e4c015 100644 --- a/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m +++ b/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw.m @@ -3,6 +3,7 @@ function gait_gui_draw(hAx) % Load the sysplotter configuration information load sysplotter_config + % Bring selected axis to foreground (use gca if this is not specified) if ~exist('hAx','var') || isempty(hAx) hAx = gca; @@ -34,10 +35,14 @@ function gait_gui_draw(hAx) % Evenly space the points along one period t = linspace(0,period,numel(alpha1)); - % Generate spline structures for the selected points - spline_alpha1 = csape(t,alpha1','periodic'); - spline_alpha2 = csape(t,alpha2','periodic'); - + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + else % Set the period of the open motion as 1 @@ -46,18 +51,18 @@ function gait_gui_draw(hAx) % Evenly space the points along time from zero to 2pi t = linspace(0,period,numel(alpha1)); - % Generate spline structures for the selected points - spline_alpha1 = csape(t,alpha1'); - spline_alpha2 = csape(t,alpha2'); - + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); end % Upsample and plot to show gait to user n_plot = 100; t_plot = linspace(0,period,n_plot); -alpha1_plot = fnval(spline_alpha1,t_plot); -alpha2_plot = fnval(spline_alpha2,t_plot); + +alpha1_plot = ppval(spline_alpha1,t_plot); +alpha2_plot = ppval(spline_alpha2,t_plot); % Provide zdata to line if necessary maxZ = 0; @@ -90,8 +95,8 @@ function gait_gui_draw(hAx) [~,paramfilenamebare,ext] = fileparts(paramfilename); % Break open the filename to get the extension end - if ( strncmp(paramfilename,'params_',7) && strcmp(ext,'.mat') )... - && strcmp(fullfile(pathname,paramfilename),fullfile(shchpath,paramfilename)) + if ( strncmpi(paramfilename,'params_',7) && strcmpi(ext,'.mat') )... + && strcmpi(fullfile(pathname,paramfilename),fullfile(shchpath,paramfilename)) usercancel = 0; break else diff --git a/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw_template.txt b/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw_template.txt index 954d00e..04078a0 100644 --- a/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw_template.txt +++ b/ProgramFiles/v4.2/Utilities/gait_gui_draw/gait_gui_draw_template.txt @@ -39,23 +39,39 @@ function output = AA_SHCHFILENAME(input_mode) end % Generate spline structures for the selected points - spline_alpha1 = csape(t,alpha1',splinemode); - spline_alpha2 = csape(t,alpha2',splinemode); + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end % The gait path is now defined by evaluating the two splines at % specified times - p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; % Speed up execution by defining the gait velocity as well (so % the evaluator doesn't need to numerically take the derivative % at every time - spline_dalpha1 = fnder(spline_alpha1); - spline_dalpha2 = fnder(spline_alpha2); + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); % The gait path is now defined by evaluating the two splin % derivatives at specified times - p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; %marker locations diff --git a/ProgramFiles/v4.2/Utilities/ppdiff.m b/ProgramFiles/v4.2/Utilities/ppdiff.m new file mode 100644 index 0000000..991464c --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/ppdiff.m @@ -0,0 +1,52 @@ +function qq = ppdiff(pp,j) +%PPDIFF Differentiate piecewise polynomial. +% QQ = PPDIFF(PP,J) returns the J:th derivative of a piecewise +% polynomial PP. PP must be on the form evaluated by PPVAL. QQ is a +% piecewise polynomial on the same form. Default value for J is 1. +% +% Example: +% x = linspace(-pi,pi,9); +% y = sin(x); +% pp = spline(x,y); +% qq = ppdiff(pp); +% xx = linspace(-pi,pi,201); +% plot(xx,cos(xx),'b',xx,ppval(qq,xx),'r') +% +% See also PPVAL, SPLINE, SPLINEFIT, PPINT + +% Author: Jonas Lundgren 2009 + +if nargin < 1, help ppdiff, return, end +if nargin < 2, j = 1; end + +% Check diff order +if ~isreal(j) || mod(j,1) || j < 0 + msgid = 'PPDIFF:DiffOrder'; + message = 'Order of derivative must be a non-negative integer!'; + error(msgid,message) +end + +% Get coefficients +coefs = pp.coefs; +[m n] = size(coefs); + +if j == 0 + % Do nothing +elseif j < n + % Derivative of order J + D = [n-j:-1:1; ones(j-1,n-j)]; + D = cumsum(D,1); + D = prod(D,1); + coefs = coefs(:,1:n-j); + for k = 1:n-j + coefs(:,k) = D(k)*coefs(:,k); + end +else + % Derivative kills PP + coefs = zeros(m,1); +end + +% Set output +qq = pp; +qq.coefs = coefs; +qq.order = size(coefs,2); \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/waypoints_along_gait.m b/ProgramFiles/v4.2/Utilities/waypoints_along_gait.m new file mode 100644 index 0000000..b84fe3e --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/waypoints_along_gait.m @@ -0,0 +1,23 @@ +function [alpha,t] = waypoints_along_gait(gaitname,n) +% Get a set of n waypoints along the gait. Gaitname should be the filename +% for the gait, including the shchf_ heading, and the .mat extension can be +% included or neglected without affecting the function of the program + +% For now, this program assumes that there is only a single gait, with one +% segment (and works with segment 1 of gait 1 if more are defined in the +% file). + + % Get the paths for the sysplotter directories + load sysplotter_config + + % Load the .mat file for the gait + load(fullfile(datapath,gaitname)) + + % Generate n points evenly spaced along the gait + time_range = p.time_def{1}{1}; + t = linspace(time_range(1), time_range(2),n); + + % Find the gait points at these times + alpha = p.phi_def{1}{1}(t); + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/sys_calcpath.m b/ProgramFiles/v4.2/sys_calcpath.m index e280d25..4b5c6c2 100644 --- a/ProgramFiles/v4.2/sys_calcpath.m +++ b/ProgramFiles/v4.2/sys_calcpath.m @@ -45,6 +45,7 @@ %Vectorize the shape change equation if it's an inline function p = vectorize_shch(p); %#ok + save(infile2,'p') %get shape change loci p = find_loci(s,p); diff --git a/ProgramFiles/v4.2/sys_calcsystem_fcns/optimize_coordinate_choice.m b/ProgramFiles/v4.2/sys_calcsystem_fcns/optimize_coordinate_choice.m index 7a30019..5930f74 100644 --- a/ProgramFiles/v4.2/sys_calcsystem_fcns/optimize_coordinate_choice.m +++ b/ProgramFiles/v4.2/sys_calcsystem_fcns/optimize_coordinate_choice.m @@ -74,33 +74,62 @@ %%%%% %Zero the potential function for theta at the center of the domain - % If the shapespace origin is within the domain, use that as E_theta=0. + % If the shapespace origin (zero or unity) is within the domain, use that as E_theta=0. % Otherwise, use the value at the center of the domain - - % Create a mask to turn all the lower-bounds negative - n_dim = numel(size(E_theta)); - mask = ones(1,2*n_dim); - mask(1:2:2*n_dim) = -1; - within = (mask .* s.grid_range)>0; - - if all(within) - - zcell = num2cell(zeros(n_dim,1)); - - E_theta_offset = interpn(s.grid.eval{:},E_theta,zcell{:},'cubic'); - - else +% +% % Create a mask to turn all the lower-bounds negative +% n_dim = numel(size(E_theta)); +% mask = ones(1,2*n_dim); +% mask(1:2:2*n_dim) = -1; +% within = (mask .* s.grid_range)>0; +% +% if all(within) +% +% zcell = num2cell(zeros(n_dim,1)); +% +% E_theta_offset = interpn(s.grid.eval{:},E_theta,zcell{:},'cubic'); +% +% else +% +% % Loop over the dimensions, getting the center values in each dimension +% centervals = zeros(n_dim,2); +% for i = 1:n_dim +% centervals(i,:) = E_theta([floor((size(E_theta,i)+1)/2) ceil((size(E_theta,i)+1)/2)]); +% end +% % Mean these value to get the value at the center of the space +% E_theta_offset = mean(centervals(:)); +% +% end + + n_dim = numel(size(E_theta)); + centervals = num2cell(zeros(n_dim,1)); + + for idx = 1:n_dim; + + dim_range = s.grid_range([(2*idx)-1,2*idx]); + + % If zero is in the range for a given dimension, center on that value + if (dim_range(1) <= 0) && (dim_range(2) >= 0) + + centervals{idx} = 0; + + % If one (unity) is in the range, center on that + elseif (dim_range(1) <= 1) && (dim_range(2) >= 1) + + centervals{idx} = 1; + + % Otherwise, put the center of the E_theta function at the middle + % of the grid range + else + + centervals{idx} = mean(dim_range); + + end + + end + + E_theta_offset = interpn(s.grid.eval{:},E_theta,centervals{:},'cubic'); - % Loop over the dimensions, getting the center values in each dimension - centervals = zeros(n_dim,2); - for i = 1:n_dim - centervals(i,:) = E_theta([floor((size(E_theta,i)+1)/2) ceil((size(E_theta,i)+1)/2)]); - end - % Mean these value to get the value at the center of the space - E_theta_offset = mean(centervals(:)); - - end - E_theta = E_theta-E_theta_offset; diff --git a/ProgramFiles/v4.2/sys_draw_fcns/overlay_shape_change_2d.m b/ProgramFiles/v4.2/sys_draw_fcns/overlay_shape_change_2d.m index b8b7f5a..e11a760 100644 --- a/ProgramFiles/v4.2/sys_draw_fcns/overlay_shape_change_2d.m +++ b/ProgramFiles/v4.2/sys_draw_fcns/overlay_shape_change_2d.m @@ -18,7 +18,12 @@ function overlay_shape_change_2d(ax,p,convert) %draw the path itself - line(p.phi_locus_full{i}.shape(:,1),p.phi_locus_full{i}.shape(:,2),'Color',Colorset.spot,'LineWidth',5,'Parent',ax); + + for idx = 1:size(p.phi_locus_full{i}.shape,2) + pathpoints{idx} = p.phi_locus_full{i}.shape(:,idx); + end + + line(pathpoints{:},'Color',Colorset.spot,'LineWidth',5,'Parent',ax); %draw the direction arrows on the line plot_dir_arrows(p.phi_locus_full{i}.shape(:,1),p.phi_locus_full{i}.shape(:,2),p.phi_arrows{i}{1},'Color',Colorset.spot,'LineWidth',4,'Parent',ax); diff --git a/ProgramFiles/v4.2/sys_draw_fcns/xy_draw_helper.m b/ProgramFiles/v4.2/sys_draw_fcns/xy_draw_helper.m index 0555490..01cd97c 100644 --- a/ProgramFiles/v4.2/sys_draw_fcns/xy_draw_helper.m +++ b/ProgramFiles/v4.2/sys_draw_fcns/xy_draw_helper.m @@ -147,9 +147,11 @@ % Set the axes with a nice buffering [x_min,x_max,y_min,y_max] = ... set_axis_limits(ax,x_collect,y_collect,.07,.07); - end + end + set(ax,'ZLim',10*[-1 1]); % prevent layering from going outside zlim axis(ax,'equal'); new_lim = [get(ax,'xlim') get(ax,'ylim')]; + %%%%%%% diff --git a/ProgramFiles/v4.2/sysplotter.fig b/ProgramFiles/v4.2/sysplotter.fig index ec47089437740353281c96fb02d27e32a5bba9c7..b2b86d1c5b0a969168e99d7dfe6206f0a66567f0 100644 GIT binary patch literal 123878 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 z

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%0A>lSJJVXIvf8 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 _imGv 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

kWI?@>KQw+}xC>i1|Dg-#}&+ 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 PRxYXi%c8NR$G-j##mk@h literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_.mat new file mode 100644 index 0000000000000000000000000000000000000000..13e5eae1c8b8210dcb6396f825ef5735930127a9 GIT binary patch literal 690 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXAm{}QHTA7+D7#SFvDG&=7V1UunmmkPp3&a(39w#Rx{9rhe<8X#? zsbhoaDRK5BHx0Ivs?S7HRHTdy3YczMH&~qi>g0Ig`~BZ{9j{z||J%QH+bA- zV9`-n{-62$?#un{vNz)=G6(&*5qBWv+|*mA{J*h&EV|gFcK^X2=F5&!eYfQsRvJN`!jnP;*HZhL5@C1*wKa%M^_vJIz#3<`?udV@BQrMzNP%{UM}q_%YXk)J@bj= zhkNt(zxlo#XuI95(=Obz&g}do?zMmGezs}#`|SPrR1Op{Xzl-h)NXdJm!$qTd4}25 z2kOLT{7ZOWAdzxV|F?ix+}BG#^1m5W7d7o;jPoMvZCRFR+ zTK{mur|PZm+yCxq_r5pR?_VB&u|C7EiRnEckF0@vq=FF<`spl5g$8F&1TZbJY^-2s zX0lngchcJ@btmPV>^JS-lz#uv@yPWH|M-71EcV~TdH)Za=>OdJ)#;nhPP6~N@RJYU z=gPn3S-uH{4J(q11+JHJ{#<+FB}3r(w+0uFfBO6K>>fUW+CO|cX^+-DpTZ)m@T*mZ wPj0S7X7o0LD>8!Zw*uy|f8N&NbXK@{L)EQixBrFTab(I_w}hFYY(;PZ04|Fve*gdg literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_10.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_10.mat new file mode 100644 index 0000000000000000000000000000000000000000..0484a2f751012e9e492c061190c439749897045f GIT binary patch literal 368 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA%Z1kCPJ;JQ$M96rMF) zQaHf%v^m2~gYBg1Gm#V(DIPOH}L$IL=t?YO2mCv=zi+}vU+eYpU)${8 ziJutMIYdiACfdSH>_Bp-vD3{ShX|%6mW>h3jEpKJu}*c`|F*PWn8P<+r1y1p9+#!V Mk4bzCJj^_90BD+bSO5S3 literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_12.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_12.mat new file mode 100644 index 0000000000000000000000000000000000000000..8d0ca50c2eeea29e023c68ded47822f4083744a5 GIT binary patch literal 529 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXATd;iUR`H{?Q@f@Wc{t`7|Y!XUw| zhE&V9@$b(6*!0fD_u2Bl{Ciq&o8PP2Dxapu;OuV^335+1!aWR#&`D=Wk~27aB7kX$ zWurwSBct5)xRYf?^(p)d?Qh24+?@aL@tXSqc9WgY+?kwn$o!^^!lOHU`^wF3=lneU jo?)VR(Twx2_XlS;afHmB(cH4m`$WF0Cp*JRXRSB@$}HGj literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_13.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_13.mat new file mode 100644 index 0000000000000000000000000000000000000000..e16d7ad713d4605a812110dd2c44e8e185b3da3e GIT binary patch literal 566 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA}`L4mpz!hm!aeIzcc?19E;wcXZ(KK{RLktGoL?{{%xEV`6Xs=+5La5m#1##4%&ZP zzOed!Y1%LI-%{7p?;U!}|91I`MxLsD_KT9IKbdB(|Ly<74fizzepS>vSDdn&d`R}2 zK{Z2hf%8I;`^pjSV?YF3I!ltB!Pyf5OiL^qcQi0EPFo+lWb^;Kw$&Ve&)w@=sWtKb z59=xa&+jWfdpYZKKpK08#qPt)3+%o>XS%~DP-)j*+Iwm4z04*)fzm^Kp4YEG*WBIV XbhX>s9S literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_6.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_6.mat new file mode 100644 index 0000000000000000000000000000000000000000..ccf7765766947433eed9df51e425ac14996f698c GIT binary patch literal 492 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA(i{atV<56JHMKG}RWLFzG*ciJFu(w#r!PN{T@Az)a~>xrB)niqGE;cga7p0+ z*VAG~LuHZXCql(sMnb%j5*Ceb7!>TvqfV|fd~&;P^U>G;MOOd0@jo@IHvV+;^52rb zzSUaUZ%o*KP&twR>ht`!Pv_{L-goog*?%6778$QurvJvA<@@sZ_m=7RH-AvQzx~DX z--*u{7-nxVcnESr6+tKTNV7c|PA*lvhdJ##4i)H(6rwK>m^O8x(}O+Jl} zLF}!bGsp$;a2I4C1%fe?q4>wJi1HFkzGLTvs_j@0fHFR)W)O5cqGI=Z5cB(i{atV<56JwX`xaQ7|$vG*ciJFu(w#r!PN{oe#tna~>xrBxEoonJGMLxTJ7^ z>uE8Qp|VKx6QN=*BOzYJM{*8t1k}GxEIzsDFVp=+#g#Sv@4s7?N1a^vvAOoZG3UF zzirLrykbh8J^t76H@rVqqjJCeGCqdRPJ<&L>q6kxtw8dnF_WSCjIo0uD~s zRiA8s6J@=LWcK8Z2 zgToRf4vatcKU?-U32&Z Y_BAyBW$jKrZP(>+R8^Ki>XOhT0Ohfnj{pDw literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_9.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_9.mat new file mode 100644 index 0000000000000000000000000000000000000000..f04cf520fbcba27e5e6ce0f80d0195c20bf02b73 GIT binary patch literal 370 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA^L6I;XMfpmoLzM&_}b%De}Ig&g&W&}`K@OiL^qBbpf*RZ3!=>a_oDX}>Us WZ@NhD>+C!(ONSqm_!xMYdE5YtIDdTr literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_edgegait.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_edgegait.mat new file mode 100644 index 0000000000000000000000000000000000000000..a44c9eed009085090bd216db4c1ca3d51b2a433c GIT binary patch literal 449 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXACd%w(u6()>iIn9E3rSMiaYgU!QvFMMk6n}2f^T7CW9_SAwO#j_);)|&~>xppz6 zVujwhCkmUxZ)?zO^*2Zt&Jljw< zpkiuS;^pLH%wo3T>+eoawqO8S>%3EaJ;>S+xV0;gJZa2is6HbtMWb<(t%QJs({>TqiE1pvd*{s!lpHWHgNx-g}@2Bt9yDt1RiH~9Na>?HS DXjrCt literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_mudskipper_curved.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_mudskipper_curved.mat new file mode 100644 index 0000000000000000000000000000000000000000..3f15f2afb96fbe282e8d9cd0e3293a2319ec803c GIT binary patch literal 335 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA1>%Z1kCPJ;I2e-56rMF) zQaHf%)R@^&S)}=iP%)R05U-?!MPm-9g58CO>kUfJmHa+B*)IRphx(-b-(PLyR(QG&n)kYT!TmwiBX g8Iz&$jIXvn>%SRPsK5;|Kz0R_q412f6b;7BGY>Q|h(Bex F2LQLkSmOWy literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_optimalgait_serpenoid_varfreq.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_optimalgait_serpenoid_varfreq.m new file mode 100644 index 0000000..3feef66 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_optimalgait_serpenoid_varfreq.m @@ -0,0 +1,84 @@ +function output = shchf_optimalgait_serpenoid_varfreq(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'optimalgait_serpenoid_varfreq'; + + + switch input_mode + + case 'name' + + output = 'serpenoid_varfreq'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) && alpha3(1)==alpha3(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + spline_alpha3 = csape(t,alpha3',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:)),fnval(spline_alpha3,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + spline_dalpha3 = fnder(spline_alpha3); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:)),fnval(spline_dalpha3,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_.m new file mode 100644 index 0000000..de9ba6d --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_.m @@ -0,0 +1,82 @@ +function output = shchf_params_(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_'; + + + switch input_mode + + case 'name' + + output = 'params_'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_10.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_10.m new file mode 100644 index 0000000..d0117df --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_10.m @@ -0,0 +1,82 @@ +function output = shchf_params_10(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_10'; + + + switch input_mode + + case 'name' + + output = 'params_10'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_11.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_11.m new file mode 100644 index 0000000..700bba1 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_11.m @@ -0,0 +1,98 @@ +function output = shchf_params_11(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_11'; + + + switch input_mode + + case 'name' + + output = 'params_11'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_12.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_12.m new file mode 100644 index 0000000..91f2517 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_12.m @@ -0,0 +1,98 @@ +function output = shchf_params_12(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_12'; + + + switch input_mode + + case 'name' + + output = 'params_12'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_13.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_13.m new file mode 100644 index 0000000..8d16a8d --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_13.m @@ -0,0 +1,98 @@ +function output = shchf_params_13(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_13'; + + + switch input_mode + + case 'name' + + output = 'params_13'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_6.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_6.m new file mode 100644 index 0000000..16424b4 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_6.m @@ -0,0 +1,82 @@ +function output = shchf_params_6(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_6'; + + + switch input_mode + + case 'name' + + output = 'params_6'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_7.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_7.m new file mode 100644 index 0000000..1f999dd --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_7.m @@ -0,0 +1,84 @@ +function output = shchf_params_7(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_7'; + + + switch input_mode + + case 'name' + + output = 'params_7'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t_val) [interp1(t,alpha1,t_val,'spline'), interp1(t,alpha2,t_val,'spline')]; + %p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + + %p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_8.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_8.m new file mode 100644 index 0000000..7694c40 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_8.m @@ -0,0 +1,82 @@ +function output = shchf_params_8(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_8'; + + + switch input_mode + + case 'name' + + output = 'params_8'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_9.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_9.m new file mode 100644 index 0000000..50e25d2 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_9.m @@ -0,0 +1,82 @@ +function output = shchf_params_9(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_9'; + + + switch input_mode + + case 'name' + + output = 'params_9'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_edgegait.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_edgegait.m new file mode 100644 index 0000000..839008c --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_edgegait.m @@ -0,0 +1,98 @@ +function output = shchf_params_edgegait(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_edgegait'; + + + switch input_mode + + case 'name' + + output = 'params_edgegait'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_curved.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_curved.m new file mode 100644 index 0000000..788ba6d --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_curved.m @@ -0,0 +1,82 @@ +function output = shchf_params_mudskipper_curved(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_mudskipper_curved'; + + + switch input_mode + + case 'name' + + output = 'params_mudskipper_curved'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_direct.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_direct.m new file mode 100644 index 0000000..8e07ffa --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_mudskipper_direct.m @@ -0,0 +1,82 @@ +function output = shchf_params_mudskipper_direct(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_mudskipper_direct'; + + + switch input_mode + + case 'name' + + output = 'params_mudskipper_direct'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + spline_alpha1 = csape(t,alpha1',splinemode); + spline_alpha2 = csape(t,alpha2',splinemode); + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [fnval(spline_alpha1,t(:)),fnval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = fnder(spline_alpha1); + spline_dalpha2 = fnder(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [fnval(spline_dalpha1,t(:)),fnval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m new file mode 100644 index 0000000..64ef4b1 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m @@ -0,0 +1,61 @@ +function output = shchf_serpenoid_varfreq_test1(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + switch input_mode + + case 'name' + + output = 'Serpenoid varfreq test 1'; + + case 'dependency' + + output.dependency = {}; + + case 'initialize' + + %%%% + % Filename to save to + + %% + %Path definitions + + %path definition + p.phi_def{1} = {@strokedef}; + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows{1} = {2}; + + %time to run path + p.time_def{1} = {[0 1]}; + + %p.cBVI_method{1}{1} = 'simple'; + + %path resolution + p.phi_res{1} = {100}; + + + %%%% + %Output the path properties + output = p; + end + +end + +function [stroke] = strokedef(t) + + t = t(:)'; + + stroke = [6*ones(size(t)); + 8*ones(size(t)); + .5 + 2*t].'; + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test2.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test2.m new file mode 100644 index 0000000..7df56d7 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test2.m @@ -0,0 +1,61 @@ +function output = shchf_serpenoid_varfreq_test2(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + switch input_mode + + case 'name' + + output = 'Serpenoid varfreq test 2'; + + case 'dependency' + + output.dependency = {}; + + case 'initialize' + + %%%% + % Filename to save to + + %% + %Path definitions + + %path definition + p.phi_def{1} = {@strokedef}; + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows{1} = {2}; + + %time to run path + p.time_def{1} = {[0 1]}; + + %p.cBVI_method{1}{1} = 'simple'; + + %path resolution + p.phi_res{1} = {100}; + + + %%%% + %Output the path properties + output = p; + end + +end + +function [stroke] = strokedef(t) + + t = t(:)'; + + stroke = [zeros(size(t)); + 6*ones(size(t)); + .5 + 2*t].'; + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/Ross_vector_fields_00.mat b/UserFiles/v4/rlhatton/Systems/Ross_vector_fields_00.mat new file mode 100644 index 0000000000000000000000000000000000000000..f7dda834e0ba27b83ca7c02fcdf16c514ba5db7b GIT binary patch literal 1547 zcma)*dpOez7{}>iF-k(EX+M{#? zjws`ZvpB2~;E4+*M&M(jZNGQUZU-%m0OuHNC=nYD;D50NP-o(R<8e3uVF@72Y|Sie zEiC|ZGsHpQ|04Gf@@~j&-{-*ZxsdlEEF@&OqpQ7Lp~PkvV7aBnNu1}&+LFB8lLXqa z5mKT#?Y~LeK4cr+bl83JS+dl(MRCHRrsMirRm( zgiZ?}^YDUsyks`aMb)L+z;O~%YVy_LU2$T0WWV;=y){Gz9B5|K5WFoOE(qv z@PtAyLhbcEZ(|kuvg;K^*)p(e^V-L<6h=*~V7rIQQivU{v~w)z+U0shhuqsY=Mov# z=gP$2eD2FpU{1zbr;mar&WzmrN*=PmzM@IHJf*ExKK}ShpK1D+TipWy?ORcs2i@E+ zrN;b}ltW{u?Yy{BHv%6`54rTou;a<{47LyrlpF7d+qohS(pV1@ZF^i#Apmn+3FPuL7xL=X{ zzdvJdd#C5!T! zVpkF|7nd=E%WjaH`g`nS&+~CzY<=FK0kFu8prAMYwocV1O%uFB9 z5Ye@WJ@VJf$YJ#{D9h8tS0jInh<{f4Wsvni?tP>CR$dH)^WlSUgI)@is zY!p_IA#)$HkbvWixp+ZV{pR~NoHTx9nsk;AMUl?;aN58ksJ&hu+_RoUsceu&k844OqmOTKE2xdAci41@x*O>dmFD|J;u7Nw+lMBV%-!c zglPxX3iMc{*Ii8TN*!{&p4W8d^%|M(-!sCtSg9rsX`JmGFDQgw3T`RnGup}p2%p!mNU+kz2L`i+?B}$`?1sp;MG|c8S-@!t5^7-7`;zBoHm3MSu77C3 F>@Pl&^+Esu literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Systems/Ross_vector_fields_20.mat b/UserFiles/v4/rlhatton/Systems/Ross_vector_fields_20.mat new file mode 100644 index 0000000000000000000000000000000000000000..d8b6b00a011e0b0a24539b6e609f920a145d8800 GIT binary patch literal 1663 zcma)*c~BAv8^&$hJZjBNH#1M%%DyD^c5ZKz8{cq=+@0odLo_YTH%{%ivLEhn~y?p>K zV0%E2cQ`0D9iDO&0D~vyq#}@+?jN&L0j|zR0jH2Di8(3B07RBMz!#Yg2t>gF4lV!( zM|XQ?cNb@XqrHPG;Qy7@KiU=$Wbo0)d^}7I|GR_)PH$gNkM;vM6M(aBtIuW)Y*e>! z4=h*5XuJ6Xy}E}8JsltF+}zT+S)62=G!MP` z=doKb=Hn;wucp34=ieuQV`)l(h#r5W-de2;aM0HZu-kR^6NviRr)NN;`bR6andrQO z>{AdL&!WM$Qk3FYLssU@#DWD=0Sg_ROy9J1LV*tErq-UZ>8xN0wXw~96CX3EVU#9Ls1vElw3Vm~-_ zT!H93j(3&DTp4{qh+&(Qjt3{zx<=?2*Ctzjad4upd^AsRDsd{VfuDQz8)xaewJP$# zirp<$P;Tj$&Ah`qjUT-RM&@I$#d{3f!@2MA{kIWE7Q6SmV@{~tx*bXwD+Wf4Dx-+< z=(ZDx>;v~J1bIH4I}6s{=mIsEE00(0S3W#{+h3OFuqXFH=N_T2;7UTFtMkr1IgzOtg^`i zu6~}!9(i4y(JeYRvFD-Sa)o$C+P)lBGIzqX7d-*^k&n6Hc(t%vqFv1lTTEzP;>Cnp zyxHBmu}9$t1zjVcLy$ z>Vvjz;I-2Gsydg8%$$tJH>vsu5TFb)tASvNobn*Nu7TOjKfPAui#_z50=;fE?}(r& zjyO&VJ^fH&{ECZ{>4$8=E+L@EoD`QsO7>f?;j1+qYP}q*`bOReN_c+<9LSj~EXJn$p9?whndnA&<`J6Sw7-bE zwlVZUXQB@>^r^%tf0vm5uZtY)VZiPX&GnMdS}gkPtjs1UQc>_oqHO{~+P{@p@R-UB z=w>B}kU2|-j*HXFSVby!+(U+h{bYW{VGaJePpeW*BYO)k-{WnSLGcc%BBcmM=I{=E23X#TtVzQ*$-H_j#c9K+e5gh!(vu z?M@p~H$67swKMmLG>okV7z52#k3+-@cxJ;G<=K77@T}?(5Ij~5?9TF9F!rM*bmrc0n~*)?ES`Rg+bu4LwNgDq`Sxt@iLj?Tsi3pzg3rZ%0-UaDuG_9t;@8hq#M zldI)nvb)k1|DlNURC;NtI12gdzbYpJ7QKQ2aewdE5C=jo_o^>mvIK8({#4Fcbc9f4 zU1(fSfAh|t-M(g%V)f#A^7X3F>ANVbP_1ey80DI_V{p}t-$!h*cPQm=^UOb#<;&EH zVY7AA;W5qv1dodI;Vi4LauMxUc|A(=J^g)%f@~&JW`WYfazq@B<|W^-dGdwI%q|H1 z+=R}qd312elwthrb4~x#$m`pijYV|g9WPL09h!c2#lWnxr%NT?ioNv3 Y&1n0j+Vcuh2~auRM^I_e7J*KG0jdm5l>h($ literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Systems/constrained_high_adduction_20.mat b/UserFiles/v4/rlhatton/Systems/constrained_high_adduction_20.mat new file mode 100644 index 0000000000000000000000000000000000000000..8a795896be5629669e737a4196e3392b4eeb347d GIT binary patch literal 59149 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 NH#gS;>a!&S3jrf9X}SOa delta 737 zcmV<70v`RU2(So{GZ;p4X&^yxav(A?ATc#MF*Z6hHy|=FF*cD=BavVRe*$irJ1M8a9XUcQ z0(=@XCiKZkgkvmNoGBqg_bCY$hni4N_>7`4rh|Z_`=3C*zq4Zhe^z1trp9hJiUQxm zii^9)-H-3OFVTmC_WrZeJsd?TZ@YrmD)Cz2YCSgf>uA3(_GUWnXxuO8lIa8@iON|r z^n>!mIg8JDguTV=xi7{(MQS06uo#1mt4iO8hQ12(;p28^7wS3~SJD^Se;f9N+Zyjeu`lEeA@2lI zQ>h~!&GmX-5#KhH^-?&kZTV?gr=A;zzrx&O5gFuB{)_eey%3MJA|4ycd4JtHHVuC@ z%;3#@+gia>%o|(3nRT&jo}oW=XGHs!Bg|2w}{>w5jn`)KL&U2dpbO=IPA0gz-m6~7~^_OC(tUiEiG+Uy6E TZ1&=+`F;c9{RI}Y9|H>k!3$}2 diff --git a/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.m b/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.m new file mode 100644 index 0000000..995c71b --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.m @@ -0,0 +1,112 @@ +function output = sysf_float_snake_generated(input_mode,datapath) + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'name'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Floatsnake generated'; % Display name + + case 'dependency' + + output.dependency = {'floatsnake_connection'}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + %Functional representation of local connection + s.A_num = @Conn_num; + s.A_den = @Conn_den; + + %%% + %Processing details + + %Mark that system does not have a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [-1,1,-1,1]*3; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [31 31]; %density to display scalar functions + s.density.eval = [31 31]; %density for function evaluations + s.finite_element_density = 31; + + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*1.5; + s.tic_locs.y = [-1 0 1]*1.5; + + + %%%% + %Save the system properties + save(fullfile(datapath, mfilename),'s') + + %%%% + %Output the system properties + output = s; + + end + +end + +function [Ar]=Conn_num(a1,a2) + + + Ar_cell = cell(size(a1)); + for i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i)); + waitbar2a(i/numel(a1)); + end + + + %Pull Ar values into a matrix + Ar_woven = cell2mat(Ar_cell); + + %Rearrange the A matrix + Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); + Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); + Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; + +end + +function A = A_num_helper(a1,a2) + +% % Add the path to the curvature functions +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) + % Get the local connection for the specified shape, with unit length + A = floatsnake_connection(a1,a2); + + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.mat b/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated.mat new file mode 100644 index 0000000000000000000000000000000000000000..6220007f80d295a3bc0131f56fadd1fc19d95f14 GIT binary patch literal 671 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXA-iDpcyX+t!cYC3T zlIvatf$1@pS6Lg6^h#;HU|iC5sB-I8^LJfe*FC-K@0#iuKtPKO|j{*>t)5w zFWfV_s4?&2pSpi;Cs`QEjx$(4i(bvIy)!xYeUR;hsr4-UYv1p_#__R|En8?|%ZJkK zOKj#E#{`7#dbec(rM)ojxGq3;X-3bCj;B@O%ED{yo6^qj z)&8FIXg}-qgG;~lubOqt?#ishqaPv_TQ<#}EF&J#xya3_-_J5}y7$@2H7g#xkonv) zan*lLlfUk^f0z6Hx6N)3oM$YR9PHgDzsUdn;_ELSZ*E?$f9_l1yzo+fwpUeacgeMg z_4|J2%e}X8zhvL{wSSKsWObOjbLsIOqu)ymuUb4RX}x~B@n_k>-sv0fbDZOCRsXj4 zuWtRNljhrcT>U1co$4}YE)7`TxAE}#Ng_r%H!Q=vK78;vQtbTxmu%a6KmS!TwpUe3 z>diA>xO{1d%H)MQPkGMHIKbuEw_jk2ke|tOk4^K}{&;`p>DMz)ooE05-~C*mUcUTO zZ|zs1voW`=@7*iZfB(h*;J3c~4}H4xwwE5)<1epzwX5dS+u-u~`}RznEFSTH{e8!! zYW1A6KmJ&^RX!tj!VQ`IJsbZ?Gp97({QAA{e)oF&#~=4U^J!}RLpDK m>U%D{Vbigf6$|PgT-mw&tKgMQdm5(c#NRF1YrpjXcO(E}@-=b* literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.m b/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.m new file mode 100644 index 0000000..8ace52a --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.m @@ -0,0 +1,112 @@ +function output = sysf_float_snake_generated_elie(input_mode,datapath) + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'name'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Floatsnake generated Elie'; % Display name + + case 'dependency' + + output.dependency = {'floatsnake_connection'}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + %Functional representation of local connection + s.A_num = @Conn_num; + s.A_den = @Conn_den; + + %%% + %Processing details + + %Mark that system does not have a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [-1,1,-1,1]*3; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [31 31]; %density to display scalar functions + s.density.eval = [31 31]; %density for function evaluations + s.finite_element_density = 31; + + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*1.5; + s.tic_locs.y = [-1 0 1]*1.5; + + + %%%% + %Save the system properties + save(fullfile(datapath, mfilename),'s') + + %%%% + %Output the system properties + output = s; + + end + +end + +function [Ar]=Conn_num(a1,a2) + + + Ar_cell = cell(size(a1)); + for i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i)); + waitbar2a(i/numel(a1)); + end + + + %Pull Ar values into a matrix + Ar_woven = cell2mat(Ar_cell); + + %Rearrange the A matrix + Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); + Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); + Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; + +end + +function A = A_num_helper(a1,a2) + +% % Add the path to the curvature functions +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) + % Get the local connection for the specified shape, with unit length + A = floatsnake_connection_elie(a1,a2); + + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.mat b/UserFiles/v4/rlhatton/Systems/sysf_float_snake_generated_elie.mat new file mode 100644 index 0000000000000000000000000000000000000000..2c37a10363845a3bd0aaf41cdfae6b32d6519fda GIT binary patch literal 675 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXASaj8e16~Ss5EB7#SFvDG&=7V1UunmmkQMW@2EdnDaL5Y~E!D0lC`? zMU-6kDpZ}G8XPO&ac2c1Bl`p;uIE>;&D)`EwtHH+@YVc7Q`H-l`wu2RX-c>rd)?mC zQ1i*OPPdP1()P{#S$6Cs2LoR_L-n)j`z!dT7oEO&Z)(+oQ=b{{l&8n{xVfB3-=HMu z8L&o9TkVqNa?8uEpDoTtIu&UJZGkD77h5)#@O*Yo{roBpaMASvqikrzE#e&>rcx4xD!o)xV7xr;N{O8CV3S+lw$j5SYK zigF$|`p@#}PqXRI_jN-Lrqp{#bGSCco4kh8If3j}24r*h>2G_M7Z|@;cMM_Vy`kibghuqS(7xUhX|{_P*>69GBIxNyeZn|{&d!@U;9j7eZF?(xpOuD zzp2+}pDFY=-d%g|?dPw>>2*S7zxTA(mhH*QoG|5fChw1$&wuzKt?=>3vd6pj^vBlQ rn?2Dj*w(v~K|^cay)RGrr7X&OE{2v-=(>42%iK1Ff=w< literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_piecewise_2modes.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_piecewise_2modes.m new file mode 100644 index 0000000..f0e18dc --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_piecewise_2modes.m @@ -0,0 +1,120 @@ +function output = sysf_honey_swimmer_piecewise_2modes(input_mode) + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Low Re piecewise continuous two modes'; % Display name + + case 'dependency' + + output.dependency = {'Utilities/curvature_mode_toolbox/backbone_from_curvature_bases.m', + 'Utilities/curvature_mode_toolbox/curvatures/constant_curvature_1.m', + 'Utilities/curvature_mode_toolbox/curvatures/constant_curvature_2.m', + 'Utilities/LowRE_toolbox/LowRE_dissipation_metric_from_curvature_bases.m', + 'Utilities/LowRE_toolbox/LowRE_local_connection_from_curvature_bases.m'}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + s.A_num = @Conn_num; + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [-1,1,-1,1]*12; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [21 21]; %density to display scalar functions + s.density.eval = [21 21]; %density for function evaluations + s.finite_element_density = 11; + % power metric + s.metric = @(x,y) LowRE_dissipation_metric_from_curvature_bases... + ({@(s) constant_curvature_1(s);@(s) constant_curvature_2(s)},[x;y],1,1,2); % @(x,y) eye(2);% + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*6; + s.tic_locs.y = [-1 0 1]*6; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2) + + + %Apply the inverse multiplication + wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); + Ar_cell = cell(size(a1)); + for i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i)); + waitbar2a(i/numel(a1)); + end + + close(wb) + + %Ar_cell = arrayfun(@(a1,a2) A_num_helper(a1,a2),a1,a2,'UniformOutput',false); + + %Pull Ar values into a matrix + Ar_woven = cell2mat(Ar_cell); + + %Rearrange the A matrix + Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); + Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); + Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; + +end + +function A = A_num_helper(a1,a2) + +% % Add the path to the curvature functions +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) + % Get the local connection for the specified shape, with unit length + A = LowRE_local_connection_from_curvature_bases({@(s) constant_curvature_1(s);@(s) constant_curvature_2(s)},[a1;a2],1,1,2); + + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid.m index 8b7190b..e55a732 100644 --- a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid.m +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid.m @@ -83,7 +83,7 @@ %Apply the inverse multiplication wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); Ar_cell = cell(size(a1)); - for i = 1:numel(a1); + parfor i = 1:numel(a1); Ar_cell{i} = A_num_helper(a1(i),a2(i)); waitbar2a(i/numel(a1)); end diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_general.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_general.m new file mode 100644 index 0000000..8be0d65 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_general.m @@ -0,0 +1,128 @@ +function output = sysf_honey_swimmer_serpenoid_general(input_mode) + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Low Re Serpenoid first modes generalized curvature'; % Display name + + case 'dependency' + + output.dependency = {'Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m'; + 'Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit'; + 'Utilities/LowRE_toolbox/LowRE_dissipation_metric_from_general_curvature.m'; + 'Utilities/LowRE_toolbox/LowRE_local_connection_from_general_curvature.m'}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + s.A_num = @Conn_num; + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [-1,1,-1,1]*12; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [21 21]; %density to display scalar functions + s.density.eval = [21 21]; %density for function evaluations + s.finite_element_density = 11; + % power metric + s.metric = @(x,y) LowRE_dissipation_metric_from_general_curvature... + (@curvelock,[x;y],1,1,2); % @(x,y) eye(2);% + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*6; + s.tic_locs.y = [-1 0 1]*6; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2) + + + %Apply the inverse multiplication + wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); + Ar_cell = cell(size(a1)); + parfor i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i)); + waitbar2a(i/numel(a1)); + end + + close(wb) + + %Ar_cell = arrayfun(@(a1,a2) A_num_helper(a1,a2),a1,a2,'UniformOutput',false); + + %Pull Ar values into a matrix + Ar_woven = cell2mat(Ar_cell); + + %Rearrange the A matrix + Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); + Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); + Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; + +end + +function A = A_num_helper(a1,a2) + +% % Add the path to the curvature functions +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) + % Get the local connection for the specified shape, with unit length + A = LowRE_local_connection_from_general_curvature(@curvelock,[a1;a2],1,1,2); + + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end + + +function output = curvelock(s,params,mode) + +% lock the variable frequency serpenoid curvature to frequency 1 + + output = curv_serpenoid_unit(s,params,mode); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m new file mode 100644 index 0000000..3584c43 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m @@ -0,0 +1,128 @@ +function output = sysf_honey_swimmer_serpenoid_varfreq(input_mode) + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Low Re Serpenoid first modes variable frequency'; % Display name + + case 'dependency' + + output.dependency = {'Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m'; + 'Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq'; + 'Utilities/LowRE_toolbox/LowRE_dissipation_metric_from_general_curvature.m'; + 'Utilities/LowRE_toolbox/LowRE_local_connection_from_general_curvature.m'}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + s.A_num = @Conn_num; + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [[-1,1,-1,1]*12,[.1 3]]; + + %densities for various operations + s.density.vector = [1,1,1]*11; %density to display vector field + s.density.scalar = [1,1,1]*11; %density to display scalar functions + s.density.eval = [1,1,1]*11;%[21 21 21]; %density for function evaluations + s.finite_element_density = 11;%11; + % power metric + s.metric = @(x,y,z) LowRE_dissipation_metric_from_general_curvature... + (@curv_serpenoid_varfreq,[x;y;z],1,1,2); % @(x,y) eye(2);% + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*6; + s.tic_locs.y = [-1 0 1]*6; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2,a3) + + + for i = 1:nargin + sizea1(i) = size(a1,i); + end + + + + %Apply the inverse multiplication + wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); + Ar_cell = cell(sizea1(1),sizea1(2),sizea1(3)); + for i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i),a3(i)); + waitbar2a(i/numel(a1)); + end + + close(wb) + + Ar1=cell(3); + for i=1:1:9 + for j=1:sizea1(3) + for k=1:sizea1(2) + for l=1:sizea1(1) + Ar1{i}(l,k,j)=Ar_cell{l,k,j}(i); + end + end + end + end + + Ar=cell2mat(Ar1); + +end + +function A = A_num_helper(a1,a2,a3) + +% % Add the path to the curvature functions +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) + % Get the local connection for the specified shape, with unit length + A = LowRE_local_connection_from_general_curvature(@curv_serpenoid_varfreq,[a1;a2;a3],1,1,2); + + +end + +function A_den = Conn_den(a1,a2,a3) %#ok + + A_den = repmat(ones(size(a1)),[3,3]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_mudskipper.m b/UserFiles/v4/rlhatton/Systems/sysf_mudskipper.m new file mode 100644 index 0000000..e40038a --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_mudskipper.m @@ -0,0 +1,144 @@ +function output = sysf_mudskipper(input_mode) +% This file is an example of how to load the local connection as a data +% file, instead of generating it programmatically. + + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + + % File name where local connection is stored. This should be a file + % with: + % + % alpha1 and alpha2: ndgrid matrices (*not* meshgrid matrices) + % Ax1 through Atheta2: each component of the local connection, + % evaluated at all grid points + Local_connection = 'constrained_high_adduction_20'; + + % File name where power-usage data is stored + %Metric = 'Granular_Metric_Tensor.mat'; %Uncomment this line if loading a metric tensor + + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Mud Skipper'; % Display name + + case 'dependency' + + output.dependency = {Local_connection}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + % Load the connection and metric data + load(Local_connection,'A','alpha1','alpha2') + %load(Metric) + + %Functional representation of local connection + s.A_num = @(a1,a2) Conn_num(a1,a2,alpha1',alpha2',A{1}',A{4}',A{2}',A{5}',A{3}',A{6}'); + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [0,1,0,1.5]; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [21 21]; %density to display scalar functions + s.density.eval = [11 11]; %density for function evaluations + s.finite_element_density = 11; + s.density.metriceval = [11 11]; %density for metric evaluation + + % power metric + %s.metric = eye(2); %@(x,y) Granular_metric_calc(x,y,Metric_Tensor_raw,alpha1,alpha2); + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [0 1]; + s.tic_locs.y = [0 1.5]; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2,alpha1,alpha2,Ax1,Ax2,Ay1,Ay2,Atheta1,Atheta2) +% This function takes the components of the connection and arranges them +% into the internal structure used by the sysplotter back-end code. +% +% To improve the quality of the results, natural symmetries in the geometry +% of the system can be exploited to average the connection terms that +% should be the same as each other. +% +% There are three options for doing this, depending on the kind of symmetry +% expected in the data: +% +% 3link: If the system has three links with equal first and last links +% EvenOdd: If the system shape variables are for even and odd modes +% None: Don't average the connection across any points, and display exactly +% the data in the .mat file + +% Select averaging mode +% averaging_mode = '3link'; +% averaging_mode = 'EvenOdd'; + averaging_mode = 'None'; + + +Ar = four_way_symmetry(alpha1, alpha2, Ax1, Ax2, Ay1, Ay2, Atheta1,Atheta2, a1, a2, 1/3, averaging_mode); + +% else +% Ar_cell = A_num_helper(a1,a2); +% +% %Pull Ar values into a matrix +% Ar_woven = cell2mat(Ar_cell); +% +% %Rearrange the A matrix +% Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); +% Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); +% Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; +% +% end + +end + +function A = A_num_helper(a1,a2) + + + % Get the local connection for the specified shape, with unit length + + A = feval(@Main_Granular_Swimmer,a2, a1); + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_mudskipper_00.m b/UserFiles/v4/rlhatton/Systems/sysf_mudskipper_00.m new file mode 100644 index 0000000..e6cfca0 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_mudskipper_00.m @@ -0,0 +1,144 @@ +function output = sysf_mudskipper_00(input_mode) +% This file is an example of how to load the local connection as a data +% file, instead of generating it programmatically. + + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + + % File name where local connection is stored. This should be a file + % with: + % + % alpha1 and alpha2: ndgrid matrices (*not* meshgrid matrices) + % Ax1 through Atheta2: each component of the local connection, + % evaluated at all grid points + Local_connection = 'Ross_vector_fields_00'; + + % File name where power-usage data is stored + %Metric = 'Granular_Metric_Tensor.mat'; %Uncomment this line if loading a metric tensor + + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Mud Skipper 00'; % Display name + + case 'dependency' + + output.dependency = {Local_connection}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + % Load the connection and metric data + load(Local_connection,'X','Y','vecX','vecY') + %load(Metric) + + %Functional representation of local connection + s.A_num = @(a1,a2) Conn_num(a1,a2,X,Y,vecX,vecY,zeros(size(X)),zeros(size(X)),zeros(size(X)),zeros(size(X))); + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [.1,1,0,1.5]; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [21 21]; %density to display scalar functions + s.density.eval = [11 11]; %density for function evaluations + s.finite_element_density = 11; + s.density.metriceval = [11 11]; %density for metric evaluation + + % power metric + %s.metric = eye(2); %@(x,y) Granular_metric_calc(x,y,Metric_Tensor_raw,alpha1,alpha2); + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [0 1]; + s.tic_locs.y = [0 1.5]; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2,alpha1,alpha2,Ax1,Ax2,Ay1,Ay2,Atheta1,Atheta2) +% This function takes the components of the connection and arranges them +% into the internal structure used by the sysplotter back-end code. +% +% To improve the quality of the results, natural symmetries in the geometry +% of the system can be exploited to average the connection terms that +% should be the same as each other. +% +% There are three options for doing this, depending on the kind of symmetry +% expected in the data: +% +% 3link: If the system has three links with equal first and last links +% EvenOdd: If the system shape variables are for even and odd modes +% None: Don't average the connection across any points, and display exactly +% the data in the .mat file + +% Select averaging mode +% averaging_mode = '3link'; +% averaging_mode = 'EvenOdd'; + averaging_mode = 'None'; + + +Ar = four_way_symmetry(alpha1, alpha2, Ax1, Ax2, Ay1, Ay2, Atheta1,Atheta2, a1, a2, 1/3, averaging_mode); + +% else +% Ar_cell = A_num_helper(a1,a2); +% +% %Pull Ar values into a matrix +% Ar_woven = cell2mat(Ar_cell); +% +% %Rearrange the A matrix +% Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); +% Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); +% Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; +% +% end + +end + +function A = A_num_helper(a1,a2) + + + % Get the local connection for the specified shape, with unit length + + A = feval(@Main_Granular_Swimmer,a2, a1); + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_mudskipper_20.m b/UserFiles/v4/rlhatton/Systems/sysf_mudskipper_20.m new file mode 100644 index 0000000..1cab12f --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_mudskipper_20.m @@ -0,0 +1,144 @@ +function output = sysf_mudskipper_20(input_mode) +% This file is an example of how to load the local connection as a data +% file, instead of generating it programmatically. + + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + + % File name where local connection is stored. This should be a file + % with: + % + % alpha1 and alpha2: ndgrid matrices (*not* meshgrid matrices) + % Ax1 through Atheta2: each component of the local connection, + % evaluated at all grid points + Local_connection = 'Ross_vector_fields_20'; + + % File name where power-usage data is stored + %Metric = 'Granular_Metric_Tensor.mat'; %Uncomment this line if loading a metric tensor + + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Mud Skipper 20'; % Display name + + case 'dependency' + + output.dependency = {Local_connection}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + % Load the connection and metric data + load(Local_connection,'X','Y','vecX','vecY') + %load(Metric) + + %Functional representation of local connection + s.A_num = @(a1,a2) Conn_num(a1,a2,X,Y,vecX,vecY,zeros(size(X)),zeros(size(X)),zeros(size(X)),zeros(size(X))); + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [0.1,1,0,1.5]; + + %densities for various operations + s.density.vector = [11 11]; %density to display vector field + s.density.scalar = [21 21]; %density to display scalar functions + s.density.eval = [11 11]; %density for function evaluations + s.finite_element_density = 11; + s.density.metriceval = [11 11]; %density for metric evaluation + + % power metric + %s.metric = eye(2); %@(x,y) Granular_metric_calc(x,y,Metric_Tensor_raw,alpha1,alpha2); + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [0 1]; + s.tic_locs.y = [0 1.5]; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2,alpha1,alpha2,Ax1,Ax2,Ay1,Ay2,Atheta1,Atheta2) +% This function takes the components of the connection and arranges them +% into the internal structure used by the sysplotter back-end code. +% +% To improve the quality of the results, natural symmetries in the geometry +% of the system can be exploited to average the connection terms that +% should be the same as each other. +% +% There are three options for doing this, depending on the kind of symmetry +% expected in the data: +% +% 3link: If the system has three links with equal first and last links +% EvenOdd: If the system shape variables are for even and odd modes +% None: Don't average the connection across any points, and display exactly +% the data in the .mat file + +% Select averaging mode +% averaging_mode = '3link'; +% averaging_mode = 'EvenOdd'; + averaging_mode = 'None'; + + +Ar = four_way_symmetry(alpha1, alpha2, Ax1, Ax2, Ay1, Ay2, Atheta1,Atheta2, a1, a2, 1/3, averaging_mode); + +% else +% Ar_cell = A_num_helper(a1,a2); +% +% %Pull Ar values into a matrix +% Ar_woven = cell2mat(Ar_cell); +% +% %Rearrange the A matrix +% Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); +% Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); +% Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; +% +% end + +end + +function A = A_num_helper(a1,a2) + + + % Get the local connection for the specified shape, with unit length + + A = feval(@Main_Granular_Swimmer,a2, a1); + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end \ No newline at end of file From 8e3246b9095900f628b50594911463cae306e839 Mon Sep 17 00:00:00 2001 From: rlhatton Date: Tue, 25 Oct 2016 17:43:26 -0700 Subject: [PATCH 6/6] Added files for general curvature calculations --- ..._dissipation_metric_from_curvature_bases.m | 2 +- ...issipation_metric_from_general_curvature.m | 4 +- ..._local_connection_from_general_curvature.m | 2 +- .../backbone_from_general_curvature.m | 5 +- .../backbone_from_general_curvature.m~ | 88 ------ .../curvatures/curv_serpenoid_unit.m | 37 --- .../curvatures/curv_serpenoid_varfreq.m | 42 --- .../illustrate_backbone_shapespace.m | 38 +++ .../curvature_mode_toolbox/make_curvdef.m | 293 +++++++++++++++++- .../make_curvdef_template.txt | 52 +++- .../pinched_sin_scale.m | 65 ++++ .../evaluate_displacement_and_cost.m | 12 +- ProgramFiles/v4.2/Utilities/inpaint_nans.m | 1 + ProgramFiles/v4.2/Utilities/inpaint_nans_bc.m | 1 + .../v4.2/sys_calcpath_fcns/vectorize_shch.m~ | 216 ------------- .../optimalgait_serpenoid_varfreq.mat | Bin 3214 -> 3089 bytes .../rlhatton/Shape_Changes/params_107demo.mat | Bin 0 -> 450 bytes ...rams_triangle_wavelength1_innercontour.mat | Bin 0 -> 404 bytes ...arams_triangle_wavelength1_zerocontour.mat | Bin 0 -> 430 bytes .../shchf_LowRe_serpeff_forvarfeq.m | 67 ++++ .../rlhatton/Shape_Changes/shchf_circle_6.m | 63 ++++ .../Shape_Changes/shchf_params_107demo.m | 98 ++++++ ...params_triangle_wavelength1_innercontour.m | 98 ++++++ ..._params_triangle_wavelength1_zerocontour.m | 98 ++++++ .../shchf_serpenoid_varfreq_test1.m | 6 +- .../Systems/curv_serpenoid_def_compare.m | 70 +++++ .../Systems/curv_serpenoid_def_test.m | 79 +++++ .../Systems/curv_serpenoid_var_sharpness.m | 82 +++++ .../curv_serpenoid_var_sharpness_symbolicd.m | 83 +++++ .../rlhatton/Systems/curv_serpenoid_varfreq.m | 80 +++++ .../v4/rlhatton/Systems/curv_triangle_wave.m | 85 +++++ ...sf_honey_swimmer_serpenoid_var_sharpness.m | 133 ++++++++ .../sysf_honey_swimmer_serpenoid_varfreq.m | 10 +- .../Systems/sysf_honey_swimmer_triangle.m | 139 +++++++++ 34 files changed, 1617 insertions(+), 432 deletions(-) delete mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ delete mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m delete mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/illustrate_backbone_shapespace.m create mode 100644 ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/pinched_sin_scale.m create mode 100755 ProgramFiles/v4.2/Utilities/inpaint_nans.m create mode 100755 ProgramFiles/v4.2/Utilities/inpaint_nans_bc.m delete mode 100644 ProgramFiles/v4.2/sys_calcpath_fcns/vectorize_shch.m~ create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_107demo.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_triangle_wavelength1_innercontour.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/params_triangle_wavelength1_zerocontour.mat create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_LowRe_serpeff_forvarfeq.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_circle_6.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_107demo.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_innercontour.m create mode 100644 UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_zerocontour.m create mode 100644 UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_compare.m create mode 100644 UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_test.m create mode 100644 UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness.m create mode 100644 UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness_symbolicd.m create mode 100644 UserFiles/v4/rlhatton/Systems/curv_serpenoid_varfreq.m create mode 100644 UserFiles/v4/rlhatton/Systems/curv_triangle_wave.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_var_sharpness.m create mode 100644 UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_triangle.m diff --git a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_curvature_bases.m b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_curvature_bases.m index a70b5f9..8198c1b 100644 --- a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_curvature_bases.m +++ b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_curvature_bases.m @@ -5,7 +5,7 @@ int_limit = L*[-0.5 0.5]; % Define the tangential, lateral drag matrix for unit/double drag - drag = [1 0; 0 2]*c; + drag = [1 0; 0 drag_ratio]*c; % Get the backbone locus, Jacobian, and Local Connection functions [A, h, J] = LowRE_local_connection_from_curvature_bases(kappa_basis_input,r,L,c,drag_ratio); diff --git a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m index 7eb5946..130edd3 100644 --- a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m +++ b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_dissipation_metric_from_general_curvature.m @@ -5,10 +5,10 @@ int_limit = L*[-0.5 0.5]; % Define the tangential, lateral drag matrix for unit/double drag - drag = [1 0; 0 2]*c; + drag = [1 0; 0 drag_ratio]*c; % Get the backbone locus, Jacobian, and Local Connection functions - [A, h, J] = LowRE_local_connection_from_general_curvature(curvdef,cparams,L,c,drag_ratio); + [A, h, J,Omega] = LowRE_local_connection_from_general_curvature(curvdef,cparams,L,c,drag_ratio); % Integrate along the body for the power metric Mp_sol = ode_multistart(@ode45,@(s,Mp) dMetric(s,Mp,A,h,J,drag),int_limit,int_limit(1),zeros(length(cparams)^2,1)); diff --git a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m index c0bfa2f..c8486cb 100644 --- a/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m +++ b/ProgramFiles/v4.2/Utilities/LowRe_toolbox/LowRE_local_connection_from_general_curvature.m @@ -1,4 +1,4 @@ -function [A, h, J] = LowRE_local_connection_from_general_curvature(curvdef,cparams,L,c,drag_ratio) +function [A, h, J,Omega] = LowRE_local_connection_from_general_curvature(curvdef,cparams,L,c,drag_ratio) % Calculate the local connection for a set of curvature bases % % Inputs: diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m index a2e37c8..6be5d4a 100644 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m @@ -5,20 +5,19 @@ all_limits = [-0.5 0 0.5]; % Get backbone theta as a function of s -theta_fun = @(s) curvdef(s,cparams,'angle'); +theta_fun = curvdef(cparams,'angle'); % Get the x and y locations of points on the backbone locus_sol = ode_multistart(@ode45, @(s,h) locus_helper(s,theta_fun),all_limits,0,[0;0]); % Return the locus data as 3xn matrix with x,y,theta at each of n points -%h = @(s) [L*(deval(locus_sol,torow(s)/L)-deval(locus_sol,0*torow(s))); theta_fun(torow(s)/L)]; h_norm = @(s) [locus_sol(torow(s)); theta_fun(torow(s))]; % in normalized internal coordinates h = @(s) [L*locus_sol(torow(s)/L); theta_fun(torow(s)/L)]; % with actual length %%%%%%%%%%%%%% % Get the jacobian to body point velocities -dcurvdef = @(s) curvdef(s,cparams,'dcurvature_int'); +dcurvdef = curvdef(cparams,'dcurvature_int'); %Jacobian of theta function is the derivative of the curvature with respect %to each of the parameters, as definded in the curvdef function diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ deleted file mode 100644 index 36ceaf3..0000000 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m~ +++ /dev/null @@ -1,88 +0,0 @@ -function [h, J] = backbone_from_general_curvature(curvdef,cparams,L) - -% Set the integration limits. Internally, everything uses [-0.5 0.5], and -% then scales by the length factor at the end. -all_limits = [-0.5 0 0.5]; - -% Get backbone theta as a function of s -theta_fun = @(s) curvdef(s,cparams,'angle'); - -% Get the x and y locations of points on the backbone -locus_sol = ode_multistart(@ode45, @(s,h) locus_helper(s,theta_fun),all_limits,0,[0;0]); - -% Return the locus data as 3xn matrix with x,y,theta at each of n points -%h = @(s) [L*(deval(locus_sol,torow(s)/L)-deval(locus_sol,0*torow(s))); theta_fun(torow(s)/L)]; -h_norm = @(s) [locus_sol(torow(s)); theta_fun(torow(s))]; % in normalized internal coordinates -h = @(s) [L*locus_sol(torow(s)/L); theta_fun(torow(s)/L)]; % with actual length - -%%%%%%%%%%%%%% -% Get the jacobian to body point velocities - -dcurvdef = @(s) curvdef(s,cparams,'dcurvature'); - -%Jacobian of theta function is the derivative of the curvature with respect -%to each of the parameters, as definded in the curvdef function -J_theta_fun = ode_multistart(@ode45,@(s,J)dcurvdef; - -% SE(2) adjoint integration to get the x and y jacobians -jacobian_sol = ode_multistart(@ode45,@(s,J) J_helper(s,J,dcurvdef,h_norm(s)),all_limits,0,zeros(2*length(dcurvdef(0)),1)); - -% Concatenate xy and theta jacobians. -J = @(s) cat(1,reshape(L*jacobian_sol(toz(s/L)),2,[],length(s)),ipermute(J_theta_fun(s/L),[2,3,1])); - - - -end - - -% Get the derivative of the locus along the backbone length -function dh = locus_helper(s,theta_fun) - - % Build the rotation matrix - theta = theta_fun(s); - R = [cos(theta) -sin(theta);sin(theta) cos(theta)]; - - % Rotate the basic tangent vector to point along the backbone - dh = R * [1; 0]; - -end - -% get the derivative of the jacobian along the backbone length (note that J -% is only here for ODE45, and isn't actually used) -function dJ = J_helper(s,J,dcurvdef,h) %#ok - - nvars = length(dcurvdef(0)); - - dJ = zeros(2,nvars); - - dcurvdef_eval = dcurvdef(s); - - for i = 1:nvars - - int_basis = dcurvdef_eval(i,:); - - dJ(:,i) = [-sin(h(3)) -cos(h(3)); - cos(h(3)) -sin(h(3))] * [int_basis; 0]; - - end - - %Reshape into a vector for ODE - dJ = dJ(:); - -end - -function X = torow( X ) % Make the argument a row - - X = X(:).'; - -end - -function Y = toz( X ) - - %first, make X a row - X = torow(X); - - % then, make it a 3rd-dimension column - Y(1,1,:) = X; - -end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m deleted file mode 100644 index ac9aed2..0000000 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_unit.m +++ /dev/null @@ -1,37 +0,0 @@ -function output = curv_serpenoid_unit(s,params,mode) - -% Parse inputs -a1 = params(1); % cosine amplitude -a2 = params(2); % sine amplitude -omega = 1; - -switch mode - - case 'curvature' - - kappa = a1*cos(2*pi*s*omega) + a2*sin(2*pi*s*omega); - - output = kappa; - - case 'angle' - - theta = 1/(2*pi*omega) * (a1*sin(2*pi*s*omega) + a2*(1-cos(2*pi*s*omega))); - - output = theta; - - case 'dcurvature' - - dkappa = [cos(2*pi*s*omega); - sin(2*pi*s*omega)]; - %-a1*omega*sin(2*pi*s*omega) + a2*omega*cos(2*pi*s*omega)]; - - output = dkappa; - - case 'dcurvature_int' - - dkappa_int = 1/(2*pi*omega) * [sin(2*pi*s*omega); - 1-cos(2*pi*s*omega)]; % plus one for definite integral - - - output = dkappa_int; -end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m deleted file mode 100644 index bd1c7cd..0000000 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_varfreq.m +++ /dev/null @@ -1,42 +0,0 @@ -function output = curv_serpenoid_varfreq(s,params,mode) - -% Parse inputs -a1 = params(1); % cosine amplitude -a2 = params(2); % sine amplitude -omega = params(3); % Frequency - -switch mode - - case 'curvature' - - %kappa = a1*cos(2*pi*s*omega) + a2*sin(2*pi*s*omega); - kappa = omega.*(a1*cos(2*pi*s*omega) + a2*sin(2*pi*s*omega)); - - output = kappa; - - case 'angle' - -% theta = 1/(2*pi*omega) * (a1*sin(2*pi*s*omega) + a2*(1-cos(2*pi*s*omega))); - theta = 1/(2*pi) * (a1*sin(2*pi*s*omega) + a2*(1-cos(2*pi*s*omega))); - - output = theta; - - case 'dcurvature' - - dkappa = [omega*cos(2*pi*s*omega); - omega*sin(2*pi*s*omega); - omega.*(2.*a2.*s.*pi.*cos(2.*omega.*s.*pi) - 2.*a1.*s.*pi.*sin(2.*omega.*s.*pi)) + a1.*cos(2.*omega.*s.*pi) + a2.*sin(2.*omega.*s.*pi)]; - %(2*pi*s) * (-a1*sin(2*pi*s*omega) + a2*cos(2*pi*s*omega))]; - - output = dkappa; - - case 'dcurvature_int' - - dkappa_int = [sin(2*pi*s*omega)/(2*pi*omega); - (1-cos(2*pi*s*omega))/(2*pi*omega); - a1.*s.*cos(2.*omega.*s.*pi) + a2.*s.*sin(2.*omega.*s.*pi)]; - %-((a1-2*pi*a2*s*omega).*sin(2*pi*s*omega) - (2*pi*a1*s*omega + a2).*cos(2*pi*s*omega) + a2)./(2*pi*omega.^2)]; - - - output = dkappa_int; -end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/illustrate_backbone_shapespace.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/illustrate_backbone_shapespace.m new file mode 100644 index 0000000..d16813c --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/illustrate_backbone_shapespace.m @@ -0,0 +1,38 @@ +function illustrate_backbone_shapespace(curvdef,paramvalues) + +% Get the gradient of parameter values in the first two dimensions +[~,grid_spacing_x] = gradient(paramvalues{1}); +[grid_spacing_y,~] = gradient(paramvalues{2}); + +fh = figure(171); +close(fh); +fh = figure(171); + + +axh = axes('Parent',fh); +axis equal +hold on + +for idx = 1:numel(paramvalues{1}) + + % Extract the parameter values for this combination of parameters + p = zeros(size(paramvalues)); + for idx2 = 1:numel(paramvalues) + p(idx2) = paramvalues{idx2}(idx); + end + + % The backbone should be as long as the spacing between the nearby + % elements + blnth = .9 * max(grid_spacing_x(idx),grid_spacing_y(idx)); + + %Generate the backbone locus + B = fatbackbone_from_general_curvature(curvdef,p,blnth,blnth/20); + + for idx2 = 1:2 + B(:,idx2) = B(:,idx2) + p(idx2);% - mean(B(:,idx2)); + end + + % draw the backbone at the specified location + plot(B(:,1),B(:,2),'Parent',axh) + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m index f8c3ac1..4478d6b 100644 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef.m @@ -1,41 +1,300 @@ -function make_curvdef(curv_fun_string,paramlist) +function make_curvdef(curv_fun_string,paramlist,name,attempt_analytic) +% curv_fun_string can be either a string expression or a symbolic +% expression + +% Load the paths where files should be found +load sysplotter_config +flist = {}; + +% Symbolically calculate all of the requested functions unless told +% otherwise +if ~exist('attempt_analytic','var') + attempt_analytic = [1,1,1,1]; +end % Turn the curvature function from a string into a symbolic expression -curv_fun = sym(curv_fun_string); +if attempt_analytic(1) + curv_fun = sym(curv_fun_string); + flist = [flist,{curv_fun}]; +else + flist = [flist,{[]}]; +end % Integrate the curvature function along the backbone -int_curv_fun_ds = int(curv_fun,'s',0,'s'); +if attempt_analytic(2) + int_curv_ds_fun = int(curv_fun,'s',0,'s'); + flist = [flist,{int_curv_ds_fun}]; +else + flist = [flist,{[]}]; +end % Take the derivative of the curvature with respect to each parameter -d_curv_fun_dp = diff(curv_fun,paramlist +if attempt_analytic(3) + d_curv_dp_fun = jacobian(curv_fun,sym(paramlist)).'; + flist = [flist,{d_curv_dp_fun}]; +else + flist = [flist,{[]}]; +end +% Integrate the parameter-derivative of the curvature function along the +% backbone +if attempt_analytic(4) + int_d_curv_dp_ds_fun = int(d_curv_dp_fun,'s',0,'s'); + flist = [flist,{int_d_curv_dp_ds_fun}]; +else + flist = [flist,{[]}]; +end + + + +% %%%%%% +% %%%%%% +%%% +%%% +% Print functions out to mfiles in a tempdir + +% List of all the function names +fnamelist = {'curv_fun','int_curv_ds_fun','d_curv_dp_fun','int_d_curv_dp_ds_fun'}; + +% Make a temporary directory to hold mfiles for curvature functions +curvdef_tempdir = fullfile(sysplotterpath,'Utilities','curvature_mode_toolbox',... +'curvdef_tempdir'); + +mkdir(curvdef_tempdir) + +% Test these functions to see if we can turn them into matlabFunctions +valid_mfile = ones(size(fnamelist)); +for idx = 1:numel(fnamelist) + + if attempt_analytic(idx) + + %%%%% + % See if we can turn this into a matlab function + ftest = matlabFunction(flist{idx},'vars',['s';paramlist(:)]); + testvars = num2cell(zeros(size(paramlist))); + + no_analytical = 0; + try + ftest(0,testvars{:}); % Attempt to call the function generated by matlabfunction + catch ME + % If matlab couldn't make an analytical form of the equation, mark + % this + if strcmp(ME.identifier,'MATLAB:UndefinedFunction') + no_analytical = 1; + end + end + + else + + % Mark as no analytical form if none was attempted + no_analytical = 1; + + end + + + %%%% + % If the matlabfunction passes the analytical-form test, save it to a + % file and then concatenate it into the curvdef file. If it fails the + % test, evaluate it at high density, save that to a file, and append a + % file that loads this data and interpolates it. + + if ~no_analytical + % Save the function to an mfile in the tempdir + + matlabFunction(flist{idx},'file',fullfile(curvdef_tempdir,fnamelist{idx}),'vars',['s';paramlist(:)]); + + switch fnamelist{idx} + + case 'curv_fun' + + curv_fun_call = {'output = @(s) curv_fun(s,params{:});'}; + + case 'int_curv_ds_fun' + + int_curv_ds_call = {'output = @(s) int_curv_ds_fun(s,params{:});'}; + + case 'd_curv_dp_fun' + + d_curv_dp_call = {'output = @(s) d_curv_dp_fun(s,params{:});'}; + + + case 'int_d_curv_dp_ds_fun' + + int_d_curv_dp_ds_call = {'output = @(s) int_d_curv_dp_ds_fun(s,params{:});'}; + + otherwise + + error('fnamelist entry is not handled by switch statement') + + end + + else + + % Mark that no mfile was created (so that later code does not + % attempt to copy it in + valid_mfile(idx) = 0; + + % Fill in the function calls + switch fnamelist{idx} + + + case 'curv_fun' + + error('Curvature could not be turned into a matlab function. Either implement alternate behavior in make_curvdef, or correct curvature definition') + + case 'int_curv_ds_fun' + + int_curv_ds_call = {'%% Padded length of unit backbone'... + ,'all_limits = [-.51 0 .51];'... + ,''... + ,'%% Make dummy integration function'... + ,['curv_fun_dummy = curv_' name '(cell2mat(params),''curvature'');']... + ,'curvature = @(s,~) curv_fun_dummy(s);'... + ,''... + ,'%% Integral of the integrand function along s'... + ,'output = ode_multistart(@ode45,curvature,all_limits,0,0);'}; + + case 'd_curv_dp_fun' + + d_curv_dp_call = {'%% Create a dummy function that takes in a vector of parameters'... + ,'%% including s, and deals them into individual function parameters'... + ,'curv_intermediate = @(all_params) vector_to_list_input(@curv_fun,all_params);'... + ,''... + ,'%% Create a function that takes the jacobian of the dummy function'... + ,'fulljacobian = @(s) jacobianest(curv_intermediate,[s,params{:}]);'... + ,''... + ,'%% Create a function that truncates the s-derivative from the full jacobian'... + ,'output = @(s) reshape_truncate_jacobian(fulljacobian(s));'}; + + + case 'int_d_curv_dp_ds_fun' + + int_d_curv_dp_ds_call = {'%% Padded length of unit backbone'... + ,'all_limits = [-.51 0 .51];'... + ,''... + ,'%% Make dummy integration function'... + ,['d_curv_dp_fun_dummy = curv_' name '(cell2mat(params),''dcurvature'');']... + ,'dcurvature = @(s,~) d_curv_dp_fun_dummy(s);'... + ,''... + ,'%% Integral of the integrand function along s'... + ,'output = ode_multistart(@ode45,dcurvature,all_limits,0,zeros(size(params(:).'')));'}; + + otherwise + + error('fnamelist entry is not handled by switch statement') + + end + + end + + + +end -load sysplotter_config % Open the template file -fidi = fopen(fullfile(sysplotterpath,'Utilities','gait_gui_draw',... - 'gait_gui_draw_template.txt')); +fidi = fopen(fullfile(sysplotterpath,'Utilities','curvature_mode_toolbox',... + 'make_curvdef_template.txt')); % Create the output file -fido = fopen(fullfile(shchpath,['curv_' paramfilename '.m']),'w'); +fido = fopen(fullfile(syspath,['curv_' name '.m']),'w'); +% Place the input function string as a comment in the top line of the file +fprintf(fido,'%% %s\n',char(curv_fun_string)); while ~feof(fidi) % Read the next line from the input file s = fgetl(fidi); - - % Insert the shchf filename - s = strrep(s,'AA_SHCHFILENAME',['shchf_' paramfilename]); - - % Give this file the correct paramfile - s = strrep(s,'AA_PARAMSNAME',paramfilename); - - % Insert the displayname - s = strrep(s,'AA_DISPLAYNAME',displayname); + + % Replace the function calls + switch strtrim(s) + + case 'AA_curv_fun_call' + + s = sprintf('\t\t%s\n',curv_fun_call{:}); + + case 'AA_int_curv_ds_call' + + s = sprintf('\t\t%s\n',int_curv_ds_call{:}); + + case 'AA_d_curv_dp_call' + + s = sprintf('\t\t%s\n',d_curv_dp_call{:}); + + case 'AA_int_d_curv_dp_ds_call' + + s = sprintf('\t\t%s\n',int_d_curv_dp_ds_call{:}); + + otherwise + + % Insert the filename + s = strrep(s,'AA_CURVFILENAME',['curv_' name]); + + end + + % Copy put the line into the new file fprintf(fido,'%s\n',s); +end + + +% Close the template function +fclose(fidi); + +% Concatenate any mfile functions onto the end of the template + +for idx = 1:numel(flist) + + if valid_mfile(idx) %Only copy valid mfiles into the + + % Insert a blank line + fprintf(fido,'%s\n',[]); + firstline = 1; + + % Load the matlab function + fidi = fopen(fullfile(curvdef_tempdir,[fnamelist{idx} '.m'])); + + + + % Copy all lines of the function into the curvdef file + while ~feof(fidi) + + % Read the next line from the input file + s = fgetl(fidi); + + % Print the line unless it is a comment or empty + if ~strncmp(s,'%%',1) && ~strcmp(s,'') + + % If it is not the first line, indent + if firstline + firstline = 0; + else + fprintf(fido,'%s\t',[]); + end + + fprintf(fido,'%s\n',s); + end + + end + + % Insert an end command and an extra blank line + fprintf(fido,'%s\n\n','end'); + + fclose(fidi); + + end + +end + + + +% cleanup +rmdir(curvdef_tempdir,'s') + +fclose(fido); + end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt index ee66500..b5cb3a1 100644 --- a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/make_curvdef_template.txt @@ -1,11 +1,41 @@ -function output = AA_CURVFILENAME(s,params,mode) - - % Default argument - if ~exist('input_mode','var') - - input_mode = 'initialize'; - - end - - % Name the .mat file with the fourier coefficients - paramfile = 'AA_PARAMSNAME'; \ No newline at end of file +function output = AA_CURVFILENAME(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + AA_curv_fun_call + + case 'angle' + + AA_int_curv_ds_call + + case 'dcurvature' + + AA_d_curv_dp_call + + case 'dcurvature_int' + + AA_int_d_curv_dp_ds_call + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/pinched_sin_scale.m b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/pinched_sin_scale.m new file mode 100644 index 0000000..e5d93c2 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/curvature_mode_toolbox/pinched_sin_scale.m @@ -0,0 +1,65 @@ +function [pinch_wave_matched]= pinched_sin_scale + +% Generate a scale factor so that the maximum angle reached by the sin and +% pinched sin basis functions is the same +n = logspace(-1,1.5,100); + +x = linspace(0,pi/2); + +base_area = trapz(x,cos(x)); + +for idx = 1:numel(n) + + scale_factor(idx) = base_area/trapz(x,cos(x).^n(idx)); + +end + +P = polyfit(n,scale_factor,3); + +% figure(18) +% +% plot(n,scale_factor,n,polyval(P,n)) + + +% Now generate the pinched sin function + +syms s n A phi a1 a2 + +% Raw wave function +raw_wave = cos(2*pi*s+phi); + +% Pinched in wave +pinched_wave = A * (abs(raw_wave))^n * sign(raw_wave); + +% Substitute in the a1 and a2 values +amp = (a1^2+a2^2)^.5; +phase = atan2(a2,a1); +pinched_wave_restored = subs(pinched_wave,[A phi],[amp phase]); + + +% % Wave with sin and cosine amplitudes +% raw_wave = (a1*cos(2*pi*s)+a2*sin(2*pi*s)); +% +% % Amplitude of the wave +% amp_wave = (a1^2+a2^2)^(.5); +% +% % Normalize the wave +% norm_wave = raw_wave/amp_wave; +% +% % Pinch the wave +% pinched_wave = (abs(norm_wave)^n) * sign(norm_wave); +% +% % Restore the scale of the wave +% pinched_wave_restored = pinched_wave*amp_wave; + + + + +% Scale to match max angle with original wave +pinch_wave_matched = pinched_wave_restored * (P*[n^3;n^2;n;1]); + + + + + +end diff --git a/ProgramFiles/v4.2/Utilities/evaluate_displacement_and_cost.m b/ProgramFiles/v4.2/Utilities/evaluate_displacement_and_cost.m index 8b05d6f..7aaf7f3 100644 --- a/ProgramFiles/v4.2/Utilities/evaluate_displacement_and_cost.m +++ b/ProgramFiles/v4.2/Utilities/evaluate_displacement_and_cost.m @@ -6,7 +6,7 @@ % S should be a sysplotter 's' structure loaded from a file % sysf_FILENAME_calc.mat (note the _calc suffix) % -% P should be a structure with fields "phi" and "dphi", returning a +% P should be a structure with fields "phi_def" and "dphi_def", returning a % vector of shapes and shape velocities respectively. If it is not % convenient to analytically describe the shape velocity function, % gait.dphi should be defined as @@ -70,7 +70,7 @@ % Convert the final motion into its representation in optimal % coordinates - startshape = p.phi(0); + startshape = p.phi_def{1}{1}(0); startshapelist = num2cell(startshape); beta_theta = interpn(s.grid.eval{:},s.B_optimized.eval.Beta{3},startshapelist{:},'cubic'); net_disp_opt = [cos(beta_theta) sin(beta_theta) 0;... @@ -84,7 +84,7 @@ % Convert the final motion into its representation in optimal % coordinates - startshape = p.phi(0); + startshape = p.phi_def{1}{1}(0); startshapelist = num2cell(startshape); beta_theta = interpn(s.grid.eval{:},s.B_optimized.eval.Beta{3},startshapelist{:},'cubic'); net_disp_opt = [cos(beta_theta) sin(beta_theta) 0;... @@ -99,9 +99,9 @@ function [xi, dcost] = get_velocities(t,s,gait,ConnectionEval) % Get the shape and shape derivative at the current time - shape = gait.phi(t); + shape = gait.phi_def{1}{1}(t); shapelist = num2cell(shape); - dshape = gait.dphi(t); + dshape = gait.dphi_def{1}{1}(t); % Get the local connection and metric at the current time, in the new coordinates @@ -116,7 +116,7 @@ A = -cellfun(@(C) interpn(s.grid.eval{:},C,shapelist{:}),s.vecfield.eval.content.Avec); - M = cellfun(@(C) interpn(s.grid.eval{:},C,shapelist{:}),s.metricfield.eval.content.metric); + M = cellfun(@(C) interpn(s.grid.metric_eval{:},C,shapelist{:}),s.metricfield.metric_eval.content.metric); otherwise error('Unknown method for evaluating local connection'); diff --git a/ProgramFiles/v4.2/Utilities/inpaint_nans.m b/ProgramFiles/v4.2/Utilities/inpaint_nans.m new file mode 100755 index 0000000..2460b51 --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/inpaint_nans.m @@ -0,0 +1 @@ +function B=inpaint_nans(A,method) % INPAINT_NANS: in-paints over nans in an array % usage: B=INPAINT_NANS(A) % default method % usage: B=INPAINT_NANS(A,method) % specify method used % % Solves approximation to one of several pdes to % interpolate and extrapolate holes in an array % % arguments (input): % A - nxm array with some NaNs to be filled in % % method - (OPTIONAL) scalar numeric flag - specifies % which approach (or physical metaphor to use % for the interpolation.) All methods are capable % of extrapolation, some are better than others. % There are also speed differences, as well as % accuracy differences for smooth surfaces. % % methods {0,1,2} use a simple plate metaphor. % method 3 uses a better plate equation, % but may be much slower and uses % more memory. % method 4 uses a spring metaphor. % method 5 is an 8 neighbor average, with no % rationale behind it compared to the % other methods. I do not recommend % its use. % % method == 0 --> (DEFAULT) see method 1, but % this method does not build as large of a % linear system in the case of only a few % NaNs in a large array. % Extrapolation behavior is linear. % % method == 1 --> simple approach, applies del^2 % over the entire array, then drops those parts % of the array which do not have any contact with % NaNs. Uses a least squares approach, but it % does not modify known values. % In the case of small arrays, this method is % quite fast as it does very little extra work. % Extrapolation behavior is linear. % % method == 2 --> uses del^2, but solving a direct % linear system of equations for nan elements. % This method will be the fastest possible for % large systems since it uses the sparsest % possible system of equations. Not a least % squares approach, so it may be least robust % to noise on the boundaries of any holes. % This method will also be least able to % interpolate accurately for smooth surfaces. % Extrapolation behavior is linear. % % Note: method 2 has problems in 1-d, so this % method is disabled for vector inputs. % % method == 3 --+ See method 0, but uses del^4 for % the interpolating operator. This may result % in more accurate interpolations, at some cost % in speed. % % method == 4 --+ Uses a spring metaphor. Assumes % springs (with a nominal length of zero) % connect each node with every neighbor % (horizontally, vertically and diagonally) % Since each node tries to be like its neighbors, % extrapolation is as a constant function where % this is consistent with the neighboring nodes. % % method == 5 --+ See method 2, but use an average % of the 8 nearest neighbors to any element. % This method is NOT recommended for use. % % % arguments (output): % B - nxm array with NaNs replaced % % % Example: % [x,y] = meshgrid(0:.01:1); % z0 = exp(x+y); % znan = z0; % znan(20:50,40:70) = NaN; % znan(30:90,5:10) = NaN; % znan(70:75,40:90) = NaN; % % z = inpaint_nans(znan); % % % See also: griddata, interp1 % % Author: John D'Errico % e-mail address: woodchips@rochester.rr.com % Release: 2 % Release date: 4/15/06 % I always need to know which elements are NaN, % and what size the array is for any method [n,m]=size(A); A=A(:); nm=n*m; k=isnan(A(:)); % list the nodes which are known, and which will % be interpolated nan_list=find(k); known_list=find(~k); % how many nans overall nan_count=length(nan_list); % convert NaN indices to (r,c) form % nan_list==find(k) are the unrolled (linear) indices % (row,column) form [nr,nc]=ind2sub([n,m],nan_list); % both forms of index in one array: % column 1 == unrolled index % column 2 == row index % column 3 == column index nan_list=[nan_list,nr,nc]; % supply default method if (nargin<2) || isempty(method) method = 0; elseif ~ismember(method,0:5) error 'If supplied, method must be one of: {0,1,2,3,4,5}.' end % for different methods switch method case 0 % The same as method == 1, except only work on those % elements which are NaN, or at least touch a NaN. % is it 1-d or 2-d? if (m == 1) || (n == 1) % really a 1-d case work_list = nan_list(:,1); work_list = unique([work_list;work_list - 1;work_list + 1]); work_list(work_list <= 1) = []; work_list(work_list >= nm) = []; nw = numel(work_list); u = (1:nw)'; fda = sparse(repmat(u,1,3),bsxfun(@plus,work_list,-1:1), ... repmat([1 -2 1],nw,1),nw,nm); else % a 2-d case % horizontal and vertical neighbors only talks_to = [-1 0;0 -1;1 0;0 1]; neighbors_list=identify_neighbors(n,m,nan_list,talks_to); % list of all nodes we have identified all_list=[nan_list;neighbors_list]; % generate sparse array with second partials on row % variable for each element in either list, but only % for those nodes which have a row index > 1 or < n L = find((all_list(:,2) > 1) & (all_list(:,2) < n)); nl=length(L); if nl>0 fda=sparse(repmat(all_list(L,1),1,3), ... repmat(all_list(L,1),1,3)+repmat([-1 0 1],nl,1), ... repmat([1 -2 1],nl,1),nm,nm); else fda=spalloc(n*m,n*m,size(all_list,1)*5); end % 2nd partials on column index L = find((all_list(:,3) > 1) & (all_list(:,3) < m)); nl=length(L); if nl>0 fda=fda+sparse(repmat(all_list(L,1),1,3), ... repmat(all_list(L,1),1,3)+repmat([-n 0 n],nl,1), ... repmat([1 -2 1],nl,1),nm,nm); end end % eliminate knowns rhs=-fda(:,known_list)*A(known_list); k=find(any(fda(:,nan_list(:,1)),2)); % and solve... B=A; B(nan_list(:,1))=fda(k,nan_list(:,1))\rhs(k); case 1 % least squares approach with del^2. Build system % for every array element as an unknown, and then % eliminate those which are knowns. % Build sparse matrix approximating del^2 for % every element in A. % is it 1-d or 2-d? if (m == 1) || (n == 1) % a 1-d case u = (1:(nm-2))'; fda = sparse(repmat(u,1,3),bsxfun(@plus,u,0:2), ... repmat([1 -2 1],nm-2,1),nm-2,nm); else % a 2-d case % Compute finite difference for second partials % on row variable first [i,j]=ndgrid(2:(n-1),1:m); ind=i(:)+(j(:)-1)*n; np=(n-2)*m; fda=sparse(repmat(ind,1,3),[ind-1,ind,ind+1], ... repmat([1 -2 1],np,1),n*m,n*m); % now second partials on column variable [i,j]=ndgrid(1:n,2:(m-1)); ind=i(:)+(j(:)-1)*n; np=n*(m-2); fda=fda+sparse(repmat(ind,1,3),[ind-n,ind,ind+n], ... repmat([1 -2 1],np,1),nm,nm); end % eliminate knowns rhs=-fda(:,known_list)*A(known_list); k=find(any(fda(:,nan_list),2)); % and solve... B=A; B(nan_list(:,1))=fda(k,nan_list(:,1))\rhs(k); case 2 % Direct solve for del^2 BVP across holes % generate sparse array with second partials on row % variable for each nan element, only for those nodes % which have a row index > 1 or < n % is it 1-d or 2-d? if (m == 1) || (n == 1) % really just a 1-d case error('Method 2 has problems for vector input. Please use another method.') else % a 2-d case L = find((nan_list(:,2) > 1) & (nan_list(:,2) < n)); nl=length(L); if nl>0 fda=sparse(repmat(nan_list(L,1),1,3), ... repmat(nan_list(L,1),1,3)+repmat([-1 0 1],nl,1), ... repmat([1 -2 1],nl,1),n*m,n*m); else fda=spalloc(n*m,n*m,size(nan_list,1)*5); end % 2nd partials on column index L = find((nan_list(:,3) > 1) & (nan_list(:,3) < m)); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,3), ... repmat(nan_list(L,1),1,3)+repmat([-n 0 n],nl,1), ... repmat([1 -2 1],nl,1),n*m,n*m); end % fix boundary conditions at extreme corners % of the array in case there were nans there if ismember(1,nan_list(:,1)) fda(1,[1 2 n+1])=[-2 1 1]; end if ismember(n,nan_list(:,1)) fda(n,[n, n-1,n+n])=[-2 1 1]; end if ismember(nm-n+1,nan_list(:,1)) fda(nm-n+1,[nm-n+1,nm-n+2,nm-n])=[-2 1 1]; end if ismember(nm,nan_list(:,1)) fda(nm,[nm,nm-1,nm-n])=[-2 1 1]; end % eliminate knowns rhs=-fda(:,known_list)*A(known_list); % and solve... B=A; k=nan_list(:,1); B(k)=fda(k,k)\rhs(k); end case 3 % The same as method == 0, except uses del^4 as the % interpolating operator. % del^4 template of neighbors talks_to = [-2 0;-1 -1;-1 0;-1 1;0 -2;0 -1; ... 0 1;0 2;1 -1;1 0;1 1;2 0]; neighbors_list=identify_neighbors(n,m,nan_list,talks_to); % list of all nodes we have identified all_list=[nan_list;neighbors_list]; % generate sparse array with del^4, but only % for those nodes which have a row & column index % >= 3 or <= n-2 L = find( (all_list(:,2) >= 3) & ... (all_list(:,2) <= (n-2)) & ... (all_list(:,3) >= 3) & ... (all_list(:,3) <= (m-2))); nl=length(L); if nl>0 % do the entire template at once fda=sparse(repmat(all_list(L,1),1,13), ... repmat(all_list(L,1),1,13) + ... repmat([-2*n,-n-1,-n,-n+1,-2,-1,0,1,2,n-1,n,n+1,2*n],nl,1), ... repmat([1 2 -8 2 1 -8 20 -8 1 2 -8 2 1],nl,1),nm,nm); else fda=spalloc(n*m,n*m,size(all_list,1)*5); end % on the boundaries, reduce the order around the edges L = find((((all_list(:,2) == 2) | ... (all_list(:,2) == (n-1))) & ... (all_list(:,3) >= 2) & ... (all_list(:,3) <= (m-1))) | ... (((all_list(:,3) == 2) | ... (all_list(:,3) == (m-1))) & ... (all_list(:,2) >= 2) & ... (all_list(:,2) <= (n-1)))); nl=length(L); if nl>0 fda=fda+sparse(repmat(all_list(L,1),1,5), ... repmat(all_list(L,1),1,5) + ... repmat([-n,-1,0,+1,n],nl,1), ... repmat([1 1 -4 1 1],nl,1),nm,nm); end L = find( ((all_list(:,2) == 1) | ... (all_list(:,2) == n)) & ... (all_list(:,3) >= 2) & ... (all_list(:,3) <= (m-1))); nl=length(L); if nl>0 fda=fda+sparse(repmat(all_list(L,1),1,3), ... repmat(all_list(L,1),1,3) + ... repmat([-n,0,n],nl,1), ... repmat([1 -2 1],nl,1),nm,nm); end L = find( ((all_list(:,3) == 1) | ... (all_list(:,3) == m)) & ... (all_list(:,2) >= 2) & ... (all_list(:,2) <= (n-1))); nl=length(L); if nl>0 fda=fda+sparse(repmat(all_list(L,1),1,3), ... repmat(all_list(L,1),1,3) + ... repmat([-1,0,1],nl,1), ... repmat([1 -2 1],nl,1),nm,nm); end % eliminate knowns rhs=-fda(:,known_list)*A(known_list); k=find(any(fda(:,nan_list(:,1)),2)); % and solve... B=A; B(nan_list(:,1))=fda(k,nan_list(:,1))\rhs(k); case 4 % Spring analogy % interpolating operator. % list of all springs between a node and a horizontal % or vertical neighbor hv_list=[-1 -1 0;1 1 0;-n 0 -1;n 0 1]; hv_springs=[]; for i=1:4 hvs=nan_list+repmat(hv_list(i,:),nan_count,1); k=(hvs(:,2)>=1) & (hvs(:,2)<=n) & (hvs(:,3)>=1) & (hvs(:,3)<=m); hv_springs=[hv_springs;[nan_list(k,1),hvs(k,1)]]; end % delete replicate springs hv_springs=unique(sort(hv_springs,2),'rows'); % build sparse matrix of connections, springs % connecting diagonal neighbors are weaker than % the horizontal and vertical springs nhv=size(hv_springs,1); springs=sparse(repmat((1:nhv)',1,2),hv_springs, ... repmat([1 -1],nhv,1),nhv,nm); % eliminate knowns rhs=-springs(:,known_list)*A(known_list); % and solve... B=A; B(nan_list(:,1))=springs(:,nan_list(:,1))\rhs; case 5 % Average of 8 nearest neighbors % generate sparse array to average 8 nearest neighbors % for each nan element, be careful around edges fda=spalloc(n*m,n*m,size(nan_list,1)*9); % -1,-1 L = find((nan_list(:,2) > 1) & (nan_list(:,3) > 1)); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([-n-1, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % 0,-1 L = find(nan_list(:,3) > 1); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([-n, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % +1,-1 L = find((nan_list(:,2) < n) & (nan_list(:,3) > 1)); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([-n+1, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % -1,0 L = find(nan_list(:,2) > 1); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([-1, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % +1,0 L = find(nan_list(:,2) < n); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([1, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % -1,+1 L = find((nan_list(:,2) > 1) & (nan_list(:,3) < m)); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([n-1, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % 0,+1 L = find(nan_list(:,3) < m); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([n, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % +1,+1 L = find((nan_list(:,2) < n) & (nan_list(:,3) < m)); nl=length(L); if nl>0 fda=fda+sparse(repmat(nan_list(L,1),1,2), ... repmat(nan_list(L,1),1,2)+repmat([n+1, 0],nl,1), ... repmat([1 -1],nl,1),n*m,n*m); end % eliminate knowns rhs=-fda(:,known_list)*A(known_list); % and solve... B=A; k=nan_list(:,1); B(k)=fda(k,k)\rhs(k); end % all done, make sure that B is the same shape as % A was when we came in. B=reshape(B,n,m); % ==================================================== % end of main function % ==================================================== % ==================================================== % begin subfunctions % ==================================================== function neighbors_list=identify_neighbors(n,m,nan_list,talks_to) % identify_neighbors: identifies all the neighbors of % those nodes in nan_list, not including the nans % themselves % % arguments (input): % n,m - scalar - [n,m]=size(A), where A is the % array to be interpolated % nan_list - array - list of every nan element in A % nan_list(i,1) == linear index of i'th nan element % nan_list(i,2) == row index of i'th nan element % nan_list(i,3) == column index of i'th nan element % talks_to - px2 array - defines which nodes communicate % with each other, i.e., which nodes are neighbors. % % talks_to(i,1) - defines the offset in the row % dimension of a neighbor % talks_to(i,2) - defines the offset in the column % dimension of a neighbor % % For example, talks_to = [-1 0;0 -1;1 0;0 1] % means that each node talks only to its immediate % neighbors horizontally and vertically. % % arguments(output): % neighbors_list - array - list of all neighbors of % all the nodes in nan_list if ~isempty(nan_list) % use the definition of a neighbor in talks_to nan_count=size(nan_list,1); talk_count=size(talks_to,1); nn=zeros(nan_count*talk_count,2); j=[1,nan_count]; for i=1:talk_count nn(j(1):j(2),:)=nan_list(:,2:3) + ... repmat(talks_to(i,:),nan_count,1); j=j+nan_count; end % drop those nodes which fall outside the bounds of the % original array L = (nn(:,1)<1)|(nn(:,1)>n)|(nn(:,2)<1)|(nn(:,2)>m); nn(L,:)=[]; % form the same format 3 column array as nan_list neighbors_list=[sub2ind([n,m],nn(:,1),nn(:,2)),nn]; % delete replicates in the neighbors list neighbors_list=unique(neighbors_list,'rows'); % and delete those which are also in the list of NaNs. neighbors_list=setdiff(neighbors_list,nan_list,'rows'); else neighbors_list=[]; end \ No newline at end of file diff --git a/ProgramFiles/v4.2/Utilities/inpaint_nans_bc.m b/ProgramFiles/v4.2/Utilities/inpaint_nans_bc.m new file mode 100755 index 0000000..d6ae57e --- /dev/null +++ b/ProgramFiles/v4.2/Utilities/inpaint_nans_bc.m @@ -0,0 +1 @@ +function B=inpaint_nans_bc(A,method,bcclass) % INPAINT_NANS_BC: in-paints over nans in an array, with spherical or toroidal boundary conditions % usage: B=inpaint_nsns_bc(A) % default method % usage: B=inpaint_nsns_bc(A,method) % specify method used % usage: B=inpaint_nsns_bc(A,method,bcclass) % specify class of boundary conditions applied % % Solves approximation to one of several pdes to % interpolate and extrapolate holes in an array. % Depending upon the boundary conditions specified, % the array will effectively be treated as if it lies % on either the surface of a sphere or a toroid. % % arguments (input): % A - nxm array with some NaNs to be filled in % % method - (OPTIONAL) scalar numeric flag - specifies % which approach (or physical metaphor to use % for the interpolation.) All methods are capable % of extrapolation, some are better than others. % There are also speed differences, as well as % accuracy differences for smooth surfaces. % % The methods employed here are a subset of the % methods of the original inpaint_nans. % % methods {0,1} use a simple plate metaphor. % method 4 uses a spring metaphor. % % method == 0 --> (DEFAULT) see method 1, but % this method does not build as large of a % linear system in the case of only a few % NaNs in a large array. % Extrapolation behavior is linear. % % method == 1 --> simple approach, applies del^2 % over the entire array, then drops those parts % of the array which do not have any contact with % NaNs. Uses a least squares approach, but it % does not modify known values. % In the case of small arrays, this method is % quite fast as it does very little extra work. % Extrapolation behavior is linear. % % method == 4 --> Uses a spring metaphor. Assumes % springs (with a nominal length of zero) % connect each node with every neighbor % (horizontally, vertically and diagonally) % Since each node tries to be like its neighbors, % extrapolation is as a constant function where % this is consistent with the neighboring nodes. % % DEFAULT: 0 % % bcclass - (OPTIONAL) character flag, indicating how % the array boundaries will be treated in the % inpainting operation. bcclass may be either % 'sphere' or 'toroid', or any simple contraction % of these words. % % bcclass = 'sphere' --> The first and last rows % of the array will be treated as if they are % at the North and South poles of a sphere. % Adjacent to those rows will be singular % phantom nodes at each pole. % % bcclass = 'toroid' --> The first and last rows % of the array will be treated as if they are % adjacent to ech other. As well, the first and % last columns will be adjacent to each other. % % DEFAULT: 'sphere' % % arguments (output): % B - nxm array with NaNs replaced % % % Example: % [x,y] = meshgrid(0:.01:1); % z0 = exp(x+y); % znan = z0; % znan(20:50,40:70) = NaN; % znan(30:90,5:10) = NaN; % znan(70:75,40:90) = NaN; % % z = inpaint_nans(znan); % % % See also: griddata, interp1 % % Author: John D'Errico % e-mail address: woodchips@rochester.rr.com % Release: 2 % Release date: 4/15/06 % I always need to know which elements are NaN, % and what size the array is for any method [n,m]=size(A); A=A(:); nm=n*m; k=isnan(A(:)); % list those nodes which are known, and which will % be interpolated nan_list=find(k); known_list=find(~k); % how many nans overall nan_count=length(nan_list); % convert NaN indices to (r,c) form % nan_list==find(k) are the unrolled (linear) indices % (row,column) form [nr,nc]=ind2sub([n,m],nan_list); % both forms of index in one array: % column 1 == unrolled index % column 2 == row index % column 3 == column index nan_list=[nan_list,nr,nc]; % supply default method if (nargin<2) || isempty(method) method = 0; elseif ~ismember(method,[0 1 4]) error('INPAINT_NANS_BC:improperargument', ... 'If supplied, method must be one of: {0,1,4}.') end % supply default value for bcclass if (nargin < 3) || isempty(bcclass) bcclass = 'sphere'; elseif ~ischar(bcclass) error('INPAINT_NANS_BC:improperargument', ... 'If supplied, bcclass must be ''sphere'' or ''toroid''') else % it was a character string valid = {'sphere' 'toroid'}; % check to see if it is valid [bcclass,errorclass] = validstring(arg,valid); if ~isempty(errorclass) error('INPAINT_NANS_BC:improperargument', ... 'If supplied, bcclass must be ''sphere'' or ''toroid''') end end % choice of methods switch method case 0 % The same as method == 1, except only work on those % elements which are NaN, or at least touch a NaN. % horizontal and vertical neighbors only talks_to = [-1 0;0 -1;1 0;0 1]; neighbors_list=identify_neighbors(n,m,nan_list,talks_to); % list of all nodes we have identified all_list=[nan_list;neighbors_list]; % generate sparse array with second partials on row % variable for each element in either list, but only % for those nodes which have a row index > 1 or < n L = find((all_list(:,2) > 1) & (all_list(:,2) < n)); nl=length(L); if nl>0 fda=sparse(repmat(all_list(L,1),1,3), ... repmat(all_list(L,1),1,3)+repmat([-1 0 1],nl,1), ... repmat([1 -2 1],nl,1),nm,nm); else fda=spalloc(n*m,n*m,size(all_list,1)*5); end % 2nd partials on column index L = find((all_list(:,3) > 1) & (all_list(:,3) < m)); nl=length(L); if nl>0 fda=fda+sparse(repmat(all_list(L,1),1,3), ... repmat(all_list(L,1),1,3)+repmat([-n 0 n],nl,1), ... repmat([1 -2 1],nl,1),nm,nm); end % eliminate knowns rhs=-fda(:,known_list)*A(known_list); k=find(any(fda(:,nan_list(:,1)),2)); % and solve... B=A; B(nan_list(:,1))=fda(k,nan_list(:,1))\rhs(k); case 1 % least squares approach with del^2. Build system % for every array element as an unknown, and then % eliminate those which are knowns. % Build sparse matrix approximating del^2 for % every element in A. % Compute finite difference for second partials % on row variable first [i,j]=ndgrid(1:n,1:m); ind=i(:)+(j(:)-1)*n; np=n*m; switch bcclass case 'sphere' % we need to have two phantom nodes at the poles np = np + 2; end fda=sparse(repmat(ind,1,3),[ind-1,ind,ind+1], ... repmat([1 -2 1],np,1),n*m,n*m); % now second partials on column variable [i,j]=ndgrid(1:n,2:(m-1)); ind=i(:)+(j(:)-1)*n; np=n*(m-2); fda=fda+sparse(repmat(ind,1,3),[ind-n,ind,ind+n], ... repmat([1 -2 1],np,1),nm,nm); % eliminate knowns rhs=-fda(:,known_list)*A(known_list); k=find(any(fda(:,nan_list),2)); % and solve... B=A; B(nan_list(:,1))=fda(k,nan_list(:,1))\rhs(k); case 4 % Spring analogy % interpolating operator. % list of all springs between a node and a horizontal % or vertical neighbor hv_list=[-1 -1 0;1 1 0;-n 0 -1;n 0 1]; hv_springs=[]; for i=1:4 hvs=nan_list+repmat(hv_list(i,:),nan_count,1); k=(hvs(:,2)>=1) & (hvs(:,2)<=n) & (hvs(:,3)>=1) & (hvs(:,3)<=m); hv_springs=[hv_springs;[nan_list(k,1),hvs(k,1)]]; end % delete replicate springs hv_springs=unique(sort(hv_springs,2),'rows'); % build sparse matrix of connections, springs % connecting diagonal neighbors are weaker than % the horizontal and vertical springs nhv=size(hv_springs,1); springs=sparse(repmat((1:nhv)',1,2),hv_springs, ... repmat([1 -1],nhv,1),nhv,nm); % eliminate knowns rhs=-springs(:,known_list)*A(known_list); % and solve... B=A; B(nan_list(:,1))=springs(:,nan_list(:,1))\rhs; end % all done, make sure that B is the same shape as % A was when we came in. B=reshape(B,n,m); end % mainline % ==================================================== % end of main function % ==================================================== % ==================================================== % begin subfunctions % ==================================================== function neighbors_list=identify_neighbors(n,m,nan_list,talks_to) % identify_neighbors: identifies all the neighbors of % those nodes in nan_list, not including the nans % themselves % % arguments (input): % n,m - scalar - [n,m]=size(A), where A is the % array to be interpolated % nan_list - array - list of every nan element in A % nan_list(i,1) == linear index of i'th nan element % nan_list(i,2) == row index of i'th nan element % nan_list(i,3) == column index of i'th nan element % talks_to - px2 array - defines which nodes communicate % with each other, i.e., which nodes are neighbors. % % talks_to(i,1) - defines the offset in the row % dimension of a neighbor % talks_to(i,2) - defines the offset in the column % dimension of a neighbor % % For example, talks_to = [-1 0;0 -1;1 0;0 1] % means that each node talks only to its immediate % neighbors horizontally and vertically. % % arguments(output): % neighbors_list - array - list of all neighbors of % all the nodes in nan_list if ~isempty(nan_list) % use the definition of a neighbor in talks_to nan_count=size(nan_list,1); talk_count=size(talks_to,1); nn=zeros(nan_count*talk_count,2); j=[1,nan_count]; for i=1:talk_count nn(j(1):j(2),:)=nan_list(:,2:3) + ... repmat(talks_to(i,:),nan_count,1); j=j+nan_count; end % form the same format 3 column array as nan_list neighbors_list=[sub2ind([n,m],nn(:,1),nn(:,2)),nn]; % delete replicates in the neighbors list neighbors_list=unique(neighbors_list,'rows'); % and delete those which are also in the list of NaNs. neighbors_list=setdiff(neighbors_list,nan_list,'rows'); else neighbors_list=[]; end end % function identify_neighbors function [str,errorclass] = validstring(arg,valid) % validstring: compares a string against a set of valid options % usage: [str,errorclass] = validstring(arg,valid) % % If a direct hit, or any unambiguous shortening is found, that % string is returned. Capitalization is ignored. % % arguments: (input) % arg - character string, to be tested against a list % of valid choices. Capitalization is ignored. % % valid - cellstring array of alternative choices % % Arguments: (output) % str - string - resulting choice resolved from the % list of valid arguments. If no unambiguous % choice can be resolved, then str will be empty. % % errorclass - string - A string argument that explains % the error. It will be one of the following % possibilities: % % '' --> No error. An unambiguous match for arg % was found among the choices. % % 'No match found' --> No match was found among % the choices provided in valid. % % 'Ambiguous argument' --> At least two ambiguous % matches were found among those provided % in valid. % % % Example: % valid = {'off' 'on' 'The sky is falling'} % % % See also: parse_pv_pairs, strmatch, strcmpi % % Author: John D'Errico % e-mail: woodchips@rochester.rr.com % Release: 1.0 % Release date: 3/25/2010 ind = strmatch(lower(arg),lower(valid)); if isempty(ind) % No hit found errorclass = 'No match found'; str = ''; elseif (length(ind) > 1) % Ambiguous arg, hitting more than one of the valid options errorclass = 'Ambiguous argument'; str = ''; return else errorclass = ''; str = valid{ind}; end end % function validstring \ No newline at end of file diff --git a/ProgramFiles/v4.2/sys_calcpath_fcns/vectorize_shch.m~ b/ProgramFiles/v4.2/sys_calcpath_fcns/vectorize_shch.m~ deleted file mode 100644 index 6bcb316..0000000 --- a/ProgramFiles/v4.2/sys_calcpath_fcns/vectorize_shch.m~ +++ /dev/null @@ -1,216 +0,0 @@ -%Vectorize the shape change equation -function p = vectorize_shch(p) - - pathspec = {'phi_def',; - 'dphi_def'; - 'time_def'; - 'phi_marker'; - 'phi_arrows' - 'phi_res' - 'cBVI_method'}; - - - default_values = {[]; % Placeholder - []; % Placeholder - [0 2*pi]; % default timespan - []; % no marker - 0; % no arrows - 30; % 30 points along the path - 'none'}; % default to no area integration for cBVI - %%%%%%%%% - % First, make sure that there is something in each of the pathspec - % fields - for i = 1:length(pathspec) - - % Make sure that phi_def is the first element in pathspec, - % otherwise the handling of the other elements could break - if i == 1 && ~strcmp(pathspec{i},'phi_def') - error('Please make sure that phi_def is the first element of the pathspec list at the top of this file') - end - - switch pathspec{i} - - - case 'phi_def' - - % check for absence emptiness of field - if ~isfield(p,pathspec{i}) || isempty(p.(pathspec{i})) - - % error if no shape change is actually specified - error('Shape change has no function specified for phi_def. Use the No Shapechange menu option to generate a plot with no shape change overlaid') - - else % make sure phi_def is a double-nested cell function - - p.phi_def = doublewrap(p.phi_def,'function_handle'); - - end - - % If shape change derivative is not defined, use a - % numerical approximation of it - case 'dphi_def' - - % check for absence emptiness of field - if ~isfield(p,pathspec{i}) || isempty(p.(pathspec{i})) - - % Create a double-wrapped set of numerical derivatives - % If creating all the derivatives, do not warn user - % about them - for j = 1:numel(p.phi_def) - for k = 1:numel(p.phi_def{j}) - p.dphi_def{j}{k} = @(T) jacobianest(@(TT) p.phi_def{j}{k}(TT),T); - end - end - - else - - % Fill in any unspecified derivatives with numerical - % derivatives - - % first, strokes and sections that were only partly - % addressed - for j = 1:min(numel(p.dphi_def),numel(p.phi_def)) % first fill in partially-defined derivatives - - if numel(p.dphi_def) < numel(p.phi_def) - warning('Some (but not all) shape changes *segments* have analytically specified derivatives. The remainder have been filled in numerically; fully specify the dphi_def analytically to improve performance, or specify an a numerical derivative function in the shape change file to suppress this warning') - end - - for k = (numel(p.dphi_def{j})+1):numel(p.phi_def{j}) - - - p.dphi_def{j}{k} = @(T) jacobianest(@(TT) p.phi_def{j}{k}(TT),T); - - end - - end - - % second, strokes that were completely unspecified - if numel(p.dphi_def) < numel(p.phi_def) - warning('Some (but not all) shape changes have analytically specified derivatives. The remainder have been filled in numerically; fully specify the dphi_def analytically to improve performance, or specify an a numerical derivative function in the shape change file to suppress this warning') - end - - for j = (numel(p.dphi_def)+1) : numel(p.phi_def) % first fill in partially-defined derivatives - - for k = 1:numel(p.phi_def{j}) - - p.dphi_def{j}{k} = @(T) jacobianest(@(TT) p.phi_def{j}{k}(TT),T); - - end - - end - - - - - end - - otherwise - - % check for absence emptiness of field - if ~isfield(p,pathspec{i}) || isempty(p.(pathspec{i})) - - % Create a single instance of the default object - p.(pathspec{i}) = default_values{i}; - - end - - % Ensure double-wrapping of field - p.(pathspec{i}) = doublewrap(p.(pathspec{i}),class(default_values{i})); - - %%%% - % Match the dimension of the field to that of the phi_def - % function - - % number of paths here and in phi_def - n_thisfield = numel(p.(pathspec{i})); - n_def = numel(p.phi_def); - - if n_thisfield < n_def; - - if n_thisfield ~= 1 - warning(['Fewer ' pathspec{i} ' entries than phi_defs. Replicating the last entry']) - end - - % Replicate last entry into needed paths - p.(pathspec{i})( (n_thisfield+1) : n_def ) ... - = repmat(p.(pathspec{i})(n_thisfield),[n_def-n_thisfield,1]); - - end - - % Loop over the paths, matching the segment counts - for j = 1:n_def - - n_seg_def = numel(p.phi_def{j}); - n_seg_this = numel(p.(pathspec{i}){j}); - - if n_seg_this < n_seg_def - - if n_seg_this ~= 1 - warning(['Fewer ' pathspec{i} ' segment entries than phi_def segments. Replicating the last entry']) - end - - % Replicate last entry into needed paths - p.(pathspec{i}){j}( (n_seg_this+1) : n_seg_def ) ... - = repmat(p.(pathspec{i}){j}(n_seg_this),[n_seg_def-n_seg_this,1]); - - end - - end - - - - end - - end - -end - -function B = doublewrap(A,classname) -% take object A, verify that its core is of class CLASSNAME, and nest it inside -% cell functions sufficient to make it doulbe-wrapped to return as B - - % test for one layer deep - if iscell(A) - - % test for two layers deep -- make sure all the contents of A are - % cells - if all(cellfun(@(x) iscell(x),A)) - - % if properly nested, do nothing - - else - - % if it's only one cell deep, add a cell layer around it - A = {A}; - - end - - else - - % if it's not a cell array, make it a double layered one - A = {{A}}; - - end - - - % Check to make sure all contents are of the right class - class_test = zeros(numel(A),1); - for i = 1:numel(A) - class_test(i) = all(cellfun(@(x) isa(x,classname),A{i})); - end - - if all(class_test) - - % If all meet the specified condition, do nothing - - else - - % If it's not the right class, throw an error - error(['The core of the input object should be of class ' classname ', but is of class ' class(A) '.']) - - end - - B = A; - - -end - diff --git a/UserFiles/v4/rlhatton/Shape_Changes/optimalgait_serpenoid_varfreq.mat b/UserFiles/v4/rlhatton/Shape_Changes/optimalgait_serpenoid_varfreq.mat index 2872668b6689dd8010f8521ac2e7af8a9615b690..bcd99eee8ecabd1af15276db5ae488430e75c17c 100644 GIT binary patch delta 2873 zcmXxjc{J2}1IO_RV;Rf*W@OD4Nm>*k`|oQ@WhiTuP!dI!5-N;~vb2#VMy9evw`G(T zL->6y2`Sf>y7sZv*bQN9&%Muio^#&keE$0U`MNEaCY!1&>wL*q#mP5BMQ5Liwyu%h z9wR+%6`eiW`e_boY2Ns>u;bJjvK#F{0RrB>E52O8K)`cp@+-Bg2zYABwM<44@E3pc zJJAYMtT6t|O)3OIXTcU^430UR<`}jSb6l|_%woT6&u4E@{f$Y| zmc6e}P?xYyrpN6pmsPAVK3t8p4F`86tR)O2ZGid~z3J{9e9(yT{G9Vf0T?}VYB%!` z9-gx8%wTgkjN*7(DpG*WQH!Nft z6d+JichOZa0f8jw8Ou9>Ko9f12CNApRA}s%TTmiGy11jzM@N+?)UkrFNI(P|M$8feL?t(QP@ls=@NjkcJ%vUN&L`g zQ(73J%LhHS!RE3K9Q;$?yil`g4Ff%19p$WLjG^Ht8FzFMlWZUMxN>g}V`T+qsijO~ zgo2YUN;yBV!|_BwT6%eIbZna66smj3Ss})=iM z;j(4$iU=)xeWC{+BCuph*!h$L32yqh?WoxR2@WPV(B9jUVaZ3jfqEJlMwG%r%~CQv z5)0N@O=Or7me%m7l?(|t{t|a-CPTZd%A>s%WO%ZiFC(8$hUHq)RX)f6`D=oB&Jqbq zol zVR&qG7pGcL2oALGFNn9t!-bd=jzWq2&_Z1GV|mL4cuns4K>`T}DT@BS{?RK~ez-OsV^}-7x&}oQSNX|mQKtsOb%Y!5!c#$$H_l*R! z)##2|C>aFTuvYx9lYw4mynJaf889jL29A-FUi2Ywut(-StuFAZ6)78#mRtF_ca(FLjvK}Cym}VB4D&9y)=$T1kQtaOW^|& zAh@cR7Mmyrv_$mKkqQDB@8^^3*G5Wcto*fbuRifC)yNvKc*cdtLG?~Jg&VzGIfMr)`-A&n? zbA78$Yj-MQUWnFnU&h}t_^}pP9Z1|U(X|wsE8nCf$MyBnXbAVl&?msaaSRq~u zbf3r#WB77PMY0XTX`~sOBLXrhswt{l>1fOzlaY$P^3iJyncw;O zp`t!z)G0y3Zq5I1xhTBb76FE^mLupG+m)@M8y?HffJ%#GC_Voj? zTVqmm;ns51D!aC<(rwgqY{d9m1^1i!8+FW_koIC_s{$MwhMIqtS{*iXZt;)zksEw_3_ELZRp-g z;~HOLd05LNa605lnDGynhq delta 2999 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 I;^mUR0eBd+Qvd(} literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_triangle_wavelength1_innercontour.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_triangle_wavelength1_innercontour.mat new file mode 100644 index 0000000000000000000000000000000000000000..f70184b8301b3dbd66034386c9e7d6c834976bee GIT binary patch literal 404 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXAp7j1>&ctc*>p49pdb3=GW_hy@HV!074A4`jy!amAd+$q5M>3`u4R&l)Z% z9N>Donb}ZTr1^?r>--C9l z@3v~su-Tv%2j}j_JSLI0?7x)OorAo(o!@S zFU@htIoQCk^5`xxM|S%g&KYd%oUzj<-0zyhC$O)f`7djC@@cy+hoh>p3{sbbCIJ9x C42lZ? literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/params_triangle_wavelength1_zerocontour.mat b/UserFiles/v4/rlhatton/Shape_Changes/params_triangle_wavelength1_zerocontour.mat new file mode 100644 index 0000000000000000000000000000000000000000..c2514d591db2910915f2c4b116856598c7f8dec5 GIT binary patch literal 430 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X0%nwjV*I2WZRmZYXAp7j1>&ctc;DV42%_w3=GW_hy@HV!074A4`fFJamAd+$q5M=3`u4R&l)Z% z9N>Cd%w(u6()>iIn9E3rSMiY?kHLq8^Gx^VON#od$nf+yI^2BNdcOFlX|E6;j}@z) z)9mmY`i&>#6YT%^Ep+ty$STQ^{j`$X{x2%4Ct>24za@DDE>@(^Z zsst22fUFCFTekwqN5)Ks>NC<(G#WSAN(eYOT~~dw{gHPy$KT8UCM_zgJ?pE+&N2V8 j;yI;|&05{}8I|;&1njE$e)?{`>%vcy_!t&1m;4O?Wde|$ literal 0 HcmV?d00001 diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_LowRe_serpeff_forvarfeq.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_LowRe_serpeff_forvarfeq.m new file mode 100644 index 0000000..384540e --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_LowRe_serpeff_forvarfeq.m @@ -0,0 +1,67 @@ +function output = shchf_LowRe_serpeff_forvarfeq_freqfamily(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + switch input_mode + + case 'name' + + output = 'Low Re serp eff for varfreq'; + + case 'dependency' + + output.dependency = {}; % the .mat file sharing the same name as this .m file + + case 'initialize' + + %%%% + % Filename to save to + + output = mfilename; + + + %% + %Path definitions + + %path definition + for idx = 1:5 + p.phi_def{idx} = {@(t) strokedef(t,.9+idx/20)}; + end + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows{1} = {2}; + + %time to run path + p.time_def{1} = {[-pi pi]};%{[-1 1]}; + + %path resolution + p.phi_res{1} = {1000}; + + + %%%% + %Save the system properties + output = p; + + end + +end + +function [stroke] = strokedef(t,freq) +load('X_eff_serpenoid.mat') +XV=X; +len=length(X); + t = t(:); + stroke=[fourier_eval(t,XV(1:len/4),XV(len/4+1:len/2),2*pi); fourier_eval(t,XV(len/2+1:3*len/4),XV(3*len/4+1:len),2*pi);freq*ones(size(t'))]'; + + %stroke = [t t]*1.5; + + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_circle_6.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_circle_6.m new file mode 100644 index 0000000..055a94b --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_circle_6.m @@ -0,0 +1,63 @@ +function output = shchf_circle_6(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + switch input_mode + + case 'name' + + output = 'Circle Stroke, 6 amplitude'; + + case 'dependency' + + output.dependency = {}; + + case 'initialize' + + %%%% + % Filename to save to + + %% + %Path definitions + + %path definition + p.phi_def{1} = {@strokedef}; + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows{1} = {2}; + + %time to run path + p.time_def{1} = {[0 2*pi]}; + + %p.cBVI_method{1}{1} = 'simple'; + + %path resolution + p.phi_res{1} = {1000}; + + + %%%% + %Output the path properties + output = p; + end + +end + +function [stroke] = strokedef(t) + + t = -t(:)'; + + Rot=sqrt(2)/2*[1 -1;1 1]; + a=6; + + stroke=(Rot*[-a*cos(t);-a*sin(t)])'; + + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_107demo.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_107demo.m new file mode 100644 index 0000000..13f4050 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_107demo.m @@ -0,0 +1,98 @@ +function output = shchf_params_107demo(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_107demo'; + + + switch input_mode + + case 'name' + + output = 'params_107demo'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_innercontour.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_innercontour.m new file mode 100644 index 0000000..53e9567 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_innercontour.m @@ -0,0 +1,98 @@ +function output = shchf_params_triangle_wavelength1_innercontour(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_triangle_wavelength1_innercontour'; + + + switch input_mode + + case 'name' + + output = 'params_triangle_wavelength1_innercontour'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_zerocontour.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_zerocontour.m new file mode 100644 index 0000000..380cd86 --- /dev/null +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_params_triangle_wavelength1_zerocontour.m @@ -0,0 +1,98 @@ +function output = shchf_params_triangle_wavelength1_zerocontour(input_mode) + + % Default argument + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + % Name the .mat file with the fourier coefficients + paramfile = 'params_triangle_wavelength1_zerocontour'; + + + switch input_mode + + case 'name' + + output = 'params_triangle_wavelength1_zerocontour'; + + case 'dependency' + + output.dependency = {fullfile(pwd,[paramfile '.mat'])}; + + case 'initialize' + + %%%% + %% + %Path definitions + + % Load the points that the user clicked and the time vector + load(paramfile) + + % Check if start and end are the same point, and set boundary + % conditions accordingly + if alpha1(1)==alpha1(end) && alpha2(1)==alpha2(end) + splinemode = 'periodic'; + else + splinemode = 'complete'; + end + + % Generate spline structures for the selected points + switch splinemode + + case 'periodic' + + % Fit a periodic spline to the selected points; the endslopes are found + % by averaging the positions of the points before and after the join + endslope1 = (alpha1(2)-alpha1(end-1))/(t(end)-t(end-2)); + endslope2 = (alpha2(2)-alpha2(end-1))/(t(end)-t(end-2)); + spline_alpha1 = spline(t,[endslope1;alpha1(:);endslope1]); + spline_alpha2 = spline(t,[endslope2;alpha2(:);endslope2]); + + case 'complete' + + % Fit a non-periodic spline to the selected points + spline_alpha1 = spline(t,alpha1(:)); + spline_alpha2 = spline(t,alpha2(:)); + + end + + % The gait path is now defined by evaluating the two splines at + % specified times + p.phi_def = @(t) [ppval(spline_alpha1,t(:)),ppval(spline_alpha2,t(:))]; + + + % Speed up execution by defining the gait velocity as well (so + % the evaluator doesn't need to numerically take the derivative + % at every time + spline_dalpha1 = ppdiff(spline_alpha1); + spline_dalpha2 = ppdiff(spline_alpha2); + + % The gait path is now defined by evaluating the two splin + % derivatives at specified times + p.dphi_def = @(t) [ppval(spline_dalpha1,t(:)),ppval(spline_dalpha2,t(:))]; + + + %marker locations + p.phi_marker = []; + + %arrows to plot + p.phi_arrows = 2; + + %time to run path + p.time_def = t([1 end]); %#ok + + + %path resolution + p.phi_res = 50; + + + + + %%%% + %Save the shch properties + output = p; + end + +end diff --git a/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m b/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m index 64ef4b1..3f0f220 100644 --- a/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m +++ b/UserFiles/v4/rlhatton/Shape_Changes/shchf_serpenoid_varfreq_test1.m @@ -35,7 +35,7 @@ p.phi_arrows{1} = {2}; %time to run path - p.time_def{1} = {[0 1]}; + p.time_def{1} = {[0 2]}; %p.cBVI_method{1}{1} = 'simple'; @@ -54,8 +54,8 @@ t = t(:)'; - stroke = [6*ones(size(t)); - 8*ones(size(t)); + stroke = [9*ones(size(t)); + 9*ones(size(t)); .5 + 2*t].'; end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_compare.m b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_compare.m new file mode 100644 index 0000000..54cd8ab --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_compare.m @@ -0,0 +1,70 @@ +function output = curv_serpenoid_def_compare(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + output = @(s) curv_fun(s,params{:}); + + + case 'angle' + + output = @(s) int_curv_ds_fun(s,params{:}); + + + case 'dcurvature' + + output = @(s) d_curv_dp_fun(s,params{:}); + + + case 'dcurvature_int' + + output = @(s) int_d_curv_dp_ds_fun(s,params{:}); + + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end + +function out1 = curv_fun(s,a1,a2) + t2 = s.*pi.*2.0; + out1 = a1.*cos(t2)+a2.*sin(t2); +end + + +function out1 = int_curv_ds_fun(s,a1,a2) + t2 = sin(s.*pi); + out1 = (a1.*sin(s.*pi.*2.0).*(1.0./2.0)+a2.*t2.^2)./pi; +end + + +function out1 = d_curv_dp_fun(s,a1,a2) + t2 = s.*pi.*2.0; + out1 = [cos(t2);sin(t2)]; +end + + +function out1 = int_d_curv_dp_ds_fun(s,a1,a2) + t2 = 1.0./pi; + t3 = sin(s.*pi); + out1 = [t2.*sin(s.*pi.*2.0).*(1.0./2.0);t2.*t3.^2]; +end + diff --git a/UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_test.m b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_test.m new file mode 100644 index 0000000..e0d658f --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_def_test.m @@ -0,0 +1,79 @@ +function output = curv_serpenoid_def_test(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + output = @(s) curv_fun(s,params{:}); + + + case 'angle' + + output = @(s) int_curv_ds_fun(s,params{:}); + + + case 'dcurvature' + + output = @(s) d_curv_dp_fun(s,params{:}); + + + case 'dcurvature_int' + + output = @(s) int_d_curv_dp_ds_fun(s,params{:}); + + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end + +function out1 = curv_fun(s,a1,a2,omega) + t2 = omega.*s.*pi.*2.0; + out1 = a1.*cos(t2)+a2.*sin(t2); +end + + +function out1 = int_curv_ds_fun(s,a1,a2,omega) + t2 = sin(omega.*s.*pi); + out1 = (a2.*t2.^2+a1.*sin(omega.*s.*pi.*2.0).*(1.0./2.0))./(omega.*pi); +end + + +function out1 = d_curv_dp_fun(s,a1,a2,omega) + t2 = omega.*s.*pi.*2.0; + t3 = cos(t2); + t4 = sin(t2); + out1 = [t3;t4;a1.*s.*t4.*pi.*-2.0+a2.*s.*t3.*pi.*2.0]; +end + + +function out1 = int_d_curv_dp_ds_fun(s,a1,a2,omega) + t2 = 1.0./omega; + t3 = 1.0./pi; + t7 = omega.*s.*pi; + t4 = sin(t7); + t5 = omega.*s.*pi.*2.0; + t6 = sin(t5); + t8 = t4.^2; + t9 = 1.0./omega.^2; + t10 = t8.*2.0; + out1 = [t2.*t3.*t6.*(1.0./2.0);t2.*t3.*t8;a2.*t3.*t9.*(t10-omega.*s.*t6.*pi.*2.0).*(-1.0./2.0)-a1.*t3.*t9.*(t6+omega.*s.*pi.*(t10-1.0).*2.0).*(1.0./2.0)]; +end + diff --git a/UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness.m b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness.m new file mode 100644 index 0000000..f588b65 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness.m @@ -0,0 +1,82 @@ +% abs(cos(atan2(a2, a1) + 2*s*pi))^n*sign(cos(atan2(a2, a1) + 2*s*pi))*(a1^2 + a2^2)^(1/2)*((153949471934815*n)/562949953421312 - (1370981160259359*n^2)/144115188075855872 + (174464881467265*n^3)/1152921504606846976 + 6368462077980939/9007199254740992) +function output = curv_serpenoid_var_sharpness(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + output = @(s) curv_fun(s,params{:}); + + + case 'angle' + + %% Padded length of unit backbone + all_limits = [-.51 0 .51]; + + %% Make dummy integration function + curv_fun_dummy = curv_serpenoid_var_sharpness(cell2mat(params),'curvature'); + curvature = @(s,~) curv_fun_dummy(s); + + %% Integral of the integrand function along s + output = ode_multistart(@ode45,curvature,all_limits,0,0); + + + case 'dcurvature' + + %% Create a dummy function that takes in a vector of parameters + %% including s, and deals them into individual function parameters + curv_intermediate = @(all_params) vector_to_list_input(@curv_fun,all_params); + + %% Create a function that takes the jacobian of the dummy function + fulljacobian = @(s) jacobianest(curv_intermediate,[s,params{:}]); + + %% Create a function that truncates the s-derivative from the full jacobian + output = @(s) reshape_truncate_jacobian(fulljacobian(s)); + + + case 'dcurvature_int' + + %% Padded length of unit backbone + all_limits = [-.51 0 .51]; + + %% Make dummy integration function + d_curv_dp_fun_dummy = curv_serpenoid_var_sharpness(cell2mat(params),'dcurvature'); + dcurvature = @(s,~) d_curv_dp_fun_dummy(s); + + %% Integral of the integrand function along s + output = ode_multistart(@ode45,dcurvature,all_limits,0,zeros(size(params(:).'))); + + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end + +function out1 = curv_fun(s,a1,a2,n) + t2 = a2.*1i; + t3 = a1+t2; + t4 = angle(t3); + t5 = s.*pi.*2.0; + t6 = t4+t5; + t7 = cos(t6); + t8 = n.^2; + out1 = abs(t7).^n.*sign(t7).*sqrt(a1.^2+a2.^2).*(n.*2.734691973934655e-1-t8.*9.513092815295325e-3+n.*t8.*1.513241628073878e-4+7.070413230426608e-1); +end + diff --git a/UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness_symbolicd.m b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness_symbolicd.m new file mode 100644 index 0000000..e68f0f1 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_var_sharpness_symbolicd.m @@ -0,0 +1,83 @@ +% cos(2*pi*s + atan2(a2, a1))^n*(a1^2 + a2^2) +function output = curv_serpenoid_var_sharpness_symbolicd(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + output = @(s) curv_fun(s,params{:}); + + + case 'angle' + + %% Padded length of unit backbone + all_limits = [-.51 0 .51]; + + %% Make dummy integration function + curv_fun_dummy = curv_serpenoid_var_sharpness_symbolicd(cell2mat(params),'curvature'); + curvature = @(s,~) curv_fun_dummy(s); + + %% Integral of the integrand function along s + output = ode_multistart(@ode45,curvature,all_limits,0,0); + + + case 'dcurvature' + + output = @(s) d_curv_dp_fun(s,params{:}); + + + case 'dcurvature_int' + + %% Padded length of unit backbone + all_limits = [-.51 0 .51]; + + %% Make dummy integration function + d_curv_dp_fun_dummy = curv_serpenoid_var_sharpness_symbolicd(cell2mat(params),'dcurvature'); + dcurvature = @(s,~) d_curv_dp_fun_dummy(s); + + %% Integral of the integrand function along s + output = ode_multistart(@ode45,dcurvature,all_limits,0,zeros(size(params(:).'))); + + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end + +function out1 = curv_fun(s,a1,a2,n) + out1 = cos(pi.*s.*2.0+atan2(a2,a1)).^n.*(a1.^2+a2.^2); +end + + +function out1 = d_curv_dp_fun(s,a1,a2,n) + t2 = pi.*s.*2.0; + t3 = atan2(a2,a1); + t4 = t2+t3; + t5 = cos(t4); + t6 = t5.^n; + t7 = n-1.0; + t8 = t5.^t7; + t9 = sin(t4); + t10 = a1.^2; + t11 = a2.^2; + t12 = t10+t11; + out1 = [a1.*t6.*2.0;a2.*t6.*2.0;t6.*t12.*log(t5)]; +end + diff --git a/UserFiles/v4/rlhatton/Systems/curv_serpenoid_varfreq.m b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_varfreq.m new file mode 100644 index 0000000..80c7f57 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/curv_serpenoid_varfreq.m @@ -0,0 +1,80 @@ +% (a1*cos(2*pi*s*omega)+a2*sin(2*pi*s*omega)) +function output = curv_serpenoid_varfreq(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + output = @(s) curv_fun(s,params{:}); + + + case 'angle' + + output = @(s) int_curv_ds_fun(s,params{:}); + + + case 'dcurvature' + + output = @(s) d_curv_dp_fun(s,params{:}); + + + case 'dcurvature_int' + + output = @(s) int_d_curv_dp_ds_fun(s,params{:}); + + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end + +function out1 = curv_fun(s,a1,a2,omega) + t2 = pi.*omega.*s.*2.0; + out1 = a1.*cos(t2)+a2.*sin(t2); +end + + +function out1 = int_curv_ds_fun(s,a1,a2,omega) + t2 = sin(pi.*omega.*s); + out1 = (a2.*t2.^2+a1.*sin(pi.*omega.*s.*2.0).*(1.0./2.0))./(pi.*omega); +end + + +function out1 = d_curv_dp_fun(s,a1,a2,omega) + t2 = pi.*omega.*s.*2.0; + t3 = cos(t2); + t4 = sin(t2); + out1 = [t3;t4;pi.*a1.*s.*t4.*-2.0+pi.*a2.*s.*t3.*2.0]; +end + + +function out1 = int_d_curv_dp_ds_fun(s,a1,a2,omega) + t2 = 1.0./pi; + t3 = 1.0./omega; + t7 = pi.*omega.*s; + t4 = sin(t7); + t5 = pi.*omega.*s.*2.0; + t6 = sin(t5); + t8 = t4.^2; + t9 = 1.0./omega.^2; + t10 = t8.*2.0; + out1 = [t2.*t3.*t6.*(1.0./2.0);t2.*t3.*t8;a2.*t2.*t9.*(t10-pi.*omega.*s.*t6.*2.0).*(-1.0./2.0)-a1.*t2.*t9.*(t6+pi.*omega.*s.*(t10-1.0).*2.0).*(1.0./2.0)]; +end + diff --git a/UserFiles/v4/rlhatton/Systems/curv_triangle_wave.m b/UserFiles/v4/rlhatton/Systems/curv_triangle_wave.m new file mode 100644 index 0000000..0624a55 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/curv_triangle_wave.m @@ -0,0 +1,85 @@ +% (3665543810304250167*abs(cos(atan2(a2, a1) + 2*s*pi))^15*sign(cos(atan2(a2, a1) + 2*s*pi))*(a1^2 + a2^2)^(1/2))/1152921504606846976 +function output = curv_triangle_wave(params,mode) + +% Turn params into a cell matrix +params = num2cell(params); + +switch mode + + case 'curvature' + + output = @(s) curv_fun(s,params{:}); + + + case 'angle' + + %% Padded length of unit backbone + all_limits = [-.51 0 .51]; + + %% Make dummy integration function + curv_fun_dummy = curv_triangle_wave(cell2mat(params),'curvature'); + curvature = @(s,~) curv_fun_dummy(s); + + %% Integral of the integrand function along s + output = ode_multistart(@ode45,curvature,all_limits,0,0); + + + case 'dcurvature' + + %% Create a dummy function that takes in a vector of parameters + %% including s, and deals them into individual function parameters + curv_intermediate = @(all_params) vector_to_list_input(@curv_fun,all_params); + + %% Create a function that takes the jacobian of the dummy function + fulljacobian = @(s) jacobianest(curv_intermediate,[s,params{:}]); + + %% Create a function that truncates the s-derivative from the full jacobian + output = @(s) reshape_truncate_jacobian(fulljacobian(s)); + + + case 'dcurvature_int' + + %% Padded length of unit backbone + all_limits = [-.51 0 .51]; + + %% Make dummy integration function + d_curv_dp_fun_dummy = curv_triangle_wave(cell2mat(params),'dcurvature'); + dcurvature = @(s,~) d_curv_dp_fun_dummy(s); + + %% Integral of the integrand function along s + output = ode_multistart(@ode45,dcurvature,all_limits,0,zeros(size(params(:).'))); + + +end + +end + +function output = vector_to_list_input(funhandle,all_params) + + all_params = num2cell(all_params); + + output = funhandle(all_params{:}); + +end + + +function output = reshape_truncate_jacobian(J) + + output = J(2:end)'; + +end + +function out1 = curv_fun(s,a1,a2) + t6 = a2.*1i; + t7 = a1+t6; + t8 = angle(t7); + t9 = s.*pi.*2.0; + t10 = t8+t9; + t11 = cos(t10); + t2 = abs(t11); + t3 = t2.^2; + t4 = t3.^2; + t5 = t4.^2; + out1 = t2.*t3.*t4.*t5.*sign(t11).*sqrt(a1.^2+a2.^2).*3.179352449978129; +end + diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_var_sharpness.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_var_sharpness.m new file mode 100644 index 0000000..b7395b3 --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_var_sharpness.m @@ -0,0 +1,133 @@ +function output = sysf_honey_swimmer_serpenoid_var_sharpness(input_mode) + +% Name for the curvature functions +curv_name = 'serpenoid_var_sharpness'; +curv_fun = str2func(['curv_' curv_name]); + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Low Re Serpenoid first modes variable sharpness'; % Display name + + case 'dependency' + + + + output.dependency = {'Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m'; + ['Utilities/curvature_mode_toolbox/curvatures/curv_' curv_name '.m']; + 'Utilities/LowRE_toolbox/LowRE_dissipation_metric_from_general_curvature.m'; + 'Utilities/LowRE_toolbox/LowRE_local_connection_from_general_curvature.m'}; + + case 'initialize' + + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + s.A_num = @(a1,a2,a3) Conn_num(a1,a2,a3,curv_fun); + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 0; + + %Range over which to evaluate connection + s.grid_range = [[-1,1,-1,1]*10,[.1 20]]; + + %densities for various operations + s.density.vector = [1,1,1]*11; %density to display vector field + s.density.scalar = [1,1,1]*11; %density to display scalar functions + s.density.eval = [1,1,1]*21;%[21 21 21]; %density for function evaluations + s.finite_element_density = 11;%11; + % power metric + s.metric = @(x,y,z) LowRE_dissipation_metric_from_general_curvature... + (curv_fun,[x;y;z],1,1,2); % @(x,y) eye(2);% + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*6; + s.tic_locs.y = [-1 0 1]*6; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2,a3,curv_fun) + + + for i = 1:nargin + sizea1(i) = size(a1,i); + end + + + + %Apply the inverse multiplication + wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); + Ar_cell = cell(sizea1(1),sizea1(2),sizea1(3)); + parfor i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i),a3(i),curv_fun); + waitbar2a(i/numel(a1)); + end + + close(wb) + + Ar1=cell(3); + for i=1:1:9 + for j=1:sizea1(3) + for k=1:sizea1(2) + for l=1:sizea1(1) + Ar1{i}(l,k,j)=Ar_cell{l,k,j}(i); + end + end + end + end + + Ar=cell2mat(Ar1); + +end + +function A = A_num_helper(a1,a2,a3,curv_fun) + +% % Add the path to the curvature functions +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) +% addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) + % Get the local connection for the specified shape, with unit length + A = LowRE_local_connection_from_general_curvature(curv_fun,[a1;a2;a3],1,1,2); + + +end + +function A_den = Conn_den(a1,a2,a3) %#ok + + A_den = repmat(ones(size(a1)),[3,3]); + +end \ No newline at end of file diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m index 3584c43..7e45a05 100644 --- a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_serpenoid_varfreq.m @@ -48,16 +48,16 @@ s.singularity = 0; %Range over which to evaluate connection - s.grid_range = [[-1,1,-1,1]*12,[.1 3]]; + s.grid_range = [[-1,1,-1,1]*10,[.1 5]]; %densities for various operations s.density.vector = [1,1,1]*11; %density to display vector field s.density.scalar = [1,1,1]*11; %density to display scalar functions - s.density.eval = [1,1,1]*11;%[21 21 21]; %density for function evaluations + s.density.eval = [1,1,1]*21;%[21 21 21]; %density for function evaluations s.finite_element_density = 11;%11; % power metric s.metric = @(x,y,z) LowRE_dissipation_metric_from_general_curvature... - (@curv_serpenoid_varfreq,[x;y;z],1,1,2); % @(x,y) eye(2);% + (@curv_serpenoid_def_test,[x;y;z],1,1,2); % @(x,y) eye(2);% %%% %Display parameters @@ -88,7 +88,7 @@ %Apply the inverse multiplication wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); Ar_cell = cell(sizea1(1),sizea1(2),sizea1(3)); - for i = 1:numel(a1); + parfor i = 1:numel(a1); Ar_cell{i} = A_num_helper(a1(i),a2(i),a3(i)); waitbar2a(i/numel(a1)); end @@ -116,7 +116,7 @@ % addpath(genpath('/Users/rlhatton/Documents/MATLAB/curvature_mode_toolbox')) % addpath(genpath('/Users/rlhatton/Documents/MATLAB/LowRE_toolbox/')) % Get the local connection for the specified shape, with unit length - A = LowRE_local_connection_from_general_curvature(@curv_serpenoid_varfreq,[a1;a2;a3],1,1,2); + A = LowRE_local_connection_from_general_curvature(@curv_serpenoid_def_test,[a1;a2;a3],1,1,2); end diff --git a/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_triangle.m b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_triangle.m new file mode 100644 index 0000000..f7b79ce --- /dev/null +++ b/UserFiles/v4/rlhatton/Systems/sysf_honey_swimmer_triangle.m @@ -0,0 +1,139 @@ +function output = sysf_honey_swimmer_triangle(input_mode) + + % Default arguments + if ~exist('input_mode','var') + + input_mode = 'initialize'; + + end + + if ~exist('datapath','var') + + datapath = ''; + end + + %%%%%%% + + switch input_mode + + case 'name' + + output = 'Low Re triangular wave one period'; % Display name + + case 'dependency' + + output.dependency = {'Utilities/curvature_mode_toolbox/backbone_from_general_curvature.m'; + 'Utilities/curvature_mode_toolbox/curvatures/curv_serpenoid_var_sharness'; + 'Utilities/LowRE_toolbox/LowRE_dissipation_metric_from_general_curvature.m'; + 'Utilities/LowRE_toolbox/LowRE_local_connection_from_general_curvature.m'}; + + case 'initialize' + + %Initialize a kinematic snake with unit values for L and R + + %%%%% + % Filename to save to + output = mfilename; + + + %Functional representation of local connection + s.A_num = @Conn_num; + s.A_den = @Conn_den; + + + %%% + %Processing details + + %Mark that system has a singularity that needs to be accounted for + s.singularity = 1; + + %Range over which to evaluate connection + s.grid_range = [-1,1,-1,1]*12; + + %densities for various operations + s.density.vector = [1 1]*11; %density to display vector field + s.density.scalar = [1 1]*21; %density to display scalar functions + s.density.eval = [1 1]*21; %density for function evaluations + s.finite_element_density = 11; + % power metric + s.metric = @M_helper; %(x,y) LowRE_dissipation_metric_from_general_curvature... + %(@curv_serpenoid_var_sharpness,[x;y;10],1,1,2); % @(x,y) eye(2);% + + %%% + %Display parameters + + %shape space tic locations + s.tic_locs.x = [-1 0 1]*6; + s.tic_locs.y = [-1 0 1]*6; + + + %%%% + %Save the system properties + output = s; + + + end + +end + +function [Ar]=Conn_num(a1,a2) + + + %Apply the inverse multiplication + wb = waitbar2a(0,['Building ' num2str(size(a1)) ' connection matrix']); + Ar_cell = cell(size(a1)); + parfor i = 1:numel(a1); + Ar_cell{i} = A_num_helper(a1(i),a2(i)); + waitbar2a(i/numel(a1)); + end + + close(wb) + + %Ar_cell = arrayfun(@(a1,a2) A_num_helper(a1,a2),a1,a2,'UniformOutput',false); + + %Pull Ar values into a matrix + Ar_woven = cell2mat(Ar_cell); + + %Rearrange the A matrix + Ar = [ Ar_woven(1:3:end,1:2:end) Ar_woven(1:3:end,2:2:end); + Ar_woven(2:3:end,1:2:end) Ar_woven(2:3:end,2:2:end); + Ar_woven(3:3:end,1:2:end) Ar_woven(3:3:end,2:2:end)]; + +end + +function A = A_num_helper(a1,a2) + + % Get the local connection for the specified shape, with unit length + A = LowRE_local_connection_from_general_curvature(@curv_triangle_wave,[a1;a2],1,1,2); + + % Make any NaN values in the connection the mean of the neighboring + % values + A = inpaint_nans(A); + +end + +function A_den = Conn_den(a1,a2) %#ok + + A_den = repmat(ones(size(a1)),[3,2]); + +end + +function M = M_helper(a1,a2) + + % Get the local connection for the specified shape, with unit length + M = LowRE_dissipation_metric_from_general_curvature... + (@curv_triangle_wave,[a1;a2],1,1,2); + + % Make any NaN values in the metric the mean of the neighboring values + M = inpaint_nans(M); + +end + + +% function output = curvelock(params,mode) +% +% % lock the variable frequency serpenoid curvature to frequency 1 +% +% output = curv_serpenoid_var_sharpness(params,mode); +% +% end \ No newline at end of file